- Timestamp:
- 2020-05-14T21:46:00+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Property svn:externals
-
old new 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/DYN/dynvor.F90
r12178 r12928 88 88 89 89 !! * Substitutions 90 # include " vectopt_loop_substitute.h90"90 # include "do_loop_substitute.h90" 91 91 !!---------------------------------------------------------------------- 92 92 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 96 96 CONTAINS 97 97 98 SUBROUTINE dyn_vor( kt )98 SUBROUTINE dyn_vor( kt, Kmm, puu, pvv, Krhs ) 99 99 !!---------------------------------------------------------------------- 100 100 !! 101 101 !! ** Purpose : compute the lateral ocean tracer physics. 102 102 !! 103 !! ** Action : - Update ( ua,va) with the now vorticity term trend103 !! ** Action : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) 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 108 INTEGER , INTENT( in ) :: kt ! ocean time-step index 109 INTEGER , INTENT( in ) :: Kmm, Krhs ! ocean time level indices 110 REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: puu, pvv ! ocean velocity field and RHS of momentum equation 109 111 ! 110 112 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdu, ztrdv … … 117 119 ALLOCATE( ztrdu(jpi,jpj,jpk), ztrdv(jpi,jpj,jpk) ) 118 120 ! 119 ztrdu(:,:,:) = ua(:,:,:) !* planetary vorticity trend (including Stokes-Coriolis force)120 ztrdv(:,:,:) = va(:,:,:)121 ztrdu(:,:,:) = puu(:,:,:,Krhs) !* planetary vorticity trend (including Stokes-Coriolis force) 122 ztrdv(:,:,:) = pvv(:,:,:,Krhs) 121 123 SELECT CASE( nvor_scheme ) 122 CASE( np_ENS ) ; CALL vor_ens( kt, ncor, un , vn , ua, va) ! enstrophy conserving scheme123 IF( ln_stcor ) CALL vor_ens( kt, ncor, usd, vsd, ua, va) ! add the Stokes-Coriolis trend124 CASE( np_ENE, np_MIX ) ; CALL vor_ene( kt, ncor, un , vn , ua, va) ! energy conserving scheme125 IF( ln_stcor ) CALL vor_ene( kt, ncor, usd, vsd, ua, va) ! add the Stokes-Coriolis trend126 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 trend128 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 trend130 CASE( np_EEN ) ; CALL vor_een( kt, ncor, un , vn , ua, va) ! energy & enstrophy scheme131 IF( ln_stcor ) CALL vor_een( kt, ncor, usd, vsd, ua, va) ! add the Stokes-Coriolis trend124 CASE( np_ENS ) ; CALL vor_ens( kt, Kmm, ncor, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! enstrophy conserving scheme 125 IF( ln_stcor ) CALL vor_ens( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 126 CASE( np_ENE, np_MIX ) ; CALL vor_ene( kt, Kmm, ncor, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! energy conserving scheme 127 IF( ln_stcor ) CALL vor_ene( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 128 CASE( np_ENT ) ; CALL vor_enT( kt, Kmm, ncor, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! energy conserving scheme (T-pts) 129 IF( ln_stcor ) CALL vor_enT( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 130 CASE( np_EET ) ; CALL vor_eeT( kt, Kmm, ncor, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! energy conserving scheme (een with e3t) 131 IF( ln_stcor ) CALL vor_eeT( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 132 CASE( np_EEN ) ; CALL vor_een( kt, Kmm, ncor, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! energy & enstrophy scheme 133 IF( ln_stcor ) CALL vor_een( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 132 134 END SELECT 133 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:)134 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)135 CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt )135 ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 136 ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 137 CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt, Kmm ) 136 138 ! 137 139 IF( n_dynadv /= np_LIN_dyn ) THEN !* relative vorticity or metric trend (only in non-linear case) 138 ztrdu(:,:,:) = ua(:,:,:)139 ztrdv(:,:,:) = va(:,:,:)140 ztrdu(:,:,:) = puu(:,:,:,Krhs) 141 ztrdv(:,:,:) = pvv(:,:,:,Krhs) 140 142 SELECT CASE( nvor_scheme ) 141 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 scheme144 CASE( np_ENS, np_MIX ) ; CALL vor_ens( kt, nrvm, un , vn , ua, va) ! enstrophy conserving scheme145 CASE( np_EEN ) ; CALL vor_een( kt, nrvm, un , vn , ua, va) ! energy & enstrophy scheme143 CASE( np_ENT ) ; CALL vor_enT( kt, Kmm, nrvm, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! energy conserving scheme (T-pts) 144 CASE( np_EET ) ; CALL vor_eeT( kt, Kmm, nrvm, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! energy conserving scheme (een with e3t) 145 CASE( np_ENE ) ; CALL vor_ene( kt, Kmm, nrvm, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! energy conserving scheme 146 CASE( np_ENS, np_MIX ) ; CALL vor_ens( kt, Kmm, nrvm, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! enstrophy conserving scheme 147 CASE( np_EEN ) ; CALL vor_een( kt, Kmm, nrvm, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! energy & enstrophy scheme 146 148 END SELECT 147 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:)148 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)149 CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt )149 ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 150 ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 151 CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt, Kmm ) 150 152 ENDIF 151 153 ! … … 156 158 SELECT CASE ( nvor_scheme ) !== vorticity trend added to the general trend ==! 157 159 CASE( np_ENT ) !* energy conserving scheme (T-pts) 158 CALL vor_enT( kt, ntot, un , vn , ua, va) ! total vorticity trend159 IF( ln_stcor ) CALL vor_enT( kt, ncor, usd, vsd, ua, va) ! add the Stokes-Coriolis trend160 CALL vor_enT( kt, Kmm, ntot, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! total vorticity trend 161 IF( ln_stcor ) CALL vor_enT( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 160 162 CASE( np_EET ) !* energy conserving scheme (een scheme using e3t) 161 CALL vor_eeT( kt, ntot, un , vn , ua, va) ! total vorticity trend162 IF( ln_stcor ) CALL vor_eeT( kt, ncor, usd, vsd, ua, va) ! add the Stokes-Coriolis trend163 CALL vor_eeT( kt, Kmm, ntot, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! total vorticity trend 164 IF( ln_stcor ) CALL vor_eeT( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 163 165 CASE( np_ENE ) !* energy conserving scheme 164 CALL vor_ene( kt, ntot, un , vn , ua, va) ! total vorticity trend165 IF( ln_stcor ) CALL vor_ene( kt, ncor, usd, vsd, ua, va) ! add the Stokes-Coriolis trend166 CALL vor_ene( kt, Kmm, ntot, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! total vorticity trend 167 IF( ln_stcor ) CALL vor_ene( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 166 168 CASE( np_ENS ) !* enstrophy conserving scheme 167 CALL vor_ens( kt, ntot, un , vn , ua, va) ! total vorticity trend168 IF( ln_stcor ) CALL vor_ens( kt, ncor, usd, vsd, ua, va) ! add the Stokes-Coriolis trend169 CALL vor_ens( kt, Kmm, ntot, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! total vorticity trend 170 IF( ln_stcor ) CALL vor_ens( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 169 171 CASE( np_MIX ) !* mixed ene-ens scheme 170 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 trend172 CALL vor_ens( kt, Kmm, nrvm, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! relative vorticity or metric trend (ens) 173 CALL vor_ene( kt, Kmm, ncor, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! planetary vorticity trend (ene) 174 IF( ln_stcor ) CALL vor_ene( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 173 175 CASE( np_EEN ) !* energy and enstrophy conserving scheme 174 CALL vor_een( kt, ntot, un , vn , ua, va) ! total vorticity trend175 IF( ln_stcor ) CALL vor_een( kt, ncor, usd, vsd, ua, va) ! add the Stokes-Coriolis trend176 CALL vor_een( kt, Kmm, ntot, puu(:,:,:,Kmm) , pvv(:,:,:,Kmm) , puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! total vorticity trend 177 IF( ln_stcor ) CALL vor_een( kt, Kmm, ncor, usd, vsd, puu(:,:,:,Krhs), pvv(:,:,:,Krhs) ) ! add the Stokes-Coriolis trend 176 178 END SELECT 177 179 ! … … 179 181 ! 180 182 ! ! print sum trends (used for debugging) 181 IF( ln_ctl) CALL prt_ctl( tab3d_1=ua, clinfo1=' vor - Ua: ', mask1=umask, &182 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' )183 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab3d_1=puu(:,:,:,Krhs), clinfo1=' vor - Ua: ', mask1=umask, & 184 & tab3d_2=pvv(:,:,:,Krhs), clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 183 185 ! 184 186 IF( ln_timing ) CALL timing_stop('dyn_vor') … … 187 189 188 190 189 SUBROUTINE vor_enT( kt, kvor, pu, pv, pu_rhs, pv_rhs )191 SUBROUTINE vor_enT( kt, Kmm, kvor, pu, pv, pu_rhs, pv_rhs ) 190 192 !!---------------------------------------------------------------------- 191 193 !! *** ROUTINE vor_enT *** … … 203 205 !! where rvor is the relative vorticity at f-point 204 206 !! 205 !! ** Action : - Update ( ua,va) with the now vorticity term trend207 !! ** Action : - Update (pu_rhs,pv_rhs) with the now vorticity term trend 206 208 !!---------------------------------------------------------------------- 207 209 INTEGER , INTENT(in ) :: kt ! ocean time-step index 210 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 208 211 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 209 212 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu, pv ! now velocities … … 226 229 CASE ( np_RVO ) !* relative vorticity 227 230 DO jk = 1, jpkm1 ! Horizontal slab 228 DO jj = 1, jpjm1 229 DO ji = 1, jpim1 230 zwz(ji,jj,jk) = ( e2v(ji+1,jj) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 231 & - e1u(ji,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj) 232 END DO 233 END DO 231 DO_2D_10_10 232 zwz(ji,jj,jk) = ( e2v(ji+1,jj) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 233 & - e1u(ji,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj) 234 END_2D 234 235 IF( ln_dynvor_msk ) THEN ! mask/unmask relative vorticity 235 DO jj = 1, jpjm1 236 DO ji = 1, jpim1 237 zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 238 END DO 239 END DO 236 DO_2D_10_10 237 zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 238 END_2D 240 239 ENDIF 241 240 END DO … … 245 244 CASE ( np_CRV ) !* Coriolis + relative vorticity 246 245 DO jk = 1, jpkm1 ! Horizontal slab 247 DO jj = 1, jpjm1 248 DO ji = 1, jpim1 ! relative vorticity 249 zwz(ji,jj,jk) = ( e2v(ji+1,jj) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 250 & - e1u(ji,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj) 251 END DO 252 END DO 246 DO_2D_10_10 247 zwz(ji,jj,jk) = ( e2v(ji+1,jj) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 248 & - e1u(ji,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj) 249 END_2D 253 250 IF( ln_dynvor_msk ) THEN ! mask/unmask relative vorticity 254 DO jj = 1, jpjm1 255 DO ji = 1, jpim1 256 zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 257 END DO 258 END DO 251 DO_2D_10_10 252 zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 253 END_2D 259 254 ENDIF 260 255 END DO … … 270 265 SELECT CASE( kvor ) !== volume weighted vorticity considered ==! 271 266 CASE ( np_COR ) !* Coriolis (planetary vorticity) 272 zwt(:,:) = ff_t(:,:) * e1e2t(:,:)*e3t _n(:,:,jk)267 zwt(:,:) = ff_t(:,:) * e1e2t(:,:)*e3t(:,:,jk,Kmm) 273 268 CASE ( np_RVO ) !* relative vorticity 274 DO jj = 2, jpj 275 DO ji = 2, jpi ! vector opt. 276 zwt(ji,jj) = r1_4 * ( zwz(ji-1,jj ,jk) + zwz(ji,jj ,jk) & 277 & + zwz(ji-1,jj-1,jk) + zwz(ji,jj-1,jk) ) * e1e2t(ji,jj)*e3t_n(ji,jj,jk) 278 END DO 279 END DO 269 DO_2D_01_01 270 zwt(ji,jj) = r1_4 * ( zwz(ji-1,jj ,jk) + zwz(ji,jj ,jk) & 271 & + zwz(ji-1,jj-1,jk) + zwz(ji,jj-1,jk) ) * e1e2t(ji,jj)*e3t(ji,jj,jk,Kmm) 272 END_2D 280 273 CASE ( np_MET ) !* metric term 281 DO jj = 2, jpj 282 DO ji = 2, jpi 283 zwt(ji,jj) = ( ( pv(ji,jj,jk) + pv(ji,jj-1,jk) ) * di_e2u_2(ji,jj) & 284 & - ( pu(ji,jj,jk) + pu(ji-1,jj,jk) ) * dj_e1v_2(ji,jj) ) * e3t_n(ji,jj,jk) 285 END DO 286 END DO 274 DO_2D_01_01 275 zwt(ji,jj) = ( ( pv(ji,jj,jk) + pv(ji,jj-1,jk) ) * di_e2u_2(ji,jj) & 276 & - ( pu(ji,jj,jk) + pu(ji-1,jj,jk) ) * dj_e1v_2(ji,jj) ) * e3t(ji,jj,jk,Kmm) 277 END_2D 287 278 CASE ( np_CRV ) !* Coriolis + relative vorticity 288 DO jj = 2, jpj 289 DO ji = 2, jpi ! vector opt. 290 zwt(ji,jj) = ( ff_t(ji,jj) + r1_4 * ( zwz(ji-1,jj ,jk) + zwz(ji,jj ,jk) & 291 & + zwz(ji-1,jj-1,jk) + zwz(ji,jj-1,jk) ) ) * e1e2t(ji,jj)*e3t_n(ji,jj,jk) 292 END DO 293 END DO 279 DO_2D_01_01 280 zwt(ji,jj) = ( ff_t(ji,jj) + r1_4 * ( zwz(ji-1,jj ,jk) + zwz(ji,jj ,jk) & 281 & + zwz(ji-1,jj-1,jk) + zwz(ji,jj-1,jk) ) ) * e1e2t(ji,jj)*e3t(ji,jj,jk,Kmm) 282 END_2D 294 283 CASE ( np_CME ) !* Coriolis + metric 295 DO jj = 2, jpj 296 DO ji = 2, jpi ! vector opt. 297 zwt(ji,jj) = ( ff_t(ji,jj) * e1e2t(ji,jj) & 298 & + ( pv(ji,jj,jk) + pv(ji,jj-1,jk) ) * di_e2u_2(ji,jj) & 299 & - ( pu(ji,jj,jk) + pu(ji-1,jj,jk) ) * dj_e1v_2(ji,jj) ) * e3t_n(ji,jj,jk) 300 END DO 301 END DO 284 DO_2D_01_01 285 zwt(ji,jj) = ( ff_t(ji,jj) * e1e2t(ji,jj) & 286 & + ( 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,Kmm) 288 END_2D 302 289 CASE DEFAULT ! error 303 290 CALL ctl_stop('STOP','dyn_vor: wrong value for kvor' ) … … 305 292 ! 306 293 ! !== compute and add the vorticity term trend =! 307 DO jj = 2, jpjm1 308 DO ji = 2, jpim1 ! vector opt. 309 pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + r1_4 * r1_e1e2u(ji,jj) / e3u_n(ji,jj,jk) & 310 & * ( zwt(ji+1,jj) * ( pv(ji+1,jj,jk) + pv(ji+1,jj-1,jk) ) & 311 & + zwt(ji ,jj) * ( pv(ji ,jj,jk) + pv(ji ,jj-1,jk) ) ) 312 ! 313 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) - r1_4 * r1_e1e2v(ji,jj) / e3v_n(ji,jj,jk) & 314 & * ( zwt(ji,jj+1) * ( pu(ji,jj+1,jk) + pu(ji-1,jj+1,jk) ) & 315 & + zwt(ji,jj ) * ( pu(ji,jj ,jk) + pu(ji-1,jj ,jk) ) ) 316 END DO 317 END DO 294 DO_2D_00_00 295 pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + r1_4 * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,Kmm) & 296 & * ( zwt(ji+1,jj) * ( pv(ji+1,jj,jk) + pv(ji+1,jj-1,jk) ) & 297 & + zwt(ji ,jj) * ( pv(ji ,jj,jk) + pv(ji ,jj-1,jk) ) ) 298 ! 299 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) - r1_4 * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,Kmm) & 300 & * ( zwt(ji,jj+1) * ( pu(ji,jj+1,jk) + pu(ji-1,jj+1,jk) ) & 301 & + zwt(ji,jj ) * ( pu(ji,jj ,jk) + pu(ji-1,jj ,jk) ) ) 302 END_2D 318 303 ! ! =============== 319 304 END DO ! End of slab … … 322 307 323 308 324 SUBROUTINE vor_ene( kt, kvor, pun, pvn, pua, pva)309 SUBROUTINE vor_ene( kt, Kmm, kvor, pu, pv, pu_rhs, pv_rhs ) 325 310 !!---------------------------------------------------------------------- 326 311 !! *** ROUTINE vor_ene *** … … 334 319 !! The general trend of momentum is increased due to the vorticity 335 320 !! term which is given by: 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) ]321 !! voru = 1/e1u mj-1[ (rvor+f)/e3f mi(e1v*e3v pvv(:,:,:,Kmm)) ] 322 !! vorv = 1/e2v mi-1[ (rvor+f)/e3f mj(e2u*e3u puu(:,:,:,Kmm)) ] 338 323 !! where rvor is the relative vorticity 339 324 !! 340 !! ** Action : - Update ( ua,va) with the now vorticity term trend325 !! ** Action : - Update (pu_rhs,pv_rhs) with the now vorticity term trend 341 326 !! 342 327 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 343 328 !!---------------------------------------------------------------------- 344 329 INTEGER , INTENT(in ) :: kt ! ocean time-step index 330 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 345 331 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 346 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu n, pvn! now velocities347 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu a, pva! total v-trend332 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu, pv ! now velocities 333 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu_rhs, pv_rhs ! total v-trend 348 334 ! 349 335 INTEGER :: ji, jj, jk ! dummy loop indices … … 366 352 zwz(:,:) = ff_f(:,:) 367 353 CASE ( np_RVO ) !* relative vorticity 368 DO jj = 1, jpjm1 369 DO ji = 1, fs_jpim1 ! vector opt. 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) 372 END DO 373 END DO 354 DO_2D_10_10 355 zwz(ji,jj) = ( e2v(ji+1,jj ) * pv(ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 356 & - e1u(ji ,jj+1) * pu(ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj) 357 END_2D 374 358 CASE ( np_MET ) !* metric term 375 DO jj = 1, jpjm1 376 DO ji = 1, fs_jpim1 ! vector opt. 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) 379 END DO 380 END DO 359 DO_2D_10_10 360 zwz(ji,jj) = ( pv(ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 361 & - ( pu(ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 362 END_2D 381 363 CASE ( np_CRV ) !* Coriolis + relative vorticity 382 DO jj = 1, jpjm1 383 DO ji = 1, fs_jpim1 ! vector opt. 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) 386 END DO 387 END DO 364 DO_2D_10_10 365 zwz(ji,jj) = ff_f(ji,jj) + ( e2v(ji+1,jj) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 366 & - e1u(ji,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj) 367 END_2D 388 368 CASE ( np_CME ) !* Coriolis + metric 389 DO jj = 1, jpjm1 390 DO ji = 1, fs_jpim1 ! vector opt. 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) 393 END DO 394 END DO 369 DO_2D_10_10 370 zwz(ji,jj) = ff_f(ji,jj) + ( pv(ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 371 & - ( pu(ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 372 END_2D 395 373 CASE DEFAULT ! error 396 374 CALL ctl_stop('STOP','dyn_vor: wrong value for kvor' ) … … 398 376 ! 399 377 IF( ln_dynvor_msk ) THEN !== mask/unmask vorticity ==! 400 DO jj = 1, jpjm1 401 DO ji = 1, fs_jpim1 ! vector opt. 402 zwz(ji,jj) = zwz(ji,jj) * fmask(ji,jj,jk) 403 END DO 404 END DO 378 DO_2D_10_10 379 zwz(ji,jj) = zwz(ji,jj) * fmask(ji,jj,jk) 380 END_2D 405 381 ENDIF 406 382 407 383 IF( ln_sco ) THEN 408 zwz(:,:) = zwz(:,:) / e3f _n(:,:,jk)409 zwx(:,:) = e2u(:,:) * e3u _n(:,:,jk) * pun(:,:,jk)410 zwy(:,:) = e1v(:,:) * e3v _n(:,:,jk) * pvn(:,:,jk)384 zwz(:,:) = zwz(:,:) / e3f(:,:,jk) 385 zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 386 zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 411 387 ELSE 412 zwx(:,:) = e2u(:,:) * pu n(:,:,jk)413 zwy(:,:) = e1v(:,:) * pv n(:,:,jk)388 zwx(:,:) = e2u(:,:) * pu(:,:,jk) 389 zwy(:,:) = e1v(:,:) * pv(:,:,jk) 414 390 ENDIF 415 391 ! !== compute and add the vorticity term trend =! 416 DO jj = 2, jpjm1 417 DO ji = fs_2, fs_jpim1 ! vector opt. 418 zy1 = zwy(ji,jj-1) + zwy(ji+1,jj-1) 419 zy2 = zwy(ji,jj ) + zwy(ji+1,jj ) 420 zx1 = zwx(ji-1,jj) + zwx(ji-1,jj+1) 421 zx2 = zwx(ji ,jj) + zwx(ji ,jj+1) 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 ) 424 END DO 425 END DO 392 DO_2D_00_00 393 zy1 = zwy(ji,jj-1) + zwy(ji+1,jj-1) 394 zy2 = zwy(ji,jj ) + zwy(ji+1,jj ) 395 zx1 = zwx(ji-1,jj) + zwx(ji-1,jj+1) 396 zx2 = zwx(ji ,jj) + zwx(ji ,jj+1) 397 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 ) 398 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) - r1_4 * r1_e2v(ji,jj) * ( zwz(ji-1,jj ) * zx1 + zwz(ji,jj) * zx2 ) 399 END_2D 426 400 ! ! =============== 427 401 END DO ! End of slab … … 430 404 431 405 432 SUBROUTINE vor_ens( kt, kvor, pun, pvn, pua, pva)406 SUBROUTINE vor_ens( kt, Kmm, kvor, pu, pv, pu_rhs, pv_rhs ) 433 407 !!---------------------------------------------------------------------- 434 408 !! *** ROUTINE vor_ens *** … … 441 415 !! potential enstrophy of a horizontally non-divergent flow. the 442 416 !! trend of the vorticity term is given by: 443 !! 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 !! (u a,va) = (ua,va) + ( voru , vorv )447 !! 448 !! ** Action : - Update ( ua,va) arrays with the now vorticity term trend417 !! voru = 1/e1u mj-1[ (rvor+f)/e3f ] mj-1[ mi(e1v*e3v pvv(:,:,:,Kmm)) ] 418 !! vorv = 1/e2v mi-1[ (rvor+f)/e3f ] mi-1[ mj(e2u*e3u puu(:,:,:,Kmm)) ] 419 !! Add this trend to the general momentum trend: 420 !! (u(rhs),v(Krhs)) = (u(rhs),v(Krhs)) + ( voru , vorv ) 421 !! 422 !! ** Action : - Update (pu_rhs,pv_rhs)) arrays with the now vorticity term trend 449 423 !! 450 424 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 451 425 !!---------------------------------------------------------------------- 452 426 INTEGER , INTENT(in ) :: kt ! ocean time-step index 427 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 453 428 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 454 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu n, pvn! now velocities455 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu a, pva! total v-trend429 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu, pv ! now velocities 430 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu_rhs, pv_rhs ! total v-trend 456 431 ! 457 432 INTEGER :: ji, jj, jk ! dummy loop indices … … 473 448 zwz(:,:) = ff_f(:,:) 474 449 CASE ( np_RVO ) !* relative vorticity 475 DO jj = 1, jpjm1 476 DO ji = 1, fs_jpim1 ! vector opt. 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) 479 END DO 480 END DO 450 DO_2D_10_10 451 zwz(ji,jj) = ( e2v(ji+1,jj ) * pv(ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 452 & - e1u(ji ,jj+1) * pu(ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj) 453 END_2D 481 454 CASE ( np_MET ) !* metric term 482 DO jj = 1, jpjm1 483 DO ji = 1, fs_jpim1 ! vector opt. 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) 486 END DO 487 END DO 455 DO_2D_10_10 456 zwz(ji,jj) = ( pv(ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 457 & - ( pu(ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 458 END_2D 488 459 CASE ( np_CRV ) !* Coriolis + relative vorticity 489 DO jj = 1, jpjm1 490 DO ji = 1, fs_jpim1 ! vector opt. 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) 493 END DO 494 END DO 460 DO_2D_10_10 461 zwz(ji,jj) = ff_f(ji,jj) + ( e2v(ji+1,jj ) * pv(ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 462 & - e1u(ji ,jj+1) * pu(ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj) 463 END_2D 495 464 CASE ( np_CME ) !* Coriolis + metric 496 DO jj = 1, jpjm1 497 DO ji = 1, fs_jpim1 ! vector opt. 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) 500 END DO 501 END DO 465 DO_2D_10_10 466 zwz(ji,jj) = ff_f(ji,jj) + ( pv(ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 467 & - ( pu(ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 468 END_2D 502 469 CASE DEFAULT ! error 503 470 CALL ctl_stop('STOP','dyn_vor: wrong value for kvor' ) … … 505 472 ! 506 473 IF( ln_dynvor_msk ) THEN !== mask/unmask vorticity ==! 507 DO jj = 1, jpjm1 508 DO ji = 1, fs_jpim1 ! vector opt. 509 zwz(ji,jj) = zwz(ji,jj) * fmask(ji,jj,jk) 510 END DO 511 END DO 474 DO_2D_10_10 475 zwz(ji,jj) = zwz(ji,jj) * fmask(ji,jj,jk) 476 END_2D 512 477 ENDIF 513 478 ! 514 479 IF( ln_sco ) THEN !== horizontal fluxes ==! 515 zwz(:,:) = zwz(:,:) / e3f _n(:,:,jk)516 zwx(:,:) = e2u(:,:) * e3u _n(:,:,jk) * pun(:,:,jk)517 zwy(:,:) = e1v(:,:) * e3v _n(:,:,jk) * pvn(:,:,jk)480 zwz(:,:) = zwz(:,:) / e3f(:,:,jk) 481 zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 482 zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 518 483 ELSE 519 zwx(:,:) = e2u(:,:) * pu n(:,:,jk)520 zwy(:,:) = e1v(:,:) * pv n(:,:,jk)484 zwx(:,:) = e2u(:,:) * pu(:,:,jk) 485 zwy(:,:) = e1v(:,:) * pv(:,:,jk) 521 486 ENDIF 522 487 ! !== compute and add the vorticity term trend =! 523 DO jj = 2, jpjm1 524 DO ji = fs_2, fs_jpim1 ! vector opt. 525 zuav = r1_8 * r1_e1u(ji,jj) * ( zwy(ji ,jj-1) + zwy(ji+1,jj-1) & 526 & + zwy(ji ,jj ) + zwy(ji+1,jj ) ) 527 zvau =-r1_8 * r1_e2v(ji,jj) * ( zwx(ji-1,jj ) + zwx(ji-1,jj+1) & 528 & + zwx(ji ,jj ) + zwx(ji ,jj+1) ) 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) ) 531 END DO 532 END DO 488 DO_2D_00_00 489 zuav = r1_8 * r1_e1u(ji,jj) * ( zwy(ji ,jj-1) + zwy(ji+1,jj-1) & 490 & + zwy(ji ,jj ) + zwy(ji+1,jj ) ) 491 zvau =-r1_8 * r1_e2v(ji,jj) * ( zwx(ji-1,jj ) + zwx(ji-1,jj+1) & 492 & + zwx(ji ,jj ) + zwx(ji ,jj+1) ) 493 pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + zuav * ( zwz(ji ,jj-1) + zwz(ji,jj) ) 494 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) + zvau * ( zwz(ji-1,jj ) + zwz(ji,jj) ) 495 END_2D 533 496 ! ! =============== 534 497 END DO ! End of slab … … 537 500 538 501 539 SUBROUTINE vor_een( kt, kvor, pun, pvn, pua, pva)502 SUBROUTINE vor_een( kt, Kmm, kvor, pu, pv, pu_rhs, pv_rhs ) 540 503 !!---------------------------------------------------------------------- 541 504 !! *** ROUTINE vor_een *** … … 548 511 !! both the horizontal kinetic energy and the potential enstrophy 549 512 !! when horizontal divergence is zero (see the NEMO documentation) 550 !! Add this trend to the general momentum trend ( ua,va).551 !! 552 !! ** Action : - Update ( ua,va) with the now vorticity term trend513 !! Add this trend to the general momentum trend (pu_rhs,pv_rhs). 514 !! 515 !! ** Action : - Update (pu_rhs,pv_rhs) with the now vorticity term trend 553 516 !! 554 517 !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 555 518 !!---------------------------------------------------------------------- 556 519 INTEGER , INTENT(in ) :: kt ! ocean time-step index 520 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 557 521 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 558 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu n, pvn! now velocities559 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu a, pva! total v-trend522 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu, pv ! now velocities 523 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu_rhs, pv_rhs ! total v-trend 560 524 ! 561 525 INTEGER :: ji, jj, jk ! dummy loop indices … … 580 544 SELECT CASE( nn_een_e3f ) ! == reciprocal of e3 at F-point 581 545 CASE ( 0 ) ! original formulation (masked averaging of e3t divided by 4) 582 DO jj = 1, jpjm1 583 DO ji = 1, fs_jpim1 ! vector opt. 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) ) 586 IF( ze3f /= 0._wp ) THEN ; z1_e3f(ji,jj) = 4._wp / ze3f 587 ELSE ; z1_e3f(ji,jj) = 0._wp 588 ENDIF 589 END DO 590 END DO 546 DO_2D_10_10 547 ze3f = ( e3t(ji,jj+1,jk,Kmm)*tmask(ji,jj+1,jk) + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk) & 548 & + e3t(ji,jj ,jk,Kmm)*tmask(ji,jj ,jk) + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk) ) 549 IF( ze3f /= 0._wp ) THEN ; z1_e3f(ji,jj) = 4._wp / ze3f 550 ELSE ; z1_e3f(ji,jj) = 0._wp 551 ENDIF 552 END_2D 591 553 CASE ( 1 ) ! new formulation (masked averaging of e3t divided by the sum of mask) 592 DO jj = 1, jpjm1 593 DO ji = 1, fs_jpim1 ! vector opt. 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) ) 596 zmsk = ( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) & 597 & + tmask(ji,jj ,jk) + tmask(ji+1,jj ,jk) ) 598 IF( ze3f /= 0._wp ) THEN ; z1_e3f(ji,jj) = zmsk / ze3f 599 ELSE ; z1_e3f(ji,jj) = 0._wp 600 ENDIF 601 END DO 602 END DO 554 DO_2D_10_10 555 ze3f = ( e3t(ji,jj+1,jk,Kmm)*tmask(ji,jj+1,jk) + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk) & 556 & + e3t(ji,jj ,jk,Kmm)*tmask(ji,jj ,jk) + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk) ) 557 zmsk = ( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) & 558 & + tmask(ji,jj ,jk) + tmask(ji+1,jj ,jk) ) 559 IF( ze3f /= 0._wp ) THEN ; z1_e3f(ji,jj) = zmsk / ze3f 560 ELSE ; z1_e3f(ji,jj) = 0._wp 561 ENDIF 562 END_2D 603 563 END SELECT 604 564 ! 605 565 SELECT CASE( kvor ) !== vorticity considered ==! 606 566 CASE ( np_COR ) !* Coriolis (planetary vorticity) 607 DO jj = 1, jpjm1 608 DO ji = 1, fs_jpim1 ! vector opt. 609 zwz(ji,jj,jk) = ff_f(ji,jj) * z1_e3f(ji,jj) 610 END DO 611 END DO 567 DO_2D_10_10 568 zwz(ji,jj,jk) = ff_f(ji,jj) * z1_e3f(ji,jj) 569 END_2D 612 570 CASE ( np_RVO ) !* relative vorticity 613 DO jj = 1, jpjm1 614 DO ji = 1, fs_jpim1 ! vector opt. 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) 617 END DO 618 END DO 571 DO_2D_10_10 572 zwz(ji,jj,jk) = ( e2v(ji+1,jj ) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 573 & - e1u(ji ,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) * r1_e1e2f(ji,jj)*z1_e3f(ji,jj) 574 END_2D 619 575 CASE ( np_MET ) !* metric term 620 DO jj = 1, jpjm1 621 DO ji = 1, fs_jpim1 ! vector opt. 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) 624 END DO 625 END DO 576 DO_2D_10_10 577 zwz(ji,jj,jk) = ( ( pv(ji+1,jj,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 578 & - ( pu(ji,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) ) * z1_e3f(ji,jj) 579 END_2D 626 580 CASE ( np_CRV ) !* Coriolis + relative vorticity 627 DO jj = 1, jpjm1 628 DO ji = 1, fs_jpim1 ! vector opt. 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) ) & 631 & * r1_e1e2f(ji,jj) ) * z1_e3f(ji,jj) 632 END DO 633 END DO 581 DO_2D_10_10 582 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( e2v(ji+1,jj ) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 583 & - e1u(ji ,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) & 584 & * r1_e1e2f(ji,jj) ) * z1_e3f(ji,jj) 585 END_2D 634 586 CASE ( np_CME ) !* Coriolis + metric 635 DO jj = 1, jpjm1 636 DO ji = 1, fs_jpim1 ! vector opt. 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) 639 END DO 640 END DO 587 DO_2D_10_10 588 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( pv(ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 589 & - ( pu(ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) ) * z1_e3f(ji,jj) 590 END_2D 641 591 CASE DEFAULT ! error 642 592 CALL ctl_stop('STOP','dyn_vor: wrong value for kvor' ) … … 644 594 ! 645 595 IF( ln_dynvor_msk ) THEN !== mask/unmask vorticity ==! 646 DO jj = 1, jpjm1 647 DO ji = 1, fs_jpim1 ! vector opt. 648 zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 649 END DO 650 END DO 596 DO_2D_10_10 597 zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 598 END_2D 651 599 ENDIF 652 600 END DO ! End of slab … … 657 605 ! 658 606 ! !== horizontal fluxes ==! 659 zwx(:,:) = e2u(:,:) * e3u _n(:,:,jk) * pun(:,:,jk)660 zwy(:,:) = e1v(:,:) * e3v _n(:,:,jk) * pvn(:,:,jk)607 zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 608 zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 661 609 662 610 ! !== compute and add the vorticity term trend =! … … 670 618 END DO 671 619 DO jj = 3, jpj 672 DO ji = fs_2, jpi ! vector opt. ok because we start at jj = 3620 DO ji = 2, jpi ! vector opt. ok because we start at jj = 3 673 621 ztne(ji,jj) = zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) + zwz(ji ,jj-1,jk) 674 622 ztnw(ji,jj) = zwz(ji-1,jj-1,jk) + zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) … … 677 625 END DO 678 626 END DO 679 DO jj = 2, jpjm1 680 DO ji = fs_2, fs_jpim1 ! vector opt. 681 zua = + r1_12 * r1_e1u(ji,jj) * ( ztne(ji,jj ) * zwy(ji ,jj ) + ztnw(ji+1,jj) * zwy(ji+1,jj ) & 682 & + ztse(ji,jj ) * zwy(ji ,jj-1) + ztsw(ji+1,jj) * zwy(ji+1,jj-1) ) 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) & 684 & + ztnw(ji,jj ) * zwx(ji-1,jj ) + ztne(ji,jj ) * zwx(ji ,jj ) ) 685 pua(ji,jj,jk) = pua(ji,jj,jk) + zua 686 pva(ji,jj,jk) = pva(ji,jj,jk) + zva 687 END DO 688 END DO 627 DO_2D_00_00 628 zua = + r1_12 * r1_e1u(ji,jj) * ( ztne(ji,jj ) * zwy(ji ,jj ) + ztnw(ji+1,jj) * zwy(ji+1,jj ) & 629 & + ztse(ji,jj ) * zwy(ji ,jj-1) + ztsw(ji+1,jj) * zwy(ji+1,jj-1) ) 630 zva = - r1_12 * r1_e2v(ji,jj) * ( ztsw(ji,jj+1) * zwx(ji-1,jj+1) + ztse(ji,jj+1) * zwx(ji ,jj+1) & 631 & + ztnw(ji,jj ) * zwx(ji-1,jj ) + ztne(ji,jj ) * zwx(ji ,jj ) ) 632 pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + zua 633 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) + zva 634 END_2D 689 635 ! ! =============== 690 636 END DO ! End of slab … … 694 640 695 641 696 SUBROUTINE vor_eeT( kt, kvor, pun, pvn, pua, pva)642 SUBROUTINE vor_eeT( kt, Kmm, kvor, pu, pv, pu_rhs, pv_rhs ) 697 643 !!---------------------------------------------------------------------- 698 644 !! *** ROUTINE vor_eeT *** … … 705 651 !! a modified version of Arakawa and Lamb (1980) scheme (see vor_een). 706 652 !! The change consists in 707 !! Add this trend to the general momentum trend ( ua,va).708 !! 709 !! ** Action : - Update ( ua,va) with the now vorticity term trend653 !! Add this trend to the general momentum trend (pu_rhs,pv_rhs). 654 !! 655 !! ** Action : - Update (pu_rhs,pv_rhs) with the now vorticity term trend 710 656 !! 711 657 !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 712 658 !!---------------------------------------------------------------------- 713 659 INTEGER , INTENT(in ) :: kt ! ocean time-step index 660 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 714 661 INTEGER , INTENT(in ) :: kvor ! total, planetary, relative, or metric 715 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu n, pvn! now velocities716 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu a, pva! total v-trend662 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu, pv ! now velocities 663 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pu_rhs, pv_rhs ! total v-trend 717 664 ! 718 665 INTEGER :: ji, jj, jk ! dummy loop indices … … 738 685 SELECT CASE( kvor ) !== vorticity considered ==! 739 686 CASE ( np_COR ) !* Coriolis (planetary vorticity) 740 DO jj = 1, jpjm1 741 DO ji = 1, fs_jpim1 ! vector opt. 742 zwz(ji,jj,jk) = ff_f(ji,jj) 743 END DO 744 END DO 687 DO_2D_10_10 688 zwz(ji,jj,jk) = ff_f(ji,jj) 689 END_2D 745 690 CASE ( np_RVO ) !* relative vorticity 746 DO jj = 1, jpjm1 747 DO ji = 1, fs_jpim1 ! vector opt. 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) ) & 750 & * r1_e1e2f(ji,jj) 751 END DO 752 END DO 691 DO_2D_10_10 692 zwz(ji,jj,jk) = ( e2v(ji+1,jj ) * pv(ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 693 & - e1u(ji ,jj+1) * pu(ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) & 694 & * r1_e1e2f(ji,jj) 695 END_2D 753 696 CASE ( np_MET ) !* metric term 754 DO jj = 1, jpjm1 755 DO ji = 1, fs_jpim1 ! vector opt. 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) 758 END DO 759 END DO 697 DO_2D_10_10 698 zwz(ji,jj,jk) = ( pv(ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 699 & - ( pu(ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 700 END_2D 760 701 CASE ( np_CRV ) !* Coriolis + relative vorticity 761 DO jj = 1, jpjm1 762 DO ji = 1, fs_jpim1 ! vector opt. 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) ) & 765 & * r1_e1e2f(ji,jj) ) 766 END DO 767 END DO 702 DO_2D_10_10 703 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( e2v(ji+1,jj ) * pv(ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 704 & - e1u(ji ,jj+1) * pu(ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) & 705 & * r1_e1e2f(ji,jj) ) 706 END_2D 768 707 CASE ( np_CME ) !* Coriolis + metric 769 DO jj = 1, jpjm1 770 DO ji = 1, fs_jpim1 ! vector opt. 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) 773 END DO 774 END DO 708 DO_2D_10_10 709 zwz(ji,jj,jk) = ff_f(ji,jj) + ( pv(ji+1,jj ,jk) + pv(ji,jj,jk) ) * di_e2v_2e1e2f(ji,jj) & 710 & - ( pu(ji ,jj+1,jk) + pu(ji,jj,jk) ) * dj_e1u_2e1e2f(ji,jj) 711 END_2D 775 712 CASE DEFAULT ! error 776 713 CALL ctl_stop('STOP','dyn_vor: wrong value for kvor' ) … … 778 715 ! 779 716 IF( ln_dynvor_msk ) THEN !== mask/unmask vorticity ==! 780 DO jj = 1, jpjm1 781 DO ji = 1, fs_jpim1 ! vector opt. 782 zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 783 END DO 784 END DO 717 DO_2D_10_10 718 zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 719 END_2D 785 720 ENDIF 786 721 END DO … … 791 726 792 727 ! !== horizontal fluxes ==! 793 zwx(:,:) = e2u(:,:) * e3u _n(:,:,jk) * pun(:,:,jk)794 zwy(:,:) = e1v(:,:) * e3v _n(:,:,jk) * pvn(:,:,jk)728 zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 729 zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 795 730 796 731 ! !== compute and add the vorticity term trend =! … … 798 733 ztne(1,:) = 0 ; ztnw(1,:) = 0 ; ztse(1,:) = 0 ; ztsw(1,:) = 0 799 734 DO ji = 2, jpi ! split in 2 parts due to vector opt. 800 z1_e3t = 1._wp / e3t _n(ji,jj,jk)735 z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm) 801 736 ztne(ji,jj) = ( zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) + zwz(ji ,jj-1,jk) ) * z1_e3t 802 737 ztnw(ji,jj) = ( zwz(ji-1,jj-1,jk) + zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) ) * z1_e3t … … 805 740 END DO 806 741 DO jj = 3, jpj 807 DO ji = fs_2, jpi ! vector opt. ok because we start at jj = 3808 z1_e3t = 1._wp / e3t _n(ji,jj,jk)742 DO ji = 2, jpi ! vector opt. ok because we start at jj = 3 743 z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm) 809 744 ztne(ji,jj) = ( zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) + zwz(ji ,jj-1,jk) ) * z1_e3t 810 745 ztnw(ji,jj) = ( zwz(ji-1,jj-1,jk) + zwz(ji-1,jj ,jk) + zwz(ji ,jj ,jk) ) * z1_e3t … … 813 748 END DO 814 749 END DO 815 DO jj = 2, jpjm1 816 DO ji = fs_2, fs_jpim1 ! vector opt. 817 zua = + r1_12 * r1_e1u(ji,jj) * ( ztne(ji,jj ) * zwy(ji ,jj ) + ztnw(ji+1,jj) * zwy(ji+1,jj ) & 818 & + ztse(ji,jj ) * zwy(ji ,jj-1) + ztsw(ji+1,jj) * zwy(ji+1,jj-1) ) 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) & 820 & + ztnw(ji,jj ) * zwx(ji-1,jj ) + ztne(ji,jj ) * zwx(ji ,jj ) ) 821 pua(ji,jj,jk) = pua(ji,jj,jk) + zua 822 pva(ji,jj,jk) = pva(ji,jj,jk) + zva 823 END DO 824 END DO 750 DO_2D_00_00 751 zua = + r1_12 * r1_e1u(ji,jj) * ( ztne(ji,jj ) * zwy(ji ,jj ) + ztnw(ji+1,jj) * zwy(ji+1,jj ) & 752 & + ztse(ji,jj ) * zwy(ji ,jj-1) + ztsw(ji+1,jj) * zwy(ji+1,jj-1) ) 753 zva = - r1_12 * r1_e2v(ji,jj) * ( ztsw(ji,jj+1) * zwx(ji-1,jj+1) + ztse(ji,jj+1) * zwx(ji ,jj+1) & 754 & + ztnw(ji,jj ) * zwx(ji-1,jj ) + ztne(ji,jj ) * zwx(ji ,jj ) ) 755 pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + zua 756 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) + zva 757 END_2D 825 758 ! ! =============== 826 759 END DO ! End of slab … … 849 782 ENDIF 850 783 ! 851 REWIND( numnam_ref ) ! Namelist namdyn_vor in reference namelist : Vorticity scheme options852 784 READ ( numnam_ref, namdyn_vor, IOSTAT = ios, ERR = 901) 853 785 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_vor in reference namelist' ) 854 REWIND( numnam_cfg ) ! Namelist namdyn_vor in configuration namelist : Vorticity scheme options855 786 READ ( numnam_cfg, namdyn_vor, IOSTAT = ios, ERR = 902 ) 856 787 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdyn_vor in configuration namelist' ) … … 877 808 IF(lwp) WRITE(numout,*) ' change fmask value in the angles (T) ln_vorlat = ', ln_vorlat 878 809 IF( ln_vorlat .AND. ( ln_dynvor_ene .OR. ln_dynvor_ens .OR. ln_dynvor_mix ) ) THEN 879 DO jk = 1, jpk 880 DO jj = 1, jpjm1 881 DO ji = 1, jpim1 882 IF( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) & 883 & + tmask(ji,jj ,jk) + tmask(ji+1,jj+1,jk) == 3._wp ) fmask(ji,jj,jk) = 1._wp 884 END DO 885 END DO 886 END DO 810 DO_3D_10_10( 1, jpk ) 811 IF( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) & 812 & + tmask(ji,jj ,jk) + tmask(ji+1,jj ,jk) == 3._wp ) fmask(ji,jj,jk) = 1._wp 813 END_3D 887 814 ! 888 815 CALL lbc_lnk( 'dynvor', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask … … 920 847 CASE( np_ENT ) !* T-point metric term : pre-compute di(e2u)/2 and dj(e1v)/2 921 848 ALLOCATE( di_e2u_2(jpi,jpj), dj_e1v_2(jpi,jpj) ) 922 DO jj = 2, jpjm1 923 DO ji = 2, jpim1 924 di_e2u_2(ji,jj) = ( e2u(ji,jj) - e2u(ji-1,jj ) ) * 0.5_wp 925 dj_e1v_2(ji,jj) = ( e1v(ji,jj) - e1v(ji ,jj-1) ) * 0.5_wp 926 END DO 927 END DO 849 DO_2D_00_00 850 di_e2u_2(ji,jj) = ( e2u(ji,jj) - e2u(ji-1,jj ) ) * 0.5_wp 851 dj_e1v_2(ji,jj) = ( e1v(ji,jj) - e1v(ji ,jj-1) ) * 0.5_wp 852 END_2D 928 853 CALL lbc_lnk_multi( 'dynvor', di_e2u_2, 'T', -1. , dj_e1v_2, 'T', -1. ) ! Lateral boundary conditions 929 854 ! 930 855 CASE DEFAULT !* F-point metric term : pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) 931 856 ALLOCATE( di_e2v_2e1e2f(jpi,jpj), dj_e1u_2e1e2f(jpi,jpj) ) 932 DO jj = 1, jpjm1 933 DO ji = 1, jpim1 934 di_e2v_2e1e2f(ji,jj) = ( e2v(ji+1,jj ) - e2v(ji,jj) ) * 0.5 * r1_e1e2f(ji,jj) 935 dj_e1u_2e1e2f(ji,jj) = ( e1u(ji ,jj+1) - e1u(ji,jj) ) * 0.5 * r1_e1e2f(ji,jj) 936 END DO 937 END DO 857 DO_2D_10_10 858 di_e2v_2e1e2f(ji,jj) = ( e2v(ji+1,jj ) - e2v(ji,jj) ) * 0.5 * r1_e1e2f(ji,jj) 859 dj_e1u_2e1e2f(ji,jj) = ( e1u(ji ,jj+1) - e1u(ji,jj) ) * 0.5 * r1_e1e2f(ji,jj) 860 END_2D 938 861 CALL lbc_lnk_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1. , dj_e1u_2e1e2f, 'F', -1. ) ! Lateral boundary conditions 939 862 END SELECT
Note: See TracChangeset
for help on using the changeset viewer.