Changeset 14072 for NEMO/trunk/src/OCE/TRA/traldf_iso.F90
- Timestamp:
- 2020-12-04T08:48:38+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/TRA/traldf_iso.F90
r13982 r14072 15 15 !!---------------------------------------------------------------------- 16 16 !! tra_ldf_iso : update the tracer trend with the horizontal component of a iso-neutral laplacian operator 17 !! and with the vertical part of the isopycnal or geopotential s-coord. operator 17 !! and with the vertical part of the isopycnal or geopotential s-coord. operator 18 18 !!---------------------------------------------------------------------- 19 19 USE oce ! ocean dynamics and active tracers … … 79 79 !! *** ROUTINE tra_ldf_iso *** 80 80 !! 81 !! ** Purpose : Compute the before horizontal tracer (t & s) diffusive 82 !! trend for a laplacian tensor (ezxcept the dz[ dz[.] ] term) and 81 !! ** Purpose : Compute the before horizontal tracer (t & s) diffusive 82 !! trend for a laplacian tensor (ezxcept the dz[ dz[.] ] term) and 83 83 !! add it to the general trend of tracer equation. 84 84 !! 85 !! ** Method : The horizontal component of the lateral diffusive trends 85 !! ** Method : The horizontal component of the lateral diffusive trends 86 86 !! is provided by a 2nd order operator rotated along neural or geopo- 87 87 !! tential surfaces to which an eddy induced advection can be added … … 94 94 !! 95 95 !! 2nd part : horizontal fluxes of the lateral mixing operator 96 !! ======== 96 !! ======== 97 97 !! zftu = pahu e2u*e3u/e1u di[ tb ] 98 98 !! - pahu e2u*uslp dk[ mi(mk(tb)) ] … … 165 165 ELSE ; zsign = -1._wp 166 166 ENDIF 167 167 168 168 !!---------------------------------------------------------------------- 169 169 !! 0 - calculate ah_wslp2 and akz … … 223 223 DO jn = 1, kjpt ! tracer loop 224 224 ! ! =========== 225 ! 226 !!---------------------------------------------------------------------- 227 !! I - masked horizontal derivative 225 ! 226 !!---------------------------------------------------------------------- 227 !! I - masked horizontal derivative 228 228 !!---------------------------------------------------------------------- 229 229 !!gm : bug.... why (x,:,:)? (1,jpj,:) and (jpi,1,:) should be sufficient.... … … 232 232 !!end 233 233 234 ! Horizontal tracer gradient 234 ! Horizontal tracer gradient 235 235 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 236 236 zdit(ji,jj,jk) = ( pt(ji+1,jj ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) … … 239 239 IF( ln_zps ) THEN ! botton and surface ocean correction of the horizontal gradient 240 240 DO_2D( 1, 0, 1, 0 ) ! bottom correction (partial bottom cell) 241 zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) 241 zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) 242 242 zdjt(ji,jj,mbkv(ji,jj)) = pgv(ji,jj,jn) 243 243 END_2D 244 244 IF( ln_isfcav ) THEN ! first wet level beneath a cavity 245 245 DO_2D( 1, 0, 1, 0 ) 246 IF( miku(ji,jj) > 1 ) zdit(ji,jj,miku(ji,jj)) = pgui(ji,jj,jn) 247 IF( mikv(ji,jj) > 1 ) zdjt(ji,jj,mikv(ji,jj)) = pgvi(ji,jj,jn) 246 IF( miku(ji,jj) > 1 ) zdit(ji,jj,miku(ji,jj)) = pgui(ji,jj,jn) 247 IF( mikv(ji,jj) > 1 ) zdjt(ji,jj,mikv(ji,jj)) = pgvi(ji,jj,jn) 248 248 END_2D 249 249 ENDIF … … 283 283 zftv(ji,jj,jk) = ( zabe2 * zdjt(ji,jj,jk) & 284 284 & + zcof2 * ( zdkt (ji,jj+1) + zdk1t(ji,jj) & 285 & + zdk1t(ji,jj+1) + zdkt (ji,jj) ) ) * vmask(ji,jj,jk) 285 & + zdk1t(ji,jj+1) + zdkt (ji,jj) ) ) * vmask(ji,jj,jk) 286 286 END_2D 287 287 ! … … 291 291 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 292 292 END_2D 293 END DO ! End of slab 293 END DO ! End of slab 294 294 295 295 !!---------------------------------------------------------------------- … … 301 301 ! ! Surface and bottom vertical fluxes set to zero 302 302 ztfw(:,:, 1 ) = 0._wp ; ztfw(:,:,jpk) = 0._wp 303 303 304 304 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) ! interior (2=<jk=<jpk-1) 305 305 ! … … 330 330 END_3D 331 331 ! 332 ELSE ! bilaplacian 332 ELSE ! bilaplacian 333 333 SELECT CASE( kpass ) 334 334 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 … … 346 346 END SELECT 347 347 ENDIF 348 ! 348 ! 349 349 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==! 350 350 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( ztfw (ji,jj,jk) - ztfw(ji,jj,jk+1) ) * r1_e1e2t(ji,jj) &
Note: See TracChangeset
for help on using the changeset viewer.