- Timestamp:
- 2021-03-03T17:04:07+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_iso.F90
r14537 r14576 147 147 ENDIF 148 148 ! 149 DO_3D( 0, 0, 0, 0, 1, jpk ) 149 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpk ) 150 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 150 151 akz (ji,jj,jk) = 0._wp 151 152 ah_wslp2(ji,jj,jk) = 0._wp … … 172 173 IF( kpass == 1 ) THEN !== first pass only ==! 173 174 ! 174 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 175 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 176 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 175 177 ! 176 178 zmsku = wmask(ji,jj,jk) / MAX( umask(ji ,jj,jk-1) + umask(ji-1,jj,jk) & … … 189 191 ! 190 192 IF( ln_traldf_msc ) THEN ! stabilizing vertical diffusivity coefficient 191 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 193 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 194 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 192 195 akz(ji,jj,jk) = 0.25_wp * ( & 193 196 & ( pahu(ji ,jj,jk) + pahu(ji ,jj,jk-1) ) / ( e1u(ji ,jj) * e1u(ji ,jj) ) & … … 198 201 ! 199 202 IF( ln_traldf_blp ) THEN ! bilaplacian operator 200 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 203 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 204 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 201 205 akz(ji,jj,jk) = 16._wp & 202 206 & * ah_wslp2 (ji,jj,jk) & … … 206 210 END_3D 207 211 ELSEIF( ln_traldf_lap ) THEN ! laplacian operator 208 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 212 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 213 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 209 214 ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 210 215 zcoef0 = rDt * ( akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2 ) … … 214 219 ! 215 220 ELSE ! 33 flux set to zero with akz=ah_wslp2 ==>> computed in full implicit 216 DO_3D( 0, 0, 0, 0, 1, jpk ) 221 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpk ) 222 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 217 223 akz(ji,jj,jk) = ah_wslp2(ji,jj,jk) 218 224 END_3D … … 233 239 234 240 ! Horizontal tracer gradient 235 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 241 ! [comm_cleanup] ! DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 242 DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 ) 236 243 zdit(ji,jj,jk) = ( pt(ji+1,jj ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) 237 244 zdjt(ji,jj,jk) = ( pt(ji ,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 238 245 END_3D 239 246 IF( ln_zps ) THEN ! botton and surface ocean correction of the horizontal gradient 240 DO_2D( 1, 0, 1, 0 ) ! bottom correction (partial bottom cell) 247 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) ! bottom correction (partial bottom cell) 248 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) ! bottom correction (partial bottom cell) 241 249 zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) 242 250 zdjt(ji,jj,mbkv(ji,jj)) = pgv(ji,jj,jn) 243 251 END_2D 244 252 IF( ln_isfcav ) THEN ! first wet level beneath a cavity 245 DO_2D( 1, 0, 1, 0 ) 253 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 254 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 246 255 IF( miku(ji,jj) > 1 ) zdit(ji,jj,miku(ji,jj)) = pgui(ji,jj,jn) 247 256 IF( mikv(ji,jj) > 1 ) zdjt(ji,jj,mikv(ji,jj)) = pgvi(ji,jj,jn) … … 256 265 DO jk = 1, jpkm1 ! Horizontal slab 257 266 ! 258 DO_2D( 1, 1, 1, 1 ) 267 ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 268 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 259 269 ! !== Vertical tracer gradient 260 270 zdk1t(ji,jj) = ( pt(ji,jj,jk,jn) - pt(ji,jj,jk+1,jn) ) * wmask(ji,jj,jk+1) ! level jk+1 … … 265 275 END_2D 266 276 ! 267 DO_2D( 1, 0, 1, 0 ) !== Horizontal fluxes 277 ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) !== Horizontal fluxes 278 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) !== Horizontal fluxes 268 279 zabe1 = pahu(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm) 269 280 zabe2 = pahv(ji,jj,jk) * e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm) … … 286 297 END_2D 287 298 ! 288 DO_2D( 0, 0, 0, 0 ) !== horizontal divergence and add to pta 299 ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) !== horizontal divergence and add to pta 300 DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) !== horizontal divergence and add to pta 289 301 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 290 302 & + zsign * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk) ) & … … 302 314 ztfw(:,:, 1 ) = 0._wp ; ztfw(:,:,jpk) = 0._wp 303 315 304 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) ! interior (2=<jk=<jpk-1) 316 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) ! interior (2=<jk=<jpk-1) 317 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) ! interior (2=<jk=<jpk-1) 305 318 ! 306 319 zmsku = wmask(ji,jj,jk) / MAX( umask(ji ,jj,jk-1) + umask(ji-1,jj,jk) & … … 324 337 ! !== add the vertical 33 flux ==! 325 338 IF( ln_traldf_lap ) THEN ! laplacian case: eddy coef = ah_wslp2 - akz 326 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 339 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 340 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 327 341 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) + e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * wmask(ji,jj,jk) & 328 342 & * ( ah_wslp2(ji,jj,jk) - akz(ji,jj,jk) ) & … … 333 347 SELECT CASE( kpass ) 334 348 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 335 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 349 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 350 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 336 351 ztfw(ji,jj,jk) = & 337 352 & ztfw(ji,jj,jk) + ah_wslp2(ji,jj,jk) * e1e2t(ji,jj) & … … 339 354 END_3D 340 355 CASE( 2 ) ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt and pt2 gradients, resp. 341 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 356 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 357 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 342 358 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) + e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * wmask(ji,jj,jk) & 343 359 & * ( ah_wslp2(ji,jj,jk) * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) ) & … … 347 363 ENDIF 348 364 ! 349 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==! 365 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==! 366 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==! 350 367 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) & 351 368 & / e3t(ji,jj,jk,Kmm)
Note: See TracChangeset
for help on using the changeset viewer.