- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TRD/trdvor.F90
r11536 r11949 78 78 79 79 80 SUBROUTINE trd_vor( putrd, pvtrd, ktrd, kt )80 SUBROUTINE trd_vor( putrd, pvtrd, ktrd, kt, Kmm ) 81 81 !!---------------------------------------------------------------------- 82 82 !! *** ROUTINE trd_vor *** … … 88 88 INTEGER , INTENT(in ) :: ktrd ! trend index 89 89 INTEGER , INTENT(in ) :: kt ! time step 90 INTEGER , INTENT(in ) :: Kmm ! time level index 90 91 ! 91 92 INTEGER :: ji, jj ! dummy loop indices … … 94 95 95 96 SELECT CASE( ktrd ) 96 CASE( jpdyn_hpg ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_prg ) ! Hydrostatique Pressure Gradient97 CASE( jpdyn_keg ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_keg ) ! KE Gradient98 CASE( jpdyn_rvo ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_rvo ) ! Relative Vorticity99 CASE( jpdyn_pvo ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_pvo ) ! Planetary Vorticity Term100 CASE( jpdyn_ldf ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_ldf ) ! Horizontal Diffusion101 CASE( jpdyn_zad ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_zad ) ! Vertical Advection102 CASE( jpdyn_spg ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_spg ) ! Surface Pressure Grad.97 CASE( jpdyn_hpg ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_prg, Kmm ) ! Hydrostatique Pressure Gradient 98 CASE( jpdyn_keg ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_keg, Kmm ) ! KE Gradient 99 CASE( jpdyn_rvo ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_rvo, Kmm ) ! Relative Vorticity 100 CASE( jpdyn_pvo ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_pvo, Kmm ) ! Planetary Vorticity Term 101 CASE( jpdyn_ldf ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_ldf, Kmm ) ! Horizontal Diffusion 102 CASE( jpdyn_zad ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_zad, Kmm ) ! Vertical Advection 103 CASE( jpdyn_spg ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_spg, Kmm ) ! Surface Pressure Grad. 103 104 CASE( jpdyn_zdf ) ! Vertical Diffusion 104 105 ztswu(:,:) = 0.e0 ; ztswv(:,:) = 0.e0 105 106 DO jj = 2, jpjm1 ! wind stress trends 106 107 DO ji = fs_2, fs_jpim1 ! vector opt. 107 ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u _n(ji,jj,1) * rau0 )108 ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v _n(ji,jj,1) * rau0 )108 ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u(ji,jj,1,Kmm) * rau0 ) 109 ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v(ji,jj,1,Kmm) * rau0 ) 109 110 END DO 110 111 END DO 111 112 ! 112 CALL trd_vor_zint( putrd, pvtrd, jpvor_zdf ) ! zdf trend including surf./bot. stresses113 CALL trd_vor_zint( ztswu, ztswv, jpvor_swf ) ! surface wind stress113 CALL trd_vor_zint( putrd, pvtrd, jpvor_zdf, Kmm ) ! zdf trend including surf./bot. stresses 114 CALL trd_vor_zint( ztswu, ztswv, jpvor_swf, Kmm ) ! surface wind stress 114 115 CASE( jpdyn_bfr ) 115 CALL trd_vor_zint( putrd, pvtrd, jpvor_bfr ) ! Bottom stress116 CALL trd_vor_zint( putrd, pvtrd, jpvor_bfr, Kmm ) ! Bottom stress 116 117 ! 117 118 CASE( jpdyn_atf ) ! last trends: perform the output of 2D vorticity trends 118 CALL trd_vor_iom( kt )119 CALL trd_vor_iom( kt, Kmm ) 119 120 END SELECT 120 121 ! … … 122 123 123 124 124 SUBROUTINE trd_vor_zint_2d( putrdvor, pvtrdvor, ktrd )125 SUBROUTINE trd_vor_zint_2d( putrdvor, pvtrdvor, ktrd, Kmm ) 125 126 !!---------------------------------------------------------------------------- 126 127 !! *** ROUTINE trd_vor_zint *** … … 150 151 !!---------------------------------------------------------------------- 151 152 INTEGER , INTENT(in ) :: ktrd ! ocean trend index 153 INTEGER , INTENT(in ) :: Kmm ! time level index 152 154 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: putrdvor ! u vorticity trend 153 155 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: pvtrdvor ! v vorticity trend … … 175 177 ikbu = mbkv(ji,jj) 176 178 ikbv = mbkv(ji,jj) 177 zudpvor(ji,jj) = putrdvor(ji,jj) * e3u _n(ji,jj,ikbu) * e1u(ji,jj) * umask(ji,jj,ikbu)178 zvdpvor(ji,jj) = pvtrdvor(ji,jj) * e3v _n(ji,jj,ikbv) * e2v(ji,jj) * vmask(ji,jj,ikbv)179 zudpvor(ji,jj) = putrdvor(ji,jj) * e3u(ji,jj,ikbu,Kmm) * e1u(ji,jj) * umask(ji,jj,ikbu) 180 zvdpvor(ji,jj) = pvtrdvor(ji,jj) * e3v(ji,jj,ikbv,Kmm) * e2v(ji,jj) * vmask(ji,jj,ikbv) 179 181 END DO 180 182 END DO 181 183 ! 182 184 CASE( jpvor_swf ) ! wind stress 183 zudpvor(:,:) = putrdvor(:,:) * e3u _n(:,:,1) * e1u(:,:) * umask(:,:,1)184 zvdpvor(:,:) = pvtrdvor(:,:) * e3v _n(:,:,1) * e2v(:,:) * vmask(:,:,1)185 zudpvor(:,:) = putrdvor(:,:) * e3u(:,:,1,Kmm) * e1u(:,:) * umask(:,:,1) 186 zvdpvor(:,:) = pvtrdvor(:,:) * e3v(:,:,1,Kmm) * e2v(:,:) * vmask(:,:,1) 185 187 ! 186 188 END SELECT 187 189 188 190 ! Average except for Beta.V 189 zudpvor(:,:) = zudpvor(:,:) * r1_hu _n(:,:)190 zvdpvor(:,:) = zvdpvor(:,:) * r1_hv _n(:,:)191 zudpvor(:,:) = zudpvor(:,:) * r1_hu(:,:,Kmm) 192 zvdpvor(:,:) = zvdpvor(:,:) * r1_hv(:,:,Kmm) 191 193 192 194 ! Curl … … 207 209 208 210 209 SUBROUTINE trd_vor_zint_3d( putrdvor, pvtrdvor, ktrd )211 SUBROUTINE trd_vor_zint_3d( putrdvor, pvtrdvor, ktrd , Kmm ) 210 212 !!---------------------------------------------------------------------------- 211 213 !! *** ROUTINE trd_vor_zint *** … … 236 238 ! 237 239 INTEGER , INTENT(in ) :: ktrd ! ocean trend index 240 INTEGER , INTENT(in ) :: Kmm ! time level index 238 241 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: putrdvor ! u vorticity trend 239 242 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pvtrdvor ! v vorticity trend … … 257 260 ! putrdvor and pvtrdvor terms 258 261 DO jk = 1,jpk 259 zudpvor(:,:) = zudpvor(:,:) + putrdvor(:,:,jk) * e3u _n(:,:,jk) * e1u(:,:) * umask(:,:,jk)260 zvdpvor(:,:) = zvdpvor(:,:) + pvtrdvor(:,:,jk) * e3v _n(:,:,jk) * e2v(:,:) * vmask(:,:,jk)262 zudpvor(:,:) = zudpvor(:,:) + putrdvor(:,:,jk) * e3u(:,:,jk,Kmm) * e1u(:,:) * umask(:,:,jk) 263 zvdpvor(:,:) = zvdpvor(:,:) + pvtrdvor(:,:,jk) * e3v(:,:,jk,Kmm) * e2v(:,:) * vmask(:,:,jk) 261 264 END DO 262 265 … … 273 276 END DO 274 277 ! Average of the Curl and Surface mask 275 vortrd(:,:,jpvor_bev) = vortrd(:,:,jpvor_bev) * r1_hu _n(:,:) * fmask(:,:,1)278 vortrd(:,:,jpvor_bev) = vortrd(:,:,jpvor_bev) * r1_hu(:,:,Kmm) * fmask(:,:,1) 276 279 ENDIF 277 280 ! 278 281 ! Average 279 zudpvor(:,:) = zudpvor(:,:) * r1_hu _n(:,:)280 zvdpvor(:,:) = zvdpvor(:,:) * r1_hv _n(:,:)282 zudpvor(:,:) = zudpvor(:,:) * r1_hu(:,:,Kmm) 283 zvdpvor(:,:) = zvdpvor(:,:) * r1_hv(:,:,Kmm) 281 284 ! 282 285 ! Curl … … 298 301 299 302 300 SUBROUTINE trd_vor_iom( kt )303 SUBROUTINE trd_vor_iom( kt , Kmm ) 301 304 !!---------------------------------------------------------------------- 302 305 !! *** ROUTINE trd_vor *** … … 306 309 !!---------------------------------------------------------------------- 307 310 INTEGER , INTENT(in ) :: kt ! time step 311 INTEGER , INTENT(in ) :: Kmm ! time level index 308 312 ! 309 313 INTEGER :: ji, jj, jk, jl ! dummy loop indices 310 314 INTEGER :: it, itmod ! local integers 311 315 REAL(wp) :: zmean ! local scalars 312 REAL(wp), DIMENSION(jpi,jpj) :: zu n, zvn316 REAL(wp), DIMENSION(jpi,jpj) :: zuu, zvv 313 317 !!---------------------------------------------------------------------- 314 318 … … 327 331 328 332 vor_avr (:,:) = 0._wp 329 zu n(:,:) = 0._wp330 zv n(:,:) = 0._wp333 zuu (:,:) = 0._wp 334 zvv (:,:) = 0._wp 331 335 vor_avrtot(:,:) = 0._wp 332 336 vor_avrres(:,:) = 0._wp … … 334 338 ! Vertically averaged velocity 335 339 DO jk = 1, jpk - 1 336 zu n(:,:) = zun(:,:) + e1u(:,:) * un(:,:,jk) * e3u_n(:,:,jk)337 zv n(:,:) = zvn(:,:) + e2v(:,:) * vn(:,:,jk) * e3v_n(:,:,jk)340 zuu(:,:) = zuu(:,:) + e1u(:,:) * uu(:,:,jk,Kmm) * e3u(:,:,jk,Kmm) 341 zvv(:,:) = zvv(:,:) + e2v(:,:) * vv(:,:,jk,Kmm) * e3v(:,:,jk,Kmm) 338 342 END DO 339 343 340 zu n(:,:) = zun(:,:) * r1_hu_n(:,:)341 zv n(:,:) = zvn(:,:) * r1_hv_n(:,:)344 zuu(:,:) = zuu(:,:) * r1_hu(:,:,Kmm) 345 zvv(:,:) = zvv(:,:) * r1_hv(:,:,Kmm) 342 346 343 347 ! Curl 344 348 DO ji = 1, jpim1 345 349 DO jj = 1, jpjm1 346 vor_avr(ji,jj) = ( ( zv n(ji+1,jj) - zvn(ji,jj) ) &347 & - ( zu n(ji,jj+1) - zun(ji,jj) ) ) / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1)350 vor_avr(ji,jj) = ( ( zvv(ji+1,jj) - zvv(ji,jj) ) & 351 & - ( zuu(ji,jj+1) - zuu(ji,jj) ) ) / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1) 348 352 END DO 349 353 END DO
Note: See TracChangeset
for help on using the changeset viewer.