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