Changeset 208
- Timestamp:
- Oct 20, 2008 6:02:59 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/production_e.f90
r198 r208 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Bugfix concerning the calculation of velocity gradients at vertical walls 7 ! in case of diabatic conditions 7 8 ! 8 9 ! Former revisions: … … 92 93 93 94 REAL :: def, dudx, dudy, dudz, dvdx, dvdy, dvdz, dwdx, dwdy, dwdz, & 94 k1, k2, theta, temp95 k1, k2, km_neutral, theta, temp 95 96 96 97 ! REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) :: usvs, vsus, wsus, wsvs … … 166 167 167 168 IF ( wall_e_y(j,i) /= 0.0 ) THEN 169 ! 170 !-- Inconsistency removed: as the thermal stratification is 171 !-- not taken into account for the evaluation of the wall 172 !-- fluxes at vertical walls, the eddy viscosity km must not 173 !-- be used for the evaluation of the velocity gradients dudy 174 !-- and dwdy 175 !-- Note: The validity of the new method has not yet been 176 !-- shown, as so far no suitable data for a validation 177 !-- has been available 168 178 CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, & 169 179 usvs, 1.0, 0.0, 0.0, 0.0 ) 170 dudy = - wall_e_y(j,i) * usvs(k) / km(k,j,i)171 ! dudy = - wall_e_y(j,i) * usvs(k,j,i) / km(k,j,i)172 180 CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, & 173 181 wsvs, 0.0, 0.0, 1.0, 0.0 ) 174 dwdy = - wall_e_y(j,i) * wsvs(k) / km(k,j,i) 175 ! dwdy = - wall_e_y(j,i) * wsvs(k,j,i) / km(k,j,i) 182 km_neutral = kappa * ( usvs(k)**2 + wsvs(k)**2 )**0.25 * & 183 0.5 * dy 184 dudy = - wall_e_y(j,i) * usvs(k) / km_neutral 185 dwdy = - wall_e_y(j,i) * wsvs(k) / km_neutral 176 186 ELSE 177 187 dudy = 0.25 * ( u(k,j+1,i) + u(k,j+1,i+1) - & … … 182 192 183 193 IF ( wall_e_x(j,i) /= 0.0 ) THEN 194 ! 195 !-- Inconsistency removed: as the thermal stratification is 196 !-- not taken into account for the evaluation of the wall 197 !-- fluxes at vertical walls, the eddy viscosity km must not 198 !-- be used for the evaluation of the velocity gradients dvdx 199 !-- and dwdx 200 !-- Note: The validity of the new method has not yet been 201 !-- shown, as so far no suitable data for a validation 202 !-- has been available 184 203 CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, & 185 204 vsus, 0.0, 1.0, 0.0, 0.0 ) 186 dvdx = - wall_e_x(j,i) * vsus(k) / km(k,j,i)187 ! dvdx = - wall_e_x(j,i) * vsus(k,j,i) / km(k,j,i)188 205 CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, & 189 206 wsus, 0.0, 0.0, 0.0, 1.0 ) 190 dwdx = - wall_e_x(j,i) * wsus(k) / km(k,j,i) 191 ! dwdx = - wall_e_x(j,i) * wsus(k,j,i) / km(k,j,i) 207 km_neutral = kappa * ( vsus(k)**2 + wsus(k)**2 )**0.25 * & 208 0.5 * dx 209 dvdx = - wall_e_x(j,i) * vsus(k) / km_neutral 210 dwdx = - wall_e_x(j,i) * wsus(k) / km_neutral 192 211 ELSE 193 212 dvdx = 0.25 * ( v(k,j,i+1) + v(k,j+1,i+1) - & … … 224 243 225 244 IF ( wall_e_y(j,i) /= 0.0 ) THEN 226 dudy = - wall_e_y(j,i) * usvs(k) / km(k,j,i) 227 ! dudy = - wall_e_y(j,i) * usvs(k,j,i) / km(k,j,i) 228 dwdy = - wall_e_y(j,i) * wsvs(k) / km(k,j,i) 229 ! dwdy = - wall_e_y(j,i) * wsvs(k,j,i) / km(k,j,i) 245 ! 246 !-- Inconsistency removed: as the thermal stratification 247 !-- is not taken into account for the evaluation of the 248 !-- wall fluxes at vertical walls, the eddy viscosity km 249 !-- must not be used for the evaluation of the velocity 250 !-- gradients dudy and dwdy 251 !-- Note: The validity of the new method has not yet 252 !-- been shown, as so far no suitable data for a 253 !-- validation has been available 254 km_neutral = kappa * ( usvs(k)**2 + & 255 wsvs(k)**2 )**0.25 * 0.5 * dy 256 dudy = - wall_e_y(j,i) * usvs(k) / km_neutral 257 dwdy = - wall_e_y(j,i) * wsvs(k) / km_neutral 230 258 ELSE 231 259 dudy = 0.25 * ( u(k,j+1,i) + u(k,j+1,i+1) - & … … 236 264 237 265 IF ( wall_e_x(j,i) /= 0.0 ) THEN 238 dvdx = - wall_e_x(j,i) * vsus(k) / km(k,j,i) 239 ! dvdx = - wall_e_x(j,i) * vsus(k,j,i) / km(k,j,i) 240 dwdx = - wall_e_x(j,i) * wsus(k) / km(k,j,i) 241 ! dwdx = - wall_e_x(j,i) * wsus(k,j,i) / km(k,j,i) 266 ! 267 !-- Inconsistency removed: as the thermal stratification 268 !-- is not taken into account for the evaluation of the 269 !-- wall fluxes at vertical walls, the eddy viscosity km 270 !-- must not be used for the evaluation of the velocity 271 !-- gradients dvdx and dwdx 272 !-- Note: The validity of the new method has not yet 273 !-- been shown, as so far no suitable data for a 274 !-- validation has been available 275 km_neutral = kappa * ( vsus(k)**2 + & 276 wsus(k)**2 )**0.25 * 0.5 * dx 277 dvdx = - wall_e_x(j,i) * vsus(k) / km_neutral 278 dwdx = - wall_e_x(j,i) * wsus(k) / km_neutral 242 279 ELSE 243 280 dvdx = 0.25 * ( v(k,j,i+1) + v(k,j+1,i+1) - & … … 576 613 577 614 REAL :: def, dudx, dudy, dudz, dvdx, dvdy, dvdz, dwdx, dwdy, dwdz, & 578 k1, k2, theta, temp615 k1, k2, km_neutral, theta, temp 579 616 580 617 REAL, DIMENSION(nzb:nzt+1) :: usvs, vsus, wsus, wsvs … … 631 668 632 669 IF ( wall_e_y(j,i) /= 0.0 ) THEN 670 ! 671 !-- Inconsistency removed: as the thermal stratification 672 !-- is not taken into account for the evaluation of the 673 !-- wall fluxes at vertical walls, the eddy viscosity km 674 !-- must not be used for the evaluation of the velocity 675 !-- gradients dudy and dwdy 676 !-- Note: The validity of the new method has not yet 677 !-- been shown, as so far no suitable data for a 678 !-- validation has been available 633 679 CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, & 634 680 usvs, 1.0, 0.0, 0.0, 0.0 ) 635 dudy = - wall_e_y(j,i) * usvs(k) / km(k,j,i)636 681 CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, & 637 682 wsvs, 0.0, 0.0, 1.0, 0.0 ) 638 dwdy = - wall_e_y(j,i) * wsvs(k) / km(k,j,i) 683 km_neutral = kappa * ( usvs(k)**2 + wsvs(k)**2 )**0.25 * & 684 0.5 * dy 685 dudy = - wall_e_y(j,i) * usvs(k) / km_neutral 686 dwdy = - wall_e_y(j,i) * wsvs(k) / km_neutral 639 687 ELSE 640 688 dudy = 0.25 * ( u(k,j+1,i) + u(k,j+1,i+1) - & … … 645 693 646 694 IF ( wall_e_x(j,i) /= 0.0 ) THEN 695 ! 696 !-- Inconsistency removed: as the thermal stratification 697 !-- is not taken into account for the evaluation of the 698 !-- wall fluxes at vertical walls, the eddy viscosity km 699 !-- must not be used for the evaluation of the velocity 700 !-- gradients dvdx and dwdx 701 !-- Note: The validity of the new method has not yet 702 !-- been shown, as so far no suitable data for a 703 !-- validation has been available 647 704 CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, & 648 705 vsus, 0.0, 1.0, 0.0, 0.0 ) 649 dvdx = - wall_e_x(j,i) * vsus(k) / km(k,j,i)650 706 CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, & 651 707 wsus, 0.0, 0.0, 0.0, 1.0 ) 652 dwdx = - wall_e_x(j,i) * wsus(k) / km(k,j,i) 708 km_neutral = kappa * ( vsus(k)**2 + wsus(k)**2 )**0.25 * & 709 0.5 * dx 710 dvdx = - wall_e_x(j,i) * vsus(k) / km_neutral 711 dwdx = - wall_e_x(j,i) * wsus(k) / km_neutral 653 712 ELSE 654 713 dvdx = 0.25 * ( v(k,j,i+1) + v(k,j+1,i+1) - & … … 683 742 684 743 IF ( wall_e_y(j,i) /= 0.0 ) THEN 685 dudy = - wall_e_y(j,i) * usvs(k) / km(k,j,i) 686 dwdy = - wall_e_y(j,i) * wsvs(k) / km(k,j,i) 744 ! 745 !-- Inconsistency removed: as the thermal stratification 746 !-- is not taken into account for the evaluation of the 747 !-- wall fluxes at vertical walls, the eddy viscosity km 748 !-- must not be used for the evaluation of the velocity 749 !-- gradients dudy and dwdy 750 !-- Note: The validity of the new method has not yet 751 !-- been shown, as so far no suitable data for a 752 !-- validation has been available 753 km_neutral = kappa * ( usvs(k)**2 + & 754 wsvs(k)**2 )**0.25 * 0.5 * dy 755 dudy = - wall_e_y(j,i) * usvs(k) / km_neutral 756 dwdy = - wall_e_y(j,i) * wsvs(k) / km_neutral 687 757 ELSE 688 758 dudy = 0.25 * ( u(k,j+1,i) + u(k,j+1,i+1) - & … … 693 763 694 764 IF ( wall_e_x(j,i) /= 0.0 ) THEN 695 dvdx = - wall_e_x(j,i) * vsus(k) / km(k,j,i) 696 dwdx = - wall_e_x(j,i) * wsus(k) / km(k,j,i) 765 ! 766 !-- Inconsistency removed: as the thermal stratification 767 !-- is not taken into account for the evaluation of the 768 !-- wall fluxes at vertical walls, the eddy viscosity km 769 !-- must not be used for the evaluation of the velocity 770 !-- gradients dvdx and dwdx 771 !-- Note: The validity of the new method has not yet 772 !-- been shown, as so far no suitable data for a 773 !-- validation has been available 774 km_neutral = kappa * ( vsus(k)**2 + & 775 wsus(k)**2 )**0.25 * 0.5 * dx 776 dvdx = - wall_e_x(j,i) * vsus(k) / km_neutral 777 dwdx = - wall_e_x(j,i) * wsus(k) / km_neutral 697 778 ELSE 698 779 dvdx = 0.25 * ( v(k,j,i+1) + v(k,j+1,i+1) - &
Note: See TracChangeset
for help on using the changeset viewer.