Changeset 15437 for NEMO/trunk/src/NST/agrif_oce_sponge.F90
- Timestamp:
- 2021-10-22T14:21:20+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/NST/agrif_oce_sponge.F90
r15317 r15437 386 386 INTEGER :: iku, ikv 387 387 REAL(wp) :: ztsa, zabe1, zabe2, zbtr, zhtot 388 REAl(wp) :: zflag, zdmod, zdtot 388 389 REAL(wp), DIMENSION(i1-1:i2,j1-1:j2,jpk) :: ztu, ztv 389 390 REAL(wp), DIMENSION(i1:i2,j1:j2,jpk,n1:n2) ::tsbdiff … … 401 402 DO jj=j1,j2 402 403 DO ji=i1,i2 403 tabres(ji,jj,jk,jn) = ts(ji,jj,jk,jn,Kbb_a) 404 ! JC: masking is mandatory here: before tracer field seems 405 ! to hold non zero values where tmask=0 406 tabres(ji,jj,jk,jn) = ts(ji,jj,jk,jn,Kbb_a) * tmask(ji,jj,jk) 404 407 END DO 405 408 END DO … … 536 539 DO ji = i1,i2-1 537 540 zabe1 = rn_sponge_tra * r1_Dt * umask(ji,jj,jk) * e1e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) 538 ztu(ji,jj,jk) = zabe1 * fspu(ji,jj) * ( tsbdiff(ji+1,jj ,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 541 zdtot = tsbdiff(ji+1,jj,jk,jn) - tsbdiff(ji,jj,jk,jn) 542 zdmod = ts(ji+1,jj,jk,jn,Kbb_a) - ts(ji,jj,jk,jn,Kbb_a) 543 zflag = 0.5_wp + SIGN(0.5_wp, zdtot*zdmod) 544 ztu(ji,jj,jk) = zabe1 * fspu(ji,jj) * ( zflag * zdtot + (1._wp - zflag) * zdmod ) 539 545 END DO 540 546 END DO … … 544 550 zabe2 = rn_sponge_tra * r1_Dt * vmask(ji,jj,jk) * e1e2v(ji,jj) * e3v(ji,jj,jk,Kmm_a) 545 551 ztv(ji,jj,jk) = zabe2 * fspv(ji,jj) * ( tsbdiff(ji ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 552 zdtot = tsbdiff(ji,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) 553 zdmod = ts(ji,jj+1,jk,jn,Kbb_a) - ts(ji,jj,jk,jn,Kbb_a) 554 zflag = 0.5_wp + SIGN(0.5_wp, zdtot*zdmod) 555 ztv(ji,jj,jk) = zabe2 * fspv(ji,jj) * ( zflag * zdtot + (1._wp - zflag) * zdmod ) 546 556 END DO 547 557 END DO … … 612 622 DO jj=j1,j2 613 623 DO ji=i1,i2 614 tabres(ji,jj,jk,m1) = uu(ji,jj,jk,Kbb_a) 624 tabres(ji,jj,jk,m1) = uu(ji,jj,jk,Kbb_a) * umask(ji,jj,jk) 615 625 END DO 616 626 END DO … … 797 807 DO jj=j1,j2 798 808 DO ji=i1,i2 799 tabres(ji,jj,jk,m1) = vv(ji,jj,jk,Kbb_a) 809 tabres(ji,jj,jk,m1) = vv(ji,jj,jk,Kbb_a) * vmask(ji,jj,jk) 800 810 END DO 801 811 END DO
Note: See TracChangeset
for help on using the changeset viewer.