- Timestamp:
- 2021-04-07T19:16:18+02: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
r14632 r14680 185 185 zmskv = wmask(ji,jj,jk) / MAX( vmask(ji,jj ,jk-1) + vmask(ji,jj-1,jk) & 186 186 & + vmask(ji,jj-1,jk-1) + vmask(ji,jj ,jk) , 1._wp ) 187 ! 188 ! NOTE: [halo1-halo2] 189 ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 190 zahu_w = ( (pahu(ji ,jj,jk-1) + pahu(ji-1,jj,jk)) & 191 & + (pahu(ji-1,jj,jk-1) + pahu(ji ,jj,jk)) ) * zmsku 192 zahv_w = ( (pahv(ji,jj ,jk-1) + pahv(ji,jj-1,jk)) & 193 & + (pahv(ji,jj-1,jk-1) + pahv(ji,jj ,jk)) ) * zmskv 187 ! round brackets added to fix the order of floating point operations 188 ! needed to ensure halo 1 - halo 2 compatibility 189 zahu_w = ( ( pahu(ji ,jj,jk-1) + pahu(ji-1,jj,jk) & 190 & ) & ! bracket for halo 1 - halo 2 compatibility 191 & + ( pahu(ji-1,jj,jk-1) + pahu(ji ,jj,jk) & 192 & ) ) * zmsku ! bracket for halo 1 - halo 2 compatibility 193 zahv_w = ( ( pahv(ji,jj ,jk-1) + pahv(ji,jj-1,jk) & 194 & ) & ! bracket for halo 1 - halo 2 compatibility 195 & + ( pahv(ji,jj-1,jk-1) + pahv(ji,jj ,jk) & 196 & ) ) * zmskv ! bracket for halo 1 - halo 2 compatibility 194 197 ! 195 198 ah_wslp2(ji,jj,jk) = zahu_w * wslpi(ji,jj,jk) * wslpi(ji,jj,jk) & … … 200 203 ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 201 204 DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 202 ! NOTE: [halo1-halo2] 203 ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 204 akz(ji,jj,jk) = 0.25_wp * ( & 205 & (( pahu(ji ,jj,jk) + pahu(ji ,jj,jk-1) ) / ( e1u(ji ,jj) * e1u(ji ,jj) ) & 206 & + ( pahu(ji-1,jj,jk) + pahu(ji-1,jj,jk-1) ) / ( e1u(ji-1,jj) * e1u(ji-1,jj) )) & 207 & + (( pahv(ji,jj ,jk) + pahv(ji,jj ,jk-1) ) / ( e2v(ji,jj ) * e2v(ji,jj ) ) & 208 & + ( pahv(ji,jj-1,jk) + pahv(ji,jj-1,jk-1) ) / ( e2v(ji,jj-1) * e2v(ji,jj-1) )) ) 205 ! round brackets added to fix the order of floating point operations 206 ! needed to ensure halo 1 - halo 2 compatibility 207 akz(ji,jj,jk) = 0.25_wp * ( & 208 & ( ( pahu(ji ,jj,jk) + pahu(ji ,jj,jk-1) ) / ( e1u(ji ,jj) * e1u(ji ,jj) ) & 209 & + ( pahu(ji-1,jj,jk) + pahu(ji-1,jj,jk-1) ) / ( e1u(ji-1,jj) * e1u(ji-1,jj) ) & 210 & ) & ! bracket for halo 1 - halo 2 compatibility 211 & + ( ( pahv(ji,jj ,jk) + pahv(ji,jj ,jk-1) ) / ( e2v(ji,jj ) * e2v(ji,jj ) ) & 212 & + ( pahv(ji,jj-1,jk) + pahv(ji,jj-1,jk-1) ) / ( e2v(ji,jj-1) * e2v(ji,jj-1) ) & 213 & ) ) ! bracket for halo 1 - halo 2 compatibility 209 214 END_3D 210 215 ! … … 296 301 zcof2 = - pahv(ji,jj,jk) * e1v(ji,jj) * vslp(ji,jj,jk) * zmskv 297 302 ! 298 ! NOTE: [halo1-halo2] 299 ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 300 zftu(ji,jj,jk) = ( zabe1 * zdit(ji,jj,jk) & 301 & + zcof1 * ( (zdkt (ji+1,jj) + zdk1t(ji,jj)) & 302 & + (zdk1t(ji+1,jj) + zdkt (ji,jj)) ) ) * umask(ji,jj,jk) 303 zftv(ji,jj,jk) = ( zabe2 * zdjt(ji,jj,jk) & 304 & + zcof2 * ( (zdkt (ji,jj+1) + zdk1t(ji,jj)) & 305 & + (zdk1t(ji,jj+1) + zdkt (ji,jj)) ) ) * vmask(ji,jj,jk) 303 ! round brackets added to fix the order of floating point operations 304 ! needed to ensure halo 1 - halo 2 compatibility 305 zftu(ji,jj,jk ) = ( zabe1 * zdit(ji,jj,jk) & 306 & + zcof1 * ( ( zdkt (ji+1,jj) + zdk1t(ji,jj) & 307 & ) & ! bracket for halo 1 - halo 2 compatibility 308 & + ( zdk1t(ji+1,jj) + zdkt (ji,jj) & 309 & ) & ! bracket for halo 1 - halo 2 compatibility 310 & ) ) * umask(ji,jj,jk) 311 zftv(ji,jj,jk) = ( zabe2 * zdjt(ji,jj,jk) & 312 & + zcof2 * ( ( zdkt (ji,jj+1) + zdk1t(ji,jj) & 313 & ) & ! bracket for halo 1 - halo 2 compatibility 314 & + ( zdk1t(ji,jj+1) + zdkt (ji,jj) & 315 & ) & ! bracket for halo 1 - halo 2 compatibility 316 & ) ) * vmask(ji,jj,jk) 306 317 END_2D 307 318 ! 308 319 ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) !== horizontal divergence and add to pta 309 320 DO_2D( iij-1, iij-1, iij-1, iij-1 ) !== horizontal divergence and add to pta 310 ! NOTE: [halo1-halo2] 311 ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 312 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 313 & + zsign * ( (zftu(ji,jj,jk) - zftu(ji-1,jj,jk)) + & 314 & (zftv(ji,jj,jk) - zftv(ji,jj-1,jk)) ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 321 ! round brackets added to fix the order of floating point operations 322 ! needed to ensure halo 1 - halo 2 compatibility 323 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 324 & + zsign * ( ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) & 325 & ) & ! bracket for halo 1 - halo 2 compatibility 326 & + ( zftv(ji,jj,jk) - zftv(ji,jj-1,jk) & 327 & ) & ! bracket for halo 1 - halo 2 compatibility 328 & ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 315 329 END_2D 316 330 END DO ! End of slab … … 341 355 zcoef4 = - zahv_w * e1t(ji,jj) * zmskv * wslpj (ji,jj,jk) 342 356 ! 343 ! NOTE: [halo1-halo2] 344 ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 345 ztfw(ji,jj,jk) = zcoef3 * ( (zdit(ji ,jj ,jk-1) + zdit(ji-1,jj ,jk)) & 346 & + (zdit(ji-1,jj ,jk-1) + zdit(ji ,jj ,jk)) ) & 347 & + zcoef4 * ( (zdjt(ji ,jj ,jk-1) + zdjt(ji ,jj-1,jk)) & 348 & + (zdjt(ji ,jj-1,jk-1) + zdjt(ji ,jj ,jk)) ) 357 ! round brackets added to fix the order of floating point operations 358 ! needed to ensure halo 1 - halo 2 compatibility 359 ztfw(ji,jj,jk) = zcoef3 * ( ( zdit(ji ,jj ,jk-1) + zdit(ji-1,jj ,jk) & 360 & ) & ! bracket for halo 1 - halo 2 compatibility 361 & + ( zdit(ji-1,jj ,jk-1) + zdit(ji ,jj ,jk) & 362 & ) & ! bracket for halo 1 - halo 2 compatibility 363 & ) & 364 & + zcoef4 * ( ( zdjt(ji ,jj ,jk-1) + zdjt(ji ,jj-1,jk) & 365 & ) & ! bracket for halo 1 - halo 2 compatibility 366 & + ( zdjt(ji ,jj-1,jk-1) + zdjt(ji ,jj ,jk) & 367 & ) & ! bracket for halo 1 - halo 2 compatibility 368 & ) 349 369 END_3D 350 370 ! !== add the vertical 33 flux ==!
Note: See TracChangeset
for help on using the changeset viewer.