Changeset db712a8 in flexpart.git for src/mpi_mod.f90
- Timestamp:
- Mar 3, 2016, 12:34:56 PM (8 years ago)
- Branches:
- master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
- Children:
- 38b7917
- Parents:
- b0434e1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/mpi_mod.f90
r6a678e3 rdb712a8 860 860 ! step 861 861 ! 862 ! TODO863 ! GFS version864 862 ! 865 863 !******************************************************************************* … … 922 920 923 921 ! The non-reader processes need to know if cloud water were read. 924 ! TODO: only at first step or always?925 922 call MPI_Bcast(readclouds,1,MPI_LOGICAL,id_read,MPI_COMM_WORLD,mp_ierr) 926 923 if (mp_ierr /= 0) goto 600 … … 1017 1014 if (mp_ierr /= 0) goto 600 1018 1015 1019 call MPI_Bcast(z0,numclass,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)1020 if (mp_ierr /= 0) goto 6001021 1022 1016 if (mp_measure_time) call mpif_mtime('commtime',1) 1023 1017 … … 1045 1039 ! step 1046 1040 ! 1047 ! TODO1048 ! Transfer cloud water/ice if and when available for nested1049 1041 ! 1050 1042 !*********************************************************************** … … 1060 1052 1061 1053 ! Common array sizes used for communications 1062 integer :: d3_size1 = nxmaxn*nymaxn*nzmax *maxnests1063 integer :: d3_size2 = nxmaxn*nymaxn*nuvzmax *maxnests1064 integer :: d2_size1 = nxmaxn*nymaxn *maxnests1065 integer :: d2_size2 = nxmaxn*nymaxn*maxspec *maxnests1066 integer :: d2_size3 = nxmaxn*nymaxn *maxnests1054 integer :: d3_size1 = nxmaxn*nymaxn*nzmax 1055 integer :: d3_size2 = nxmaxn*nymaxn*nuvzmax 1056 integer :: d2_size1 = nxmaxn*nymaxn 1057 integer :: d2_size2 = nxmaxn*nymaxn*maxspec 1058 integer :: d2_size3 = nxmaxn*nymaxn 1067 1059 1068 1060 integer :: d3s1,d3s2,d2s1,d2s2 … … 1106 1098 !********************************************************************** 1107 1099 1100 ! The non-reader processes need to know if cloud water were read. 1101 call MPI_Bcast(readclouds_nest,maxnests,MPI_LOGICAL,id_read,MPI_COMM_WORLD,mp_ierr) 1102 if (mp_ierr /= 0) goto 600 1103 1108 1104 ! Static fields/variables sent only at startup 1109 1105 if (first_call) then … … 1120 1116 1121 1117 ! MPI prefers contiguous arrays for sending (else a buffer is created), 1122 ! hence the loop 1123 1118 ! hence the loop over nests 1119 !********************************************************************** 1124 1120 do i=1, numbnests 1125 1121 ! 3D fields … … 1145 1141 if (mp_ierr /= 0) goto 600 1146 1142 call MPI_Bcast(cloudsn(:,:,:,li:ui,i),d3s1,MPI_INTEGER1,id_read,MPI_COMM_WORLD,mp_ierr) 1147 if (mp_ierr /= 0) goto 600 1143 if (mp_ierr /= 0) goto 600 1144 1145 ! cloud water/ice: 1146 if (readclouds_nest(i)) then 1147 ! call MPI_Bcast(icloud_stats(:,:,:,li:ui),d2s1*5,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr) 1148 ! if (mp_ierr /= 0) goto 600 1149 call MPI_Bcast(clw4n(:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr) 1150 if (mp_ierr /= 0) goto 600 1151 end if 1148 1152 1149 1153 ! 2D fields 1150 call MPI_Bcast(clouds nh(:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)1154 call MPI_Bcast(cloudshn(:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr) 1151 1155 if (mp_ierr /= 0) goto 600 1152 1156 call MPI_Bcast(vdepn(:,:,:,li:ui,i),d2s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr) … … 1206 1210 ! mind -- index where to place new fields 1207 1211 ! 1208 ! TODO1209 1212 ! 1210 1213 !******************************************************************************* … … 1392 1395 ! memstat -- input, used to resolve windfield index being received 1393 1396 ! 1394 ! TODO1395 1397 ! 1396 1398 !******************************************************************************* … … 2019 2021 ! In the implementation with 3 fields, the processes may have posted 2020 2022 ! MPI_Irecv requests that should be cancelled here 2021 !! TODO:2022 2023 ! if (.not.lmp_sync) then 2023 2024 ! r=mp_pid*nvar_async … … 2105 2106 ! 2106 2107 ! 2107 ! TODO2108 2108 ! 2109 2109 !******************************************************************************* … … 2132 2132 uu(:,:,:,li:ui) = 10.0 2133 2133 vv(:,:,:,li:ui) = 0.0 2134 uupol(:,:,:,li:ui) = 10.0 ! TODO check if ok2134 uupol(:,:,:,li:ui) = 10.0 2135 2135 vvpol(:,:,:,li:ui)=0.0 2136 2136 ww(:,:,:,li:ui)=0. … … 2164 2164 tropopause(:,:,:,li:ui)=10000. 2165 2165 oli(:,:,:,li:ui)=0.01 2166 z0=1.02167 2166 2168 2167 end subroutine set_fields_synthetic
Note: See TracChangeset
for help on using the changeset viewer.