Ignore:
Timestamp:
Jul 11, 2018 6:46:49 PM (3 years ago)
Author:
gronemeier
Message:

consider wall function for Km within production_e_init

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/turbulence_closure_mod.f90

    r3120 r3121  
    2525! -----------------
    2626! $Id$
     27! - created the function phi_m
     28! - implemented km = u* * kappa * zp / phi_m in production_e_init for all
     29!   surfaces
     30!
     31! 3120 2018-07-11 18:30:57Z gronemeier
    2732! - changed tcm_diffusivities to tcm_diffusivities_default
    2833! - created subroutine tcm_diffusivities that calls tcm_diffusivities_default
     
    19771982    INTEGER(iwp) ::  m      !< running index surface elements
    19781983
     1984    REAL(wp)     :: km_sfc  !< km according to MOST
     1985
    19791986    IF ( constant_flux_layer )  THEN
    19801987!
     
    20012008!--       interpolation of km onto the u/v-grid is necessary. However, the
    20022009!--       effect of this error is negligible.
     2010          km_sfc = surf_def_h(0)%us(m) * kappa * surf_def_h(0)%z_mo(m) /       &
     2011                   phi_m( surf_def_h(0)%z_mo(m) / surf_def_h(0)%ol(m) )
     2012
    20032013          surf_def_h(0)%u_0(m) = u(k+1,j,i) + surf_def_h(0)%usws(m) *          &
    20042014                                     drho_air_zw(k-1)               *          &
    20052015                                     ( zu(k+1) - zu(k-1)    )       /          &
    2006                                      ( km(k,j,i)  + 1.0E-20_wp )
     2016                                     ( km_sfc  + 1.0E-20_wp )
    20072017          surf_def_h(0)%v_0(m) = v(k+1,j,i) + surf_def_h(0)%vsws(m) *          &
    20082018                                     drho_air_zw(k-1)               *          &
    20092019                                     ( zu(k+1) - zu(k-1)    )       /          &
    2010                                      ( km(k,j,i)  + 1.0E-20_wp )   
     2020                                     ( km_sfc  + 1.0E-20_wp )   
    20112021
    20122022          IF ( ABS( u(k+1,j,i) - surf_def_h(0)%u_0(m) )  >                     &
     
    20602070!--       effect of this error is negligible.
    20612071!--       effect of this error is negligible.
     2072          km_sfc = surf_lsm_h%us(m) * kappa * surf_lsm_h%z_mo(m) /             &
     2073                   phi_m( surf_lsm_h%z_mo(m) / surf_lsm_h%ol(m) )
     2074
    20622075          surf_lsm_h%u_0(m) = u(k+1,j,i) + surf_lsm_h%usws(m)    *             &
    20632076                                        drho_air_zw(k-1)         *             &
    20642077                                        ( zu(k+1) - zu(k-1)    ) /             &
    2065                                         ( km(k,j,i)  + 1.0E-20_wp ) 
     2078                                        ( km_sfc  + 1.0E-20_wp ) 
    20662079          surf_lsm_h%v_0(m) = v(k+1,j,i) + surf_lsm_h%vsws(m)    *             &
    20672080                                        drho_air_zw(k-1)         *             &
    20682081                                        ( zu(k+1) - zu(k-1)    ) /             &
    2069                                         ( km(k,j,i)  + 1.0E-20_wp )
     2082                                        ( km_sfc  + 1.0E-20_wp )
    20702083
    20712084          IF ( ABS( u(k+1,j,i) - surf_lsm_h%u_0(m) )  >                        &
     
    20912104!--       interpolation of km onto the u/v-grid is necessary. However, the
    20922105!--       effect of this error is negligible.
     2106          km_sfc = surf_usm_h%us(m) * kappa * surf_usm_h%z_mo(m) /             &
     2107                   phi_m( surf_usm_h%z_mo(m) / surf_usm_h%ol(m) )
     2108
    20932109          surf_usm_h%u_0(m) = u(k+1,j,i) + surf_usm_h%usws(m)    *             &
    20942110                                        drho_air_zw(k-1)         *             &
    20952111                                        ( zu(k+1) - zu(k-1)    ) /             &
    2096                                         ( km(k,j,i)  + 1.0E-20_wp )
     2112                                        ( km_sfc  + 1.0E-20_wp )
    20972113          surf_usm_h%v_0(m) = v(k+1,j,i) + surf_usm_h%vsws(m)    *             &
    20982114                                        drho_air_zw(k-1)         *             &
    20992115                                        ( zu(k+1) - zu(k-1)    ) /             &
    2100                                         ( km(k,j,i)  + 1.0E-20_wp )
     2116                                        ( km_sfc  + 1.0E-20_wp )
    21012117
    21022118          IF ( ABS( u(k+1,j,i) - surf_usm_h%u_0(m) )  >                        &
     
    21132129
    21142130 END SUBROUTINE production_e_init
     2131
     2132
     2133!------------------------------------------------------------------------------!
     2134! Description:
     2135! ------------
     2136!> Calculates stability function for momentum
     2137!>
     2138!> @author Hauke Wurps
     2139!------------------------------------------------------------------------------!
     2140 FUNCTION phi_m( zeta )
     2141
     2142    IMPLICIT NONE
     2143
     2144    REAL(wp)            :: phi_m         !< Value of the function
     2145    REAL(wp)            :: zeta          !< Stability parameter z/L
     2146
     2147    REAL(wp), PARAMETER :: a = 16.0_wp   !< constant
     2148    REAL(wp), PARAMETER :: b = -0.25_wp  !< constant
     2149    REAL(wp), PARAMETER :: c = 5.0_wp    !< constant
     2150
     2151    IF ( zeta < 0.0_wp )  THEN
     2152       phi_m = ( 1.0_wp - a * zeta )**b
     2153    ELSE
     2154       phi_m = 1.0_wp + c * zeta
     2155    ENDIF
     2156
     2157 END FUNCTION phi_m
    21152158
    21162159
Note: See TracChangeset for help on using the changeset viewer.