- Timestamp:
- 2020-06-07T18:26:09+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/mppini.F90
r13024 r13056 17 17 !! mpp_init : Lay out the global domain over processors with/without land processor elimination 18 18 !! mpp_init_mask : Read global bathymetric information to facilitate land suppression 19 !! mpp_init_ioipsl : IOIPSL initialization in mpp20 19 !! mpp_init_partition: Calculate MPP domain decomposition 21 20 !! factorise : Calculate the factors of the no. of MPI processes … … 23 22 !!---------------------------------------------------------------------- 24 23 USE dom_oce ! ocean space and time domain 25 USE bdy_oce ! open BounDarY26 24 ! 27 25 USE lbcnfd , ONLY : isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges … … 37 35 38 36 INTEGER :: numbot = -1 ! 'bottom_level' local logical unit 39 INTEGER :: numbdy = -1 ! 'bdy_msk' local logical unit40 37 41 38 !!---------------------------------------------------------------------- … … 83 80 nbondi = 2 84 81 nbondj = 2 85 nidom = FLIO_DOM_NONE86 82 npolj = jperio 87 83 l_Iperio = jpni == 1 .AND. (jperio == 1 .OR. jperio == 4 .OR. jperio == 6 .OR. jperio == 7) … … 186 182 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: ilej, ildj, ioso, iowe ! - - 187 183 LOGICAL, ALLOCATABLE, DIMENSION(:,:) :: llisoce ! - - 188 NAMELIST/nambdy/ ln_bdy, nb_bdy, ln_coords_file, cn_coords_file, & 189 & ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta, & 190 & cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta, & 191 & ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 192 & cn_ice, nn_ice_dta, & 193 & rn_ice_tem, rn_ice_sal, rn_ice_age, & 194 & ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy 195 !!---------------------------------------------------------------------- 196 197 llwrtlay = lwp .OR. ln_ctl .OR. sn_cfctl%l_layout 198 ! do we need to take into account bdy_msk? 199 REWIND( numnam_ref ) ! Namelist nambdy in reference namelist : BDY 200 READ ( numnam_ref, nambdy, IOSTAT = ios, ERR = 903) 201 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist (mppini)', lwp ) 202 REWIND( numnam_cfg ) ! Namelist nambdy in configuration namelist : BDY 203 READ ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 904 ) 204 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist (mppini)', lwp ) 184 !!---------------------------------------------------------------------- 185 186 llwrtlay = lwp 205 187 ! 206 188 IF( ln_read_cfg ) CALL iom_open( cn_domcfg, numbot ) 207 IF( ln_bdy .AND. ln_mask_file ) CALL iom_open( cn_mask_file, numbdy )208 189 ! 209 190 ! 1. Dimension arrays for subdomains … … 280 261 281 262 IF( numbot /= -1 ) CALL iom_close( numbot ) 282 IF( numbdy /= -1 ) CALL iom_close( numbdy )283 263 284 264 ALLOCATE( nfiimpp(jpni,jpnj), nfipproc(jpni,jpnj), nfilcit(jpni,jpnj) , & … … 666 646 ENDIF 667 647 ! 668 CALL mpp_init_ioipsl ! Prepare NetCDF output file (if necessary)669 !670 648 IF( ln_nnogather ) THEN 671 649 CALL mpp_init_nfdcom ! northfold neighbour lists … … 902 880 903 881 ! if therr is no land and no print 904 IF( .NOT. llist .AND. numbot == -1 .AND. numbdy == -1) THEN882 IF( .NOT. llist .AND. numbot == -1 ) THEN 905 883 ! get the smaller partition which gives the smallest subdomain size 906 884 ii = MINLOC(inbij1, mask = iszij1 == MINVAL(iszij1), dim = 1) … … 997 975 !!---------------------------------------------------------------------- 998 976 ! do nothing if there is no land-sea mask 999 IF( numbot == -1 .and. numbdy == -1) THEN977 IF( numbot == -1 ) THEN 1000 978 propland = 0. 1001 979 RETURN … … 1053 1031 !!---------------------------------------------------------------------- 1054 1032 ! do nothing if there is no land-sea mask 1055 IF( numbot == -1 .AND. numbdy == -1) THEN1033 IF( numbot == -1 ) THEN 1056 1034 ldisoce(:,:) = .TRUE. 1057 1035 RETURN … … 1108 1086 ! 1109 1087 INTEGER :: inumsave ! local logical unit 1110 REAL(wp), DIMENSION(jpiglo,kjcnt) :: zbot , zbdy1088 REAL(wp), DIMENSION(jpiglo,kjcnt) :: zbot 1111 1089 !!---------------------------------------------------------------------- 1112 1090 ! … … 1119 1097 ENDIF 1120 1098 1121 IF( numbdy /= -1 ) THEN ! Adjust with bdy_msk if it exists1122 CALL iom_get ( numbdy, jpdom_unknown, 'bdy_msk', zbdy, kstart = (/1,kjstr/), kcount = (/jpiglo, kjcnt/) )1123 zbot(:,:) = zbot(:,:) * zbdy(:,:)1124 ENDIF1125 1099 ! 1126 1100 ldoce(:,:) = zbot(:,:) > 0. … … 1128 1102 ! 1129 1103 END SUBROUTINE mpp_init_readbot_strip 1130 1131 1132 SUBROUTINE mpp_init_ioipsl1133 !!----------------------------------------------------------------------1134 !! *** ROUTINE mpp_init_ioipsl ***1135 !!1136 !! ** Purpose :1137 !!1138 !! ** Method :1139 !!1140 !! History :1141 !! 9.0 ! 04-03 (G. Madec ) MPP-IOIPSL1142 !! " " ! 08-12 (A. Coward) addition in case of jpni*jpnj < jpnij1143 !!----------------------------------------------------------------------1144 INTEGER, DIMENSION(2) :: iglo, iloc, iabsf, iabsl, ihals, ihale, idid1145 !!----------------------------------------------------------------------1146 1147 ! The domain is split only horizontally along i- or/and j- direction1148 ! So we need at the most only 1D arrays with 2 elements.1149 ! Set idompar values equivalent to the jpdom_local_noextra definition1150 ! used in IOM. This works even if jpnij .ne. jpni*jpnj.1151 iglo(1) = jpiglo1152 iglo(2) = jpjglo1153 iloc(1) = nlci1154 iloc(2) = nlcj1155 iabsf(1) = nimppt(narea)1156 iabsf(2) = njmppt(narea)1157 iabsl(:) = iabsf(:) + iloc(:) - 11158 ihals(1) = nldi - 11159 ihals(2) = nldj - 11160 ihale(1) = nlci - nlei1161 ihale(2) = nlcj - nlej1162 idid(1) = 11163 idid(2) = 21164 1165 IF(lwp) THEN1166 WRITE(numout,*)1167 WRITE(numout,*) 'mpp_init_ioipsl : iloc = ', iloc (1), iloc (2)1168 WRITE(numout,*) '~~~~~~~~~~~~~~~ iabsf = ', iabsf(1), iabsf(2)1169 WRITE(numout,*) ' ihals = ', ihals(1), ihals(2)1170 WRITE(numout,*) ' ihale = ', ihale(1), ihale(2)1171 ENDIF1172 !1173 CALL flio_dom_set ( jpnij, nproc, idid, iglo, iloc, iabsf, iabsl, ihals, ihale, 'BOX', nidom)1174 !1175 END SUBROUTINE mpp_init_ioipsl1176 1177 1104 1178 1105 SUBROUTINE mpp_init_nfdcom
Note: See TracChangeset
for help on using the changeset viewer.