- Timestamp:
- 2020-10-01T12:04:12+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13383_HPC-02_Daley_Tiling/src/OCE/TRA/traadv_fct.F90
r13516 r13551 15 15 USE oce ! ocean dynamics and active tracers 16 16 USE dom_oce ! ocean space and time domain 17 ! TEMP: This change not necessary after trd_tra is tiled18 USE domain, ONLY : dom_tile19 17 USE trc_oce ! share passive tracers/Ocean variables 20 18 USE trd_oce ! trends: ocean variables … … 81 79 INTEGER , INTENT(in ) :: kn_fct_v ! order of the FCT scheme (=2 or 4) 82 80 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 83 ! TEMP: This can be ST_2D(nn_hls) after trd_tra is tiled81 ! TEMP: This can be ST_2D(nn_hls) if using XIOS (subdomain support) 84 82 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pU, pV, pW ! 3 ocean volume flux components 85 83 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) :: pt ! tracers and RHS of tracer equation 86 84 ! 87 INTEGER :: ji, jj, jk, jn ! dummy loop indices 88 ! TEMP: This change not necessary after trd_tra is tiled 89 INTEGER :: itile 85 INTEGER :: ji, jj, jk, jn ! dummy loop indices 90 86 REAL(wp) :: ztra ! local scalar 91 87 REAL(wp) :: zfp_ui, zfp_vj, zfp_wk, zC2t_u, zC4t_u ! - - 92 88 REAL(wp) :: zfm_ui, zfm_vj, zfm_wk, zC2t_v, zC4t_v ! - - 93 89 REAL(wp), DIMENSION(ST_2D(nn_hls),jpk) :: zwi, zwx, zwy, zwz, ztu, ztv, zltu, zltv, ztw 94 ! TEMP: This change not necessary after trd_tra is tiled 95 REAL(wp), DIMENSION(:,:,:), SAVE, ALLOCATABLE :: ztrdx, ztrdy, ztrdz 96 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: zptry 97 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: zwinf, zwdia, zwsup 90 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdx, ztrdy, ztrdz, zptry 91 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zwinf, zwdia, zwsup 98 92 LOGICAL :: ll_zAimp ! flag to apply adaptive implicit vertical advection 99 93 !!---------------------------------------------------------------------- 100 ! TEMP: This change not necessary after trd_tra is tiled101 itile = ntile102 94 ! 103 95 IF( ntile == 0 .OR. ntile == 1 ) THEN ! Do only on the first tile … … 107 99 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 108 100 ENDIF 109 !! -- init to 0110 zwi(:,:,:) = 0._wp111 zwx(:,:,:) = 0._wp112 zwy(:,:,:) = 0._wp113 zwz(:,:,:) = 0._wp114 ztu(:,:,:) = 0._wp115 ztv(:,:,:) = 0._wp116 zltu(:,:,:) = 0._wp117 zltv(:,:,:) = 0._wp118 ztw(:,:,:) = 0._wp101 !! -- init to 0 102 zwi(:,:,:) = 0._wp 103 zwx(:,:,:) = 0._wp 104 zwy(:,:,:) = 0._wp 105 zwz(:,:,:) = 0._wp 106 ztu(:,:,:) = 0._wp 107 ztv(:,:,:) = 0._wp 108 zltu(:,:,:) = 0._wp 109 zltv(:,:,:) = 0._wp 110 ztw(:,:,:) = 0._wp 119 111 ! 120 112 l_trd = .FALSE. ! set local switches … … 127 119 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE. 128 120 ! 129 ! TEMP: This can be ST_2D(nn_hls) after trd_tra is tiled130 IF( kt == kit000 .AND. (l_trd .OR. l_hst) ) THEN131 ALLOCATE( ztrdx(jpi,jpj,jpk), ztrdy(jpi,jpj,jpk), ztrdz(jpi,jpj,jpk) )132 ENDIF133 121 ENDIF 134 122 ! 135 IF( l_ptr ) THEN 123 IF( l_trd .OR. l_hst ) THEN 124 ALLOCATE( ztrdx(ST_2D(nn_hls),jpk), ztrdy(ST_2D(nn_hls),jpk), ztrdz(ST_2D(nn_hls),jpk) ) 125 ztrdx(:,:,:) = 0._wp ; ztrdy(:,:,:) = 0._wp ; ztrdz(:,:,:) = 0._wp 126 ENDIF 127 ! 128 IF( l_ptr ) THEN 136 129 ALLOCATE( zptry(ST_2D(nn_hls),jpk) ) 137 130 zptry(:,:,:) = 0._wp … … 218 211 ! 219 212 END IF 220 ! 221 ! TEMP: This change not necessary after trd_tra is tiled 213 ! 222 214 IF( l_trd .OR. l_hst ) THEN ! trend diagnostics (contribution of upstream fluxes) 223 DO_3D( 1, 0, 1, 0, 1, jpk ) 224 ztrdx(ji,jj,jk) = zwx(ji,jj,jk) ; ztrdy(ji,jj,jk) = zwy(ji,jj,jk) ; ztrdz(ji,jj,jk) = zwz(ji,jj,jk) 225 END_3D 215 ztrdx(:,:,:) = zwx(:,:,:) ; ztrdy(:,:,:) = zwy(:,:,:) ; ztrdz(:,:,:) = zwz(:,:,:) 226 216 END IF 227 217 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) … … 351 341 END IF 352 342 ! 353 ! TEMP: These changes not necessary after trd_tra is tiled354 343 IF( l_trd .OR. l_hst ) THEN ! trend diagnostics // heat/salt transport 355 DO_3D( 1, 0, 1, 0, 1, jpk ) 356 ztrdx(ji,jj,jk) = ztrdx(ji,jj,jk) + zwx(ji,jj,jk) ! <<< add anti-diffusive fluxes 357 ztrdy(ji,jj,jk) = ztrdy(ji,jj,jk) + zwy(ji,jj,jk) ! to upstream fluxes 358 ztrdz(ji,jj,jk) = ztrdz(ji,jj,jk) + zwz(ji,jj,jk) ! 359 END_3D 360 ! 361 IF( ntile == 0 .OR. ntile == nijtile ) THEN ! Do only for the full domain 362 IF( l_trd ) THEN ! trend diagnostics 363 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 ) ! Use full domain 364 365 ! TODO: TO BE TILED- trd_tra 366 CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, ztrdx, pU, pt(:,:,:,jn,Kmm) ) 367 CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, ztrdy, pV, pt(:,:,:,jn,Kmm) ) 368 CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_zad, ztrdz, pW, pt(:,:,:,jn,Kmm) ) 369 370 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = itile ) ! Revert to tile domain 371 ENDIF 344 ztrdx(:,:,:) = ztrdx(:,:,:) + zwx(:,:,:) ! <<< add anti-diffusive fluxes 345 ztrdy(:,:,:) = ztrdy(:,:,:) + zwy(:,:,:) ! to upstream fluxes 346 ztrdz(:,:,:) = ztrdz(:,:,:) + zwz(:,:,:) ! 347 ! 348 IF( l_trd ) THEN ! trend diagnostics 349 CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, ztrdx, pU, pt(:,:,:,jn,Kmm) ) 350 CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, ztrdy, pV, pt(:,:,:,jn,Kmm) ) 351 CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_zad, ztrdz, pW, pt(:,:,:,jn,Kmm) ) 372 352 ENDIF 373 353 ! ! heat/salt transport 374 IF( l_hst ) CALL dia_ar5_hst( jn, 'adv', ztrdx( ST_2D(nn_hls),:), ztrdy(ST_2D(nn_hls),:) )354 IF( l_hst ) CALL dia_ar5_hst( jn, 'adv', ztrdx(:,:,:), ztrdy(:,:,:) ) 375 355 ! 376 356 ENDIF … … 385 365 DEALLOCATE( zwdia, zwinf, zwsup ) 386 366 ENDIF 387 ! TEMP: These changes not necessary after trd_tra is tiled 388 ! IF( l_trd .OR. l_hst ) THEN 389 ! DEALLOCATE( ztrdx, ztrdy, ztrdz ) 390 ! ENDIF 367 IF( l_trd .OR. l_hst ) THEN 368 DEALLOCATE( ztrdx, ztrdy, ztrdz ) 369 ENDIF 391 370 IF( l_ptr ) THEN 392 371 DEALLOCATE( zptry )
Note: See TracChangeset
for help on using the changeset viewer.