Changeset 15033 for NEMO/trunk/src/OCE/TRD
- Timestamp:
- 2021-06-21T12:24:45+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/TRD/trdvor.F90
r14433 r15033 95 95 !!---------------------------------------------------------------------- 96 96 97 CALL lbc_lnk( 'trdvor', putrd, 'U', -1.0_wp , pvtrd, 'V', -1.0_wp ) ! lateral boundary condition 98 97 99 SELECT CASE( ktrd ) 98 100 CASE( jpdyn_hpg ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_prg, Kmm ) ! Hydrostatique Pressure Gradient … … 104 106 CASE( jpdyn_spg ) ; CALL trd_vor_zint( putrd, pvtrd, jpvor_spg, Kmm ) ! Surface Pressure Grad. 105 107 CASE( jpdyn_zdf ) ! Vertical Diffusion 106 ztswu(:,:) = 0.e0 ; ztswv(:,:) = 0.e0 107 DO_2D( 0, 0, 0, 0 ) ! wind stress trends 108 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! wind stress trends 108 109 ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u(ji,jj,1,Kmm) * rho0 ) 109 110 ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v(ji,jj,1,Kmm) * rho0 ) 110 111 END_2D 111 !112 112 CALL trd_vor_zint( putrd, pvtrd, jpvor_zdf, Kmm ) ! zdf trend including surf./bot. stresses 113 113 CALL trd_vor_zint( ztswu, ztswv, jpvor_swf, Kmm ) ! surface wind stress … … 142 142 !! vortrd (,, 9) = Beta V 143 143 !! vortrd (,,10) = forcing term 144 !! 144 !! vortrd (,,11) = bottom friction term 145 145 !! rotot(,) : total cumulative trends over nn_write-1 time steps 146 146 !! vor_avrtot(,) : first membre of vrticity equation … … 149 149 !! trends output in netCDF format using ioipsl 150 150 !!---------------------------------------------------------------------- 151 INTEGER , INTENT(in 152 INTEGER , INTENT(in 153 REAL(wp), DIMENSION(jpi,jpj), INTENT(in out) :: putrdvor ! u vorticity trend154 REAL(wp), DIMENSION(jpi,jpj), INTENT(in out) :: pvtrdvor ! v vorticity trend151 INTEGER , INTENT(in) :: ktrd ! ocean trend index 152 INTEGER , INTENT(in) :: Kmm ! time level index 153 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: putrdvor ! u vorticity trend 154 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pvtrdvor ! v vorticity trend 155 155 ! 156 156 INTEGER :: ji, jj ! dummy loop indices … … 159 159 !!---------------------------------------------------------------------- 160 160 161 !162 163 zudpvor(:,:) = 0._wp ; zvdpvor(:,:) = 0._wp ! Initialisation164 CALL lbc_lnk( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp ) ! lateral boundary condition165 166 167 161 ! ===================================== 168 162 ! I vertical integration of 2D trends … … 172 166 ! 173 167 CASE( jpvor_bfr ) ! bottom friction 174 DO_2D( 0, 0, 0, 0)168 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 175 169 ikbu = mbkv(ji,jj) 176 170 ikbv = mbkv(ji,jj) … … 190 184 191 185 ! Curl 192 DO ji = 1, jpim1 193 DO jj = 1, jpjm1 194 vortrd(ji,jj,ktrd) = ( zvdpvor(ji+1,jj) - zvdpvor(ji,jj) & 195 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) & 196 & / ( e1f(ji,jj) * e2f(ji,jj) ) 197 END DO 198 END DO 199 vortrd(:,:,ktrd) = vortrd(:,:,ktrd) * fmask(:,:,1) ! Surface mask 186 DO_2D( 0, 0, 0, 0 ) 187 vortrd(ji,jj,ktrd) = ( zvdpvor(ji+1,jj) - zvdpvor(ji,jj) & 188 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) & 189 & / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1) 190 END_2D 200 191 201 192 IF( ndebug /= 0 ) THEN … … 235 226 !!---------------------------------------------------------------------- 236 227 ! 237 INTEGER , INTENT(in 238 INTEGER , INTENT(in 239 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in out) :: putrdvor ! u vorticity trend240 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in out) :: pvtrdvor ! v vorticity trend228 INTEGER , INTENT(in) :: ktrd ! ocean trend index 229 INTEGER , INTENT(in) :: Kmm ! time level index 230 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) :: putrdvor ! u vorticity trend 231 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) :: pvtrdvor ! v vorticity trend 241 232 ! 242 233 INTEGER :: ji, jj, jk ! dummy loop indices 243 REAL(wp), DIMENSION(jpi,jpj) :: zubet , zvbet ! Beta.V244 234 REAL(wp), DIMENSION(jpi,jpj) :: zudpvor, zvdpvor ! total cmulative trends 245 235 !!---------------------------------------------------------------------- 246 247 ! Initialization248 zubet (:,:) = 0._wp249 zvbet (:,:) = 0._wp250 zudpvor(:,:) = 0._wp251 zvdpvor(:,:) = 0._wp252 ! ! lateral boundary condition on input momentum trends253 CALL lbc_lnk( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp )254 236 255 237 ! ===================================== … … 265 247 ! as Beta.V term need intergration, not average 266 248 IF( ktrd == jpvor_pvo ) THEN 267 zubet(:,:) = zudpvor(:,:) 268 zvbet(:,:) = zvdpvor(:,:) 269 DO ji = 1, jpim1 270 DO jj = 1, jpjm1 271 vortrd(ji,jj,jpvor_bev) = ( zvbet(ji+1,jj) - zvbet(ji,jj) & 272 & - ( zubet(ji,jj+1) - zubet(ji,jj) ) ) & 273 & / ( e1f(ji,jj) * e2f(ji,jj) ) 274 END DO 275 END DO 276 ! Average of the Curl and Surface mask 277 vortrd(:,:,jpvor_bev) = vortrd(:,:,jpvor_bev) * r1_hu(:,:,Kmm) * fmask(:,:,1) 249 DO_2D( 0, 0, 0, 0 ) 250 vortrd(ji,jj,jpvor_bev) = ( zvdpvor(ji+1,jj) - zvdpvor(ji,jj) & 251 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) & 252 & / ( e1f(ji,jj) * e2f(ji,jj) ) * r1_hu(ji,jj,Kmm) * fmask(ji,jj,1) 253 END_2D 278 254 ENDIF 279 255 ! … … 283 259 ! 284 260 ! Curl 285 DO ji=1,jpim1 286 DO jj=1,jpjm1 287 vortrd(ji,jj,ktrd) = ( zvdpvor(ji+1,jj) - zvdpvor(ji,jj) & 288 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) & 289 & / ( e1f(ji,jj) * e2f(ji,jj) ) 290 END DO 291 END DO 292 ! Surface mask 293 vortrd(:,:,ktrd) = vortrd(:,:,ktrd) * fmask(:,:,1) 261 DO_2D( 0, 0, 0, 0 ) 262 vortrd(ji,jj,ktrd) = ( zvdpvor(ji+1,jj) - zvdpvor(ji,jj) & 263 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) & 264 & / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1) 265 END_2D 294 266 295 267 IF( ndebug /= 0 ) THEN … … 346 318 347 319 ! Curl 348 DO ji = 1, jpim1 349 DO jj = 1, jpjm1 350 vor_avr(ji,jj) = ( ( zvv(ji+1,jj) - zvv(ji,jj) ) & 351 & - ( zuu(ji,jj+1) - zuu(ji,jj) ) ) & 352 & / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1) 353 END DO 354 END DO 320 DO_2D( 0, 0, 0, 0 ) 321 vor_avr(ji,jj) = ( ( zvv(ji+1,jj) - zvv(ji,jj) ) & 322 & - ( zuu(ji,jj+1) - zuu(ji,jj) ) ) & 323 & / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1) 324 END_2D 355 325 356 326 ! =================================
Note: See TracChangeset
for help on using the changeset viewer.