Changeset 12765 for NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/TRA/traldf_iso.F90
- Timestamp:
- 2020-04-17T14:45:04+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/TRA/traldf_iso.F90
r12489 r12765 36 36 PUBLIC tra_ldf_iso ! routine called by step.F90 37 37 38 LOGICAL :: l_ptr ! flag to compute poleward transport39 LOGICAL :: l_hst ! flag to compute heat transport40 41 38 !! * Substitutions 42 39 # include "do_loop_substitute.h90" … … 104 101 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) :: pt_rhs ! tracer trend 105 102 ! 103 LOGICAL :: l_ptr ! flag to compute poleward transport 104 LOGICAL :: l_hst ! flag to compute heat transport 106 105 INTEGER :: ji, jj, jk, jn ! dummy loop indices 107 106 INTEGER :: ikt … … 110 109 REAL(wp) :: zmskv, zahv_w, zabe2, zcof2, zcoef4 ! - - 111 110 REAL(wp) :: zcoef0, ze3w_2, zsign ! - - 112 REAL(wp), DIMENSION( jpi,jpj) :: zdkt, zdk1t, z2d113 REAL(wp), DIMENSION( jpi,jpj,jpk) :: zdit, zdjt, zftu, zftv, ztfw111 REAL(wp), DIMENSION(IND_2D) :: zdkt, zdk1t, z2d 112 REAL(wp), DIMENSION(IND_2D,jpk) :: zdit, zdjt, zftu, zftv, ztfw 114 113 !!---------------------------------------------------------------------- 115 114 ! 116 115 IF( kpass == 1 .AND. kt == kit000 ) THEN 117 IF(lwp) WRITE(numout,*) 118 IF(lwp) WRITE(numout,*) 'tra_ldf_iso : rotated laplacian diffusion operator on ', cdtype 119 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 120 ! 121 akz (:,:,:) = 0._wp 122 ah_wslp2(:,:,:) = 0._wp 116 IF( ntile == 1 ) THEN ! Do only on the first tile 117 ! TODO: TO BE TILED 118 IF(lwp) WRITE(numout,*) 119 IF(lwp) WRITE(numout,*) 'tra_ldf_iso : rotated laplacian diffusion operator on ', cdtype 120 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 121 ENDIF 122 ! 123 DO_3D_11_11( 1, jpk ) 124 akz (ji,jj,jk) = 0._wp 125 ah_wslp2(ji,jj,jk) = 0._wp 126 END_3D 123 127 ENDIF 124 128 ! … … 179 183 ! 180 184 ELSE ! 33 flux set to zero with akz=ah_wslp2 ==>> computed in full implicit 181 akz(:,:,:) = ah_wslp2(:,:,:) 185 DO_3D_11_11( 1, jpk ) 186 akz(ji,jj,jk) = ah_wslp2(ji,jj,jk) 187 END_3D 182 188 ENDIF 183 189 ENDIF … … 219 225 DO jk = 1, jpkm1 ! Horizontal slab 220 226 ! 221 ! !== Vertical tracer gradient 222 zdk1t(:,:) = ( pt(:,:,jk,jn) - pt(:,:,jk+1,jn) ) * wmask(:,:,jk+1) ! level jk+1 223 ! 224 IF( jk == 1 ) THEN ; zdkt(:,:) = zdk1t(:,:) ! surface: zdkt(jk=1)=zdkt(jk=2) 225 ELSE ; zdkt(:,:) = ( pt(:,:,jk-1,jn) - pt(:,:,jk,jn) ) * wmask(:,:,jk) 226 ENDIF 227 DO_2D_11_11 228 ! !== Vertical tracer gradient 229 zdk1t(ji,jj) = ( pt(ji,jj,jk,jn) - pt(ji,jj,jk+1,jn) ) * wmask(ji,jj,jk+1) ! level jk+1 230 ! 231 IF( jk == 1 ) THEN ; zdkt(ji,jj) = zdk1t(ji,jj) ! surface: zdkt(jk=1)=zdkt(jk=2) 232 ELSE ; zdkt(ji,jj) = ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) * wmask(ji,jj,jk) 233 ENDIF 234 END_2D 235 ! 227 236 DO_2D_10_10 228 237 zabe1 = pahu(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm) … … 312 321 END_3D 313 322 ! 314 IF( ( kpass == 1 .AND. ln_traldf_lap ) .OR. & !== first pass only ( laplacian) ==! 315 ( kpass == 2 .AND. ln_traldf_blp ) ) THEN !== 2nd pass (bilaplacian) ==! 316 ! 317 ! ! "Poleward" diffusive heat or salt transports (T-S case only) 318 ! note sign is reversed to give down-gradient diffusive transports ) 319 IF( l_ptr ) CALL dia_ptr_hst( jn, 'ldf', -zftv(:,:,:) ) 320 ! ! Diffusive heat transports 321 IF( l_hst ) CALL dia_ar5_hst( jn, 'ldf', -zftu(:,:,:), -zftv(:,:,:) ) 322 ! 323 ENDIF !== end pass selection ==! 323 IF( ntile == jpnijtile ) THEN ! Do only after all tiles finish 324 IF( ( kpass == 1 .AND. ln_traldf_lap ) .OR. & !== first pass only ( laplacian) ==! 325 ( kpass == 2 .AND. ln_traldf_blp ) ) THEN !== 2nd pass (bilaplacian) ==! 326 ! 327 ! ! "Poleward" diffusive heat or salt transports (T-S case only) 328 ! note sign is reversed to give down-gradient diffusive transports ) 329 ! TODO: TO BE TILED 330 IF( l_ptr ) CALL dia_ptr_hst( jn, 'ldf', -zftv(:,:,:) ) 331 ! ! Diffusive heat transports 332 ! TODO: TO BE TILED 333 IF( l_hst ) CALL dia_ar5_hst( jn, 'ldf', -zftu(:,:,:), -zftv(:,:,:) ) 334 ! 335 ENDIF !== end pass selection ==! 336 ENDIF 324 337 ! 325 338 ! ! ===============
Note: See TracChangeset
for help on using the changeset viewer.