Changeset 10893 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_fct.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_fct.F90
r10880 r10893 52 52 CONTAINS 53 53 54 SUBROUTINE tra_adv_fct( kt, kit000, cdtype, p2dt, p u_mm, pv_mm, pww, &54 SUBROUTINE tra_adv_fct( kt, kit000, cdtype, p2dt, pU, pV, pW, & 55 55 & Kbb, Kmm, pt, kjpt, Krhs, kn_fct_h, kn_fct_v ) 56 56 !!---------------------------------------------------------------------- … … 77 77 INTEGER , INTENT(in ) :: kn_fct_v ! order of the FCT scheme (=2 or 4) 78 78 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 79 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: p u_mm, pv_mm, pww ! 3 ocean velocitycomponents80 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) :: pt ! activetracers and RHS of tracer equation79 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pU, pV, pW ! 3 ocean volume flux components 80 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) :: pt ! tracers and RHS of tracer equation 81 81 ! 82 82 INTEGER :: ji, jj, jk, jn ! dummy loop indices … … 125 125 DO ji = 1, fs_jpim1 ! vector opt. 126 126 ! upstream scheme 127 zfp_ui = p u_mm(ji,jj,jk) + ABS( pu_mm(ji,jj,jk) )128 zfm_ui = p u_mm(ji,jj,jk) - ABS( pu_mm(ji,jj,jk) )129 zfp_vj = p v_mm(ji,jj,jk) + ABS( pv_mm(ji,jj,jk) )130 zfm_vj = p v_mm(ji,jj,jk) - ABS( pv_mm(ji,jj,jk) )127 zfp_ui = pU(ji,jj,jk) + ABS( pU(ji,jj,jk) ) 128 zfm_ui = pU(ji,jj,jk) - ABS( pU(ji,jj,jk) ) 129 zfp_vj = pV(ji,jj,jk) + ABS( pV(ji,jj,jk) ) 130 zfm_vj = pV(ji,jj,jk) - ABS( pV(ji,jj,jk) ) 131 131 zwx(ji,jj,jk) = 0.5 * ( zfp_ui * pt(ji,jj,jk,jn,Kbb) + zfm_ui * pt(ji+1,jj ,jk,jn,Kbb) ) 132 132 zwy(ji,jj,jk) = 0.5 * ( zfp_vj * pt(ji,jj,jk,jn,Kbb) + zfm_vj * pt(ji ,jj+1,jk,jn,Kbb) ) … … 138 138 DO jj = 1, jpj 139 139 DO ji = 1, jpi 140 zfp_wk = p ww(ji,jj,jk) + ABS( pww(ji,jj,jk) )141 zfm_wk = p ww(ji,jj,jk) - ABS( pww(ji,jj,jk) )140 zfp_wk = pW(ji,jj,jk) + ABS( pW(ji,jj,jk) ) 141 zfm_wk = pW(ji,jj,jk) - ABS( pW(ji,jj,jk) ) 142 142 zwz(ji,jj,jk) = 0.5 * ( zfp_wk * pt(ji,jj,jk,jn,Kbb) + zfm_wk * pt(ji,jj,jk-1,jn,Kbb) ) * wmask(ji,jj,jk) 143 143 END DO … … 148 148 DO jj = 1, jpj 149 149 DO ji = 1, jpi 150 zwz(ji,jj, mikt(ji,jj) ) = p ww(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb) ! linear free surface150 zwz(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb) ! linear free surface 151 151 END DO 152 152 END DO 153 153 ELSE ! no cavities: only at the ocean surface 154 zwz(:,:,1) = p ww(:,:,1) * pt(:,:,1,jn,Kbb)154 zwz(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kbb) 155 155 ENDIF 156 156 ENDIF … … 184 184 DO jj = 1, jpjm1 185 185 DO ji = 1, fs_jpim1 ! vector opt. 186 zwx(ji,jj,jk) = 0.5_wp * p u_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj,jk,jn,Kmm) ) - zwx(ji,jj,jk)187 zwy(ji,jj,jk) = 0.5_wp * p v_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj+1,jk,jn,Kmm) ) - zwy(ji,jj,jk)186 zwx(ji,jj,jk) = 0.5_wp * pU(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj,jk,jn,Kmm) ) - zwx(ji,jj,jk) 187 zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj+1,jk,jn,Kmm) ) - zwy(ji,jj,jk) 188 188 END DO 189 189 END DO … … 215 215 zC2t_v = pt(ji,jj,jk,jn,Kmm) + pt(ji ,jj+1,jk,jn,Kmm) 216 216 ! ! C4 minus upstream advective fluxes 217 zwx(ji,jj,jk) = 0.5_wp * p u_mm(ji,jj,jk) * ( zC2t_u + zltu(ji,jj,jk) - zltu(ji+1,jj,jk) ) - zwx(ji,jj,jk)218 zwy(ji,jj,jk) = 0.5_wp * p v_mm(ji,jj,jk) * ( zC2t_v + zltv(ji,jj,jk) - zltv(ji,jj+1,jk) ) - zwy(ji,jj,jk)217 zwx(ji,jj,jk) = 0.5_wp * pU(ji,jj,jk) * ( zC2t_u + zltu(ji,jj,jk) - zltu(ji+1,jj,jk) ) - zwx(ji,jj,jk) 218 zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * ( zC2t_v + zltv(ji,jj,jk) - zltv(ji,jj+1,jk) ) - zwy(ji,jj,jk) 219 219 END DO 220 220 END DO … … 243 243 zC4t_v = zC2t_v + r1_6 * ( ztv(ji ,jj-1,jk) - ztv(ji ,jj+1,jk) ) 244 244 ! ! C4 minus upstream advective fluxes 245 zwx(ji,jj,jk) = 0.5_wp * p u_mm(ji,jj,jk) * zC4t_u - zwx(ji,jj,jk)246 zwy(ji,jj,jk) = 0.5_wp * p v_mm(ji,jj,jk) * zC4t_v - zwy(ji,jj,jk)245 zwx(ji,jj,jk) = 0.5_wp * pU(ji,jj,jk) * zC4t_u - zwx(ji,jj,jk) 246 zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * zC4t_v - zwy(ji,jj,jk) 247 247 END DO 248 248 END DO … … 257 257 DO jj = 2, jpjm1 258 258 DO ji = fs_2, fs_jpim1 259 zwz(ji,jj,jk) = ( p ww(ji,jj,jk) * 0.5_wp * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) ) &259 zwz(ji,jj,jk) = ( pW(ji,jj,jk) * 0.5_wp * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) ) & 260 260 & - zwz(ji,jj,jk) ) * wmask(ji,jj,jk) 261 261 END DO … … 268 268 DO jj = 2, jpjm1 269 269 DO ji = fs_2, fs_jpim1 270 zwz(ji,jj,jk) = ( p ww(ji,jj,jk) * ztw(ji,jj,jk) - zwz(ji,jj,jk) ) * wmask(ji,jj,jk)270 zwz(ji,jj,jk) = ( pW(ji,jj,jk) * ztw(ji,jj,jk) - zwz(ji,jj,jk) ) * wmask(ji,jj,jk) 271 271 END DO 272 272 END DO … … 303 303 ! 304 304 IF( l_trd ) THEN ! trend diagnostics 305 CALL trd_tra( kt, cdtype, jn, jptra_xad, ztrdx, p u_mm, pt(:,:,:,jn,Kmm) )306 CALL trd_tra( kt, cdtype, jn, jptra_yad, ztrdy, p v_mm, pt(:,:,:,jn,Kmm) )307 CALL trd_tra( kt, cdtype, jn, jptra_zad, ztrdz, p ww, pt(:,:,:,jn,Kmm) )305 CALL trd_tra( kt, cdtype, jn, jptra_xad, ztrdx, pU, pt(:,:,:,jn,Kmm) ) 306 CALL trd_tra( kt, cdtype, jn, jptra_yad, ztrdy, pV, pt(:,:,:,jn,Kmm) ) 307 CALL trd_tra( kt, cdtype, jn, jptra_zad, ztrdz, pW, pt(:,:,:,jn,Kmm) ) 308 308 ENDIF 309 309 ! ! heat/salt transport
Note: See TracChangeset
for help on using the changeset viewer.