Changeset 97 for palm/trunk/SOURCE/diffusion_e.f90
- Timestamp:
- Jun 21, 2007 8:23:15 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/diffusion_e.f90
r94 r97 8 8 ! This is also a bugfix, because the height above the topography is now 9 9 ! used instead of the height above level k=0. 10 ! theta renamed var, dpt_dz renamed dvar_dz, +new argument var_reference 11 ! use_pt_reference renamed use_reference 10 12 ! 11 13 ! Former revisions: … … 50 52 ! Call for all grid points 51 53 !------------------------------------------------------------------------------! 52 SUBROUTINE diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, theta, &53 rif, tend, zu, zw )54 SUBROUTINE diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, var, & 55 var_reference, rif, tend, zu, zw ) 54 56 55 57 USE control_parameters … … 61 63 62 64 INTEGER :: i, j, k 63 REAL :: d pt_dz, l_stable, phi_m65 REAL :: dvar_dz, l_stable, phi_m, var_reference 64 66 REAL :: ddzu(1:nzt+1), dd2zu(1:nzt), ddzw(1:nzt+1), & 65 67 l_grid(1:nzt), zu(0:nzt+1), zw(0:nzt+1) 66 68 REAL, DIMENSION(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) :: diss, tend 67 69 REAL, DIMENSION(:,:), POINTER :: rif 68 REAL, DIMENSION(:,:,:), POINTER :: e, km, theta70 REAL, DIMENSION(:,:,:), POINTER :: e, km, var 69 71 REAL, DIMENSION(nzb+1:nzt,nys:nyn) :: dissipation, l, ll 70 72 … … 73 75 !-- This if clause must be outside the k-loop because otherwise 74 76 !-- runtime errors occur with -C hopt on NEC 75 IF ( use_ pt_reference ) THEN77 IF ( use_reference ) THEN 76 78 77 79 DO i = nxl, nxr … … 91 93 ! 92 94 !-- Calculate the mixing length (for dissipation) 93 dpt_dz = ( theta(k+1,j,i) - theta(k-1,j,i) ) * dd2zu(k) 94 IF ( dpt_dz > 0.0 ) THEN 95 dvar_dz = atmos_ocean_sign * & 96 ( var(k+1,j,i) - var(k-1,j,i) ) * dd2zu(k) 97 IF ( dvar_dz > 0.0 ) THEN 95 98 l_stable = 0.76 * SQRT( e(k,j,i) ) / & 96 SQRT( g / pt_reference * dpt_dz ) + 1E-599 SQRT( g / var_reference * dvar_dz ) + 1E-5 97 100 ELSE 98 101 l_stable = l_grid(k) … … 180 183 ! 181 184 !-- Calculate the mixing length (for dissipation) 182 dpt_dz = ( theta(k+1,j,i) - theta(k-1,j,i) ) * dd2zu(k) 183 IF ( dpt_dz > 0.0 ) THEN 185 dvar_dz = atmos_ocean_sign * & 186 ( var(k+1,j,i) - var(k-1,j,i) ) * dd2zu(k) 187 IF ( dvar_dz > 0.0 ) THEN 184 188 l_stable = 0.76 * SQRT( e(k,j,i) ) / & 185 SQRT( g / theta(k,j,i) * dpt_dz ) + 1E-5189 SQRT( g / var(k,j,i) * dvar_dz ) + 1E-5 186 190 ELSE 187 191 l_stable = l_grid(k) … … 270 274 !------------------------------------------------------------------------------! 271 275 SUBROUTINE diffusion_e_ij( i, j, ddzu, dd2zu, ddzw, diss, e, km, l_grid, & 272 theta, rif, tend, zu, zw )276 var, var_reference, rif, tend, zu, zw ) 273 277 274 278 USE control_parameters … … 280 284 281 285 INTEGER :: i, j, k 282 REAL :: d pt_dz, l_stable, phi_m286 REAL :: dvar_dz, l_stable, phi_m, var_reference 283 287 REAL :: ddzu(1:nzt+1), dd2zu(1:nzt), ddzw(1:nzt+1), & 284 288 l_grid(1:nzt), zu(0:nzt+1), zw(0:nzt+1) 285 289 REAL, DIMENSION(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) :: diss, tend 286 290 REAL, DIMENSION(:,:), POINTER :: rif 287 REAL, DIMENSION(:,:,:), POINTER :: e, km, theta291 REAL, DIMENSION(:,:,:), POINTER :: e, km, var 288 292 REAL, DIMENSION(nzb+1:nzt) :: dissipation, l, ll 289 293 … … 303 307 !-- Calculate the mixing length (for dissipation) 304 308 DO k = nzb_s_inner(j,i)+1, nzt 305 dpt_dz = ( theta(k+1,j,i) - theta(k-1,j,i) ) * dd2zu(k) 306 IF ( dpt_dz > 0.0 ) THEN 307 IF ( use_pt_reference ) THEN 309 dvar_dz = atmos_ocean_sign * & 310 ( var(k+1,j,i) - var(k-1,j,i) ) * dd2zu(k) 311 IF ( dvar_dz > 0.0 ) THEN 312 IF ( use_reference ) THEN 308 313 l_stable = 0.76 * SQRT( e(k,j,i) ) / & 309 SQRT( g / pt_reference * dpt_dz ) + 1E-5314 SQRT( g / var_reference * dvar_dz ) + 1E-5 310 315 ELSE 311 316 l_stable = 0.76 * SQRT( e(k,j,i) ) / & 312 SQRT( g / theta(k,j,i) * dpt_dz ) + 1E-5317 SQRT( g / var(k,j,i) * dvar_dz ) + 1E-5 313 318 ENDIF 314 319 ELSE
Note: See TracChangeset
for help on using the changeset viewer.