Changeset 3597 for palm/trunk


Ignore:
Timestamp:
Dec 4, 2018 8:40:18 AM (5 years ago)
Author:
maronga
Message:

revised calculation of near surface air potential temperature

Location:
palm/trunk/SOURCE
Files:
12 edited

Legend:

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

    r3589 r3597  
    2525! -----------------
    2626! $Id$
     27! Added theta_2m
     28!
     29! 3589 2018-11-30 15:09:51Z suehring
    2730! Move the control parameter "salsa" from salsa_mod to control_parameters
    2831! (M. Kurppa)
     
    518521             ENDIF
    519522
     523          CASE ( 'theta_2m' )
     524             IF ( ALLOCATED( pt_2m_av ) ) THEN
     525                DO  i = nxlg, nxrg
     526                   DO  j = nysg, nyng
     527                      pt_2m_av(j,i) = pt_2m_av(j,i) / REAL( average_count_3d, KIND=wp )
     528                   ENDDO
     529                ENDDO
     530                CALL exchange_horiz_2d( pt_2m_av, nbgp )
     531             ENDIF
     532             
    520533          CASE ( 'w' )
    521534             IF ( ALLOCATED( w_av ) ) THEN
  • palm/trunk/SOURCE/check_parameters.f90

    r3589 r3597  
    2525! -----------------
    2626! $Id$
     27! Added checks for theta_2m
     28!
     29! 3589 2018-11-30 15:09:51Z suehring
    2730! Move the control parameter "salsa" from salsa_mod to control_parameters
    2831! (M. Kurppa)
     
    31473150             CONTINUE
    31483151
    3149           CASE ( 'ghf*', 'lwp*', 'ol*', 'qsws*', 'r_a*',                       &
     3152          CASE ( 'ghf*', 'lwp*', 'ol*', 'qsws*', 'r_a*', 'theta_2m*',          &
    31503153                 'shf*', 'ssws*', 't*', 'tsurf*', 'us*', 'z0*', 'z0h*', 'z0q*' )
    31513154             IF ( k == 0  .OR.  data_output(i)(ilen-2:ilen) /= '_xy' )  THEN
     
    31813184                CALL message( 'check_parameters', 'PA0404', 1, 2, 0, 6, 0 )
    31823185             ENDIF
     3186             
    31833187             IF ( TRIM( var ) == 'ssws*'  .AND.  .NOT.  passive_scalar )  THEN
    31843188                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
     
    31873191             ENDIF
    31883192
     3193           
     3194!
     3195!--          Activate calculation of 2m temperature if output is requested
     3196             IF ( TRIM( var ) == 'theta_2m*' )  THEN
     3197                do_output_at_2m = .TRUE.
     3198             ENDIF             
     3199
     3200
    31893201             IF ( TRIM( var ) == 'ghf*'   )  unit = 'W/m2'
    31903202             IF ( TRIM( var ) == 'lwp*'   )  unit = 'kg/m2'
    31913203             IF ( TRIM( var ) == 'ol*'    )  unit = 'm'
     3204             IF ( TRIM( var ) == 'theta_2m*' )  unit = 'K'           
    31923205             IF ( TRIM( var ) == 'qsws*'  )  unit = 'kgm/kgs'
    31933206             IF ( TRIM( var ) == 'r_a*'   )  unit = 's/m'     
  • palm/trunk/SOURCE/data_output_2d.f90

    r3589 r3597  
    2525! -----------------
    2626! $Id$
     27! Added theta_2m
     28!
     29! 3589 2018-11-30 15:09:51Z suehring
    2730! Move the control parameter "salsa" from salsa_mod to control_parameters
    2831! (M. Kurppa)
     
    12121215                IF ( mode == 'xy' )  level_z = zu
    12131216
     1217             CASE ( 'theta_2m*_xy' )        ! 2d-array
     1218                IF ( av == 0 )  THEN
     1219                   DO  m = 1, surf_def_h(0)%ns
     1220                      i = surf_def_h(0)%i(m)
     1221                      j = surf_def_h(0)%j(m)
     1222                      local_pf(i,j,nzb+1) = surf_def_h(0)%pt_2m(m)
     1223                   ENDDO
     1224                   DO  m = 1, surf_lsm_h%ns
     1225                      i = surf_lsm_h%i(m)
     1226                      j = surf_lsm_h%j(m)
     1227                      local_pf(i,j,nzb+1) = surf_lsm_h%pt_2m(m)
     1228                   ENDDO
     1229                   DO  m = 1, surf_usm_h%ns
     1230                      i = surf_usm_h%i(m)
     1231                      j = surf_usm_h%j(m)
     1232                      local_pf(i,j,nzb+1) = surf_usm_h%pt_2m(m)
     1233                   ENDDO
     1234                ELSE
     1235                   IF ( .NOT. ALLOCATED( pt_2m_av ) ) THEN
     1236                      ALLOCATE( pt_2m_av(nysg:nyng,nxlg:nxrg) )
     1237                      pt_2m_av = REAL( fill_value, KIND = wp )
     1238                   ENDIF
     1239                   DO  i = nxl, nxr
     1240                      DO  j = nys, nyn
     1241                         local_pf(i,j,nzb+1) = pt_2m_av(j,i)
     1242                      ENDDO
     1243                   ENDDO
     1244                ENDIF
     1245                resorted = .TRUE.
     1246                two_d = .TRUE.
     1247                level_z(nzb+1) = zu(nzb+1)
     1248               
     1249               
     1250               
    12141251             CASE ( 'w_xy', 'w_xz', 'w_yz' )
    12151252                flag_nr = 3
  • palm/trunk/SOURCE/indoor_model_mod.f90

    r3593 r3597  
    2626! -----------------
    2727! $Id$
     28! Renamed t_surf_10cm to pt_10cm
     29!
     30! 3593 2018-12-03 13:51:13Z kanani
    2831! Replace degree symbol by degree_C
    2932!
     
    318321!     i_global             -->  net_sw_in                         !global radiation [W/m2]
    319322!     theta_e              -->  pt(k,j,i)                         !undisturbed outside temperature, 1. PALM volume, for windows
    320 !     theta_sup = theta_f  -->  surf_usm_h%t_surf_10cm(m)
    321 !                               surf_usm_v(l)%t_surf_10cm(m)   !Air temperature, facade near (10cm) air temperature from 1. Palm volume
     323!     theta_sup = theta_f  -->  surf_usm_h%pt_10cm(m)
     324!                               surf_usm_v(l)%pt_10cm(m)   !Air temperature, facade near (10cm) air temperature from 1. Palm volume
    322325!     theta_node           -->  t_wall_h(nzt_wall,m)
    323326!                               t_wall_v(l)%t(nzt_wall,m)         !Temperature of innermost wall layer, for opaque wall
     
    844847
    845848    USE urban_surface_mod,                                                     &
    846         ONLY:  nzt_wall, t_surf_10cm_h, t_surf_10cm_v, t_wall_h, t_wall_v,     &
    847                t_window_h, t_window_v, building_type
     849        ONLY:  nzt_wall, t_wall_h, t_wall_v, t_window_h, t_window_v,           &
     850               building_type
    848851
    849852
     
    10001003             j = surf_usm_h%j(m)
    10011004             k = surf_usm_h%k(m)
    1002              near_facade_temperature = t_surf_10cm_h(m)
     1005             near_facade_temperature = surf_usm_h%pt_10cm(m)
    10031006             indoor_wall_window_temperature =                                  &
    10041007                  surf_usm_h%frac(ind_veg_wall,m) * t_wall_h(nzt_wall,m)       &
     
    11921195             j = surf_usm_v(l)%j(m)
    11931196             k = surf_usm_v(l)%k(m)
    1194              near_facade_temperature = t_surf_10cm_v(l)%t(m)
     1197             near_facade_temperature = surf_usm_v(l)%pt_10cm(m)
    11951198             indoor_wall_window_temperature =                                    &
    11961199                  surf_usm_v(l)%frac(ind_veg_wall,m) * t_wall_v(l)%t(nzt_wall,m) &
  • palm/trunk/SOURCE/land_surface_model_mod.f90

    r3486 r3597  
    2525! -----------------
    2626! $Id$
     27! Added pt_2m / theta_2m. Removed unncessary _eb strings.
     28!
     29! 3486 2018-11-05 06:20:18Z maronga
    2730! Bugfix for liquid water treatment on pavements
    2831!
     
    490493
    491494    USE basic_constants_and_equations_mod,                                     &
    492         ONLY:  c_p, g, lv_d_cp, l_v, magnus, rho_l, r_d, r_v, rd_d_rv
     495        ONLY:  c_p, g, lv_d_cp, l_v, kappa, magnus, rho_l, r_d, r_v, rd_d_rv
    493496
    494497    USE calc_mean_profile_mod,                                                 &
     
    530533
    531534    USE surface_mod,                                                           &
    532         ONLY :  ind_pav_green, ind_veg_wall, ind_wat_win, surf_lsm_h,          &
    533                 surf_lsm_v, surf_type, surface_restore_elements
     535        ONLY :  ind_pav_green, ind_veg_wall, ind_wat_win,                      &
     536                surf_lsm_h, surf_lsm_v, surf_type, surface_restore_elements
    534537
    535538    IMPLICIT NONE
     
    750753              c_soil_av,        & !< average of c_soil
    751754              c_veg_av,         & !< average of c_veg
    752               lai_av,           & !< average of lai
     755              lai_av,           & !< average of lai       
    753756              qsws_liq_av,      & !< average of qsws_liq
    754757              qsws_soil_av,     & !< average of qsws_soil
    755758              qsws_veg_av,      & !< average of qsws_veg
    756759              r_s_av              !< average of r_s
    757                    
    758 
     760 
    759761!
    760762!-- Predefined Land surface classes (vegetation_type)
     
    10001002!-- Public functions
    10011003    PUBLIC lsm_boundary_condition, lsm_check_data_output,                      &
    1002            lsm_check_data_output_pr,                                           &
     1004           lsm_check_data_output_pr, lsm_calc_pt_near_surface,                 &
    10031005           lsm_check_parameters, lsm_define_netcdf_grid, lsm_3d_data_averaging,&
    10041006           lsm_data_output_2d, lsm_data_output_3d, lsm_energy_balance,         &
     
    10211023    END INTERFACE lsm_boundary_condition
    10221024
     1025    INTERFACE lsm_calc_pt_near_surface
     1026       MODULE PROCEDURE lsm_calc_pt_near_surface
     1027    END INTERFACE lsm_calc_pt_near_surface
     1028   
    10231029    INTERFACE lsm_check_data_output
    10241030       MODULE PROCEDURE lsm_check_data_output
     
    23402346    IF ( horizontal  .AND.  .NOT. constant_roughness )  CALL calc_z0_water_surface
    23412347   
     2348   
    23422349    CONTAINS
    23432350!------------------------------------------------------------------------------!
     
    23912398                     
    23922399       ENDDO
    2393 
     2400 
    23942401    END SUBROUTINE calc_q_surface
    2395 
    2396 
    2397 
     2402       
    23982403 END SUBROUTINE lsm_energy_balance
    2399 
     2404   
     2405   
    24002406
    24012407!------------------------------------------------------------------------------!
     
    49234929       ALLOCATE ( surf_lsm_h%r_s(1:surf_lsm_h%ns)                 )
    49244930       ALLOCATE ( surf_lsm_h%r_canopy_min(1:surf_lsm_h%ns)        )
     4931       ALLOCATE ( surf_lsm_h%pt_2m(1:surf_lsm_h%ns)               )
    49254932       ALLOCATE ( surf_lsm_h%vegetation_surface(1:surf_lsm_h%ns)  )
    49264933       ALLOCATE ( surf_lsm_h%water_surface(1:surf_lsm_h%ns)       )
     
    57425749                ENDDO
    57435750             ENDIF
    5744 
     5751             
    57455752          CASE DEFAULT
    57465753             CONTINUE
     
    60906097
    60916098          IF ( mode == 'xy' ) grid = 'zs'
    6092 
     6099         
    60936100       CASE ( 'qsws_liq*_xy' )        ! 2d-array
    60946101          IF ( av == 0 ) THEN
     
    62086215          IF ( mode == 'xy' )  grid = 'zs'
    62096216
     6217
    62106218       CASE DEFAULT
    62116219          found = .FALSE.
     
    63776385       WRITE ( 14 )  qsws_veg_av
    63786386    ENDIF
    6379 
     6387   
    63806388    IF ( ALLOCATED( t_soil_av ) )  THEN
    63816389       CALL wrd_write_string( 't_soil_av' )
     
    66766684              t_soil_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) =           &
    66776685                 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    6678 
     6686                 
    66796687           CASE ( 'lsm_start_index_h', 'lsm_start_index_v'  )   
    66806688                IF ( k == 1 )  THEN
     
    71967204    END SUBROUTINE calc_z0_water_surface
    71977205
    7198 
    7199 
     7206   
     7207!------------------------------------------------------------------------------!
     7208! Description:
     7209! ------------
     7210!> Calculates 2m temperature for data output at coarse resolution
     7211!------------------------------------------------------------------------------!
     7212    SUBROUTINE lsm_calc_pt_near_surface
     7213
     7214       IMPLICIT NONE
     7215
     7216       INTEGER(iwp)                          :: i, j, k, l, m   !< running indices
     7217
     7218
     7219       DO  m = 1, surf_lsm_h%ns
     7220
     7221          i = surf_lsm_h%i(m)
     7222          j = surf_lsm_h%j(m)
     7223          k = surf_lsm_h%k(m)
     7224
     7225          surf_lsm_h%pt_2m(m) = surf_lsm_h%pt_surface(m) + surf_lsm_h%ts(m) / kappa &
     7226                             * ( log( 2.0_wp /  surf_lsm_h%z0h(m) )                 &
     7227                               - psi_h( 2.0_wp / surf_lsm_h%ol(m) )                 &
     7228                               + psi_h( surf_lsm_h%z0h(m) / surf_lsm_h%ol(m) ) )
     7229
     7230       ENDDO
     7231
     7232    END SUBROUTINE lsm_calc_pt_near_surface
     7233
     7234   
     7235   
     7236!
     7237!-- Integrated stability function for heat and moisture
     7238    FUNCTION psi_h( zeta )
     7239
     7240           USE kinds
     7241
     7242       IMPLICIT NONE
     7243
     7244       REAL(wp)            :: psi_h !< Integrated similarity function result
     7245       REAL(wp)            :: zeta  !< Stability parameter z/L
     7246       REAL(wp)            :: x     !< dummy variable
     7247
     7248       REAL(wp), PARAMETER :: a = 1.0_wp            !< constant
     7249       REAL(wp), PARAMETER :: b = 0.66666666666_wp  !< constant
     7250       REAL(wp), PARAMETER :: c = 5.0_wp            !< constant
     7251       REAL(wp), PARAMETER :: d = 0.35_wp           !< constant
     7252       REAL(wp), PARAMETER :: c_d_d = c / d         !< constant
     7253       REAL(wp), PARAMETER :: bc_d_d = b * c / d    !< constant
     7254
     7255
     7256      IF ( zeta < 0.0_wp )  THEN
     7257         x = SQRT( 1.0_wp  - 16.0_wp * zeta )
     7258         psi_h = 2.0_wp * LOG( (1.0_wp + x ) / 2.0_wp )
     7259      ELSE
     7260         psi_h = - b * ( zeta - c_d_d ) * EXP( -d * zeta ) - (1.0_wp          &
     7261                 + 0.66666666666_wp * a * zeta )**1.5_wp - bc_d_d             &
     7262                 + 1.0_wp
     7263!
     7264!--       Old version for stable conditions (only valid for z/L < 0.5)
     7265!--       psi_h = - 5.0_wp * zeta
     7266       ENDIF
     7267
     7268   END FUNCTION psi_h
     7269   
    72007270 END MODULE land_surface_model_mod
  • palm/trunk/SOURCE/modules.f90

    r3589 r3597  
    2525! -----------------
    2626! $Id$
     27! Added flag parameter do_output_at_2m for automatic output of 2m-temperature
     28!
     29! 3589 2018-11-30 15:09:51Z suehring
    2730! Move the control parameter "salsa" from salsa_mod to control_parameters
    2831! (M. Kurppa)
     
    10631066    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  lwp_av                 !< avg. liquid water path
    10641067    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  ol_av                  !< avg. Obukhov length
     1068    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  pt_2m_av               !< avg. 2m- air potential temperature
    10651069    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  qsws_av                !< avg. surface moisture flux
    10661070    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  r_a_av                 !< avg. resistance
     
    13541358    LOGICAL ::  do2d_at_begin = .FALSE.                          !< namelist parameter
    13551359    LOGICAL ::  do3d_at_begin = .FALSE.                          !< namelist parameter
     1360    LOGICAL ::  do_output_at_2m = .FALSE.                        !< flag for activating calculation of potential temperature at z = 2 m
    13561361    LOGICAL ::  do_sum = .FALSE.                                 !< contribute to time average of profile data?
    13571362    LOGICAL ::  dp_external = .FALSE.                            !< namelist parameter
  • palm/trunk/SOURCE/sum_up_3d_data.f90

    r3589 r3597  
    2525! -----------------
    2626! $Id$
     27! Added output of theta_2m
     28!
     29! 3589 2018-11-30 15:09:51Z suehring
    2730! Move the control parameter "salsa" from salsa_mod to control_parameters
    2831! (M. Kurppa)
     
    249252    USE averaging,                                                             &
    250253        ONLY:  e_av, ghf_av, lpt_av, lwp_av, ol_av, p_av, pc_av, pr_av, pt_av, &
    251                q_av, ql_av, ql_c_av, ql_v_av, ql_vp_av, qsws_av, qv_av,        &
    252                r_a_av, s_av, shf_av, ssws_av, ts_av, tsurf_av, u_av, us_av,    &
    253                v_av, vpt_av, w_av, z0_av, z0h_av, z0q_av
     254               pt_2m_av, q_av, ql_av, ql_c_av, ql_v_av, ql_vp_av, qsws_av,     &
     255               qv_av, r_a_av, s_av, shf_av, ssws_av, ts_av, tsurf_av, u_av,    &
     256               us_av, v_av, vpt_av, w_av, z0_av, z0h_av, z0q_av
    254257
    255258    USE basic_constants_and_equations_mod,                                     &
     
    497500                ENDIF
    498501                vpt_av = 0.0_wp
     502
     503             CASE ( 'theta_2m*' )
     504                IF ( .NOT. ALLOCATED( pt_2m_av ) )  THEN
     505                   ALLOCATE( pt_2m_av(nysg:nyng,nxlg:nxrg) )
     506                ENDIF
     507                pt_2m_av = 0.0_wp
    499508
    500509             CASE ( 'w' )
  • palm/trunk/SOURCE/surface_layer_fluxes_mod.f90

    r3547 r3597  
    2626! -----------------
    2727! $Id$
     28! Added routine for calculating near surface air potential temperature (moved
     29! from urban_surface_mod)
     30!
     31! 3547 2018-11-21 13:21:24Z suehring
    2832! variables documented
    2933!
     
    250254        ONLY:  air_chemistry, cloud_droplets,                                  &
    251255               constant_heatflux, constant_scalarflux,                         &
    252                constant_waterflux, coupling_mode, humidity, ibc_e_b,           &
    253                ibc_pt_b, initializing_actions,                                 &
     256               constant_waterflux, coupling_mode, do_output_at_2m, humidity,   &
     257               ibc_e_b, ibc_pt_b, indoor_model, initializing_actions,          &
    254258               intermediate_timestep_count, intermediate_timestep_count_max,   &
    255259               land_surface, large_scale_forcing, lsf_surf, message_string,    &
     
    413417             CALL calc_us
    414418             CALL calc_surface_fluxes
     419             
     420             IF ( do_output_at_2m )  THEN
     421                CALL calc_pt_near_surface ( '2m' )
     422             ENDIF
    415423          ENDIF
    416424!
     
    423431             CALL calc_us
    424432             CALL calc_surface_fluxes
     433             IF ( do_output_at_2m )  THEN
     434                CALL calc_pt_near_surface ( '2m' )
     435             ENDIF
    425436          ENDIF
    426437!
     
    433444             CALL calc_us
    434445             CALL calc_surface_fluxes
     446             IF ( do_output_at_2m )  THEN
     447                CALL calc_pt_near_surface ( '2m' )
     448             ENDIF
     449             IF ( indoor_model )  THEN
     450                CALL calc_pt_near_surface ( '10cm' )
     451             ENDIF
    435452          ENDIF
    436453!
     
    447464             CALL calc_scaling_parameters
    448465             CALL calc_surface_fluxes
     466             IF ( do_output_at_2m )  THEN
     467                CALL calc_pt_near_surface ( '2m' )
     468             ENDIF
    449469          ENDIF
    450470!
     
    457477             CALL calc_scaling_parameters
    458478             CALL calc_surface_fluxes
     479             IF ( do_output_at_2m )  THEN
     480                CALL calc_pt_near_surface ( '2m' )
     481             ENDIF
    459482          ENDIF
    460483!
     
    467490             CALL calc_scaling_parameters
    468491             CALL calc_surface_fluxes
     492             IF ( do_output_at_2m )  THEN
     493                CALL calc_pt_near_surface ( '2m' )
     494             ENDIF
     495             IF ( indoor_model )  THEN
     496                CALL calc_pt_near_surface ( '10cm' )
     497             ENDIF
    469498          ENDIF
    470499
     
    23052334    END SUBROUTINE calc_surface_fluxes
    23062335
     2336   
     2337!------------------------------------------------------------------------------!
     2338! Description:
     2339! ------------
     2340!> Calculates temperature near surface (10 cm) for indoor model or 2 m
     2341!> temperature for output
     2342!------------------------------------------------------------------------------!
     2343    SUBROUTINE calc_pt_near_surface ( z_char )
     2344
     2345       IMPLICIT NONE
     2346
     2347       CHARACTER (LEN = *), INTENT(IN)       :: z_char          !< string identifier to identify z level
     2348       INTEGER(iwp)                          :: i, j, k, l, m   !< running indices
     2349
     2350       
     2351       SELECT CASE ( z_char)
     2352           
     2353       
     2354          CASE ( '10cm' )
     2355
     2356             DO  m = 1, surf%ns
     2357
     2358                i = surf%i(m)
     2359                j = surf%j(m)
     2360                k = surf%k(m)
     2361
     2362                surf%pt_10cm(m) = surf%pt_surface(m) + surf%ts(m) / kappa  &
     2363                                   * ( log( 0.1_wp /  surf%z0h(m) )                    &
     2364                                  - psi_h( 0.1_wp / surf%ol(m) )                    &
     2365                                     + psi_h( surf%z0h(m) / surf%ol(m) ) )
     2366
     2367             ENDDO
     2368
     2369
     2370          CASE ( '2m' )
     2371     
     2372             DO  m = 1, surf%ns
     2373
     2374                i = surf%i(m)
     2375                j = surf%j(m)
     2376                k = surf%k(m)
     2377
     2378                surf%pt_2m(m) = surf%pt_surface(m) + surf%ts(m) / kappa  &
     2379                                   * ( log( 2.0_wp /  surf%z0h(m) )                    &
     2380                                     - psi_h( 2.0_wp / surf%ol(m) )                    &
     2381                                     + psi_h( surf%z0h(m) / surf%ol(m) ) )
     2382
     2383             ENDDO
     2384         
     2385       
     2386       END SELECT
     2387
     2388    END SUBROUTINE calc_pt_near_surface
     2389   
    23072390
    23082391!
  • palm/trunk/SOURCE/surface_mod.f90

    r3593 r3597  
    2626! -----------------
    2727! $Id$
     28! Added pt_2m and renamed t_surf_10cm to pt_10cm. Removed some _eb variables as
     29! they are no longer used.
     30!
     31! 3593 2018-12-03 13:51:13Z kanani
    2832! Replace degree symbol by 'degrees'
    2933!
     
    409413       REAL(wp), DIMENSION(:), ALLOCATABLE ::  rad_sw_ref          !< incoming shortwave radiation from reflection
    410414       REAL(wp), DIMENSION(:), ALLOCATABLE ::  rad_sw_res          !< resedual shortwave radiation in surface after last reflection step
    411        
    412 
    413415
    414416       REAL(wp), DIMENSION(:), ALLOCATABLE ::  c_liq               !< liquid water coverage (of vegetated area)
     
    422424       REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_eb             !<
    423425       REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_liq            !< surface flux of latent heat (liquid water portion)
    424        REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_liq_eb         !< surface flux of latent heat (liquid water portion)
    425426       REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_soil           !< surface flux of latent heat (soil portion)
    426        REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_soil_eb        !< surface flux of latent heat (soil portion)
    427427       REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_veg            !< surface flux of latent heat (vegetation portion)
    428        REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_veg_eb         !< surface flux of latent heat (vegetation portion)
    429428
    430429       REAL(wp), DIMENSION(:), ALLOCATABLE ::  r_a                 !< aerodynamic resistance
     
    436435       REAL(wp), DIMENSION(:), ALLOCATABLE ::  r_s                 !< total surface resistance (combination of r_soil and r_canopy)
    437436       REAL(wp), DIMENSION(:), ALLOCATABLE ::  r_canopy_min        !< minimum canopy (stomatal) resistance
    438 
     437       
     438       REAL(wp), DIMENSION(:), ALLOCATABLE ::  pt_10cm             !< near surface air potential temperature at distance 10 cm from the surface (K)
     439       REAL(wp), DIMENSION(:), ALLOCATABLE ::  pt_2m               !< near surface air potential temperature at distance 2 m from the surface (K)     
     440       
    439441       REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  alpha_vg          !< coef. of Van Genuchten
    440442       REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  lambda_w          !< hydraulic diffusivity of soil (?)
     
    550552       REAL(wp), DIMENSION(:), ALLOCATABLE ::  wshf_eb_av       !< average of wshf_eb
    551553       REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_eb_av       !< average of qsws_eb
    552        REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_veg_eb_av       !< average of qsws_veg_eb
    553        REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_liq_eb_av       !< average of qsws_liq_eb
     554       REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_veg_av       !< average of qsws_veg_eb
     555       REAL(wp), DIMENSION(:), ALLOCATABLE ::  qsws_liq_av       !< average of qsws_liq_eb
    554556       REAL(wp), DIMENSION(:), ALLOCATABLE ::  t_surf_wall_av        !< average of wall surface temperature (K)
    555557       REAL(wp), DIMENSION(:), ALLOCATABLE ::  t_surf_av        !< average of wall surface temperature (K)
    556558       REAL(wp), DIMENSION(:), ALLOCATABLE ::  t_surf_window_av !< average of window surface temperature (K)
    557559       REAL(wp), DIMENSION(:), ALLOCATABLE ::  t_surf_green_av  !< average of green wall surface temperature (K)
    558        REAL(wp), DIMENSION(:), ALLOCATABLE ::  t_surf_10cm_av   !< average of the near surface temperature (K)
    559 
     560
     561       REAL(wp), DIMENSION(:), ALLOCATABLE ::  pt_10cm_av       !< average of theta_10cm (K)
     562       
    560563       REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  t_wall_av      !< Average of t_wall
    561564       REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  t_window_av    !< Average of t_window
     
    12701273       ALLOCATE ( surfaces%shf(1:surfaces%ns) )   
    12711274!
    1272 !--    surface temperature
     1275!--    Surface temperature
    12731276       ALLOCATE ( surfaces%pt_surface(1:surfaces%ns) )
    12741277!
     
    12801283          ALLOCATE ( surfaces%vpt_surface(1:surfaces%ns) )
    12811284       ENDIF
     1285
    12821286!
    12831287!--    Characteristic scalar and surface flux of scalar
  • palm/trunk/SOURCE/time_integration.f90

    r3589 r3597  
    2525! -----------------
    2626! $Id$
     27! Removed call to calculation of near air (10 cm) potential temperature (now in
     28! surface layer fluxes)
     29!
     30! 3589 2018-11-30 15:09:51Z suehring
    2731! Move the control parameter "salsa" from salsa_mod to control_parameters
    2832! (M. Kurppa)
     
    578582        ONLY:  usm_boundary_condition, usm_material_heat_model,                &
    579583               usm_material_model,                                             &
    580                usm_surface_energy_balance, usm_green_heat_model,               &
    581                usm_temperature_near_surface
     584               usm_surface_energy_balance, usm_green_heat_model
    582585
    583586    USE synthetic_turbulence_generator_mod,                                    &
     
    11541157                CALL lsm_energy_balance( .FALSE., 3 )
    11551158                CALL lsm_soil_model( .FALSE., 3, .TRUE. )
     1159               
    11561160!
    11571161!--             At the end, set boundary conditons for potential temperature
     
    11601164                CALL lsm_boundary_condition
    11611165
     1166               
    11621167                CALL cpu_log( log_point(54), 'land_surface', 'stop' )
    11631168             ENDIF
     
    11741179                ENDIF
    11751180
    1176                 CALL usm_temperature_near_surface
    11771181!
    11781182!--             At the end, set boundary conditons for potential temperature
  • palm/trunk/SOURCE/time_integration_spinup.f90

    r3467 r3597  
    2525! -----------------
    2626! $Id$
     27! Removed call to calculation of near air (10 cm) potential temperature (now in
     28! surface layer fluxes)
     29!
     30! 3467 2018-10-30 19:05:21Z suehring
    2731! call to material_heat_model now with check if spinup runs (rvtils)
    2832!
     
    129133    USE land_surface_model_mod,                                                &
    130134        ONLY:  lsm_energy_balance, lsm_soil_model, lsm_swap_timelevel
    131 
    132135    USE pegrid
    133136
     
    154157        ONLY:  usm_material_heat_model, usm_material_model,                    &
    155158               usm_surface_energy_balance, usm_swap_timelevel,                 &
    156                usm_green_heat_model, usm_temperature_near_surface
     159               usm_green_heat_model
    157160
    158161
     
    389392                CALL lsm_energy_balance( .FALSE., 3 )
    390393                CALL lsm_soil_model( .FALSE., 3, calc_soil_moisture_during_spinup )
    391 
     394               
    392395                CALL cpu_log( log_point(54), 'land_surface', 'stop' )
    393396             ENDIF
     
    403406                   CALL usm_material_heat_model( .TRUE. )
    404407                ENDIF
    405                 IF ( urban_surface ) THEN
    406                    CALL usm_temperature_near_surface
    407                 ENDIF
     408               
    408409                CALL cpu_log( log_point(74), 'urban_surface', 'stop' )
    409410             ENDIF
  • palm/trunk/SOURCE/urban_surface_mod.f90

    r3524 r3597  
    2828! -----------------
    2929! $Id$
     30! Fixed calculation method of near surface air potential temperature at 10 cm
     31! and moved to surface_layer_fluxes. Removed unnecessary _eb strings.
     32!
     33! 3524 2018-11-14 13:36:44Z raasch
    3034! bugfix concerning allocation of t_surf_wall_v
    3135!
     
    240244! - Move first call of usm_radiatin from usm_init to init_3d_model
    241245! - fixed problem with near surface temperature
    242 ! - added near surface temperature t_surf_10cm_h(m), t_surf_10cm_v(l)%t(m)
     246! - added near surface temperature pt_10cm_h(m), pt_10cm_v(l)%t(m)
    243247! - does not work with temp profile including stability, ol
    244 !   t_surf_10cm = pt1 now
     248!   pt_10cm = pt1 now
    245249! - merged with 2357 bugfix, error message for nopointer version
    246250! - added indoor model coupling with wall heat flux
     
    986990    REAL(wp), DIMENSION(:,:), ALLOCATABLE          ::  t_window_av      !< Average of t_window
    987991    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  qsws_eb_av       !< average of qsws_eb
    988     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  qsws_veg_eb_av   !< average of qsws_veg_eb
    989     REAL(wp), DIMENSION(:), ALLOCATABLE            ::  qsws_liq_eb_av   !< average of qsws_liq_eb
     992    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  qsws_veg_av   !< average of qsws_veg
     993    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  qsws_liq_av   !< average of qsws_liq
    990994    REAL(wp), DIMENSION(:,:), ALLOCATABLE          ::  swc_av        !< Average of swc
    991995   
     
    10411045    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_green_h     !< green surface temperature (K) at horizontal walls
    10421046    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_green_h_p   !< progn. green surface temperature (K) at horizontal walls
    1043     REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_10cm_h      !< near surface temperature (10cm) (K) at horizontal walls
    1044     REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_10cm_h_p    !< progn. near surface temperature (10cm) (K) at horizontal walls
    10451047    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_wall_v
    10461048    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_wall_v_p
     
    10491051    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_green_v
    10501052    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_green_v_p
    1051     TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_10cm_v
    1052     TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_10cm_v_p
    10531053#else
    10541054    REAL(wp), DIMENSION(:), POINTER                :: t_surf_wall_h
     
    10581058    REAL(wp), DIMENSION(:), POINTER                :: t_surf_green_h
    10591059    REAL(wp), DIMENSION(:), POINTER                :: t_surf_green_h_p
    1060     REAL(wp), DIMENSION(:), POINTER                :: t_surf_10cm_h
    1061     REAL(wp), DIMENSION(:), POINTER                :: t_surf_10cm_h_p
    10621060
    10631061    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_wall_h_1
     
    10671065    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_green_h_1
    10681066    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_green_h_2
    1069     REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_10cm_h_1
    1070     REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_10cm_h_2
    10711067
    10721068    TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_wall_v
     
    10761072    TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_green_v
    10771073    TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_green_v_p
    1078     TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_10cm_v
    1079     TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_10cm_v_p
    10801074
    10811075    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_wall_v_1
     
    10851079    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_green_v_1
    10861080    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_green_v_2
    1087     TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_10cm_v_1
    1088     TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_10cm_v_2
    10891081   
    10901082#endif
     
    10921084    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_window_av   !< average of window surface temperature (K)
    10931085    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_green_av    !< average of green wall surface temperature (K)
    1094     REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_10cm_av    !< average of whole wall surface temperature (K)
    10951086
    10961087!-- Temporal tendencies for time stepping           
     
    12181209       MODULE PROCEDURE usm_parin
    12191210    END INTERFACE usm_parin
    1220    
    1221     INTERFACE usm_temperature_near_surface
    1222        MODULE PROCEDURE usm_temperature_near_surface
    1223     END INTERFACE usm_temperature_near_surface
    12241211
    12251212    INTERFACE usm_rrd_local
     
    12621249!-- Public parameters, constants and initial values
    12631250    PUBLIC usm_anthropogenic_heat, usm_material_model, usm_wall_mod,           &
    1264            usm_green_heat_model, usm_temperature_near_surface, building_pars,  &
    1265            nzt_wall, t_surf_10cm_h, t_surf_10cm_v, t_wall_h, t_wall_v,         &
     1251           usm_green_heat_model, building_pars,  &
     1252           nzt_wall, t_wall_h, t_wall_v,         &
    12661253           t_window_h, t_window_v, building_type
    12671254
     
    13631350        ALLOCATE ( surf_usm_h%green_type_roof(1:surf_usm_h%ns)    )
    13641351        ALLOCATE ( surf_usm_h%r_s(1:surf_usm_h%ns)                )
     1352       
    13651353!
    13661354!--     For vertical surfaces.
     
    13771365           ALLOCATE ( surf_usm_v(l)%r_a(1:surf_usm_v(l)%ns)             )
    13781366           ALLOCATE ( surf_usm_v(l)%r_a_green(1:surf_usm_v(l)%ns)       )
    1379            ALLOCATE ( surf_usm_v(l)%r_a_window(1:surf_usm_v(l)%ns)      )
    1380            
    1381           ALLOCATE ( surf_usm_v(l)%r_s(1:surf_usm_v(l)%ns)                 )
     1367           ALLOCATE ( surf_usm_v(l)%r_a_window(1:surf_usm_v(l)%ns)      )           
     1368           ALLOCATE ( surf_usm_v(l)%r_s(1:surf_usm_v(l)%ns)                )
    13821369        ENDDO
    13831370
     
    14211408        ALLOCATE ( surf_usm_h%g_d(1:surf_usm_h%ns)              )
    14221409        ALLOCATE ( surf_usm_h%c_liq(1:surf_usm_h%ns)            )
    1423         ALLOCATE ( surf_usm_h%qsws_liq_eb(1:surf_usm_h%ns)         )
    1424         ALLOCATE ( surf_usm_h%qsws_veg_eb(1:surf_usm_h%ns)         )
     1410        ALLOCATE ( surf_usm_h%qsws_liq(1:surf_usm_h%ns)         )
     1411        ALLOCATE ( surf_usm_h%qsws_veg(1:surf_usm_h%ns)         )
    14251412        ALLOCATE ( surf_usm_h%r_canopy(1:surf_usm_h%ns)         )
    14261413        ALLOCATE ( surf_usm_h%r_canopy_min(1:surf_usm_h%ns)     )
    1427         ALLOCATE ( surf_usm_h%qsws_eb(1:surf_usm_h%ns)         )
     1414        ALLOCATE ( surf_usm_h%qsws_eb(1:surf_usm_h%ns)          )
     1415        ALLOCATE ( surf_usm_h%pt_10cm(1:surf_usm_h%ns)          )
     1416        ALLOCATE ( surf_usm_h%pt_2m(1:surf_usm_h%ns)            )
    14281417
    14291418!
     
    14321421          ALLOCATE ( surf_usm_v(l)%g_d(1:surf_usm_v(l)%ns)              )
    14331422          ALLOCATE ( surf_usm_v(l)%c_liq(1:surf_usm_v(l)%ns)            )
    1434           ALLOCATE ( surf_usm_v(l)%qsws_liq_eb(1:surf_usm_v(l)%ns)         )
    1435           ALLOCATE ( surf_usm_v(l)%qsws_veg_eb(1:surf_usm_v(l)%ns)         )
     1423          ALLOCATE ( surf_usm_v(l)%qsws_liq(1:surf_usm_v(l)%ns)         )
     1424          ALLOCATE ( surf_usm_v(l)%qsws_veg(1:surf_usm_v(l)%ns)         )
    14361425          ALLOCATE ( surf_usm_v(l)%qsws_eb(1:surf_usm_v(l)%ns)          )
    14371426          ALLOCATE ( surf_usm_v(l)%r_canopy(1:surf_usm_v(l)%ns)         )
    14381427          ALLOCATE ( surf_usm_v(l)%r_canopy_min(1:surf_usm_v(l)%ns)     )
     1428          ALLOCATE ( surf_usm_v(l)%pt_10cm(1:surf_usm_v(l)%ns)     )
    14391429        ENDDO
    14401430       
     
    15041494        IF ( .NOT. ALLOCATED( t_green_h_p ) )                                  &           
    15051495           ALLOCATE ( t_green_h_p(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) ) 
    1506         IF ( .NOT. ALLOCATED( t_surf_10cm_h ) )                                &
    1507            ALLOCATE ( t_surf_10cm_h(1:surf_usm_h%ns) )
    1508         IF ( .NOT. ALLOCATED( t_surf_10cm_h_p ) )                              &
    1509            ALLOCATE ( t_surf_10cm_h_p(1:surf_usm_h%ns) )
    15101496        IF ( .NOT. ALLOCATED( swc_h ) )                                    &           
    15111497           ALLOCATE ( swc_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     
    15601546        IF ( .NOT. ALLOCATED( t_green_h_2 ) )                                  &           
    15611547           ALLOCATE ( t_green_h_2(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )         
    1562         IF ( .NOT. ALLOCATED( t_surf_10cm_h_1 ) )                              &
    1563            ALLOCATE ( t_surf_10cm_h_1(1:surf_usm_h%ns) )
    1564         IF ( .NOT. ALLOCATED( t_surf_10cm_h_2 ) )                              &
    1565            ALLOCATE ( t_surf_10cm_h_2(1:surf_usm_h%ns) )
    15661548        IF ( .NOT. ALLOCATED( swc_h_1 ) )                                  &           
    15671549           ALLOCATE ( swc_h_1(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     
    15921574        t_surf_window_h => t_surf_window_h_1; t_surf_window_h_p => t_surf_window_h_2 
    15931575        t_surf_green_h => t_surf_green_h_1; t_surf_green_h_p => t_surf_green_h_2           
    1594         t_surf_10cm_h => t_surf_10cm_h_1; t_surf_10cm_h_p => t_surf_10cm_h_2 
    15951576        m_liq_usm_h     => m_liq_usm_h_1;     m_liq_usm_h_p     => m_liq_usm_h_2
    15961577        swc_h       => swc_h_1; swc_h_p     => swc_h_2
     
    16301611           IF ( .NOT. ALLOCATED( t_surf_green_v_p(l)%t ) )                     &
    16311612              ALLOCATE ( t_surf_green_v_p(l)%t(1:surf_usm_v(l)%ns) )
    1632            IF ( .NOT. ALLOCATED( t_surf_10cm_v(l)%t ) )                        &
    1633               ALLOCATE ( t_surf_10cm_v(l)%t(1:surf_usm_v(l)%ns) )
    1634            IF ( .NOT. ALLOCATED( t_surf_10cm_v_p(l)%t ) )                        &
    1635               ALLOCATE ( t_surf_10cm_v_p(l)%t(1:surf_usm_v(l)%ns) )
    16361613           IF ( .NOT. ALLOCATED( m_liq_usm_v(l)%var_usm_1d ) )                 &
    16371614             ALLOCATE ( m_liq_usm_v(l)%var_usm_1d(1:surf_usm_v(l)%ns) )
     
    16701647           IF ( .NOT. ALLOCATED( t_green_v_2(l)%t ) )                          &           
    16711648              ALLOCATE ( t_green_v_2(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) ) 
    1672            IF ( .NOT. ALLOCATED( t_surf_10cm_v_1(l)%t ) )                     &
    1673               ALLOCATE ( t_surf_10cm_v_1(l)%t(1:surf_usm_v(l)%ns) )
    1674            IF ( .NOT. ALLOCATED( t_surf_10cm_v_2(l)%t ) )                     &
    1675               ALLOCATE ( t_surf_10cm_v_2(l)%t(1:surf_usm_v(l)%ns) )
    16761649           IF ( .NOT. ALLOCATED( m_liq_usm_v_1(l)%var_usm_1d ) )              &
    16771650              ALLOCATE ( m_liq_usm_v_1(l)%var_usm_1d(1:surf_usm_v(l)%ns) )
     
    16911664        t_surf_window_v => t_surf_window_v_1; t_surf_window_v_p => t_surf_window_v_2
    16921665        t_surf_green_v => t_surf_green_v_1; t_surf_green_v_p => t_surf_green_v_2
    1693         t_surf_10cm_v => t_surf_10cm_v_1; t_surf_10cm_v_p => t_surf_10cm_v_2
    16941666        m_liq_usm_v     => m_liq_usm_v_1;     m_liq_usm_v_p     => m_liq_usm_v_2
    16951667        swc_v    => swc_v_1;    swc_v_p    => swc_v_2
     
    20322004!--                 array of latent heat flux from vegetation surfaces
    20332005!--                 land surfaces
    2034                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%qsws_veg_eb_av) )  THEN
    2035                         ALLOCATE( surf_usm_h%qsws_veg_eb_av(1:surf_usm_h%ns) )
    2036                         surf_usm_h%qsws_veg_eb_av = 0.0_wp
     2006                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%qsws_veg_av) )  THEN
     2007                        ALLOCATE( surf_usm_h%qsws_veg_av(1:surf_usm_h%ns) )
     2008                        surf_usm_h%qsws_veg_av = 0.0_wp
    20372009                    ELSE
    2038                        IF ( .NOT.  ALLOCATED(surf_usm_v(l)%qsws_veg_eb_av) )  THEN
    2039                            ALLOCATE( surf_usm_v(l)%qsws_veg_eb_av(1:surf_usm_v(l)%ns) )
    2040                            surf_usm_v(l)%qsws_veg_eb_av = 0.0_wp
     2010                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%qsws_veg_av) )  THEN
     2011                           ALLOCATE( surf_usm_v(l)%qsws_veg_av(1:surf_usm_v(l)%ns) )
     2012                           surf_usm_v(l)%qsws_veg_av = 0.0_wp
    20412013                       ENDIF
    20422014                    ENDIF
     
    20452017!--                 array of latent heat flux from surfaces with liquid
    20462018!--                 land surfaces
    2047                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%qsws_liq_eb_av) )  THEN
    2048                         ALLOCATE( surf_usm_h%qsws_liq_eb_av(1:surf_usm_h%ns) )
    2049                         surf_usm_h%qsws_liq_eb_av = 0.0_wp
     2019                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%qsws_liq_av) )  THEN
     2020                        ALLOCATE( surf_usm_h%qsws_liq_av(1:surf_usm_h%ns) )
     2021                        surf_usm_h%qsws_liq_av = 0.0_wp
    20502022                    ELSE
    2051                        IF ( .NOT.  ALLOCATED(surf_usm_v(l)%qsws_liq_eb_av) )  THEN
    2052                            ALLOCATE( surf_usm_v(l)%qsws_liq_eb_av(1:surf_usm_v(l)%ns) )
    2053                            surf_usm_v(l)%qsws_liq_eb_av = 0.0_wp
     2023                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%qsws_liq_av) )  THEN
     2024                           ALLOCATE( surf_usm_v(l)%qsws_liq_av(1:surf_usm_v(l)%ns) )
     2025                           surf_usm_v(l)%qsws_liq_av = 0.0_wp
    20542026                       ENDIF
    20552027                    ENDIF
     
    21712143                    ENDIF
    21722144               
    2173                 CASE ( 'usm_t_surf_10cm' )
    2174 !--                 near surface temperature for whole surfaces
     2145                CASE ( 'usm_theta_10cm' )
     2146!--                 near surface (10cm) temperature for whole surfaces
    21752147                    IF ( l == -1 ) THEN
    2176                        IF ( .NOT.  ALLOCATED(surf_usm_h%t_surf_10cm_av) )  THEN
    2177                            ALLOCATE( surf_usm_h%t_surf_10cm_av(1:surf_usm_h%ns) )
    2178                            surf_usm_h%t_surf_10cm_av = 0.0_wp
     2148                       IF ( .NOT.  ALLOCATED(surf_usm_h%pt_10cm_av) )  THEN
     2149                           ALLOCATE( surf_usm_h%pt_10cm_av(1:surf_usm_h%ns) )
     2150                           surf_usm_h%pt_10cm_av = 0.0_wp
    21792151                       ENDIF
    21802152                    ELSE
    2181                        IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_10cm_av) )  THEN
    2182                            ALLOCATE( surf_usm_v(l)%t_surf_10cm_av(1:surf_usm_v(l)%ns) )
    2183                            surf_usm_v(l)%t_surf_10cm_av = 0.0_wp
     2153                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%pt_10cm_av) )  THEN
     2154                           ALLOCATE( surf_usm_v(l)%pt_10cm_av(1:surf_usm_v(l)%ns) )
     2155                           surf_usm_v(l)%pt_10cm_av = 0.0_wp
    21842156                       ENDIF
    21852157                    ENDIF
    2186 
     2158                 
    21872159                CASE ( 'usm_t_wall' )
    21882160!--                 wall temperature for iwl layer of walls and land
     
    24232395                    IF ( l == -1 ) THEN
    24242396                    DO  m = 1, surf_usm_h%ns
    2425                        surf_usm_h%qsws_veg_eb_av(m) =                              &
    2426                                           surf_usm_h%qsws_veg_eb_av(m) +           &
    2427                                           surf_usm_h%qsws_veg_eb(m)
     2397                       surf_usm_h%qsws_veg_av(m) =                              &
     2398                                          surf_usm_h%qsws_veg_av(m) +           &
     2399                                          surf_usm_h%qsws_veg(m)
    24282400                    ENDDO
    24292401                    ELSE
    24302402                       DO  m = 1, surf_usm_v(l)%ns
    2431                           surf_usm_v(l)%qsws_veg_eb_av(m) =                        &
    2432                                           surf_usm_v(l)%qsws_veg_eb_av(m) +        &
    2433                                           surf_usm_v(l)%qsws_veg_eb(m)
     2403                          surf_usm_v(l)%qsws_veg_av(m) =                        &
     2404                                          surf_usm_v(l)%qsws_veg_av(m) +        &
     2405                                          surf_usm_v(l)%qsws_veg(m)
    24342406                       ENDDO
    24352407                    ENDIF
     
    24392411                    IF ( l == -1 ) THEN
    24402412                    DO  m = 1, surf_usm_h%ns
    2441                        surf_usm_h%qsws_liq_eb_av(m) =                              &
    2442                                           surf_usm_h%qsws_liq_eb_av(m) +           &
    2443                                           surf_usm_h%qsws_liq_eb(m)
     2413                       surf_usm_h%qsws_liq_av(m) =                              &
     2414                                          surf_usm_h%qsws_liq_av(m) +           &
     2415                                          surf_usm_h%qsws_liq(m)
    24442416                    ENDDO
    24452417                    ELSE
    24462418                       DO  m = 1, surf_usm_v(l)%ns
    2447                           surf_usm_v(l)%qsws_liq_eb_av(m) =                        &
    2448                                           surf_usm_v(l)%qsws_liq_eb_av(m) +        &
    2449                                           surf_usm_v(l)%qsws_liq_eb(m)
     2419                          surf_usm_v(l)%qsws_liq_av(m) =                        &
     2420                                          surf_usm_v(l)%qsws_liq_av(m) +        &
     2421                                          surf_usm_v(l)%qsws_liq(m)
    24502422                       ENDDO
    24512423                    ENDIF
     
    25792551                    ENDIF
    25802552               
    2581                 CASE ( 'usm_t_surf_10cm' )
     2553                CASE ( 'usm_theta_10cm' )
    25822554!--                 near surface temperature for whole surfaces
    25832555                    IF ( l == -1 ) THEN
    25842556                       DO  m = 1, surf_usm_h%ns
    2585                           surf_usm_h%t_surf_10cm_av(m) =                               &
    2586                                              surf_usm_h%t_surf_10cm_av(m) +            &
    2587                                              t_surf_10cm_h(m)
     2557                          surf_usm_h%pt_10cm_av(m) =                               &
     2558                                             surf_usm_h%pt_10cm_av(m) +            &
     2559                                             surf_usm_h%pt_10cm(m)
    25882560                       ENDDO
    25892561                    ELSE
    25902562                       DO  m = 1, surf_usm_v(l)%ns
    2591                           surf_usm_v(l)%t_surf_10cm_av(m) =                         &
    2592                                           surf_usm_v(l)%t_surf_10cm_av(m) +         &
    2593                                           t_surf_10cm_v(l)%t(m)
     2563                          surf_usm_v(l)%pt_10cm_av(m) =                         &
     2564                                          surf_usm_v(l)%pt_10cm_av(m) +         &
     2565                                          surf_usm_v(l)%pt_10cm(m)
    25942566                       ENDDO
    25952567                    ENDIF
    2596 
    25972568                   
    25982569                CASE ( 'usm_t_wall' )
     
    28402811                    IF ( l == -1 ) THEN
    28412812                    DO  m = 1, surf_usm_h%ns
    2842                        surf_usm_h%qsws_veg_eb_av(m) =                              &
    2843                                           surf_usm_h%qsws_veg_eb_av(m) /           &
     2813                       surf_usm_h%qsws_veg_av(m) =                              &
     2814                                          surf_usm_h%qsws_veg_av(m) /           &
    28442815                                          REAL( average_count_3d, kind=wp )
    28452816                    ENDDO
    28462817                    ELSE
    28472818                       DO  m = 1, surf_usm_v(l)%ns
    2848                           surf_usm_v(l)%qsws_veg_eb_av(m) =                        &
    2849                                           surf_usm_v(l)%qsws_veg_eb_av(m) /        &
     2819                          surf_usm_v(l)%qsws_veg_av(m) =                        &
     2820                                          surf_usm_v(l)%qsws_veg_av(m) /        &
    28502821                                          REAL( average_count_3d, kind=wp )
    28512822                       ENDDO
     
    28562827                    IF ( l == -1 ) THEN
    28572828                    DO  m = 1, surf_usm_h%ns
    2858                        surf_usm_h%qsws_liq_eb_av(m) =                              &
    2859                                           surf_usm_h%qsws_liq_eb_av(m) /           &
     2829                       surf_usm_h%qsws_liq_av(m) =                              &
     2830                                          surf_usm_h%qsws_liq_av(m) /           &
    28602831                                          REAL( average_count_3d, kind=wp )
    28612832                    ENDDO
    28622833                    ELSE
    28632834                       DO  m = 1, surf_usm_v(l)%ns
    2864                           surf_usm_v(l)%qsws_liq_eb_av(m) =                        &
    2865                                           surf_usm_v(l)%qsws_liq_eb_av(m) /        &
     2835                          surf_usm_v(l)%qsws_liq_av(m) =                        &
     2836                                          surf_usm_v(l)%qsws_liq_av(m) /        &
    28662837                                          REAL( average_count_3d, kind=wp )
    28672838                       ENDDO
     
    29962967                    ENDIF
    29972968                   
    2998                 CASE ( 'usm_t_surf_10cm' )
     2969                CASE ( 'usm_theta_10cm' )
    29992970!--                 near surface temperature for whole surfaces
    30002971                    IF ( l == -1 ) THEN
    30012972                       DO  m = 1, surf_usm_h%ns
    3002                           surf_usm_h%t_surf_10cm_av(m) =                               &
    3003                                              surf_usm_h%t_surf_10cm_av(m) /            &
     2973                          surf_usm_h%pt_10cm_av(m) =                               &
     2974                                             surf_usm_h%pt_10cm_av(m) /            &
    30042975                                             REAL( average_count_3d, kind=wp )
    30052976                       ENDDO
    30062977                    ELSE
    30072978                       DO  m = 1, surf_usm_v(l)%ns
    3008                           surf_usm_v(l)%t_surf_10cm_av(m) =                         &
    3009                                           surf_usm_v(l)%t_surf_10cm_av(m) /         &
     2979                          surf_usm_v(l)%pt_10cm_av(m) =                         &
     2980                                          surf_usm_v(l)%pt_10cm_av(m) /         &
    30102981                                          REAL( average_count_3d, kind=wp )
    30112982                       ENDDO
    30122983                    ENDIF
     2984
    30132985                   
    30142986                CASE ( 'usm_t_wall' )
     
    31733145                    'usm_t_surf_green              ', &
    31743146                    'usm_t_green                   ', &
    3175                     'usm_t_surf_10cm               ', &
     3147                    'usm_theta_10cm                ', &
    31763148                    'usm_skyvf                     ', &
    31773149                    'usm_skyvft                    '/)
     
    32603232                  var(1:16) == 'usm_t_surf_green'  .OR.                                   &
    32613233                  var(1:11) == 'usm_t_green' .OR.  var(1:7) == 'usm_swc' .OR.             &
    3262                   var(1:15) == 'usm_t_surf_10cm' )  THEN
     3234                  var(1:14) == 'usm_theta_10cm' )  THEN
    32633235            unit = 'K'
    32643236        ELSE IF ( var == 'usm_rad_pc_inlw'  .OR.  var == 'usm_rad_pc_insw'  .OR.          &
     
    39353907                       j = surf_usm_h%j(m)
    39363908                       k = surf_usm_h%k(m)
    3937                        temp_pf(k,j,i) = surf_usm_h%qsws_veg_eb(m)
     3909                       temp_pf(k,j,i) = surf_usm_h%qsws_veg(m)
    39383910                    ENDDO
    39393911                 ELSE
     
    39433915                       j = surf_usm_v(l)%j(m)
    39443916                       k = surf_usm_v(l)%k(m)
    3945                        temp_pf(k,j,i) = surf_usm_v(l)%qsws_veg_eb(m)
     3917                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_veg(m)
    39463918                    ENDDO
    39473919                 ENDIF
     
    39523924                       j = surf_usm_h%j(m)
    39533925                       k = surf_usm_h%k(m)
    3954                        temp_pf(k,j,i) = surf_usm_h%qsws_veg_eb_av(m)
     3926                       temp_pf(k,j,i) = surf_usm_h%qsws_veg_av(m)
    39553927                    ENDDO
    39563928                 ELSE
     
    39603932                       j = surf_usm_v(l)%j(m)
    39613933                       k = surf_usm_v(l)%k(m)
    3962                        temp_pf(k,j,i) = surf_usm_v(l)%qsws_veg_eb_av(m)
     3934                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_veg_av(m)
    39633935                    ENDDO
    39643936                 ENDIF
     
    39733945                       j = surf_usm_h%j(m)
    39743946                       k = surf_usm_h%k(m)
    3975                        temp_pf(k,j,i) = surf_usm_h%qsws_liq_eb(m)
     3947                       temp_pf(k,j,i) = surf_usm_h%qsws_liq(m)
    39763948                    ENDDO
    39773949                 ELSE
     
    39813953                       j = surf_usm_v(l)%j(m)
    39823954                       k = surf_usm_v(l)%k(m)
    3983                        temp_pf(k,j,i) = surf_usm_v(l)%qsws_liq_eb(m)
     3955                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_liq(m)
    39843956                    ENDDO
    39853957                 ENDIF
     
    39903962                       j = surf_usm_h%j(m)
    39913963                       k = surf_usm_h%k(m)
    3992                        temp_pf(k,j,i) = surf_usm_h%qsws_liq_eb_av(m)
     3964                       temp_pf(k,j,i) = surf_usm_h%qsws_liq_av(m)
    39933965                    ENDDO
    39943966                 ELSE
     
    39983970                       j = surf_usm_v(l)%j(m)
    39993971                       k = surf_usm_v(l)%k(m)
    4000                        temp_pf(k,j,i) = surf_usm_v(l)%qsws_liq_eb_av(m)
     3972                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_liq_av(m)
    40013973                    ENDDO
    40023974                 ENDIF
     
    43214293              ENDIF
    43224294
    4323           CASE ( 'usm_t_surf_10cm' )
     4295          CASE ( 'usm_theta_10cm' )
    43244296!--           near surface temperature for whole surfaces
    43254297
     
    43304302                       j = surf_usm_h%j(m)
    43314303                       k = surf_usm_h%k(m)
    4332                        temp_pf(k,j,i) = t_surf_10cm_h(m)
     4304                       temp_pf(k,j,i) = surf_usm_h%pt_10cm(m)
    43334305                    ENDDO
    43344306                 ELSE
     
    43384310                       j = surf_usm_v(l)%j(m)
    43394311                       k = surf_usm_v(l)%k(m)
    4340                        temp_pf(k,j,i) = t_surf_10cm_v(l)%t(m)
     4312                       temp_pf(k,j,i) = surf_usm_v(l)%pt_10cm(m)
    43414313                    ENDDO
    43424314                 ENDIF
    4343 
     4315             
     4316             
    43444317              ELSE
    43454318                 IF ( idsint == iup_u )  THEN
     
    43484321                       j = surf_usm_h%j(m)
    43494322                       k = surf_usm_h%k(m)
    4350                        temp_pf(k,j,i) = surf_usm_h%t_surf_10cm_av(m)
     4323                       temp_pf(k,j,i) = surf_usm_h%pt_10cm_av(m)
    43514324                    ENDDO
    43524325                 ELSE
     
    43564329                       j = surf_usm_v(l)%j(m)
    43574330                       k = surf_usm_v(l)%k(m)
    4358                        temp_pf(k,j,i) = surf_usm_v(l)%t_surf_10cm_av(m)
    4359                     ENDDO
    4360 
    4361                  ENDIF
    4362 
     4331                       temp_pf(k,j,i) = surf_usm_v(l)%pt_10cm_av(m)
     4332                    ENDDO
     4333
     4334                  ENDIF
    43634335              ENDIF
    4364 
    4365              
     4336             
    43664337          CASE ( 'usm_t_wall' )
    43674338!--           wall temperature for  iwl layer of walls and land
     
    45734544             var(1:17) == 'usm_t_surf_window'  .OR.  var(1:12) == 'usm_t_window'  .OR.      &
    45744545             var(1:16) == 'usm_t_surf_green'  .OR. var(1:11) == 'usm_t_green' .OR.          &
    4575              var(1:15) == 'usm_t_surf_10cm' .OR.                                            &
     4546             var(1:15) == 'usm_theta_10cm' .OR.                                             &
    45764547             var(1:9) == 'usm_surfz'  .OR.  var(1:7) == 'usm_svf'  .OR.                     &
    45774548             var(1:7) == 'usm_dif'  .OR.  var(1:11) == 'usm_surfcat'  .OR.                  &
     
    61566127        t_surf_green_h_p = t_surf_green_h
    61576128        t_surf_green_v_p = t_surf_green_v
    6158         t_surf_10cm_h_p = t_surf_10cm_h
    6159         t_surf_10cm_v_p = t_surf_10cm_v
    61606129
    61616130        t_wall_h_p = t_wall_h
     
    61806149       surf_usm_h%c_liq = 0.0_wp
    61816150
    6182        surf_usm_h%qsws_liq_eb  = 0.0_wp
    6183        surf_usm_h%qsws_veg_eb  = 0.0_wp
     6151       surf_usm_h%qsws_liq  = 0.0_wp
     6152       surf_usm_h%qsws_veg  = 0.0_wp
    61846153
    61856154!
     
    61896158          surf_usm_v(l)%c_liq = 0.0_wp
    61906159
    6191           surf_usm_v(l)%qsws_liq_eb  = 0.0_wp
    6192           surf_usm_v(l)%qsws_veg_eb  = 0.0_wp
     6160          surf_usm_v(l)%qsws_liq  = 0.0_wp
     6161          surf_usm_v(l)%qsws_veg  = 0.0_wp
    61936162       ENDDO
    61946163
     
    67796748                   ENDIF     
    67806749
    6781 !--                The root extraction (= root_extr * qsws_veg_eb / (rho_l     
     6750!--                The root extraction (= root_extr * qsws_veg / (rho_l     
    67826751!--                * l_v)) ensures the mass conservation for water. The         
    67836752!--                transpiration of plants equals the cumulative withdrawals by
     
    68186787                            swc_h(nzb_wall+1,m) - swc_h(nzb_wall,m) )    &
    68196788                            * surf_usm_h%ddz_green(nzb_wall+1,m) - surf_usm_h%gamma_w_green(nzb_wall,m) - ( &
    6820                                root_extr_green(nzb_wall) * surf_usm_h%qsws_veg_eb(m)          &
    6821 !                                + surf_usm_h%qsws_soil_eb_green(m)
     6789                               root_extr_green(nzb_wall) * surf_usm_h%qsws_veg(m)          &
     6790!                                + surf_usm_h%qsws_soil_green(m)
    68226791                                  ) * drho_l_lv )             &
    68236792                                 * surf_usm_h%ddz_green_stag(nzb_wall,m)
     
    68306799                                swc_h(kw-1,m)) * surf_usm_h%ddz_green(kw,m)                 &
    68316800                                + surf_usm_h%gamma_w_green(kw-1,m) - (root_extr_green(kw)             &
    6832                                 * surf_usm_h%qsws_veg_eb(m) * drho_l_lv)                &
     6801                                * surf_usm_h%qsws_veg(m) * drho_l_lv)                &
    68336802                                ) * surf_usm_h%ddz_green_stag(kw,m)
    68346803
     
    68416810                                           + surf_usm_h%gamma_w_green(nzt_wall-1,m) - (       &
    68426811                                             root_extr_green(nzt_wall)               &
    6843                                            * surf_usm_h%qsws_veg_eb(m) * drho_l_lv  )   &
     6812                                           * surf_usm_h%qsws_veg(m) * drho_l_lv  )   &
    68446813                                     ) * surf_usm_h%ddz_green_stag(nzt_wall,m)             
    68456814
     
    70537022    END SUBROUTINE usm_parin
    70547023
    7055 !------------------------------------------------------------------------------!
    7056 ! Description:
    7057 ! ------------
    7058 !> Calculates temperature near surface (10 cm) for indoor model
    7059 !------------------------------------------------------------------------------!
    7060     SUBROUTINE usm_temperature_near_surface
    7061 
    7062        IMPLICIT NONE
    7063 
    7064        INTEGER(iwp)                          :: i, j, k, l, m   !< running indices
    7065 
    7066 !       
    7067 !--    First, treat horizontal surface elements
    7068        DO  m = 1, surf_usm_h%ns
    7069 
    7070 !--       Get indices of respective grid point
    7071           i = surf_usm_h%i(m)
    7072           j = surf_usm_h%j(m)
    7073           k = surf_usm_h%k(m)
    7074 
    7075           t_surf_10cm_h(m) = surf_usm_h%pt_surface(m) + surf_usm_h%ts(m) / kappa        &
    7076                              * ( log( 0.1_wp /  surf_usm_h%z0h(m) )              &
    7077                                - psi_h( 0.1_wp / surf_usm_h%ol(m) )              &
    7078                                + psi_h( surf_usm_h%z0h(m) / surf_usm_h%ol(m) ) )
    7079 
    7080        ENDDO
    7081 !
    7082 !--    Now, treat vertical surface elements
    7083        DO  l = 0, 3
    7084           DO  m = 1, surf_usm_v(l)%ns
    7085 
    7086 !--          Get indices of respective grid point
    7087              i = surf_usm_v(l)%i(m)
    7088              j = surf_usm_v(l)%j(m)
    7089              k = surf_usm_v(l)%k(m)
    7090 
    7091              t_surf_10cm_v(l)%t(m) =surf_usm_v(l)%pt_surface(m) + surf_usm_v(l)%ts(m) / kappa &
    7092                                      * ( log( 0.1_wp / surf_usm_v(l)%z0h(m) )             &
    7093                                        - psi_h( 0.1_wp / surf_usm_v(l)%ol(m) )            &
    7094                                        + psi_h( surf_usm_v(l)%z0h(m) / surf_usm_v(l)%ol(m) ) )
    7095 
    7096           ENDDO
    7097 
    7098        ENDDO
    7099 
    7100 
    7101     END SUBROUTINE usm_temperature_near_surface
    7102 
    7103    
    71047024 
    71057025!------------------------------------------------------------------------------!
     
    94429362          surf_usm_h%qsws(m) = surf_usm_h%qsws_eb(m) / rho_lv
    94439363
    9444           surf_usm_h%qsws_veg_eb(m)  = - f_qsws_veg  * ( qv1 - q_s                      &
     9364          surf_usm_h%qsws_veg(m)  = - f_qsws_veg  * ( qv1 - q_s                      &
    94459365                              + dq_s_dt * t_surf_green_h(m) - dq_s_dt   &
    94469366                              * t_surf_green_h_p(m) )
    94479367
    9448           surf_usm_h%qsws_liq_eb(m)  = - f_qsws_liq  * ( qv1 - q_s                      &
     9368          surf_usm_h%qsws_liq(m)  = - f_qsws_liq  * ( qv1 - q_s                      &
    94499369                              + dq_s_dt * t_surf_green_h(m) - dq_s_dt   &
    94509370                              * t_surf_green_h_p(m) )
     
    94789398!--          as runoff as qsws_soil is then not used in the soil model
    94799399             IF ( m_liq_usm_h%var_usm_1d(m) /= m_liq_max )  THEN
    9480                 surf_usm_h%qsws_liq_eb(m) = surf_usm_h%qsws_liq_eb(m)                            &
     9400                surf_usm_h%qsws_liq(m) = surf_usm_h%qsws_liq(m)                            &
    94819401                                 + surf_usm_h%frac(ind_pav_green,m) * prr(k+k_off,j+j_off,i+i_off)&
    94829402                                 * hyrho(k+k_off)                              &
     
    94979417!                 surf_usm_h%qsws_soil(m) = surf_usm_h%qsws_soil(m) + surf_usm_h%qsws_liq(m)
    94989418
    9499                 surf_usm_h%qsws_liq_eb(m)  = 0.0_wp
     9419                surf_usm_h%qsws_liq(m)  = 0.0_wp
    95009420             ENDIF
    95019421
     
    95049424!--          let the water enter the liquid water reservoir as dew on the
    95059425!--          plant
    9506              IF ( surf_usm_h%qsws_veg_eb(m) < 0.0_wp )  THEN
    9507                 surf_usm_h%qsws_liq_eb(m) = surf_usm_h%qsws_liq_eb(m) + surf_usm_h%qsws_veg_eb(m)
    9508                 surf_usm_h%qsws_veg_eb(m) = 0.0_wp
     9426             IF ( surf_usm_h%qsws_veg(m) < 0.0_wp )  THEN
     9427                surf_usm_h%qsws_liq(m) = surf_usm_h%qsws_liq(m) + surf_usm_h%qsws_veg(m)
     9428                surf_usm_h%qsws_veg(m) = 0.0_wp
    95099429             ENDIF
    95109430          ENDIF                   
     
    95129432          surf_usm_h%qsws(m) = surf_usm_h%qsws(m) / l_v
    95139433 
    9514           tend = - surf_usm_h%qsws_liq_eb(m) * drho_l_lv
     9434          tend = - surf_usm_h%qsws_liq(m) * drho_l_lv
    95159435          m_liq_usm_h_p%var_usm_1d(m) = m_liq_usm_h%var_usm_1d(m) + dt_3d *    &
    95169436                                        ( tsc(2) * tend +                      &
     
    98959815          surf_usm_v(l)%qsws(m) = surf_usm_v(l)%qsws_eb(m) / rho_lv
    98969816
    9897           surf_usm_v(l)%qsws_veg_eb(m)  = - f_qsws_veg  * ( qv1 - q_s                      &
     9817          surf_usm_v(l)%qsws_veg(m)  = - f_qsws_veg  * ( qv1 - q_s                      &
    98989818                              + dq_s_dt * t_surf_green_v(l)%t(m) - dq_s_dt   &
    98999819                              * t_surf_green_v_p(l)%t(m) )
    99009820
    9901 !           surf_usm_h%qsws_liq_eb(m)  = - f_qsws_liq  * ( qv1 - q_s                      &
     9821!           surf_usm_h%qsws_liq(m)  = - f_qsws_liq  * ( qv1 - q_s                      &
    99029822!                               + dq_s_dt * t_surf_green_h(m) - dq_s_dt   &
    99039823!                               * t_surf_green_h_p(m) )
     
    99289848!--          let the water enter the liquid water reservoir as dew on the
    99299849!--          plant
    9930              IF ( surf_usm_v(l)%qsws_veg_eb(m) < 0.0_wp )  THEN
    9931 !                 surf_usm_h%qsws_liq_eb(m) = surf_usm_h%qsws_liq_eb(m) + surf_usm_h%qsws_veg_eb(m)
    9932                 surf_usm_v(l)%qsws_veg_eb(m) = 0.0_wp
     9850             IF ( surf_usm_v(l)%qsws_veg(m) < 0.0_wp )  THEN
     9851!                 surf_usm_h%qsws_liq(m) = surf_usm_h%qsws_liq(m) + surf_usm_h%qsws_veg(m)
     9852                surf_usm_v(l)%qsws_veg(m) = 0.0_wp
    99339853             ENDIF
    99349854          ENDIF   
     
    1025610176          CALL wrd_write_string( 't_green_v(' // dum // ')' )
    1025710177          WRITE ( 14 )  t_green_v(l)%t
    10258        
     10178!        
    1025910179       ENDDO
    1026010180
     
    1026210182    END SUBROUTINE usm_wrd_local
    1026310183
    10264 !
    10265 !-- Integrated stability function for heat and moisture
    10266     FUNCTION psi_h( zeta )
    10267 
    10268            USE kinds
    10269 
    10270        IMPLICIT NONE
    10271 
    10272        REAL(wp)            :: psi_h !< Integrated similarity function result
    10273        REAL(wp)            :: zeta  !< Stability parameter z/L
    10274        REAL(wp)            :: x     !< dummy variable
    10275 
    10276        REAL(wp), PARAMETER :: a = 1.0_wp            !< constant
    10277        REAL(wp), PARAMETER :: b = 0.66666666666_wp  !< constant
    10278        REAL(wp), PARAMETER :: c = 5.0_wp            !< constant
    10279        REAL(wp), PARAMETER :: d = 0.35_wp           !< constant
    10280        REAL(wp), PARAMETER :: c_d_d = c / d         !< constant
    10281        REAL(wp), PARAMETER :: bc_d_d = b * c / d    !< constant
    10282 
    10283 
    10284       IF ( zeta < 0.0_wp )  THEN
    10285          x = SQRT( 1.0_wp  - 16.0_wp * zeta )
    10286          psi_h = 2.0_wp * LOG( (1.0_wp + x ) / 2.0_wp )
    10287       ELSE
    10288          psi_h = - b * ( zeta - c_d_d ) * EXP( -d * zeta ) - (1.0_wp          &
    10289                  + 0.66666666666_wp * a * zeta )**1.5_wp - bc_d_d             &
    10290                  + 1.0_wp
    10291 !
    10292 !--       Old version for stable conditions (only valid for z/L < 0.5)
    10293 !--       psi_h = - 5.0_wp * zeta
    10294        ENDIF
    10295 
    10296    END FUNCTION psi_h
    10297    
     10184 
    1029810185 END MODULE urban_surface_mod
Note: See TracChangeset for help on using the changeset viewer.