Changeset 13497 for NEMO/trunk/src/OCE/ZDF/zdfgls.F90
- Timestamp:
- 2020-09-21T14:37:46+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/ZDF/zdfgls.F90
r13472 r13497 179 179 180 180 ! Compute surface, top and bottom friction at T-points 181 DO_2D( 0, 0, 0, 0 ) 181 DO_2D( 0, 0, 0, 0 ) !== surface ocean friction 182 182 ustar2_surf(ji,jj) = r1_rho0 * taum(ji,jj) * tmask(ji,jj,1) ! surface friction 183 183 END_2D … … 185 185 !!gm Rq we may add here r_ke0(_top/_bot) ? ==>> think about that... 186 186 ! 187 IF( .NOT.ln_drg_OFF ) THEN !== top/bottom friction (explicit before friction)188 DO_2D( 0, 0, 0, 0 ) ! bottom friction (explicit before friction)187 IF( .NOT.ln_drg_OFF ) THEN !== top/bottom friction (explicit before friction) 188 DO_2D( 0, 0, 0, 0 ) ! bottom friction (explicit before friction) 189 189 zmsku = ( 2._wp - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 190 190 zmskv = ( 2._wp - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) ) ! (CAUTION: CdU<0) … … 193 193 END_2D 194 194 IF( ln_isfcav ) THEN 195 DO_2D( 0, 0, 0, 0 ) ! top friction195 DO_2D( 0, 0, 0, 0 ) ! top friction 196 196 zmsku = ( 2. - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 197 197 zmskv = ( 2. - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) ) ! (CAUTION: CdU<0) … … 220 220 zhsro(:,:) = ( (1._wp-zice_fra(:,:)) * zhsro(:,:) + zice_fra(:,:) * rn_hsri )*tmask(:,:,1) + (1._wp - tmask(:,:,1))*rn_hsro 221 221 ! 222 DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 222 DO_3D( 1, 0, 1, 0, 2, jpkm1 ) !== Compute dissipation rate ==! 223 223 eps(ji,jj,jk) = rc03 * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / hmxl_n(ji,jj,jk) 224 224 END_3D … … 416 416 ! ---------------------------------------------------------- 417 417 ! 418 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 418 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 419 419 zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 420 420 END_3D 421 DO_3D( 0, 0, 0, 0, 2, jpk ) 421 DO_3D( 0, 0, 0, 0, 2, jpk ) ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 422 422 zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) * zd_lw(ji,jj,jk-1) 423 423 END_3D 424 DO_3DS( 0, 0, 0, 0, jpk-1, 2, -1 ) 424 DO_3DS( 0, 0, 0, 0, jpk-1, 2, -1 ) ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 425 425 en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 426 426 END_3D … … 610 610 ! ---------------- 611 611 ! 612 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 612 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 613 613 zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 614 614 END_3D 615 DO_3D( 0, 0, 0, 0, 2, jpk ) 615 DO_3D( 0, 0, 0, 0, 2, jpk ) ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 616 616 zd_lw(ji,jj,jk) = psi(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) * zd_lw(ji,jj,jk-1) 617 617 END_3D 618 DO_3DS( 0, 0, 0, 0, jpk-1, 2, -1 ) 618 DO_3DS( 0, 0, 0, 0, jpk-1, 2, -1 ) ! Third recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 619 619 psi(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * psi(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 620 620 END_3D … … 652 652 ! Limit dissipation rate under stable stratification 653 653 ! -------------------------------------------------- 654 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 654 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) ! Note that this set boundary conditions on hmxl_n at the same time 655 655 ! limitation 656 656 eps (ji,jj,jk) = MAX( eps(ji,jj,jk), rn_epsmin ) … … 717 717 ! default value, in case jpk > mbkt(ji,jj)+1. Not needed but avoid a bug when looking for undefined values (-fpe0) 718 718 zstm(:,:,jpk) = 0. 719 DO_2D( 0, 0, 0, 0 ) 719 DO_2D( 0, 0, 0, 0 ) ! update bottom with good values 720 720 zstm(ji,jj,mbkt(ji,jj)+1) = zstm(ji,jj,mbkt(ji,jj)) 721 721 END_2D
Note: See TracChangeset
for help on using the changeset viewer.