Changeset 11053 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/NST/agrif_oce_sponge.F90
- Timestamp:
- 2019-05-24T12:53:06+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/NST/agrif_oce_sponge.F90
r10989 r11053 191 191 END SUBROUTINE Agrif_Sponge 192 192 193 SUBROUTINE interptsn_sponge( tabres, i1, i2, j1, j2, k1, k2, n1, n2, before 193 SUBROUTINE interptsn_sponge( tabres, i1, i2, j1, j2, k1, k2, n1, n2, before) 194 194 !!---------------------------------------------------------------------- 195 195 !! *** ROUTINE interptsn_sponge *** … … 218 218 DO jj=j1,j2 219 219 DO ji=i1,i2 220 tabres(ji,jj,jk,jn) = ts(ji,jj,jk,jn,Kbb )220 tabres(ji,jj,jk,jn) = ts(ji,jj,jk,jn,Kbb_a) 221 221 END DO 222 222 END DO … … 228 228 DO jj=j1,j2 229 229 DO ji=i1,i2 230 tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kmm )230 tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kmm_a) 231 231 END DO 232 232 END DO … … 251 251 IF (tmask(ji,jj,jk) == 0) EXIT 252 252 N_out = N_out + 1 253 h_out(jk) = e3t(ji,jj,jk,Kmm ) !Child grid scale factors. Could multiply by e1e2t here instead of division above253 h_out(jk) = e3t(ji,jj,jk,Kmm_a) !Child grid scale factors. Could multiply by e1e2t here instead of division above 254 254 ENDDO 255 255 IF (N_in > 0) THEN … … 268 268 DO jk=1,jpkm1 269 269 # if defined key_vertical 270 tsbdiff(ji,jj,jk,1:jpts) = ts(ji,jj,jk,1:jpts,Kbb ) - tabres_child(ji,jj,jk,1:jpts)270 tsbdiff(ji,jj,jk,1:jpts) = ts(ji,jj,jk,1:jpts,Kbb_a) - tabres_child(ji,jj,jk,1:jpts) 271 271 # else 272 tsbdiff(ji,jj,jk,1:jpts) = ts(ji,jj,jk,1:jpts,Kbb ) - tabres(ji,jj,jk,1:jpts)272 tsbdiff(ji,jj,jk,1:jpts) = ts(ji,jj,jk,1:jpts,Kbb_a) - tabres(ji,jj,jk,1:jpts) 273 273 # endif 274 274 ENDDO … … 281 281 DO jj = j1,j2 282 282 DO ji = i1,i2-1 283 zabe1 = fsaht_spu(ji,jj) * umask(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm )283 zabe1 = fsaht_spu(ji,jj) * umask(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm_a) 284 284 ztu(ji,jj,jk) = zabe1 * ( tsbdiff(ji+1,jj ,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 285 285 END DO … … 288 288 DO ji = i1,i2 289 289 DO jj = j1,j2-1 290 zabe2 = fsaht_spv(ji,jj) * vmask(ji,jj,jk) * e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm )290 zabe2 = fsaht_spv(ji,jj) * vmask(ji,jj,jk) * e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm_a) 291 291 ztv(ji,jj,jk) = zabe2 * ( tsbdiff(ji ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) ) 292 292 END DO … … 310 310 DO ji = i1+1,i2-1 311 311 IF (.NOT. tabspongedone_tsn(ji,jj)) THEN 312 zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm )312 zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm_a) 313 313 ! horizontal diffusive trends 314 314 ztsa = zbtr * ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) + ztv(ji,jj,jk) - ztv(ji,jj-1,jk) ) 315 315 ! add it to the general tracer trends 316 ts(ji,jj,jk,jn,Krhs ) = ts(ji,jj,jk,jn,Krhs) + ztsa316 ts(ji,jj,jk,jn,Krhs_a) = ts(ji,jj,jk,jn,Krhs_a) + ztsa 317 317 ENDIF 318 318 END DO … … 353 353 DO jj=j1,j2 354 354 DO ji=i1,i2 355 tabres(ji,jj,jk,m1) = uu(ji,jj,jk,Kbb )355 tabres(ji,jj,jk,m1) = uu(ji,jj,jk,Kbb_a) 356 356 # if defined key_vertical 357 tabres(ji,jj,jk,m2) = e3u(ji,jj,jk,Kmm )*umask(ji,jj,jk)357 tabres(ji,jj,jk,m2) = e3u(ji,jj,jk,Kmm_a)*umask(ji,jj,jk) 358 358 # endif 359 359 END DO … … 384 384 if (umask(ji,jj,jk) == 0) EXIT 385 385 N_out = N_out + 1 386 h_out(N_out) = e3u(ji,jj,jk,Kmm )386 h_out(N_out) = e3u(ji,jj,jk,Kmm_a) 387 387 ENDDO 388 388 … … 403 403 ENDDO 404 404 405 ubdiff(i1:i2,j1:j2,:) = (uu(i1:i2,j1:j2,:,Kbb ) - tabres_child(i1:i2,j1:j2,:))*umask(i1:i2,j1:j2,:)405 ubdiff(i1:i2,j1:j2,:) = (uu(i1:i2,j1:j2,:,Kbb_a) - tabres_child(i1:i2,j1:j2,:))*umask(i1:i2,j1:j2,:) 406 406 #else 407 ubdiff(i1:i2,j1:j2,:) = (uu(i1:i2,j1:j2,:,Kbb ) - tabres(i1:i2,j1:j2,:,1))*umask(i1:i2,j1:j2,:)407 ubdiff(i1:i2,j1:j2,:) = (uu(i1:i2,j1:j2,:,Kbb_a) - tabres(i1:i2,j1:j2,:,1))*umask(i1:i2,j1:j2,:) 408 408 #endif 409 409 ! … … 416 416 DO jj = j1,j2 417 417 DO ji = i1+1,i2 ! vector opt. 418 zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm ) * fsahm_spt(ji,jj)419 hdivdiff(ji,jj,jk) = ( e2u(ji ,jj)*e3u(ji ,jj,jk,Kmm ) * ubdiff(ji ,jj,jk) &420 & -e2u(ji-1,jj)*e3u(ji-1,jj,jk,Kmm ) * ubdiff(ji-1,jj,jk) ) * zbtr418 zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm_a) * fsahm_spt(ji,jj) 419 hdivdiff(ji,jj,jk) = ( e2u(ji ,jj)*e3u(ji ,jj,jk,Kmm_a) * ubdiff(ji ,jj,jk) & 420 & -e2u(ji-1,jj)*e3u(ji-1,jj,jk,Kmm_a) * ubdiff(ji-1,jj,jk) ) * zbtr 421 421 END DO 422 422 END DO … … 439 439 ze1v = hdivdiff(ji,jj,jk) 440 440 ! horizontal diffusive trends 441 zua = - ( ze2u - rotdiff (ji,jj-1,jk) ) / ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm ) ) &441 zua = - ( ze2u - rotdiff (ji,jj-1,jk) ) / ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) ) & 442 442 + ( hdivdiff(ji+1,jj,jk) - ze1v ) * r1_e1u(ji,jj) 443 443 444 444 ! add it to the general momentum trends 445 uu(ji,jj,jk,Krhs ) = uu(ji,jj,jk,Krhs) + zua445 uu(ji,jj,jk,Krhs_a) = uu(ji,jj,jk,Krhs_a) + zua 446 446 447 447 END DO … … 465 465 466 466 ! horizontal diffusive trends 467 zva = + ( ze2u - rotdiff (ji-1,jj,jk) ) / ( e1v(ji,jj) * e3v(ji,jj,jk,Kmm ) ) &467 zva = + ( ze2u - rotdiff (ji-1,jj,jk) ) / ( e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) ) & 468 468 + ( hdivdiff(ji,jj+1,jk) - ze1v ) * r1_e2v(ji,jj) 469 469 470 470 ! add it to the general momentum trends 471 vv(ji,jj,jk,Krhs ) = vv(ji,jj,jk,Krhs) + zva471 vv(ji,jj,jk,Krhs_a) = vv(ji,jj,jk,Krhs_a) + zva 472 472 END DO 473 473 ENDIF … … 506 506 DO jj=j1,j2 507 507 DO ji=i1,i2 508 tabres(ji,jj,jk,m1) = vv(ji,jj,jk,Kbb )508 tabres(ji,jj,jk,m1) = vv(ji,jj,jk,Kbb_a) 509 509 # if defined key_vertical 510 tabres(ji,jj,jk,m2) = vmask(ji,jj,jk) * e3v(ji,jj,jk,Kmm )510 tabres(ji,jj,jk,m2) = vmask(ji,jj,jk) * e3v(ji,jj,jk,Kmm_a) 511 511 # endif 512 512 END DO … … 536 536 if (vmask(ji,jj,jk) == 0) EXIT 537 537 N_out = N_out + 1 538 h_out(N_out) = e3v(ji,jj,jk,Kmm )538 h_out(N_out) = e3v(ji,jj,jk,Kmm_a) 539 539 ENDDO 540 540 … … 549 549 ENDDO 550 550 551 vbdiff(i1:i2,j1:j2,:) = (vv(i1:i2,j1:j2,:,Kbb ) - tabres_child(i1:i2,j1:j2,:))*vmask(i1:i2,j1:j2,:)551 vbdiff(i1:i2,j1:j2,:) = (vv(i1:i2,j1:j2,:,Kbb_a) - tabres_child(i1:i2,j1:j2,:))*vmask(i1:i2,j1:j2,:) 552 552 # else 553 vbdiff(i1:i2,j1:j2,:) = (vv(i1:i2,j1:j2,:,Kbb ) - tabres(i1:i2,j1:j2,:,1))*vmask(i1:i2,j1:j2,:)553 vbdiff(i1:i2,j1:j2,:) = (vv(i1:i2,j1:j2,:,Kbb_a) - tabres(i1:i2,j1:j2,:,1))*vmask(i1:i2,j1:j2,:) 554 554 # endif 555 555 ! … … 562 562 DO jj = j1+1,j2 563 563 DO ji = i1,i2 ! vector opt. 564 zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm ) * fsahm_spt(ji,jj)565 hdivdiff(ji,jj,jk) = ( e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm ) * vbdiff(ji,jj ,jk) &566 & -e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm ) * vbdiff(ji,jj-1,jk) ) * zbtr564 zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm_a) * fsahm_spt(ji,jj) 565 hdivdiff(ji,jj,jk) = ( e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm_a) * vbdiff(ji,jj ,jk) & 566 & -e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm_a) * vbdiff(ji,jj-1,jk) ) * zbtr 567 567 END DO 568 568 END DO … … 586 586 IF( .NOT. tabspongedone_u(ji,jj) ) THEN 587 587 DO jk = 1, jpkm1 588 uu(ji,jj,jk,Krhs ) = uu(ji,jj,jk,Krhs) &589 & - ( rotdiff (ji ,jj,jk) - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm ) ) &588 uu(ji,jj,jk,Krhs_a) = uu(ji,jj,jk,Krhs_a) & 589 & - ( rotdiff (ji ,jj,jk) - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a) ) & 590 590 & + ( hdivdiff(ji+1,jj,jk) - hdivdiff(ji,jj ,jk)) * r1_e1u(ji,jj) 591 591 END DO … … 600 600 IF( .NOT. tabspongedone_v(ji,jj) ) THEN 601 601 DO jk = 1, jpkm1 602 vv(ji,jj,jk,Krhs ) = vv(ji,jj,jk,Krhs) &603 & + ( rotdiff (ji,jj ,jk) - rotdiff (ji-1,jj,jk) ) / ( e1v(ji,jj) * e3v(ji,jj,jk,Kmm ) ) &602 vv(ji,jj,jk,Krhs_a) = vv(ji,jj,jk,Krhs_a) & 603 & + ( rotdiff (ji,jj ,jk) - rotdiff (ji-1,jj,jk) ) / ( e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) ) & 604 604 & + ( hdivdiff(ji,jj+1,jk) - hdivdiff(ji ,jj,jk) ) * r1_e2v(ji,jj) 605 605 END DO
Note: See TracChangeset
for help on using the changeset viewer.