Changeset 12989
- Timestamp:
- 2020-05-29T11:31:16+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/DYN/dynspg_ts.F90
r12738 r12989 972 972 END_2D 973 973 ! 974 zcmax = MAXVAL( zcu( :,:) )974 zcmax = MAXVAL( zcu(Nis1:Nie1,Njs1:Nje1) ) 975 975 CALL mpp_max( 'dynspg_ts', zcmax ) 976 976 -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/lbc_nfd_nogather_generic.h90
r12807 r12989 99 99 ijj = jpj -jj +1 100 100 DO ji = startloop, jpi 101 ijt = jpiglo - (ji + nimpp-nn_hls+1 )- nfiimpp(isendto(1),jpnj) + 4101 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 102 102 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) 103 103 END DO … … 116 116 ! 117 117 IF ( .NOT. l_fast_exchanges ) THEN 118 IF( nimpp >= jpiglo/2+1 ) THEN118 IF( nimpp >= Ni0glo/2+1+1 ) THEN 119 119 startloop = 1 120 ELSEIF( nimpp+jpi- 2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN121 startloop = jpiglo/2+1 - nimpp + nn_hls120 ELSEIF( nimpp+jpi-1 >= Ni0glo/2+1+1 .AND. nimpp < Ni0glo/2+1+1 ) THEN 121 startloop = Ni0glo/2+1+1 - nimpp + nn_hls 122 122 ELSE 123 123 startloop = jpi + 1 … … 126 126 DO jl = 1, ipl; DO jk = 1, ipk 127 127 DO ji = startloop, jpi 128 ijt = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 4129 jia = ji + nimpp - nn_hls128 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 129 jia = ji + nimpp - 1 130 130 ijta = jpiglo - jia + 2 131 131 IF( ijta >= startloop+nimpp-1 .AND. ijta < jia ) THEN … … 139 139 ENDIF 140 140 CASE ( 'U' ) ! U-point 141 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN141 IF( nimpp + jpi - 1 /= jpiglo ) THEN 142 142 endloop = jpi 143 143 ELSE … … 148 148 ijj = jpj -jj +1 149 149 DO ji = 1, endloop 150 iju = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 3150 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 151 151 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,jj,jk,jl,jf) 152 152 END DO … … 161 161 END DO 162 162 ENDIF 163 IF((nimpp + jpi - 2*nn_hls+1) .eq. jpiglo) THEN163 IF((nimpp + jpi - 1) .eq. jpiglo) THEN 164 164 DO jj = 1, nn_hls 165 165 ijj = jpj -jj +1 … … 171 171 ! 172 172 IF ( .NOT. l_fast_exchanges ) THEN 173 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN173 IF( nimpp + jpi - 1 /= jpiglo ) THEN 174 174 endloop = jpi 175 175 ELSE 176 176 endloop = jpi - nn_hls 177 177 ENDIF 178 IF( nimpp >= jpiglo/2) THEN179 startloop = 1180 ELSEIF( ( nimpp + jpi - 2*nn_hls+1 >= jpiglo/2 ) .AND. ( nimpp < jpiglo/2) ) THEN181 startloop = jpiglo/2 - (nimpp -nn_hls+1) +1178 IF( nimpp >= Ni0glo/2+1 ) THEN 179 startloop = nn_hls 180 ELSEIF( ( nimpp + jpi - 1 >= Ni0glo/2+1 ) .AND. ( nimpp < Ni0glo/2+1 ) ) THEN 181 startloop = Ni0glo/2+1 - nimpp + nn_hls 182 182 ELSE 183 183 startloop = endloop + 1 … … 186 186 DO jl = 1, ipl; DO jk = 1, ipk 187 187 DO ji = startloop, endloop 188 iju = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 3189 jia = ji + nimpp - nn_hls190 ijua = jpiglo - jia + 1 188 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 189 jia = ji + nimpp - 1 190 ijua = jpiglo - jia + 1 191 191 IF( ijua >= startloop+nimpp-1 .AND. ijua < jia ) THEN 192 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijua-nimpp+ nn_hls,jpj-nn_hls,jk,jl,jf)192 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijua-nimpp+1,jpj-nn_hls,jk,jl,jf) 193 193 ELSE 194 194 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf) … … 210 210 ijj = jpj -jj +1 211 211 DO ji = startloop, jpi 212 ijt=jpiglo - (ji +nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 4212 ijt=jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 213 213 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) 214 214 END DO … … 218 218 DO jl = 1, ipl; DO jk = 1, ipk 219 219 DO ji = startloop, jpi 220 ijt=jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 4220 ijt=jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 221 221 ARRAY_IN(ji,jpj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,1,jk,jl,jf) 222 222 END DO … … 231 231 ENDIF 232 232 CASE ( 'F' ) ! F-point 233 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN233 IF( nimpp + jpi - 1 /= jpiglo ) THEN 234 234 endloop = jpi 235 235 ELSE … … 241 241 ijj = jpj -jj +1 242 242 DO ji = 1, endloop 243 iju = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 3243 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 244 244 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,jj,jk,jl,jf) 245 245 END DO … … 249 249 DO jl = 1, ipl; DO jk = 1, ipk 250 250 DO ji = 1, endloop 251 iju = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 3251 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 252 252 ARRAY_IN(ji,jpj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,1,jk,jl,jf) 253 253 END DO … … 255 255 IF (nimpp .eq. 1) THEN 256 256 DO ii = 1, nn_hls 257 ARRAY_IN(ii +1,jpj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls-1,:,:,jf)257 ARRAY_IN(ii,jpj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls-1,:,:,jf) 258 258 END DO 259 259 IF ( .NOT. l_fast_exchanges ) THEN 260 260 DO jj = 1, nn_hls 261 261 ijj = jpj -jj 262 DO ii = 1, nn_hls263 ARRAY_IN( 2-ii,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls+jj-1,:,:,jf)262 DO ii = 0, nn_hls-1 263 ARRAY_IN(ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls+jj-1,:,:,jf) 264 264 END DO 265 265 END DO 266 266 ENDIF 267 267 ENDIF 268 IF((nimpp + jpi - 2*nn_hls+1 ) .eq. jpiglo) THEN268 IF((nimpp + jpi - 1 ) .eq. jpiglo) THEN 269 269 DO ii = 1, nn_hls 270 270 ARRAY_IN(jpi-ii+1,jpj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii,jpj-2*nn_hls-1,:,:,jf) … … 290 290 ijj = jpj-jj+1 291 291 DO ji = 1, jpi 292 ijt = jpiglo - ( ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 3292 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 293 293 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) 294 294 END DO … … 297 297 ! 298 298 CASE ( 'U' ) ! U-point 299 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN299 IF( nimpp + jpi - 1 /= jpiglo ) THEN 300 300 endloop = jpi 301 301 ELSE … … 306 306 ijj = jpj-jj+1 307 307 DO ji = 1, endloop 308 iju = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 2308 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 2 309 309 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,jj,jk,jl,jf) 310 310 END DO 311 311 END DO 312 312 END DO; END DO 313 IF(nimpp + jpi - 2*nn_hls+1 .eq. jpiglo) THEN313 IF(nimpp + jpi - 1 .eq. jpiglo) THEN 314 314 DO jl = 1, ipl; DO jk = 1, ipk 315 315 DO jj = 1, nn_hls … … 328 328 ijj = jpj -jj +1 329 329 DO ji = 1, jpi 330 ijt = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 3330 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 331 331 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) 332 332 END DO … … 335 335 336 336 IF ( .NOT. l_fast_exchanges ) THEN 337 IF( nimpp >= jpiglo/2+1 ) THEN337 IF( nimpp >= (Ni0glo/2+1)+1 ) THEN 338 338 startloop = 1 339 ELSEIF( nimpp+jpi- 2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN340 startloop = jpiglo/2+1 - nimpp + nn_hls339 ELSEIF( nimpp+jpi-1 >= (Ni0glo/2+1)+1 .AND. nimpp < (Ni0glo/2+1)+1 ) THEN 340 startloop = (Ni0glo/2+1)+1 - nimpp + nn_hls 341 341 ELSE 342 342 startloop = jpi + 1 … … 345 345 DO jl = 1, ipl; DO jk = 1, ipk 346 346 DO ji = startloop, jpi 347 ijt = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 3347 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 348 348 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,nn_hls+1,jk,jl,jf) 349 349 END DO … … 353 353 ! 354 354 CASE ( 'F' ) ! F-point 355 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN355 IF( nimpp + jpi - 1 /= jpiglo ) THEN 356 356 endloop = jpi 357 357 ELSE … … 362 362 ijj = jpj -jj +1 363 363 DO ji = 1, endloop 364 iju = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 2364 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 2 365 365 ARRAY_IN(ji,ijj ,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,jj,jk,jl,jf) 366 366 END DO 367 367 END DO 368 368 END DO; END DO 369 IF((nimpp + jpi - 2*nn_hls+1) .eq. jpiglo) THEN369 IF((nimpp + jpi - 1) .eq. jpiglo) THEN 370 370 DO jl = 1, ipl; DO jk = 1, ipk 371 371 DO jj = 1, nn_hls … … 380 380 ! 381 381 IF ( .NOT. l_fast_exchanges ) THEN 382 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN382 IF( nimpp + jpi - 1 /= jpiglo ) THEN 383 383 endloop = jpi 384 384 ELSE 385 385 endloop = jpi - nn_hls 386 386 ENDIF 387 IF( nimpp >= jpiglo/2+1 ) THEN387 IF( nimpp >= (Ni0glo/2+1)+1 ) THEN 388 388 startloop = 1 389 ELSEIF( nimpp+jpi- 2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN390 startloop = jpiglo/2+1 - nimpp + nn_hls389 ELSEIF( nimpp+jpi-1 >= (Ni0glo/2+1)+1 .AND. nimpp < (Ni0glo/2+1)+1 ) THEN 390 startloop = (Ni0glo/2+1)+1 - nimpp + nn_hls 391 391 ELSE 392 392 startloop = endloop + 1 … … 395 395 DO jl = 1, ipl; DO jk = 1, ipk 396 396 DO ji = startloop, endloop 397 iju = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 2397 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 2 398 398 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf) 399 399 END DO -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/mpp_nfd_generic.h90
r12807 r12989 177 177 iilb = nimppt(iproc+1) 178 178 ijpi = jpiall(iproc+1) 179 iis0 = nis0all(iproc+1) + nn_hls-1180 iie0 = nie0all(iproc+1) + nn_hls-1179 iis0 = nis0all(iproc+1) 180 iie0 = nie0all(iproc+1) 181 181 IF( iilb == 1 ) iis0 = nn_hls ! e-w boundary already done -> force to take 1st column 182 182 IF( iilb + ijpi - 1 == jpiglo ) iie0 = Nie0+1 ! e-w boundary already done -> force to take last column … … 191 191 DO jk = 1, ipk 192 192 DO ji = iis0, iie0 193 ztabr(iilb -nn_hls+1+ji,jj,jk,jl,jf) = zfoldwk(ji,js,jk,jl,1)193 ztabr(iilb+ji,jj,jk,jl,jf) = zfoldwk(ji,js,jk,jl,1) 194 194 END DO 195 195 END DO … … 201 201 DO jk = 1, ipk 202 202 DO ji = iis0, iie0 203 ztabr(iilb -nn_hls+1+ji,jj,jk,jl,jf) = ARRAY_IN(ji,jj_s(jf,jj),jk,jl,jf)203 ztabr(iilb+ji,jj,jk,jl,jf) = ARRAY_IN(ji,jj_s(jf,jj),jk,jl,jf) 204 204 END DO 205 205 END DO -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/USR/usrdef_nam.F90
r12939 r12989 36 36 CONTAINS 37 37 38 SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio )38 SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio, khls ) 39 39 !!---------------------------------------------------------------------- 40 40 !! *** ROUTINE dom_nam *** … … 52 52 INTEGER , INTENT(out) :: kpi, kpj, kpk ! global domain sizes 53 53 INTEGER , INTENT(out) :: kperio ! lateral global domain b.c. 54 INTEGER,OPTIONAL, INTENT(out) :: khls ! halo dimension 54 55 ! 55 56 INTEGER :: ios ! Local integer … … 80 81 ! ! Set the lateral boundary condition of the global domain 81 82 kperio = 0 ! GYRE configuration : closed domain 83 IF (PRESENT(khls)) khls = 1 82 84 ! 83 85 ! ! control print -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/nemogcm.F90
r12939 r12989 278 278 ! 279 279 cxios_context = 'nemo' 280 nn_hls = 1281 280 ! 282 281 ! !-------------------------------------------------! … … 386 385 CALL domain_cfg ( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 387 386 ELSE ! user-defined namelist 388 CALL usr_def_nam( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 389 ENDIF 387 CALL usr_def_nam( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio, nn_hls ) 388 ENDIF 389 IF (cn_cfg.NE."BENCH") nn_hls = 1 390 390 ! 391 391 IF(lwm) WRITE( numond, namcfg ) -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/BENCH/EXPREF/namelist_cfg_orca025_like
r12807 r12989 19 19 nn_ksize = 75 ! total number of point in k-direction 20 20 nn_perio = 4 ! periodicity 21 nn_hls = 2 ! halo dimension 21 22 / 22 23 !----------------------------------------------------------------------- -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/BENCH/EXPREF/namelist_cfg_orca12_like
r12807 r12989 19 19 nn_ksize = 75 ! total number of point in k-direction 20 20 nn_perio = 4 ! periodicity 21 nn_hls = 2 ! halo dimension 21 22 / 22 23 !----------------------------------------------------------------------- -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/BENCH/EXPREF/namelist_cfg_orca1_like
r12807 r12989 19 19 nn_ksize = 75 ! total number of point in k-direction 20 20 nn_perio = 6 ! periodicity 21 nn_hls = 2 ! halo dimension 21 22 / 22 23 !----------------------------------------------------------------------- -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/BENCH/MY_SRC/usrdef_istate.F90
r12960 r12989 90 90 pu(:,:,jk) = z2d(:,:) * 0.1_wp * umask(:,:,jk) ! +/- 0.005 m/s 91 91 pv(:,:,jk) = z2d(:,:) * 0.01_wp * vmask(:,:,jk) ! +/- 0.0005 m/s 92 END DO92 END_3D 93 93 pts(:,:,jpk,:) = 0._wp 94 94 pu( :,:,jpk ) = 0._wp -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/BENCH/MY_SRC/usrdef_nam.F90
r12939 r12989 29 29 CONTAINS 30 30 31 SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio )31 SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio, khls ) 32 32 !!---------------------------------------------------------------------- 33 33 !! *** ROUTINE dom_nam *** … … 45 45 INTEGER , INTENT(out) :: kpi, kpj, kpk ! global domain sizes 46 46 INTEGER , INTENT(out) :: kperio ! lateral global domain b.c. 47 INTEGER , INTENT(out) :: khls ! halo dimension 47 48 ! 48 49 ! … … 57 58 LOGICAL :: ln_nnogather, ln_listonly 58 59 !! 59 NAMELIST/namusr_def/ nn_isize, nn_jsize, nn_ksize, nn_perio 60 NAMELIST/namusr_def/ nn_isize, nn_jsize, nn_ksize, nn_perio, nn_hls 60 61 NAMELIST/nammpp/ jpni, jpnj, ln_nnogather, ln_listonly 61 62 !!---------------------------------------------------------------------- … … 86 87 kpk = nn_ksize 87 88 kperio = nn_perio 89 khls = nn_hls 88 90 ! ! control print 89 91 IF(lwp) THEN -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/BENCH/MY_SRC/usrdef_zgr.F90
r12866 r12989 197 197 ! 198 198 IF( jperio == 3 .OR. jperio ==4 ) THEN ! add a small island in the upper corners to avoid model instabilities... 199 z2d(mi0( 1):mi1( 3),mj0(jpjglo-2):mj1(jpjglo)) = 0.200 z2d(mi0(jpiglo- 2):mi1(jpiglo),mj0(jpjglo-2):mj1(jpjglo)) = 0.199 z2d(mi0( 1):mi1(Nis0+1),mj0(jpjglo-nn_hls-1):mj1(jpjglo)) = 0. 200 z2d(mi0(jpiglo-nn_hls-1):mi1(jpiglo),mj0(jpjglo-nn_hls-1):mj1(jpjglo)) = 0. 201 201 ENDIF 202 202 !
Note: See TracChangeset
for help on using the changeset viewer.