Changeset 13498
- Timestamp:
- 2020-09-21T15:56:43+02:00 (3 years ago)
- Location:
- NEMO/branches/2020/dev_r13312_AGRIF-03-04_jchanut_vinterp_tstep/src/NST
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13312_AGRIF-03-04_jchanut_vinterp_tstep/src/NST/agrif_oce_interp.F90
r13352 r13498 1589 1589 IF(lk_west) THEN 1590 1590 ispon = nn_sponge_len * Agrif_irhox() 1591 istart = nn_hls + 2 ! halo + land + 11592 iend = nn_hls + 1 + nbghostcells + ispon ! halo + land + nbghostcells + sponge1591 istart = nn_hls + 2 ! halo + land + 1 1592 iend = nn_hls + 1 + nbghostcells + ispon ! halo + land + nbghostcells + sponge 1593 1593 jstart = nn_hls + 2 1594 1594 jend = jpjglo - nn_hls - 1 … … 1611 1611 IF(lk_east) THEN 1612 1612 ispon = nn_sponge_len * Agrif_irhox() 1613 istart = jpiglo - ( nn_hls + nbghostcells + ispon ) ! halo + land + nbghostcells + sponge - 11614 iend = jpiglo - ( nn_hls + 1 ) ! halo + land + 1 - 11613 istart = jpiglo - ( nn_hls + nbghostcells + ispon ) ! halo + land + nbghostcells + sponge - 1 1614 iend = jpiglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 1615 1615 jstart = nn_hls + 2 1616 jend = jpjglo - nn_hls - 1 1616 jend = jpjglo - nn_hls - 1 1617 1617 DO ji = mi0(istart), mi1(iend) 1618 1618 DO jj = mj0(jstart), mj1(jend) … … 1623 1623 END DO 1624 1624 END DO 1625 DO ji = mi0(istart ), mi1(iend-1)1625 DO ji = mi0(istart+1), mi1(iend-1) 1626 1626 DO jj = mj0(jstart), mj1(jend) 1627 1627 IF ( ABS(hu0_parent(ji,jj)-hu_0(ji,jj)) > 1.e-3 ) iindic = iindic + 1 … … 1667 1667 END DO 1668 1668 END DO 1669 DO jj = mj0(jstart ), mj1(jend-1)1669 DO jj = mj0(jstart+1), mj1(jend-1) 1670 1670 DO ji = mi0(istart), mi1(iend) 1671 1671 IF ( ABS(hv0_parent(ji,jj)-hv_0(ji,jj)) > 1.e-3 ) iindic = iindic + 1 -
NEMO/branches/2020/dev_r13312_AGRIF-03-04_jchanut_vinterp_tstep/src/NST/agrif_oce_sponge.F90
r13351 r13498 113 113 REAL(wp) :: z1_ispongearea, z1_jspongearea 114 114 REAL(wp), DIMENSION(jpi,jpj) :: ztabramp 115 REAL(wp), DIMENSION(jpi,jpj) :: ztabrampu116 REAL(wp), DIMENSION(jpi,jpj) :: ztabrampv117 115 !!---------------------------------------------------------------------- 118 116 ! … … 123 121 !| | | | | 124 122 !fine : t u t u t u t u t u t u t u t u t u t u t 125 !sponge val:0 0 0 1 5/6 4/6 3/6 2/6 1/6 0 0123 !sponge val:0 1 1 1 1 5/6 4/6 3/6 2/6 1/6 0 126 124 ! | ghost | <-- sponge area -- > | 127 125 ! | points | | … … 130 128 #if defined SPONGE || defined SPONGE_TOP 131 129 IF (( .NOT. spongedoneT ).OR.( .NOT. spongedoneU )) THEN 132 ! Define ramp from boundaries towards domain interior at T-points130 ! Define ramp from boundaries towards domain interior at F-points 133 131 ! Store it in ztabramp 134 132 135 133 ispongearea = nn_sponge_len * Agrif_irhox() 136 z1_ispongearea = 1._wp / REAL( ispongearea, wp )134 z1_ispongearea = 1._wp / REAL( MAX(ispongearea,1), wp ) 137 135 jspongearea = nn_sponge_len * Agrif_irhoy() 138 z1_jspongearea = 1._wp / REAL( jspongearea, wp )136 z1_jspongearea = 1._wp / REAL( MAX(jspongearea,1), wp ) 139 137 140 138 ztabramp(:,:) = 0._wp … … 162 160 ENDIF 163 161 IF( lk_east ) THEN ! --- East --- ! 164 ind1 = jpiglo - ( nn_hls + nbghostcells ) - ispongearea 165 ind2 = jpiglo - ( nn_hls + nbghostcells ) 162 ind1 = jpiglo - ( nn_hls + nbghostcells ) - ispongearea - 1 163 ind2 = jpiglo - ( nn_hls + nbghostcells ) - 1 ! halo + land + nbghostcells - 1 166 164 DO ji = mi0(ind1), mi1(ind2) 167 165 DO jj = 1, jpj … … 170 168 END DO 171 169 ! ghost cells: 172 ind1 = jpiglo - ( nn_hls + nbghostcells ) 173 ind2 = jpiglo 170 ind1 = jpiglo - ( nn_hls + nbghostcells ) - 1 ! halo + land + nbghostcells - 1 171 ind2 = jpiglo - 1 174 172 DO ji = mi0(ind1), mi1(ind2) 175 173 DO jj = 1, jpj … … 179 177 ENDIF 180 178 IF( lk_south ) THEN ! --- South --- ! 181 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells179 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 182 180 ind2 = nn_hls + 1 + nbghostcells + jspongearea 183 181 DO jj = mj0(ind1), mj1(ind2) … … 188 186 ! ghost cells: 189 187 ind1 = 1 190 ind2 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells188 ind2 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 191 189 DO jj = mj0(ind1), mj1(ind2) 192 190 DO ji = 1, jpi … … 196 194 ENDIF 197 195 IF( lk_north ) THEN ! --- North --- ! 198 ind1 = jpjglo - ( nn_hls + nbghostcells ) - jspongearea 199 ind2 = jpjglo - ( nn_hls + nbghostcells ) 196 ind1 = jpjglo - ( nn_hls + nbghostcells ) - jspongearea - 1 197 ind2 = jpjglo - ( nn_hls + nbghostcells ) - 1 ! halo + land + nbghostcells - 1 200 198 DO jj = mj0(ind1), mj1(ind2) 201 199 DO ji = 1, jpi … … 220 218 fspv(:,:) = 0._wp 221 219 DO_2D( 0, 0, 0, 0 ) 222 fspu(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji +1,jj) ) * ssumask(ji,jj)223 fspv(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji ,jj+1) ) * ssvmask(ji,jj)220 fspu(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji,jj-1) ) * ssumask(ji,jj) 221 fspv(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji-1,jj) ) * ssvmask(ji,jj) 224 222 END_2D 225 223 ENDIF … … 230 228 fspf(:,:) = 0._wp 231 229 DO_2D( 0, 0, 0, 0 ) 232 fspt(ji,jj) = ztabramp(ji,jj) * ssmask(ji,jj) 233 fspf(ji,jj) = 0.25_wp * ( ztabramp(ji ,jj ) + ztabramp(ji ,jj+1) & 234 & +ztabramp(ji+1,jj+1) + ztabramp(ji+1,jj ) ) & 235 & * ssvmask(ji,jj) * ssvmask(ji,jj+1) 230 fspt(ji,jj) = 0.25_wp * ( ztabramp(ji ,jj ) + ztabramp(ji-1,jj ) & 231 & +ztabramp(ji ,jj-1) + ztabramp(ji-1,jj-1) ) * ssmask(ji,jj) 232 fspf(ji,jj) = ztabramp(ji,jj) * ssvmask(ji,jj) * ssvmask(ji,jj+1) 236 233 END_2D 237 234 ENDIF … … 250 247 spongedoneU = .TRUE. 251 248 ENDIF 252 249 ! 253 250 ! Remove vertical interpolation where not needed: 254 DO_2D( 0, 0, 0, 0 ) 255 IF ((fspu(ji-1,jj)==0._wp).AND.(fspu(ji,jj)==0._wp).AND. & 256 & (fspv(ji,jj-1)==0._wp).AND.(fspv(ji,jj)==0._wp)) mbkt_parent(ji,jj) = 0 257 ! 258 IF ((fspt(ji+1,jj)==0._wp).AND.(fspt(ji,jj)==0._wp).AND. & 259 & (fspf(ji,jj-1)==0._wp).AND.(fspf(ji,jj)==0._wp)) mbku_parent(ji,jj) = 0 260 ! 261 IF ((fspt(ji,jj+1)==0._wp).AND.(fspt(ji,jj)==0._wp).AND. & 262 & (fspf(ji-1,jj)==0._wp).AND.(fspf(ji,jj)==0._wp)) mbkv_parent(ji,jj) = 0 263 ! 264 IF ( ssmask(ji,jj) == 0._wp) mbkt_parent(ji,jj) = 0 265 IF (ssumask(ji,jj) == 0._wp) mbku_parent(ji,jj) = 0 266 IF (ssvmask(ji,jj) == 0._wp) mbkv_parent(ji,jj) = 0 267 END_2D 268 ! 269 ztabramp (:,:) = REAL( mbkt_parent(:,:), wp ) 270 ztabrampu(:,:) = REAL( mbku_parent(:,:), wp ) 271 ztabrampv(:,:) = REAL( mbkv_parent(:,:), wp ) 272 CALL lbc_lnk_multi( 'Agrif_Sponge', ztabramp, 'T', 1._wp, ztabrampu, 'U', 1._wp, ztabrampv, 'V', 1._wp ) 273 mbkt_parent(:,:) = NINT( ztabramp (:,:) ) 274 mbku_parent(:,:) = NINT( ztabrampu(:,:) ) 275 mbkv_parent(:,:) = NINT( ztabrampv(:,:) ) 251 ! (A null value in mbkx arrays does the job) 252 WHERE (fspu(:,:) == 0._wp) mbku_parent(:,:) = 0 253 WHERE (fspv(:,:) == 0._wp) mbkv_parent(:,:) = 0 254 WHERE (fspt(:,:) == 0._wp) mbkt_parent(:,:) = 0 276 255 ! 277 256 #endif … … 406 385 DO jj = j1,j2 407 386 DO ji = i1,i2-1 408 zabe1 = rn_sponge_tra * r1_Dt * fspu(ji,jj)* umask(ji,jj,jk) * e1e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a)387 zabe1 = fspu(ji,jj) * rn_sponge_tra * r1_Dt * umask(ji,jj,jk) * e1e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) 409 388 ztu(ji,jj,jk) = zabe1 * ( tsbdiff(ji+1,jj ,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 410 389 END DO … … 413 392 DO ji = i1,i2 414 393 DO jj = j1,j2-1 415 zabe2 = rn_sponge_tra * r1_Dt * fspv(ji,jj)* vmask(ji,jj,jk) * e1e2v(ji,jj) * e3v(ji,jj,jk,Kmm_a)394 zabe2 = fspv(ji,jj) * rn_sponge_tra * r1_Dt * vmask(ji,jj,jk) * e1e2v(ji,jj) * e3v(ji,jj,jk,Kmm_a) 416 395 ztv(ji,jj,jk) = zabe2 * ( tsbdiff(ji ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 417 396 END DO
Note: See TracChangeset
for help on using the changeset viewer.