Changeset 13286 for NEMO/trunk/src/SAO
- Timestamp:
- 2020-07-09T17:48:29+02:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 2 2 ^/utils/build/makenemo@HEAD makenemo 3 3 ^/utils/build/mk@HEAD mk 4 ^/utils/tools /@HEADtools4 ^/utils/tools@HEAD tools 5 5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM … … 8 8 9 9 # SETTE 10 ^/utils/CI/ sette@12931sette10 ^/utils/CI/r12931_sette_ticket2366@HEAD sette
-
- Property svn:externals
-
NEMO/trunk/src/SAO/nemogcm.F90
r12933 r13286 29 29 USE sao_intp 30 30 ! 31 USE prtctl ! Print control 31 32 USE in_out_manager ! I/O manager 32 33 USE lib_mpp ! distributed memory computing 33 34 USE mppini ! shared/distributed memory setting (mpp_init routine) 34 USE lbcnfd , ONLY : isendto, nsndto , nfsloop, nfeloop! Setup of north fold exchanges35 USE lbcnfd , ONLY : isendto, nsndto ! Setup of north fold exchanges 35 36 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 36 37 #if defined key_iomput 37 38 USE xios ! xIOserver 38 39 #endif 40 USE halo_mng 39 41 40 42 IMPLICIT NONE … … 92 94 INTEGER :: ios, ilocal_comm ! local integer 93 95 ! 94 NAMELIST/namctl/ sn_cfctl, nn_print, nn_ictls, nn_ictle, & 95 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, & 96 & ln_timing, ln_diacfl 96 NAMELIST/namctl/ sn_cfctl, ln_timing, ln_diacfl, & 97 & nn_isplt, nn_jsplt, nn_ictls, nn_ictle, nn_jctls, nn_jctle 97 98 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr 98 99 !!---------------------------------------------------------------------- 99 100 ! 100 101 cxios_context = 'nemo' 102 nn_hls = 1 101 103 ! 102 104 ! !-------------------------------------------------! … … 205 207 ! 206 208 IF( ln_read_cfg ) THEN ! Read sizes in domain configuration file 207 CALL domain_cfg ( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio )209 CALL domain_cfg ( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 208 210 ELSE ! user-defined namelist 209 CALL usr_def_nam( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio )211 CALL usr_def_nam( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 210 212 ENDIF 211 213 ! … … 217 219 CALL mpp_init 218 220 221 CALL halo_mng_init() 219 222 ! Now we know the dimensions of the grid and numout has been set: we can allocate arrays 220 223 CALL nemo_alloc() … … 267 270 WRITE(numout,*) ' sn_cfctl%procincr = ', sn_cfctl%procincr 268 271 WRITE(numout,*) ' sn_cfctl%ptimincr = ', sn_cfctl%ptimincr 269 WRITE(numout,*) ' level of print nn_print = ', nn_print270 WRITE(numout,*) ' Start i indice for SUM control nn_ictls = ', nn_ictls271 WRITE(numout,*) ' End i indice for SUM control nn_ictle = ', nn_ictle272 WRITE(numout,*) ' Start j indice for SUM control nn_jctls = ', nn_jctls273 WRITE(numout,*) ' End j indice for SUM control nn_jctle = ', nn_jctle274 WRITE(numout,*) ' number of proc. following i nn_isplt = ', nn_isplt275 WRITE(numout,*) ' number of proc. following j nn_jsplt = ', nn_jsplt276 272 WRITE(numout,*) ' timing by routine ln_timing = ', ln_timing 277 273 WRITE(numout,*) ' CFL diagnostics ln_diacfl = ', ln_diacfl 278 274 ENDIF 279 275 ! 280 nprint = nn_print ! convert DOCTOR namelist names into OLD names 281 nictls = nn_ictls 282 nictle = nn_ictle 283 njctls = nn_jctls 284 njctle = nn_jctle 285 isplt = nn_isplt 286 jsplt = nn_jsplt 287 276 IF( .NOT.ln_read_cfg ) ln_closea = .false. ! dealing possible only with a domcfg file 288 277 IF(lwp) THEN ! control print 289 278 WRITE(numout,*) … … 295 284 WRITE(numout,*) ' filename to be written cn_domcfg_out = ', TRIM(cn_domcfg_out) 296 285 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr 297 ENDIF298 IF( .NOT.ln_read_cfg ) ln_closea = .false. ! dealing possible only with a domcfg file299 !300 ! ! Parameter control301 !302 IF( sn_cfctl%l_prtctl .OR. sn_cfctl%l_prttrc ) THEN ! sub-domain area indices for the control prints303 IF( lk_mpp .AND. jpnij > 1 ) THEN304 isplt = jpni ; jsplt = jpnj ; ijsplt = jpni*jpnj ! the domain is forced to the real split domain305 ELSE306 IF( isplt == 1 .AND. jsplt == 1 ) THEN307 CALL ctl_warn( ' - isplt & jsplt are equal to 1', &308 & ' - the print control will be done over the whole domain' )309 ENDIF310 ijsplt = isplt * jsplt ! total number of processors ijsplt311 ENDIF312 IF(lwp) WRITE(numout,*)' - The total number of processors over which the'313 IF(lwp) WRITE(numout,*)' print control will be done is ijsplt : ', ijsplt314 !315 ! ! indices used for the SUM control316 IF( nictls+nictle+njctls+njctle == 0 ) THEN ! print control done over the default area317 lsp_area = .FALSE.318 ELSE ! print control done over a specific area319 lsp_area = .TRUE.320 IF( nictls < 1 .OR. nictls > jpiglo ) THEN321 CALL ctl_warn( ' - nictls must be 1<=nictls>=jpiglo, it is forced to 1' )322 nictls = 1323 ENDIF324 IF( nictle < 1 .OR. nictle > jpiglo ) THEN325 CALL ctl_warn( ' - nictle must be 1<=nictle>=jpiglo, it is forced to jpiglo' )326 nictle = jpiglo327 ENDIF328 IF( njctls < 1 .OR. njctls > jpjglo ) THEN329 CALL ctl_warn( ' - njctls must be 1<=njctls>=jpjglo, it is forced to 1' )330 njctls = 1331 ENDIF332 IF( njctle < 1 .OR. njctle > jpjglo ) THEN333 CALL ctl_warn( ' - njctle must be 1<=njctle>=jpjglo, it is forced to jpjglo' )334 njctle = jpjglo335 ENDIF336 ENDIF337 286 ENDIF 338 287 ! -
NEMO/trunk/src/SAO/sao_read.F90
r10069 r13286 10 10 USE netcdf 11 11 USE oce, ONLY: tsn, sshn 12 USE dom_oce, ONLY: n lci, nlcj, nimpp, njmpp, tmask12 USE dom_oce, ONLY: nimpp, njmpp, tmask 13 13 USE par_oce, ONLY: jpi, jpj, jpk 14 14 ! … … 94 94 IF (ifcst .LE. ntimes) THEN 95 95 ! Allocate temporary temperature array 96 ALLOCATE(temp_tn( nlci,nlcj,jpk))97 ALLOCATE(temp_sn( nlci,nlcj,jpk))98 ALLOCATE(temp_sshn( nlci,nlcj))96 ALLOCATE(temp_tn(jpi,jpj,jpk)) 97 ALLOCATE(temp_sn(jpi,jpj,jpk)) 98 ALLOCATE(temp_sshn(jpi,jpj)) 99 99 100 100 ! Set temp_tn, temp_sn to 0. … … 104 104 105 105 ! Create start and count arrays 106 start_n = (/ nimpp, njmpp, 1,ifcst /)107 count_n = (/ nlci, nlcj, jpk, 1/)108 start_s = (/ nimpp, njmpp , ifcst /)109 count_s = (/ nlci, nlcj, 1/)106 start_n = (/ nimpp, njmpp, 1, ifcst /) 107 count_n = (/ jpi, jpj, jpk, 1 /) 108 start_s = (/ nimpp, njmpp , ifcst /) 109 count_s = (/ jpi, jpj, 1 /) 110 110 111 111 ! Read information into temporary arrays … … 138 138 139 139 ! Mask out missing data index 140 tsn(1:nlci,1:nlcj,1:jpk,1) = temp_tn(:,:,:) * tmask(1:nlci,1:nlcj,1:jpk) 141 tsn(1:nlci,1:nlcj,1:jpk,2) = temp_sn(:,:,:) * tmask(1:nlci,1:nlcj,1:jpk) 142 sshn(1:nlci,1:nlcj) = temp_sshn(:,:) * tmask(1:nlci,1:nlcj,1) 143 144 ! Remove halo from tmask, tsn, sshn to prevent double obs counting 145 IF (jpi > nlci) THEN 146 tmask(nlci+1:,:,:) = 0 147 tsn(nlci+1:,:,:,1) = 0 148 tsn(nlci+1:,:,:,2) = 0 149 sshn(nlci+1:,:) = 0 150 END IF 151 IF (jpj > nlcj) THEN 152 tmask(:,nlcj+1:,:) = 0 153 tsn(:,nlcj+1:,:,1) = 0 154 tsn(:,nlcj+1:,:,2) = 0 155 sshn(:,nlcj+1:) = 0 156 END IF 157 140 tsn(1:jpi,1:jpj,1:jpk,1) = temp_tn(:,:,:) * tmask(1:jpi,1:jpj,1:jpk) 141 tsn(1:jpi,1:jpj,1:jpk,2) = temp_sn(:,:,:) * tmask(1:jpi,1:jpj,1:jpk) 142 sshn(1:jpi,1:jpj) = temp_sshn(:,:) * tmask(1:jpi,1:jpj,1) 143 158 144 ! Deallocate arrays 159 145 DEALLOCATE(temp_tn, temp_sn, temp_sshn)
Note: See TracChangeset
for help on using the changeset viewer.