Changeset 10874 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynvor.F90
- Timestamp:
- 2019-04-15T15:57:37+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/DYN/dynvor.F90
r10806 r10874 96 96 CONTAINS 97 97 98 SUBROUTINE dyn_vor( kt , ktlev, pu_rhs, pv_rhs)98 SUBROUTINE dyn_vor( kt ) 99 99 !!---------------------------------------------------------------------- 100 100 !! 101 101 !! ** Purpose : compute the lateral ocean tracer physics. 102 102 !! 103 !! ** Action : - Update ( pu_rhs,pv_rhs) with the now vorticity term trend103 !! ** Action : - Update (ua,va) with the now vorticity term trend 104 104 !! - save the trends in (ztrdu,ztrdv) in 2 parts (relative 105 105 !! and planetary vorticity trends) and send them to trd_dyn 106 106 !! for futher diagnostics (l_trddyn=T) 107 107 !!---------------------------------------------------------------------- 108 INTEGER, INTENT( in ) :: kt ! ocean time-step index 109 INTEGER, INTENT( in ) :: ktlev ! time level index for source terms 110 REAL(wp), INTENT( inout), DIMENSION(jpi,jpj,jpk) :: pu_rhs, pv_rhs ! momentum trends 108 INTEGER, INTENT( in ) :: kt ! ocean time-step index 111 109 ! 112 110 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdu, ztrdv … … 119 117 ALLOCATE( ztrdu(jpi,jpj,jpk), ztrdv(jpi,jpj,jpk) ) 120 118 ! 121 ztrdu(:,:,:) = pu_rhs(:,:,:) !* planetary vorticity trend (including Stokes-Coriolis force)122 ztrdv(:,:,:) = pv_rhs(:,:,:)119 ztrdu(:,:,:) = ua(:,:,:) !* planetary vorticity trend (including Stokes-Coriolis force) 120 ztrdv(:,:,:) = va(:,:,:) 123 121 SELECT CASE( nvor_scheme ) 124 CASE( np_ENS ) ; CALL vor_ens( kt, ktlev, ncor, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! enstrophy conserving scheme125 IF( ln_stcor ) CALL vor_ens( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend126 CASE( np_ENE, np_MIX ) ; CALL vor_ene( kt, ktlev, ncor, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! energy conserving scheme127 IF( ln_stcor ) CALL vor_ene( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend128 CASE( np_ENT ) ; CALL vor_enT( kt, ktlev, ncor, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! energy conserving scheme (T-pts)129 IF( ln_stcor ) CALL vor_enT( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend130 CASE( np_EET ) ; CALL vor_eeT( kt, ktlev, ncor, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! energy conserving scheme (een with e3t)131 IF( ln_stcor ) CALL vor_eeT( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend132 CASE( np_EEN ) ; CALL vor_een( kt, ktlev, ncor, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! energy & enstrophy scheme133 IF( ln_stcor ) CALL vor_een( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend122 CASE( np_ENS ) ; CALL vor_ens( kt, ncor, un , vn , ua, va ) ! enstrophy conserving scheme 123 IF( ln_stcor ) CALL vor_ens( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 124 CASE( np_ENE, np_MIX ) ; CALL vor_ene( kt, ncor, un , vn , ua, va ) ! energy conserving scheme 125 IF( ln_stcor ) CALL vor_ene( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 126 CASE( np_ENT ) ; CALL vor_enT( kt, ncor, un , vn , ua, va ) ! energy conserving scheme (T-pts) 127 IF( ln_stcor ) CALL vor_enT( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 128 CASE( np_EET ) ; CALL vor_eeT( kt, ncor, un , vn , ua, va ) ! energy conserving scheme (een with e3t) 129 IF( ln_stcor ) CALL vor_eeT( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 130 CASE( np_EEN ) ; CALL vor_een( kt, ncor, un , vn , ua, va ) ! energy & enstrophy scheme 131 IF( ln_stcor ) CALL vor_een( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 134 132 END SELECT 135 ztrdu(:,:,:) = pu_rhs(:,:,:) - ztrdu(:,:,:)136 ztrdv(:,:,:) = pv_rhs(:,:,:) - ztrdv(:,:,:)133 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 134 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 137 135 CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 138 136 ! 139 137 IF( n_dynadv /= np_LIN_dyn ) THEN !* relative vorticity or metric trend (only in non-linear case) 140 ztrdu(:,:,:) = pu_rhs(:,:,:)141 ztrdv(:,:,:) = pv_rhs(:,:,:)138 ztrdu(:,:,:) = ua(:,:,:) 139 ztrdv(:,:,:) = va(:,:,:) 142 140 SELECT CASE( nvor_scheme ) 143 CASE( np_ENT ) ; CALL vor_enT( kt, ktlev, nrvm, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! energy conserving scheme (T-pts)144 CASE( np_EET ) ; CALL vor_eeT( kt, ktlev, nrvm, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! energy conserving scheme (een with e3t)145 CASE( np_ENE ) ; CALL vor_ene( kt, ktlev, nrvm, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! energy conserving scheme146 CASE( np_ENS, np_MIX ) ; CALL vor_ens( kt, ktlev, nrvm, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! enstrophy conserving scheme147 CASE( np_EEN ) ; CALL vor_een( kt, ktlev, nrvm, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! energy & enstrophy scheme141 CASE( np_ENT ) ; CALL vor_enT( kt, nrvm, un , vn , ua, va ) ! energy conserving scheme (T-pts) 142 CASE( np_EET ) ; CALL vor_eeT( kt, nrvm, un , vn , ua, va ) ! energy conserving scheme (een with e3t) 143 CASE( np_ENE ) ; CALL vor_ene( kt, nrvm, un , vn , ua, va ) ! energy conserving scheme 144 CASE( np_ENS, np_MIX ) ; CALL vor_ens( kt, nrvm, un , vn , ua, va ) ! enstrophy conserving scheme 145 CASE( np_EEN ) ; CALL vor_een( kt, nrvm, un , vn , ua, va ) ! energy & enstrophy scheme 148 146 END SELECT 149 ztrdu(:,:,:) = pu_rhs(:,:,:) - ztrdu(:,:,:)150 ztrdv(:,:,:) = pv_rhs(:,:,:) - ztrdv(:,:,:)147 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 148 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 151 149 CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 152 150 ENDIF … … 158 156 SELECT CASE ( nvor_scheme ) !== vorticity trend added to the general trend ==! 159 157 CASE( np_ENT ) !* energy conserving scheme (T-pts) 160 CALL vor_enT( kt, ktlev, ntot, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! total vorticity trend161 IF( ln_stcor ) CALL vor_enT( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend158 CALL vor_enT( kt, ntot, un , vn , ua, va ) ! total vorticity trend 159 IF( ln_stcor ) CALL vor_enT( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 162 160 CASE( np_EET ) !* energy conserving scheme (een scheme using e3t) 163 CALL vor_eeT( kt, ktlev, ntot, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! total vorticity trend164 IF( ln_stcor ) CALL vor_eeT( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend161 CALL vor_eeT( kt, ntot, un , vn , ua, va ) ! total vorticity trend 162 IF( ln_stcor ) CALL vor_eeT( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 165 163 CASE( np_ENE ) !* energy conserving scheme 166 CALL vor_ene( kt, ktlev, ntot, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! total vorticity trend167 IF( ln_stcor ) CALL vor_ene( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend164 CALL vor_ene( kt, ntot, un , vn , ua, va ) ! total vorticity trend 165 IF( ln_stcor ) CALL vor_ene( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 168 166 CASE( np_ENS ) !* enstrophy conserving scheme 169 CALL vor_ens( kt, ktlev, ntot, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! total vorticity trend170 IF( ln_stcor ) CALL vor_ens( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend167 CALL vor_ens( kt, ntot, un , vn , ua, va ) ! total vorticity trend 168 IF( ln_stcor ) CALL vor_ens( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 171 169 CASE( np_MIX ) !* mixed ene-ens scheme 172 CALL vor_ens( kt, ktlev, nrvm, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! relative vorticity or metric trend (ens)173 CALL vor_ene( kt, ktlev, ncor, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! planetary vorticity trend (ene)174 IF( ln_stcor ) CALL vor_ene( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend170 CALL vor_ens( kt, nrvm, un , vn , ua, va ) ! relative vorticity or metric trend (ens) 171 CALL vor_ene( kt, ncor, un , vn , ua, va ) ! planetary vorticity trend (ene) 172 IF( ln_stcor ) CALL vor_ene( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 175 173 CASE( np_EEN ) !* energy and enstrophy conserving scheme 176 CALL vor_een( kt, ktlev, ntot, uu(:,:,:,ktlev) , vv(:,:,:,ktlev) , pu_rhs, pv_rhs) ! total vorticity trend177 IF( ln_stcor ) CALL vor_een( kt, ktlev, ncor, usd, vsd, pu_rhs, pv_rhs) ! add the Stokes-Coriolis trend174 CALL vor_een( kt, ntot, un , vn , ua, va ) ! total vorticity trend 175 IF( ln_stcor ) CALL vor_een( kt, ncor, usd, vsd, ua, va ) ! add the Stokes-Coriolis trend 178 176 END SELECT 179 177 ! … … 189 187 190 188 191 SUBROUTINE vor_enT( kt, k tlev, kvor, pu, pv, pu_rhs, pv_rhs )189 SUBROUTINE vor_enT( kt, kvor, pu, pv, pu_rhs, pv_rhs ) 192 190 !!---------------------------------------------------------------------- 193 191 !! *** ROUTINE vor_enT *** … … 205 203 !! where rvor is the relative vorticity at f-point 206 204 !! 207 !! ** Action : - Update (u _rhs,v_rhs) with the now vorticity term trend205 !! ** Action : - Update (ua,va) with the now vorticity term trend 208 206 !!---------------------------------------------------------------------- 209 207 INTEGER , INTENT(in ) :: kt ! ocean time-step index 210 INTEGER , INTENT( in ) :: ktlev ! time level index for source terms211 208 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 212 209 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu, pv ! now velocities … … 273 270 SELECT CASE( kvor ) !== volume weighted vorticity considered ==! 274 271 CASE ( np_COR ) !* Coriolis (planetary vorticity) 275 zwt(:,:) = ff_t(:,:) * e1e2t(:,:)*e3t (:,:,jk,ktlev)272 zwt(:,:) = ff_t(:,:) * e1e2t(:,:)*e3t_n(:,:,jk) 276 273 CASE ( np_RVO ) !* relative vorticity 277 274 DO jj = 2, jpj 278 275 DO ji = 2, jpi ! vector opt. 279 276 zwt(ji,jj) = r1_4 * ( zwz(ji-1,jj ,jk) + zwz(ji,jj ,jk) & 280 & + zwz(ji-1,jj-1,jk) + zwz(ji,jj-1,jk) ) * e1e2t(ji,jj)*e3t (ji,jj,jk,ktlev)277 & + zwz(ji-1,jj-1,jk) + zwz(ji,jj-1,jk) ) * e1e2t(ji,jj)*e3t_n(ji,jj,jk) 281 278 END DO 282 279 END DO … … 285 282 DO ji = 2, jpi 286 283 zwt(ji,jj) = ( ( pv(ji,jj,jk) + pv(ji,jj-1,jk) ) * di_e2u_2(ji,jj) & 287 & - ( pu(ji,jj,jk) + pu(ji-1,jj,jk) ) * dj_e1v_2(ji,jj) ) * e3t (ji,jj,jk,ktlev)284 & - ( pu(ji,jj,jk) + pu(ji-1,jj,jk) ) * dj_e1v_2(ji,jj) ) * e3t_n(ji,jj,jk) 288 285 END DO 289 286 END DO … … 292 289 DO ji = 2, jpi ! vector opt. 293 290 zwt(ji,jj) = ( ff_t(ji,jj) + r1_4 * ( zwz(ji-1,jj ,jk) + zwz(ji,jj ,jk) & 294 & + zwz(ji-1,jj-1,jk) + zwz(ji,jj-1,jk) ) ) * e1e2t(ji,jj)*e3t (ji,jj,jk,ktlev)291 & + zwz(ji-1,jj-1,jk) + zwz(ji,jj-1,jk) ) ) * e1e2t(ji,jj)*e3t_n(ji,jj,jk) 295 292 END DO 296 293 END DO … … 300 297 zwt(ji,jj) = ( ff_t(ji,jj) * e1e2t(ji,jj) & 301 298 & + ( pv(ji,jj,jk) + pv(ji,jj-1,jk) ) * di_e2u_2(ji,jj) & 302 & - ( pu(ji,jj,jk) + pu(ji-1,jj,jk) ) * dj_e1v_2(ji,jj) ) * e3t (ji,jj,jk,ktlev)299 & - ( pu(ji,jj,jk) + pu(ji-1,jj,jk) ) * dj_e1v_2(ji,jj) ) * e3t_n(ji,jj,jk) 303 300 END DO 304 301 END DO … … 310 307 DO jj = 2, jpjm1 311 308 DO ji = 2, jpim1 ! vector opt. 312 pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + r1_4 * r1_e1e2u(ji,jj) / e3u (ji,jj,jk,ktlev) &309 pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + r1_4 * r1_e1e2u(ji,jj) / e3u_n(ji,jj,jk) & 313 310 & * ( zwt(ji+1,jj) * ( pv(ji+1,jj,jk) + pv(ji+1,jj-1,jk) ) & 314 311 & + zwt(ji ,jj) * ( pv(ji ,jj,jk) + pv(ji ,jj-1,jk) ) ) 315 312 ! 316 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) - r1_4 * r1_e1e2v(ji,jj) / e3v (ji,jj,jk,ktlev) &313 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) - r1_4 * r1_e1e2v(ji,jj) / e3v_n(ji,jj,jk) & 317 314 & * ( zwt(ji,jj+1) * ( pu(ji,jj+1,jk) + pu(ji-1,jj+1,jk) ) & 318 315 & + zwt(ji,jj ) * ( pu(ji,jj ,jk) + pu(ji-1,jj ,jk) ) ) … … 325 322 326 323 327 SUBROUTINE vor_ene( kt, k tlev, kvor, pu, pv, pu_rhs, pva_rhs)324 SUBROUTINE vor_ene( kt, kvor, pun, pvn, pua, pva ) 328 325 !!---------------------------------------------------------------------- 329 326 !! *** ROUTINE vor_ene *** … … 337 334 !! The general trend of momentum is increased due to the vorticity 338 335 !! term which is given by: 339 !! voru = 1/e1u mj-1[ (rvor+f)/e3f mi(e1v*e3v v v(:,:,:,ktlev)) ]340 !! vorv = 1/e2v mi-1[ (rvor+f)/e3f mj(e2u*e3u u u(:,:,:,ktlev)) ]336 !! voru = 1/e1u mj-1[ (rvor+f)/e3f mi(e1v*e3v vn) ] 337 !! vorv = 1/e2v mi-1[ (rvor+f)/e3f mj(e2u*e3u un) ] 341 338 !! where rvor is the relative vorticity 342 339 !! 343 !! ** Action : - Update (u _rhs,v_rhs) with the now vorticity term trend340 !! ** Action : - Update (ua,va) with the now vorticity term trend 344 341 !! 345 342 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 346 343 !!---------------------------------------------------------------------- 347 344 INTEGER , INTENT(in ) :: kt ! ocean time-step index 348 INTEGER , INTENT( in ) :: ktlev ! time level index for source terms349 345 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 350 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu , pv! now velocities351 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu _rhs, pva_rhs! total v-trend346 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pun, pvn ! now velocities 347 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pua, pva ! total v-trend 352 348 ! 353 349 INTEGER :: ji, jj, jk ! dummy loop indices … … 372 368 DO jj = 1, jpjm1 373 369 DO ji = 1, fs_jpim1 ! vector opt. 374 zwz(ji,jj) = ( e2v(ji+1,jj ) * pv (ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) &375 & - e1u(ji ,jj+1) * pu (ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj)370 zwz(ji,jj) = ( e2v(ji+1,jj ) * pvn(ji+1,jj ,jk) - e2v(ji,jj) * pvn(ji,jj,jk) & 371 & - e1u(ji ,jj+1) * pun(ji ,jj+1,jk) + e1u(ji,jj) * pun(ji,jj,jk) ) * r1_e1e2f(ji,jj) 376 372 END DO 377 373 END DO … … 379 375 DO jj = 1, jpjm1 380 376 DO ji = 1, fs_jpim1 ! vector opt. 381 zwz(ji,jj) = ( pv (ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) &382 & - ( pu (ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)377 zwz(ji,jj) = ( pvn(ji+1,jj ,jk) + pvn(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 378 & - ( pun(ji ,jj+1,jk) + pun(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 383 379 END DO 384 380 END DO … … 386 382 DO jj = 1, jpjm1 387 383 DO ji = 1, fs_jpim1 ! vector opt. 388 zwz(ji,jj) = ff_f(ji,jj) + ( e2v(ji+1,jj) * pv (ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) &389 & - e1u(ji,jj+1) * pu (ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj)384 zwz(ji,jj) = ff_f(ji,jj) + ( e2v(ji+1,jj) * pvn(ji+1,jj,jk) - e2v(ji,jj) * pvn(ji,jj,jk) & 385 & - e1u(ji,jj+1) * pun(ji,jj+1,jk) + e1u(ji,jj) * pun(ji,jj,jk) ) * r1_e1e2f(ji,jj) 390 386 END DO 391 387 END DO … … 393 389 DO jj = 1, jpjm1 394 390 DO ji = 1, fs_jpim1 ! vector opt. 395 zwz(ji,jj) = ff_f(ji,jj) + ( pv (ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) &396 & - ( pu (ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)391 zwz(ji,jj) = ff_f(ji,jj) + ( pvn(ji+1,jj ,jk) + pvn(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 392 & - ( pun(ji ,jj+1,jk) + pun(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 397 393 END DO 398 394 END DO … … 410 406 411 407 IF( ln_sco ) THEN 412 zwz(:,:) = zwz(:,:) / e3f (:,:,jk)413 zwx(:,:) = e2u(:,:) * e3u (:,:,jk,ktlev) * pu(:,:,jk)414 zwy(:,:) = e1v(:,:) * e3v (:,:,jk,ktlev) * pv(:,:,jk)408 zwz(:,:) = zwz(:,:) / e3f_n(:,:,jk) 409 zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * pun(:,:,jk) 410 zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * pvn(:,:,jk) 415 411 ELSE 416 zwx(:,:) = e2u(:,:) * pu (:,:,jk)417 zwy(:,:) = e1v(:,:) * pv (:,:,jk)412 zwx(:,:) = e2u(:,:) * pun(:,:,jk) 413 zwy(:,:) = e1v(:,:) * pvn(:,:,jk) 418 414 ENDIF 419 415 ! !== compute and add the vorticity term trend =! … … 424 420 zx1 = zwx(ji-1,jj) + zwx(ji-1,jj+1) 425 421 zx2 = zwx(ji ,jj) + zwx(ji ,jj+1) 426 pu _rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + r1_4 * r1_e1u(ji,jj) * ( zwz(ji ,jj-1) * zy1 + zwz(ji,jj) * zy2 )427 pva _rhs(ji,jj,jk) = pva_rhs(ji,jj,jk) - r1_4 * r1_e2v(ji,jj) * ( zwz(ji-1,jj ) * zx1 + zwz(ji,jj) * zx2 )422 pua(ji,jj,jk) = pua(ji,jj,jk) + r1_4 * r1_e1u(ji,jj) * ( zwz(ji ,jj-1) * zy1 + zwz(ji,jj) * zy2 ) 423 pva(ji,jj,jk) = pva(ji,jj,jk) - r1_4 * r1_e2v(ji,jj) * ( zwz(ji-1,jj ) * zx1 + zwz(ji,jj) * zx2 ) 428 424 END DO 429 425 END DO … … 434 430 435 431 436 SUBROUTINE vor_ens( kt, k tlev, kvor, pu, pv, pu_rhs, pva_rhs)432 SUBROUTINE vor_ens( kt, kvor, pun, pvn, pua, pva ) 437 433 !!---------------------------------------------------------------------- 438 434 !! *** ROUTINE vor_ens *** … … 445 441 !! potential enstrophy of a horizontally non-divergent flow. the 446 442 !! trend of the vorticity term is given by: 447 !! voru = 1/e1u mj-1[ (rvor+f)/e3f ] mj-1[ mi(e1v*e3v v v(:,:,:,ktlev)) ]448 !! vorv = 1/e2v mi-1[ (rvor+f)/e3f ] mi-1[ mj(e2u*e3u u u(:,:,:,ktlev)) ]449 !! Add this trend to the general momentum trend (u _rhs,v_rhs):450 !! (u _rhs,v_rhs) = (u_rhs,v_rhs) + ( voru , vorv )451 !! 452 !! ** Action : - Update (u _rhs,v_rhs) arrays with the now vorticity term trend443 !! voru = 1/e1u mj-1[ (rvor+f)/e3f ] mj-1[ mi(e1v*e3v vn) ] 444 !! vorv = 1/e2v mi-1[ (rvor+f)/e3f ] mi-1[ mj(e2u*e3u un) ] 445 !! Add this trend to the general momentum trend (ua,va): 446 !! (ua,va) = (ua,va) + ( voru , vorv ) 447 !! 448 !! ** Action : - Update (ua,va) arrays with the now vorticity term trend 453 449 !! 454 450 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 455 451 !!---------------------------------------------------------------------- 456 452 INTEGER , INTENT(in ) :: kt ! ocean time-step index 457 INTEGER , INTENT( in ) :: ktlev ! time level index for source terms458 453 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 459 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu , pv! now velocities460 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu _rhs, pva_rhs! total v-trend454 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pun, pvn ! now velocities 455 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pua, pva ! total v-trend 461 456 ! 462 457 INTEGER :: ji, jj, jk ! dummy loop indices … … 480 475 DO jj = 1, jpjm1 481 476 DO ji = 1, fs_jpim1 ! vector opt. 482 zwz(ji,jj) = ( e2v(ji+1,jj ) * pv (ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) &483 & - e1u(ji ,jj+1) * pu (ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj)477 zwz(ji,jj) = ( e2v(ji+1,jj ) * pvn(ji+1,jj ,jk) - e2v(ji,jj) * pvn(ji,jj,jk) & 478 & - e1u(ji ,jj+1) * pun(ji ,jj+1,jk) + e1u(ji,jj) * pun(ji,jj,jk) ) * r1_e1e2f(ji,jj) 484 479 END DO 485 480 END DO … … 487 482 DO jj = 1, jpjm1 488 483 DO ji = 1, fs_jpim1 ! vector opt. 489 zwz(ji,jj) = ( pv (ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) &490 & - ( pu (ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)484 zwz(ji,jj) = ( pvn(ji+1,jj ,jk) + pvn(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 485 & - ( pun(ji ,jj+1,jk) + pun(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 491 486 END DO 492 487 END DO … … 494 489 DO jj = 1, jpjm1 495 490 DO ji = 1, fs_jpim1 ! vector opt. 496 zwz(ji,jj) = ff_f(ji,jj) + ( e2v(ji+1,jj ) * pv (ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) &497 & - e1u(ji ,jj+1) * pu (ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj)491 zwz(ji,jj) = ff_f(ji,jj) + ( e2v(ji+1,jj ) * pvn(ji+1,jj ,jk) - e2v(ji,jj) * pvn(ji,jj,jk) & 492 & - e1u(ji ,jj+1) * pun(ji ,jj+1,jk) + e1u(ji,jj) * pun(ji,jj,jk) ) * r1_e1e2f(ji,jj) 498 493 END DO 499 494 END DO … … 501 496 DO jj = 1, jpjm1 502 497 DO ji = 1, fs_jpim1 ! vector opt. 503 zwz(ji,jj) = ff_f(ji,jj) + ( pv (ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) &504 & - ( pu (ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)498 zwz(ji,jj) = ff_f(ji,jj) + ( pvn(ji+1,jj ,jk) + pvn(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 499 & - ( pun(ji ,jj+1,jk) + pun(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 505 500 END DO 506 501 END DO … … 518 513 ! 519 514 IF( ln_sco ) THEN !== horizontal fluxes ==! 520 zwz(:,:) = zwz(:,:) / e3f (:,:,jk)521 zwx(:,:) = e2u(:,:) * e3u (:,:,jk,ktlev) * pu(:,:,jk)522 zwy(:,:) = e1v(:,:) * e3v (:,:,jk,ktlev) * pv(:,:,jk)515 zwz(:,:) = zwz(:,:) / e3f_n(:,:,jk) 516 zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * pun(:,:,jk) 517 zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * pvn(:,:,jk) 523 518 ELSE 524 zwx(:,:) = e2u(:,:) * pu (:,:,jk)525 zwy(:,:) = e1v(:,:) * pv (:,:,jk)519 zwx(:,:) = e2u(:,:) * pun(:,:,jk) 520 zwy(:,:) = e1v(:,:) * pvn(:,:,jk) 526 521 ENDIF 527 522 ! !== compute and add the vorticity term trend =! … … 532 527 zvau =-r1_8 * r1_e2v(ji,jj) * ( zwx(ji-1,jj ) + zwx(ji-1,jj+1) & 533 528 & + zwx(ji ,jj ) + zwx(ji ,jj+1) ) 534 pu _rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + zuav * ( zwz(ji ,jj-1) + zwz(ji,jj) )535 pva _rhs(ji,jj,jk) = pva_rhs(ji,jj,jk) + zvau * ( zwz(ji-1,jj ) + zwz(ji,jj) )529 pua(ji,jj,jk) = pua(ji,jj,jk) + zuav * ( zwz(ji ,jj-1) + zwz(ji,jj) ) 530 pva(ji,jj,jk) = pva(ji,jj,jk) + zvau * ( zwz(ji-1,jj ) + zwz(ji,jj) ) 536 531 END DO 537 532 END DO … … 542 537 543 538 544 SUBROUTINE vor_een( kt, k tlev, kvor, pu, pv, pu_rhs, pva_rhs)539 SUBROUTINE vor_een( kt, kvor, pun, pvn, pua, pva ) 545 540 !!---------------------------------------------------------------------- 546 541 !! *** ROUTINE vor_een *** … … 553 548 !! both the horizontal kinetic energy and the potential enstrophy 554 549 !! when horizontal divergence is zero (see the NEMO documentation) 555 !! Add this trend to the general momentum trend (u _rhs,v_rhs).556 !! 557 !! ** Action : - Update (u _rhs,v_rhs) with the now vorticity term trend550 !! Add this trend to the general momentum trend (ua,va). 551 !! 552 !! ** Action : - Update (ua,va) with the now vorticity term trend 558 553 !! 559 554 !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 560 555 !!---------------------------------------------------------------------- 561 556 INTEGER , INTENT(in ) :: kt ! ocean time-step index 562 INTEGER , INTENT( in ) :: ktlev ! time level index for source terms563 557 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 564 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu , pv! now velocities565 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu _rhs, pva_rhs! total v-trend558 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pun, pvn ! now velocities 559 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pua, pva ! total v-trend 566 560 ! 567 561 INTEGER :: ji, jj, jk ! dummy loop indices … … 588 582 DO jj = 1, jpjm1 589 583 DO ji = 1, fs_jpim1 ! vector opt. 590 ze3f = ( e3t (ji,jj+1,jk,ktlev)*tmask(ji,jj+1,jk) + e3t(ji+1,jj+1,jk,ktlev)*tmask(ji+1,jj+1,jk) &591 & + e3t (ji,jj ,jk,ktlev)*tmask(ji,jj ,jk) + e3t(ji+1,jj ,jk,ktlev)*tmask(ji+1,jj ,jk) )584 ze3f = ( e3t_n(ji,jj+1,jk)*tmask(ji,jj+1,jk) + e3t_n(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) & 585 & + e3t_n(ji,jj ,jk)*tmask(ji,jj ,jk) + e3t_n(ji+1,jj ,jk)*tmask(ji+1,jj ,jk) ) 592 586 IF( ze3f /= 0._wp ) THEN ; z1_e3f(ji,jj) = 4._wp / ze3f 593 587 ELSE ; z1_e3f(ji,jj) = 0._wp … … 598 592 DO jj = 1, jpjm1 599 593 DO ji = 1, fs_jpim1 ! vector opt. 600 ze3f = ( e3t (ji,jj+1,jk,ktlev)*tmask(ji,jj+1,jk) + e3t(ji+1,jj+1,jk,ktlev)*tmask(ji+1,jj+1,jk) &601 & + e3t (ji,jj ,jk,ktlev)*tmask(ji,jj ,jk) + e3t(ji+1,jj ,jk,ktlev)*tmask(ji+1,jj ,jk) )594 ze3f = ( e3t_n(ji,jj+1,jk)*tmask(ji,jj+1,jk) + e3t_n(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) & 595 & + e3t_n(ji,jj ,jk)*tmask(ji,jj ,jk) + e3t_n(ji+1,jj ,jk)*tmask(ji+1,jj ,jk) ) 602 596 zmsk = ( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) & 603 597 & + tmask(ji,jj ,jk) + tmask(ji+1,jj ,jk) ) … … 619 613 DO jj = 1, jpjm1 620 614 DO ji = 1, fs_jpim1 ! vector opt. 621 zwz(ji,jj,jk) = ( e2v(ji+1,jj ) * pv (ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) &622 & - e1u(ji ,jj+1) * pu (ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj)*z1_e3f(ji,jj)615 zwz(ji,jj,jk) = ( e2v(ji+1,jj ) * pvn(ji+1,jj,jk) - e2v(ji,jj) * pvn(ji,jj,jk) & 616 & - e1u(ji ,jj+1) * pun(ji,jj+1,jk) + e1u(ji,jj) * pun(ji,jj,jk) ) * r1_e1e2f(ji,jj)*z1_e3f(ji,jj) 623 617 END DO 624 618 END DO … … 626 620 DO jj = 1, jpjm1 627 621 DO ji = 1, fs_jpim1 ! vector opt. 628 zwz(ji,jj,jk) = ( ( pv (ji+1,jj,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) &629 & - ( pu (ji,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) ) * z1_e3f(ji,jj)622 zwz(ji,jj,jk) = ( ( pvn(ji+1,jj,jk) + pvn(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 623 & - ( pun(ji,jj+1,jk) + pun(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) ) * z1_e3f(ji,jj) 630 624 END DO 631 625 END DO … … 633 627 DO jj = 1, jpjm1 634 628 DO ji = 1, fs_jpim1 ! vector opt. 635 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( e2v(ji+1,jj ) * pv (ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) &636 & - e1u(ji ,jj+1) * pu (ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) &629 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( e2v(ji+1,jj ) * pvn(ji+1,jj,jk) - e2v(ji,jj) * pvn(ji,jj,jk) & 630 & - e1u(ji ,jj+1) * pun(ji,jj+1,jk) + e1u(ji,jj) * pun(ji,jj,jk) ) & 637 631 & * r1_e1e2f(ji,jj) ) * z1_e3f(ji,jj) 638 632 END DO … … 641 635 DO jj = 1, jpjm1 642 636 DO ji = 1, fs_jpim1 ! vector opt. 643 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( pv (ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) &644 & - ( pu (ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) ) * z1_e3f(ji,jj)637 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( pvn(ji+1,jj ,jk) + pvn(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 638 & - ( pun(ji ,jj+1,jk) + pun(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) ) * z1_e3f(ji,jj) 645 639 END DO 646 640 END DO … … 663 657 ! 664 658 ! !== horizontal fluxes ==! 665 zwx(:,:) = e2u(:,:) * e3u (:,:,jk,ktlev) * pu(:,:,jk)666 zwy(:,:) = e1v(:,:) * e3v (:,:,jk,ktlev) * pv(:,:,jk)659 zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * pun(:,:,jk) 660 zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * pvn(:,:,jk) 667 661 668 662 ! !== compute and add the vorticity term trend =! … … 689 683 zva = - r1_12 * r1_e2v(ji,jj) * ( ztsw(ji,jj+1) * zwx(ji-1,jj+1) + ztse(ji,jj+1) * zwx(ji ,jj+1) & 690 684 & + ztnw(ji,jj ) * zwx(ji-1,jj ) + ztne(ji,jj ) * zwx(ji ,jj ) ) 691 pu _rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + zua692 pva _rhs(ji,jj,jk) = pva_rhs(ji,jj,jk) + zva685 pua(ji,jj,jk) = pua(ji,jj,jk) + zua 686 pva(ji,jj,jk) = pva(ji,jj,jk) + zva 693 687 END DO 694 688 END DO … … 700 694 701 695 702 SUBROUTINE vor_eeT( kt, k tlev, kvor, pu, pv, pu_rhs, pva_rhs)696 SUBROUTINE vor_eeT( kt, kvor, pun, pvn, pua, pva ) 703 697 !!---------------------------------------------------------------------- 704 698 !! *** ROUTINE vor_eeT *** … … 711 705 !! a modified version of Arakawa and Lamb (1980) scheme (see vor_een). 712 706 !! The change consists in 713 !! Add this trend to the general momentum trend (u _rhs,v_rhs).714 !! 715 !! ** Action : - Update (u _rhs,v_rhs) with the now vorticity term trend707 !! Add this trend to the general momentum trend (ua,va). 708 !! 709 !! ** Action : - Update (ua,va) with the now vorticity term trend 716 710 !! 717 711 !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 718 712 !!---------------------------------------------------------------------- 719 713 INTEGER , INTENT(in ) :: kt ! ocean time-step index 720 INTEGER , INTENT( in ) :: ktlev ! time level index for source terms721 714 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 722 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu , pv! now velocities723 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu _rhs, pva_rhs! total v-trend715 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pun, pvn ! now velocities 716 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pua, pva ! total v-trend 724 717 ! 725 718 INTEGER :: ji, jj, jk ! dummy loop indices … … 753 746 DO jj = 1, jpjm1 754 747 DO ji = 1, fs_jpim1 ! vector opt. 755 zwz(ji,jj,jk) = ( e2v(ji+1,jj ) * pv (ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) &756 & - e1u(ji ,jj+1) * pu (ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) &748 zwz(ji,jj,jk) = ( e2v(ji+1,jj ) * pvn(ji+1,jj ,jk) - e2v(ji,jj) * pvn(ji,jj,jk) & 749 & - e1u(ji ,jj+1) * pun(ji ,jj+1,jk) + e1u(ji,jj) * pun(ji,jj,jk) ) & 757 750 & * r1_e1e2f(ji,jj) 758 751 END DO … … 761 754 DO jj = 1, jpjm1 762 755 DO ji = 1, fs_jpim1 ! vector opt. 763 zwz(ji,jj,jk) = ( pv (ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) &764 & - ( pu (ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)756 zwz(ji,jj,jk) = ( pvn(ji+1,jj ,jk) + pvn(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 757 & - ( pun(ji ,jj+1,jk) + pun(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 765 758 END DO 766 759 END DO … … 768 761 DO jj = 1, jpjm1 769 762 DO ji = 1, fs_jpim1 ! vector opt. 770 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( e2v(ji+1,jj ) * pv (ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) &771 & - e1u(ji ,jj+1) * pu (ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) &763 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( e2v(ji+1,jj ) * pvn(ji+1,jj ,jk) - e2v(ji,jj) * pvn(ji,jj,jk) & 764 & - e1u(ji ,jj+1) * pun(ji ,jj+1,jk) + e1u(ji,jj) * pun(ji,jj,jk) ) & 772 765 & * r1_e1e2f(ji,jj) ) 773 766 END DO … … 776 769 DO jj = 1, jpjm1 777 770 DO ji = 1, fs_jpim1 ! vector opt. 778 zwz(ji,jj,jk) = ff_f(ji,jj) + ( pv (ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) &779 & - ( pu (ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj)771 zwz(ji,jj,jk) = ff_f(ji,jj) + ( pvn(ji+1,jj ,jk) + pvn(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 772 & - ( pun(ji ,jj+1,jk) + pun(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 780 773 END DO 781 774 END DO … … 798 791 799 792 ! !== horizontal fluxes ==! 800 zwx(:,:) = e2u(:,:) * e3u (:,:,jk,ktlev) * pu(:,:,jk)801 zwy(:,:) = e1v(:,:) * e3v (:,:,jk,ktlev) * pv(:,:,jk)793 zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * pun(:,:,jk) 794 zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * pvn(:,:,jk) 802 795 803 796 ! !== compute and add the vorticity term trend =! … … 805 798 ztne(1,:) = 0 ; ztnw(1,:) = 0 ; ztse(1,:) = 0 ; ztsw(1,:) = 0 806 799 DO ji = 2, jpi ! split in 2 parts due to vector opt. 807 z1_e3t = 1._wp / e3t (ji,jj,jk,ktlev)800 z1_e3t = 1._wp / e3t_n(ji,jj,jk) 808 801 ztne(ji,jj) = ( zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) + zwz(ji ,jj-1,jk) ) * z1_e3t 809 802 ztnw(ji,jj) = ( zwz(ji-1,jj-1,jk) + zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) ) * z1_e3t … … 813 806 DO jj = 3, jpj 814 807 DO ji = fs_2, jpi ! vector opt. ok because we start at jj = 3 815 z1_e3t = 1._wp / e3t (ji,jj,jk,ktlev)808 z1_e3t = 1._wp / e3t_n(ji,jj,jk) 816 809 ztne(ji,jj) = ( zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) + zwz(ji ,jj-1,jk) ) * z1_e3t 817 810 ztnw(ji,jj) = ( zwz(ji-1,jj-1,jk) + zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) ) * z1_e3t … … 826 819 zva = - r1_12 * r1_e2v(ji,jj) * ( ztsw(ji,jj+1) * zwx(ji-1,jj+1) + ztse(ji,jj+1) * zwx(ji ,jj+1) & 827 820 & + ztnw(ji,jj ) * zwx(ji-1,jj ) + ztne(ji,jj ) * zwx(ji ,jj ) ) 828 pu _rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + zua829 pva _rhs(ji,jj,jk) = pva_rhs(ji,jj,jk) + zva821 pua(ji,jj,jk) = pua(ji,jj,jk) + zua 822 pva(ji,jj,jk) = pva(ji,jj,jk) + zva 830 823 END DO 831 824 END DO … … 873 866 WRITE(numout,*) ' e3f = averaging /4 (=0) or /sum(tmask) (=1) nn_een_e3f = ', nn_een_e3f 874 867 WRITE(numout,*) ' mixed enstrophy/energy conserving scheme ln_dynvor_mix = ', ln_dynvor_mix 875 WRITE(numout,*) ' masked (=T) or u u(:,:,:,ktlev)masked(=F) vorticity ln_dynvor_msk = ', ln_dynvor_msk868 WRITE(numout,*) ' masked (=T) or unmasked(=F) vorticity ln_dynvor_msk = ', ln_dynvor_msk 876 869 ENDIF 877 870
Note: See TracChangeset
for help on using the changeset viewer.