- Timestamp:
- 2020-03-23T22:16:19+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traldf_triad.F90
r12377 r12590 41 41 !! * Substitutions 42 42 # include "do_loop_substitute.h90" 43 # include "domzgr_substitute.h90" 43 44 !!---------------------------------------------------------------------- 44 45 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 108 109 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~' 109 110 ENDIF 110 ! 111 ! 111 112 l_hst = .FALSE. 112 113 l_ptr = .FALSE. 113 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) ) l_ptr = .TRUE. 114 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) ) l_ptr = .TRUE. 114 115 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 115 116 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE. … … 124 125 ELSE ; zsign = -1._wp 125 126 ENDIF 126 ! 127 ! 127 128 !!---------------------------------------------------------------------- 128 129 !! 0 - calculate ah_wslp2, akz, and optionally zpsi_uw, zpsi_vw … … 131 132 IF( kpass == 1 ) THEN !== first pass only and whatever the tracer is ==! 132 133 ! 133 akz (:,:,:) = 0._wp 134 akz (:,:,:) = 0._wp 134 135 ah_wslp2(:,:,:) = 0._wp 135 136 IF( ln_ldfeiv_dia ) THEN … … 158 159 END DO 159 160 ! 160 DO jp = 0, 1 ! j-k triads 161 DO jp = 0, 1 ! j-k triads 161 162 DO kp = 0, 1 162 163 DO_3D_10_10( 1, jpkm1 ) … … 184 185 DO_3D_10_10( 2, jpkm1 ) 185 186 akz(ji,jj,jk) = 16._wp * ah_wslp2(ji,jj,jk) & 186 & * ( akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 187 & * ( akz(ji,jj,jk) & 188 & + ah_wslp2(ji,jj,jk) / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 187 189 END_3D 188 190 ELSEIF( ln_traldf_lap ) THEN ! laplacian operator … … 195 197 ! 196 198 ELSE ! 33 flux set to zero with akz=ah_wslp2 ==>> computed in full implicit 197 akz(:,:,:) = ah_wslp2(:,:,:) 199 akz(:,:,:) = ah_wslp2(:,:,:) 198 200 ENDIF 199 201 ! … … 222 224 IF( ln_isfcav ) THEN ! top level (ocean cavities only) 223 225 DO_2D_10_10 224 IF( miku(ji,jj) > 1 ) zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn) 225 IF( mikv(ji,jj) > 1 ) zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn) 226 IF( miku(ji,jj) > 1 ) zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn) 227 IF( mikv(ji,jj) > 1 ) zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn) 226 228 END_2D 227 229 ENDIF … … 330 332 ! !== horizontal divergence and add to the general trend ==! 331 333 DO_2D_00_00 332 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( zftu(ji-1,jj,jk) - zftu(ji,jj,jk) & 333 & + zftv(ji,jj-1,jk) - zftv(ji,jj,jk) ) & 334 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) 334 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 335 & + zsign * ( zftu(ji-1,jj,jk) - zftu(ji,jj,jk) & 336 & + zftv(ji,jj-1,jk) - zftv(ji,jj,jk) ) & 337 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) 335 338 END_2D 336 339 ! … … 344 347 & * ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) 345 348 END_3D 346 ELSE ! bilaplacian 349 ELSE ! bilaplacian 347 350 SELECT CASE( kpass ) 348 351 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 … … 357 360 & + akz (ji,jj,jk) * ( pt2(ji,jj,jk-1,jn) - pt2(ji,jj,jk,jn) ) ) 358 361 END_3D 359 END SELECT 362 END SELECT 360 363 ENDIF 361 364 ! 362 365 DO_3D_00_00( 1, jpkm1 ) 363 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk) ) & 364 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) 366 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 367 & + zsign * ( ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk) ) & 368 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) 365 369 END_3D 366 370 !
Note: See TracChangeset
for help on using the changeset viewer.