- Timestamp:
- 2021-12-03T20:32:50+01:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14318_RK3_stage1
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14318_RK3_stage1
- Property svn:externals
-
old new 9 9 10 10 # SETTE 11 ^/utils/CI/sette@14244 sette 11 ^/utils/CI/sette@HEAD sette 12
-
- Property svn:externals
-
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/TRA/traadv_mus.F90
r15512 r15574 81 81 LOGICAL , INTENT(in ) :: ld_msc_ups ! use upstream scheme within muscl 82 82 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 83 ! TEMP: [tiling] This can be A2D(nn_hls) if using XIOS (subdomain support)83 ! TEMP: [tiling] This can be A2D(nn_hls) after all lbc_lnks removed in the nn_hls = 2 case in tra_adv_fct 84 84 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pU, pV, pW ! 3 ocean volume flux components 85 85 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) :: pt ! tracers and RHS of tracer equation … … 93 93 !!---------------------------------------------------------------------- 94 94 ! 95 IF( ntile == 0.OR. ntile == 1 ) THEN ! Do only on the first tile95 IF( .NOT. l_istiled .OR. ntile == 1 ) THEN ! Do only on the first tile 96 96 IF( kt == kit000 ) THEN 97 97 IF(lwp) WRITE(numout,*) … … 139 139 zwy(ji,jj,jk) = vmask(ji,jj,jk) * ( pt(ji,jj+1,jk,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) 140 140 END_3D 141 ! lateral boundary conditions (changed sign)142 IF ( nn_hls.EQ.1 ) CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp )143 141 ! !-- Slopes of tracer 144 142 zslpx(:,:,jpk) = 0._wp ! bottom values 145 143 zslpy(:,:,jpk) = 0._wp 146 DO_3D( nn_hls-1, 1, nn_hls-1,1, 1, jpkm1 )144 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 147 145 zslpx(ji,jj,jk) = ( zwx(ji,jj,jk) + zwx(ji-1,jj ,jk) ) & 148 146 & * ( 0.25 + SIGN( 0.25_wp, zwx(ji,jj,jk) * zwx(ji-1,jj ,jk) ) ) … … 151 149 END_3D 152 150 ! 153 DO_3D( nn_hls-1, 1, nn_hls-1,1, 1, jpkm1 ) !-- Slopes limitation151 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) !-- Slopes limitation 154 152 zslpx(ji,jj,jk) = SIGN( 1.0_wp, zslpx(ji,jj,jk) ) * MIN( ABS( zslpx(ji ,jj,jk) ), & 155 153 & 2.*ABS( zwx (ji-1,jj,jk) ), & … … 159 157 & 2.*ABS( zwy (ji,jj ,jk) ) ) 160 158 END_3D 161 ! 162 DO_3D( nn_hls-1, 0, nn_hls-1, 0, 1, jpkm1 ) !-- MUSCL horizontal advective fluxes 159 ! NOTE [ comm_cleanup ] : need to change sign to ensure halo 1 - halo 2 compatibility 160 IF ( nn_hls==1 ) CALL lbc_lnk( 'traadv_mus', zslpx, 'T', -1.0_wp , zslpy, 'T', -1.0_wp ) ! lateral boundary conditions (changed sign) 161 ! 162 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) !-- MUSCL horizontal advective fluxes 163 163 ! MUSCL fluxes 164 164 z0u = SIGN( 0.5_wp, pU(ji,jj,jk) ) … … 176 176 zwy(ji,jj,jk) = pV(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 177 177 END_3D 178 IF ( nn_hls.EQ.1 ) CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) ! lateral boundary conditions (changed sign)179 178 ! 180 179 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !-- Tracer advective trend … … 198 197 zwx(:,:, 1 ) = 0._wp ! surface & bottom boundary conditions 199 198 zwx(:,:,jpk) = 0._wp 200 DO_3D( 1, 1, 1, 1, 2, jpkm1 ) ! interior values199 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) ! interior values 201 200 zwx(ji,jj,jk) = tmask(ji,jj,jk) * ( pt(ji,jj,jk-1,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) 202 201 END_3D 203 202 ! !-- Slopes of tracer 204 203 zslpx(:,:,1) = 0._wp ! surface values 205 DO_3D( 1, 1, 1, 1, 2, jpkm1 )204 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 206 205 zslpx(ji,jj,jk) = ( zwx(ji,jj,jk) + zwx(ji,jj,jk+1) ) & 207 206 & * ( 0.25 + SIGN( 0.25_wp, zwx(ji,jj,jk) * zwx(ji,jj,jk+1) ) ) 208 207 END_3D 209 DO_3D( 1, 1, 1, 1, 2, jpkm1 ) !-- Slopes limitation208 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) !-- Slopes limitation 210 209 zslpx(ji,jj,jk) = SIGN( 1.0_wp, zslpx(ji,jj,jk) ) * MIN( ABS( zslpx(ji,jj,jk ) ), & 211 210 & 2.*ABS( zwx (ji,jj,jk+1) ), & … … 222 221 IF( ln_linssh ) THEN ! top values, linear free surface only 223 222 IF( ln_isfcav ) THEN ! ice-shelf cavities (top of the ocean) 224 DO_2D( 1, 1, 1, 1)223 DO_2D( 0, 0, 0, 0 ) 225 224 zwx(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb) 226 225 END_2D 227 226 ELSE ! no cavities: only at the ocean surface 228 DO_2D( 1, 1, 1, 1)227 DO_2D( 0, 0, 0, 0 ) 229 228 zwx(ji,jj,1) = pW(ji,jj,1) * pt(ji,jj,1,jn,Kbb) 230 229 END_2D
Note: See TracChangeset
for help on using the changeset viewer.