Changeset 13237 for NEMO/trunk/src/OCE/TRA
- Timestamp:
- 2020-07-03T11:12:53+02:00 (4 years ago)
- Location:
- NEMO/trunk/src/OCE/TRA
- Files:
-
- 20 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/TRA/eosbn2.F90
r12489 r13237 180 180 !! * Substitutions 181 181 # include "do_loop_substitute.h90" 182 # include "domzgr_substitute.h90" 182 183 !!---------------------------------------------------------------------- 183 184 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/src/OCE/TRA/traadv.F90
r12489 r13237 66 66 INTEGER, PARAMETER :: np_QCK = 5 ! QUICK scheme 67 67 68 # include "domzgr_substitute.h90" 68 69 !!---------------------------------------------------------------------- 69 70 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 98 99 IF( ln_wave .AND. ln_sdw ) THEN 99 100 DO jk = 1, jpkm1 ! eulerian transport + Stokes Drift 100 zuu(:,:,jk) = e2u (:,:) * e3u(:,:,jk,Kmm) * ( uu(:,:,jk,Kmm) + usd(:,:,jk) ) 101 zvv(:,:,jk) = e1v (:,:) * e3v(:,:,jk,Kmm) * ( vv(:,:,jk,Kmm) + vsd(:,:,jk) ) 102 zww(:,:,jk) = e1e2t(:,:) * ( ww(:,:,jk) + wsd(:,:,jk) ) 101 zuu(:,:,jk) = & 102 & e2u (:,:) * e3u(:,:,jk,Kmm) * ( uu(:,:,jk,Kmm) + usd(:,:,jk) ) 103 zvv(:,:,jk) = & 104 & e1v (:,:) * e3v(:,:,jk,Kmm) * ( vv(:,:,jk,Kmm) + vsd(:,:,jk) ) 105 zww(:,:,jk) = & 106 & e1e2t(:,:) * ( ww(:,:,jk) + wsd(:,:,jk) ) 103 107 END DO 104 108 ELSE -
NEMO/trunk/src/OCE/TRA/traadv_cen.F90
r13226 r13237 37 37 !! * Substitutions 38 38 # include "do_loop_substitute.h90" 39 # include "domzgr_substitute.h90" 39 40 !!---------------------------------------------------------------------- 40 41 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 161 162 & - ( zwx(ji,jj,jk) - zwx(ji-1,jj ,jk ) & 162 163 & + zwy(ji,jj,jk) - zwy(ji ,jj-1,jk ) & 163 & + zwz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 164 & + zwz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) & 165 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 164 166 END_3D 165 167 ! ! trend diagnostics -
NEMO/trunk/src/OCE/TRA/traadv_fct.F90
r13226 r13237 46 46 !! * Substitutions 47 47 # include "do_loop_substitute.h90" 48 # include "domzgr_substitute.h90" 48 49 !!---------------------------------------------------------------------- 49 50 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 139 140 ALLOCATE(zwdia(jpi,jpj,jpk), zwinf(jpi,jpj,jpk),zwsup(jpi,jpj,jpk)) 140 141 DO_3D_00_00( 1, jpkm1 ) 141 zwdia(ji,jj,jk) = 1._wp + p2dt * ( MAX( wi(ji,jj,jk ) , 0._wp ) - MIN( wi(ji,jj,jk+1) , 0._wp ) ) / e3t(ji,jj,jk,Krhs) 142 zwdia(ji,jj,jk) = 1._wp + p2dt * ( MAX( wi(ji,jj,jk) , 0._wp ) - MIN( wi(ji,jj,jk+1) , 0._wp ) ) & 143 & / e3t(ji,jj,jk,Krhs) 142 144 zwinf(ji,jj,jk) = p2dt * MIN( wi(ji,jj,jk ) , 0._wp ) / e3t(ji,jj,jk,Krhs) 143 145 zwsup(ji,jj,jk) = -p2dt * MAX( wi(ji,jj,jk+1) , 0._wp ) / e3t(ji,jj,jk,Krhs) … … 180 182 & + zwz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) * r1_e1e2t(ji,jj) 181 183 ! ! update and guess with monotonic sheme 182 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) + ztra / e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 183 zwi(ji,jj,jk) = ( e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) + p2dt * ztra ) / e3t(ji,jj,jk,Krhs) * tmask(ji,jj,jk) 184 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) + ztra & 185 & / e3t(ji,jj,jk,Kmm ) * tmask(ji,jj,jk) 186 zwi(ji,jj,jk) = ( e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) + p2dt * ztra ) & 187 & / e3t(ji,jj,jk,Krhs) * tmask(ji,jj,jk) 184 188 END_3D 185 189 -
NEMO/trunk/src/OCE/TRA/traadv_mus.F90
r13226 r13237 47 47 !! * Substitutions 48 48 # include "do_loop_substitute.h90" 49 # include "domzgr_substitute.h90" 49 50 !!---------------------------------------------------------------------- 50 51 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 227 228 ! 228 229 DO_3D_00_00( 1, jpkm1 ) 229 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 230 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) ) & 231 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 230 232 END_3D 231 233 ! ! send trends for diagnostic -
NEMO/trunk/src/OCE/TRA/traadv_qck.F90
r13226 r13237 41 41 !! * Substitutions 42 42 # include "do_loop_substitute.h90" 43 # include "domzgr_substitute.h90" 43 44 !!---------------------------------------------------------------------- 44 45 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/src/OCE/TRA/traadv_ubs.F90
r13226 r13237 39 39 !! * Substitutions 40 40 # include "do_loop_substitute.h90" 41 # include "domzgr_substitute.h90" 41 42 !!---------------------------------------------------------------------- 42 43 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 82 83 !! 83 84 !! Reference : Shchepetkin, A. F., J. C. McWilliams, 2005, Ocean Modelling, 9, 347-404. 84 !! Farrow, D.E., Stevens, D.P., 1995, J. Phys. Ocean. 25, 1731 Ð1741.85 !! Farrow, D.E., Stevens, D.P., 1995, J. Phys. Ocean. 25, 1731�1741. 85 86 !!---------------------------------------------------------------------- 86 87 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 158 159 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) & 159 160 & - ( ztu(ji,jj,jk) - ztu(ji-1,jj ,jk) & 160 & + ztv(ji,jj,jk) - ztv(ji ,jj-1,jk) ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 161 & + ztv(ji,jj,jk) - ztv(ji ,jj-1,jk) ) & 162 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 161 163 END_2D 162 164 ! … … 202 204 ! 203 205 DO_3D_00_00( 1, jpkm1 ) 204 ztak = - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 206 ztak = - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) & 207 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 205 208 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) + ztak 206 209 zti(ji,jj,jk) = ( pt(ji,jj,jk,jn,Kbb) + p2dt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk) … … 228 231 ! 229 232 DO_3D_00_00( 1, jpkm1 ) 230 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 233 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) & 234 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 231 235 END_3D 232 236 ! -
NEMO/trunk/src/OCE/TRA/traatf.F90
r13226 r13237 58 58 !! * Substitutions 59 59 # include "do_loop_substitute.h90" 60 # include "domzgr_substitute.h90" 60 61 !!---------------------------------------------------------------------- 61 62 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 162 163 ! 163 164 IF( l_trdtra .AND. ln_linssh ) THEN ! trend of the Asselin filter (tb filtered - tb)/dt 164 zfact = 1._wp / rDt165 165 DO jk = 1, jpkm1 166 ztrdt(:,:,jk) = ( pts(:,:,jk,jp_tem,Kmm) - ztrdt(:,:,jk) ) * zfact167 ztrds(:,:,jk) = ( pts(:,:,jk,jp_sal,Kmm) - ztrds(:,:,jk) ) * zfact166 ztrdt(:,:,jk) = ( pts(:,:,jk,jp_tem,Kmm) - ztrdt(:,:,jk) ) * r1_Dt 167 ztrds(:,:,jk) = ( pts(:,:,jk,jp_sal,Kmm) - ztrds(:,:,jk) ) * r1_Dt 168 168 END DO 169 169 CALL trd_tra( kt, Kmm, Kaa, 'TRA', jp_tem, jptra_atf, ztrdt ) … … 229 229 !! 230 230 !! ** Method : - Apply a thickness weighted Asselin time filter on now fields. 231 !! pt(Kmm) = ( e3t (Kmm)*pt(Kmm) + rn_atfp*[ e3t(Kbb)*pt(Kbb) - 2 e3t(Kmm)*pt(Kmm) + e3t_a*pt(Kaa) ] )232 !! /( e3t (Kmm) + rn_atfp*[ e3t(Kbb) - 2 e3t(Kmm) + e3t(Kaa)] )231 !! pt(Kmm) = ( e3t_Kmm*pt(Kmm) + rn_atfp*[ e3t_Kbb*pt(Kbb) - 2 e3t_Kmm*pt(Kmm) + e3t_Kaa*pt(Kaa) ] ) 232 !! /( e3t_Kmm + rn_atfp*[ e3t_Kbb - 2 e3t_Kmm + e3t_Kaa ] ) 233 233 !! 234 234 !! ** Action : - pt(Kmm) ready for the next time step -
NEMO/trunk/src/OCE/TRA/trabbc.F90
r13226 r13237 46 46 !! * Substitutions 47 47 # include "do_loop_substitute.h90" 48 # include "domzgr_substitute.h90" 48 49 !!---------------------------------------------------------------------- 49 50 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 91 92 ! ! Add the geothermal trend on temperature 92 93 DO_2D_00_00 93 pts(ji,jj,mbkt(ji,jj),jp_tem,Krhs) = pts(ji,jj,mbkt(ji,jj),jp_tem,Krhs) + qgh_trd0(ji,jj) / e3t(ji,jj,mbkt(ji,jj),Kmm) 94 pts(ji,jj,mbkt(ji,jj),jp_tem,Krhs) = pts(ji,jj,mbkt(ji,jj),jp_tem,Krhs) & 95 & + qgh_trd0(ji,jj) / e3t(ji,jj,mbkt(ji,jj),Kmm) 94 96 END_2D 95 97 ! -
NEMO/trunk/src/OCE/TRA/trabbl.F90
r13226 r13237 68 68 !! * Substitutions 69 69 # include "do_loop_substitute.h90" 70 # include "domzgr_substitute.h90" 70 71 !!---------------------------------------------------------------------- 71 72 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/src/OCE/TRA/traisf.F90
r12377 r13237 11 11 !!---------------------------------------------------------------------- 12 12 USE isf_oce ! Ice shelf variables 13 USE dom_oce , ONLY : e3t, r1_e1e2t! ocean space domain variables13 USE dom_oce ! ocean space domain variables 14 14 USE isfutils, ONLY : debug ! debug option 15 15 USE timing , ONLY : timing_start, timing_stop ! Timing … … 23 23 !! * Substitutions 24 24 # include "do_loop_substitute.h90" 25 # include "domzgr_substitute.h90" 25 26 !!---------------------------------------------------------------------- 26 27 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 140 141 ! 141 142 DO jk = 1,jpk 142 ptsa(:,:,jk,jp_tem) = ptsa(:,:,jk,jp_tem) + ptsc(:,:,jk,jp_tem) * r1_e1e2t(:,:) / e3t(:,:,jk,Kmm) 143 ptsa(:,:,jk,jp_sal) = ptsa(:,:,jk,jp_sal) + ptsc(:,:,jk,jp_sal) * r1_e1e2t(:,:) / e3t(:,:,jk,Kmm) 143 ptsa(:,:,jk,jp_tem) = & 144 & ptsa(:,:,jk,jp_tem) + ptsc(:,:,jk,jp_tem) * r1_e1e2t(:,:) / e3t(:,:,jk,Kmm) 145 ptsa(:,:,jk,jp_sal) = & 146 & ptsa(:,:,jk,jp_sal) + ptsc(:,:,jk,jp_sal) * r1_e1e2t(:,:) / e3t(:,:,jk,Kmm) 144 147 END DO 145 148 ! -
NEMO/trunk/src/OCE/TRA/traldf_iso.F90
r12489 r13237 41 41 !! * Substitutions 42 42 # include "do_loop_substitute.h90" 43 # include "domzgr_substitute.h90" 43 44 !!---------------------------------------------------------------------- 44 45 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 167 168 IF( ln_traldf_blp ) THEN ! bilaplacian operator 168 169 DO_3D_10_10( 2, jpkm1 ) 169 akz(ji,jj,jk) = 16._wp * ah_wslp2(ji,jj,jk) & 170 & * ( akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 170 akz(ji,jj,jk) = 16._wp & 171 & * ah_wslp2 (ji,jj,jk) & 172 & * ( akz (ji,jj,jk) & 173 & + ah_wslp2(ji,jj,jk) & 174 & / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 171 175 END_3D 172 176 ELSEIF( ln_traldf_lap ) THEN ! laplacian operator … … 247 251 ! 248 252 DO_2D_00_00 249 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk)&250 & 253 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 254 & + zsign * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk) ) & 251 255 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 252 256 END_2D … … 294 298 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 295 299 DO_3D_00_00( 2, jpkm1 ) 296 ztfw(ji,jj,jk) = ztfw(ji,jj,jk)&297 & + ah_wslp2(ji,jj,jk)* e1e2t(ji,jj) &300 ztfw(ji,jj,jk) = & 301 & ztfw(ji,jj,jk) + ah_wslp2(ji,jj,jk) * e1e2t(ji,jj) & 298 302 & * ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) / e3w(ji,jj,jk,Kmm) * wmask(ji,jj,jk) 299 303 END_3D … … 308 312 ! 309 313 DO_3D_00_00( 1, jpkm1 ) 310 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( ztfw (ji,jj,jk) - ztfw(ji,jj,jk+1) ) &311 & * r1_e1e2t(ji,jj)/ e3t(ji,jj,jk,Kmm)314 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( ztfw (ji,jj,jk) - ztfw(ji,jj,jk+1) ) * r1_e1e2t(ji,jj) & 315 & / e3t(ji,jj,jk,Kmm) 312 316 END_3D 313 317 ! -
NEMO/trunk/src/OCE/TRA/traldf_lap_blp.F90
r13226 r13237 38 38 !! * Substitutions 39 39 # include "do_loop_substitute.h90" 40 # include "domzgr_substitute.h90" 40 41 !!---------------------------------------------------------------------- 41 42 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/src/OCE/TRA/traldf_triad.F90
r12489 r13237 41 41 !! * Substitutions 42 42 # include "do_loop_substitute.h90" 43 # include "domzgr_substitute.h90" 43 44 !!---------------------------------------------------------------------- 44 45 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 179 180 IF( ln_traldf_blp ) THEN ! bilaplacian operator 180 181 DO_3D_10_10( 2, jpkm1 ) 181 akz(ji,jj,jk) = 16._wp * ah_wslp2(ji,jj,jk) & 182 & * ( akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 182 akz(ji,jj,jk) = 16._wp & 183 & * ah_wslp2 (ji,jj,jk) & 184 & * ( akz (ji,jj,jk) & 185 & + ah_wslp2(ji,jj,jk) & 186 & / ( e3w (ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 183 187 END_3D 184 188 ELSEIF( ln_traldf_lap ) THEN ! laplacian operator … … 326 330 ! !== horizontal divergence and add to the general trend ==! 327 331 DO_2D_00_00 328 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( zftu(ji-1,jj,jk) - zftu(ji,jj,jk) & 332 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 333 & + zsign * ( zftu(ji-1,jj ,jk) - zftu(ji,jj,jk) & 329 334 & + zftv(ji,jj-1,jk) - zftv(ji,jj,jk) ) & 330 335 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) … … 357 362 ! 358 363 DO_3D_00_00( 1, jpkm1 ) 359 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * ( ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk) ) & 364 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 365 & + zsign * ( ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk) ) & 360 366 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) 361 367 END_3D -
NEMO/trunk/src/OCE/TRA/tramle.F90
r13226 r13237 49 49 !! * Substitutions 50 50 # include "do_loop_substitute.h90" 51 # include "domzgr_substitute.h90" 51 52 !!---------------------------------------------------------------------- 52 53 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/src/OCE/TRA/tranpc.F90
r13226 r13237 35 35 !! * Substitutions 36 36 # include "do_loop_substitute.h90" 37 # include "domzgr_substitute.h90" 37 38 !!---------------------------------------------------------------------- 38 39 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/src/OCE/TRA/traqsr.F90
r13205 r13237 68 68 !! * Substitutions 69 69 # include "do_loop_substitute.h90" 70 # include "domzgr_substitute.h90" 70 71 !!---------------------------------------------------------------------- 71 72 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 266 267 DO_3D_00_00( 1, nksr ) 267 268 pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs) & 268 & + z1_2 * ( qsr_hc_b(ji,jj,jk) + qsr_hc(ji,jj,jk) ) / e3t(ji,jj,jk,Kmm) 269 & + z1_2 * ( qsr_hc_b(ji,jj,jk) + qsr_hc(ji,jj,jk) ) & 270 & / e3t(ji,jj,jk,Kmm) 269 271 END_3D 270 272 ! -
NEMO/trunk/src/OCE/TRA/trasbc.F90
r12489 r13237 43 43 !! * Substitutions 44 44 # include "do_loop_substitute.h90" 45 # include "domzgr_substitute.h90" 45 46 !!---------------------------------------------------------------------- 46 47 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 138 139 DO jn = 1, jpts !== update tracer trend ==! 139 140 DO_2D_01_00 140 pts(ji,jj,1,jn,Krhs) = pts(ji,jj,1,jn,Krhs) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) ) / e3t(ji,jj,1,Kmm) 141 pts(ji,jj,1,jn,Krhs) = pts(ji,jj,1,jn,Krhs) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) ) & 142 & / e3t(ji,jj,1,Kmm) 141 143 END_2D 142 144 END DO -
NEMO/trunk/src/OCE/TRA/trazdf.F90
r13226 r13237 37 37 !! * Substitutions 38 38 # include "do_loop_substitute.h90" 39 # include "domzgr_substitute.h90" 39 40 !!---------------------------------------------------------------------- 40 41 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 84 85 IF( l_trdtra ) THEN ! save the vertical diffusive trends for further diagnostics 85 86 DO jk = 1, jpkm1 86 ztrdt(:,:,jk) = ( ( pts(:,:,jk,jp_tem,Kaa)*e3t(:,:,jk,Kaa) - pts(:,:,jk,jp_tem,Kbb)*e3t(:,:,jk,Kbb) ) & 87 & / (e3t(:,:,jk,Kmm)*rDt) ) - ztrdt(:,:,jk) 88 ztrds(:,:,jk) = ( ( pts(:,:,jk,jp_sal,Kaa)*e3t(:,:,jk,Kaa) - pts(:,:,jk,jp_sal,Kbb)*e3t(:,:,jk,Kbb) ) & 89 & / (e3t(:,:,jk,Kmm)*rDt) ) - ztrds(:,:,jk) 87 ztrdt(:,:,jk) = ( ( pts(:,:,jk,jp_tem,Kaa)*e3t(:,:,jk,Kaa) & 88 & - pts(:,:,jk,jp_tem,Kbb)*e3t(:,:,jk,Kbb) ) & 89 & / ( e3t(:,:,jk,Kmm)*rDt ) ) & 90 & - ztrdt(:,:,jk) 91 ztrds(:,:,jk) = ( ( pts(:,:,jk,jp_sal,Kaa)*e3t(:,:,jk,Kaa) & 92 & - pts(:,:,jk,jp_sal,Kbb)*e3t(:,:,jk,Kbb) ) & 93 & / ( e3t(:,:,jk,Kmm)*rDt ) ) & 94 & - ztrds(:,:,jk) 90 95 END DO 91 96 !!gm this should be moved in trdtra.F90 and done on all trends … … 213 218 ! 214 219 DO_2D_00_00 215 pt(ji,jj,1,jn,Kaa) = e3t(ji,jj,1,Kbb) * pt(ji,jj,1,jn,Kbb) + p2dt * e3t(ji,jj,1,Kmm) * pt(ji,jj,1,jn,Krhs) 220 pt(ji,jj,1,jn,Kaa) = e3t(ji,jj,1,Kbb) * pt(ji,jj,1,jn,Kbb) & 221 & + p2dt * e3t(ji,jj,1,Kmm) * pt(ji,jj,1,jn,Krhs) 216 222 END_2D 217 223 DO_3D_00_00( 2, jpkm1 ) 218 zrhs = e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) + p2dt * e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk,jn,Krhs) ! zrhs=right hand side 224 zrhs = e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) & 225 & + p2dt * e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk,jn,Krhs) ! zrhs=right hand side 219 226 pt(ji,jj,jk,jn,Kaa) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pt(ji,jj,jk-1,jn,Kaa) 220 227 END_3D -
NEMO/trunk/src/OCE/TRA/zpshde.F90
r13226 r13237 32 32 !! * Substitutions 33 33 # include "do_loop_substitute.h90" 34 # include "domzgr_substitute.h90" 34 35 !!---------------------------------------------------------------------- 35 36 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 65 66 !! ___ | | | ___ | | | 66 67 !! 67 !! case 1-> e3w(i+1 ) >= e3w(i) ( and e3w(j+1) >= e3w(j) ) then68 !! t~ = t(i+1,j ,k) + (e3w(i+1 ) - e3w(i)) * dk(Ti+1)/e3w(i+1)69 !! ( t~ = t(i ,j+1,k) + (e3w( j+1) - e3w(j)) * dk(Tj+1)/e3w(j+1) )68 !! case 1-> e3w(i+1,:,:,Kmm) >= e3w(i,:,:,Kmm) ( and e3w(:,j+1,:,Kmm) >= e3w(:,j,:,Kmm) ) then 69 !! t~ = t(i+1,j ,k) + (e3w(i+1,j,k,Kmm) - e3w(i,j,k,Kmm)) * dk(Ti+1)/e3w(i+1,j,k,Kmm) 70 !! ( t~ = t(i ,j+1,k) + (e3w(i,j+1,k,Kmm) - e3w(i,j,k,Kmm)) * dk(Tj+1)/e3w(i,j+1,k,Kmm) ) 70 71 !! or 71 !! case 2-> e3w(i+1 ) <= e3w(i) ( and e3w(j+1) <= e3w(j) ) then72 !! t~ = t(i,j,k) + (e3w(i ) - e3w(i+1)) * dk(Ti)/e3w(i)73 !! ( t~ = t(i,j,k) + (e3w( j) - e3w(j+1)) * dk(Tj)/e3w(j) )72 !! case 2-> e3w(i+1,:,:,Kmm) <= e3w(i,:,:,Kmm) ( and e3w(:,j+1,:,Kmm) <= e3w(:,j,:,Kmm) ) then 73 !! t~ = t(i,j,k) + (e3w(i,j,k,Kmm) - e3w(i+1,j,k,Kmm)) * dk(Ti)/e3w(i,j,k,Kmm) 74 !! ( t~ = t(i,j,k) + (e3w(i,j,k,Kmm) - e3w(i,j+1,k,Kmm)) * dk(Tj)/e3w(i,j,k,Kmm) ) 74 75 !! Idem for di(s) and dj(s) 75 76 !! … … 109 110 iku = mbku(ji,jj) ; ikum1 = MAX( iku - 1 , 1 ) ! last and before last ocean level at u- & v-points 110 111 ikv = mbkv(ji,jj) ; ikvm1 = MAX( ikv - 1 , 1 ) ! if level first is a p-step, ik.m1=1 111 !!gm BUG ? when applied to before fields, e3w(:,:, :,Kbb) should be used....112 !!gm BUG ? when applied to before fields, e3w(:,:,k,Kbb) should be used.... 112 113 ze3wu = e3w(ji+1,jj ,iku,Kmm) - e3w(ji,jj,iku,Kmm) 113 114 ze3wv = e3w(ji ,jj+1,ikv,Kmm) - e3w(ji,jj,ikv,Kmm) … … 214 215 !! ___ | | | ___ | | | 215 216 !! 216 !! case 1-> e3w(i+1 ) >= e3w(i) ( and e3w(j+1) >= e3w(j) ) then217 !! t~ = t(i+1,j ,k) + (e3w(i+1 ) - e3w(i)) * dk(Ti+1)/e3w(i+1)218 !! ( t~ = t(i ,j+1,k) + (e3w( j+1) - e3w(j)) * dk(Tj+1)/e3w(j+1) )217 !! case 1-> e3w(i+1,j,k,Kmm) >= e3w(i,j,k,Kmm) ( and e3w(i,j+1,k,Kmm) >= e3w(i,j,k,Kmm) ) then 218 !! t~ = t(i+1,j ,k) + (e3w(i+1,j ,k,Kmm) - e3w(i,j,k,Kmm)) * dk(Ti+1)/e3w(i+1,j ,k,Kmm) 219 !! ( t~ = t(i ,j+1,k) + (e3w(i ,j+1,k,Kmm) - e3w(i,j,k,Kmm)) * dk(Tj+1)/e3w(i ,j+1,k,Kmm) ) 219 220 !! or 220 !! case 2-> e3w(i+1 ) <= e3w(i) ( and e3w(j+1) <= e3w(j) ) then221 !! t~ = t(i,j,k) + (e3w(i ) - e3w(i+1)) * dk(Ti)/e3w(i)222 !! ( t~ = t(i,j,k) + (e3w( j) - e3w(j+1)) * dk(Tj)/e3w(j) )221 !! case 2-> e3w(i+1,j,k,Kmm) <= e3w(i,j,k,Kmm) ( and e3w(i,j+1,k,Kmm) <= e3w(i,j,k,Kmm) ) then 222 !! t~ = t(i,j,k) + (e3w(i,j,k,Kmm) - e3w(i+1,j ,k,Kmm)) * dk(Ti)/e3w(i,j,k,Kmm) 223 !! ( t~ = t(i,j,k) + (e3w(i,j,k,Kmm) - e3w(i ,j+1,k,Kmm)) * dk(Tj)/e3w(i,j,k,Kmm) ) 223 224 !! Idem for di(s) and dj(s) 224 225 !! … … 356 357 ! (ISF) case partial step top and bottom in adjacent cell in vertical 357 358 ! cannot used e3w because if 2 cell water column, we have ps at top and bottom 358 ! in this case e3w(i,j ) - e3w(i,j+1) is not the distance between Tj~ and Tj359 ! in this case e3w(i,j,k,Kmm) - e3w(i,j+1,k,Kmm) is not the distance between Tj~ and Tj 359 360 ! the only common depth between cells (i,j) and (i,j+1) is gdepw_0 360 361 ze3wu = gdept(ji,jj,iku,Kmm) - gdept(ji+1,jj,iku,Kmm)
Note: See TracChangeset
for help on using the changeset viewer.