- Timestamp:
- 2015-12-16T10:25:22+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r5836 r6060 99 99 100 100 !! * Substitutions 101 # include "domzgr_substitute.h90"102 101 # include "vectopt_loop_substitute.h90" 103 102 !!---------------------------------------------------------------------- … … 294 293 ! 295 294 ! !* total energy produce by LC : cumulative sum over jk 296 zpelc(:,:,1) = MAX( rn2b(:,:,1), 0._wp ) * fsdepw(:,:,1) * fse3w(:,:,1)295 zpelc(:,:,1) = MAX( rn2b(:,:,1), 0._wp ) * gdepw_n(:,:,1) * e3w_n(:,:,1) 297 296 DO jk = 2, jpk 298 zpelc(:,:,jk) = zpelc(:,:,jk-1) + MAX( rn2b(:,:,jk), 0._wp ) * fsdepw(:,:,jk) * fse3w(:,:,jk)297 zpelc(:,:,jk) = zpelc(:,:,jk-1) + MAX( rn2b(:,:,jk), 0._wp ) * gdepw_n(:,:,jk) * e3w_n(:,:,jk) 299 298 END DO 300 299 ! !* finite Langmuir Circulation depth … … 312 311 DO jj = 1, jpj 313 312 DO ji = 1, jpi 314 zhlc(ji,jj) = fsdepw(ji,jj,imlc(ji,jj))313 zhlc(ji,jj) = gdepw_n(ji,jj,imlc(ji,jj)) 315 314 END DO 316 315 END DO … … 321 320 zus = zcof * SQRT( taum(ji,jj) ) ! Stokes drift 322 321 ! ! vertical velocity due to LC 323 zind = 0.5 - SIGN( 0.5, fsdepw(ji,jj,jk) - zhlc(ji,jj) )324 zwlc = zind * rn_lc * zus * SIN( rpi * fsdepw(ji,jj,jk) / zhlc(ji,jj) )322 zind = 0.5 - SIGN( 0.5, gdepw_n(ji,jj,jk) - zhlc(ji,jj) ) 323 zwlc = zind * rn_lc * zus * SIN( rpi * gdepw_n(ji,jj,jk) / zhlc(ji,jj) ) 325 324 ! ! TKE Langmuir circulation source term 326 325 en(ji,jj,jk) = en(ji,jj,jk) + rdt * ( zwlc * zwlc * zwlc ) / zhlc(ji,jj) * wmask(ji,jj,jk) * tmask(ji,jj,1) … … 344 343 & * ( un(ji,jj,jk-1) - un(ji ,jj,jk) ) & 345 344 & * ( ub(ji,jj,jk-1) - ub(ji ,jj,jk) ) * wumask(ji,jj,jk) & 346 & / ( fse3uw_n(ji,jj,jk) * fse3uw_b(ji,jj,jk) )345 & / ( e3uw_n(ji,jj,jk) * e3uw_b(ji,jj,jk) ) 347 346 z3dv(ji,jj,jk) = 0.5 * ( avm(ji,jj,jk ) + avm(ji,jj+1,jk) ) & 348 347 & * ( vn(ji,jj,jk-1) - vn(ji,jj ,jk) ) & 349 348 & * ( vb(ji,jj,jk-1) - vb(ji,jj ,jk) ) * wvmask(ji,jj,jk) & 350 & / ( fse3vw_n(ji,jj,jk) * fse3vw_b(ji,jj,jk) )349 & / ( e3vw_n(ji,jj,jk) * e3vw_b(ji,jj,jk) ) 351 350 END DO 352 351 END DO … … 377 376 zcof = zfact1 * tmask(ji,jj,jk) 378 377 zzd_up = zcof * ( avm (ji,jj,jk+1) + avm (ji,jj,jk ) ) & ! upper diagonal 379 & / ( fse3t(ji,jj,jk ) * fse3w(ji,jj,jk ) )378 & / ( e3t_n(ji,jj,jk ) * e3w_n(ji,jj,jk ) ) 380 379 zzd_lw = zcof * ( avm (ji,jj,jk ) + avm (ji,jj,jk-1) ) & ! lower diagonal 381 & / ( fse3t(ji,jj,jk-1) * fse3w(ji,jj,jk ) )380 & / ( e3t_n(ji,jj,jk-1) * e3w_n(ji,jj,jk ) ) 382 381 ! ! shear prod. at w-point weightened by mask 383 382 zesh2 = ( z3du(ji-1,jj,jk) + z3du(ji,jj,jk) ) / MAX( 1._wp , umask(ji-1,jj,jk) + umask(ji,jj,jk) ) & … … 438 437 ! ! TKE due to surface and internal wave breaking 439 438 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 439 !!gm BUG : in the exp remove the depth of ssh !!! 440 441 440 442 IF( nn_etau == 1 ) THEN !* penetration below the mixed layer (rn_efr fraction) 441 443 DO jk = 2, jpkm1 442 444 DO jj = 2, jpjm1 443 445 DO ji = fs_2, fs_jpim1 ! vector opt. 444 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( - fsdepw(ji,jj,jk) / htau(ji,jj) ) &446 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -gdepw_n(ji,jj,jk) / htau(ji,jj) ) & 445 447 & * ( 1._wp - fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 446 448 END DO … … 451 453 DO ji = fs_2, fs_jpim1 ! vector opt. 452 454 jk = nmln(ji,jj) 453 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( - fsdepw(ji,jj,jk) / htau(ji,jj) ) &455 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -gdepw_n(ji,jj,jk) / htau(ji,jj) ) & 454 456 & * ( 1._wp - fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 455 457 END DO … … 464 466 zdif = taum(ji,jj) - ztau ! mean of modulus - modulus of the mean 465 467 zdif = rhftau_scl * MAX( 0._wp, zdif + rhftau_add ) ! apply some modifications... 466 en(ji,jj,jk) = en(ji,jj,jk) + zbbrau * zdif * EXP( - fsdepw(ji,jj,jk) / htau(ji,jj) ) &468 en(ji,jj,jk) = en(ji,jj,jk) + zbbrau * zdif * EXP( -gdepw_n(ji,jj,jk) / htau(ji,jj) ) & 467 469 & * ( 1._wp - fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 468 470 END DO … … 570 572 DO jj = 2, jpjm1 571 573 DO ji = fs_2, fs_jpim1 ! vector opt. 572 zemxl = MIN( fsdepw(ji,jj,jk) - fsdepw(ji,jj,mikt(ji,jj)), zmxlm(ji,jj,jk), &573 & fsdepw(ji,jj,mbkt(ji,jj)+1) - fsdepw(ji,jj,jk) )574 zemxl = MIN( gdepw_n(ji,jj,jk) - gdepw_n(ji,jj,mikt(ji,jj)), zmxlm(ji,jj,jk), & 575 & gdepw_n(ji,jj,mbkt(ji,jj)+1) - gdepw_n(ji,jj,jk) ) 574 576 ! wmask prevent zmxlm = 0 if jk = mikt(ji,jj) 575 zmxlm(ji,jj,jk) = zemxl * wmask(ji,jj,jk) + MIN(zmxlm(ji,jj,jk), fse3w(ji,jj,jk)) * (1 - wmask(ji,jj,jk))576 zmxld(ji,jj,jk) = zemxl * wmask(ji,jj,jk) + MIN(zmxlm(ji,jj,jk), fse3w(ji,jj,jk)) * (1 - wmask(ji,jj,jk))577 zmxlm(ji,jj,jk) = zemxl * wmask(ji,jj,jk) + MIN(zmxlm(ji,jj,jk),e3w_n(ji,jj,jk)) * (1 - wmask(ji,jj,jk)) 578 zmxld(ji,jj,jk) = zemxl * wmask(ji,jj,jk) + MIN(zmxlm(ji,jj,jk),e3w_n(ji,jj,jk)) * (1 - wmask(ji,jj,jk)) 577 579 END DO 578 580 END DO … … 583 585 DO jj = 2, jpjm1 584 586 DO ji = fs_2, fs_jpim1 ! vector opt. 585 zemxl = MIN( fse3w(ji,jj,jk), zmxlm(ji,jj,jk) )587 zemxl = MIN( e3w_n(ji,jj,jk), zmxlm(ji,jj,jk) ) 586 588 zmxlm(ji,jj,jk) = zemxl 587 589 zmxld(ji,jj,jk) = zemxl … … 594 596 DO jj = 2, jpjm1 595 597 DO ji = fs_2, fs_jpim1 ! vector opt. 596 zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk-1) + fse3t(ji,jj,jk-1), zmxlm(ji,jj,jk) )598 zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk-1) + e3t_n(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 597 599 END DO 598 600 END DO … … 601 603 DO jj = 2, jpjm1 602 604 DO ji = fs_2, fs_jpim1 ! vector opt. 603 zemxl = MIN( zmxlm(ji,jj,jk+1) + fse3t(ji,jj,jk+1), zmxlm(ji,jj,jk) )605 zemxl = MIN( zmxlm(ji,jj,jk+1) + e3t_n(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 604 606 zmxlm(ji,jj,jk) = zemxl 605 607 zmxld(ji,jj,jk) = zemxl … … 612 614 DO jj = 2, jpjm1 613 615 DO ji = fs_2, fs_jpim1 ! vector opt. 614 zmxld(ji,jj,jk) = MIN( zmxld(ji,jj,jk-1) + fse3t(ji,jj,jk-1), zmxlm(ji,jj,jk) )616 zmxld(ji,jj,jk) = MIN( zmxld(ji,jj,jk-1) + e3t_n(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 615 617 END DO 616 618 END DO … … 619 621 DO jj = 2, jpjm1 620 622 DO ji = fs_2, fs_jpim1 ! vector opt. 621 zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk+1) + fse3t(ji,jj,jk+1), zmxlm(ji,jj,jk) )623 zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk+1) + e3t_n(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 622 624 END DO 623 625 END DO
Note: See TracChangeset
for help on using the changeset viewer.