Changeset 13892 for NEMO/branches/2020/dev_r12985_TOP-04_IMMERSE_BGC_interface/src/OCE/TRA/traldf_triad.F90
- Timestamp:
- 2020-11-26T17:47:20+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r12985_TOP-04_IMMERSE_BGC_interface
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12985_TOP-04_IMMERSE_BGC_interface
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@1 2931sette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r12985_TOP-04_IMMERSE_BGC_interface/src/OCE/TRA/traldf_triad.F90
r12489 r13892 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) … … 136 137 DO ip = 0, 1 ! i-k triads 137 138 DO kp = 0, 1 138 DO_3D _10_10(1, jpkm1 )139 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 139 140 ze3wr = 1._wp / e3w(ji+ip,jj,jk+kp,Kmm) 140 141 zbu = e1e2u(ji,jj) * e3u(ji,jj,jk,Kmm) … … 156 157 DO jp = 0, 1 ! j-k triads 157 158 DO kp = 0, 1 158 DO_3D _10_10(1, jpkm1 )159 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 159 160 ze3wr = 1.0_wp / e3w(ji,jj+jp,jk+kp,Kmm) 160 161 zbv = e1e2v(ji,jj) * e3v(ji,jj,jk,Kmm) … … 178 179 ! 179 180 IF( ln_traldf_blp ) THEN ! bilaplacian operator 180 DO_3D_10_10( 2, jpkm1 ) 181 akz(ji,jj,jk) = 16._wp * ah_wslp2(ji,jj,jk) & 182 & * ( akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 181 DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 182 akz(ji,jj,jk) = 16._wp & 183 & * ah_wslp2 (ji,jj,jk) & 184 & * ( akz (ji,jj,jk) & 185 & + ah_wslp2(ji,jj,jk) & 186 & / ( e3w (ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 183 187 END_3D 184 188 ELSEIF( ln_traldf_lap ) THEN ! laplacian operator 185 DO_3D _10_10(2, jpkm1 )189 DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 186 190 ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 187 191 zcoef0 = rDt * ( akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2 ) … … 207 211 zftv(:,:,:) = 0._wp 208 212 ! 209 DO_3D _10_10( 1, jpkm1 )213 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) !== before lateral T & S gradients at T-level jk ==! 210 214 zdit(ji,jj,jk) = ( pt(ji+1,jj ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) 211 215 zdjt(ji,jj,jk) = ( pt(ji ,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 212 216 END_3D 213 217 IF( ln_zps .AND. l_grad_zps ) THEN ! partial steps: correction at top/bottom ocean level 214 DO_2D _10_10218 DO_2D( 1, 0, 1, 0 ) ! bottom level 215 219 zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) 216 220 zdjt(ji,jj,mbkv(ji,jj)) = pgv(ji,jj,jn) 217 221 END_2D 218 222 IF( ln_isfcav ) THEN ! top level (ocean cavities only) 219 DO_2D _10_10223 DO_2D( 1, 0, 1, 0 ) 220 224 IF( miku(ji,jj) > 1 ) zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn) 221 225 IF( mikv(ji,jj) > 1 ) zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn) … … 242 246 DO ip = 0, 1 !== Horizontal & vertical fluxes 243 247 DO kp = 0, 1 244 DO_2D _10_10248 DO_2D( 1, 0, 1, 0 ) 245 249 ze1ur = r1_e1u(ji,jj) 246 250 zdxt = zdit(ji,jj,jk) * ze1ur … … 263 267 DO jp = 0, 1 264 268 DO kp = 0, 1 265 DO_2D _10_10269 DO_2D( 1, 0, 1, 0 ) 266 270 ze2vr = r1_e2v(ji,jj) 267 271 zdyt = zdjt(ji,jj,jk) * ze2vr … … 285 289 DO ip = 0, 1 !== Horizontal & vertical fluxes 286 290 DO kp = 0, 1 287 DO_2D _10_10291 DO_2D( 1, 0, 1, 0 ) 288 292 ze1ur = r1_e1u(ji,jj) 289 293 zdxt = zdit(ji,jj,jk) * ze1ur … … 306 310 DO jp = 0, 1 307 311 DO kp = 0, 1 308 DO_2D _10_10312 DO_2D( 1, 0, 1, 0 ) 309 313 ze2vr = r1_e2v(ji,jj) 310 314 zdyt = zdjt(ji,jj,jk) * ze2vr … … 325 329 ENDIF 326 330 ! !== horizontal divergence and add to the general trend ==! 327 DO_2D_00_00 328 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( zftu(ji-1,jj,jk) - zftu(ji,jj,jk) & 331 DO_2D( 0, 0, 0, 0 ) 332 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 333 & + zsign * ( zftu(ji-1,jj ,jk) - zftu(ji,jj,jk) & 329 334 & + zftv(ji,jj-1,jk) - zftv(ji,jj,jk) ) & 330 335 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) … … 335 340 ! !== add the vertical 33 flux ==! 336 341 IF( ln_traldf_lap ) THEN ! laplacian case: eddy coef = ah_wslp2 - akz 337 DO_3D _10_00(2, jpkm1 )342 DO_3D( 1, 0, 0, 0, 2, jpkm1 ) 338 343 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & 339 344 & * ( ah_wslp2(ji,jj,jk) - akz(ji,jj,jk) ) & … … 343 348 SELECT CASE( kpass ) 344 349 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 345 DO_3D _10_00(2, jpkm1 )350 DO_3D( 1, 0, 0, 0, 2, jpkm1 ) 346 351 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & 347 352 & * ah_wslp2(ji,jj,jk) * ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) 348 353 END_3D 349 354 CASE( 2 ) ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt and pt2 gradients, resp. 350 DO_3D _10_00(2, jpkm1 )355 DO_3D( 1, 0, 0, 0, 2, jpkm1 ) 351 356 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & 352 357 & * ( ah_wslp2(ji,jj,jk) * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) ) & … … 356 361 ENDIF 357 362 ! 358 DO_3D_00_00( 1, jpkm1 ) 359 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk) ) & 363 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==! 364 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 365 & + zsign * ( ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk) ) & 360 366 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) 361 367 END_3D
Note: See TracChangeset
for help on using the changeset viewer.