Changeset 10893 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_mus.F90
- Timestamp:
- 2019-04-25T12:05:42+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_mus.F90
r10880 r10893 54 54 CONTAINS 55 55 56 SUBROUTINE tra_adv_mus( kt, kit000, cdtype, p2dt, p u_mm, pv_mm, pww, &56 SUBROUTINE tra_adv_mus( kt, kit000, cdtype, p2dt, pU, pV, pW, & 57 57 & Kbb, Kmm, pt, kjpt, Krhs, ld_msc_ups ) 58 58 !!---------------------------------------------------------------------- … … 80 80 LOGICAL , INTENT(in ) :: ld_msc_ups ! use upstream scheme within muscl 81 81 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 82 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: p u_mm, pv_mm, pww ! 3 ocean velocitycomponents83 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) :: pt ! activetracers and RHS of tracer equation82 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pU, pV, pW ! 3 ocean volume flux components 83 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) :: pt ! tracers and RHS of tracer equation 84 84 ! 85 85 INTEGER :: ji, jj, jk, jn ! dummy loop indices … … 172 172 DO ji = fs_2, fs_jpim1 ! vector opt. 173 173 ! MUSCL fluxes 174 z0u = SIGN( 0.5, p u_mm(ji,jj,jk) )174 z0u = SIGN( 0.5, pU(ji,jj,jk) ) 175 175 zalpha = 0.5 - z0u 176 zu = z0u - 0.5 * p u_mm(ji,jj,jk) * p2dt * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,Kmm)176 zu = z0u - 0.5 * pU(ji,jj,jk) * p2dt * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,Kmm) 177 177 zzwx = pt(ji+1,jj,jk,jn,Kbb) + xind(ji,jj,jk) * zu * zslpx(ji+1,jj,jk) 178 178 zzwy = pt(ji ,jj,jk,jn,Kbb) + xind(ji,jj,jk) * zu * zslpx(ji ,jj,jk) 179 zwx(ji,jj,jk) = p u_mm(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy )179 zwx(ji,jj,jk) = pU(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 180 180 ! 181 z0v = SIGN( 0.5, p v_mm(ji,jj,jk) )181 z0v = SIGN( 0.5, pV(ji,jj,jk) ) 182 182 zalpha = 0.5 - z0v 183 zv = z0v - 0.5 * p v_mm(ji,jj,jk) * p2dt * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,Kmm)183 zv = z0v - 0.5 * pV(ji,jj,jk) * p2dt * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,Kmm) 184 184 zzwx = pt(ji,jj+1,jk,jn,Kbb) + xind(ji,jj,jk) * zv * zslpy(ji,jj+1,jk) 185 185 zzwy = pt(ji,jj ,jk,jn,Kbb) + xind(ji,jj,jk) * zv * zslpy(ji,jj ,jk) 186 zwy(ji,jj,jk) = p v_mm(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy )186 zwy(ji,jj,jk) = pV(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 187 187 END DO 188 188 END DO … … 201 201 ! ! trend diagnostics 202 202 IF( l_trd ) THEN 203 CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, p u_mm, pt(:,:,:,jn,Kbb) )204 CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, p v_mm, pt(:,:,:,jn,Kbb) )203 CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kbb) ) 204 CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kbb) ) 205 205 END IF 206 206 ! ! "Poleward" heat and salt transports … … 239 239 DO jj = 2, jpjm1 240 240 DO ji = fs_2, fs_jpim1 ! vector opt. 241 z0w = SIGN( 0.5, p ww(ji,jj,jk+1) )241 z0w = SIGN( 0.5, pW(ji,jj,jk+1) ) 242 242 zalpha = 0.5 + z0w 243 zw = z0w - 0.5 * p ww(ji,jj,jk+1) * p2dt * r1_e1e2t(ji,jj) / e3w(ji,jj,jk+1,Kmm)243 zw = z0w - 0.5 * pW(ji,jj,jk+1) * p2dt * r1_e1e2t(ji,jj) / e3w(ji,jj,jk+1,Kmm) 244 244 zzwx = pt(ji,jj,jk+1,jn,Kbb) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk+1) 245 245 zzwy = pt(ji,jj,jk ,jn,Kbb) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk ) 246 zwx(ji,jj,jk+1) = p ww(ji,jj,jk+1) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) * wmask(ji,jj,jk)246 zwx(ji,jj,jk+1) = pW(ji,jj,jk+1) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) * wmask(ji,jj,jk) 247 247 END DO 248 248 END DO … … 252 252 DO jj = 1, jpj 253 253 DO ji = 1, jpi 254 zwx(ji,jj, mikt(ji,jj) ) = p ww(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)254 zwx(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb) 255 255 END DO 256 256 END DO 257 257 ELSE ! no cavities: only at the ocean surface 258 zwx(:,:,1) = p ww(:,:,1) * pt(:,:,1,jn,Kbb)258 zwx(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kbb) 259 259 ENDIF 260 260 ENDIF … … 268 268 END DO 269 269 ! ! send trends for diagnostic 270 IF( l_trd ) CALL trd_tra( kt, cdtype, jn, jptra_zad, zwx, p ww, pt(:,:,:,jn,Kbb) )270 IF( l_trd ) CALL trd_tra( kt, cdtype, jn, jptra_zad, zwx, pW, pt(:,:,:,jn,Kbb) ) 271 271 ! 272 272 END DO ! end of tracer loop
Note: See TracChangeset
for help on using the changeset viewer.