Changeset 14632
- Timestamp:
- 2021-03-23T18:08:35+01:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_iso.F90
r14631 r14632 132 132 INTEGER :: ji, jj, jk, jn ! dummy loop indices 133 133 INTEGER :: ikt 134 ! NOTE: [halo1-halo2]135 134 INTEGER :: ierr, iij ! local integer 136 135 REAL(wp) :: zmsku, zahu_w, zabe1, zcof1, zcoef3 ! local scalars … … 163 162 ENDIF 164 163 ! 165 ! NOTE: [halo1-halo2]166 164 ! Define pt_rhs halo points for multi-point haloes in bilaplacian case 167 165 IF( nldf_tra == np_blp_i .AND. kpass == 1 ) THEN ; iij = nn_hls … … 249 247 ! Horizontal tracer gradient 250 248 ! [comm_cleanup] ! DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 251 ! NOTE: [halo1-halo2]252 249 DO_3D( iij, iij-1, iij, iij-1, 1, jpkm1 ) 253 250 zdit(ji,jj,jk) = ( pt(ji+1,jj ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) … … 256 253 IF( ln_zps ) THEN ! botton and surface ocean correction of the horizontal gradient 257 254 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) ! bottom correction (partial bottom cell) 258 ! NOTE: [halo1-halo2]259 255 DO_2D( iij, iij-1, iij, iij-1 ) ! bottom correction (partial bottom cell) 260 256 zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) … … 263 259 IF( ln_isfcav ) THEN ! first wet level beneath a cavity 264 260 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 265 ! NOTE: [halo1-halo2]266 261 DO_2D( iij, iij-1, iij, iij-1 ) 267 262 IF( miku(ji,jj) > 1 ) zdit(ji,jj,miku(ji,jj)) = pgui(ji,jj,jn) … … 278 273 ! 279 274 ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 280 ! NOTE: [halo1-halo2]281 275 DO_2D( iij, iij, iij, iij ) 282 276 ! !== Vertical tracer gradient … … 289 283 ! 290 284 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) !== Horizontal fluxes 291 ! NOTE: [halo1-halo2]292 285 DO_2D( iij, iij-1, iij, iij-1 ) !== Horizontal fluxes 293 286 zabe1 = pahu(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm) … … 314 307 ! 315 308 ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) !== horizontal divergence and add to pta 316 ! NOTE: [halo1-halo2]317 309 DO_2D( iij-1, iij-1, iij-1, iij-1 ) !== horizontal divergence and add to pta 318 310 ! NOTE: [halo1-halo2] … … 334 326 335 327 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) ! interior (2=<jk=<jpk-1) 336 ! NOTE: [halo1-halo2]337 328 DO_3D( iij-1, iij-1, iij-1, iij-1, 2, jpkm1 ) ! interior (2=<jk=<jpk-1) 338 329 ! … … 360 351 IF( ln_traldf_lap ) THEN ! laplacian case: eddy coef = ah_wslp2 - akz 361 352 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 362 ! NOTE: [halo1-halo2]363 353 DO_3D( iij-1, iij-1, iij-1, iij-1, 2, jpkm1 ) 364 354 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) + e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * wmask(ji,jj,jk) & … … 371 361 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 372 362 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 373 ! NOTE: [halo1-halo2]374 363 DO_3D( iij-1, iij-1, iij-1, iij-1, 2, jpkm1 ) 375 364 ztfw(ji,jj,jk) = & … … 378 367 END_3D 379 368 CASE( 2 ) ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt and pt2 gradients, resp. 380 ! NOTE: [halo1-halo2]381 369 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 382 370 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) + e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * wmask(ji,jj,jk) & … … 388 376 ! 389 377 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==! 390 ! NOTE: [halo1-halo2]391 378 DO_3D( iij-1, iij-1, iij-1, iij-1, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==! 392 379 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) & -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_lap_blp.F90
r14631 r14632 103 103 ! 104 104 INTEGER :: ji, jj, jk, jn ! dummy loop indices 105 ! NOTE: [halo1-halo2]106 105 INTEGER :: iij 107 106 REAL(wp) :: zsign ! local scalars … … 123 122 ENDIF 124 123 ! 125 ! NOTE: [halo1-halo2]126 124 ! Define pt_rhs halo points for multi-point haloes in bilaplacian case 127 125 IF( nldf_tra == np_blp .AND. kpass == 1 ) THEN ; iij = nn_hls … … 134 132 ENDIF 135 133 136 ! NOTE: [halo1-halo2]137 134 DO_3D( iij, iij-1, iij, iij-1, 1, jpkm1 ) !== First derivative (gradient) ==! 138 135 zaheeu(ji,jj,jk) = zsign * pahu(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm) !!gm * umask(ji,jj,jk) pah masked! … … 144 141 ! ! =========== ! 145 142 ! 146 ! NOTE: [halo1-halo2]147 143 DO_3D( iij, iij-1, iij, iij-1, 1, jpkm1 ) !== First derivative (gradient) ==! 148 144 ztu(ji,jj,jk) = zaheeu(ji,jj,jk) * ( pt(ji+1,jj ,jk,jn) - pt(ji,jj,jk,jn) ) … … 150 146 END_3D 151 147 IF( ln_zps ) THEN ! set gradient at bottom/top ocean level 152 ! NOTE: [halo1-halo2]153 148 DO_2D( iij, iij-1, iij, iij-1 ) ! bottom 154 149 ztu(ji,jj,mbku(ji,jj)) = zaheeu(ji,jj,mbku(ji,jj)) * pgu(ji,jj,jn) … … 156 151 END_2D 157 152 IF( ln_isfcav ) THEN ! top in ocean cavities only 158 ! NOTE: [halo1-halo2]159 153 DO_2D( iij, iij-1, iij, iij-1 ) 160 154 IF( miku(ji,jj) > 1 ) ztu(ji,jj,miku(ji,jj)) = zaheeu(ji,jj,miku(ji,jj)) * pgui(ji,jj,jn) … … 164 158 ENDIF 165 159 ! 166 ! NOTE: [halo1-halo2]167 160 DO_3D( iij-1, iij-1, iij-1, iij-1, 1, jpkm1 ) !== Second derivative (divergence) added to the general tracer trends ==! 168 161 ! NOTE: [halo1-halo2] -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_triad.F90
r14631 r14632 109 109 INTEGER :: ji, jj, jk, jn ! dummy loop indices 110 110 INTEGER :: ip,jp,kp ! dummy loop indices 111 ! NOTE: [halo1-halo2]112 111 INTEGER :: ierr, iij ! local integer 113 112 REAL(wp) :: zmsku, zabe1, zcof1, zcoef3 ! local scalars … … 142 141 ENDIF 143 142 ! 144 ! NOTE: [halo1-halo2]145 143 ! Define pt_rhs halo points for multi-point haloes in bilaplacian case 146 144 IF( nldf_tra == np_blp_it .AND. kpass == 1 ) THEN ; iij = nn_hls … … 287 285 ! 288 286 ! [comm_cleanup] ! DO_3D( 1, 0, 1, 0, 1, jpkm1 ) !== before lateral T & S gradients at T-level jk ==! 289 ! NOTE: [halo1-halo2]290 287 DO_3D( iij, iij-1, iij, iij-1, 1, jpkm1 ) 291 288 zdit(ji,jj,jk) = ( pt(ji+1,jj ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) … … 294 291 IF( ln_zps .AND. l_grad_zps ) THEN ! partial steps: correction at top/bottom ocean level 295 292 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) ! bottom level 296 ! NOTE: [halo1-halo2]297 293 DO_2D( iij, iij-1, iij, iij-1 ) 298 294 zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) … … 301 297 IF( ln_isfcav ) THEN ! top level (ocean cavities only) 302 298 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 303 ! NOTE: [halo1-halo2]304 299 DO_2D( iij, iij-1, iij, iij-1 ) 305 300 IF( miku(ji,jj) > 1 ) zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn) … … 316 311 ! !== Vertical tracer gradient at level jk and jk+1 317 312 ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 318 ! NOTE: [halo1-halo2]319 313 DO_2D( iij, iij, iij, iij ) 320 314 zdkt3d(ji,jj,1) = ( pt(ji,jj,jk,jn) - pt(ji,jj,jk+1,jn) ) * tmask(ji,jj,jk+1) … … 325 319 ELSE 326 320 ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 327 ! NOTE: [halo1-halo2]328 321 DO_2D( iij, iij, iij, iij ) 329 322 zdkt3d(ji,jj,0) = ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) * tmask(ji,jj,jk) … … 337 330 DO kp = 0, 1 338 331 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 339 ! NOTE: [halo1-halo2]340 332 DO_2D( iij, iij-1, iij, iij-1 ) 341 333 ze1ur = r1_e1u(ji,jj) … … 363 355 DO kp = 0, 1 364 356 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 365 ! NOTE: [halo1-halo2]366 357 DO_2D( iij, iij-1, iij, iij-1 ) 367 358 ze2vr = r1_e2v(ji,jj) … … 390 381 DO kp = 0, 1 391 382 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 392 ! NOTE: [halo1-halo2]393 383 DO_2D( iij, iij-1, iij, iij-1 ) 394 384 ze1ur = r1_e1u(ji,jj) … … 416 406 DO kp = 0, 1 417 407 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 418 ! NOTE: [halo1-halo2]419 408 DO_2D( iij, iij-1, iij, iij-1 ) 420 409 ze2vr = r1_e2v(ji,jj) … … 450 439 ! !== horizontal divergence and add to the general trend ==! 451 440 ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 452 ! NOTE: [halo1-halo2]453 441 DO_2D( iij-1, iij-1, iij-1, iij-1 ) 454 442 ! NOTE: [halo1-halo2] … … 465 453 IF( ln_traldf_lap ) THEN ! laplacian case: eddy coef = ah_wslp2 - akz 466 454 ! [comm_cleanup] ! DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 467 ! NOTE: [halo1-halo2]468 455 DO_3D( iij-1, iij-1, iij-1, iij-1, 2, jpkm1 ) 469 456 ztfw(ji,jj,jk,1,1) = ztfw(ji,jj,jk,1,1) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & … … 475 462 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 476 463 ! [comm_cleanup] ! DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 477 ! NOTE: [halo1-halo2]478 464 DO_3D( iij-1, iij-1, iij-1, iij-1, 2, jpkm1 ) 479 465 ztfw(ji,jj,jk,1,1) = ztfw(ji,jj,jk,1,1) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & … … 481 467 END_3D 482 468 CASE( 2 ) ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt and pt2 gradients, resp. 483 ! NOTE: [halo1-halo2]484 469 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 485 470 ztfw(ji,jj,jk,1,1) = ztfw(ji,jj,jk,1,1) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & … … 491 476 ! 492 477 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==! 493 ! NOTE: [halo1-halo2]494 478 DO_3D( iij-1, iij-1, iij-1, iij-1, 1, jpkm1 ) 495 479 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( ztfw(ji,jj,jk+1,1,1) - ztfw(ji,jj,jk,1,1) ) &
Note: See TracChangeset
for help on using the changeset viewer.