Changeset 102 for palm/trunk/SOURCE/diffusion_v.f90
- Timestamp:
- Jul 27, 2007 9:09:17 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/diffusion_v.f90
r77 r102 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Momentumflux at top (vswst) included as boundary condition 7 7 ! 8 8 ! Former revisions: … … 52 52 ! Call for all grid points 53 53 !------------------------------------------------------------------------------! 54 SUBROUTINE diffusion_v( ddzu, ddzw, km, km_damp_x, tend, u, v, vsws, w ) 54 SUBROUTINE diffusion_v( ddzu, ddzw, km, km_damp_x, tend, u, v, vsws, & 55 vswst, w ) 55 56 56 57 USE control_parameters … … 64 65 REAL :: ddzu(1:nzt+1), ddzw(1:nzt+1), km_damp_x(nxl-1:nxr+1) 65 66 REAL :: tend(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) 66 REAL, DIMENSION(:,:), POINTER :: vsws 67 REAL, DIMENSION(:,:), POINTER :: vsws, vswst 67 68 REAL, DIMENSION(:,:,:), POINTER :: km, u, v, w 68 69 REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) :: vsus … … 153 154 !-- Compute vertical diffusion. In case of simulating a Prandtl 154 155 !-- layer, index k starts at nzb_v_inner+2. 155 DO k = nzb_diff_v(j,i), nzt 156 DO k = nzb_diff_v(j,i), nzt_diff 156 157 ! 157 158 !-- Interpolate eddy diffusivities on staggered gridpoints … … 193 194 & + ( kmzp * ( w(k,j,i) - w(k,j-1,i) ) * ddy & 194 195 & ) * ddzw(k) & 195 & + ( kmzp * ( v(k+1,j,i) - v(k,j,i) ) * ddzu(k+1)&196 & + ( kmzp * ( v(k+1,j,i) - v(k,j,i) ) * ddzu(k+1) & 196 197 & + vsws(j,i) & 198 & ) * ddzw(k) 199 ENDIF 200 201 ! 202 !-- Vertical diffusion at the first gridpoint below the top boundary, 203 !-- if the momentum flux at the top is prescribed by the user 204 IF ( use_top_fluxes ) THEN 205 k = nzt 206 ! 207 !-- Interpolate eddy diffusivities on staggered gridpoints 208 kmzp = 0.25 * & 209 ( km(k,j,i)+km(k+1,j,i)+km(k,j-1,i)+km(k+1,j-1,i) ) 210 kmzm = 0.25 * & 211 ( km(k,j,i)+km(k-1,j,i)+km(k,j-1,i)+km(k-1,j-1,i) ) 212 213 tend(k,j,i) = tend(k,j,i) & 214 & - ( kmzm * ( w(k-1,j,i) - w(k-1,j-1,i) ) * ddy & 215 & ) * ddzw(k) & 216 & + ( -vswst(j,i) & 217 & - kmzm * ( v(k,j,i) - v(k-1,j,i) ) * ddzu(k) & 197 218 & ) * ddzw(k) 198 219 ENDIF … … 208 229 !------------------------------------------------------------------------------! 209 230 SUBROUTINE diffusion_v_ij( i, j, ddzu, ddzw, km, km_damp_x, tend, u, v, & 210 vsws, w )231 vsws, vswst, w ) 211 232 212 233 USE control_parameters … … 221 242 REAL :: tend(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) 222 243 REAL, DIMENSION(nzb:nzt+1) :: vsus 223 REAL, DIMENSION(:,:), POINTER :: vsws 244 REAL, DIMENSION(:,:), POINTER :: vsws, vswst 224 245 REAL, DIMENSION(:,:,:), POINTER :: km, u, v, w 225 246 … … 302 323 !-- Compute vertical diffusion. In case of simulating a Prandtl layer, 303 324 !-- index k starts at nzb_v_inner+2. 304 DO k = nzb_diff_v(j,i), nzt 325 DO k = nzb_diff_v(j,i), nzt_diff 305 326 ! 306 327 !-- Interpolate eddy diffusivities on staggered gridpoints … … 338 359 & + ( kmzp * ( w(k,j,i) - w(k,j-1,i) ) * ddy & 339 360 & ) * ddzw(k) & 340 & + ( kmzp * ( v(k+1,j,i) - v(k,j,i) ) * ddzu(k+1)&361 & + ( kmzp * ( v(k+1,j,i) - v(k,j,i) ) * ddzu(k+1) & 341 362 & + vsws(j,i) & 342 363 & ) * ddzw(k) 343 364 ENDIF 344 365 366 ! 367 !-- Vertical diffusion at the first gridpoint below the top boundary, 368 !-- if the momentum flux at the top is prescribed by the user 369 IF ( use_top_fluxes ) THEN 370 k = nzt 371 ! 372 !-- Interpolate eddy diffusivities on staggered gridpoints 373 kmzp = 0.25 * & 374 ( km(k,j,i)+km(k+1,j,i)+km(k,j-1,i)+km(k+1,j-1,i) ) 375 kmzm = 0.25 * & 376 ( km(k,j,i)+km(k-1,j,i)+km(k,j-1,i)+km(k-1,j-1,i) ) 377 378 tend(k,j,i) = tend(k,j,i) & 379 & - ( kmzm * ( w(k-1,j,i) - w(k-1,j-1,i) ) * ddy & 380 & ) * ddzw(k) & 381 & + ( -vswst(j,i) & 382 & - kmzm * ( v(k,j,i) - v(k-1,j,i) ) * ddzu(k) & 383 & ) * ddzw(k) 384 ENDIF 385 345 386 END SUBROUTINE diffusion_v_ij 346 387
Note: See TracChangeset
for help on using the changeset viewer.