Ignore:
Timestamp:
Oct 24, 2018 4:07:39 PM (5 years ago)
Author:
kanani
Message:

Add green facades, update building data base, fix for thin walls in spinup

File:
1 edited

Legend:

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

    r3382 r3418  
    2828! -----------------
    2929! $Id$
     30! (rvtils, srissman)
     31! -Updated building databse, two green roof types (ind_green_type_roof)
     32! -Latent heat flux for green walls and roofs, new output of latent heatflux
     33!  and soil water content of green roof substrate
     34! -t_surf changed to t_surf_wall
     35! -Added namelist parameter usm_wall_mod for lower wall tendency
     36!  of first two wall layers during spinup
     37! -Window calculations deactivated during spinup
     38!
     39! 3382 2018-10-19 13:10:32Z knoop
    3040! Bugix: made array declaration Fortran Standard conform
    3141!
     
    354364    USE arrays_3d,                                                             &
    355365#if ! defined( __nopointer )
    356         ONLY:  hyp, zu, pt, p, u, v, w, tend, exner
     366        ONLY:  hyp, zu, pt, p, u, v, w, tend, exner, hyrho, prr, q, ql, vpt
    357367#else
    358         ONLY:  hyp,     pt,    u, v, w, tend, exner
     368        ONLY:  hyp,     pt,    u, v, w, tend, exner, hyrho, prr, q, ql, vpt
    359369#endif
     370    USE calc_mean_profile_mod,                                                 &
     371        ONLY:  calc_mean_profile
    360372
    361373    USE basic_constants_and_equations_mod,                                     &
    362         ONLY:  c_p, g, kappa, pi, r_d
     374        ONLY:  c_p, g, kappa, pi, r_d, rho_l, l_v
    363375
    364376    USE control_parameters,                                                    &
     
    373385               plant_canopy, dz
    374386
     387    USE bulk_cloud_model_mod,                                                  &
     388        ONLY: bulk_cloud_model, precipitation
     389               
    375390    USE cpulog,                                                                &
    376391        ONLY:  cpu_log, log_point, log_point_s
     
    422437    IMPLICIT NONE
    423438
     439    !
     440!-- USM model constants
     441
     442    REAL(wp), PARAMETER ::                     &
     443              b_ch               = 6.04_wp,    & ! Clapp & Hornberger exponent
     444              lambda_h_green_dry       = 0.19_wp,    & ! heat conductivity for dry soil   
     445              lambda_h_green_sm        = 3.44_wp,    & ! heat conductivity of the soil matrix
     446              lambda_h_water     = 0.57_wp,    & ! heat conductivity of water
     447              psi_sat            = -0.388_wp,  & ! soil matrix potential at saturation
     448              rho_c_soil         = 2.19E6_wp,  & ! volumetric heat capacity of soil
     449              rho_c_water        = 4.20E6_wp !,  & ! volumetric heat capacity of water
     450!               m_max_depth        = 0.0002_wp     ! Maximum capacity of the water reservoir (m)
     451
     452!
     453!-- Soil parameters I           alpha_vg,      l_vg_green,    n_vg, gamma_w_green_sat
     454    REAL(wp), DIMENSION(0:3,1:7), PARAMETER :: soil_pars = RESHAPE( (/     &
     455                                 3.83_wp,  1.250_wp, 1.38_wp,  6.94E-6_wp, & ! 1
     456                                 3.14_wp, -2.342_wp, 1.28_wp,  1.16E-6_wp, & ! 2
     457                                 0.83_wp, -0.588_wp, 1.25_wp,  0.26E-6_wp, & ! 3
     458                                 3.67_wp, -1.977_wp, 1.10_wp,  2.87E-6_wp, & ! 4
     459                                 2.65_wp,  2.500_wp, 1.10_wp,  1.74E-6_wp, & ! 5
     460                                 1.30_wp,  0.400_wp, 1.20_wp,  0.93E-6_wp, & ! 6
     461                                 0.00_wp,  0.00_wp,  0.00_wp,  0.57E-6_wp  & ! 7
     462                                 /), (/ 4, 7 /) )
     463
     464!
     465!-- Soil parameters II              swc_sat,     fc,   wilt,    swc_res 
     466    REAL(wp), DIMENSION(0:3,1:7), PARAMETER :: m_soil_pars = RESHAPE( (/ &
     467                                 0.403_wp, 0.244_wp, 0.059_wp, 0.025_wp, & ! 1
     468                                 0.439_wp, 0.347_wp, 0.151_wp, 0.010_wp, & ! 2
     469                                 0.430_wp, 0.383_wp, 0.133_wp, 0.010_wp, & ! 3
     470                                 0.520_wp, 0.448_wp, 0.279_wp, 0.010_wp, & ! 4
     471                                 0.614_wp, 0.541_wp, 0.335_wp, 0.010_wp, & ! 5
     472                                 0.766_wp, 0.663_wp, 0.267_wp, 0.010_wp, & ! 6
     473                                 0.472_wp, 0.323_wp, 0.171_wp, 0.000_wp  & ! 7
     474                                 /), (/ 4, 7 /) )
     475                               
     476    !   value 9999999.9_wp -> generic available or user-defined value must be set
     477!   otherwise -> no generic variable and user setting is optional
     478    REAL(wp) :: alpha_vangenuchten = 9999999.9_wp,      & !< NAMELIST alpha_vg
     479                field_capacity = 9999999.9_wp,          & !< NAMELIST fc
     480                hydraulic_conductivity = 9999999.9_wp,  & !< NAMELIST gamma_w_green_sat
     481                lambda_h_green_sat = 0.0_wp,            & !< heat conductivity for saturated soil
     482                l_vangenuchten = 9999999.9_wp,          & !< NAMELIST l_vg
     483                n_vangenuchten = 9999999.9_wp,          & !< NAMELIST n_vg
     484                residual_moisture = 9999999.9_wp,       & !< NAMELIST m_res
     485                saturation_moisture = 9999999.9_wp,     & !< NAMELIST m_sat
     486                wilting_point = 9999999.9_wp!,           & !< NAMELIST m_wilt
     487   
    424488
    425489!-- configuration parameters (they can be setup in PALM config)
     
    429493    LOGICAL ::  indoor_model = .FALSE.             !< whether to use the indoor model
    430494    LOGICAL ::  read_wall_temp_3d = .FALSE.
     495    LOGICAL ::  usm_wall_mod = .FALSE.             !< reduces conductivity of the first 2 wall layers by factor 0.1
    431496
    432497
     
    439504!
    440505!-- Indices of input attributes for (above) ground floor level
    441     INTEGER(iwp) ::  ind_alb_wall          = 38 !< index in input list for albedo_type of wall fraction
    442     INTEGER(iwp) ::  ind_alb_green         = 39 !< index in input list for albedo_type of green fraction
    443     INTEGER(iwp) ::  ind_alb_win           = 40 !< index in input list for albedo_type of window fraction
    444     INTEGER(iwp) ::  ind_emis_wall_agfl    = 14 !< index in input list for wall emissivity, above ground floor level
    445     INTEGER(iwp) ::  ind_emis_wall_gfl     = 32 !< index in input list for wall emissivity, ground floor level
    446     INTEGER(iwp) ::  ind_emis_green_agfl   = 15 !< index in input list for green emissivity, above ground floor level
    447     INTEGER(iwp) ::  ind_emis_green_gfl    = 33 !< index in input list for green emissivity, ground floor level
    448     INTEGER(iwp) ::  ind_emis_win_agfl     = 16 !< index in input list for window emissivity, above ground floor level
    449     INTEGER(iwp) ::  ind_emis_win_gfl      = 34 !< index in input list for window emissivity, ground floor level
    450     INTEGER(iwp) ::  ind_green_frac_w_agfl = 2  !< index in input list for green fraction on wall, above ground floor level
    451     INTEGER(iwp) ::  ind_green_frac_w_gfl  = 23 !< index in input list for green fraction on wall, ground floor level
    452     INTEGER(iwp) ::  ind_green_frac_r_agfl = 3  !< index in input list for green fraction on roof, above ground floor level
    453     INTEGER(iwp) ::  ind_green_frac_r_gfl  = 24 !< index in input list for green fraction on roof, ground floor level
    454     INTEGER(iwp) ::  ind_hc1_agfl          =  6 !< index in input list for heat capacity at first wall layer, above ground floor level
    455     INTEGER(iwp) ::  ind_hc1_gfl           = 26 !< index in input list for heat capacity at first wall layer, ground floor level
    456     INTEGER(iwp) ::  ind_hc2_agfl          = 7  !< index in input list for heat capacity at second wall layer, above ground floor level
    457     INTEGER(iwp) ::  ind_hc2_gfl           = 27 !< index in input list for heat capacity at second wall layer, ground floor level
    458     INTEGER(iwp) ::  ind_hc3_agfl          = 8  !< index in input list for heat capacity at third wall layer, above ground floor level
    459     INTEGER(iwp) ::  ind_hc3_gfl           = 28 !< index in input list for heat capacity at third wall layer, ground floor level
    460     INTEGER(iwp) ::  ind_gflh              = 20 !< index in input list for ground floor level height
    461     INTEGER(iwp) ::  ind_lai_r_agfl        = 4  !< index in input list for LAI on roof, above ground floor level
    462     INTEGER(iwp) ::  ind_lai_r_gfl         = 4  !< index in input list for LAI on roof, ground floor level
    463     INTEGER(iwp) ::  ind_lai_w_agfl        = 5  !< index in input list for LAI on wall, above ground floor level
    464     INTEGER(iwp) ::  ind_lai_w_gfl         = 25 !< index in input list for LAI on wall, ground floor level
    465     INTEGER(iwp) ::  ind_tc1_agfl          = 9  !< index in input list for thermal conductivity at first wall layer, above ground floor level
    466     INTEGER(iwp) ::  ind_tc1_gfl           = 29 !< index in input list for thermal conductivity at first wall layer, ground floor level
    467     INTEGER(iwp) ::  ind_tc2_agfl          = 10 !< index in input list for thermal conductivity at second wall layer, above ground floor level
    468     INTEGER(iwp) ::  ind_tc2_gfl           = 30 !< index in input list for thermal conductivity at second wall layer, ground floor level
    469     INTEGER(iwp) ::  ind_tc3_agfl          = 11 !< index in input list for thermal conductivity at third wall layer, above ground floor level
    470     INTEGER(iwp) ::  ind_tc3_gfl           = 31 !< index in input list for thermal conductivity at third wall layer, ground floor level
    471     INTEGER(iwp) ::  ind_thick_1           = 41 !< index for wall layer thickness - 1st layer
    472     INTEGER(iwp) ::  ind_thick_2           = 42 !< index for wall layer thickness - 2nd layer
    473     INTEGER(iwp) ::  ind_thick_3           = 43 !< index for wall layer thickness - 3rd layer
    474     INTEGER(iwp) ::  ind_thick_4           = 44 !< index for wall layer thickness - 4th layer
    475     INTEGER(iwp) ::  ind_trans_agfl        = 17 !< index in input list for window transmissivity, above ground floor level
    476     INTEGER(iwp) ::  ind_trans_gfl         = 35 !< index in input list for window transmissivity, ground floor level
    477     INTEGER(iwp) ::  ind_wall_frac_agfl    = 0  !< index in input list for wall fraction, above ground floor level
    478     INTEGER(iwp) ::  ind_wall_frac_gfl     = 21 !< index in input list for wall fraction, ground floor level
    479     INTEGER(iwp) ::  ind_win_frac_agfl     = 1  !< index in input list for window fraction, above ground floor level
    480     INTEGER(iwp) ::  ind_win_frac_gfl      = 22 !< index in input list for window fraction, ground floor level
    481     INTEGER(iwp) ::  ind_z0_agfl           = 18 !< index in input list for z0, above ground floor level
    482     INTEGER(iwp) ::  ind_z0_gfl            = 36 !< index in input list for z0, ground floor level
    483     INTEGER(iwp) ::  ind_z0qh_agfl         = 19 !< index in input list for z0h / z0q, above ground floor level
    484     INTEGER(iwp) ::  ind_z0qh_gfl          = 37 !< index in input list for z0h / z0q, ground floor level
    485 
    486 
    487     REAL(wp)  ::  roof_height_limit = 4._wp          !< height for distinguish between land surfaces and roofs
     506    INTEGER(iwp) ::  ind_alb_wall_agfl     = 65  !< index in input list for albedo_type of wall above ground floor level
     507    INTEGER(iwp) ::  ind_alb_wall_gfl      = 32  !< index in input list for albedo_type of wall ground floor level
     508    INTEGER(iwp) ::  ind_alb_wall_r        = 96  !< index in input list for albedo_type of wall roof
     509    INTEGER(iwp) ::  ind_alb_green_agfl    = 83  !< index in input list for albedo_type of green above ground floor level
     510    INTEGER(iwp) ::  ind_alb_green_gfl     = 50  !< index in input list for albedo_type of green ground floor level
     511    INTEGER(iwp) ::  ind_alb_green_r       = 115 !< index in input list for albedo_type of green roof
     512    INTEGER(iwp) ::  ind_alb_win_agfl      = 79  !< index in input list for albedo_type of window fraction above ground floor level
     513    INTEGER(iwp) ::  ind_alb_win_gfl       = 46  !< index in input list for albedo_type of window fraction ground floor level
     514    INTEGER(iwp) ::  ind_alb_win_r         = 110 !< index in input list for albedo_type of window fraction roof
     515    INTEGER(iwp) ::  ind_emis_wall_agfl    = 64  !< index in input list for wall emissivity, above ground floor level
     516    INTEGER(iwp) ::  ind_emis_wall_gfl     = 31  !< index in input list for wall emissivity, ground floor level
     517    INTEGER(iwp) ::  ind_emis_wall_r       = 95  !< index in input list for wall emissivity, roof
     518    INTEGER(iwp) ::  ind_emis_green_agfl   = 82  !< index in input list for green emissivity, above ground floor level
     519    INTEGER(iwp) ::  ind_emis_green_gfl    = 49  !< index in input list for green emissivity, ground floor level
     520    INTEGER(iwp) ::  ind_emis_green_r      = 114 !< index in input list for green emissivity, roof
     521    INTEGER(iwp) ::  ind_emis_win_agfl     = 77  !< index in input list for window emissivity, above ground floor level
     522    INTEGER(iwp) ::  ind_emis_win_gfl      = 44  !< index in input list for window emissivity, ground floor level
     523    INTEGER(iwp) ::  ind_emis_win_r        = 108 !< index in input list for window emissivity, roof
     524    INTEGER(iwp) ::  ind_green_frac_w_agfl = 80  !< index in input list for green fraction on wall, above ground floor level
     525    INTEGER(iwp) ::  ind_green_frac_w_gfl  = 47  !< index in input list for green fraction on wall, ground floor level
     526    INTEGER(iwp) ::  ind_green_frac_r_agfl = 112 !< index in input list for green fraction on roof, above ground floor level
     527    INTEGER(iwp) ::  ind_green_frac_r_gfl  = 111 !< index in input list for green fraction on roof, ground floor level
     528    INTEGER(iwp) ::  ind_hc1_agfl          = 58  !< index in input list for heat capacity at first wall layer, above ground floor level
     529    INTEGER(iwp) ::  ind_hc1_gfl           = 25  !< index in input list for heat capacity at first wall layer, ground floor level
     530    INTEGER(iwp) ::  ind_hc1_wall_r        = 89  !< index in input list for heat capacity at first wall layer, roof
     531    INTEGER(iwp) ::  ind_hc1_win_agfl      = 71  !< index in input list for heat capacity at first window layer, above ground floor level
     532    INTEGER(iwp) ::  ind_hc1_win_gfl       = 38  !< index in input list for heat capacity at first window layer, ground floor level
     533    INTEGER(iwp) ::  ind_hc1_win_r         = 102 !< index in input list for heat capacity at first window layer, roof
     534    INTEGER(iwp) ::  ind_hc2_agfl          = 59  !< index in input list for heat capacity at second wall layer, above ground floor level
     535    INTEGER(iwp) ::  ind_hc2_gfl           = 26  !< index in input list for heat capacity at second wall layer, ground floor level
     536    INTEGER(iwp) ::  ind_hc2_wall_r        = 90  !< index in input list for heat capacity at second wall layer, roof
     537    INTEGER(iwp) ::  ind_hc2_win_agfl      = 72  !< index in input list for heat capacity at second window layer, above ground floor level
     538    INTEGER(iwp) ::  ind_hc2_win_gfl       = 39  !< index in input list for heat capacity at second window layer, ground floor level
     539    INTEGER(iwp) ::  ind_hc2_win_r         = 103 !< index in input list for heat capacity at second window layer, roof
     540    INTEGER(iwp) ::  ind_hc3_agfl          = 60  !< index in input list for heat capacity at third wall layer, above ground floor level
     541    INTEGER(iwp) ::  ind_hc3_gfl           = 27  !< index in input list for heat capacity at third wall layer, ground floor level
     542    INTEGER(iwp) ::  ind_hc3_wall_r        = 91  !< index in input list for heat capacity at third wall layer, roof
     543    INTEGER(iwp) ::  ind_hc3_win_agfl      = 73  !< index in input list for heat capacity at third window layer, above ground floor level
     544    INTEGER(iwp) ::  ind_hc3_win_gfl       = 40  !< index in input list for heat capacity at third window layer, ground floor level
     545    INTEGER(iwp) ::  ind_hc3_win_r         = 104 !< index in input list for heat capacity at third window layer, roof
     546    INTEGER(iwp) ::  ind_gflh              = 17  !< index in input list for ground floor level height
     547    INTEGER(iwp) ::  ind_lai_r_agfl        = 113 !< index in input list for LAI on roof, above ground floor level
     548    INTEGER(iwp) ::  ind_lai_r_gfl         = 113  !< index in input list for LAI on roof, ground floor level
     549    INTEGER(iwp) ::  ind_lai_w_agfl        = 81  !< index in input list for LAI on wall, above ground floor level
     550    INTEGER(iwp) ::  ind_lai_w_gfl         = 48  !< index in input list for LAI on wall, ground floor level
     551    INTEGER(iwp) ::  ind_tc1_agfl          = 61  !< index in input list for thermal conductivity at first wall layer, above ground floor level
     552    INTEGER(iwp) ::  ind_tc1_gfl           = 28  !< index in input list for thermal conductivity at first wall layer, ground floor level
     553    INTEGER(iwp) ::  ind_tc1_wall_r        = 92  !< index in input list for thermal conductivity at first wall layer, roof
     554    INTEGER(iwp) ::  ind_tc1_win_agfl      = 74  !< index in input list for thermal conductivity at first window layer, above ground floor level
     555    INTEGER(iwp) ::  ind_tc1_win_gfl       = 41  !< index in input list for thermal conductivity at first window layer, ground floor level
     556    INTEGER(iwp) ::  ind_tc1_win_r         = 105 !< index in input list for thermal conductivity at first window layer, roof
     557    INTEGER(iwp) ::  ind_tc2_agfl          = 62  !< index in input list for thermal conductivity at second wall layer, above ground floor level
     558    INTEGER(iwp) ::  ind_tc2_gfl           = 29  !< index in input list for thermal conductivity at second wall layer, ground floor level
     559    INTEGER(iwp) ::  ind_tc2_wall_r        = 93  !< index in input list for thermal conductivity at second wall layer, roof
     560    INTEGER(iwp) ::  ind_tc2_win_agfl      = 75  !< index in input list for thermal conductivity at second window layer, above ground floor level
     561    INTEGER(iwp) ::  ind_tc2_win_gfl       = 42  !< index in input list for thermal conductivity at second window layer, ground floor level
     562    INTEGER(iwp) ::  ind_tc2_win_r         = 106 !< index in input list for thermal conductivity at second window layer, ground floor level
     563    INTEGER(iwp) ::  ind_tc3_agfl          = 63  !< index in input list for thermal conductivity at third wall layer, above ground floor level
     564    INTEGER(iwp) ::  ind_tc3_gfl           = 30  !< index in input list for thermal conductivity at third wall layer, ground floor level
     565    INTEGER(iwp) ::  ind_tc3_wall_r        = 94  !< index in input list for thermal conductivity at third wall layer, roof
     566    INTEGER(iwp) ::  ind_tc3_win_agfl      = 76  !< index in input list for thermal conductivity at third window layer, above ground floor level
     567    INTEGER(iwp) ::  ind_tc3_win_gfl       = 43  !< index in input list for thermal conductivity at third window layer, ground floor level
     568    INTEGER(iwp) ::  ind_tc3_win_r         = 107 !< index in input list for thermal conductivity at third window layer, roof
     569    INTEGER(iwp) ::  ind_thick_1_agfl      = 54  !< index for wall layer thickness - 1st layer above ground floor level
     570    INTEGER(iwp) ::  ind_thick_1_gfl       = 21  !< index for wall layer thickness - 1st layer ground floor level
     571    INTEGER(iwp) ::  ind_thick_1_wall_r    = 85  !< index for wall layer thickness - 1st layer roof
     572    INTEGER(iwp) ::  ind_thick_1_win_agfl  = 67  !< index for window layer thickness - 1st layer above ground floor level
     573    INTEGER(iwp) ::  ind_thick_1_win_gfl   = 34  !< index for window layer thickness - 1st layer ground floor level
     574    INTEGER(iwp) ::  ind_thick_1_win_r     = 98  !< index for window layer thickness - 1st layer roof
     575    INTEGER(iwp) ::  ind_thick_2_agfl      = 55  !< index for wall layer thickness - 2nd layer above ground floor level
     576    INTEGER(iwp) ::  ind_thick_2_gfl       = 22  !< index for wall layer thickness - 2nd layer ground floor level
     577    INTEGER(iwp) ::  ind_thick_2_wall_r    = 86  !< index for wall layer thickness - 2nd layer roof
     578    INTEGER(iwp) ::  ind_thick_2_win_agfl  = 68  !< index for window layer thickness - 2nd layer above ground floor level
     579    INTEGER(iwp) ::  ind_thick_2_win_gfl   = 35  !< index for window layer thickness - 2nd layer ground floor level
     580    INTEGER(iwp) ::  ind_thick_2_win_r     = 99  !< index for window layer thickness - 2nd layer roof
     581    INTEGER(iwp) ::  ind_thick_3_agfl      = 56  !< index for wall layer thickness - 3rd layer above ground floor level
     582    INTEGER(iwp) ::  ind_thick_3_gfl       = 23  !< index for wall layer thickness - 3rd layer ground floor level
     583    INTEGER(iwp) ::  ind_thick_3_wall_r    = 87  !< index for wall layer thickness - 3rd layer roof
     584    INTEGER(iwp) ::  ind_thick_3_win_agfl  = 69  !< index for window layer thickness - 3rd layer above ground floor level
     585    INTEGER(iwp) ::  ind_thick_3_win_gfl   = 36  !< index for window layer thickness - 3rd layer ground floor level 
     586    INTEGER(iwp) ::  ind_thick_3_win_r     = 100 !< index for window layer thickness - 3rd layer roof
     587    INTEGER(iwp) ::  ind_thick_4_agfl      = 57  !< index for wall layer thickness - 4th layer above ground floor level
     588    INTEGER(iwp) ::  ind_thick_4_gfl       = 24  !< index for wall layer thickness - 4th layer ground floor level
     589    INTEGER(iwp) ::  ind_thick_4_wall_r    = 88  !< index for wall layer thickness - 4st layer roof
     590    INTEGER(iwp) ::  ind_thick_4_win_agfl  = 70  !< index for window layer thickness - 4th layer above ground floor level
     591    INTEGER(iwp) ::  ind_thick_4_win_gfl   = 37  !< index for window layer thickness - 4th layer ground floor level
     592    INTEGER(iwp) ::  ind_thick_4_win_r     = 101 !< index for window layer thickness - 4th layer roof
     593    INTEGER(iwp) ::  ind_trans_agfl        = 78  !< index in input list for window transmissivity, above ground floor level
     594    INTEGER(iwp) ::  ind_trans_gfl         = 45  !< index in input list for window transmissivity, ground floor level
     595    INTEGER(iwp) ::  ind_trans_r           = 109 !< index in input list for window transmissivity, roof
     596    INTEGER(iwp) ::  ind_wall_frac_agfl    = 53  !< index in input list for wall fraction, above ground floor level
     597    INTEGER(iwp) ::  ind_wall_frac_gfl     = 20  !< index in input list for wall fraction, ground floor level
     598    INTEGER(iwp) ::  ind_wall_frac_r       = 84  !< index in input list for wall fraction, roof
     599    INTEGER(iwp) ::  ind_win_frac_agfl     = 66  !< index in input list for window fraction, above ground floor level
     600    INTEGER(iwp) ::  ind_win_frac_gfl      = 33  !< index in input list for window fraction, ground floor level
     601    INTEGER(iwp) ::  ind_win_frac_r        = 97  !< index in input list for window fraction, roof
     602    INTEGER(iwp) ::  ind_z0_agfl           = 51  !< index in input list for z0, above ground floor level
     603    INTEGER(iwp) ::  ind_z0_gfl            = 18  !< index in input list for z0, ground floor level
     604    INTEGER(iwp) ::  ind_z0qh_agfl         = 52  !< index in input list for z0h / z0q, above ground floor level
     605    INTEGER(iwp) ::  ind_z0qh_gfl          = 19  !< index in input list for z0h / z0q, ground floor level
     606    INTEGER(iwp) ::  ind_green_type_roof   = 116 !< index in input list for type of green roof
     607
     608
     609    REAL(wp)  ::  roof_height_limit = 4.0_wp          !< height for distinguish between land surfaces and roofs
    488610    REAL(wp)  ::  ground_floor_level = 4.0_wp        !< default ground floor level
    489611
     
    500622                                                                     /)
    501623!
    502 !-- building parameters, 4 different types
    503 !-- 0 - wall fraction, 1- window fraction, 2 - green fraction on wall, 3- green fraction
    504 !-- at roof, 4 - lai of green fraction at roof,  5 - lai of green fraction at wall,
    505 !-- 6 - heat capacity of wall layer 1, 7 - heat capacity of wall layer 2,
    506 !-- 8 - heat capacity of wall layer 3, 9 - thermal conductivity of wall layer 1,
    507 !-- 10 - thermal conductivity of wall layer 2, 11 - thermal conductivity of wall layer 3, 
    508 !-- 12 - indoor target summer temperature ( K ), 13 - indoor target winter temperature (K),
    509 !-- 14 - emissivity of wall fraction, 15 - emissivity of green fraction, 16 - emissivity of window fraction,
    510 !-- 17 - transmissivity of window fraction, 18 - z0, 19 - z0h/z0q, 20 - ground floor height,
    511 !-- 21 - ground floor wall fraction, 22 - ground floor window fraction, 23 ground floor green fraction,
    512 !-- 24 - ground floor green fraction on roof, 25 - ground floor lai of green fraction,
    513 !-- 26 - ground floor heat capacity of wall layer 1, 27 - ground floor heat capacity of wall layer 1,
    514 !-- 28 - ground floor heat capacity of wall layer 3, 29 - ground floor thermal conductivity of wall layer 1,
    515 !-- 30 - ground floor thermal conductivity of wall layer 2, 31 - ground floor thermal conductivity of wall layer 3,
    516 !-- 32 - ground floor emissivity of wall fraction, 33 - ground floor emissivity of green fraction,
    517 !-- 34 - ground floor emissivity of window fraction, 35 - ground floor transmissivity of window fraction,
    518 !-- 36 - ground floor z0, 37 - ground floor z0h/z0q, 38 - albedo type wall fraction
    519 !-- 39 - albedo type green fraction, 40 - albedo type window fraction
    520 !-- 41 - wall layer thickness - 1st layer, 42 - wall layer thickness - 2nd layer,
    521 !-- 43 - wall layer thickness - 3rd layer, 44 - wall layer thickness - 4th layer,
    522 !-- 45 - heat capacity of the wall surface, 46 - heat conductivity
    523 !-- Please note, only preleminary dummy values so far!
    524     REAL(wp), DIMENSION(0:46,1:7), PARAMETER :: building_pars = RESHAPE( (/    &
    525         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp, 1.0_wp,                        & !parameter 0-5
    526         1000000.0_wp, 1000000.0_wp, 1000000.0_wp, 0.3_wp, 0.3_wp, 0.3_wp,      & !parameter 6-11
    527         296.15_wp, 293.15_wp, 0.9_wp, 0.9_wp, 0.01_wp, 0.99_wp,                & !parameter 12-17
    528         0.001_wp, 0.0001_wp, 4.0_wp,                                           & !parameter 18-20
    529         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 3.0_wp,                                & !parameter 21-25
    530         1000000.0_wp, 1000000.0_wp, 1000000.0_wp,                              & !parameter 26-28                     
    531         0.3_wp, 0.3_wp, 0.3_wp,                                                & !parameter 29-31       
    532         0.9_wp, 0.4_wp, 0.4_wp, 0.4_wp, 0.01_wp, 0.001_wp,                     & !parameter 32-37
    533         24.0_wp, 24.0_wp, 24.0_wp,                                             & !parameter 38-40
    534         0.0242_wp, 0.0969_wp, 0.346_wp, 1.0_wp,                                & !parameter 41-44
    535         20000.0_wp, 10.0_wp,                                                   & !parameter 45-46 - end of type 1
    536         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp, 1.0_wp,                        & !parameter 0-5
    537         1000000.0_wp, 1000000.0_wp, 1000000.0_wp, 0.3_wp, 0.3_wp, 0.3_wp,      & !parameter 6-11
    538         296.15_wp, 293.15_wp, 0.9_wp, 0.9_wp, 0.01_wp, 0.99_wp,                & !parameter 12-17
    539         0.001_wp, 0.0001_wp, 4.0_wp,                                           & !parameter 18-20
    540         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 3.0_wp,                                & !parameter 21-25
    541         1000000.0_wp, 1000000.0_wp, 1000000.0_wp,                              & !parameter 26-28                     
    542         0.3_wp, 0.3_wp, 0.3_wp,                                                & !parameter 29-31       
    543         0.9_wp, 0.4_wp, 0.4_wp, 0.4_wp, 0.01_wp, 0.001_wp,                     & !parameter 32-37
    544         24.0_wp, 24.0_wp, 24.0_wp,                                             & !parameter 38-40
    545         0.0242_wp, 0.0969_wp, 0.346_wp, 1.0_wp,                                & !parameter 41-44
    546         20000.0_wp, 10.0_wp,                                                   & !parameter 45-46 - end of type 2
    547         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp, 1.0_wp,                        & !parameter 0-5
    548         1000000.0_wp, 1000000.0_wp, 1000000.0_wp, 0.3_wp, 0.3_wp, 0.3_wp,      & !parameter 6-11
    549         296.15_wp, 293.15_wp, 0.9_wp, 0.9_wp, 0.01_wp, 0.99_wp,                & !parameter 12-17
    550         0.001_wp, 0.0001_wp, 4.0_wp,                                           & !parameter 18-20
    551         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 3.0_wp,                                & !parameter 21-25
    552         1000000.0_wp, 1000000.0_wp, 1000000.0_wp,                              & !parameter 26-28                     
    553         0.3_wp, 0.3_wp, 0.3_wp,                                                & !parameter 29-31       
    554         0.9_wp, 0.4_wp, 0.4_wp, 0.4_wp, 0.01_wp, 0.001_wp,                     & !parameter 32-37
    555         24.0_wp, 24.0_wp, 24.0_wp,                                             & !parameter 38-40
    556         0.0242_wp, 0.0969_wp, 0.346_wp, 1.0_wp,                                & !parameter 41-44
    557         20000.0_wp, 10.0_wp,                                                   & !parameter 45-46 - end of type 3
    558         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp, 1.0_wp,                        & !parameter 0-5
    559         1000000.0_wp, 1000000.0_wp, 1000000.0_wp, 0.3_wp, 0.3_wp, 0.3_wp,      & !parameter 6-11
    560         296.15_wp, 293.15_wp, 0.9_wp, 0.9_wp, 0.01_wp, 0.99_wp,                & !parameter 12-17
    561         0.01_wp, 0.001_wp, 4.0_wp,                                             & !parameter 18-20
    562         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 3.0_wp,                                & !parameter 21-25
    563         1000000.0_wp, 1000000.0_wp, 1000000.0_wp,                              & !parameter 26-28                     
    564         0.3_wp, 0.3_wp, 0.3_wp,                                                & !parameter 29-31       
    565         0.9_wp, 0.4_wp, 0.4_wp, 0.4_wp, 0.01_wp, 0.001_wp,                     & !parameter 32-37
    566         24.0_wp, 24.0_wp, 24.0_wp,                                             & !parameter 38-40
    567         0.0242_wp, 0.0969_wp, 0.346_wp, 1.0_wp,                                & !parameter 41-44
    568         20000.0_wp, 10.0_wp,                                                   & !parameter 45-46 - end of type 4
    569         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp, 1.0_wp,                        & !parameter 0-5
    570         1000000.0_wp, 1000000.0_wp, 1000000.0_wp, 0.3_wp, 0.3_wp, 0.3_wp,      & !parameter 6-11
    571         296.15_wp, 293.15_wp, 0.9_wp, 0.9_wp, 0.01_wp, 0.99_wp,                & !parameter 12-17
    572         0.001_wp, 0.0001_wp, 4.0_wp,                                           & !parameter 18-20
    573         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 3.0_wp,                                & !parameter 21-25
    574         1000000.0_wp, 1000000.0_wp, 1000000.0_wp,                              & !parameter 26-28                     
    575         0.3_wp, 0.3_wp, 0.3_wp,                                                & !parameter 29-31       
    576         0.9_wp, 0.4_wp, 0.4_wp, 0.4_wp, 0.01_wp, 0.001_wp,                     & !parameter 32-37
    577         24.0_wp, 24.0_wp, 24.0_wp,                                             & !parameter 38-40
    578         0.0242_wp, 0.0969_wp, 0.346_wp, 1.0_wp,                                & !parameter 41-44
    579         20000.0_wp, 10.0_wp,                                                   & !parameter 45-46 - end of type 5
    580         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp, 1.0_wp,                        & !parameter 0-5
    581         1000000.0_wp, 1000000.0_wp, 1000000.0_wp, 0.3_wp, 0.3_wp, 0.3_wp,      & !parameter 6-11
    582         296.15_wp, 293.15_wp, 0.9_wp, 0.9_wp, 0.01_wp, 0.99_wp,                & !parameter 12-17
    583         0.001_wp, 0.0001_wp, 4.0_wp,                                           & !parameter 18-20
    584         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 3.0_wp,                                & !parameter 21-25
    585         1000000.0_wp, 1000000.0_wp, 1000000.0_wp,                              & !parameter 26-28                     
    586         0.3_wp, 0.3_wp, 0.3_wp,                                                & !parameter 29-31       
    587         0.9_wp, 0.4_wp, 0.4_wp, 0.4_wp, 0.01_wp, 0.001_wp,                     & !parameter 32-37
    588         24.0_wp, 24.0_wp, 24.0_wp,                                             & !parameter 38-40
    589         0.0242_wp, 0.0969_wp, 0.346_wp, 1.0_wp,                                & !parameter 41-44
    590         20000.0_wp, 10.0_wp,                                                   & !parameter 45-46 - end of type 6
    591         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp, 1.0_wp,                        & !parameter 0-5
    592         1000000.0_wp, 1000000.0_wp, 1000000.0_wp, 0.3_wp, 0.3_wp, 0.3_wp,      & !parameter 6-11
    593         296.15_wp, 293.15_wp, 0.9_wp, 0.9_wp, 0.01_wp, 0.99_wp,                & !parameter 12-17
    594         0.001_wp, 0.0001_wp, 0.0_wp,                                           & !parameter 18-20
    595         1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 3.0_wp,                                & !parameter 21-25
    596         1000000.0_wp, 1000000.0_wp, 1000000.0_wp,                              & !parameter 26-28                     
    597         0.3_wp, 0.3_wp, 0.3_wp,                                                & !parameter 29-31       
    598         0.9_wp, 0.4_wp, 0.4_wp, 0.4_wp, 0.01_wp, 0.001_wp,                     & !parameter 32-37
    599         24.0_wp, 24.0_wp, 24.0_wp,                                             & !parameter 38-40
    600         0.0242_wp, 0.0969_wp, 0.346_wp, 1.0_wp,                                & !parameter 41-44
    601         20000.0_wp, 10.0_wp                                                    & !parameter 45-46 - end of type 7 (bridges)
    602                                                                           /),  &
    603                                                                (/47, 7/) )
     624!-- building parameters, 6 different types
     625!-- Parameter for urban surface model
     626!-- 0 - heat capacity wall surface, 1 - heat capacity of window surface, 2 - heat capacity of green surface
     627!-- 3 - thermal conductivity of wall surface, 4 - thermal conductivity of window surface,
     628!-- 5 - thermal conductivty of green surface, 6 - wall fraction ground plate,
     629!-- 7 - 1st wall layer thickness ground plate, 8 - 2nd wall layer thickness ground plate
     630!-- 9 - 3rd wall layer thickness ground plate, 10 - 4th wall layer thickness ground plate,
     631!-- 11 - heat capacity 1st/2nd wall layer ground plate, 12 - heat capacity 3rd wall layer ground plate
     632!-- 13 - heat capacity 4th wall layer ground plate, 14 - thermal conductivity 1st/2nd wall layer ground plate,
     633!-- 15 - thermal conductivity 3rd wall layer ground plate, 16 - thermal conductivity 4th wall layer ground plate
     634!-- 17 - ground floor level height, 18 - z0 roughness ground floor level, 19 - z0h/z0g roughness heaat/humidity,
     635!-- 20 - wall fraction ground floor level, 21 - 1st wall layer thickness ground floor level,
     636!-- 22 - 2nd wall layer thickness ground floor level, 23 - 3rd wall layer thickness ground floor level,
     637!-- 24 - 4th wall layer thickness ground floor level, 25 - heat capacity 1st/2nd wall layer ground floor level,
     638!-- 26 - heat capacity 3rd wall layer ground floor level, 27 - heat capacity 4th wall layer ground floor level,
     639!-- 28 - thermal conductivity 1st/2nd wall layer ground floor level,
     640!-- 29 - thermal conductivity 3rd wall layer ground floor level, 30 - thermal conductivity 4th wall layer ground floor level
     641!-- 31 - wall emissivity ground floor level, 32 - wall albedo ground floor level, 33 - window fraction ground floor level,
     642!-- 34 - 1st window layer thickness ground floor level, 35 - 2nd window layer thickness ground floor level,
     643!-- 36 - 3rd window layer thickness ground floor level, 37 - 4th window layer thickness ground floor level,
     644!-- 38 - heat capacity 1st/2nd window layer ground floor level, 39 - heat capacity 3rd window layer ground floor level,
     645!-- 40 - heat capacity 4th window layer ground floor level,
     646!-- 41 - thermal conductivity 1st/2nd window layer ground floor level,
     647!-- 42 - thermal conductivity 3rd window layer ground floor level,
     648!-- 43 - thermal conductivity 4th window layer ground floor level, 44 - window emissivity ground floor level,
     649!-- 45 - window transmissivity ground floor level, 46 - window albedo ground floor level,
     650!-- 47 - green fraction ground floor level, 48 - LAI on wall ground floor level, 49 - green emissivity ground floor level,
     651!-- 50 - green albedo ground floor level, 51 - z0 roughness above ground floor level,
     652!-- 52 - z0h/z0g roughness heat/humidity above ground floor level, 53 - wall fraction above ground floor level
     653!-- 54 - 1st wall layer thickness above ground floor level, 55 - 2nd wall layer thickness above ground floor level
     654!-- 56 - 3rd wall layer thickness above ground floor level, 57 - 4th wall layer thickness above ground floor level
     655!-- 58 - heat capacity 1st/2nd wall layer above ground floor level,
     656!-- 59 - heat capacity 3rd wall layer above ground floor level,
     657!-- 60 - heat capacity 4th wall layer above ground floor level,
     658!-- 61 - thermal conductivity 1st/2nd wall layer above ground floor level,
     659!-- 62 - thermal conductivity 3rd wall layer above ground floor level,
     660!-- 63 - thermal conductivity 4th wall layer above ground floor level,
     661!-- 64 - wall emissivity above ground floor level, 65 - wall albedo above ground floor level,
     662!-- 66 - window fraction above ground floor level, 67 - 1st window layer thickness above ground floor level,
     663!-- 68 - 2nd thickness window layer above ground floor level, 69 - 3rd window layer thickness above ground floor level,
     664!-- 70 - 4th window layer thickness above ground floor level,
     665!-- 71 - heat capacity 1st/2nd window layer above ground floor level,
     666!-- 72 - heat capacity 3rd window layer above ground floor level,
     667!-- 73 - heat capacity 4th window layer above ground floor level,
     668!-- 74 - conductivity 1st/2nd window layer above ground floor level,
     669!-- 75 - thermal conductivity 3rd window layer above ground floor level,
     670!-- 76 - thermal conductivity 4th window layer above ground floor level, 77 - window emissivity above ground floor level,
     671!-- 78 - window transmissivity above ground floor level, 79 - window albedo above ground floor level,
     672!-- 80 - green fraction above ground floor level, 81 - LAI on wall above ground floor level,
     673!-- 82 - green emissivity above ground floor level, 83 - green albedo above ground floor level,
     674!-- 84 - wall fraction roof, 85 - 1st wall layer thickness roof, 86 - 2nd wall layer thickness roof,
     675!-- 87 - 3rd wall layer thickness roof, 88 - 4th wall layer thickness roof,
     676!-- 89 - heat capacity 1st/2nd wall layer roof, 90 - heat capacity 3rd wall layer roof,
     677!-- 91 - heat capacity 4th wall layer roof, 92 - thermal conductivity 1st/2nd wall layer roof,
     678!-- 93 - thermal conductivity 3rd wall layer roof, 94 - thermal conductivity 4th wall layer roof,
     679!-- 95 - wall emissivity roof, 96 - wall albedo roof, 97 - window fraction roof,
     680!-- 98 - window 1st layer thickness roof, 99 - window 2nd layer thickness roof, 100 - window 3rd layer thickness roof,
     681!-- 101 - window 4th layer thickness, 102 - heat capacity 1st/2nd window layer roof,
     682!-- 103 - heat capacity 3rd window layer roof, 104 - heat capacity 4th window layer roof,
     683!-- 105 - thermal conductivity 1st/2nd window layer roof, 106 - thermal conductivity 3rd window layer roof,
     684!-- 107 - thermal conductivity 4th window layer roof, 108 - window emissivity roof, 109 - window transmissivity roof,
     685!-- 110 - window albedo roof, 111 - green fraction roof ground floor level,
     686!-- 112 - green fraction roof above ground floor level, 113 - LAI roof, 114 - green emissivity roof,
     687!-- 115 - green albedo roof, 116 - green type roof,
     688!-- Parameter for indoor model
     689!-- 117 - indoor target summer temperature, 118 - indoor target winter temperature,
     690!-- 119 - shading factor, 120 - g-value windows, 121 - u-value windows, 122 - basical airflow without occupancy of the room,
     691!-- 123 - additional airflow depend of occupancy of the room, 124 - heat recovery efficiency,
     692!-- 125 - dynamic parameter specific effective surface, 126 - dynamic parameter innner heatstorage,
     693!-- 127 - ratio internal surface/floor area, 128 - maximal heating capacity, 129 - maximal cooling capacity,
     694!-- 130 - additional internal heat gains dependent on occupancy of the room,
     695!-- 131 - basic internal heat gains without occupancy of the room, 132 - storey height, 133 - ceiling construction height
     696
     697
     698    REAL(wp), DIMENSION(0:133,1:7), PARAMETER :: building_pars = RESHAPE( (/   &
     699        10.0_wp, 10.0_wp, 20000.0_wp, 23.0_wp, 23.0_wp, 10.0_wp,               & !parameter 0-5
     700        1.0_wp, 0.005_wp, 0.01_wp, 0.39_wp, 0.63_wp, 2200000.0_wp,             & !parameter 6-11
     701        1400000.0_wp, 1300000.0_wp, 0.35_wp, 0.8_wp, 2.1_wp, 4.0_wp,           & !parameter 12-17
     702        0.01_wp, 0.001_wp, 0.75_wp,                                            & !parameter 18-20
     703        0.005_wp, 0.01_wp, 0.39_wp, 0.63_wp, 2200000.0_wp,                     & !parameter 21-25
     704        1400000.0_wp, 1300000.0_wp, 0.35_wp,                                   & !parameter 26-28                     
     705        0.8_wp, 2.1_wp, 0.93_wp,                                               & !parameter 29-31       
     706        27.0_wp, 0.25_wp, 0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,              & !parameter 32-37
     707        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 38-40
     708        0.57_wp, 0.57_wp, 0.57_wp, 0.91_wp,                                    & !parameter 41-44
     709        0.75_wp, 27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp,                             & !parameter 45-49
     710        5.0_wp, 0.001_wp, 0.0001_wp, 0.7_wp, 0.005_wp,                        & !parameter 50-54
     711        0.01_wp, 0.39_wp, 0.63_wp, 2200000.0_wp,                               & !parameter 55-58
     712        1400000.0_wp, 1300000.0_wp, 0.35_wp, 0.8_wp,                           & !parameter 59-62
     713        2.1_wp, 0.93_wp, 27.0_wp, 0.3_wp,                                      & !parameter 63-66
     714        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,                                & !parameter 67-70
     715        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 71-73
     716        0.57_wp, 0.57_wp, 0.57_wp, 0.91_wp, 0.75_wp,                           & !parameter 74-78
     717        27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp, 5.0_wp, 1.0_wp,                      & !parameter 79-84
     718        0.005_wp, 0.01_wp, 0.31_wp, 0.63_wp, 2200000.0_wp, 1400000.0_wp,       & !parameter 85-90
     719        1300000.0_wp, 0.35_wp, 0.8_wp, 2.1_wp, 0.93_wp, 27.0_wp, 0.0_wp,       & !parameter 91-97
     720        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp, 1736000.0_wp,                  & !parameter 98-102
     721        1736000.0_wp, 1736000.0_wp, 0.57_wp, 0.57_wp, 0.57_wp,                 & !parameter 103-107
     722        0.91_wp, 0.75_wp, 27.0_wp, 0.0_wp, 0.0_wp, 1.5_wp,                     & !parameter 108-113
     723        0.86_wp, 5.0_wp, 0.0_wp,                                              & !parameter 114-116
     724        299.15_wp, 293.15_wp, 0.8_wp, 0.76_wp, 5.0_wp,                         & !parameter 117-121
     725        0.1_wp, 0.5_wp, 0.0_wp, 3.5_wp, 370000.0_wp, 4.5_wp,                   & !parameter 122-127
     726        100000.0_wp, 0.0_wp, 3.0_wp, 10.0_wp, 3.0_wp, 0.2_wp,                  & !parameter 128-133- end of type 1
     727        10.0_wp, 10.0_wp, 20000.0_wp, 23.0_wp, 23.0_wp, 10.0_wp,               & !parameter 0-5
     728        1.0_wp, 0.005_wp, 0.01_wp, 0.31_wp, 0.42_wp, 2000000.0_wp,             & !parameter 6-11
     729        103000.0_wp, 900000.0_wp, 0.35_wp, 0.38_wp, 0.04_wp, 4.0_wp,           & !parameter 12-17
     730        0.01_wp, 0.001_wp, 0.78_wp,                                            & !parameter 18-20
     731        0.005_wp, 0.01_wp, 0.31_wp, 0.43_wp, 2000000.0_wp,                     & !parameter 21-25
     732        103000.0_wp, 900000.0_wp, 0.35_wp,                                     & !parameter 26-28                     
     733        0.38_wp, 0.04_wp, 0.92_wp,                                             & !parameter 29-31       
     734        27.0_wp, 0.22_wp, 0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,              & !parameter 32-37
     735        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 38-40
     736        0.11_wp, 0.11_wp, 0.11_wp, 0.11_wp,                                    & !parameter 41-44
     737        0.7_wp, 27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp,                              & !parameter 45-49
     738        5.0_wp, 0.001_wp, 0.0001_wp, 0.73_wp, 0.005_wp,                       & !parameter 50-54
     739        0.01_wp, 0.31_wp, 0.43_wp, 2000000.0_wp,                               & !parameter 55-58
     740        103000.0_wp, 900000.0_wp, 0.35_wp, 0.38_wp,                            & !parameter 59-62
     741        0.04_wp, 0.92_wp, 27.0_wp, 0.27_wp,                                    & !parameter 63-66
     742        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,                                & !parameter 67-70
     743        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 71-73
     744        0.11_wp, 0.11_wp, 0.11_wp, 0.87_wp, 0.7_wp,                            & !parameter 74-78
     745        27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp, 5.0_wp, 1.0_wp,                      & !parameter 79-84
     746        0.005_wp, 0.01_wp, 0.5_wp, 0.79_wp, 2000000.0_wp, 103000.0_wp,         & !parameter 85-90
     747        900000.0_wp, 0.35_wp, 0.38_wp, 0.04_wp, 0.93_wp, 27.0_wp, 0.0_wp,      & !parameter 91-97
     748        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp, 1736000.0_wp,                  & !parameter 98-102
     749        1736000.0_wp, 1736000.0_wp, 0.11_wp, 0.11_wp, 0.11_wp,                 & !parameter 103-107
     750        0.87_wp, 0.7_wp, 27.0_wp, 0.0_wp, 0.0_wp, 1.5_wp,                      & !parameter 108-113
     751        0.86_wp, 5.0_wp, 0.0_wp,                                              & !parameter 114-116
     752        299.15_wp, 293.15_wp, 0.8_wp, 0.6_wp, 3.0_wp,                          & !parameter 117-121
     753        0.1_wp, 0.5_wp, 0.0_wp, 2.5_wp, 165000.0_wp, 4.5_wp,                   & !parameter 122-127
     754        100000.0_wp, 0.0_wp, 4.0_wp, 8.0_wp, 3.0_wp, 0.2_wp,                   & !parameter 128-133- end of type 2
     755        10.0_wp, 10.0_wp, 20000.0_wp, 23.0_wp, 23.0_wp, 10.0_wp,               & !parameter 0-5
     756        1.0_wp, 0.005_wp, 0.01_wp, 0.41_wp, 0.7_wp, 2000000.0_wp,              & !parameter 6-11
     757        103000.0_wp, 900000.0_wp, 0.35_wp, 0.14_wp, 0.035_wp, 4.0_wp,          & !parameter 12-17
     758        0.01_wp, 0.001_wp, 0.75_wp,                                            & !parameter 18-20
     759        0.005_wp, 0.01_wp, 0.41_wp, 0.7_wp, 2000000.0_wp,                      & !parameter 21-25
     760        103000.0_wp, 900000.0_wp, 0.35_wp,                                     & !parameter 26-28                     
     761        0.14_wp, 0.035_wp, 0.92_wp,                                            & !parameter 29-31       
     762        27.0_wp, 0.25_wp, 0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,              & !parameter 32-37
     763        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 38-40
     764        0.037_wp, 0.037_wp, 0.037_wp, 0.8_wp,                                     & !parameter 41-44
     765        0.6_wp, 27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp,                              & !parameter 45-49
     766        5.0_wp, 0.001_wp, 0.0001_wp, 0.7_wp, 0.005_wp,                        & !parameter 50-54
     767        0.01_wp, 0.41_wp, 0.7_wp, 2000000.0_wp,                                & !parameter 55-58
     768        103000.0_wp, 900000.0_wp, 0.35_wp, 0.14_wp,                            & !parameter 59-62
     769        0.035_wp, 0.92_wp, 27.0_wp, 0.3_wp,                                    & !parameter 63-66
     770        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,                                & !parameter 67-70
     771        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 71-73
     772        0.037_wp, 0.037_wp, 0.037_wp, 0.8_wp, 0.6_wp,                             & !parameter 74-78
     773        27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp, 5.0_wp, 1.0_wp,                      & !parameter 79-84
     774        0.005_wp, 0.01_wp, 0.41_wp, 0.7_wp, 2000000.0_wp, 103000.0_wp,         & !parameter 85-90
     775        900000.0_wp, 0.35_wp, 0.14_wp, 0.035_wp, 0.93_wp, 27.0_wp, 0.0_wp,     & !parameter 91-97
     776        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp, 1736000.0_wp,                  & !parameter 98-102
     777        1736000.0_wp, 1736000.0_wp, 0.037_wp, 0.037_wp, 0.037_wp,                 & !parameter 103-107
     778        0.8_wp, 0.6_wp, 27.0_wp, 0.0_wp, 0.0_wp, 1.5_wp,                       & !parameter 108-113
     779        0.86_wp, 5.0_wp, 0.0_wp,                                              & !parameter 114-116
     780        299.15_wp, 293.15_wp, 0.8_wp, 0.5_wp, 0.6_wp,                          & !parameter 117-121
     781        0.1_wp, 0.5_wp, 0.8_wp, 2.5_wp, 80000.0_wp, 4.5_wp,                    & !parameter 122-127
     782        100000.0_wp, 0.0_wp, 3.0_wp, 8.0_wp, 3.0_wp, 0.2_wp,                   & !parameter 128-133- end of type 3
     783        10.0_wp, 10.0_wp, 20000.0_wp, 23.0_wp, 23.0_wp, 10.0_wp,               & !parameter 0-5
     784        1.0_wp, 0.005_wp, 0.01_wp, 0.39_wp, 0.63_wp, 2200000.0_wp,             & !parameter 6-11
     785        1400000.0_wp, 1300000.0_wp, 0.35_wp, 0.8_wp, 2.1_wp, 4.0_wp,           & !parameter 12-17
     786        0.01_wp, 0.001_wp, 0.55_wp,                                            & !parameter 18-20
     787        0.005_wp, 0.01_wp, 0.39_wp, 0.63_wp, 2200000.0_wp,                     & !parameter 21-25
     788        1400000.0_wp, 1300000.0_wp, 0.35_wp,                                   & !parameter 26-28                     
     789        0.8_wp, 2.1_wp, 0.93_wp,                                               & !parameter 29-31       
     790        27.0_wp, 0.45_wp, 0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,              & !parameter 32-37
     791        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 38-40
     792        0.57_wp, 0.57_wp, 0.57_wp, 0.91_wp,                                    & !parameter 41-44
     793        0.75_wp, 27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp,                             & !parameter 45-49
     794        5.0_wp, 0.001_wp, 0.0001_wp, 0.5_wp, 0.005_wp,                        & !parameter 50-54
     795        0.01_wp, 0.39_wp, 0.63_wp, 2200000.0_wp,                               & !parameter 55-58
     796        1400000.0_wp, 1300000.0_wp, 0.35_wp, 0.8_wp,                           & !parameter 59-62
     797        2.1_wp, 0.93_wp, 27.0_wp, 0.5_wp,                                      & !parameter 63-66
     798        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,                                & !parameter 67-70
     799        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 71-73
     800        0.57_wp, 0.57_wp, 0.57_wp, 0.91_wp, 0.75_wp,                           & !parameter 74-78
     801        27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp, 5.0_wp, 1.0_wp,                      & !parameter 79-84
     802        0.005_wp, 0.01_wp, 0.39_wp, 0.63_wp, 2200000.0_wp, 1400000.0_wp,       & !parameter 85-90
     803        1300000.0_wp, 0.35_wp, 0.8_wp, 2.1_wp, 0.93_wp, 27.0_wp, 0.0_wp,       & !parameter 91-97
     804        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp, 1736000.0_wp,                  & !parameter 98-102
     805        1736000.0_wp, 1736000.0_wp, 0.57_wp, 0.57_wp, 0.57_wp,                 & !parameter 103-107
     806        0.91_wp, 0.75_wp, 27.0_wp, 0.0_wp, 0.0_wp, 1.5_wp,                     & !parameter 108-113
     807        0.86_wp, 5.0_wp, 0.0_wp,                                              & !parameter 114-116
     808        299.15_wp, 293.15_wp, 0.8_wp, 0.76_wp, 5.0_wp,                         & !parameter 117-121
     809        0.1_wp, 1.5_wp, 0.0_wp, 3.5_wp, 370000.0_wp, 4.5_wp,                   & !parameter 122-127
     810        100000.0_wp, 0.0_wp, 3.0_wp, 10.0_wp, 3.0_wp, 0.2_wp,                  & !parameter 128-133- end of type 4
     811        10.0_wp, 10.0_wp, 20000.0_wp, 23.0_wp, 23.0_wp, 10.0_wp,               & !parameter 0-5
     812        1.0_wp, 0.005_wp, 0.01_wp, 0.31_wp, 0.43_wp, 2000000.0_wp,             & !parameter 6-11
     813        103000.0_wp, 900000.0_wp, 0.35_wp, 0.38_wp, 0.04_wp, 4.0_wp,           & !parameter 12-17
     814        0.01_wp, 0.001_wp, 0.55_wp,                                            & !parameter 18-20
     815        0.005_wp, 0.01_wp, 0.31_wp, 0.43_wp, 2000000.0_wp,                     & !parameter 21-25
     816        103000.0_wp, 900000.0_wp, 0.35_wp,                                     & !parameter 26-28                     
     817        0.38_wp, 0.04_wp, 0.92_wp,                                             & !parameter 29-31       
     818        27.0_wp, 0.45_wp, 0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,              & !parameter 32-37
     819        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 38-40
     820        0.11_wp, 0.11_wp, 0.11_wp, 0.87_wp,                                    & !parameter 41-44
     821        0.7_wp, 27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp,                              & !parameter 45-49
     822        5.0_wp, 0.001_wp, 0.0001_wp, 0.5_wp, 0.005_wp,                        & !parameter 50-54
     823        0.01_wp, 0.31_wp, 0.43_wp, 2000000.0_wp,                               & !parameter 55-58
     824        103000.0_wp, 900000.0_wp, 0.35_wp, 0.38_wp,                            & !parameter 59-62
     825        0.04_wp, 0.92_wp, 27.0_wp, 0.5_wp,                                     & !parameter 63-66
     826        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,                                & !parameter 67-70
     827        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 71-73
     828        0.11_wp, 0.11_wp, 0.11_wp, 0.87_wp, 0.7_wp,                            & !parameter 74-78
     829        27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp, 5.0_wp, 1.0_wp,                      & !parameter 79-84
     830        0.005_wp, 0.01_wp, 0.31_wp, 0.43_wp, 2000000.0_wp, 103000.0_wp,        & !parameter 85-90
     831        900000.0_wp, 0.35_wp, 0.38_wp, 0.04_wp, 0.91_wp, 27.0_wp, 0.0_wp,      & !parameter 91-97
     832        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp, 1736000.0_wp,                  & !parameter 98-102
     833        1736000.0_wp, 1736000.0_wp, 0.11_wp, 0.11_wp, 0.11_wp,                 & !parameter 103-107
     834        0.87_wp, 0.7_wp, 27.0_wp, 0.0_wp, 0.0_wp, 1.5_wp,                      & !parameter 108-113
     835        0.86_wp, 5.0_wp, 0.0_wp,                                              & !parameter 114-116
     836        299.15_wp, 293.15_wp, 0.8_wp, 0.6_wp, 3.0_wp,                          & !parameter 117-121
     837        0.1_wp, 1.5_wp, 0.65_wp, 2.5_wp, 165000.0_wp, 4.5_wp,                  & !parameter 122-127
     838        100000.0_wp, 0.0_wp, 7.0_wp, 20.0_wp, 3.0_wp, 0.2_wp,                  & !parameter 128-133- end of type 5
     839        10.0_wp, 10.0_wp, 20000.0_wp, 23.0_wp, 23.0_wp, 10.0_wp,               & !parameter 0-5
     840        1.0_wp, 0.005_wp, 0.01_wp, 0.41_wp, 0.7_wp, 2000000.0_wp,              & !parameter 6-11
     841        103000.0_wp, 900000.0_wp, 0.35_wp, 0.14_wp, 0.035_wp, 4.0_wp,          & !parameter 12-17
     842        0.01_wp, 0.001_wp, 0.475_wp,                                           & !parameter 18-20
     843        0.005_wp, 0.01_wp, 0.41_wp, 0.7_wp, 2000000.0_wp,                      & !parameter 21-25
     844        103000.0_wp, 900000.0_wp, 0.35_wp,                                     & !parameter 26-28                     
     845        0.14_wp, 0.035_wp, 0.92_wp,                                            & !parameter 29-31       
     846        27.0_wp, 0.525_wp, 0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,             & !parameter 32-37
     847        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 38-40
     848        0.037_wp, 0.037_wp, 0.037_wp, 0.8_wp,                                     & !parameter 41-44
     849        0.6_wp, 27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp,                              & !parameter 45-49
     850        5.0_wp, 0.001_wp, 0.0001_wp, 0.425_wp, 0.005_wp,                      & !parameter 50-54
     851        0.01_wp, 0.41_wp, 0.7_wp, 2000000.0_wp,                                & !parameter 55-58
     852        103000.0_wp, 900000.0_wp, 0.35_wp, 0.14_wp,                            & !parameter 59-62
     853        0.035_wp, 0.92_wp, 27.0_wp, 0.575_wp,                                  & !parameter 63-66
     854        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,                                & !parameter 67-70
     855        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 71-73
     856        0.037_wp, 0.037_wp, 0.037_wp, 0.8_wp, 0.6_wp,                             & !parameter 74-78
     857        27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp, 5.0_wp, 1.0_wp,                      & !parameter 79-84
     858        0.005_wp, 0.01_wp, 0.41_wp, 0.7_wp, 2000000.0_wp, 103000.0_wp,         & !parameter 85-90
     859        900000.0_wp, 0.35_wp, 0.14_wp, 0.035_wp, 0.91_wp, 27.0_wp, 0.0_wp,     & !parameter 91-97
     860        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp, 1736000.0_wp,                  & !parameter 98-102
     861        1736000.0_wp, 1736000.0_wp, 0.037_wp, 0.037_wp, 0.037_wp,                 & !parameter 103-107
     862        0.8_wp, 0.6_wp, 27.0_wp, 0.0_wp, 0.0_wp, 1.5_wp,                       & !parameter 108-113
     863        0.86_wp, 5.0_wp, 0.0_wp,                                              & !parameter 114-116
     864        299.15_wp, 293.15_wp, 0.8_wp, 0.5_wp, 0.6_wp,                          & !parameter 117-121
     865        0.1_wp, 1.5_wp, 0.9_wp, 2.5_wp, 80000.0_wp, 4.5_wp,                    & !parameter 122-127
     866        100000.0_wp, 0.0_wp, 5.0_wp, 15.0_wp, 3.0_wp, 0.2_wp,                  & !parameter 128-133- end of type 6   
     867        10.0_wp, 10.0_wp, 20000.0_wp, 23.0_wp, 23.0_wp, 10.0_wp,               & !parameter 0-5
     868        1.0_wp, 0.29_wp, 0.295_wp, 0.695_wp, 0.985_wp, 1950400.0_wp,           & !parameter 6-11
     869        1848000.0_wp, 1848000.0_wp, 0.7_wp, 1.0_wp, 1.0_wp, 4.0_wp,            & !parameter 12-17
     870        0.01_wp, 0.001_wp, 1.0_wp,                                             & !parameter 18-20
     871        0.29_wp, 0.295_wp, 0.695_wp, 0.985_wp, 1950400.0_wp,                   & !parameter 21-25
     872        1848000.0_wp, 1848000.0_wp, 0.7_wp,                                    & !parameter 26-28                     
     873        1.0_wp, 1.0_wp, 0.9_wp,                                                & !parameter 29-31       
     874        27.0_wp, 0.0_wp, 0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,               & !parameter 32-37
     875        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 38-40
     876        0.57_wp, 0.57_wp, 0.57_wp, 0.8_wp,                                     & !parameter 41-44
     877        0.6_wp, 27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp,                              & !parameter 45-49
     878        5.0_wp, 0.001_wp, 0.0001_wp, 1.0_wp, 0.29_wp,                         & !parameter 50-54
     879        0.295_wp, 0.695_wp, 0.985_wp, 1950400.0_wp,                            & !parameter 55-58
     880        1848000.0_wp, 1848000.0_wp, 0.7_wp, 1.0_wp,                            & !parameter 59-62
     881        1.0_wp, 0.9_wp, 27.0_wp, 0.0_wp,                                       & !parameter 63-66
     882        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp,                                & !parameter 67-70
     883        1736000.0_wp, 1736000.0_wp, 1736000.0_wp,                              & !parameter 71-73
     884        0.57_wp, 0.57_wp, 0.57_wp, 0.8_wp, 0.6_wp,                             & !parameter 74-78
     885        27.0_wp, 0.0_wp, 1.5_wp, 0.86_wp, 5.0_wp, 1.0_wp,                      & !parameter 79-84
     886        0.29_wp, 0.295_wp, 0.695_wp, 0.985_wp, 1950400.0_wp, 1848000.0_wp,     & !parameter 85-90
     887        1848000.0_wp, 0.7_wp, 1.0_wp, 1.0_wp, 0.9_wp, 27.0_wp, 0.0_wp,         & !parameter 91-97
     888        0.003_wp, 0.006_wp, 0.012_wp, 0.018_wp, 1736000.0_wp,                  & !parameter 98-102
     889        1736000.0_wp, 1736000.0_wp, 0.57_wp, 0.57_wp, 0.57_wp,                 & !parameter 103-107
     890        0.8_wp, 0.6_wp, 27.0_wp, 0.0_wp, 0.0_wp, 1.5_wp,                       & !parameter 108-113
     891        0.86_wp, 5.0_wp, 0.0_wp,                                              & !parameter 114-116
     892        299.15_wp, 293.15_wp, 0.8_wp, 100.0_wp, 100.0_wp,                      & !parameter 117-121
     893        20.0_wp, 20.0_wp, 0.0_wp, 1.0_wp, 1.0_wp, 4.5_wp,                      & !parameter 122-127
     894        100000.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 3.0_wp, 0.2_wp                    & !parameter 128-133- end of type 7 (bridge)
     895                                                                       /),     &
     896                                                               (/134, 7/) )
    604897
    605898!
     
    613906       REAL(wp), DIMENSION(:,:), ALLOCATABLE       :: t
    614907    END TYPE t_wall_vertical
     908
     909    TYPE surf_type_usm
     910       REAL(wp), DIMENSION(:),   ALLOCATABLE ::  var_usm_1d !< 1D prognostic variable
     911       REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  var_usm_2d !< 2D prognostic variable
     912    END TYPE surf_type_usm
     913   
     914#if defined( __nopointer )
     915    TYPE(surf_type_usm), TARGET   ::  m_liq_usm_h,        & !< liquid water reservoir (m), horizontal surface elements
     916                                      m_liq_usm_h_p         !< progn. liquid water reservoir (m), horizontal surface elements
     917
     918    TYPE(surf_type_usm), DIMENSION(0:3), TARGET   ::  &
     919                                      m_liq_usm_v,        & !< liquid water reservoir (m), vertical surface elements
     920                                      m_liq_usm_v_p         !< progn. liquid water reservoir (m), vertical surface elements
     921#else
     922    TYPE(surf_type_usm), POINTER  ::  m_liq_usm_h,        & !< liquid water reservoir (m), horizontal surface elements
     923                                      m_liq_usm_h_p         !< progn. liquid water reservoir (m), horizontal surface elements
     924
     925    TYPE(surf_type_usm), TARGET   ::  m_liq_usm_h_1,      & !<
     926                                      m_liq_usm_h_2         !<
     927
     928    TYPE(surf_type_usm), DIMENSION(:), POINTER  ::    &
     929                                      m_liq_usm_v,        & !< liquid water reservoir (m), vertical surface elements
     930                                      m_liq_usm_v_p         !< progn. liquid water reservoir (m), vertical surface elements
     931
     932    TYPE(surf_type_usm), DIMENSION(0:3), TARGET   ::  &
     933                                      m_liq_usm_v_1,      & !<
     934                                      m_liq_usm_v_2         !<
     935#endif
     936
     937    TYPE(surf_type_usm), TARGET ::  tm_liq_usm_h_m      !< liquid water reservoir tendency (m), horizontal surface elements
     938    TYPE(surf_type_usm), DIMENSION(0:3), TARGET ::  tm_liq_usm_v_m      !< liquid water reservoir tendency (m), vertical surface elements
    615939
    616940
     
    633957    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinswdif_av    !< Average of pcbinswdif
    634958    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  pcbinswref_av    !< Average of pcbinswref
     959    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  surfhf_av        !< average of total radiation flux incoming to minus outgoing from local surface 
     960    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  wghf_eb_av       !< average of wghf_eb
     961    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  wshf_eb_av       !< average of wshf_eb
     962    REAL(wp), DIMENSION(:,:), ALLOCATABLE          ::  t_wall_av        !< Average of t_wall
     963    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  wghf_eb_green_av !< average of wghf_eb_green
     964    REAL(wp), DIMENSION(:,:), ALLOCATABLE          ::  t_green_av       !< Average of t_green
     965    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  wghf_eb_window_av !< average of wghf_eb_window
     966    REAL(wp), DIMENSION(:,:), ALLOCATABLE          ::  t_window_av      !< Average of t_window
     967    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  qsws_eb_av       !< average of qsws_eb
     968    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  qsws_veg_eb_av   !< average of qsws_veg_eb
     969    REAL(wp), DIMENSION(:), ALLOCATABLE            ::  qsws_liq_eb_av   !< average of qsws_liq_eb
     970    REAL(wp), DIMENSION(:,:), ALLOCATABLE          ::  swc_av        !< Average of swc
    635971   
    636972
     
    6681004    REAL(wp)                                       :: window_inner_temperature = 295.0_wp  !< temperature of the inner window surface (~22 degrees C) (K)
    6691005
     1006        REAL(wp)                                       ::   m_total = 0.0_wp !< weighted total water content of the soil (m3/m3)
     1007    INTEGER(iwp)                                   ::   soil_type
     1008   
    6701009!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    6711010!-- surface and material model variables for walls, ground, roofs
     
    6761015
    6771016#if defined( __nopointer )
    678     REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_h           !< wall surface temperature (K) at horizontal walls
    679     REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_h_p         !< progn. wall surface temperature (K) at horizontal walls
     1017    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_wall_h           !< wall surface temperature (K) at horizontal walls
     1018    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_wall_h_p         !< progn. wall surface temperature (K) at horizontal walls
    6801019    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_window_h    !< window surface temperature (K) at horizontal walls
    6811020    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_window_h_p  !< progn. window surface temperature (K) at horizontal walls
     
    6841023    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_10cm_h      !< near surface temperature (10cm) (K) at horizontal walls
    6851024    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_10cm_h_p    !< progn. near surface temperature (10cm) (K) at horizontal walls
    686     TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_v
    687     TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_v_p
     1025    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_wall_v
     1026    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_wall_v_p
    6881027    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_window_v
    6891028    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_window_v_p
     
    6931032    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  ::  t_surf_10cm_v_p
    6941033#else
    695     REAL(wp), DIMENSION(:), POINTER                :: t_surf_h
    696     REAL(wp), DIMENSION(:), POINTER                :: t_surf_h_p
     1034    REAL(wp), DIMENSION(:), POINTER                :: t_surf_wall_h
     1035    REAL(wp), DIMENSION(:), POINTER                :: t_surf_wall_h_p
    6971036    REAL(wp), DIMENSION(:), POINTER                :: t_surf_window_h
    6981037    REAL(wp), DIMENSION(:), POINTER                :: t_surf_window_h_p
     
    7021041    REAL(wp), DIMENSION(:), POINTER                :: t_surf_10cm_h_p
    7031042
    704     REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_h_1
    705     REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_h_2
     1043    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_wall_h_1
     1044    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_wall_h_2
    7061045    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_window_h_1
    7071046    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_window_h_2
     
    7111050    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_10cm_h_2
    7121051
    713     TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_v
    714     TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_v_p
     1052    TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_wall_v
     1053    TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_wall_v_p
    7151054    TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_window_v
    7161055    TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_window_v_p
     
    7201059    TYPE(t_surf_vertical), DIMENSION(:), POINTER ::  t_surf_10cm_v_p
    7211060
    722     TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_v_1
    723     TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_v_2
     1061    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_wall_v_1
     1062    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_wall_v_2
    7241063    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_window_v_1
    7251064    TYPE(t_surf_vertical), DIMENSION(0:3), TARGET  :: t_surf_window_v_2
     
    7301069   
    7311070#endif
     1071    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_wall_av          !< average of wall surface temperature (K)
     1072    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_window_av   !< average of window surface temperature (K)
     1073    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_green_av    !< average of green wall surface temperature (K)
     1074    REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET    :: t_surf_10cm_av    !< average of whole wall surface temperature (K)
     1075
     1076!-- Temporal tendencies for time stepping           
     1077    REAL(wp), DIMENSION(:), ALLOCATABLE            :: tt_surface_wall_m       !< surface temperature tendency of wall (K)
     1078    REAL(wp), DIMENSION(:), ALLOCATABLE            :: tt_surface_window_m !< surface temperature tendency of window (K)
     1079    REAL(wp), DIMENSION(:), ALLOCATABLE            :: tt_surface_green_m !< surface temperature tendency of green wall (K)
    7321080
    7331081!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    7381086#if defined( __nopointer )
    7391087    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_wall_h             !< Wall temperature (K)
     1088    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_wall_h_av          !< Average of t_wall
    7401089    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_wall_h_p           !< Prog. wall temperature (K)
    7411090    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_window_h           !< Window temperature (K)
     1091    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_window_h_av        !< Average of t_window
    7421092    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_window_h_p         !< Prog. window temperature (K)
    7431093    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_green_h            !< Green temperature (K)
     1094    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_green_h_av         !< Average of t_green
    7441095    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_green_h_p          !< Prog. green temperature (K)
     1096    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: swc_h              !< soil water content green building layer
     1097    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: swc_h_av              !< avg of soil water content green building layer
     1098    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: swc_h_p              !< Prog. soil water content green building layer
     1099    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: swc_sat_h          !< soil water content green building layer at saturation
     1100    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: swc_res_h          !< soil water content green building layer residual
     1101    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: rootfr_h           !< root fraction green green building layer
     1102    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: wilt_h             !< wilting point green building layer
     1103    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: fc_h               !< field capacity green building layer
     1104
    7451105
    7461106    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_wall_v             !< Wall temperature (K)
     1107    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_wall_v_av          !< Average of t_wall
    7471108    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_wall_v_p           !< Prog. wall temperature (K)
    7481109    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_window_v           !< Window temperature (K)
     1110    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_window_v_av        !< Average of t_window
    7491111    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_window_v_p         !< Prog. window temperature (K)
    7501112    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_green_v            !< Green temperature (K)
     1113    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_green_v_av         !< Average of t_green
    7511114    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_green_v_p          !< Prog. green temperature (K)
     1115    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: swc_v             !< Wall swc
     1116    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: swc_v_av          !< Average of swc
     1117    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: swc_v_p           !< Prog. swc
     1118   
    7521119#else
    7531120    REAL(wp), DIMENSION(:,:), POINTER                :: t_wall_h, t_wall_h_p
    754     REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_wall_h_1, t_wall_h_2
     1121    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_wall_h_av, t_wall_h_1, t_wall_h_2
    7551122    REAL(wp), DIMENSION(:,:), POINTER                :: t_window_h, t_window_h_p
    756     REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_window_h_1, t_window_h_2
     1123    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_window_h_av, t_window_h_1, t_window_h_2
    7571124    REAL(wp), DIMENSION(:,:), POINTER                :: t_green_h, t_green_h_p
    758     REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_green_h_1, t_green_h_2
     1125    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: t_green_h_av, t_green_h_1, t_green_h_2
     1126    REAL(wp), DIMENSION(:,:), POINTER                :: swc_h, rootfr_h, wilt_h, fc_h, swc_sat_h, swc_h_p, swc_res_h
     1127    REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET    :: swc_h_1, rootfr_h_1, &
     1128                                                        wilt_h_1, fc_h_1, swc_sat_h_1, swc_h_2, swc_res_h_1
     1129   
    7591130
    7601131    TYPE(t_wall_vertical), DIMENSION(:), POINTER   :: t_wall_v, t_wall_v_p
    761     TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_wall_v_1, t_wall_v_2
     1132    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_wall_v_av, t_wall_v_1, t_wall_v_2
    7621133    TYPE(t_wall_vertical), DIMENSION(:), POINTER   :: t_window_v, t_window_v_p
    763     TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_window_v_1, t_window_v_2
     1134    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_window_v_av, t_window_v_1, t_window_v_2
    7641135    TYPE(t_wall_vertical), DIMENSION(:), POINTER   :: t_green_v, t_green_v_p
    765     TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_green_v_1, t_green_v_2
     1136    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: t_green_v_av, t_green_v_1, t_green_v_2
     1137    TYPE(t_wall_vertical), DIMENSION(:), POINTER   :: swc_v, swc_v_p
     1138    TYPE(t_wall_vertical), DIMENSION(0:3), TARGET  :: swc_v_av, swc_v_1, swc_v_2
    7661139#endif
    7671140
    768 !
     1141!-- Wall temporal tendencies for time stepping
     1142    REAL(wp), DIMENSION(:,:), ALLOCATABLE          :: tt_wall_m          !< t_wall prognostic array
     1143    REAL(wp), DIMENSION(:,:), ALLOCATABLE          :: tt_window_m        !< t_window prognostic array
     1144    REAL(wp), DIMENSION(:,:), ALLOCATABLE          :: tt_green_m         !< t_green prognostic array
     1145
    7691146!-- Surface and material parameters classes (surface_type)
    7701147!-- albedo, emissivity, lambda_surf, roughness, thickness, volumetric heat capacity, thermal conductivity
     
    8641241
    8651242!-- Public parameters, constants and initial values
    866     PUBLIC usm_anthropogenic_heat, usm_material_model,                          &
    867            usm_green_heat_model, usm_temperature_near_surface
     1243    PUBLIC usm_anthropogenic_heat, usm_material_model, usm_wall_mod,           &
     1244           usm_green_heat_model, usm_temperature_near_surface, building_pars
    8681245
    8691246
     
    9491326       
    9501327!--     wall and roof surface parameters. First for horizontal surfaces
    951         ALLOCATE ( surf_usm_h%isroof_surf(1:surf_usm_h%ns)     )
    952         ALLOCATE ( surf_usm_h%lambda_surf(1:surf_usm_h%ns)     )
     1328        ALLOCATE ( surf_usm_h%isroof_surf(1:surf_usm_h%ns)        )
     1329        ALLOCATE ( surf_usm_h%lambda_surf(1:surf_usm_h%ns)        )
    9531330        ALLOCATE ( surf_usm_h%lambda_surf_window(1:surf_usm_h%ns) )
    9541331        ALLOCATE ( surf_usm_h%lambda_surf_green(1:surf_usm_h%ns)  )
    955         ALLOCATE ( surf_usm_h%c_surface(1:surf_usm_h%ns)       )
     1332        ALLOCATE ( surf_usm_h%c_surface(1:surf_usm_h%ns)          )
    9561333        ALLOCATE ( surf_usm_h%c_surface_window(1:surf_usm_h%ns)   )
    9571334        ALLOCATE ( surf_usm_h%c_surface_green(1:surf_usm_h%ns)    )
    958         ALLOCATE ( surf_usm_h%transmissivity(1:surf_usm_h%ns)  )
    959         ALLOCATE ( surf_usm_h%lai(1:surf_usm_h%ns)             )
    960         ALLOCATE ( surf_usm_h%emissivity(0:2,1:surf_usm_h%ns)  )
    961         ALLOCATE ( surf_usm_h%r_a(1:surf_usm_h%ns)             )
    962         ALLOCATE ( surf_usm_h%r_a_green(1:surf_usm_h%ns)       )
    963         ALLOCATE ( surf_usm_h%r_a_window(1:surf_usm_h%ns)      )
    964 
     1335        ALLOCATE ( surf_usm_h%transmissivity(1:surf_usm_h%ns)     )
     1336        ALLOCATE ( surf_usm_h%lai(1:surf_usm_h%ns)                )
     1337        ALLOCATE ( surf_usm_h%emissivity(0:2,1:surf_usm_h%ns)     )
     1338        ALLOCATE ( surf_usm_h%r_a(1:surf_usm_h%ns)                )
     1339        ALLOCATE ( surf_usm_h%r_a_green(1:surf_usm_h%ns)          )
     1340        ALLOCATE ( surf_usm_h%r_a_window(1:surf_usm_h%ns)         )
     1341        ALLOCATE ( surf_usm_h%green_type_roof(1:surf_usm_h%ns)    )
     1342        ALLOCATE ( surf_usm_h%r_s(1:surf_usm_h%ns)                )
    9651343!
    9661344!--     For vertical surfaces.
     
    9781356           ALLOCATE ( surf_usm_v(l)%r_a_green(1:surf_usm_v(l)%ns)       )
    9791357           ALLOCATE ( surf_usm_v(l)%r_a_window(1:surf_usm_v(l)%ns)      )
     1358           
     1359          ALLOCATE ( surf_usm_v(l)%r_s(1:surf_usm_v(l)%ns)                 )
    9801360        ENDDO
    9811361
     
    9911371        ALLOCATE ( surf_usm_h%lambda_h_green(nzb_wall:nzt_wall,1:surf_usm_h%ns)  )
    9921372        ALLOCATE ( surf_usm_h%rho_c_green(nzb_wall:nzt_wall,1:surf_usm_h%ns)     )
     1373
     1374        ALLOCATE ( surf_usm_h%rho_c_total_green(nzb_wall:nzt_wall,1:surf_usm_h%ns)     )
     1375        ALLOCATE ( surf_usm_h%n_vg_green(1:surf_usm_h%ns)     )
     1376        ALLOCATE ( surf_usm_h%alpha_vg_green(1:surf_usm_h%ns)     )
     1377        ALLOCATE ( surf_usm_h%l_vg_green(1:surf_usm_h%ns)     )
     1378        ALLOCATE ( surf_usm_h%gamma_w_green_sat(nzb_wall:nzt_wall,1:surf_usm_h%ns)     )
     1379        ALLOCATE ( surf_usm_h%lambda_w_green(nzb_wall:nzt_wall,1:surf_usm_h%ns)     )
     1380        ALLOCATE ( surf_usm_h%gamma_w_green(nzb_wall:nzt_wall,1:surf_usm_h%ns)     )
     1381        ALLOCATE ( surf_usm_h%tswc_h_m(nzb_wall:nzt_wall,1:surf_usm_h%ns)     )
    9931382
    9941383!
     
    10061395        ENDDO
    10071396
     1397!
     1398!--     allocate green wall and roof vegetation and soil parameters. First horizontal surfaces
     1399        ALLOCATE ( surf_usm_h%g_d(1:surf_usm_h%ns)              )
     1400        ALLOCATE ( surf_usm_h%c_liq(1:surf_usm_h%ns)            )
     1401        ALLOCATE ( surf_usm_h%qsws_liq_eb(1:surf_usm_h%ns)         )
     1402        ALLOCATE ( surf_usm_h%qsws_veg_eb(1:surf_usm_h%ns)         )
     1403        ALLOCATE ( surf_usm_h%r_canopy(1:surf_usm_h%ns)         )
     1404        ALLOCATE ( surf_usm_h%r_canopy_min(1:surf_usm_h%ns)     )
     1405        ALLOCATE ( surf_usm_h%qsws_eb(1:surf_usm_h%ns)         )
     1406
     1407!
     1408!--     For vertical surfaces.
     1409        DO  l = 0, 3
     1410          ALLOCATE ( surf_usm_v(l)%g_d(1:surf_usm_v(l)%ns)              )
     1411          ALLOCATE ( surf_usm_v(l)%c_liq(1:surf_usm_v(l)%ns)            )
     1412          ALLOCATE ( surf_usm_v(l)%qsws_liq_eb(1:surf_usm_v(l)%ns)         )
     1413          ALLOCATE ( surf_usm_v(l)%qsws_veg_eb(1:surf_usm_v(l)%ns)         )
     1414          ALLOCATE ( surf_usm_v(l)%qsws_eb(1:surf_usm_v(l)%ns)          )
     1415          ALLOCATE ( surf_usm_v(l)%r_canopy(1:surf_usm_v(l)%ns)         )
     1416          ALLOCATE ( surf_usm_v(l)%r_canopy_min(1:surf_usm_v(l)%ns)     )
     1417        ENDDO
     1418       
    10081419!--     allocate wall and roof layers sizes. For horizontal surfaces.
    10091420        ALLOCATE ( zwn(nzb_wall:nzt_wall) )
     
    10471458!--     allocate wall and roof temperature arrays, for horizontal walls
    10481459#if defined( __nopointer )
    1049         IF ( .NOT. ALLOCATED( t_surf_h ) )                                     &
    1050            ALLOCATE ( t_surf_h(1:surf_usm_h%ns) )
    1051         IF ( .NOT. ALLOCATED( t_surf_h_p ) )                                   &
    1052            ALLOCATE ( t_surf_h_p(1:surf_usm_h%ns) )
     1460        IF ( .NOT. ALLOCATED( t_surf_wall_h ) )                                     &
     1461           ALLOCATE ( t_surf_wall_h(1:surf_usm_h%ns) )
     1462        IF ( .NOT. ALLOCATED( t_surf_wall_h_p ) )                                   &
     1463           ALLOCATE ( t_surf_wall_h_p(1:surf_usm_h%ns) )
    10531464        IF ( .NOT. ALLOCATED( t_wall_h ) )                                     &           
    10541465           ALLOCATE ( t_wall_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     
    10751486        IF ( .NOT. ALLOCATED( t_surf_10cm_h_p ) )                              &
    10761487           ALLOCATE ( t_surf_10cm_h_p(1:surf_usm_h%ns) )
     1488        IF ( .NOT. ALLOCATED( swc_h ) )                                    &           
     1489           ALLOCATE ( swc_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1490        IF ( .NOT. ALLOCATED( swc_sat_h ) )                                    &           
     1491           ALLOCATE ( swc_sat_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1492        IF ( .NOT. ALLOCATED( swc_res_h ) )                                    &           
     1493           ALLOCATE ( swc_res_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1494        IF ( .NOT. ALLOCATED( rootfr_h ) )                                    &           
     1495           ALLOCATE ( rootfr_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1496        IF ( .NOT. ALLOCATED( wilt_h ) )                                    &           
     1497           ALLOCATE ( wilt_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1498        IF ( .NOT. ALLOCATED( fc_h ) )                                    &           
     1499           ALLOCATE ( fc_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1500
     1501       IF ( .NOT. ALLOCATED( m_liq_usm_h%var_usm_1d ) )                            &
     1502          ALLOCATE ( m_liq_usm_h%var_usm_1d(1:surf_usm_h%ns) )
     1503
     1504!--    Horizontal surfaces
     1505       ALLOCATE ( m_liq_usm_h_p%var_usm_1d(1:surf_usm_h%ns)                      )
     1506!
     1507!--    Vertical surfaces
     1508       DO  l = 0, 3
     1509          ALLOCATE ( m_liq_usm_v_p(l)%var_usm_1d(1:surf_usm_v(l)%ns)                      )
     1510       ENDDO
     1511         
    10771512#else
    10781513!
    10791514!--     Allocate if required. Note, in case of restarts, some of these arrays
    10801515!--     might be already allocated.
    1081         IF ( .NOT. ALLOCATED( t_surf_h_1 ) )                                   &
    1082            ALLOCATE ( t_surf_h_1(1:surf_usm_h%ns) )
    1083         IF ( .NOT. ALLOCATED( t_surf_h_2 ) )                                   &
    1084            ALLOCATE ( t_surf_h_2(1:surf_usm_h%ns) )
     1516        IF ( .NOT. ALLOCATED( t_surf_wall_h_1 ) )                                   &
     1517           ALLOCATE ( t_surf_wall_h_1(1:surf_usm_h%ns) )
     1518        IF ( .NOT. ALLOCATED( t_surf_wall_h_2 ) )                                   &
     1519           ALLOCATE ( t_surf_wall_h_2(1:surf_usm_h%ns) )
    10851520        IF ( .NOT. ALLOCATED( t_wall_h_1 ) )                                   &           
    10861521           ALLOCATE ( t_wall_h_1(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     
    11071542        IF ( .NOT. ALLOCATED( t_surf_10cm_h_2 ) )                              &
    11081543           ALLOCATE ( t_surf_10cm_h_2(1:surf_usm_h%ns) )
     1544        IF ( .NOT. ALLOCATED( swc_h_1 ) )                                  &           
     1545           ALLOCATE ( swc_h_1(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1546        IF ( .NOT. ALLOCATED( swc_sat_h_1 ) )                                  &           
     1547           ALLOCATE ( swc_sat_h_1(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1548        IF ( .NOT. ALLOCATED( swc_res_h_1 ) )                                  &           
     1549           ALLOCATE ( swc_res_h_1(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1550        IF ( .NOT. ALLOCATED( swc_h_2 ) )                                  &           
     1551           ALLOCATE ( swc_h_2(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1552        IF ( .NOT. ALLOCATED( rootfr_h_1 ) )                                  &           
     1553           ALLOCATE ( rootfr_h_1(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1554        IF ( .NOT. ALLOCATED( wilt_h_1 ) )                                  &           
     1555           ALLOCATE ( wilt_h_1(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1556        IF ( .NOT. ALLOCATED( fc_h_1 ) )                                  &           
     1557           ALLOCATE ( fc_h_1(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
     1558
     1559        IF ( .NOT. ALLOCATED( m_liq_usm_h_1%var_usm_1d ) )                         &
     1560           ALLOCATE ( m_liq_usm_h_1%var_usm_1d(1:surf_usm_h%ns) )
     1561        IF ( .NOT. ALLOCATED( m_liq_usm_h_2%var_usm_1d ) )                         &
     1562           ALLOCATE ( m_liq_usm_h_2%var_usm_1d(1:surf_usm_h%ns) )
     1563           
    11091564!           
    11101565!--     initial assignment of the pointers
     
    11121567        t_window_h    => t_window_h_1;    t_window_h_p    => t_window_h_2
    11131568        t_green_h    => t_green_h_1;    t_green_h_p    => t_green_h_2
    1114         t_surf_h => t_surf_h_1; t_surf_h_p => t_surf_h_2           
     1569        t_surf_wall_h => t_surf_wall_h_1; t_surf_wall_h_p => t_surf_wall_h_2           
    11151570        t_surf_window_h => t_surf_window_h_1; t_surf_window_h_p => t_surf_window_h_2 
    11161571        t_surf_green_h => t_surf_green_h_1; t_surf_green_h_p => t_surf_green_h_2           
    11171572        t_surf_10cm_h => t_surf_10cm_h_1; t_surf_10cm_h_p => t_surf_10cm_h_2 
     1573        m_liq_usm_h     => m_liq_usm_h_1;     m_liq_usm_h_p     => m_liq_usm_h_2
     1574        swc_h       => swc_h_1; swc_h_p     => swc_h_2
     1575        swc_sat_h    => swc_sat_h_1
     1576        swc_res_h    => swc_res_h_1
     1577        rootfr_h       => rootfr_h_1
     1578        wilt_h       => wilt_h_1
     1579        fc_h       => fc_h_1
    11181580 
    11191581#endif
     
    11221584#if defined( __nopointer )
    11231585        DO  l = 0, 3
    1124            IF ( .NOT. ALLOCATED( t_surf_v(l)%t ) )                             &
    1125               ALLOCATE ( t_surf_v(l)%t(1:surf_usm_v(l)%ns) )
    1126            IF ( .NOT. ALLOCATED( t_surf_v_p(l)%t ) )                           &
    1127               ALLOCATE ( t_surf_v_p(l)%t(1:surf_usm_v(l)%ns) )
     1586           IF ( .NOT. ALLOCATED( t_surf_wall_v(l)%t ) )                             &
     1587              ALLOCATE ( t_surf_wall_v(l)%t(1:surf_usm_v(l)%ns) )
     1588           IF ( .NOT. ALLOCATED( t_surf_wall_v_p(l)%t ) )                           &
     1589              ALLOCATE ( t_surf_wall_v_p(l)%t(1:surf_usm_v(l)%ns) )
    11281590           IF ( .NOT. ALLOCATED( t_wall_v(l)%t ) )                             &
    11291591              ALLOCATE ( t_wall_v(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )
     
    11501612           IF ( .NOT. ALLOCATED( t_surf_10cm_v_p(l)%t ) )                        &
    11511613              ALLOCATE ( t_surf_10cm_v_p(l)%t(1:surf_usm_v(l)%ns) )
     1614           IF ( .NOT. ALLOCATED( m_liq_usm_v(l)%var_usm_1d ) )                 &
     1615             ALLOCATE ( m_liq_usm_v(l)%var_usm_1d(1:surf_usm_v(l)%ns) )
     1616           IF ( .NOT. ALLOCATED( swc_v(l)%t ) )                             &
     1617              ALLOCATE ( swc_v(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )
     1618           IF ( .NOT. ALLOCATED( swc_v_p(l)%t ) )                           &                 
     1619              ALLOCATE ( swc_v_p(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )
    11521620        ENDDO
    11531621#else
     
    11561624!--     might be already allocated.
    11571625        DO  l = 0, 3
    1158            IF ( .NOT. ALLOCATED( t_surf_v_1(l)%t ) )                           &
    1159               ALLOCATE ( t_surf_v_1(l)%t(1:surf_usm_v(l)%ns) )
    1160            IF ( .NOT. ALLOCATED( t_surf_v_2(l)%t ) )                           &
    1161               ALLOCATE ( t_surf_v_2(l)%t(1:surf_usm_v(l)%ns) )
     1626           IF ( .NOT. ALLOCATED( t_surf_wall_v_1(l)%t ) )                           &
     1627              ALLOCATE ( t_surf_wall_v_1(l)%t(1:surf_usm_v(l)%ns) )
     1628           IF ( .NOT. ALLOCATED( t_surf_wall_v_2(l)%t ) )                           &
     1629              ALLOCATE ( t_surf_wall_v_2(l)%t(1:surf_usm_v(l)%ns) )
    11621630           IF ( .NOT. ALLOCATED( t_wall_v_1(l)%t ) )                           &           
    11631631              ALLOCATE ( t_wall_v_1(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )
     
    11841652           IF ( .NOT. ALLOCATED( t_surf_10cm_v_2(l)%t ) )                     &
    11851653              ALLOCATE ( t_surf_10cm_v_2(l)%t(1:surf_usm_v(l)%ns) )
     1654           IF ( .NOT. ALLOCATED( m_liq_usm_v_1(l)%var_usm_1d ) )              &
     1655              ALLOCATE ( m_liq_usm_v_1(l)%var_usm_1d(1:surf_usm_v(l)%ns) )
     1656           IF ( .NOT. ALLOCATED( m_liq_usm_v_2(l)%var_usm_1d ) )              &
     1657              ALLOCATE ( m_liq_usm_v_2(l)%var_usm_1d(1:surf_usm_v(l)%ns) )
     1658           IF ( .NOT. ALLOCATED( swc_v_1(l)%t ) )                           &           
     1659              ALLOCATE ( swc_v_1(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )
     1660           IF ( .NOT. ALLOCATED( swc_v_2(l)%t ) )                           &           
     1661              ALLOCATE ( swc_v_2(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) ) 
    11861662        ENDDO
    11871663!
    11881664!--     initial assignment of the pointers
    11891665        t_wall_v    => t_wall_v_1;    t_wall_v_p    => t_wall_v_2
    1190         t_surf_v => t_surf_v_1; t_surf_v_p => t_surf_v_2
     1666        t_surf_wall_v => t_surf_wall_v_1; t_surf_wall_v_p => t_surf_wall_v_2
    11911667        t_window_v    => t_window_v_1;    t_window_v_p    => t_window_v_2
    11921668        t_green_v    => t_green_v_1;    t_green_v_p    => t_green_v_2
     
    11941670        t_surf_green_v => t_surf_green_v_1; t_surf_green_v_p => t_surf_green_v_2
    11951671        t_surf_10cm_v => t_surf_10cm_v_1; t_surf_10cm_v_p => t_surf_10cm_v_2
     1672        m_liq_usm_v     => m_liq_usm_v_1;     m_liq_usm_v_p     => m_liq_usm_v_2
     1673        swc_v    => swc_v_1;    swc_v_p    => swc_v_2
    11961674
    11971675#endif
    11981676!
    11991677!--     Allocate intermediate timestep arrays. For horizontal surfaces.
    1200         ALLOCATE ( surf_usm_h%tt_surface_m(1:surf_usm_h%ns)                  )
     1678        ALLOCATE ( surf_usm_h%tt_surface_wall_m(1:surf_usm_h%ns)                  )
    12011679        ALLOCATE ( surf_usm_h%tt_wall_m(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )
    12021680        ALLOCATE ( surf_usm_h%tt_surface_window_m(1:surf_usm_h%ns)             )
     
    12061684
    12071685!
     1686!--    Allocate intermediate timestep arrays
     1687!--    Horizontal surfaces
     1688       ALLOCATE ( tm_liq_usm_h_m%var_usm_1d(1:surf_usm_h%ns)                   )
     1689!
     1690!--    Horizontal surfaces
     1691       DO  l = 0, 3
     1692          ALLOCATE ( tm_liq_usm_v_m(l)%var_usm_1d(1:surf_usm_v(l)%ns)          )
     1693       ENDDO
     1694       
     1695!
    12081696!--     Set inital values for prognostic quantities
    1209         IF ( ALLOCATED( surf_usm_h%tt_surface_m ) )  surf_usm_h%tt_surface_m = 0.0_wp
     1697        IF ( ALLOCATED( surf_usm_h%tt_surface_wall_m ) )  surf_usm_h%tt_surface_wall_m = 0.0_wp
    12101698        IF ( ALLOCATED( surf_usm_h%tt_wall_m    ) )  surf_usm_h%tt_wall_m    = 0.0_wp
    12111699        IF ( ALLOCATED( surf_usm_h%tt_surface_window_m ) )  surf_usm_h%tt_surface_window_m = 0.0_wp
     
    12161704!--     Now, for vertical surfaces
    12171705        DO  l = 0, 3
    1218            ALLOCATE ( surf_usm_v(l)%tt_surface_m(1:surf_usm_v(l)%ns)                  )
     1706           ALLOCATE ( surf_usm_v(l)%tt_surface_wall_m(1:surf_usm_v(l)%ns)                  )
    12191707           ALLOCATE ( surf_usm_v(l)%tt_wall_m(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )
    1220            IF ( ALLOCATED( surf_usm_v(l)%tt_surface_m ) )  surf_usm_v(l)%tt_surface_m = 0.0_wp
     1708           IF ( ALLOCATED( surf_usm_v(l)%tt_surface_wall_m ) )  surf_usm_v(l)%tt_surface_wall_m = 0.0_wp
    12211709           IF ( ALLOCATED( surf_usm_v(l)%tt_wall_m    ) )  surf_usm_v(l)%tt_wall_m    = 0.0_wp
    12221710           ALLOCATE ( surf_usm_v(l)%tt_surface_window_m(1:surf_usm_v(l)%ns)             )
     
    13341822            ELSE
    13351823!--             wrong green layer index
     1824                RETURN
     1825            ENDIF
     1826        ENDIF
     1827        IF ( var(1:8) == 'usm_swc_'  .AND.  len(TRIM(var)) >= 9 )  THEN
     1828!--          swc layers
     1829            READ(var(9:9), '(I1)', iostat=istat ) iwl
     1830            IF ( istat == 0  .AND.  iwl >= nzb_wall  .AND.  iwl <= nzt_wall )  THEN
     1831                var = var(1:7)
     1832            ELSE
     1833!--             wrong swc layer index
    13361834                RETURN
    13371835            ENDIF
     
    14891987                       ENDIF
    14901988                    ENDIF
     1989                   
     1990                CASE ( 'usm_qsws' )
     1991!--                 array of latent heat flux from surfaces
     1992!--                 land surfaces
     1993                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%qsws_eb_av) )  THEN
     1994                        ALLOCATE( surf_usm_h%qsws_eb_av(1:surf_usm_h%ns) )
     1995                        surf_usm_h%qsws_eb_av = 0.0_wp
     1996                    ELSE
     1997                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%qsws_eb_av) )  THEN
     1998                           ALLOCATE( surf_usm_v(l)%qsws_eb_av(1:surf_usm_v(l)%ns) )
     1999                           surf_usm_v(l)%qsws_eb_av = 0.0_wp
     2000                       ENDIF
     2001                    ENDIF
     2002                   
     2003                CASE ( 'usm_qsws_veg' )
     2004!--                 array of latent heat flux from vegetation surfaces
     2005!--                 land surfaces
     2006                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%qsws_veg_eb_av) )  THEN
     2007                        ALLOCATE( surf_usm_h%qsws_veg_eb_av(1:surf_usm_h%ns) )
     2008                        surf_usm_h%qsws_veg_eb_av = 0.0_wp
     2009                    ELSE
     2010                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%qsws_veg_eb_av) )  THEN
     2011                           ALLOCATE( surf_usm_v(l)%qsws_veg_eb_av(1:surf_usm_v(l)%ns) )
     2012                           surf_usm_v(l)%qsws_veg_eb_av = 0.0_wp
     2013                       ENDIF
     2014                    ENDIF
     2015                   
     2016                CASE ( 'usm_qsws_liq' )
     2017!--                 array of latent heat flux from surfaces with liquid
     2018!--                 land surfaces
     2019                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%qsws_liq_eb_av) )  THEN
     2020                        ALLOCATE( surf_usm_h%qsws_liq_eb_av(1:surf_usm_h%ns) )
     2021                        surf_usm_h%qsws_liq_eb_av = 0.0_wp
     2022                    ELSE
     2023                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%qsws_liq_eb_av) )  THEN
     2024                           ALLOCATE( surf_usm_v(l)%qsws_liq_eb_av(1:surf_usm_v(l)%ns) )
     2025                           surf_usm_v(l)%qsws_liq_eb_av = 0.0_wp
     2026                       ENDIF
     2027                    ENDIF
    14912028!
    14922029!--             Please note, the following output quantities belongs to the
     
    15542091                    ENDIF
    15552092                   
    1556                 CASE ( 'usm_t_surf' )
     2093                CASE ( 'usm_t_surf_wall' )
    15572094!--                 surface temperature for surfaces
    1558                     IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_av) )  THEN
    1559                         ALLOCATE( surf_usm_h%t_surf_av(1:surf_usm_h%ns) )
    1560                         surf_usm_h%t_surf_av = 0.0_wp
     2095                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%t_surf_wall_av) )  THEN
     2096                        ALLOCATE( surf_usm_h%t_surf_wall_av(1:surf_usm_h%ns) )
     2097                        surf_usm_h%t_surf_wall_av = 0.0_wp
    15612098                    ELSE
    1562                        IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_av) )  THEN
    1563                            ALLOCATE( surf_usm_v(l)%t_surf_av(1:surf_usm_v(l)%ns) )
    1564                            surf_usm_v(l)%t_surf_av = 0.0_wp
     2099                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%t_surf_wall_av) )  THEN
     2100                           ALLOCATE( surf_usm_v(l)%t_surf_wall_av(1:surf_usm_v(l)%ns) )
     2101                           surf_usm_v(l)%t_surf_wall_av = 0.0_wp
    15652102                       ENDIF
    15662103                    ENDIF
     
    16352172                           ALLOCATE( surf_usm_v(l)%t_green_av(nzb_wall:nzt_wall,1:surf_usm_v(l)%ns) )
    16362173                           surf_usm_v(l)%t_green_av = 0.0_wp
     2174                       ENDIF
     2175                    ENDIF
     2176                CASE ( 'usm_swc' )
     2177!--                 soil water content for iwl layer of walls and land
     2178                    IF ( l == -1 .AND. .NOT.  ALLOCATED(surf_usm_h%swc_av) )  THEN
     2179                        ALLOCATE( surf_usm_h%swc_av(nzb_wall:nzt_wall,1:surf_usm_h%ns) )
     2180                        surf_usm_h%swc_av = 0.0_wp
     2181                    ELSE
     2182                       IF ( .NOT.  ALLOCATED(surf_usm_v(l)%swc_av) )  THEN
     2183                           ALLOCATE( surf_usm_v(l)%swc_av(nzb_wall:nzt_wall,1:surf_usm_v(l)%ns) )
     2184                           surf_usm_v(l)%swc_av = 0.0_wp
    16372185                       ENDIF
    16382186                    ENDIF
     
    18032351                    ENDIF
    18042352                   
     2353                CASE ( 'usm_qsws' )
     2354!--                 array of latent heat flux from surfaces (land, roof, wall)
     2355                    IF ( l == -1 ) THEN
     2356                    DO  m = 1, surf_usm_h%ns
     2357                       surf_usm_h%qsws_eb_av(m) =                              &
     2358                                          surf_usm_h%qsws_eb_av(m) +           &
     2359                                          surf_usm_h%qsws_eb(m)
     2360                    ENDDO
     2361                    ELSE
     2362                       DO  m = 1, surf_usm_v(l)%ns
     2363                          surf_usm_v(l)%qsws_eb_av(m) =                        &
     2364                                          surf_usm_v(l)%qsws_eb_av(m) +        &
     2365                                          surf_usm_v(l)%qsws_eb(m)
     2366                       ENDDO
     2367                    ENDIF
     2368                   
     2369                CASE ( 'usm_qsws_veg' )
     2370!--                 array of latent heat flux from vegetation surfaces (land, roof, wall)
     2371                    IF ( l == -1 ) THEN
     2372                    DO  m = 1, surf_usm_h%ns
     2373                       surf_usm_h%qsws_veg_eb_av(m) =                              &
     2374                                          surf_usm_h%qsws_veg_eb_av(m) +           &
     2375                                          surf_usm_h%qsws_veg_eb(m)
     2376                    ENDDO
     2377                    ELSE
     2378                       DO  m = 1, surf_usm_v(l)%ns
     2379                          surf_usm_v(l)%qsws_veg_eb_av(m) =                        &
     2380                                          surf_usm_v(l)%qsws_veg_eb_av(m) +        &
     2381                                          surf_usm_v(l)%qsws_veg_eb(m)
     2382                       ENDDO
     2383                    ENDIF
     2384                   
     2385                CASE ( 'usm_qsws_liq' )
     2386!--                 array of latent heat flux from surfaces with liquid (land, roof, wall)
     2387                    IF ( l == -1 ) THEN
     2388                    DO  m = 1, surf_usm_h%ns
     2389                       surf_usm_h%qsws_liq_eb_av(m) =                              &
     2390                                          surf_usm_h%qsws_liq_eb_av(m) +           &
     2391                                          surf_usm_h%qsws_liq_eb(m)
     2392                    ENDDO
     2393                    ELSE
     2394                       DO  m = 1, surf_usm_v(l)%ns
     2395                          surf_usm_v(l)%qsws_liq_eb_av(m) =                        &
     2396                                          surf_usm_v(l)%qsws_liq_eb_av(m) +        &
     2397                                          surf_usm_v(l)%qsws_liq_eb(m)
     2398                       ENDDO
     2399                    ENDIF
     2400                   
    18052401                CASE ( 'usm_wghf' )
    18062402!--                 array of heat flux from ground (wall, roof, land)
     
    18832479                    ENDIF
    18842480                   
    1885                 CASE ( 'usm_t_surf' )
     2481                CASE ( 'usm_t_surf_wall' )
    18862482!--                 surface temperature for surfaces
    18872483                    IF ( l == -1 ) THEN
    18882484                       DO  m = 1, surf_usm_h%ns
    1889                           surf_usm_h%t_surf_av(m) =                               &
    1890                                              surf_usm_h%t_surf_av(m) +            &
    1891                                              t_surf_h(m)
     2485                       surf_usm_h%t_surf_wall_av(m) =                               &
     2486                                          surf_usm_h%t_surf_wall_av(m) +            &
     2487                                          t_surf_wall_h(m)
    18922488                       ENDDO
    18932489                    ELSE
    18942490                       DO  m = 1, surf_usm_v(l)%ns
    1895                           surf_usm_v(l)%t_surf_av(m) =                         &
    1896                                           surf_usm_v(l)%t_surf_av(m) +         &
    1897                                           t_surf_v(l)%t(m)
     2491                          surf_usm_v(l)%t_surf_wall_av(m) =                         &
     2492                                          surf_usm_v(l)%t_surf_wall_av(m) +         &
     2493                                          t_surf_wall_v(l)%t(m)
    18982494                       ENDDO
    18992495                    ENDIF
     
    19962592                    ENDIF
    19972593
     2594                CASE ( 'usm_swc' )
     2595!--                 soil water content for  iwl layer of walls and land
     2596                    IF ( l == -1 ) THEN
     2597                    DO  m = 1, surf_usm_h%ns
     2598                       surf_usm_h%swc_av(iwl,m) =                           &
     2599                                          surf_usm_h%swc_av(iwl,m) +        &
     2600                                          swc_h(iwl,m)
     2601                    ENDDO
     2602                    ELSE
     2603                       DO  m = 1, surf_usm_v(l)%ns
     2604                          surf_usm_v(l)%swc_av(iwl,m) =                     &
     2605                                          surf_usm_v(l)%swc_av(iwl,m) +     &
     2606                                          swc_v(l)%t(iwl,m)
     2607                       ENDDO
     2608                    ENDIF
     2609
    19982610                CASE DEFAULT
    19992611                    CONTINUE
     
    21562768                    ENDIF
    21572769                   
     2770                CASE ( 'usm_qsws' )
     2771!--                 array of latent heat flux from surfaces (land, roof, wall)
     2772                    IF ( l == -1 ) THEN
     2773                    DO  m = 1, surf_usm_h%ns
     2774                       surf_usm_h%qsws_eb_av(m) =                              &
     2775                                          surf_usm_h%qsws_eb_av(m) /           &
     2776                                          REAL( average_count_3d, kind=wp )
     2777                    ENDDO
     2778                    ELSE
     2779                       DO  m = 1, surf_usm_v(l)%ns
     2780                          surf_usm_v(l)%qsws_eb_av(m) =                        &
     2781                                          surf_usm_v(l)%qsws_eb_av(m) /        &
     2782                                          REAL( average_count_3d, kind=wp )
     2783                       ENDDO
     2784                    ENDIF
     2785
     2786                CASE ( 'usm_qsws_veg' )
     2787!--                 array of latent heat flux from vegetation surfaces (land, roof, wall)
     2788                    IF ( l == -1 ) THEN
     2789                    DO  m = 1, surf_usm_h%ns
     2790                       surf_usm_h%qsws_veg_eb_av(m) =                              &
     2791                                          surf_usm_h%qsws_veg_eb_av(m) /           &
     2792                                          REAL( average_count_3d, kind=wp )
     2793                    ENDDO
     2794                    ELSE
     2795                       DO  m = 1, surf_usm_v(l)%ns
     2796                          surf_usm_v(l)%qsws_veg_eb_av(m) =                        &
     2797                                          surf_usm_v(l)%qsws_veg_eb_av(m) /        &
     2798                                          REAL( average_count_3d, kind=wp )
     2799                       ENDDO
     2800                    ENDIF
     2801                   
     2802                CASE ( 'usm_qsws_liq' )
     2803!--                 array of latent heat flux from surfaces with liquid (land, roof, wall)
     2804                    IF ( l == -1 ) THEN
     2805                    DO  m = 1, surf_usm_h%ns
     2806                       surf_usm_h%qsws_liq_eb_av(m) =                              &
     2807                                          surf_usm_h%qsws_liq_eb_av(m) /           &
     2808                                          REAL( average_count_3d, kind=wp )
     2809                    ENDDO
     2810                    ELSE
     2811                       DO  m = 1, surf_usm_v(l)%ns
     2812                          surf_usm_v(l)%qsws_liq_eb_av(m) =                        &
     2813                                          surf_usm_v(l)%qsws_liq_eb_av(m) /        &
     2814                                          REAL( average_count_3d, kind=wp )
     2815                       ENDDO
     2816                    ENDIF
     2817                   
    21582818                CASE ( 'usm_wghf' )
    21592819!--                 array of heat flux from ground (wall, roof, land)
     
    22362896                    ENDIF
    22372897                   
    2238                 CASE ( 'usm_t_surf' )
     2898                CASE ( 'usm_t_surf_wall' )
    22392899!--                 surface temperature for surfaces
    22402900                    IF ( l == -1 ) THEN
    22412901                       DO  m = 1, surf_usm_h%ns
    2242                           surf_usm_h%t_surf_av(m) =                               &
    2243                                              surf_usm_h%t_surf_av(m) /            &
     2902                       surf_usm_h%t_surf_wall_av(m) =                               &
     2903                                          surf_usm_h%t_surf_wall_av(m) /            &
    22442904                                             REAL( average_count_3d, kind=wp )
    22452905                       ENDDO
    22462906                    ELSE
    22472907                       DO  m = 1, surf_usm_v(l)%ns
    2248                           surf_usm_v(l)%t_surf_av(m) =                         &
    2249                                           surf_usm_v(l)%t_surf_av(m) /         &
     2908                          surf_usm_v(l)%t_surf_wall_av(m) =                         &
     2909                                          surf_usm_v(l)%t_surf_wall_av(m) /         &
    22502910                                          REAL( average_count_3d, kind=wp )
    22512911                       ENDDO
     
    23473007                       ENDDO
    23483008                    ENDIF
     3009                   
     3010                CASE ( 'usm_swc' )
     3011!--                 soil water content for  iwl layer of walls and land
     3012                    IF ( l == -1 ) THEN
     3013                    DO  m = 1, surf_usm_h%ns
     3014                       surf_usm_h%swc_av(iwl,m) =                           &
     3015                                          surf_usm_h%swc_av(iwl,m) /        &
     3016                                          REAL( average_count_3d, kind=wp )
     3017                    ENDDO
     3018                    ELSE
     3019                       DO  m = 1, surf_usm_v(l)%ns
     3020                          surf_usm_v(l)%swc_av(iwl,m) =                     &
     3021                                          surf_usm_v(l)%swc_av(iwl,m) /     &
     3022                                          REAL( average_count_3d, kind=wp )
     3023                       ENDDO
     3024                    ENDIF
    23493025
    23503026
     
    24063082!------------------------------------------------------------------------------!
    24073083    SUBROUTINE usm_check_data_output( variable, unit )
    2408        
     3084
    24093085        IMPLICIT NONE
    2410  
    2411         CHARACTER(LEN=*),INTENT(IN)    ::  variable !:
    2412         CHARACTER(LEN=*),INTENT(OUT)   ::  unit     !:
     3086
     3087        CHARACTER(LEN=*),INTENT(IN)    ::  variable   !<
     3088        CHARACTER(LEN=*),INTENT(OUT)   ::  unit       !<
    24133089
    24143090        INTEGER(iwp)                                  :: i,j          !< index
    2415         CHARACTER(LEN=varnamelength)                  :: var
     3091        CHARACTER(LEN=varnamelength)                  :: var          !< TRIM(variable)
    24163092        INTEGER(iwp), PARAMETER                       :: nl1 = 32     !< number of directional usm variables
    24173093        CHARACTER(LEN=varnamelength), DIMENSION(nl1)  :: varlist1 = & !< list of directional usm variables
     
    24683144
    24693145        lfound = .FALSE.
     3146
    24703147        var = TRIM(variable)
    24713148
     
    2495317210      CONTINUE
    24963173
    2497 !--     check if variable exists
    24983174        IF ( var(1:12) == 'usm_rad_net_'  .OR.  var(1:13) == 'usm_rad_insw_'  .OR.        &
    24993175             var(1:13) == 'usm_rad_inlw_'  .OR.  var(1:16) == 'usm_rad_inswdir_'  .OR.    &
     
    25053181             var(1:9)  == 'usm_wshf_'  .OR.  var(1:9) == 'usm_wghf_' .OR.                 &
    25063182             var(1:16) == 'usm_wghf_window_' .OR. var(1:15) == 'usm_wghf_green_' .OR.     &
    2507              var(1:10) == 'usm_iwghf_' .OR. var(1:17) == 'usm_iwghf_window_' .OR.         &
    2508              var(1:17) == 'usm_surfwintrans_' )  THEN
     3183             var(1:10) == 'usm_iwghf_' .OR. var(1:17) == 'usm_iwghf_window_'    .OR.      &
     3184             var(1:17) == 'usm_surfwintrans_' .OR.                                        &
     3185             var(1:9)  == 'usm_qsws_'  .OR.  var(1:13)  == 'usm_qsws_veg_'  .OR.          &
     3186             var(1:13) == 'usm_qsws_liq_' ) THEN
    25093187            unit = 'W/m2'
    2510         ELSE IF ( var(1:10) == 'usm_t_surf'   .OR.  var(1:10) == 'usm_t_wall' .OR.        &
     3188        ELSE IF ( var(1:15) == 'usm_t_surf_wall'   .OR.  var(1:10) == 'usm_t_wall' .OR.   &
    25113189                  var(1:12) == 'usm_t_window' .OR. var(1:17) == 'usm_t_surf_window' .OR.  &
    25123190                  var(1:16) == 'usm_t_surf_green'  .OR.                                   &
    2513                   var(1:11) == 'usm_t_green' .OR.                                         &
     3191                  var(1:11) == 'usm_t_green' .OR.  var(1:7) == 'usm_swc' .OR.             &
    25143192                  var(1:15) == 'usm_t_surf_10cm' )  THEN
    25153193            unit = 'K'
     
    26623340            IF ( istat == 0  .AND.  iwl >= nzb_wall  .AND.  iwl <= nzt_wall )  THEN
    26633341                var = var(1:11)
     3342            ENDIF
     3343        ENDIF
     3344        IF ( var(1:8) == 'usm_swc_'  .AND.  len(TRIM(var)) >= 9 )  THEN
     3345!--         green layers soil water content
     3346            READ(var(9:9), '(I1)', iostat=istat ) iwl
     3347            IF ( istat == 0  .AND.  iwl >= nzb_wall  .AND.  iwl <= nzt_wall )  THEN
     3348                var = var(1:7)
    26643349            ENDIF
    26653350        ENDIF
     
    31323817                 ENDIF
    31333818              ENDIF
     3819             
     3820             
     3821          CASE ( 'usm_qsws' )
     3822!--           array of latent heat flux from surfaces
     3823              IF ( av == 0 )  THEN
     3824                 IF ( idsint == iup_u )  THEN
     3825                    DO  m = 1, surf_usm_h%ns
     3826                       i = surf_usm_h%i(m)
     3827                       j = surf_usm_h%j(m)
     3828                       k = surf_usm_h%k(m)
     3829                       temp_pf(k,j,i) = surf_usm_h%qsws_eb(m)
     3830                    ENDDO
     3831                 ELSE
     3832                    l = idsidx
     3833                    DO  m = 1, surf_usm_v(l)%ns
     3834                       i = surf_usm_v(l)%i(m)
     3835                       j = surf_usm_v(l)%j(m)
     3836                       k = surf_usm_v(l)%k(m)
     3837                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_eb(m)
     3838                    ENDDO
     3839                 ENDIF
     3840              ELSE
     3841                 IF ( idsint == iup_u )  THEN
     3842                    DO  m = 1, surf_usm_h%ns
     3843                       i = surf_usm_h%i(m)
     3844                       j = surf_usm_h%j(m)
     3845                       k = surf_usm_h%k(m)
     3846                       temp_pf(k,j,i) = surf_usm_h%qsws_eb_av(m)
     3847                    ENDDO
     3848                 ELSE
     3849                    l = idsidx
     3850                    DO  m = 1, surf_usm_v(l)%ns
     3851                       i = surf_usm_v(l)%i(m)
     3852                       j = surf_usm_v(l)%j(m)
     3853                       k = surf_usm_v(l)%k(m)
     3854                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_eb_av(m)
     3855                    ENDDO
     3856                 ENDIF
     3857              ENDIF
     3858             
     3859          CASE ( 'usm_qsws_veg' )
     3860!--           array of latent heat flux from vegetation surfaces
     3861              IF ( av == 0 )  THEN
     3862                 IF ( idsint == iup_u )  THEN
     3863                    DO  m = 1, surf_usm_h%ns
     3864                       i = surf_usm_h%i(m)
     3865                       j = surf_usm_h%j(m)
     3866                       k = surf_usm_h%k(m)
     3867                       temp_pf(k,j,i) = surf_usm_h%qsws_veg_eb(m)
     3868                    ENDDO
     3869                 ELSE
     3870                    l = idsidx
     3871                    DO  m = 1, surf_usm_v(l)%ns
     3872                       i = surf_usm_v(l)%i(m)
     3873                       j = surf_usm_v(l)%j(m)
     3874                       k = surf_usm_v(l)%k(m)
     3875                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_veg_eb(m)
     3876                    ENDDO
     3877                 ENDIF
     3878              ELSE
     3879                 IF ( idsint == iup_u )  THEN
     3880                    DO  m = 1, surf_usm_h%ns
     3881                       i = surf_usm_h%i(m)
     3882                       j = surf_usm_h%j(m)
     3883                       k = surf_usm_h%k(m)
     3884                       temp_pf(k,j,i) = surf_usm_h%qsws_veg_eb_av(m)
     3885                    ENDDO
     3886                 ELSE
     3887                    l = idsidx
     3888                    DO  m = 1, surf_usm_v(l)%ns
     3889                       i = surf_usm_v(l)%i(m)
     3890                       j = surf_usm_v(l)%j(m)
     3891                       k = surf_usm_v(l)%k(m)
     3892                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_veg_eb_av(m)
     3893                    ENDDO
     3894                 ENDIF
     3895              ENDIF
     3896             
     3897          CASE ( 'usm_qsws_liq' )
     3898!--           array of latent heat flux from surfaces with liquid
     3899              IF ( av == 0 )  THEN
     3900                 IF ( idsint == iup_u )  THEN
     3901                    DO  m = 1, surf_usm_h%ns
     3902                       i = surf_usm_h%i(m)
     3903                       j = surf_usm_h%j(m)
     3904                       k = surf_usm_h%k(m)
     3905                       temp_pf(k,j,i) = surf_usm_h%qsws_liq_eb(m)
     3906                    ENDDO
     3907                 ELSE
     3908                    l = idsidx
     3909                    DO  m = 1, surf_usm_v(l)%ns
     3910                       i = surf_usm_v(l)%i(m)
     3911                       j = surf_usm_v(l)%j(m)
     3912                       k = surf_usm_v(l)%k(m)
     3913                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_liq_eb(m)
     3914                    ENDDO
     3915                 ENDIF
     3916              ELSE
     3917                 IF ( idsint == iup_u )  THEN
     3918                    DO  m = 1, surf_usm_h%ns
     3919                       i = surf_usm_h%i(m)
     3920                       j = surf_usm_h%j(m)
     3921                       k = surf_usm_h%k(m)
     3922                       temp_pf(k,j,i) = surf_usm_h%qsws_liq_eb_av(m)
     3923                    ENDDO
     3924                 ELSE
     3925                    l = idsidx
     3926                    DO  m = 1, surf_usm_v(l)%ns
     3927                       i = surf_usm_v(l)%i(m)
     3928                       j = surf_usm_v(l)%j(m)
     3929                       k = surf_usm_v(l)%k(m)
     3930                       temp_pf(k,j,i) = surf_usm_v(l)%qsws_liq_eb_av(m)
     3931                    ENDDO
     3932                 ENDIF
     3933              ENDIF
     3934
     3935
    31343936
    31353937
     
    33274129              ENDIF
    33284130             
    3329           CASE ( 'usm_t_surf' )
     4131          CASE ( 'usm_t_surf_wall' )
    33304132!--           surface temperature for surfaces
    33314133              IF ( av == 0 )  THEN
     
    33354137                       j = surf_usm_h%j(m)
    33364138                       k = surf_usm_h%k(m)
    3337                        temp_pf(k,j,i) = t_surf_h(m)
     4139                       temp_pf(k,j,i) = t_surf_wall_h(m)
    33384140                    ENDDO
    33394141                 ELSE
     
    33434145                       j = surf_usm_v(l)%j(m)
    33444146                       k = surf_usm_v(l)%k(m)
    3345                        temp_pf(k,j,i) = t_surf_v(l)%t(m)
     4147                       temp_pf(k,j,i) = t_surf_wall_v(l)%t(m)
    33464148                    ENDDO
    33474149                 ENDIF
     
    33524154                       j = surf_usm_h%j(m)
    33534155                       k = surf_usm_h%k(m)
    3354                        temp_pf(k,j,i) = surf_usm_h%t_surf_av(m)
     4156                       temp_pf(k,j,i) = surf_usm_h%t_surf_wall_av(m)
    33554157                    ENDDO
    33564158                 ELSE
     
    33604162                       j = surf_usm_v(l)%j(m)
    33614163                       k = surf_usm_v(l)%k(m)
    3362                        temp_pf(k,j,i) = surf_usm_v(l)%t_surf_av(m)
     4164                       temp_pf(k,j,i) = surf_usm_v(l)%t_surf_wall_av(m)
    33634165                    ENDDO
    33644166                 ENDIF
     
    36024404                       k = surf_usm_v(l)%k(m)
    36034405                       temp_pf(k,j,i) = surf_usm_v(l)%t_green_av(iwl,m)
     4406                    ENDDO
     4407                 ENDIF
     4408              ENDIF
     4409             
     4410              CASE ( 'usm_swc' )
     4411!--           soil water content for  iwl layer of walls and land
     4412              IF ( av == 0 )  THEN
     4413                 IF ( idsint == iup_u )  THEN
     4414                    DO  m = 1, surf_usm_h%ns
     4415                       i = surf_usm_h%i(m)
     4416                       j = surf_usm_h%j(m)
     4417                       k = surf_usm_h%k(m)
     4418                       temp_pf(k,j,i) = swc_h(iwl,m)
     4419                    ENDDO
     4420                 ELSE
     4421                    l = idsidx
     4422                    DO  m = 1, surf_usm_v(l)%ns
     4423                       i = surf_usm_v(l)%i(m)
     4424                       j = surf_usm_v(l)%j(m)
     4425                       k = surf_usm_v(l)%k(m)
     4426                       temp_pf(k,j,i) = swc_v(l)%t(iwl,m)
     4427                    ENDDO
     4428                 ENDIF
     4429              ELSE
     4430                 IF ( idsint == iup_u )  THEN
     4431                    DO  m = 1, surf_usm_h%ns
     4432                       i = surf_usm_h%i(m)
     4433                       j = surf_usm_h%j(m)
     4434                       k = surf_usm_h%k(m)
     4435                       temp_pf(k,j,i) = surf_usm_h%swc_av(iwl,m)
     4436                    ENDDO
     4437                 ELSE
     4438                    l = idsidx
     4439                    DO  m = 1, surf_usm_v(l)%ns
     4440                       i = surf_usm_v(l)%i(m)
     4441                       j = surf_usm_v(l)%j(m)
     4442                       k = surf_usm_v(l)%k(m)
     4443                       temp_pf(k,j,i) = surf_usm_v(l)%swc_av(iwl,m)
    36044444                    ENDDO
    36054445                 ENDIF
     
    36584498             var(1:16) == 'usm_wghf_window_'  .OR. var(1:15) == 'usm_wghf_green_' .OR.      &
    36594499             var(1:10) == 'usm_iwghf_'  .OR. var(1:17) == 'usm_iwghf_window_' .OR.          &
    3660              var(1:10) == 'usm_t_surf'  .OR.  var(1:10) == 'usm_t_wall'  .OR.               &
     4500             var(1:9) == 'usm_qsws_'  .OR.  var(1:13) == 'usm_qsws_veg_'  .OR.              &
     4501             var(1:13) == 'usm_qsws_liq_' .OR.                                              &
     4502             var(1:10) == 'usm_t_surf_wall'  .OR.  var(1:10) == 'usm_t_wall'  .OR.          &
    36614503             var(1:17) == 'usm_t_surf_window'  .OR.  var(1:12) == 'usm_t_window'  .OR.      &
    3662              var(1:16) == 'usm_t_surf_green'  .OR.                                          &
     4504             var(1:16) == 'usm_t_surf_green'  .OR. var(1:11) == 'usm_t_green' .OR.          &
    36634505             var(1:15) == 'usm_t_surf_10cm' .OR.                                            &
    36644506             var(1:9) == 'usm_surfz'  .OR.  var(1:7) == 'usm_svf'  .OR.                     &
    36654507             var(1:7) == 'usm_dif'  .OR.  var(1:11) == 'usm_surfcat'  .OR.                  &
    36664508             var(1:11) == 'usm_surfalb'  .OR.  var(1:12) == 'usm_surfemis'  .OR.            &
    3667              var(1:16) == 'usm_surfwintrans'  .OR.                                          &
     4509             var(1:16) == 'usm_surfwintrans'  .OR. var(1:7) == 'usm_swc' .OR.               &
    36684510             var(1:9) == 'usm_skyvf' .OR. var(1:9) == 'usm_skyvft' ) THEN
    36694511
     
    37114553                                         surf_usm_h%zw_window(k-1,m)
    37124554           ENDDO
    3713            surf_usm_h%dz_green(nzb_wall,m) = surf_usm_h%zw_green(nzb_wall,m)
    3714            DO k = nzb_wall+1, nzt_wall
    3715                surf_usm_h%dz_green(k,m) = surf_usm_h%zw_green(k,m) -           &
    3716                                          surf_usm_h%zw_green(k-1,m)
    3717            ENDDO
     4555!            surf_usm_h%dz_green(nzb_wall,m) = surf_usm_h%zw_green(nzb_wall,m)
     4556!            DO k = nzb_wall+1, nzt_wall
     4557!                surf_usm_h%dz_green(k,m) = surf_usm_h%zw_green(k,m) -           &
     4558!                                          surf_usm_h%zw_green(k-1,m)
     4559!            ENDDO
    37184560           
    37194561           surf_usm_h%dz_wall(nzt_wall+1,m) = surf_usm_h%dz_wall(nzt_wall,m)
     
    37334575           surf_usm_h%dz_window_stag(nzt_wall,m) = surf_usm_h%dz_window(nzt_wall,m)
    37344576
     4577!            surf_usm_h%dz_green(nzt_wall+1,m) = surf_usm_h%dz_green(nzt_wall,m)
     4578!
     4579!            DO k = nzb_wall, nzt_wall-1
     4580!                surf_usm_h%dz_green_stag(k,m) = 0.5 * (                         &
     4581!                            surf_usm_h%dz_green(k+1,m) + surf_usm_h%dz_green(k,m) )
     4582!            ENDDO
     4583!            surf_usm_h%dz_green_stag(nzt_wall,m) = surf_usm_h%dz_green(nzt_wall,m)
     4584!-------------           
     4585           IF (surf_usm_h%green_type_roof(m) == 2.0_wp ) then
     4586             soil_type = 3 !extensiv green roof
     4587             surf_usm_h%lai(m) = 2.0_wp
     4588             
     4589           surf_usm_h%zw_green(nzb_wall,m)         = 0.05_wp
     4590           surf_usm_h%zw_green(nzb_wall+1,m)       = 0.10_wp
     4591           surf_usm_h%zw_green(nzb_wall+2,m)       = 0.15_wp
     4592           surf_usm_h%zw_green(nzb_wall+3,m)       = 0.20_wp
     4593           ELSE
     4594             soil_type = 6 !intensiv green roof
     4595             surf_usm_h%lai(m) = 4.0_wp
     4596             
     4597           surf_usm_h%zw_green(nzb_wall,m)         = 0.05_wp
     4598           surf_usm_h%zw_green(nzb_wall+1,m)       = 0.10_wp
     4599           surf_usm_h%zw_green(nzb_wall+2,m)       = 0.40_wp
     4600           surf_usm_h%zw_green(nzb_wall+3,m)       = 0.80_wp
     4601           ENDIF
     4602           
     4603           surf_usm_h%dz_green(nzb_wall,m) = surf_usm_h%zw_green(nzb_wall,m)
     4604           DO k = nzb_wall+1, nzt_wall
     4605               surf_usm_h%dz_green(k,m) = surf_usm_h%zw_green(k,m) -           &
     4606                                         surf_usm_h%zw_green(k-1,m)
     4607           ENDDO
    37354608           surf_usm_h%dz_green(nzt_wall+1,m) = surf_usm_h%dz_green(nzt_wall,m)
    37364609
     
    37404613           ENDDO
    37414614           surf_usm_h%dz_green_stag(nzt_wall,m) = surf_usm_h%dz_green(nzt_wall,m)
     4615           
     4616          IF ( alpha_vangenuchten == 9999999.9_wp )  THEN
     4617             alpha_vangenuchten = soil_pars(0,soil_type)
     4618          ENDIF
     4619
     4620          IF ( l_vangenuchten == 9999999.9_wp )  THEN
     4621             l_vangenuchten = soil_pars(1,soil_type)
     4622          ENDIF
     4623
     4624          IF ( n_vangenuchten == 9999999.9_wp )  THEN
     4625             n_vangenuchten = soil_pars(2,soil_type)           
     4626          ENDIF
     4627
     4628          IF ( hydraulic_conductivity == 9999999.9_wp )  THEN
     4629             hydraulic_conductivity = soil_pars(3,soil_type)           
     4630          ENDIF
     4631
     4632          IF ( saturation_moisture == 9999999.9_wp )  THEN
     4633             saturation_moisture = m_soil_pars(0,soil_type)           
     4634          ENDIF
     4635
     4636          IF ( field_capacity == 9999999.9_wp )  THEN
     4637             field_capacity = m_soil_pars(1,soil_type)           
     4638          ENDIF
     4639
     4640          IF ( wilting_point == 9999999.9_wp )  THEN
     4641             wilting_point = m_soil_pars(2,soil_type)           
     4642          ENDIF
     4643
     4644          IF ( residual_moisture == 9999999.9_wp )  THEN
     4645             residual_moisture = m_soil_pars(3,soil_type)       
     4646          ENDIF
     4647         
     4648          DO k = nzb_wall, nzt_wall+1
     4649             swc_h(k,m) = field_capacity
     4650             rootfr_h(k,m) = 0.5_wp
     4651             surf_usm_h%alpha_vg_green(m)      = alpha_vangenuchten
     4652             surf_usm_h%l_vg_green(m)          = l_vangenuchten
     4653             surf_usm_h%n_vg_green(m)          = n_vangenuchten
     4654             surf_usm_h%gamma_w_green_sat(k,m)   = hydraulic_conductivity
     4655             swc_sat_h(k,m)                    = saturation_moisture
     4656             fc_h(k,m)                         = field_capacity
     4657             wilt_h(k,m)                       = wilting_point
     4658             swc_res_h(k,m)                    = residual_moisture
     4659          ENDDO
     4660!-------------------------------           
    37424661        ENDDO
    37434662        surf_usm_h%ddz_wall        = 1.0_wp / surf_usm_h%dz_wall
     
    38074726
    38084727       
     4728!     soil_type = 6
     4729! !--    Initialize standard soil types. It is possible to overwrite each
     4730! !--    parameter by setting the respecticy NAMELIST variable to a
     4731! !--    value /= 9999999.9.
     4732!        IF ( soil_type /= 0 )  THEN 
     4733
     4734!           IF ( alpha_vangenuchten == 9999999.9_wp )  THEN
     4735!              alpha_vangenuchten = soil_pars(0,soil_type)
     4736!           ENDIF
     4737!
     4738!           IF ( l_vangenuchten == 9999999.9_wp )  THEN
     4739!              l_vangenuchten = soil_pars(1,soil_type)
     4740!           ENDIF
     4741!
     4742!           IF ( n_vangenuchten == 9999999.9_wp )  THEN
     4743!              n_vangenuchten = soil_pars(2,soil_type)           
     4744!           ENDIF
     4745!
     4746!           IF ( hydraulic_conductivity == 9999999.9_wp )  THEN
     4747!              hydraulic_conductivity = soil_pars(3,soil_type)           
     4748!           ENDIF
     4749!
     4750!           IF ( saturation_moisture == 9999999.9_wp )  THEN
     4751!              saturation_moisture = m_soil_pars(0,soil_type)           
     4752!           ENDIF
     4753!
     4754!           IF ( field_capacity == 9999999.9_wp )  THEN
     4755!              field_capacity = m_soil_pars(1,soil_type)           
     4756!           ENDIF
     4757!
     4758!           IF ( wilting_point == 9999999.9_wp )  THEN
     4759!              wilting_point = m_soil_pars(2,soil_type)           
     4760!           ENDIF
     4761!
     4762!           IF ( residual_moisture == 9999999.9_wp )  THEN
     4763!              residual_moisture = m_soil_pars(3,soil_type)       
     4764!           ENDIF
     4765!           
     4766!             DO  m = 1, surf_usm_h%ns
     4767!                DO k = nzb_wall, nzt_wall+1
     4768!                    swc_h(k,m) = field_capacity
     4769!                    rootfr_h(k,m) = 0.5_wp
     4770!                ENDDO
     4771!             ENDDO
     4772! ! !
     4773! ! !--         Vertical surfaces
     4774! !             DO  l = 0, 3
     4775! !                DO  m = 1, surf_usm_v(l)%ns
     4776! !                   DO k = nzb_wall, nzt_wall+1
     4777! !                      swc_v(l)%t(k,m) = 0.5_wp
     4778! !                   ENDDO
     4779! !                ENDDO
     4780! !             ENDDO
     4781!
     4782!        ENDIF
     4783!
     4784! !
     4785! !--    Map values to the respective 2D arrays
     4786!        surf_usm_h%alpha_vg_green      = alpha_vangenuchten
     4787!        surf_usm_h%l_vg_green          = l_vangenuchten
     4788!        surf_usm_h%n_vg_green          = n_vangenuchten
     4789!        surf_usm_h%gamma_w_green_sat   = hydraulic_conductivity
     4790!        swc_sat_h         = saturation_moisture
     4791!        fc_h          = field_capacity
     4792!        wilt_h        = wilting_point
     4793!        swc_res_h         = residual_moisture
     4794! !        r_soil_min    = min_soil_resistance
     4795       
    38094796        CALL location_message( '    wall structures filed out', .TRUE. )
    38104797
     
    38304817
    38314818        INTEGER(iwp) ::  i                   !< loop index x-dirction
     4819        INTEGER(iwp) ::  ind_alb_green       !< index in input list for green albedo
     4820        INTEGER(iwp) ::  ind_alb_wall        !< index in input list for wall albedo
     4821        INTEGER(iwp) ::  ind_alb_win         !< index in input list for window albedo
    38324822        INTEGER(iwp) ::  ind_emis_wall       !< index in input list for wall emissivity
    38334823        INTEGER(iwp) ::  ind_emis_green      !< index in input list for green emissivity
     
    38364826        INTEGER(iwp) ::  ind_green_frac_r    !< index in input list for green fraction on roof
    38374827        INTEGER(iwp) ::  ind_hc1             !< index in input list for heat capacity at first wall layer
     4828        INTEGER(iwp) ::  ind_hc1_win         !< index in input list for heat capacity at first window layer
    38384829        INTEGER(iwp) ::  ind_hc2             !< index in input list for heat capacity at second wall layer
     4830        INTEGER(iwp) ::  ind_hc2_win         !< index in input list for heat capacity at second window layer
    38394831        INTEGER(iwp) ::  ind_hc3             !< index in input list for heat capacity at third wall layer
     4832        INTEGER(iwp) ::  ind_hc3_win         !< index in input list for heat capacity at third window layer
    38404833        INTEGER(iwp) ::  ind_lai_r           !< index in input list for LAI on roof
    38414834        INTEGER(iwp) ::  ind_lai_w           !< index in input list for LAI on wall
    38424835        INTEGER(iwp) ::  ind_tc1             !< index in input list for thermal conductivity at first wall layer
     4836        INTEGER(iwp) ::  ind_tc1_win         !< index in input list for thermal conductivity at first window layer
    38434837        INTEGER(iwp) ::  ind_tc2             !< index in input list for thermal conductivity at second wall layer
     4838        INTEGER(iwp) ::  ind_tc2_win         !< index in input list for thermal conductivity at second window layer
    38444839        INTEGER(iwp) ::  ind_tc3             !< index in input list for thermal conductivity at third wall layer
     4840        INTEGER(iwp) ::  ind_tc3_win         !< index in input list for thermal conductivity at third window layer
     4841        INTEGER(iwp) ::  ind_thick_1         !< index in input list for thickness of first wall layer
     4842        INTEGER(iwp) ::  ind_thick_1_win     !< index in input list for thickness of first window layer
     4843        INTEGER(iwp) ::  ind_thick_2         !< index in input list for thickness of second wall layer
     4844        INTEGER(iwp) ::  ind_thick_2_win     !< index in input list for thickness of second window layer
     4845        INTEGER(iwp) ::  ind_thick_3         !< index in input list for thickness of third wall layer
     4846        INTEGER(iwp) ::  ind_thick_3_win     !< index in input list for thickness of third window layer
     4847        INTEGER(iwp) ::  ind_thick_4         !< index in input list for thickness of fourth wall layer
     4848        INTEGER(iwp) ::  ind_thick_4_win     !< index in input list for thickness of fourth window layer
    38454849        INTEGER(iwp) ::  ind_trans           !< index in input list for window transmissivity
    38464850        INTEGER(iwp) ::  ind_wall_frac       !< index in input list for wall fraction
     
    38544858        INTEGER(iwp) ::  st                  !< dummy 
    38554859
    3856         REAL(wp)     ::  c, tin, twin
     4860        REAL(wp)     ::  c, d, tin, twin
    38574861        REAL(wp)     ::  ground_floor_level_l         !< local height of ground floor level
    38584862        REAL(wp)     ::  z_agl                        !< height above ground
     
    39494953           ENDDO
    39504954        ENDDO
     4955       
     4956!---------------------------------------------------------------------------------------------
     4957!
     4958!--    Map values onto horizontal elemements
     4959       DO  m = 1, surf_usm_h%ns
     4960             surf_usm_h%r_canopy_min(m)     = 200.0_wp !min_canopy_resistance
     4961             surf_usm_h%g_d(m)              = 0.0_wp !canopy_resistance_coefficient
     4962       ENDDO
     4963!
     4964!--    Map values onto vertical elements, even though this does not make
     4965!--    much sense.
     4966       DO  l = 0, 3
     4967          DO  m = 1, surf_usm_v(l)%ns
     4968                surf_usm_v(l)%r_canopy_min(m)     = 200.0_wp !min_canopy_resistance
     4969                surf_usm_v(l)%g_d(m)              = 0.0_wp !canopy_resistance_coefficient
     4970          ENDDO
     4971       ENDDO
     4972!---------------------------------------------------------------------------------------------
     4973!
    39514974!
    39524975!--     Initialize urban-type surface attribute. According to initialization in
     
    39604983!
    39614984!--        In order to distinguish between ground floor level and
    3962 !--        above-ground-floor level surfaces, set input indices.
    3963            ind_wall_frac    = MERGE( ind_wall_frac_gfl,    ind_wall_frac_agfl,    &
    3964                                      surf_usm_h%ground_level(m) )
    3965            ind_win_frac     = MERGE( ind_win_frac_gfl,     ind_win_frac_agfl,     &
    3966                                      surf_usm_h%ground_level(m) )
    3967            ind_green_frac_w = MERGE( ind_green_frac_w_gfl, ind_green_frac_w_agfl, &
    3968                                      surf_usm_h%ground_level(m) )
     4985!--        above-ground-floor level surfaces, set input indices.
     4986
    39694987           ind_green_frac_r = MERGE( ind_green_frac_r_gfl, ind_green_frac_r_agfl, &
    39704988                                     surf_usm_h%ground_level(m) )
    39714989           ind_lai_r        = MERGE( ind_lai_r_gfl,        ind_lai_r_agfl,        &
    3972                                      surf_usm_h%ground_level(m) )
    3973            ind_lai_w        = MERGE( ind_lai_w_gfl,        ind_lai_w_agfl,        &
    3974                                      surf_usm_h%ground_level(m) )
    3975            ind_hc1          = MERGE( ind_hc1_gfl,          ind_hc1_agfl,          &
    3976                                      surf_usm_h%ground_level(m) )
    3977            ind_hc2          = MERGE( ind_hc2_gfl,          ind_hc2_agfl,          &
    3978                                      surf_usm_h%ground_level(m) )
    3979            ind_hc3          = MERGE( ind_hc3_gfl,          ind_hc3_agfl,          &
    3980                                      surf_usm_h%ground_level(m) )
    3981            ind_tc1          = MERGE( ind_tc1_gfl,          ind_tc1_agfl,          &
    3982                                      surf_usm_h%ground_level(m) )
    3983            ind_tc2          = MERGE( ind_tc2_gfl,          ind_tc2_agfl,          &
    3984                                      surf_usm_h%ground_level(m) )
    3985            ind_tc3          = MERGE( ind_tc3_gfl,          ind_tc3_agfl,          &
    3986                                      surf_usm_h%ground_level(m) )
    3987            ind_emis_wall    = MERGE( ind_emis_wall_gfl,    ind_emis_wall_agfl,    &
    3988                                      surf_usm_h%ground_level(m) )
    3989            ind_emis_green   = MERGE( ind_emis_green_gfl,   ind_emis_green_agfl,   &
    3990                                      surf_usm_h%ground_level(m) )
    3991            ind_emis_win     = MERGE( ind_emis_win_gfl,     ind_emis_win_agfl,     &
    3992                                      surf_usm_h%ground_level(m) )
    3993            ind_trans        = MERGE( ind_trans_gfl,        ind_trans_agfl,        &
    39944990                                     surf_usm_h%ground_level(m) )
    39954991           ind_z0           = MERGE( ind_z0_gfl,           ind_z0_agfl,           &
     
    40034999!
    40045000!--        Initialize relatvie wall- (0), green- (1) and window (2) fractions
    4005            surf_usm_h%frac(ind_veg_wall,m)  = building_pars(ind_wall_frac,building_type)   
     5001           surf_usm_h%frac(ind_veg_wall,m)  = building_pars(ind_wall_frac_r,building_type)   
    40065002           surf_usm_h%frac(ind_pav_green,m) = building_pars(ind_green_frac_r,building_type) 
    4007            surf_usm_h%frac(ind_wat_win,m)   = building_pars(ind_win_frac,building_type) 
    4008            surf_usm_h%lai(m)                = building_pars(ind_green_frac_r,building_type) 
    4009 
    4010            surf_usm_h%rho_c_wall(nzb_wall,m)   = building_pars(ind_hc1,building_type) 
    4011            surf_usm_h%rho_c_wall(nzb_wall+1,m) = building_pars(ind_hc1,building_type)
    4012            surf_usm_h%rho_c_wall(nzb_wall+2,m) = building_pars(ind_hc2,building_type)
    4013            surf_usm_h%rho_c_wall(nzb_wall+3,m) = building_pars(ind_hc3,building_type)   
    4014            surf_usm_h%lambda_h(nzb_wall,m)   = building_pars(ind_tc1,building_type) 
    4015            surf_usm_h%lambda_h(nzb_wall+1,m) = building_pars(ind_tc1,building_type)
    4016            surf_usm_h%lambda_h(nzb_wall+2,m) = building_pars(ind_tc2,building_type)
    4017            surf_usm_h%lambda_h(nzb_wall+3,m) = building_pars(ind_tc3,building_type)   
    4018            surf_usm_h%rho_c_green(nzb_wall,m)   = building_pars(ind_hc1,building_type) 
    4019            surf_usm_h%rho_c_green(nzb_wall+1,m) = building_pars(ind_hc1,building_type)
    4020            surf_usm_h%rho_c_green(nzb_wall+2,m) = building_pars(ind_hc2,building_type)
    4021            surf_usm_h%rho_c_green(nzb_wall+3,m) = building_pars(ind_hc3,building_type)   
    4022            surf_usm_h%lambda_h_green(nzb_wall,m)   = building_pars(ind_tc1,building_type) 
    4023            surf_usm_h%lambda_h_green(nzb_wall+1,m) = building_pars(ind_tc1,building_type)
    4024            surf_usm_h%lambda_h_green(nzb_wall+2,m) = building_pars(ind_tc2,building_type)
    4025            surf_usm_h%lambda_h_green(nzb_wall+3,m) = building_pars(ind_tc3,building_type)
    4026            surf_usm_h%rho_c_window(nzb_wall,m)   = building_pars(ind_hc1,building_type) 
    4027            surf_usm_h%rho_c_window(nzb_wall+1,m) = building_pars(ind_hc1,building_type)
    4028            surf_usm_h%rho_c_window(nzb_wall+2,m) = building_pars(ind_hc2,building_type)
    4029            surf_usm_h%rho_c_window(nzb_wall+3,m) = building_pars(ind_hc3,building_type)   
    4030            surf_usm_h%lambda_h_window(nzb_wall,m)   = building_pars(ind_tc1,building_type) 
    4031            surf_usm_h%lambda_h_window(nzb_wall+1,m) = building_pars(ind_tc1,building_type)
    4032            surf_usm_h%lambda_h_window(nzb_wall+2,m) = building_pars(ind_tc2,building_type)
    4033            surf_usm_h%lambda_h_window(nzb_wall+3,m) = building_pars(ind_tc3,building_type)   
    4034 
    4035            surf_usm_h%target_temp_summer(m)  = building_pars(12,building_type)   
    4036            surf_usm_h%target_temp_winter(m)  = building_pars(13,building_type)   
     5003           surf_usm_h%frac(ind_wat_win,m)   = building_pars(ind_win_frac_r,building_type) 
     5004           surf_usm_h%lai(m)                = building_pars(ind_lai_r,building_type) 
     5005
     5006           surf_usm_h%rho_c_wall(nzb_wall,m)   = building_pars(ind_hc1_wall_r,building_type) 
     5007           surf_usm_h%rho_c_wall(nzb_wall+1,m) = building_pars(ind_hc1_wall_r,building_type)
     5008           surf_usm_h%rho_c_wall(nzb_wall+2,m) = building_pars(ind_hc2_wall_r,building_type)
     5009           surf_usm_h%rho_c_wall(nzb_wall+3,m) = building_pars(ind_hc3_wall_r,building_type)   
     5010           surf_usm_h%lambda_h(nzb_wall,m)   = building_pars(ind_tc1_wall_r,building_type) 
     5011           surf_usm_h%lambda_h(nzb_wall+1,m) = building_pars(ind_tc1_wall_r,building_type)
     5012           surf_usm_h%lambda_h(nzb_wall+2,m) = building_pars(ind_tc2_wall_r,building_type)
     5013           surf_usm_h%lambda_h(nzb_wall+3,m) = building_pars(ind_tc3_wall_r,building_type)   
     5014           surf_usm_h%rho_c_green(nzb_wall,m)   = rho_c_soil !building_pars(ind_hc1_wall_r,building_type) 
     5015           surf_usm_h%rho_c_green(nzb_wall+1,m) = rho_c_soil !building_pars(ind_hc1_wall_r,building_type)
     5016           surf_usm_h%rho_c_green(nzb_wall+2,m) = rho_c_soil !building_pars(ind_hc2_wall_r,building_type)
     5017           surf_usm_h%rho_c_green(nzb_wall+3,m) = rho_c_soil !building_pars(ind_hc3_wall_r,building_type)   
     5018           surf_usm_h%lambda_h_green(nzb_wall,m)   = lambda_h_green_sm !building_pars(ind_tc1_wall_r,building_type) 
     5019           surf_usm_h%lambda_h_green(nzb_wall+1,m) = lambda_h_green_sm !building_pars(ind_tc1_wall_r,building_type)
     5020           surf_usm_h%lambda_h_green(nzb_wall+2,m) = lambda_h_green_sm !building_pars(ind_tc2_wall_r,building_type)
     5021           surf_usm_h%lambda_h_green(nzb_wall+3,m) = lambda_h_green_sm !building_pars(ind_tc3_wall_r,building_type)
     5022           surf_usm_h%rho_c_window(nzb_wall,m)   = building_pars(ind_hc1_win_r,building_type) 
     5023           surf_usm_h%rho_c_window(nzb_wall+1,m) = building_pars(ind_hc1_win_r,building_type)
     5024           surf_usm_h%rho_c_window(nzb_wall+2,m) = building_pars(ind_hc2_win_r,building_type)
     5025           surf_usm_h%rho_c_window(nzb_wall+3,m) = building_pars(ind_hc3_win_r,building_type)   
     5026           surf_usm_h%lambda_h_window(nzb_wall,m)   = building_pars(ind_tc1_win_r,building_type) 
     5027           surf_usm_h%lambda_h_window(nzb_wall+1,m) = building_pars(ind_tc1_win_r,building_type)
     5028           surf_usm_h%lambda_h_window(nzb_wall+2,m) = building_pars(ind_tc2_win_r,building_type)
     5029           surf_usm_h%lambda_h_window(nzb_wall+3,m) = building_pars(ind_tc3_win_r,building_type)   
     5030
     5031           surf_usm_h%target_temp_summer(m)  = building_pars(117,building_type)   
     5032           surf_usm_h%target_temp_winter(m)  = building_pars(118,building_type)   
    40375033!
    40385034!--        emissivity of wall-, green- and window fraction
    4039            surf_usm_h%emissivity(ind_veg_wall,m)  = building_pars(ind_emis_wall,building_type)
    4040            surf_usm_h%emissivity(ind_pav_green,m) = building_pars(ind_emis_green,building_type)
    4041            surf_usm_h%emissivity(ind_wat_win,m)   = building_pars(ind_emis_win,building_type)
    4042 
    4043            surf_usm_h%transmissivity(m)      = building_pars(ind_trans,building_type)
     5035           surf_usm_h%emissivity(ind_veg_wall,m)  = building_pars(ind_emis_wall_r,building_type)
     5036           surf_usm_h%emissivity(ind_pav_green,m) = building_pars(ind_emis_green_r,building_type)
     5037           surf_usm_h%emissivity(ind_wat_win,m)   = building_pars(ind_emis_win_r,building_type)
     5038
     5039           surf_usm_h%transmissivity(m)      = building_pars(ind_trans_r,building_type)
    40445040
    40455041           surf_usm_h%z0(m)                  = building_pars(ind_z0,building_type)
     
    40485044!
    40495045!--        albedo type for wall fraction, green fraction, window fraction
    4050            surf_usm_h%albedo_type(ind_veg_wall,m)  = INT( building_pars(ind_alb_wall,building_type)  )
    4051            surf_usm_h%albedo_type(ind_pav_green,m) = INT( building_pars(ind_alb_green,building_type) )
    4052            surf_usm_h%albedo_type(ind_wat_win,m)   = INT( building_pars(ind_alb_win,building_type)   )
    4053 
    4054            surf_usm_h%zw(nzb_wall,m)         = building_pars(ind_thick_1,building_type)
    4055            surf_usm_h%zw(nzb_wall+1,m)       = building_pars(ind_thick_2,building_type)
    4056            surf_usm_h%zw(nzb_wall+2,m)       = building_pars(ind_thick_3,building_type)
    4057            surf_usm_h%zw(nzb_wall+3,m)       = building_pars(ind_thick_4,building_type)
     5046           surf_usm_h%albedo_type(ind_veg_wall,m)  = INT( building_pars(ind_alb_wall_r,building_type)  )
     5047           surf_usm_h%albedo_type(ind_pav_green,m) = INT( building_pars(ind_alb_green_r,building_type) )
     5048           surf_usm_h%albedo_type(ind_wat_win,m)   = INT( building_pars(ind_alb_win_r,building_type)   )
     5049
     5050           surf_usm_h%zw(nzb_wall,m)         = building_pars(ind_thick_1_wall_r,building_type)
     5051           surf_usm_h%zw(nzb_wall+1,m)       = building_pars(ind_thick_2_wall_r,building_type)
     5052           surf_usm_h%zw(nzb_wall+2,m)       = building_pars(ind_thick_3_wall_r,building_type)
     5053           surf_usm_h%zw(nzb_wall+3,m)       = building_pars(ind_thick_4_wall_r,building_type)
    40585054           
    4059            surf_usm_h%zw_green(nzb_wall,m)         = building_pars(ind_thick_1,building_type)
    4060            surf_usm_h%zw_green(nzb_wall+1,m)       = building_pars(ind_thick_2,building_type)
    4061            surf_usm_h%zw_green(nzb_wall+2,m)       = building_pars(ind_thick_3,building_type)
    4062            surf_usm_h%zw_green(nzb_wall+3,m)       = building_pars(ind_thick_4,building_type)
     5055           surf_usm_h%zw_green(nzb_wall,m)         = building_pars(ind_thick_1_wall_r,building_type)
     5056           surf_usm_h%zw_green(nzb_wall+1,m)       = building_pars(ind_thick_2_wall_r,building_type)
     5057           surf_usm_h%zw_green(nzb_wall+2,m)       = building_pars(ind_thick_3_wall_r,building_type)
     5058           surf_usm_h%zw_green(nzb_wall+3,m)       = building_pars(ind_thick_4_wall_r,building_type)
    40635059           
    4064            surf_usm_h%zw_window(nzb_wall,m)         = building_pars(ind_thick_1,building_type)
    4065            surf_usm_h%zw_window(nzb_wall+1,m)       = building_pars(ind_thick_2,building_type)
    4066            surf_usm_h%zw_window(nzb_wall+2,m)       = building_pars(ind_thick_3,building_type)
    4067            surf_usm_h%zw_window(nzb_wall+3,m)       = building_pars(ind_thick_4,building_type)
    4068 
    4069            surf_usm_h%c_surface(m)           = building_pars(45,building_type) 
    4070            surf_usm_h%lambda_surf(m)         = building_pars(46,building_type) 
    4071            surf_usm_h%c_surface_green(m)     = building_pars(45,building_type) 
    4072            surf_usm_h%lambda_surf_green(m)   = building_pars(46,building_type) 
    4073            surf_usm_h%c_surface_window(m)    = building_pars(45,building_type) 
    4074            surf_usm_h%lambda_surf_window(m)  = building_pars(46,building_type) 
     5060           surf_usm_h%zw_window(nzb_wall,m)         = building_pars(ind_thick_1_win_r,building_type)
     5061           surf_usm_h%zw_window(nzb_wall+1,m)       = building_pars(ind_thick_2_win_r,building_type)
     5062           surf_usm_h%zw_window(nzb_wall+2,m)       = building_pars(ind_thick_3_win_r,building_type)
     5063           surf_usm_h%zw_window(nzb_wall+3,m)       = building_pars(ind_thick_4_win_r,building_type)
     5064
     5065           surf_usm_h%c_surface(m)           = building_pars(0,building_type) 
     5066           surf_usm_h%lambda_surf(m)         = building_pars(3,building_type) 
     5067           surf_usm_h%c_surface_green(m)     = building_pars(2,building_type) 
     5068           surf_usm_h%lambda_surf_green(m)   = building_pars(5,building_type) 
     5069           surf_usm_h%c_surface_window(m)    = building_pars(1,building_type) 
     5070           surf_usm_h%lambda_surf_window(m)  = building_pars(4,building_type) 
     5071           
     5072           surf_usm_h%green_type_roof(m)     = building_pars(ind_green_type_roof,building_type)
    40755073
    40765074        ENDDO
     
    40825080!
    40835081!--           In order to distinguish between ground floor level and
    4084 !--           above-ground-floor level surfaces, set input indices.
     5082!--           above-ground-floor level surfaces, set input indices.
     5083              ind_alb_green    = MERGE( ind_alb_green_gfl,    ind_alb_green_agfl,    &
     5084                                        surf_usm_v(l)%ground_level(m) )
     5085              ind_alb_wall     = MERGE( ind_alb_wall_gfl,     ind_alb_wall_agfl,     &
     5086                                        surf_usm_v(l)%ground_level(m) )
     5087              ind_alb_win      = MERGE( ind_alb_win_gfl,      ind_alb_win_agfl,      &
     5088                                        surf_usm_v(l)%ground_level(m) )
    40855089              ind_wall_frac    = MERGE( ind_wall_frac_gfl,    ind_wall_frac_agfl,    &
    40865090                                        surf_usm_v(l)%ground_level(m) )
     
    40975101              ind_hc1          = MERGE( ind_hc1_gfl,          ind_hc1_agfl,          &
    40985102                                        surf_usm_v(l)%ground_level(m) )
     5103              ind_hc1_win      = MERGE( ind_hc1_win_gfl,      ind_hc1_win_agfl,      &
     5104                                        surf_usm_v(l)%ground_level(m) )
    40995105              ind_hc2          = MERGE( ind_hc2_gfl,          ind_hc2_agfl,          &
     5106                                        surf_usm_v(l)%ground_level(m) )
     5107              ind_hc2_win      = MERGE( ind_hc2_win_gfl,      ind_hc2_win_agfl,      &
    41005108                                        surf_usm_v(l)%ground_level(m) )
    41015109              ind_hc3          = MERGE( ind_hc3_gfl,          ind_hc3_agfl,          &
    41025110                                        surf_usm_v(l)%ground_level(m) )
     5111              ind_hc3_win      = MERGE( ind_hc3_win_gfl,      ind_hc3_win_agfl,      &
     5112                                        surf_usm_v(l)%ground_level(m) )
    41035113              ind_tc1          = MERGE( ind_tc1_gfl,          ind_tc1_agfl,          &
     5114                                        surf_usm_v(l)%ground_level(m) )
     5115              ind_tc1_win      = MERGE( ind_tc1_win_gfl,      ind_tc1_win_agfl,      &
    41045116                                        surf_usm_v(l)%ground_level(m) )
    41055117              ind_tc2          = MERGE( ind_tc2_gfl,          ind_tc2_agfl,          &
    41065118                                        surf_usm_v(l)%ground_level(m) )
     5119              ind_tc2_win      = MERGE( ind_tc2_win_gfl,      ind_tc2_win_agfl,      &
     5120                                        surf_usm_v(l)%ground_level(m) )
    41075121              ind_tc3          = MERGE( ind_tc3_gfl,          ind_tc3_agfl,          &
     5122                                        surf_usm_v(l)%ground_level(m) )
     5123              ind_tc3_win      = MERGE( ind_tc3_win_gfl,      ind_tc3_win_agfl,      &
     5124                                        surf_usm_v(l)%ground_level(m) )
     5125              ind_thick_1      = MERGE( ind_thick_1_gfl,      ind_thick_1_agfl,      &
     5126                                        surf_usm_v(l)%ground_level(m) )
     5127              ind_thick_1_win  = MERGE( ind_thick_1_win_gfl,  ind_thick_1_win_agfl,  &
     5128                                        surf_usm_v(l)%ground_level(m) )
     5129              ind_thick_2      = MERGE( ind_thick_2_gfl,      ind_thick_2_agfl,      &
     5130                                        surf_usm_v(l)%ground_level(m) )
     5131              ind_thick_2_win  = MERGE( ind_thick_2_win_gfl,  ind_thick_2_win_agfl,  &
     5132                                        surf_usm_v(l)%ground_level(m) )
     5133              ind_thick_3      = MERGE( ind_thick_3_gfl,      ind_thick_3_agfl,      &
     5134                                        surf_usm_v(l)%ground_level(m) )
     5135              ind_thick_3_win  = MERGE( ind_thick_3_win_gfl,  ind_thick_3_win_agfl,  &
     5136                                        surf_usm_v(l)%ground_level(m) )
     5137              ind_thick_4      = MERGE( ind_thick_4_gfl,      ind_thick_4_agfl,      &
     5138                                        surf_usm_v(l)%ground_level(m) )
     5139              ind_thick_4_win  = MERGE( ind_thick_4_win_gfl,  ind_thick_4_win_agfl,  &
    41085140                                        surf_usm_v(l)%ground_level(m) )
    41095141              ind_emis_wall    = MERGE( ind_emis_wall_gfl,    ind_emis_wall_agfl,    &
     
    41355167              surf_usm_v(l)%rho_c_wall(nzb_wall+3,m) = building_pars(ind_hc3,building_type)   
    41365168             
    4137               surf_usm_v(l)%rho_c_green(nzb_wall,m)   = building_pars(ind_hc1,building_type) 
    4138               surf_usm_v(l)%rho_c_green(nzb_wall+1,m) = building_pars(ind_hc1,building_type)
    4139               surf_usm_v(l)%rho_c_green(nzb_wall+2,m) = building_pars(ind_hc2,building_type)
    4140               surf_usm_v(l)%rho_c_green(nzb_wall+3,m) = building_pars(ind_hc3,building_type)   
     5169              surf_usm_v(l)%rho_c_green(nzb_wall,m)   = rho_c_soil !building_pars(ind_hc1,building_type) 
     5170              surf_usm_v(l)%rho_c_green(nzb_wall+1,m) = rho_c_soil !building_pars(ind_hc1,building_type)
     5171              surf_usm_v(l)%rho_c_green(nzb_wall+2,m) = rho_c_soil !building_pars(ind_hc2,building_type)
     5172              surf_usm_v(l)%rho_c_green(nzb_wall+3,m) = rho_c_soil !building_pars(ind_hc3,building_type)   
    41415173             
    4142               surf_usm_v(l)%rho_c_window(nzb_wall,m)   = building_pars(ind_hc1,building_type) 
    4143               surf_usm_v(l)%rho_c_window(nzb_wall+1,m) = building_pars(ind_hc1,building_type)
    4144               surf_usm_v(l)%rho_c_window(nzb_wall+2,m) = building_pars(ind_hc2,building_type)
    4145               surf_usm_v(l)%rho_c_window(nzb_wall+3,m) = building_pars(ind_hc3,building_type)   
     5174              surf_usm_v(l)%rho_c_window(nzb_wall,m)   = building_pars(ind_hc1_win,building_type) 
     5175              surf_usm_v(l)%rho_c_window(nzb_wall+1,m) = building_pars(ind_hc1_win,building_type)
     5176              surf_usm_v(l)%rho_c_window(nzb_wall+2,m) = building_pars(ind_hc2_win,building_type)
     5177              surf_usm_v(l)%rho_c_window(nzb_wall+3,m) = building_pars(ind_hc3_win,building_type)   
    41465178
    41475179              surf_usm_v(l)%lambda_h(nzb_wall,m)   = building_pars(ind_tc1,building_type) 
     
    41505182              surf_usm_v(l)%lambda_h(nzb_wall+3,m) = building_pars(ind_tc3,building_type)   
    41515183             
    4152               surf_usm_v(l)%lambda_h_green(nzb_wall,m)   = building_pars(ind_tc1,building_type) 
    4153               surf_usm_v(l)%lambda_h_green(nzb_wall+1,m) = building_pars(ind_tc1,building_type)
    4154               surf_usm_v(l)%lambda_h_green(nzb_wall+2,m) = building_pars(ind_tc2,building_type)
    4155               surf_usm_v(l)%lambda_h_green(nzb_wall+3,m) = building_pars(ind_tc3,building_type)   
    4156 
    4157               surf_usm_v(l)%lambda_h_window(nzb_wall,m)   = building_pars(ind_tc1,building_type) 
    4158               surf_usm_v(l)%lambda_h_window(nzb_wall+1,m) = building_pars(ind_tc1,building_type)
    4159               surf_usm_v(l)%lambda_h_window(nzb_wall+2,m) = building_pars(ind_tc2,building_type)
    4160               surf_usm_v(l)%lambda_h_window(nzb_wall+3,m) = building_pars(ind_tc3,building_type)   
    4161 
    4162               surf_usm_v(l)%target_temp_summer(m)  = building_pars(12,building_type)   
    4163               surf_usm_v(l)%target_temp_winter(m)  = building_pars(13,building_type)   
     5184              surf_usm_v(l)%lambda_h_green(nzb_wall,m)   = lambda_h_green_sm !building_pars(ind_tc1,building_type) 
     5185              surf_usm_v(l)%lambda_h_green(nzb_wall+1,m) = lambda_h_green_sm !building_pars(ind_tc1,building_type)
     5186              surf_usm_v(l)%lambda_h_green(nzb_wall+2,m) = lambda_h_green_sm !building_pars(ind_tc2,building_type)
     5187              surf_usm_v(l)%lambda_h_green(nzb_wall+3,m) = lambda_h_green_sm !building_pars(ind_tc3,building_type)   
     5188
     5189              surf_usm_v(l)%lambda_h_window(nzb_wall,m)   = building_pars(ind_tc1_win,building_type) 
     5190              surf_usm_v(l)%lambda_h_window(nzb_wall+1,m) = building_pars(ind_tc1_win,building_type)
     5191              surf_usm_v(l)%lambda_h_window(nzb_wall+2,m) = building_pars(ind_tc2_win,building_type)
     5192              surf_usm_v(l)%lambda_h_window(nzb_wall+3,m) = building_pars(ind_tc3_win,building_type)   
     5193
     5194              surf_usm_v(l)%target_temp_summer(m)  = building_pars(117,building_type)   
     5195              surf_usm_v(l)%target_temp_winter(m)  = building_pars(118,building_type)   
    41645196!
    41655197!--           emissivity of wall-, green- and window fraction
     
    41885220              surf_usm_v(l)%zw_green(nzb_wall+3,m)       = building_pars(ind_thick_4,building_type)
    41895221
    4190               surf_usm_v(l)%zw_window(nzb_wall,m)         = building_pars(ind_thick_1,building_type)
    4191               surf_usm_v(l)%zw_window(nzb_wall+1,m)       = building_pars(ind_thick_2,building_type)
    4192               surf_usm_v(l)%zw_window(nzb_wall+2,m)       = building_pars(ind_thick_3,building_type)
    4193               surf_usm_v(l)%zw_window(nzb_wall+3,m)       = building_pars(ind_thick_4,building_type)
    4194 
    4195               surf_usm_v(l)%c_surface(m)           = building_pars(45,building_type) 
    4196               surf_usm_v(l)%lambda_surf(m)         = building_pars(46,building_type)
    4197               surf_usm_v(l)%c_surface_green(m)     = building_pars(45,building_type) 
    4198               surf_usm_v(l)%lambda_surf_green(m)   = building_pars(46,building_type)
    4199               surf_usm_v(l)%c_surface_window(m)    = building_pars(45,building_type) 
    4200               surf_usm_v(l)%lambda_surf_window(m)  = building_pars(46,building_type)
     5222              surf_usm_v(l)%zw_window(nzb_wall,m)         = building_pars(ind_thick_1_win,building_type)
     5223              surf_usm_v(l)%zw_window(nzb_wall+1,m)       = building_pars(ind_thick_2_win,building_type)
     5224              surf_usm_v(l)%zw_window(nzb_wall+2,m)       = building_pars(ind_thick_3_win,building_type)
     5225              surf_usm_v(l)%zw_window(nzb_wall+3,m)       = building_pars(ind_thick_4_win,building_type)
     5226
     5227              surf_usm_v(l)%c_surface(m)           = building_pars(0,building_type) 
     5228              surf_usm_v(l)%lambda_surf(m)         = building_pars(3,building_type)
     5229              surf_usm_v(l)%c_surface_green(m)     = building_pars(2,building_type) 
     5230              surf_usm_v(l)%lambda_surf_green(m)   = building_pars(5,building_type)
     5231              surf_usm_v(l)%c_surface_window(m)    = building_pars(1,building_type) 
     5232              surf_usm_v(l)%lambda_surf_window(m)  = building_pars(4,building_type)
    42015233
    42025234           ENDDO
     
    42155247!
    42165248!--              In order to distinguish between ground floor level and
    4217 !--              above-ground-floor level surfaces, set input indices.
    4218                  ind_wall_frac    = MERGE( ind_wall_frac_gfl,    ind_wall_frac_agfl,    &
    4219                                            surf_usm_h%ground_level(m) )
    4220                  ind_win_frac     = MERGE( ind_win_frac_gfl,     ind_win_frac_agfl,     &
    4221                                            surf_usm_h%ground_level(m) )
    4222                  ind_green_frac_w = MERGE( ind_green_frac_w_gfl, ind_green_frac_w_agfl, &
    4223                                            surf_usm_h%ground_level(m) )
     5249!--              above-ground-floor level surfaces, set input indices.
     5250
    42245251                 ind_green_frac_r = MERGE( ind_green_frac_r_gfl, ind_green_frac_r_agfl, &
    42255252                                           surf_usm_h%ground_level(m) )
    42265253                 ind_lai_r        = MERGE( ind_lai_r_gfl,        ind_lai_r_agfl,        &
    4227                                            surf_usm_h%ground_level(m) )
    4228                  ind_lai_w        = MERGE( ind_lai_w_gfl,        ind_lai_w_agfl,        &
    4229                                            surf_usm_h%ground_level(m) )
    4230                  ind_hc1          = MERGE( ind_hc1_gfl,          ind_hc1_agfl,          &
    4231                                            surf_usm_h%ground_level(m) )
    4232                  ind_hc2          = MERGE( ind_hc2_gfl,          ind_hc2_agfl,          &
    4233                                            surf_usm_h%ground_level(m) )
    4234                  ind_hc3          = MERGE( ind_hc3_gfl,          ind_hc3_agfl,          &
    4235                                            surf_usm_h%ground_level(m) )
    4236                  ind_tc1          = MERGE( ind_tc1_gfl,          ind_tc1_agfl,          &
    4237                                            surf_usm_h%ground_level(m) )
    4238                  ind_tc2          = MERGE( ind_tc2_gfl,          ind_tc2_agfl,          &
    4239                                            surf_usm_h%ground_level(m) )
    4240                  ind_tc3          = MERGE( ind_tc3_gfl,          ind_tc3_agfl,          &
    4241                                            surf_usm_h%ground_level(m) )
    4242                  ind_emis_wall    = MERGE( ind_emis_wall_gfl,    ind_emis_wall_agfl,    &
    4243                                            surf_usm_h%ground_level(m) )
    4244                  ind_emis_green   = MERGE( ind_emis_green_gfl,   ind_emis_green_agfl,   &
    4245                                            surf_usm_h%ground_level(m) )
    4246                  ind_emis_win     = MERGE( ind_emis_win_gfl,     ind_emis_win_agfl,     &
    4247                                            surf_usm_h%ground_level(m) )
    4248                  ind_trans        = MERGE( ind_trans_gfl,        ind_trans_agfl,        &
    42495254                                           surf_usm_h%ground_level(m) )
    42505255                 ind_z0           = MERGE( ind_z0_gfl,           ind_z0_agfl,           &
     
    42585263!
    42595264!--              Initialize relatvie wall- (0), green- (1) and window (2) fractions
    4260                  surf_usm_h%frac(ind_veg_wall,m)  = building_pars(ind_wall_frac,st)   
     5265                 surf_usm_h%frac(ind_veg_wall,m)  = building_pars(ind_wall_frac_r,st)   
    42615266                 surf_usm_h%frac(ind_pav_green,m) = building_pars(ind_green_frac_r,st) 
    4262                  surf_usm_h%frac(ind_wat_win,m)   = building_pars(ind_win_frac,st) 
    4263                  surf_usm_h%lai(m)                = building_pars(ind_green_frac_r,st) 
    4264 
    4265                  surf_usm_h%rho_c_wall(nzb_wall,m)   = building_pars(ind_hc1,st) 
    4266                  surf_usm_h%rho_c_wall(nzb_wall+1,m) = building_pars(ind_hc1,st)
    4267                  surf_usm_h%rho_c_wall(nzb_wall+2,m) = building_pars(ind_hc2,st)
    4268                  surf_usm_h%rho_c_wall(nzb_wall+3,m) = building_pars(ind_hc3,st)   
    4269                  surf_usm_h%lambda_h(nzb_wall,m)   = building_pars(ind_tc1,st) 
    4270                  surf_usm_h%lambda_h(nzb_wall+1,m) = building_pars(ind_tc1,st)
    4271                  surf_usm_h%lambda_h(nzb_wall+2,m) = building_pars(ind_tc2,st)
    4272                  surf_usm_h%lambda_h(nzb_wall+3,m) = building_pars(ind_tc3,st)   
     5267                 surf_usm_h%frac(ind_wat_win,m)   = building_pars(ind_win_frac_r,st) 
     5268                 surf_usm_h%lai(m)                = building_pars(ind_lai_r,st) 
     5269
     5270                 surf_usm_h%rho_c_wall(nzb_wall,m)   = building_pars(ind_hc1_wall_r,st) 
     5271                 surf_usm_h%rho_c_wall(nzb_wall+1,m) = building_pars(ind_hc1_wall_r,st)
     5272                 surf_usm_h%rho_c_wall(nzb_wall+2,m) = building_pars(ind_hc2_wall_r,st)
     5273                 surf_usm_h%rho_c_wall(nzb_wall+3,m) = building_pars(ind_hc3_wall_r,st)   
     5274                 surf_usm_h%lambda_h(nzb_wall,m)   = building_pars(ind_tc1_wall_r,st) 
     5275                 surf_usm_h%lambda_h(nzb_wall+1,m) = building_pars(ind_tc1_wall_r,st)
     5276                 surf_usm_h%lambda_h(nzb_wall+2,m) = building_pars(ind_tc2_wall_r,st)
     5277                 surf_usm_h%lambda_h(nzb_wall+3,m) = building_pars(ind_tc3_wall_r,st)   
    42735278                 
    4274                  surf_usm_h%rho_c_green(nzb_wall,m)   = building_pars(ind_hc1,st) 
    4275                  surf_usm_h%rho_c_green(nzb_wall+1,m) = building_pars(ind_hc1,st)
    4276                  surf_usm_h%rho_c_green(nzb_wall+2,m) = building_pars(ind_hc2,st)
    4277                  surf_usm_h%rho_c_green(nzb_wall+3,m) = building_pars(ind_hc3,st)   
    4278                  surf_usm_h%lambda_h_green(nzb_wall,m)   = building_pars(ind_tc1,st) 
    4279                  surf_usm_h%lambda_h_green(nzb_wall+1,m) = building_pars(ind_tc1,st)
    4280                  surf_usm_h%lambda_h_green(nzb_wall+2,m) = building_pars(ind_tc2,st)
    4281                  surf_usm_h%lambda_h_green(nzb_wall+3,m) = building_pars(ind_tc3,st)   
     5279                 surf_usm_h%rho_c_green(nzb_wall,m)   = rho_c_soil !building_pars(ind_hc1_wall_r,st) 
     5280                 surf_usm_h%rho_c_green(nzb_wall+1,m) = rho_c_soil !building_pars(ind_hc1_wall_r,st)
     5281                 surf_usm_h%rho_c_green(nzb_wall+2,m) = rho_c_soil !building_pars(ind_hc2_wall_r,st)
     5282                 surf_usm_h%rho_c_green(nzb_wall+3,m) = rho_c_soil !building_pars(ind_hc3_wall_r,st)   
     5283                 surf_usm_h%lambda_h_green(nzb_wall,m)   = lambda_h_green_sm !building_pars(ind_tc1_wall_r,st) 
     5284                 surf_usm_h%lambda_h_green(nzb_wall+1,m) = lambda_h_green_sm !building_pars(ind_tc1_wall_r,st)
     5285                 surf_usm_h%lambda_h_green(nzb_wall+2,m) = lambda_h_green_sm !building_pars(ind_tc2_wall_r,st)
     5286                 surf_usm_h%lambda_h_green(nzb_wall+3,m) = lambda_h_green_sm !building_pars(ind_tc3_wall_r,st)   
    42825287               
    4283                  surf_usm_h%rho_c_window(nzb_wall,m)   = building_pars(ind_hc1,st) 
    4284                  surf_usm_h%rho_c_window(nzb_wall+1,m) = building_pars(ind_hc1,st)
    4285                  surf_usm_h%rho_c_window(nzb_wall+2,m) = building_pars(ind_hc2,st)
    4286                  surf_usm_h%rho_c_window(nzb_wall+3,m) = building_pars(ind_hc3,st)   
    4287                  surf_usm_h%lambda_h_window(nzb_wall,m)   = building_pars(ind_tc1,st) 
    4288                  surf_usm_h%lambda_h_window(nzb_wall+1,m) = building_pars(ind_tc1,st)
    4289                  surf_usm_h%lambda_h_window(nzb_wall+2,m) = building_pars(ind_tc2,st)
    4290                  surf_usm_h%lambda_h_window(nzb_wall+3,m) = building_pars(ind_tc3,st)   
    4291 
    4292                  surf_usm_h%target_temp_summer(m)  = building_pars(12,st)   
    4293                  surf_usm_h%target_temp_winter(m)  = building_pars(13,st)   
     5288                 surf_usm_h%rho_c_window(nzb_wall,m)   = building_pars(ind_hc1_win_r,st) 
     5289                 surf_usm_h%rho_c_window(nzb_wall+1,m) = building_pars(ind_hc1_win_r,st)
     5290                 surf_usm_h%rho_c_window(nzb_wall+2,m) = building_pars(ind_hc2_win_r,st)
     5291                 surf_usm_h%rho_c_window(nzb_wall+3,m) = building_pars(ind_hc3_win_r,st)   
     5292                 surf_usm_h%lambda_h_window(nzb_wall,m)   = building_pars(ind_tc1_win_r,st) 
     5293                 surf_usm_h%lambda_h_window(nzb_wall+1,m) = building_pars(ind_tc1_win_r,st)
     5294                 surf_usm_h%lambda_h_window(nzb_wall+2,m) = building_pars(ind_tc2_win_r,st)
     5295                 surf_usm_h%lambda_h_window(nzb_wall+3,m) = building_pars(ind_tc3_win_r,st)   
     5296
     5297                 surf_usm_h%target_temp_summer(m)  = building_pars(117,st)   
     5298                 surf_usm_h%target_temp_winter(m)  = building_pars(118,st)   
    42945299!
    42955300!--              emissivity of wall-, green- and window fraction
    4296                  surf_usm_h%emissivity(ind_veg_wall,m)  = building_pars(ind_emis_wall,st)
    4297                  surf_usm_h%emissivity(ind_pav_green,m) = building_pars(ind_emis_green,st)
    4298                  surf_usm_h%emissivity(ind_wat_win,m)   = building_pars(ind_emis_win,st)
    4299 
    4300                  surf_usm_h%transmissivity(m)      = building_pars(ind_trans,st)
     5301                 surf_usm_h%emissivity(ind_veg_wall,m)  = building_pars(ind_emis_wall_r,st)
     5302                 surf_usm_h%emissivity(ind_pav_green,m) = building_pars(ind_emis_green_r,st)
     5303                 surf_usm_h%emissivity(ind_wat_win,m)   = building_pars(ind_emis_win_r,st)
     5304
     5305                 surf_usm_h%transmissivity(m)      = building_pars(ind_trans_r,st)
    43015306
    43025307                 surf_usm_h%z0(m)                  = building_pars(ind_z0,st)
     
    43055310!
    43065311!--              albedo type for wall fraction, green fraction, window fraction
    4307                  surf_usm_h%albedo_type(ind_veg_wall,m)  = INT( building_pars(ind_alb_wall,st) )
    4308                  surf_usm_h%albedo_type(ind_pav_green,m) = INT( building_pars(ind_alb_green,st) )
    4309                  surf_usm_h%albedo_type(ind_wat_win,m)   = INT( building_pars(ind_alb_win,st) )
    4310 
    4311                  surf_usm_h%zw(nzb_wall,m)         = building_pars(ind_thick_1,st)
    4312                  surf_usm_h%zw(nzb_wall+1,m)       = building_pars(ind_thick_2,st)
    4313                  surf_usm_h%zw(nzb_wall+2,m)       = building_pars(ind_thick_3,st)
    4314                  surf_usm_h%zw(nzb_wall+3,m)       = building_pars(ind_thick_4,st)
     5312                 surf_usm_h%albedo_type(ind_veg_wall,m)  = INT( building_pars(ind_alb_wall_r,st) )
     5313                 surf_usm_h%albedo_type(ind_pav_green,m) = INT( building_pars(ind_alb_green_r,st) )
     5314                 surf_usm_h%albedo_type(ind_wat_win,m)   = INT( building_pars(ind_alb_win_r,st) )
     5315
     5316                 surf_usm_h%zw(nzb_wall,m)         = building_pars(ind_thick_1_wall_r,st)
     5317                 surf_usm_h%zw(nzb_wall+1,m)       = building_pars(ind_thick_2_wall_r,st)
     5318                 surf_usm_h%zw(nzb_wall+2,m)       = building_pars(ind_thick_3_wall_r,st)
     5319                 surf_usm_h%zw(nzb_wall+3,m)       = building_pars(ind_thick_4_wall_r,st)
    43155320                 
    4316                  surf_usm_h%zw_green(nzb_wall,m)         = building_pars(ind_thick_1,st)
    4317                  surf_usm_h%zw_green(nzb_wall+1,m)       = building_pars(ind_thick_2,st)
    4318                  surf_usm_h%zw_green(nzb_wall+2,m)       = building_pars(ind_thick_3,st)
    4319                  surf_usm_h%zw_green(nzb_wall+3,m)       = building_pars(ind_thick_4,st)
    4320 
    4321                  surf_usm_h%zw_window(nzb_wall,m)         = building_pars(ind_thick_1,st)
    4322                  surf_usm_h%zw_window(nzb_wall+1,m)       = building_pars(ind_thick_2,st)
    4323                  surf_usm_h%zw_window(nzb_wall+2,m)       = building_pars(ind_thick_3,st)
    4324                  surf_usm_h%zw_window(nzb_wall+3,m)       = building_pars(ind_thick_4,st)
    4325 
    4326                  surf_usm_h%c_surface(m)           = building_pars(45,st) 
    4327                  surf_usm_h%lambda_surf(m)         = building_pars(46,st)
    4328                  surf_usm_h%c_surface_green(m)     = building_pars(45,st) 
    4329                  surf_usm_h%lambda_surf_green(m)   = building_pars(46,st)
    4330                  surf_usm_h%c_surface_window(m)    = building_pars(45,st) 
    4331                  surf_usm_h%lambda_surf_window(m)  = building_pars(46,st)
     5321                 surf_usm_h%zw_green(nzb_wall,m)         = building_pars(ind_thick_1_wall_r,st)
     5322                 surf_usm_h%zw_green(nzb_wall+1,m)       = building_pars(ind_thick_2_wall_r,st)
     5323                 surf_usm_h%zw_green(nzb_wall+2,m)       = building_pars(ind_thick_3_wall_r,st)
     5324                 surf_usm_h%zw_green(nzb_wall+3,m)       = building_pars(ind_thick_4_wall_r,st)
     5325
     5326                 surf_usm_h%zw_window(nzb_wall,m)         = building_pars(ind_thick_1_win_r,st)
     5327                 surf_usm_h%zw_window(nzb_wall+1,m)       = building_pars(ind_thick_2_win_r,st)
     5328                 surf_usm_h%zw_window(nzb_wall+2,m)       = building_pars(ind_thick_3_win_r,st)
     5329                 surf_usm_h%zw_window(nzb_wall+3,m)       = building_pars(ind_thick_4_win_r,st)
     5330
     5331                 surf_usm_h%c_surface(m)           = building_pars(0,st) 
     5332                 surf_usm_h%lambda_surf(m)         = building_pars(3,st)
     5333                 surf_usm_h%c_surface_green(m)     = building_pars(2,st) 
     5334                 surf_usm_h%lambda_surf_green(m)   = building_pars(5,st)
     5335                 surf_usm_h%c_surface_window(m)    = building_pars(1,st) 
     5336                 surf_usm_h%lambda_surf_window(m)  = building_pars(4,st)
     5337                 
     5338                 surf_usm_h%green_type_roof(m)     = building_pars(ind_green_type_roof,st)
    43325339
    43335340              ENDIF
     
    43465353!
    43475354!--                 In order to distinguish between ground floor level and
    4348 !--                 above-ground-floor level surfaces, set input indices.
     5355!--                 above-ground-floor level surfaces, set input indices.
     5356                    ind_alb_green    = MERGE( ind_alb_green_gfl,    ind_alb_green_agfl,    &
     5357                                              surf_usm_v(l)%ground_level(m) )
     5358                    ind_alb_wall     = MERGE( ind_alb_wall_gfl,     ind_alb_wall_agfl,     &
     5359                                              surf_usm_v(l)%ground_level(m) )
     5360                    ind_alb_win      = MERGE( ind_alb_win_gfl,      ind_alb_win_agfl,      &
     5361                                              surf_usm_v(l)%ground_level(m) )
    43495362                    ind_wall_frac    = MERGE( ind_wall_frac_gfl,    ind_wall_frac_agfl,    &
    43505363                                              surf_usm_v(l)%ground_level(m) )
     
    43615374                    ind_hc1          = MERGE( ind_hc1_gfl,          ind_hc1_agfl,          &
    43625375                                              surf_usm_v(l)%ground_level(m) )
     5376                    ind_hc1_win      = MERGE( ind_hc1_win_gfl,      ind_hc1_win_agfl,      &
     5377                                              surf_usm_v(l)%ground_level(m) )
    43635378                    ind_hc2          = MERGE( ind_hc2_gfl,          ind_hc2_agfl,          &
     5379                                              surf_usm_v(l)%ground_level(m) )
     5380                    ind_hc2_win      = MERGE( ind_hc2_win_gfl,      ind_hc2_win_agfl,      &
    43645381                                              surf_usm_v(l)%ground_level(m) )
    43655382                    ind_hc3          = MERGE( ind_hc3_gfl,          ind_hc3_agfl,          &
    43665383                                              surf_usm_v(l)%ground_level(m) )
     5384                    ind_hc3_win      = MERGE( ind_hc3_win_gfl,      ind_hc3_win_agfl,      &
     5385                                              surf_usm_v(l)%ground_level(m) )
    43675386                    ind_tc1          = MERGE( ind_tc1_gfl,          ind_tc1_agfl,          &
     5387                                              surf_usm_v(l)%ground_level(m) )
     5388                    ind_tc1_win      = MERGE( ind_tc1_win_gfl,      ind_tc1_win_agfl,      &
    43685389                                              surf_usm_v(l)%ground_level(m) )
    43695390                    ind_tc2          = MERGE( ind_tc2_gfl,          ind_tc2_agfl,          &
    43705391                                              surf_usm_v(l)%ground_level(m) )
     5392                    ind_tc2_win      = MERGE( ind_tc2_win_gfl,      ind_tc2_win_agfl,      &
     5393                                              surf_usm_v(l)%ground_level(m) )
    43715394                    ind_tc3          = MERGE( ind_tc3_gfl,          ind_tc3_agfl,          &
     5395                                              surf_usm_v(l)%ground_level(m) )
     5396                    ind_tc3_win      = MERGE( ind_tc3_win_gfl,      ind_tc3_win_agfl,      &
     5397                                              surf_usm_v(l)%ground_level(m) )
     5398                    ind_thick_1      = MERGE( ind_thick_1_gfl,      ind_thick_1_agfl,      &
     5399                                              surf_usm_v(l)%ground_level(m) )
     5400                    ind_thick_1_win  = MERGE( ind_thick_1_win_gfl,  ind_thick_1_win_agfl,  &
     5401                                              surf_usm_v(l)%ground_level(m) )
     5402                    ind_thick_2      = MERGE( ind_thick_2_gfl,      ind_thick_2_agfl,      &
     5403                                              surf_usm_v(l)%ground_level(m) )
     5404                    ind_thick_2_win  = MERGE( ind_thick_2_win_gfl,  ind_thick_2_win_agfl,  &
     5405                                              surf_usm_v(l)%ground_level(m) )
     5406                    ind_thick_3      = MERGE( ind_thick_3_gfl,      ind_thick_3_agfl,      &
     5407                                              surf_usm_v(l)%ground_level(m) )
     5408                    ind_thick_3_win  = MERGE( ind_thick_3_win_gfl,  ind_thick_3_win_agfl,  &
     5409                                              surf_usm_v(l)%ground_level(m) )
     5410                    ind_thick_4      = MERGE( ind_thick_4_gfl,      ind_thick_4_agfl,      &
     5411                                              surf_usm_v(l)%ground_level(m) )
     5412                    ind_thick_4_win  = MERGE( ind_thick_4_win_gfl,  ind_thick_4_win_agfl,  &
    43725413                                              surf_usm_v(l)%ground_level(m) )
    43735414                    ind_emis_wall    = MERGE( ind_emis_wall_gfl,    ind_emis_wall_agfl,    &
     
    43785419                                              surf_usm_v(l)%ground_level(m) )
    43795420                    ind_trans        = MERGE( ind_trans_gfl,       ind_trans_agfl,         &
    4380                                         surf_usm_v(l)%ground_level(m) )
     5421                                            surf_usm_v(l)%ground_level(m) )
    43815422                    ind_z0           = MERGE( ind_z0_gfl,           ind_z0_agfl,           &
    43825423                                              surf_usm_v(l)%ground_level(m) )
     
    43995440                    surf_usm_v(l)%rho_c_wall(nzb_wall+3,m) = building_pars(ind_hc3,st)
    44005441                   
    4401                     surf_usm_v(l)%rho_c_green(nzb_wall,m)   = building_pars(ind_hc1,st) 
    4402                     surf_usm_v(l)%rho_c_green(nzb_wall+1,m) = building_pars(ind_hc1,st)
    4403                     surf_usm_v(l)%rho_c_green(nzb_wall+2,m) = building_pars(ind_hc2,st)
    4404                     surf_usm_v(l)%rho_c_green(nzb_wall+3,m) = building_pars(ind_hc3,st)
     5442                    surf_usm_v(l)%rho_c_green(nzb_wall,m)   = rho_c_soil !building_pars(ind_hc1,st) 
     5443                    surf_usm_v(l)%rho_c_green(nzb_wall+1,m) = rho_c_soil !building_pars(ind_hc1,st)
     5444                    surf_usm_v(l)%rho_c_green(nzb_wall+2,m) = rho_c_soil !building_pars(ind_hc2,st)
     5445                    surf_usm_v(l)%rho_c_green(nzb_wall+3,m) = rho_c_soil !building_pars(ind_hc3,st)
    44055446                   
    4406                     surf_usm_v(l)%rho_c_window(nzb_wall,m)   = building_pars(ind_hc1,st) 
    4407                     surf_usm_v(l)%rho_c_window(nzb_wall+1,m) = building_pars(ind_hc1,st)
    4408                     surf_usm_v(l)%rho_c_window(nzb_wall+2,m) = building_pars(ind_hc2,st)
    4409                     surf_usm_v(l)%rho_c_window(nzb_wall+3,m) = building_pars(ind_hc3,st)
     5447                    surf_usm_v(l)%rho_c_window(nzb_wall,m)   = building_pars(ind_hc1_win,st) 
     5448                    surf_usm_v(l)%rho_c_window(nzb_wall+1,m) = building_pars(ind_hc1_win,st)
     5449                    surf_usm_v(l)%rho_c_window(nzb_wall+2,m) = building_pars(ind_hc2_win,st)
     5450                    surf_usm_v(l)%rho_c_window(nzb_wall+3,m) = building_pars(ind_hc3_win,st)
    44105451
    44115452                    surf_usm_v(l)%lambda_h(nzb_wall,m)   = building_pars(ind_tc1,st) 
     
    44145455                    surf_usm_v(l)%lambda_h(nzb_wall+3,m) = building_pars(ind_tc3,st)
    44155456                   
    4416                     surf_usm_v(l)%lambda_h_green(nzb_wall,m)   = building_pars(ind_tc1,st) 
    4417                     surf_usm_v(l)%lambda_h_green(nzb_wall+1,m) = building_pars(ind_tc1,st)
    4418                     surf_usm_v(l)%lambda_h_green(nzb_wall+2,m) = building_pars(ind_tc2,st)
    4419                     surf_usm_v(l)%lambda_h_green(nzb_wall+3,m) = building_pars(ind_tc3,st)
     5457                    surf_usm_v(l)%lambda_h_green(nzb_wall,m)   = lambda_h_green_sm !building_pars(ind_tc1,st) 
     5458                    surf_usm_v(l)%lambda_h_green(nzb_wall+1,m) = lambda_h_green_sm !building_pars(ind_tc1,st)
     5459                    surf_usm_v(l)%lambda_h_green(nzb_wall+2,m) = lambda_h_green_sm !building_pars(ind_tc2,st)
     5460                    surf_usm_v(l)%lambda_h_green(nzb_wall+3,m) = lambda_h_green_sm !building_pars(ind_tc3,st)
    44205461                   
    4421                     surf_usm_v(l)%lambda_h_window(nzb_wall,m)   = building_pars(ind_tc1,st) 
    4422                     surf_usm_v(l)%lambda_h_window(nzb_wall+1,m) = building_pars(ind_tc1,st)
    4423                     surf_usm_v(l)%lambda_h_window(nzb_wall+2,m) = building_pars(ind_tc2,st)
    4424                     surf_usm_v(l)%lambda_h_window(nzb_wall+3,m) = building_pars(ind_tc3,st)
    4425 
    4426                     surf_usm_v(l)%target_temp_summer(m)  = building_pars(12,st)   
    4427                     surf_usm_v(l)%target_temp_winter(m)  = building_pars(13,st)   
     5462                    surf_usm_v(l)%lambda_h_window(nzb_wall,m)   = building_pars(ind_tc1_win,st) 
     5463                    surf_usm_v(l)%lambda_h_window(nzb_wall+1,m) = building_pars(ind_tc1_win,st)
     5464                    surf_usm_v(l)%lambda_h_window(nzb_wall+2,m) = building_pars(ind_tc2_win,st)
     5465                    surf_usm_v(l)%lambda_h_window(nzb_wall+3,m) = building_pars(ind_tc3_win,st)
     5466
     5467                    surf_usm_v(l)%target_temp_summer(m)  = building_pars(117,st)   
     5468                    surf_usm_v(l)%target_temp_winter(m)  = building_pars(118,st)   
    44285469!
    44295470!--                 emissivity of wall-, green- and window fraction
     
    44525493                    surf_usm_v(l)%zw_green(nzb_wall+3,m)       = building_pars(ind_thick_4,st)
    44535494                   
    4454                     surf_usm_v(l)%zw_window(nzb_wall,m)         = building_pars(ind_thick_1,st)
    4455                     surf_usm_v(l)%zw_window(nzb_wall+1,m)       = building_pars(ind_thick_2,st)
    4456                     surf_usm_v(l)%zw_window(nzb_wall+2,m)       = building_pars(ind_thick_3,st)
    4457                     surf_usm_v(l)%zw_window(nzb_wall+3,m)       = building_pars(ind_thick_4,st)
    4458 
    4459                     surf_usm_v(l)%c_surface(m)           = building_pars(45,st) 
    4460                     surf_usm_v(l)%lambda_surf(m)         = building_pars(46,st)
    4461                     surf_usm_v(l)%c_surface_green(m)     = building_pars(45,st) 
    4462                     surf_usm_v(l)%lambda_surf_green(m)   = building_pars(46,st)
    4463                     surf_usm_v(l)%c_surface_window(m)    = building_pars(45,st) 
    4464                     surf_usm_v(l)%lambda_surf_window(m)  = building_pars(46,st)
     5495                    surf_usm_v(l)%zw_window(nzb_wall,m)         = building_pars(ind_thick_1_win,st)
     5496                    surf_usm_v(l)%zw_window(nzb_wall+1,m)       = building_pars(ind_thick_2_win,st)
     5497                    surf_usm_v(l)%zw_window(nzb_wall+2,m)       = building_pars(ind_thick_3_win,st)
     5498                    surf_usm_v(l)%zw_window(nzb_wall+3,m)       = building_pars(ind_thick_4_win,st)
     5499
     5500                    surf_usm_v(l)%c_surface(m)           = building_pars(0,st) 
     5501                    surf_usm_v(l)%lambda_surf(m)         = building_pars(3,st)
     5502                    surf_usm_v(l)%c_surface_green(m)     = building_pars(2,st) 
     5503                    surf_usm_v(l)%lambda_surf_green(m)   = building_pars(5,st)
     5504                    surf_usm_v(l)%c_surface_window(m)    = building_pars(1,st) 
     5505                    surf_usm_v(l)%lambda_surf_window(m)  = building_pars(4,st)
    44655506
    44665507
     
    44795520!
    44805521!--           In order to distinguish between ground floor level and
    4481 !--           above-ground-floor level surfaces, set input indices.
    4482               ind_wall_frac    = MERGE( ind_wall_frac_gfl,    ind_wall_frac_agfl,    &
    4483                                         surf_usm_h%ground_level(m) )
    4484               ind_win_frac     = MERGE( ind_win_frac_gfl,     ind_win_frac_agfl,     &
    4485                                         surf_usm_h%ground_level(m) )
    4486               ind_green_frac_w = MERGE( ind_green_frac_w_gfl, ind_green_frac_w_agfl, &
    4487                                         surf_usm_h%ground_level(m) )
     5522!--           above-ground-floor level surfaces, set input indices.
    44885523              ind_green_frac_r = MERGE( ind_green_frac_r_gfl, ind_green_frac_r_agfl, &
    44895524                                        surf_usm_h%ground_level(m) )
    44905525              ind_lai_r        = MERGE( ind_lai_r_gfl,        ind_lai_r_agfl,        &
    4491                                         surf_usm_h%ground_level(m) )
    4492               ind_lai_w        = MERGE( ind_lai_w_gfl,        ind_lai_w_agfl,        &
    4493                                         surf_usm_h%ground_level(m) )
    4494               ind_hc1          = MERGE( ind_hc1_gfl,          ind_hc1_agfl,          &
    4495                                         surf_usm_h%ground_level(m) )
    4496               ind_hc2          = MERGE( ind_hc2_gfl,          ind_hc2_agfl,          &
    4497                                         surf_usm_h%ground_level(m) )
    4498               ind_hc3          = MERGE( ind_hc3_gfl,          ind_hc3_agfl,          &
    4499                                         surf_usm_h%ground_level(m) )
    4500               ind_tc1          = MERGE( ind_tc1_gfl,          ind_tc1_agfl,          &
    4501                                         surf_usm_h%ground_level(m) )
    4502               ind_tc2          = MERGE( ind_tc2_gfl,          ind_tc2_agfl,          &
    4503                                         surf_usm_h%ground_level(m) )
    4504               ind_tc3          = MERGE( ind_tc3_gfl,          ind_tc3_agfl,          &
    4505                                         surf_usm_h%ground_level(m) )
    4506               ind_emis_wall    = MERGE( ind_emis_wall_gfl,    ind_emis_wall_agfl,    &
    4507                                         surf_usm_h%ground_level(m) )
    4508               ind_emis_green   = MERGE( ind_emis_green_gfl,   ind_emis_green_agfl,   &
    4509                                         surf_usm_h%ground_level(m) )
    4510               ind_emis_win     = MERGE( ind_emis_win_gfl,     ind_emis_win_agfl,     &
    4511                                         surf_usm_h%ground_level(m) )
    4512               ind_trans        = MERGE( ind_trans_gfl,        ind_trans_agfl,        &
    45135526                                        surf_usm_h%ground_level(m) )
    45145527              ind_z0           = MERGE( ind_z0_gfl,           ind_z0_agfl,           &
     
    45195532!
    45205533!--           Initialize relatvie wall- (0), green- (1) and window (2) fractions
    4521               IF ( building_pars_f%pars_xy(ind_wall_frac,j,i) /= building_pars_f%fill )    &
    4522                  surf_usm_h%frac(ind_veg_wall,m)  = building_pars_f%pars_xy(ind_wall_frac,j,i)   
     5534              IF ( building_pars_f%pars_xy(ind_wall_frac_r,j,i) /= building_pars_f%fill )    &
     5535                 surf_usm_h%frac(ind_veg_wall,m)  = building_pars_f%pars_xy(ind_wall_frac_r,j,i)   
    45235536              IF ( building_pars_f%pars_xy(ind_green_frac_r,j,i) /= building_pars_f%fill ) &
    45245537                 surf_usm_h%frac(ind_pav_green,m) = building_pars_f%pars_xy(ind_green_frac_r,j,i)
    4525               IF ( building_pars_f%pars_xy(ind_win_frac,j,i) /= building_pars_f%fill )     &
    4526                  surf_usm_h%frac(ind_wat_win,m)   = building_pars_f%pars_xy(ind_win_frac,j,i)
     5538              IF ( building_pars_f%pars_xy(ind_win_frac_r,j,i) /= building_pars_f%fill )     &
     5539                 surf_usm_h%frac(ind_wat_win,m)   = building_pars_f%pars_xy(ind_win_frac_r,j,i)
    45275540
    45285541 
     
    45305543                 surf_usm_h%lai(m)             = building_pars_f%pars_xy(ind_lai_r,j,i)
    45315544
    4532               IF ( building_pars_f%pars_xy(ind_hc1,j,i) /= building_pars_f%fill )  THEN
    4533                  surf_usm_h%rho_c_wall(nzb_wall,m)   = building_pars_f%pars_xy(ind_hc1,j,i) 
    4534                  surf_usm_h%rho_c_wall(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1,j,i)
     5545              IF ( building_pars_f%pars_xy(ind_hc1_wall_r,j,i) /= building_pars_f%fill )  THEN
     5546                 surf_usm_h%rho_c_wall(nzb_wall,m)   = building_pars_f%pars_xy(ind_hc1_wall_r,j,i) 
     5547                 surf_usm_h%rho_c_wall(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1_wall_r,j,i)
    45355548              ENDIF
    4536               IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill )    &
    4537                  surf_usm_h%rho_c_wall(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2,j,i)
    4538               IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill )    &
    4539                  surf_usm_h%rho_c_wall(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3,j,i)
    4540               IF ( building_pars_f%pars_xy(ind_hc1,j,i) /= building_pars_f%fill )  THEN
    4541                  surf_usm_h%rho_c_green(nzb_wall,m)   = building_pars_f%pars_xy(ind_hc1,j,i) 
    4542                  surf_usm_h%rho_c_green(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1,j,i)
     5549              IF ( building_pars_f%pars_xy(ind_hc2_wall_r,j,i) /= building_pars_f%fill )    &
     5550                 surf_usm_h%rho_c_wall(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2_wall_r,j,i)
     5551              IF ( building_pars_f%pars_xy(ind_hc3_wall_r,j,i) /= building_pars_f%fill )    &
     5552                 surf_usm_h%rho_c_wall(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3_wall_r,j,i)
     5553              IF ( building_pars_f%pars_xy(ind_hc1_wall_r,j,i) /= building_pars_f%fill )  THEN
     5554                 surf_usm_h%rho_c_green(nzb_wall,m)   = rho_c_soil !building_pars_f%pars_xy(ind_hc1_wall_r,j,i) 
     5555                 surf_usm_h%rho_c_green(nzb_wall+1,m) = rho_c_soil !building_pars_f%pars_xy(ind_hc1_wall_r,j,i)
    45435556              ENDIF
    4544               IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill )    &
    4545                  surf_usm_h%rho_c_green(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2,j,i)
    4546               IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill )    &
    4547                  surf_usm_h%rho_c_green(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3,j,i)
    4548               IF ( building_pars_f%pars_xy(ind_hc1,j,i) /= building_pars_f%fill )  THEN
    4549                  surf_usm_h%rho_c_window(nzb_wall,m)   = building_pars_f%pars_xy(ind_hc1,j,i) 
    4550                  surf_usm_h%rho_c_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1,j,i)
     5557              IF ( building_pars_f%pars_xy(ind_hc2_wall_r,j,i) /= building_pars_f%fill )    &
     5558                 surf_usm_h%rho_c_green(nzb_wall+2,m) = rho_c_soil !building_pars_f%pars_xy(ind_hc2_wall_r,j,i)
     5559              IF ( building_pars_f%pars_xy(ind_hc3_wall_r,j,i) /= building_pars_f%fill )    &
     5560                 surf_usm_h%rho_c_green(nzb_wall+3,m) = rho_c_soil !building_pars_f%pars_xy(ind_hc3_wall_r,j,i)
     5561              IF ( building_pars_f%pars_xy(ind_hc1_win_r,j,i) /= building_pars_f%fill )  THEN
     5562                 surf_usm_h%rho_c_window(nzb_wall,m)   = building_pars_f%pars_xy(ind_hc1_win_r,j,i) 
     5563                 surf_usm_h%rho_c_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1_win_r,j,i)
    45515564              ENDIF
    4552               IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill )    &
    4553                  surf_usm_h%rho_c_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2,j,i)
    4554               IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill )    &
    4555                  surf_usm_h%rho_c_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3,j,i)
    4556 
    4557               IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill )  THEN
    4558                  surf_usm_h%lambda_h(nzb_wall,m)   = building_pars_f%pars_xy(ind_tc1,j,i)         
    4559                  surf_usm_h%lambda_h(nzb_wall+1,m) = building_pars_f%pars_xy(ind_tc1,j,i)       
     5565              IF ( building_pars_f%pars_xy(ind_hc2_win_r,j,i) /= building_pars_f%fill )    &
     5566                 surf_usm_h%rho_c_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2_win_r,j,i)
     5567              IF ( building_pars_f%pars_xy(ind_hc3_win_r,j,i) /= building_pars_f%fill )    &
     5568                 surf_usm_h%rho_c_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3_win_r,j,i)
     5569
     5570              IF ( building_pars_f%pars_xy(ind_tc1_wall_r,j,i) /= building_pars_f%fill )  THEN
     5571                 surf_usm_h%lambda_h(nzb_wall,m)   = building_pars_f%pars_xy(ind_tc1_wall_r,j,i)         
     5572                 surf_usm_h%lambda_h(nzb_wall+1,m) = building_pars_f%pars_xy(ind_tc1_wall_r,j,i)       
    45605573              ENDIF
    4561               IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill )    &
    4562                  surf_usm_h%lambda_h(nzb_wall+2,m) = building_pars_f%pars_xy(ind_tc2,j,i)
    4563               IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill )    &
    4564                  surf_usm_h%lambda_h(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3,j,i)   
    4565               IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill )  THEN
    4566                  surf_usm_h%lambda_h_green(nzb_wall,m)   = building_pars_f%pars_xy(ind_tc1,j,i)         
    4567                  surf_usm_h%lambda_h_green(nzb_wall+1,m) = building_pars_f%pars_xy(ind_tc1,j,i)       
     5574              IF ( building_pars_f%pars_xy(ind_tc2_wall_r,j,i) /= building_pars_f%fill )    &
     5575                 surf_usm_h%lambda_h(nzb_wall+2,m) = building_pars_f%pars_xy(ind_tc2_wall_r,j,i)
     5576              IF ( building_pars_f%pars_xy(ind_tc3_wall_r,j,i) /= building_pars_f%fill )    &
     5577                 surf_usm_h%lambda_h(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3_wall_r,j,i)   
     5578              IF ( building_pars_f%pars_xy(ind_tc1_wall_r,j,i) /= building_pars_f%fill )  THEN
     5579                 surf_usm_h%lambda_h_green(nzb_wall,m)   = lambda_h_green_sm !building_pars_f%pars_xy(ind_tc1_wall_r,j,i)         
     5580                 surf_usm_h%lambda_h_green(nzb_wall+1,m) = lambda_h_green_sm !building_pars_f%pars_xy(ind_tc1_wall_r,j,i)       
    45685581              ENDIF
    4569               IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill )    &
    4570                  surf_usm_h%lambda_h_green(nzb_wall+2,m) = building_pars_f%pars_xy(ind_tc2,j,i)
    4571               IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill )    &
    4572                  surf_usm_h%lambda_h_green(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3,j,i)   
    4573               IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill )  THEN
    4574                  surf_usm_h%lambda_h_window(nzb_wall,m)   = building_pars_f%pars_xy(ind_tc1,j,i)         
    4575                  surf_usm_h%lambda_h_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_tc1,j,i)       
     5582              IF ( building_pars_f%pars_xy(ind_tc2_wall_r,j,i) /= building_pars_f%fill )    &
     5583                 surf_usm_h%lambda_h_green(nzb_wall+2,m) = lambda_h_green_sm !building_pars_f%pars_xy(ind_tc2_wall_r,j,i)
     5584              IF ( building_pars_f%pars_xy(ind_tc3_wall_r,j,i) /= building_pars_f%fill )    &
     5585                 surf_usm_h%lambda_h_green(nzb_wall+3,m) = lambda_h_green_sm !building_pars_f%pars_xy(ind_tc3_wall_r,j,i)   
     5586              IF ( building_pars_f%pars_xy(ind_tc1_win_r,j,i) /= building_pars_f%fill )  THEN
     5587                 surf_usm_h%lambda_h_window(nzb_wall,m)   = building_pars_f%pars_xy(ind_tc1_win_r,j,i)         
     5588                 surf_usm_h%lambda_h_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_tc1_win_r,j,i)       
    45765589              ENDIF
    4577               IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill )    &
    4578                  surf_usm_h%lambda_h_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_tc2,j,i)
    4579               IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill )    &
    4580                  surf_usm_h%lambda_h_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3,j,i)   
    4581 
    4582               IF ( building_pars_f%pars_xy(12,j,i) /= building_pars_f%fill )         &
    4583                  surf_usm_h%target_temp_summer(m)  = building_pars_f%pars_xy(12,j,i)   
    4584               IF ( building_pars_f%pars_xy(13,j,i) /= building_pars_f%fill )         &
    4585                  surf_usm_h%target_temp_winter(m)  = building_pars_f%pars_xy(13,j,i)   
    4586 
    4587               IF ( building_pars_f%pars_xy(ind_emis_wall,j,i) /= building_pars_f%fill ) &
    4588                  surf_usm_h%emissivity(ind_veg_wall,m)  = building_pars_f%pars_xy(ind_emis_wall,j,i)
    4589               IF ( building_pars_f%pars_xy(ind_emis_green,j,i) /= building_pars_f%fill )&
    4590                  surf_usm_h%emissivity(ind_pav_green,m) = building_pars_f%pars_xy(ind_emis_green,j,i)
    4591               IF ( building_pars_f%pars_xy(ind_emis_win,j,i) /= building_pars_f%fill )  &
    4592                  surf_usm_h%emissivity(ind_wat_win,m)   = building_pars_f%pars_xy(ind_emis_win,j,i)
    4593 
    4594               IF ( building_pars_f%pars_xy(ind_trans,j,i) /= building_pars_f%fill )    &
    4595                  surf_usm_h%transmissivity(m)      = building_pars_f%pars_xy(ind_trans,j,i)
     5590              IF ( building_pars_f%pars_xy(ind_tc2_win_r,j,i) /= building_pars_f%fill )    &
     5591                 surf_usm_h%lambda_h_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_tc2_win_r,j,i)
     5592              IF ( building_pars_f%pars_xy(ind_tc3_win_r,j,i) /= building_pars_f%fill )    &
     5593                 surf_usm_h%lambda_h_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3_win_r,j,i)   
     5594
     5595              IF ( building_pars_f%pars_xy(117,j,i) /= building_pars_f%fill )         &
     5596                 surf_usm_h%target_temp_summer(m)  = building_pars_f%pars_xy(117,j,i)   
     5597              IF ( building_pars_f%pars_xy(118,j,i) /= building_pars_f%fill )         &
     5598                 surf_usm_h%target_temp_winter(m)  = building_pars_f%pars_xy(118,j,i)   
     5599
     5600              IF ( building_pars_f%pars_xy(ind_emis_wall_r,j,i) /= building_pars_f%fill ) &
     5601                 surf_usm_h%emissivity(ind_veg_wall,m)  = building_pars_f%pars_xy(ind_emis_wall_r,j,i)
     5602              IF ( building_pars_f%pars_xy(ind_emis_green_r,j,i) /= building_pars_f%fill )&
     5603                 surf_usm_h%emissivity(ind_pav_green,m) = building_pars_f%pars_xy(ind_emis_green_r,j,i)
     5604              IF ( building_pars_f%pars_xy(ind_emis_win_r,j,i) /= building_pars_f%fill )  &
     5605                 surf_usm_h%emissivity(ind_wat_win,m)   = building_pars_f%pars_xy(ind_emis_win_r,j,i)
     5606
     5607              IF ( building_pars_f%pars_xy(ind_trans_r,j,i) /= building_pars_f%fill )    &
     5608                 surf_usm_h%transmissivity(m)      = building_pars_f%pars_xy(ind_trans_r,j,i)
    45965609
    45975610              IF ( building_pars_f%pars_xy(ind_z0,j,i) /= building_pars_f%fill )    &
     
    46025615                 surf_usm_h%z0q(m)                 = building_pars_f%pars_xy(ind_z0qh,j,i)
    46035616
    4604               IF ( building_pars_f%pars_xy(ind_alb_wall,j,i) /= building_pars_f%fill )    &
    4605                  surf_usm_h%albedo_type(ind_veg_wall,m)  = building_pars_f%pars_xy(ind_alb_wall,j,i)
    4606               IF ( building_pars_f%pars_xy(ind_alb_green,j,i) /= building_pars_f%fill )    &
    4607                  surf_usm_h%albedo_type(ind_pav_green,m) = building_pars_f%pars_xy(ind_alb_green,j,i)
    4608               IF ( building_pars_f%pars_xy(ind_alb_win,j,i) /= building_pars_f%fill )    &
    4609                  surf_usm_h%albedo_type(ind_wat_win,m)   = building_pars_f%pars_xy(ind_alb_win,j,i)
    4610 
    4611               IF ( building_pars_f%pars_xy(ind_thick_1,j,i) /= building_pars_f%fill )    &
    4612                  surf_usm_h%zw(nzb_wall,m) = building_pars_f%pars_xy(ind_thick_1,j,i)
    4613               IF ( building_pars_f%pars_xy(ind_thick_2,j,i) /= building_pars_f%fill )    &
    4614                  surf_usm_h%zw(nzb_wall+1,m) = building_pars_f%pars_xy(ind_thick_2,j,i)
    4615               IF ( building_pars_f%pars_xy(ind_thick_3,j,i) /= building_pars_f%fill )    &
    4616                  surf_usm_h%zw(nzb_wall+2,m) = building_pars_f%pars_xy(ind_thick_3,j,i)
    4617               IF ( building_pars_f%pars_xy(ind_thick_4,j,i) /= building_pars_f%fill )    &
    4618                  surf_usm_h%zw(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4,j,i)
    4619               IF ( building_pars_f%pars_xy(ind_thick_1,j,i) /= building_pars_f%fill )    &
    4620                  surf_usm_h%zw_green(nzb_wall,m) = building_pars_f%pars_xy(ind_thick_1,j,i)
    4621               IF ( building_pars_f%pars_xy(ind_thick_2,j,i) /= building_pars_f%fill )    &
    4622                  surf_usm_h%zw_green(nzb_wall+1,m) = building_pars_f%pars_xy(ind_thick_2,j,i)
    4623               IF ( building_pars_f%pars_xy(ind_thick_3,j,i) /= building_pars_f%fill )    &
    4624                  surf_usm_h%zw_green(nzb_wall+2,m) = building_pars_f%pars_xy(ind_thick_3,j,i)
    4625               IF ( building_pars_f%pars_xy(ind_thick_4,j,i) /= building_pars_f%fill )    &
    4626                  surf_usm_h%zw_green(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4,j,i)
    4627               IF ( building_pars_f%pars_xy(ind_thick_1,j,i) /= building_pars_f%fill )    &
    4628                  surf_usm_h%zw_window(nzb_wall,m) = building_pars_f%pars_xy(ind_thick_1,j,i)
    4629               IF ( building_pars_f%pars_xy(ind_thick_2,j,i) /= building_pars_f%fill )    &
    4630                  surf_usm_h%zw_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_thick_2,j,i)
    4631               IF ( building_pars_f%pars_xy(ind_thick_3,j,i) /= building_pars_f%fill )    &
    4632                  surf_usm_h%zw_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_thick_3,j,i)
    4633               IF ( building_pars_f%pars_xy(ind_thick_4,j,i) /= building_pars_f%fill )    &
    4634                  surf_usm_h%zw_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4,j,i)
    4635 
    4636               IF ( building_pars_f%pars_xy(45,j,i) /= building_pars_f%fill )    &
    4637                  surf_usm_h%c_surface(m)           = building_pars_f%pars_xy(45,j,i)
    4638               IF ( building_pars_f%pars_xy(46,j,i) /= building_pars_f%fill )    &
    4639                  surf_usm_h%lambda_surf(m)         = building_pars_f%pars_xy(46,j,i)
    4640               IF ( building_pars_f%pars_xy(45,j,i) /= building_pars_f%fill )    &
    4641                  surf_usm_h%c_surface_green(m)           = building_pars_f%pars_xy(45,j,i)
    4642               IF ( building_pars_f%pars_xy(46,j,i) /= building_pars_f%fill )    &
    4643                  surf_usm_h%lambda_surf_green(m)         = building_pars_f%pars_xy(46,j,i)
    4644               IF ( building_pars_f%pars_xy(45,j,i) /= building_pars_f%fill )    &
    4645                  surf_usm_h%c_surface_window(m)           = building_pars_f%pars_xy(45,j,i)
    4646               IF ( building_pars_f%pars_xy(46,j,i) /= building_pars_f%fill )    &
    4647                  surf_usm_h%lambda_surf_window(m)         = building_pars_f%pars_xy(46,j,i)
     5617              IF ( building_pars_f%pars_xy(ind_alb_wall_r,j,i) /= building_pars_f%fill )    &
     5618                 surf_usm_h%albedo_type(ind_veg_wall,m)  = building_pars_f%pars_xy(ind_alb_wall_r,j,i)
     5619              IF ( building_pars_f%pars_xy(ind_alb_green_r,j,i) /= building_pars_f%fill )    &
     5620                 surf_usm_h%albedo_type(ind_pav_green,m) = building_pars_f%pars_xy(ind_alb_green_r,j,i)
     5621              IF ( building_pars_f%pars_xy(ind_alb_win_r,j,i) /= building_pars_f%fill )    &
     5622                 surf_usm_h%albedo_type(ind_wat_win,m)   = building_pars_f%pars_xy(ind_alb_win_r,j,i)
     5623
     5624              IF ( building_pars_f%pars_xy(ind_thick_1_wall_r,j,i) /= building_pars_f%fill )    &
     5625                 surf_usm_h%zw(nzb_wall,m) = building_pars_f%pars_xy(ind_thick_1_wall_r,j,i)
     5626              IF ( building_pars_f%pars_xy(ind_thick_2_wall_r,j,i) /= building_pars_f%fill )    &
     5627                 surf_usm_h%zw(nzb_wall+1,m) = building_pars_f%pars_xy(ind_thick_2_wall_r,j,i)
     5628              IF ( building_pars_f%pars_xy(ind_thick_3_wall_r,j,i) /= building_pars_f%fill )    &
     5629                 surf_usm_h%zw(nzb_wall+2,m) = building_pars_f%pars_xy(ind_thick_3_wall_r,j,i)
     5630              IF ( building_pars_f%pars_xy(ind_thick_4_wall_r,j,i) /= building_pars_f%fill )    &
     5631                 surf_usm_h%zw(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4_wall_r,j,i)
     5632              IF ( building_pars_f%pars_xy(ind_thick_1_wall_r,j,i) /= building_pars_f%fill )    &
     5633                 surf_usm_h%zw_green(nzb_wall,m) = building_pars_f%pars_xy(ind_thick_1_wall_r,j,i)
     5634              IF ( building_pars_f%pars_xy(ind_thick_2_wall_r,j,i) /= building_pars_f%fill )    &
     5635                 surf_usm_h%zw_green(nzb_wall+1,m) = building_pars_f%pars_xy(ind_thick_2_wall_r,j,i)
     5636              IF ( building_pars_f%pars_xy(ind_thick_3_wall_r,j,i) /= building_pars_f%fill )    &
     5637                 surf_usm_h%zw_green(nzb_wall+2,m) = building_pars_f%pars_xy(ind_thick_3_wall_r,j,i)
     5638              IF ( building_pars_f%pars_xy(ind_thick_4_wall_r,j,i) /= building_pars_f%fill )    &
     5639                 surf_usm_h%zw_green(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4_wall_r,j,i)
     5640              IF ( building_pars_f%pars_xy(ind_thick_1_win_r,j,i) /= building_pars_f%fill )    &
     5641                 surf_usm_h%zw_window(nzb_wall,m) = building_pars_f%pars_xy(ind_thick_1_win_r,j,i)
     5642              IF ( building_pars_f%pars_xy(ind_thick_2_win_r,j,i) /= building_pars_f%fill )    &
     5643                 surf_usm_h%zw_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_thick_2_win_r,j,i)
     5644              IF ( building_pars_f%pars_xy(ind_thick_3_win_r,j,i) /= building_pars_f%fill )    &
     5645                 surf_usm_h%zw_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_thick_3_win_r,j,i)
     5646              IF ( building_pars_f%pars_xy(ind_thick_4_win_r,j,i) /= building_pars_f%fill )    &
     5647                 surf_usm_h%zw_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4_win_r,j,i)
     5648
     5649              IF ( building_pars_f%pars_xy(0,j,i) /= building_pars_f%fill )    &
     5650                 surf_usm_h%c_surface(m)           = building_pars_f%pars_xy(0,j,i)
     5651              IF ( building_pars_f%pars_xy(3,j,i) /= building_pars_f%fill )    &
     5652                 surf_usm_h%lambda_surf(m)         = building_pars_f%pars_xy(3,j,i)
     5653              IF ( building_pars_f%pars_xy(2,j,i) /= building_pars_f%fill )    &
     5654                 surf_usm_h%c_surface_green(m)           = building_pars_f%pars_xy(2,j,i)
     5655              IF ( building_pars_f%pars_xy(5,j,i) /= building_pars_f%fill )    &
     5656                 surf_usm_h%lambda_surf_green(m)         = building_pars_f%pars_xy(5,j,i)
     5657              IF ( building_pars_f%pars_xy(1,j,i) /= building_pars_f%fill )    &
     5658                 surf_usm_h%c_surface_window(m)           = building_pars_f%pars_xy(1,j,i)
     5659              IF ( building_pars_f%pars_xy(4,j,i) /= building_pars_f%fill )    &
     5660                 surf_usm_h%lambda_surf_window(m)         = building_pars_f%pars_xy(4,j,i)
     5661
     5662              IF ( building_pars_f%pars_xy(ind_green_type_roof,j,i) /= building_pars_f%fill )    &
     5663                 surf_usm_h%green_type_roof(m)            = building_pars_f%pars_xy(ind_green_type_roof,j,i)
    46485664           ENDDO
    46495665
     
    46575673!
    46585674!--              In order to distinguish between ground floor level and
    4659 !--              above-ground-floor level surfaces, set input indices.
     5675!--              above-ground-floor level surfaces, set input indices.
     5676                 ind_alb_green    = MERGE( ind_alb_green_gfl,    ind_alb_green_agfl,    &
     5677                                           surf_usm_v(l)%ground_level(m) )
     5678                 ind_alb_wall     = MERGE( ind_alb_wall_gfl,     ind_alb_wall_agfl,     &
     5679                                           surf_usm_v(l)%ground_level(m) )
     5680                 ind_alb_win      = MERGE( ind_alb_win_gfl,      ind_alb_win_agfl,      &
     5681                                           surf_usm_v(l)%ground_level(m) )
    46605682                 ind_wall_frac    = MERGE( ind_wall_frac_gfl,    ind_wall_frac_agfl,     &
    46615683                                           surf_usm_v(l)%ground_level(m) )
     
    46725694                 ind_hc1          = MERGE( ind_hc1_gfl,          ind_hc1_agfl,          &
    46735695                                           surf_usm_v(l)%ground_level(m) )
     5696                 ind_hc1_win      = MERGE( ind_hc1_win_gfl,      ind_hc1_win_agfl,      &
     5697                                           surf_usm_v(l)%ground_level(m) )
    46745698                 ind_hc2          = MERGE( ind_hc2_gfl,          ind_hc2_agfl,          &
     5699                                           surf_usm_v(l)%ground_level(m) )
     5700                 ind_hc2_win      = MERGE( ind_hc2_win_gfl,      ind_hc2_win_agfl,      &
    46755701                                           surf_usm_v(l)%ground_level(m) )
    46765702                 ind_hc3          = MERGE( ind_hc3_gfl,          ind_hc3_agfl,          &
    46775703                                           surf_usm_v(l)%ground_level(m) )
     5704                 ind_hc3_win      = MERGE( ind_hc3_win_gfl,      ind_hc3_win_agfl,      &
     5705                                           surf_usm_v(l)%ground_level(m) )
    46785706                 ind_tc1          = MERGE( ind_tc1_gfl,          ind_tc1_agfl,          &
     5707                                           surf_usm_v(l)%ground_level(m) )
     5708                 ind_tc1_win      = MERGE( ind_tc1_win_gfl,      ind_tc1_win_agfl,      &
    46795709                                           surf_usm_v(l)%ground_level(m) )
    46805710                 ind_tc2          = MERGE( ind_tc2_gfl,          ind_tc2_agfl,          &
    46815711                                           surf_usm_v(l)%ground_level(m) )
     5712                 ind_tc2_win      = MERGE( ind_tc2_win_gfl,      ind_tc2_win_agfl,      &
     5713                                           surf_usm_v(l)%ground_level(m) )
    46825714                 ind_tc3          = MERGE( ind_tc3_gfl,          ind_tc3_agfl,          &
     5715                                           surf_usm_v(l)%ground_level(m) )
     5716                 ind_tc3_win      = MERGE( ind_tc3_win_gfl,      ind_tc3_win_agfl,      &
     5717                                           surf_usm_v(l)%ground_level(m) )
     5718                 ind_thick_1      = MERGE( ind_thick_1_gfl,      ind_thick_1_agfl,      &
     5719                                           surf_usm_v(l)%ground_level(m) )
     5720                 ind_thick_1_win  = MERGE( ind_thick_1_win_gfl,  ind_thick_1_win_agfl,  &
     5721                                           surf_usm_v(l)%ground_level(m) )
     5722                 ind_thick_2      = MERGE( ind_thick_2_gfl,      ind_thick_2_agfl,      &
     5723                                           surf_usm_v(l)%ground_level(m) )
     5724                 ind_thick_2_win  = MERGE( ind_thick_2_win_gfl,  ind_thick_2_win_agfl,  &
     5725                                           surf_usm_v(l)%ground_level(m) )
     5726                 ind_thick_3      = MERGE( ind_thick_3_gfl,      ind_thick_3_agfl,      &
     5727                                           surf_usm_v(l)%ground_level(m) )
     5728                 ind_thick_3_win  = MERGE( ind_thick_3_win_gfl,  ind_thick_3_win_agfl,  &
     5729                                           surf_usm_v(l)%ground_level(m) )
     5730                 ind_thick_4      = MERGE( ind_thick_4_gfl,      ind_thick_4_agfl,      &
     5731                                           surf_usm_v(l)%ground_level(m) )
     5732                 ind_thick_4_win  = MERGE( ind_thick_4_win_gfl,  ind_thick_4_win_agfl,  &
    46835733                                           surf_usm_v(l)%ground_level(m) )
    46845734                 ind_emis_wall    = MERGE( ind_emis_wall_gfl,    ind_emis_wall_agfl,    &
     
    47285778                 IF ( building_pars_f%pars_xy(ind_hc1,j,i) /= building_pars_f%fill )  THEN
    47295779                    surf_usm_v(l)%rho_c_green(nzb_wall,m)   =                           &
    4730                                                     building_pars_f%pars_xy(ind_hc1,j,i) 
     5780                                                    rho_c_soil !building_pars_f%pars_xy(ind_hc1,j,i) 
    47315781                    surf_usm_v(l)%rho_c_green(nzb_wall+1,m) =                           &
    4732                                                     building_pars_f%pars_xy(ind_hc1,j,i)
     5782                                                    rho_c_soil !building_pars_f%pars_xy(ind_hc1,j,i)
    47335783                 ENDIF
    47345784                 IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill )    &
    4735                     surf_usm_v(l)%rho_c_green(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2,j,i)
     5785                    surf_usm_v(l)%rho_c_green(nzb_wall+2,m) = rho_c_soil !building_pars_f%pars_xy(ind_hc2,j,i)
    47365786                 IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill )    &
    4737                     surf_usm_v(l)%rho_c_green(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3,j,i)   
    4738                  IF ( building_pars_f%pars_xy(ind_hc1,j,i) /= building_pars_f%fill )  THEN
    4739                     surf_usm_v(l)%rho_c_window(nzb_wall,m)   = building_pars_f%pars_xy(ind_hc1,j,i) 
    4740                     surf_usm_v(l)%rho_c_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1,j,i)
     5787                    surf_usm_v(l)%rho_c_green(nzb_wall+3,m) = rho_c_soil !building_pars_f%pars_xy(ind_hc3,j,i)   
     5788                 IF ( building_pars_f%pars_xy(ind_hc1_win,j,i) /= building_pars_f%fill )  THEN
     5789                    surf_usm_v(l)%rho_c_window(nzb_wall,m)   = building_pars_f%pars_xy(ind_hc1_win,j,i) 
     5790                    surf_usm_v(l)%rho_c_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1_win,j,i)
    47415791                 ENDIF
    4742                  IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill )    &
    4743                     surf_usm_v(l)%rho_c_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2,j,i)
    4744                  IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill )    &
    4745                     surf_usm_v(l)%rho_c_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3,j,i)
     5792                 IF ( building_pars_f%pars_xy(ind_hc2_win,j,i) /= building_pars_f%fill )    &
     5793                    surf_usm_v(l)%rho_c_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2_win,j,i)
     5794                 IF ( building_pars_f%pars_xy(ind_hc3_win,j,i) /= building_pars_f%fill )    &
     5795                    surf_usm_v(l)%rho_c_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3_win,j,i)
    47465796
    47475797                 IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill )  THEN
     
    47545804                    surf_usm_v(l)%lambda_h(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3,j,i)   
    47555805                 IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill )  THEN
    4756                     surf_usm_v(l)%lambda_h_green(nzb_wall,m)   = building_pars_f%pars_xy(ind_tc1,j,i)         
    4757                     surf_usm_v(l)%lambda_h_green(nzb_wall+1,m) = building_pars_f%pars_xy(ind_tc1,j,i)       
     5806                    surf_usm_v(l)%lambda_h_green(nzb_wall,m)   = lambda_h_green_sm !building_pars_f%pars_xy(ind_tc1,j,i)         
     5807                    surf_usm_v(l)%lambda_h_green(nzb_wall+1,m) = lambda_h_green_sm !building_pars_f%pars_xy(ind_tc1,j,i)       
    47585808                 ENDIF
    47595809                 IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill )    &
    4760                     surf_usm_v(l)%lambda_h_green(nzb_wall+2,m) = building_pars_f%pars_xy(ind_tc2,j,i)
     5810                    surf_usm_v(l)%lambda_h_green(nzb_wall+2,m) = lambda_h_green_sm !building_pars_f%pars_xy(ind_tc2,j,i)
    47615811                 IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill )    &
    4762                     surf_usm_v(l)%lambda_h_green(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3,j,i)   
    4763                  IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill )  THEN
    4764                     surf_usm_v(l)%lambda_h_window(nzb_wall,m)   = building_pars_f%pars_xy(ind_tc1,j,i)         
    4765                     surf_usm_v(l)%lambda_h_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_tc1,j,i)       
     5812                    surf_usm_v(l)%lambda_h_green(nzb_wall+3,m) = lambda_h_green_sm !building_pars_f%pars_xy(ind_tc3,j,i)   
     5813                 IF ( building_pars_f%pars_xy(ind_tc1_win,j,i) /= building_pars_f%fill )  THEN
     5814                    surf_usm_v(l)%lambda_h_window(nzb_wall,m)   = building_pars_f%pars_xy(ind_tc1_win,j,i)         
     5815                    surf_usm_v(l)%lambda_h_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_tc1_win,j,i)       
    47665816                 ENDIF
    4767                  IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill )    &
    4768                     surf_usm_v(l)%lambda_h_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_tc2,j,i)
    4769                  IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill )    &
    4770                     surf_usm_v(l)%lambda_h_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3,j,i)
    4771 
    4772                  IF ( building_pars_f%pars_xy(12,j,i) /= building_pars_f%fill )         &
    4773                     surf_usm_v(l)%target_temp_summer(m)  = building_pars_f%pars_xy(12,j,i)   
    4774                  IF ( building_pars_f%pars_xy(13,j,i) /= building_pars_f%fill )         &
    4775                     surf_usm_v(l)%target_temp_winter(m)  = building_pars_f%pars_xy(13,j,i)   
     5817                 IF ( building_pars_f%pars_xy(ind_tc2_win,j,i) /= building_pars_f%fill )    &
     5818                    surf_usm_v(l)%lambda_h_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_tc2_win,j,i)
     5819                 IF ( building_pars_f%pars_xy(ind_tc3_win,j,i) /= building_pars_f%fill )    &
     5820                    surf_usm_v(l)%lambda_h_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3_win,j,i)
     5821
     5822                 IF ( building_pars_f%pars_xy(117,j,i) /= building_pars_f%fill )         &
     5823                    surf_usm_v(l)%target_temp_summer(m)  = building_pars_f%pars_xy(117,j,i)   
     5824                 IF ( building_pars_f%pars_xy(118,j,i) /= building_pars_f%fill )         &
     5825                    surf_usm_v(l)%target_temp_winter(m)  = building_pars_f%pars_xy(118,j,i)   
    47765826
    47775827                 IF ( building_pars_f%pars_xy(ind_emis_wall,j,i) /= building_pars_f%fill ) &
     
    48155865                 IF ( building_pars_f%pars_xy(ind_thick_4,j,i) /= building_pars_f%fill )    &
    48165866                    surf_usm_v(l)%zw_green(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4,j,i)
    4817                  IF ( building_pars_f%pars_xy(ind_thick_1,j,i) /= building_pars_f%fill )    &
    4818                     surf_usm_v(l)%zw_window(nzb_wall,m) = building_pars_f%pars_xy(ind_thick_1,j,i)
    4819                  IF ( building_pars_f%pars_xy(ind_thick_2,j,i) /= building_pars_f%fill )    &
    4820                     surf_usm_v(l)%zw_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_thick_2,j,i)
    4821                  IF ( building_pars_f%pars_xy(ind_thick_3,j,i) /= building_pars_f%fill )    &
    4822                     surf_usm_v(l)%zw_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_thick_3,j,i)
    4823                  IF ( building_pars_f%pars_xy(ind_thick_4,j,i) /= building_pars_f%fill )    &
    4824                     surf_usm_v(l)%zw_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4,j,i)
    4825 
    4826                  IF ( building_pars_f%pars_xy(45,j,i) /= building_pars_f%fill )    &
    4827                     surf_usm_v(l)%c_surface(m)           = building_pars_f%pars_xy(45,j,i)
    4828                  IF ( building_pars_f%pars_xy(46,j,i) /= building_pars_f%fill )    &
    4829                     surf_usm_v(l)%lambda_surf(m)         = building_pars_f%pars_xy(46,j,i)
    4830                  IF ( building_pars_f%pars_xy(45,j,i) /= building_pars_f%fill )    &
    4831                     surf_usm_v(l)%c_surface_green(m)     = building_pars_f%pars_xy(45,j,i)
    4832                  IF ( building_pars_f%pars_xy(46,j,i) /= building_pars_f%fill )    &
    4833                     surf_usm_v(l)%lambda_surf_green(m)   = building_pars_f%pars_xy(46,j,i)
    4834                  IF ( building_pars_f%pars_xy(45,j,i) /= building_pars_f%fill )    &
    4835                     surf_usm_v(l)%c_surface_window(m)    = building_pars_f%pars_xy(45,j,i)
    4836                  IF ( building_pars_f%pars_xy(46,j,i) /= building_pars_f%fill )    &
    4837                     surf_usm_v(l)%lambda_surf_window(m)  = building_pars_f%pars_xy(46,j,i)
     5867                 IF ( building_pars_f%pars_xy(ind_thick_1_win,j,i) /= building_pars_f%fill )    &
     5868                    surf_usm_v(l)%zw_window(nzb_wall,m) = building_pars_f%pars_xy(ind_thick_1_win,j,i)
     5869                 IF ( building_pars_f%pars_xy(ind_thick_2_win,j,i) /= building_pars_f%fill )    &
     5870                    surf_usm_v(l)%zw_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_thick_2_win,j,i)
     5871                 IF ( building_pars_f%pars_xy(ind_thick_3_win,j,i) /= building_pars_f%fill )    &
     5872                    surf_usm_v(l)%zw_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_thick_3_win,j,i)
     5873                 IF ( building_pars_f%pars_xy(ind_thick_4_win,j,i) /= building_pars_f%fill )    &
     5874                    surf_usm_v(l)%zw_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4_win,j,i)
     5875
     5876                 IF ( building_pars_f%pars_xy(0,j,i) /= building_pars_f%fill )    &
     5877                    surf_usm_v(l)%c_surface(m)           = building_pars_f%pars_xy(0,j,i)
     5878                 IF ( building_pars_f%pars_xy(3,j,i) /= building_pars_f%fill )    &
     5879                    surf_usm_v(l)%lambda_surf(m)         = building_pars_f%pars_xy(3,j,i)
     5880                 IF ( building_pars_f%pars_xy(2,j,i) /= building_pars_f%fill )    &
     5881                    surf_usm_v(l)%c_surface_green(m)     = building_pars_f%pars_xy(2,j,i)
     5882                 IF ( building_pars_f%pars_xy(5,j,i) /= building_pars_f%fill )    &
     5883                    surf_usm_v(l)%lambda_surf_green(m)   = building_pars_f%pars_xy(5,j,i)
     5884                 IF ( building_pars_f%pars_xy(1,j,i) /= building_pars_f%fill )    &
     5885                    surf_usm_v(l)%c_surface_window(m)    = building_pars_f%pars_xy(1,j,i)
     5886                 IF ( building_pars_f%pars_xy(4,j,i) /= building_pars_f%fill )    &
     5887                    surf_usm_v(l)%lambda_surf_window(m)  = building_pars_f%pars_xy(4,j,i)
    48385888
    48395889              ENDDO
     
    49455995
    49465996!
    4947 !--         At horizontal surfaces. Please note, t_surf_h is defined on a
     5997!--         At horizontal surfaces. Please note, t_surf_wall_h is defined on a
    49485998!--         different data type, but with the same dimension.
    49495999#if ! defined( __nopointer )
     
    49536003               k = surf_usm_h%k(m)
    49546004
    4955                t_surf_h(m) = pt(k,j,i) * exner(k)
     6005               t_surf_wall_h(m) = pt(k,j,i) * exner(k)
    49566006               t_surf_window_h(m) = pt(k,j,i) * exner(k)
    49576007               t_surf_green_h(m) = pt(k,j,i) * exner(k)
     
    49666016                  k = surf_usm_v(l)%k(m)
    49676017
    4968                   t_surf_v(l)%t(m) = pt(k,j,i) * exner(k)
     6018                  t_surf_wall_v(l)%t(m) = pt(k,j,i) * exner(k)
    49696019                  t_surf_window_v(l)%t(m) = pt(k,j,i) * exner(k)
    49706020                  t_surf_green_v(l)%t(m) = pt(k,j,i) * exner(k)
     
    50096059                       REAL( nzt_wall + 1 - nzb_wall , wp )
    50106060
    5011                    t_wall_h(k,m) = ( 1.0_wp - c ) * t_surf_h(m) + c * tin
     6061                   t_wall_h(k,m) = ( 1.0_wp - c ) * t_surf_wall_h(m) + c * tin
    50126062                   t_window_h(k,m) = ( 1.0_wp - c ) * t_surf_window_h(m) + c * twin
    5013                    t_green_h(k,m) = t_surf_h(m)
     6063                   t_green_h(k,m) = t_surf_wall_h(m)
     6064                   swc_h(k,m) = 0.5_wp
     6065                   swc_sat_h(k,m) = 0.95_wp
     6066                   swc_res_h(k,m) = 0.05_wp
     6067                   rootfr_h(k,m) = 0.1_wp
     6068                   wilt_h(k,m) = 0.1_wp
     6069                   fc_h(k,m) = 0.9_wp
    50146070               ENDDO
    50156071            ENDDO
     
    50266082                     c = REAL( k - nzb_wall, wp ) /                            &
    50276083                         REAL( nzt_wall + 1 - nzb_wall , wp )
    5028                      t_wall_v(l)%t(k,m) = ( 1.0_wp - c ) * t_surf_v(l)%t(m) + c * tin
     6084                     t_wall_v(l)%t(k,m) = ( 1.0_wp - c ) * t_surf_wall_v(l)%t(m) + c * tin
    50296085                     t_window_v(l)%t(k,m) = ( 1.0_wp - c ) * t_surf_window_v(l)%t(m) + c * twin
    5030                      t_green_v(l)%t(k,m) = t_surf_v(l)%t(m)
     6086                     t_green_v(l)%t(k,m) = t_surf_wall_v(l)%t(m)
     6087                     swc_v(l)%t(k,m) = 0.5_wp
    50316088                  ENDDO
    50326089               ENDDO
     
    50436100
    50446101!--     initialize prognostic values for the first timestep
    5045         t_surf_h_p = t_surf_h
    5046         t_surf_v_p = t_surf_v
     6102        t_surf_wall_h_p = t_surf_wall_h
     6103        t_surf_wall_v_p = t_surf_wall_v
    50476104        t_surf_window_h_p = t_surf_window_h
    50486105        t_surf_window_v_p = t_surf_window_v
     
    50646121!--     that is not yet possible.
    50656122       
     6123        m_liq_usm_h_p     = m_liq_usm_h
     6124        m_liq_usm_v_p     = m_liq_usm_v
     6125!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     6126!
     6127!--    Set initial values for prognostic quantities
     6128!--    Horizontal surfaces
     6129       tm_liq_usm_h_m%var_usm_1d  = 0.0_wp
     6130       surf_usm_h%c_liq = 0.0_wp
     6131
     6132       surf_usm_h%qsws_liq_eb  = 0.0_wp
     6133       surf_usm_h%qsws_veg_eb  = 0.0_wp
     6134
     6135!
     6136!--    Do the same for vertical surfaces
     6137       DO  l = 0, 3
     6138          tm_liq_usm_v_m(l)%var_usm_1d  = 0.0_wp
     6139          surf_usm_v(l)%c_liq = 0.0_wp
     6140
     6141          surf_usm_v(l)%qsws_liq_eb  = 0.0_wp
     6142          surf_usm_v(l)%qsws_veg_eb  = 0.0_wp
     6143       ENDDO
     6144
     6145!
     6146!--    Set initial values for prognostic soil quantities
     6147       IF ( TRIM( initializing_actions ) /= 'read_restart_data' )  THEN
     6148          m_liq_usm_h%var_usm_1d  = 0.0_wp
     6149
     6150          DO  l = 0, 3
     6151             m_liq_usm_v(l)%var_usm_1d  = 0.0_wp
     6152          ENDDO
     6153       ENDIF
     6154!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++       
     6155
    50666156        CALL cpu_log( log_point_s(78), 'usm_init', 'stop' )
    50676157
     
    50766166!> temperature.
    50776167!------------------------------------------------------------------------------!
    5078     SUBROUTINE usm_material_heat_model
     6168    SUBROUTINE usm_material_heat_model( spinup )
    50796169
    50806170
     
    50846174
    50856175        REAL(wp), DIMENSION(nzb_wall:nzt_wall) :: wtend, wintend  !< tendency
     6176        REAL(wp)     :: win_absorp !absorption coefficient from transmissivity
     6177        REAL(wp), DIMENSION(nzb_wall:nzt_wall) :: wall_mod
     6178
     6179        LOGICAL      :: spinup !if true, no calculation of window temperatures
     6180
     6181        wall_mod=1.0_wp
     6182        if (usm_wall_mod .AND. spinup) then
     6183          do kw=nzb_wall,nzb_wall+1
     6184            wall_mod(kw)=0.1_wp
     6185          enddo
     6186        endif
    50866187
    50876188!
     
    50976198           wtend(:) = 0.0_wp
    50986199           wtend(nzb_wall) = (1.0_wp / surf_usm_h%rho_c_wall(nzb_wall,m)) *        &
    5099                                        ( surf_usm_h%lambda_h(nzb_wall,m) *         &
     6200                                       ( surf_usm_h%lambda_h(nzb_wall,m) * wall_mod(nzb_wall) *        &
    51006201                                         ( t_wall_h(nzb_wall+1,m)                  &
    51016202                                         - t_wall_h(nzb_wall,m) ) *                &
     
    51086209                                          / (surf_usm_h%frac(ind_veg_wall,m)       &
    51096210                                            + surf_usm_h%frac(ind_pav_green,m) )   &
    5110                                          * ( surf_usm_h%lambda_h_green(nzt_wall,m) &
     6211                                         * ( surf_usm_h%lambda_h_green(nzt_wall,m)* wall_mod(nzt_wall) &
    51116212                                           * surf_usm_h%ddz_green(nzt_wall,m)      &
    5112                                            + surf_usm_h%lambda_h(nzb_wall,m)       &
     6213                                           + surf_usm_h%lambda_h(nzb_wall,m) * wall_mod(nzb_wall)        &
    51136214                                           * surf_usm_h%ddz_wall(nzb_wall,m) )     &
    51146215                                         / ( surf_usm_h%ddz_green(nzt_wall,m)      &
     
    51186219                                       surf_usm_h%ddz_wall_stag(nzb_wall,m)
    51196220
    5120 !dummy value for testing
    5121 surf_usm_h%iwghf_eb(m) = 0.
    5122 
    51236221           IF ( indoor_model ) then
    51246222              DO  kw = nzb_wall+1, nzt_wall-1
    51256223                  wtend(kw) = (1.0_wp / surf_usm_h%rho_c_wall(kw,m))              &
    5126                                  * (   surf_usm_h%lambda_h(kw,m)                  &
     6224                                 * (   surf_usm_h%lambda_h(kw,m) * wall_mod(kw)                 &
    51276225                                    * ( t_wall_h(kw+1,m) - t_wall_h(kw,m) )       &
    51286226                                    * surf_usm_h%ddz_wall(kw+1,m)                 &
    5129                                  - surf_usm_h%lambda_h(kw-1,m)                    &
     6227                                 - surf_usm_h%lambda_h(kw-1,m) * wall_mod(kw-1)                     &
    51306228                                    * ( t_wall_h(kw,m) - t_wall_h(kw-1,m) )       &
    51316229                                    * surf_usm_h%ddz_wall(kw,m)                   &
     
    51336231              ENDDO
    51346232              wtend(nzt_wall) = (1.0_wp / surf_usm_h%rho_c_wall(nzt_wall,m)) *    &
    5135                                          ( surf_usm_h%lambda_h(nzt_wall-1,m) *    &
     6233                                         ( -surf_usm_h%lambda_h(nzt_wall-1,m) * wall_mod(nzt_wall-1) *     &
    51366234                                           ( t_wall_h(nzt_wall,m)                 &
    51376235                                           - t_wall_h(nzt_wall-1,m) ) *           &
     
    51426240              DO  kw = nzb_wall+1, nzt_wall
    51436241                  wtend(kw) = (1.0_wp / surf_usm_h%rho_c_wall(kw,m))              &
    5144                                  * (   surf_usm_h%lambda_h(kw,m)                  &
     6242                                 * (   surf_usm_h%lambda_h(kw,m)  * wall_mod(kw)                &
    51456243                                    * ( t_wall_h(kw+1,m) - t_wall_h(kw,m) )       &
    51466244                                    * surf_usm_h%ddz_wall(kw+1,m)                 &
    5147                                  - surf_usm_h%lambda_h(kw-1,m)                    &
     6245                                 - surf_usm_h%lambda_h(kw-1,m) * wall_mod(kw-1)                   &
    51486246                                    * ( t_wall_h(kw,m) - t_wall_h(kw-1,m) )       &
    51496247                                    * surf_usm_h%ddz_wall(kw,m)                   &
     
    51576255                                 * surf_usm_h%tt_wall_m(nzb_wall:nzt_wall,m) )   
    51586256
     6257if (.NOT. spinup) then
     6258           win_absorp = -log(surf_usm_h%transmissivity(m)) / surf_usm_h%zw_window(nzt_wall,m)
    51596259!--        prognostic equation for ground/roof window temperature t_window_h
    51606260           wintend(:) = 0.0_wp
     
    51666266                                      + surf_usm_h%wghf_eb_window(m)              &
    51676267                                      + surf_usm_h%rad_sw_in(m)                   &
    5168                                         * (1.0_wp - exp(-surf_usm_h%transmissivity(m) &
     6268                                        * (1.0_wp - exp(-win_absorp              &
    51696269                                        * surf_usm_h%zw_window(nzb_wall,m) ) )    &
    51706270                                      ) * surf_usm_h%ddz_window_stag(nzb_wall,m)
     
    51806280                                    * surf_usm_h%ddz_window(kw,m)                 &
    51816281                                 + surf_usm_h%rad_sw_in(m)                        &
    5182                                     * (exp(-surf_usm_h%transmissivity(m)       &
     6282                                    * (exp(-win_absorp                            &
    51836283                                        * surf_usm_h%zw_window(kw-1,m) )          &
    5184                                         - exp(-surf_usm_h%transmissivity(m)    &
     6284                                        - exp(-win_absorp                         &
    51856285                                        * surf_usm_h%zw_window(kw,m) ) )          &
    51866286                                   ) * surf_usm_h%ddz_window_stag(kw,m)
    51876287
    51886288              ENDDO
    5189               wintend(nzt_wall) = (1.0_wp / surf_usm_h%rho_c_window(nzt_wall,m)) *     &
    5190                                          ( surf_usm_h%lambda_h_window(nzt_wall-1,m) *  &
    5191                                            ( t_window_h(nzt_wall,m)                    &
    5192                                            - t_window_h(nzt_wall-1,m) ) *              &
    5193                                            surf_usm_h%ddz_window(nzt_wall,m)           &
    5194                                          + surf_usm_h%iwghf_eb_window(m)               &
    5195                                          + surf_usm_h%rad_sw_in(m)                     &
    5196                                            * (1.0_wp - exp(-surf_usm_h%transmissivity(m) &
    5197                                            * surf_usm_h%zw_window(nzt_wall,m) ) )      &
     6289              wintend(nzt_wall) = (1.0_wp / surf_usm_h%rho_c_window(nzt_wall,m)) *       &
     6290                                         ( -surf_usm_h%lambda_h_window(nzt_wall-1,m) *   &
     6291                                           ( t_window_h(nzt_wall,m)                      &
     6292                                           - t_window_h(nzt_wall-1,m) ) *                &
     6293                                           surf_usm_h%ddz_window(nzt_wall,m)             &
     6294                                         + surf_usm_h%iwghf_eb_window(m)                 &
     6295                                         + surf_usm_h%rad_sw_in(m)                       &
     6296                                           * (exp(-win_absorp                            &
     6297                                           * surf_usm_h%zw_window(nzt_wall-1,m) )        &
     6298                                           - exp(-win_absorp                             &
     6299                                           * surf_usm_h%zw_window(nzt_wall,m) ) )        &
    51986300                                         ) * surf_usm_h%ddz_window_stag(nzt_wall,m)
    51996301           ELSE
     
    52076309                                    * surf_usm_h%ddz_window(kw,m)                 &
    52086310                                 + surf_usm_h%rad_sw_in(m)                        &
    5209                                     * (exp(-surf_usm_h%transmissivity(m)       &
     6311                                    * (exp(-win_absorp                            &
    52106312                                        * surf_usm_h%zw_window(kw-1,m) )          &
    5211                                         - exp(-surf_usm_h%transmissivity(m)    &
     6313                                        - exp(-win_absorp                         &
    52126314                                        * surf_usm_h%zw_window(kw,m) ) )          &
    52136315                                   ) * surf_usm_h%ddz_window_stag(kw,m)
     
    52206322                                 * wintend(nzb_wall:nzt_wall) + tsc(3)            &
    52216323                                 * surf_usm_h%tt_window_m(nzb_wall:nzt_wall,m) )   
     6324
     6325endif
    52226326
    52236327!
     
    52376341           ENDIF
    52386342
     6343if (.NOT. spinup) then
    52396344!--        calculate t_window tendencies for the next Runge-Kutta step
    52406345           IF ( timestep_scheme(1:5) == 'runge' )  THEN
     
    52516356               ENDIF
    52526357           ENDIF
     6358
     6359endif
     6360
    52536361        ENDDO
    52546362
     
    52676375
    52686376               wtend(nzb_wall) = (1.0_wp / surf_usm_v(l)%rho_c_wall(nzb_wall,m)) *    &
    5269                                        ( surf_usm_v(l)%lambda_h(nzb_wall,m) *         &
     6377                                       ( surf_usm_v(l)%lambda_h(nzb_wall,m) * wall_mod(nzb_wall)  *      &
    52706378                                         ( t_wall_v(l)%t(nzb_wall+1,m)                &
    52716379                                         - t_wall_v(l)%t(nzb_wall,m) ) *              &
     
    52786386                                         / (surf_usm_v(l)%frac(ind_veg_wall,m)        &
    52796387                                           + surf_usm_v(l)%frac(ind_pav_green,m) )    &
    5280                                          * ( surf_usm_v(l)%lambda_h_green(nzt_wall,m) &
     6388                                         * ( surf_usm_v(l)%lambda_h_green(nzt_wall,m)* wall_mod(nzt_wall) &
    52816389                                           * surf_usm_v(l)%ddz_green(nzt_wall,m)      &
    5282                                            + surf_usm_v(l)%lambda_h(nzb_wall,m)       &
     6390                                           + surf_usm_v(l)%lambda_h(nzb_wall,m)* wall_mod(nzb_wall)       &
    52836391                                           * surf_usm_v(l)%ddz_wall(nzb_wall,m) )     &
    52846392                                         / ( surf_usm_v(l)%ddz_green(nzt_wall,m)      &
     
    52886396                                         surf_usm_v(l)%ddz_wall_stag(nzb_wall,m)
    52896397
    5290 !dummy value for testing
    5291 surf_usm_v(l)%iwghf_eb(m) = 0.
    5292 
    52936398              IF ( indoor_model ) then
    52946399                 DO  kw = nzb_wall+1, nzt_wall-1
    52956400                     wtend(kw) = (1.0_wp / surf_usm_v(l)%rho_c_wall(kw,m))        &
    5296                               * (   surf_usm_v(l)%lambda_h(kw,m)                  &
     6401                              * (   surf_usm_v(l)%lambda_h(kw,m)  * wall_mod(kw)                &
    52976402                                 * ( t_wall_v(l)%t(kw+1,m) - t_wall_v(l)%t(kw,m) )&
    52986403                                 * surf_usm_v(l)%ddz_wall(kw+1,m)                 &
    5299                               - surf_usm_v(l)%lambda_h(kw-1,m)                    &
     6404                              - surf_usm_v(l)%lambda_h(kw-1,m)  * wall_mod(kw-1)                  &
    53006405                                 * ( t_wall_v(l)%t(kw,m) - t_wall_v(l)%t(kw-1,m) )&
    53016406                                 * surf_usm_v(l)%ddz_wall(kw,m)                   &
     
    53036408                 ENDDO
    53046409                 wtend(nzt_wall) = (1.0_wp / surf_usm_v(l)%rho_c_wall(nzt_wall,m)) * &
    5305                                          ( surf_usm_v(l)%lambda_h(nzt_wall-1,m) *    &
     6410                                         ( -surf_usm_v(l)%lambda_h(nzt_wall-1,m) * wall_mod(nzt_wall-1)*    &
    53066411                                           ( t_wall_v(l)%t(nzt_wall,m)               &
    53076412                                           - t_wall_v(l)%t(nzt_wall-1,m) ) *         &
     
    53126417                 DO  kw = nzb_wall+1, nzt_wall
    53136418                     wtend(kw) = (1.0_wp / surf_usm_v(l)%rho_c_wall(kw,m))        &
    5314                               * (   surf_usm_v(l)%lambda_h(kw,m)                  &
     6419                              * (   surf_usm_v(l)%lambda_h(kw,m) * wall_mod(kw)                 &
    53156420                                 * ( t_wall_v(l)%t(kw+1,m) - t_wall_v(l)%t(kw,m) )&
    53166421                                 * surf_usm_v(l)%ddz_wall(kw+1,m)                 &
    5317                               - surf_usm_v(l)%lambda_h(kw-1,m)                    &
     6422                              - surf_usm_v(l)%lambda_h(kw-1,m)  * wall_mod(kw-1)                  &
    53186423                                 * ( t_wall_v(l)%t(kw,m) - t_wall_v(l)%t(kw-1,m) )&
    53196424                                 * surf_usm_v(l)%ddz_wall(kw,m)                   &
     
    53286433                                 * surf_usm_v(l)%tt_wall_m(nzb_wall:nzt_wall,m) )   
    53296434
     6435if (.NOT. spinup) then
     6436              win_absorp = -log(surf_usm_v(l)%transmissivity(m)) / surf_usm_v(l)%zw_window(nzt_wall,m)
    53306437!--           prognostic equation for window temperature t_window_v
    53316438              wintend(:) = 0.0_wp
     
    53376444                                      + surf_usm_v(l)%wghf_eb_window(m)               &
    53386445                                      + surf_usm_v(l)%rad_sw_in(m)                    &
    5339                                         * (1.0_wp - exp(-surf_usm_v(l)%transmissivity(m) &
     6446                                        * (1.0_wp - exp(-win_absorp                  &
    53406447                                        * surf_usm_v(l)%zw_window(nzb_wall,m) ) )     &
    53416448                                      ) * surf_usm_v(l)%ddz_window_stag(nzb_wall,m)
     
    53516458                                 * surf_usm_v(l)%ddz_window(kw,m)                      &
    53526459                              + surf_usm_v(l)%rad_sw_in(m)                             &
    5353                                  * (exp(-surf_usm_v(l)%transmissivity(m)            &
     6460                                 * (exp(-win_absorp                                    &
    53546461                                    * surf_usm_v(l)%zw_window(kw-1,m)       )          &
    5355                                         - exp(-surf_usm_v(l)%transmissivity(m)      &
     6462                                        - exp(-win_absorp                              &
    53566463                                        * surf_usm_v(l)%zw_window(kw,m) ) )            &
    53576464                                 ) * surf_usm_v(l)%ddz_window_stag(kw,m)
    53586465                  ENDDO
    5359                   wintend(nzt_wall) = (1.0_wp / surf_usm_v(l)%rho_c_window(nzt_wall,m)) * &
    5360                                           ( surf_usm_v(l)%lambda_h_window(nzt_wall-1,m) * &
    5361                                             ( t_window_v(l)%t(nzt_wall,m)                 &
    5362                                             - t_window_v(l)%t(nzt_wall-1,m) ) *           &
    5363                                             surf_usm_v(l)%ddz_window(nzt_wall,m)          &
    5364                                           + surf_usm_v(l)%iwghf_eb_window(m)              &
    5365                                           + surf_usm_v(l)%rad_sw_in(m)                    &
    5366                                             * (1.0_wp - exp(-surf_usm_v(l)%transmissivity(m) &
    5367                                             * surf_usm_v(l)%zw_window(nzt_wall,m) ) )     &
     6466                  wintend(nzt_wall) = (1.0_wp / surf_usm_v(l)%rho_c_window(nzt_wall,m)) *  &
     6467                                          ( -surf_usm_v(l)%lambda_h_window(nzt_wall-1,m) * &
     6468                                            ( t_window_v(l)%t(nzt_wall,m)                  &
     6469                                            - t_window_v(l)%t(nzt_wall-1,m) ) *            &
     6470                                            surf_usm_v(l)%ddz_window(nzt_wall,m)           &
     6471                                          + surf_usm_v(l)%iwghf_eb_window(m)               &
     6472                                          + surf_usm_v(l)%rad_sw_in(m)                     &
     6473                                            * (exp(-win_absorp                             &
     6474                                          * surf_usm_v(l)%zw_window(nzt_wall-1,m) )        &
     6475                                        - exp(-win_absorp                                  &
     6476                                            * surf_usm_v(l)%zw_window(nzt_wall,m) ) )      &
    53686477                                          ) * surf_usm_v(l)%ddz_window_stag(nzt_wall,m)
    53696478              ELSE
     
    53776486                                 * surf_usm_v(l)%ddz_window(kw,m)                      &
    53786487                              + surf_usm_v(l)%rad_sw_in(m)                             &
    5379                                  * (exp(-surf_usm_v(l)%transmissivity(m)            &
     6488                                 * (exp(-win_absorp                                    &
    53806489                                    * surf_usm_v(l)%zw_window(kw-1,m)       )          &
    5381                                         - exp(-surf_usm_v(l)%transmissivity(m)      &
     6490                                        - exp(-win_absorp                              &
    53826491                                        * surf_usm_v(l)%zw_window(kw,m) ) )            &
    53836492                                 ) * surf_usm_v(l)%ddz_window_stag(kw,m)
     
    53906499                                 * wintend(nzb_wall:nzt_wall) + tsc(3)           &
    53916500                                 * surf_usm_v(l)%tt_window_m(nzb_wall:nzt_wall,m) )   
     6501endif
    53926502
    53936503!
     
    54076517                  ENDIF
    54086518              ENDIF
     6519
     6520
     6521if (.NOT. spinup) then
    54096522!--           calculate t_window tendencies for the next Runge-Kutta step
    54106523              IF ( timestep_scheme(1:5) == 'runge' )  THEN
     
    54226535                  ENDIF
    54236536              ENDIF
     6537endif
     6538
    54246539           ENDDO
    54256540        ENDDO
     
    54416556        INTEGER(iwp) ::  i,j,k,l,kw, m                      !< running indices
    54426557
    5443         REAL(wp), DIMENSION(nzb_wall:nzt_wall) :: gtend  !< tendency
     6558        REAL(wp)     :: ke, lambda_h_green_sat
     6559        REAL(wp)     :: h_vg !< Van Genuchten coef. h
     6560        REAL(wp)     :: drho_l_lv
     6561
     6562        REAL(wp), DIMENSION(nzb_wall:nzt_wall) :: gtend,tend  !< tendency
     6563
     6564        REAL(wp), DIMENSION(nzb_wall:nzt_wall) :: root_extr_green
     6565
     6566        REAL(wp), DIMENSION(nzb_wall:nzt_wall+1) :: lambda_green_temp !< temp. lambda
     6567        REAL(wp), DIMENSION(nzb_wall:nzt_wall+1) :: gamma_green_temp !< temp. gamma
     6568
     6569        LOGICAL :: conserve_water_content = .true.
     6570
     6571
     6572        drho_l_lv = 1.0_wp / (rho_l * l_v)
    54446573
    54456574!
    54466575!--     For horizontal surfaces                                   
    54476576        DO  m = 1, surf_usm_h%ns
     6577
     6578if (surf_usm_h%frac(ind_pav_green,m).gt.0.0_wp) then
    54486579!
    54496580!--        Obtain indices
     
    54526583           k = surf_usm_h%k(m)
    54536584
     6585           DO  kw = nzb_wall, nzt_wall
     6586!
     6587!--           Calculate volumetric heat capacity of the soil, taking
     6588!--           into account water content
     6589              surf_usm_h%rho_c_total_green(kw,m) = (surf_usm_h%rho_c_green(kw,m) * (1.0_wp - swc_sat_h(kw,m)) &
     6590                                   + rho_c_water * swc_h(kw,m))
     6591   
     6592!
     6593!--           Calculate soil heat conductivity at the center of the soil
     6594!--           layers
     6595              lambda_h_green_sat = lambda_h_green_sm ** (1.0_wp - swc_sat_h(kw,m)) *    &
     6596                             lambda_h_water ** swc_h(kw,m)
     6597   
     6598              ke = 1.0_wp + LOG10(MAX(0.1_wp,swc_h(kw,m)             &
     6599                   / swc_sat_h(kw,m)))
     6600   
     6601              lambda_green_temp(kw) = ke * (lambda_h_green_sat - lambda_h_green_dry) +    &
     6602                               lambda_h_green_dry
     6603
     6604           ENDDO
     6605
     6606
     6607!
     6608!--        Calculate soil heat conductivity (lambda_h) at the _stag level
     6609!--        using linear interpolation. For pavement surface, the
     6610!--        true pavement depth is considered
     6611           DO  kw = nzb_wall, nzt_wall
     6612             surf_usm_h%lambda_h_green(kw,m) = ( lambda_green_temp(kw+1) + lambda_green_temp(kw) )  &
     6613                                   * 0.5_wp
     6614           ENDDO
     6615!           surf_usm_h%lambda_h_green(nzt_wall+1,m) = lambda_green_temp(nzt_wall+1)           
     6616!--------------------------------------------------------------------------
     6617           
    54546618           t_green_h(nzt_wall+1,m) = t_wall_h(nzb_wall,m)
    54556619!
    54566620!--        prognostic equation for ground/roof temperature t_green_h
    54576621           gtend(:) = 0.0_wp
    5458            gtend(nzb_wall) = (1.0_wp / surf_usm_h%rho_c_green(nzb_wall,m)) *    &
     6622           gtend(nzb_wall) = (1.0_wp / surf_usm_h%rho_c_total_green(nzb_wall,m)) *    &
    54596623                                      ( surf_usm_h%lambda_h_green(nzb_wall,m) * &
    54606624                                        ( t_green_h(nzb_wall+1,m)               &
     
    54656629           
    54666630            DO  kw = nzb_wall+1, nzt_wall
    5467                 gtend(kw) = (1.0_wp / surf_usm_h%rho_c_green(kw,m))             &
     6631                gtend(kw) = (1.0_wp / surf_usm_h%rho_c_total_green(kw,m))             &
    54686632                               * (   surf_usm_h%lambda_h_green(kw,m)            &
    54696633                                  * ( t_green_h(kw+1,m) - t_green_h(kw,m) )     &
     
    54966660               ENDIF
    54976661           ENDIF
     6662
     6663!--------------------------------------------------------------
     6664                DO  kw = nzb_wall, nzt_wall
     6665
     6666!
     6667!--                Calculate soil diffusivity at the center of the soil layers
     6668                   lambda_green_temp(kw) = (- b_ch * surf_usm_h%gamma_w_green_sat(kw,m) * psi_sat       &
     6669                                     / swc_sat_h(kw,m) ) * ( MAX( swc_h(kw,m),    &
     6670                                     wilt_h(kw,m) ) / swc_sat_h(kw,m) )**(           &
     6671                                     b_ch + 2.0_wp )
     6672
     6673!
     6674!--                Parametrization of Van Genuchten
     6675                   IF ( soil_type /= 7 )  THEN
     6676!
     6677!--                   Calculate the hydraulic conductivity after Van Genuchten
     6678!--                   (1980)
     6679                      h_vg = ( ( (swc_res_h(kw,m) - swc_sat_h(kw,m)) / ( swc_res_h(kw,m) -    &
     6680                                 MAX( swc_h(kw,m), wilt_h(kw,m) ) ) )**(      &
     6681                                 surf_usm_h%n_vg_green(m) / (surf_usm_h%n_vg_green(m) - 1.0_wp ) ) - 1.0_wp  &
     6682                             )**( 1.0_wp / surf_usm_h%n_vg_green(m) ) / surf_usm_h%alpha_vg_green(m)
     6683
     6684
     6685                      gamma_green_temp(kw) = surf_usm_h%gamma_w_green_sat(kw,m) * ( ( (1.0_wp +         &
     6686                                      ( surf_usm_h%alpha_vg_green(m) * h_vg )**surf_usm_h%n_vg_green(m))**(  &
     6687                                      1.0_wp - 1.0_wp / surf_usm_h%n_vg_green(m) ) - (        &
     6688                                      surf_usm_h%alpha_vg_green(m) * h_vg )**( surf_usm_h%n_vg_green(m)      &
     6689                                      - 1.0_wp) )**2 )                         &
     6690                                      / ( ( 1.0_wp + ( surf_usm_h%alpha_vg_green(m) * h_vg    &
     6691                                      )**surf_usm_h%n_vg_green(m) )**( ( 1.0_wp  - 1.0_wp     &
     6692                                      / surf_usm_h%n_vg_green(m) ) *( surf_usm_h%l_vg_green(m) + 2.0_wp) ) )
     6693
     6694!
     6695!--                Parametrization of Clapp & Hornberger
     6696                   ELSE
     6697                      gamma_green_temp(kw) = surf_usm_h%gamma_w_green_sat(kw,m) * ( swc_h(kw,m)       &
     6698                                      / swc_sat_h(kw,m) )**(2.0_wp * b_ch + 3.0_wp)
     6699                   ENDIF
     6700
     6701                ENDDO
     6702
     6703!
     6704!--             Prognostic equation for soil moisture content. Only performed,
     6705!--             when humidity is enabled in the atmosphere
     6706                IF ( humidity )  THEN
     6707!
     6708!--                Calculate soil diffusivity (lambda_w) at the _stag level
     6709!--                using linear interpolation. To do: replace this with
     6710!--                ECMWF-IFS Eq. 8.81
     6711                   DO  kw = nzb_wall, nzt_wall-1
     6712                     
     6713                      surf_usm_h%lambda_w_green(kw,m) = ( lambda_green_temp(kw+1) + lambda_green_temp(kw) )  &
     6714                                        * 0.5_wp
     6715                      surf_usm_h%gamma_w_green(kw,m)  = ( gamma_green_temp(kw+1) + gamma_green_temp(kw) )    &
     6716                                        * 0.5_wp
     6717
     6718                   ENDDO
     6719
     6720!
     6721!
     6722!--                In case of a closed bottom (= water content is conserved),
     6723!--                set hydraulic conductivity to zero to that no water will be
     6724!--                lost in the bottom layer.
     6725                   IF ( conserve_water_content )  THEN
     6726                      surf_usm_h%gamma_w_green(kw,m) = 0.0_wp
     6727                   ELSE
     6728                      surf_usm_h%gamma_w_green(kw,m) = gamma_green_temp(nzt_wall)
     6729                   ENDIF     
     6730
     6731!--                The root extraction (= root_extr * qsws_veg_eb / (rho_l     
     6732!--                * l_v)) ensures the mass conservation for water. The         
     6733!--                transpiration of plants equals the cumulative withdrawals by
     6734!--                the roots in the soil. The scheme takes into account the
     6735!--                availability of water in the soil layers as well as the root
     6736!--                fraction in the respective layer. Layer with moisture below
     6737!--                wilting point will not contribute, which reflects the
     6738!--                preference of plants to take water from moister layers.
     6739
     6740!
     6741!--                Calculate the root extraction (ECMWF 7.69, the sum of
     6742!--                root_extr = 1). The energy balance solver guarantees a
     6743!--                positive transpiration, so that there is no need for an
     6744!--                additional check.
     6745                   m_total = 0.0_wp
     6746                   DO  kw = nzb_wall, nzt_wall
     6747                       IF ( swc_h(kw,m) > wilt_h(kw,m) )  THEN
     6748                          m_total = m_total + rootfr_h(kw,m) * swc_h(kw,m)
     6749                       ENDIF
     6750                   ENDDO 
     6751
     6752                   IF ( m_total > 0.0_wp )  THEN
     6753                      DO  kw = nzb_wall, nzt_wall
     6754                         IF ( swc_h(kw,m) > wilt_h(kw,m) )  THEN
     6755                            root_extr_green(kw) = rootfr_h(kw,m) * swc_h(kw,m)      &
     6756                                                            / m_total
     6757                         ELSE
     6758                            root_extr_green(kw) = 0.0_wp
     6759                         ENDIF
     6760                      ENDDO
     6761                   ENDIF
     6762
     6763!
     6764!--                Prognostic equation for soil water content m_soil.
     6765                   tend(:) = 0.0_wp
     6766
     6767                   tend(nzb_wall) = ( surf_usm_h%lambda_w_green(nzb_wall,m) * (               &
     6768                            swc_h(nzb_wall+1,m) - swc_h(nzb_wall,m) )    &
     6769                            * surf_usm_h%ddz_green(nzb_wall+1,m) - surf_usm_h%gamma_w_green(nzb_wall,m) - ( &
     6770                               root_extr_green(nzb_wall) * surf_usm_h%qsws_veg_eb(m)          &
     6771!                                + surf_usm_h%qsws_soil_eb_green(m)
     6772                                  ) * drho_l_lv )             &
     6773                                 * surf_usm_h%ddz_green_stag(nzb_wall,m)
     6774
     6775                   DO  kw = nzb_wall+1, nzt_wall-1
     6776                      tend(kw) = ( surf_usm_h%lambda_w_green(kw,m) * ( swc_h(kw+1,m)          &
     6777                                - swc_h(kw,m) ) * surf_usm_h%ddz_green(kw+1,m)              &
     6778                                - surf_usm_h%gamma_w_green(kw,m)                               &
     6779                                - surf_usm_h%lambda_w_green(kw-1,m) * (swc_h(kw,m) -         &
     6780                                swc_h(kw-1,m)) * surf_usm_h%ddz_green(kw,m)                 &
     6781                                + surf_usm_h%gamma_w_green(kw-1,m) - (root_extr_green(kw)             &
     6782                                * surf_usm_h%qsws_veg_eb(m) * drho_l_lv)                &
     6783                                ) * surf_usm_h%ddz_green_stag(kw,m)
     6784
     6785                   ENDDO
     6786                   tend(nzt_wall) = ( - surf_usm_h%gamma_w_green(nzt_wall,m)                  &
     6787                                           - surf_usm_h%lambda_w_green(nzt_wall-1,m)          &
     6788                                           * (swc_h(nzt_wall,m)             &
     6789                                           - swc_h(nzt_wall-1,m))           &
     6790                                           * surf_usm_h%ddz_green(nzt_wall,m)                &
     6791                                           + surf_usm_h%gamma_w_green(nzt_wall-1,m) - (       &
     6792                                             root_extr_green(nzt_wall)               &
     6793                                           * surf_usm_h%qsws_veg_eb(m) * drho_l_lv  )   &
     6794                                     ) * surf_usm_h%ddz_green_stag(nzt_wall,m)             
     6795
     6796                   swc_h_p(nzb_wall:nzt_wall,m) = swc_h(nzb_wall:nzt_wall,m)&
     6797                                                   + dt_3d * ( tsc(2) * tend(:)   &
     6798                                                   + tsc(3) * surf_usm_h%tswc_h_m(:,m) )   
     6799   
     6800!
     6801!--                Account for dry soils (find a better solution here!)
     6802                   DO  kw = nzb_wall, nzt_wall
     6803                      IF ( swc_h_p(kw,m) < 0.0_wp )  swc_h_p(kw,m) = 0.0_wp
     6804                   ENDDO
     6805
     6806!
     6807!--                Calculate m_soil tendencies for the next Runge-Kutta step
     6808                   IF ( timestep_scheme(1:5) == 'runge' )  THEN
     6809                      IF ( intermediate_timestep_count == 1 )  THEN
     6810                         DO  kw = nzb_wall, nzt_wall
     6811                            surf_usm_h%tswc_h_m(kw,m) = tend(kw)
     6812                         ENDDO
     6813                      ELSEIF ( intermediate_timestep_count <                   &
     6814                               intermediate_timestep_count_max )  THEN
     6815                         DO  kw = nzb_wall, nzt_wall
     6816                            surf_usm_h%tswc_h_m(kw,m) = -9.5625_wp * tend(kw) + 5.3125_wp&
     6817                                     * surf_usm_h%tswc_h_m(kw,m)
     6818                         ENDDO
     6819                      ENDIF
     6820                   ENDIF
     6821                ENDIF
     6822!--------------------------------------------------------------
     6823ENDIF
     6824           
    54986825        ENDDO
    54996826
     
    55026829        DO  l = 0, 3                             
    55036830           DO  m = 1, surf_usm_v(l)%ns
     6831
     6832if (surf_usm_v(l)%frac(ind_pav_green,m).gt.0.0_wp) then
     6833  if (1.gt.2) then
    55046834!
    55056835!--           Obtain indices
     
    55536883                  ENDIF
    55546884              ENDIF
     6885endif
     6886
     6887DO  kw = nzb_wall, nzt_wall+1
     6888t_green_v(l)%t(kw,m) = t_wall_v(l)%t(nzb_wall,m)
     6889ENDDO
     6890             
     6891ENDIF
    55556892
    55566893           ENDDO
     
    55866923                           roof_inner_temperature,                             &
    55876924                           soil_inner_temperature,                             &
    5588                            window_inner_temperature
     6925                           window_inner_temperature,                           &
     6926                           usm_wall_mod
    55896927
    55906928       NAMELIST /urban_surface_parameters/                                     &
     
    56046942                           roof_inner_temperature,                             &
    56056943                           soil_inner_temperature,                             &
    5606                            window_inner_temperature
     6944                           window_inner_temperature,                           &
     6945                           usm_wall_mod
    56076946                           
    56086947                           
     
    58427181       LOGICAL, INTENT(OUT)  ::  found
    58437182       
    5844        REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE   ::  tmp_surf_h, tmp_surf_window_h, tmp_surf_green_h
     7183       REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE   ::  tmp_surf_wall_h, tmp_surf_window_h, tmp_surf_green_h
    58457184       REAL(wp), DIMENSION(:,:), ALLOCATABLE, SAVE ::  tmp_wall_h, tmp_window_h, tmp_green_h
    58467185       
    5847        TYPE( t_surf_vertical ), DIMENSION(0:3), SAVE ::  tmp_surf_v, tmp_surf_window_v, tmp_surf_green_v
     7186       TYPE( t_surf_vertical ), DIMENSION(0:3), SAVE ::  tmp_surf_wall_v, tmp_surf_window_v, tmp_surf_green_v
    58487187       TYPE( t_wall_vertical ), DIMENSION(0:3), SAVE ::  tmp_wall_v, tmp_window_v, tmp_green_v
    58497188
     
    58587197                   READ ( 13 ) ns_h_on_file_usm
    58597198               
    5860                    IF ( ALLOCATED( tmp_surf_h ) ) DEALLOCATE( tmp_surf_h )
     7199                   IF ( ALLOCATED( tmp_surf_wall_h ) ) DEALLOCATE( tmp_surf_wall_h )
    58617200                   IF ( ALLOCATED( tmp_wall_h ) ) DEALLOCATE( tmp_wall_h )
    58627201                   IF ( ALLOCATED( tmp_surf_window_h ) )                       &
     
    58737212!--                current processor, as the number of processors between
    58747213!--                restarts can change.
    5875                    ALLOCATE( tmp_surf_h(1:ns_h_on_file_usm) )
     7214                   ALLOCATE( tmp_surf_wall_h(1:ns_h_on_file_usm) )
    58767215                   ALLOCATE( tmp_wall_h(nzb_wall:nzt_wall+1,                   &
    58777216                                        1:ns_h_on_file_usm) )
     
    58907229
    58917230                   DO  l = 0, 3
    5892                       IF ( ALLOCATED( tmp_surf_v(l)%t ) )                      &
    5893                          DEALLOCATE( tmp_surf_v(l)%t )
     7231                      IF ( ALLOCATED( tmp_surf_wall_v(l)%t ) )                      &
     7232                         DEALLOCATE( tmp_surf_wall_v(l)%t )
    58947233                      IF ( ALLOCATED( tmp_wall_v(l)%t ) )                      &
    58957234                         DEALLOCATE( tmp_wall_v(l)%t )
     
    59117250!--                restarts can change.
    59127251                   DO  l = 0, 3
    5913                       ALLOCATE( tmp_surf_v(l)%t(1:ns_v_on_file_usm(l)) )
     7252                      ALLOCATE( tmp_surf_wall_v(l)%t(1:ns_v_on_file_usm(l)) )
    59147253                      ALLOCATE( tmp_wall_v(l)%t(nzb_wall:nzt_wall+1,           &
    59157254                                                1:ns_v_on_file_usm(l) ) )
     
    59507289                ENDIF
    59517290         
    5952              CASE ( 't_surf_h' )
     7291             CASE ( 't_surf_wall_h' )
    59537292#if defined( __nopointer )                   
    59547293                IF ( k == 1 )  THEN
    5955                    IF ( .NOT.  ALLOCATED( t_surf_h ) )                         &
    5956                       ALLOCATE( t_surf_h(1:surf_usm_h%ns) )
    5957                    READ ( 13 )  tmp_surf_h
     7294                   IF ( .NOT.  ALLOCATED( t_surf_wall_h ) )                         &
     7295                      ALLOCATE( t_surf_wall_h(1:surf_usm_h%ns) )
     7296                   READ ( 13 )  tmp_surf_wall_h
    59587297                ENDIF
    59597298                CALL surface_restore_elements(                                 &
    5960                                         t_surf_h, tmp_surf_h,                  &
     7299                                        t_surf_wall_h, tmp_surf_wall_h,                  &
    59617300                                        surf_usm_h%start_index,                & 
    59627301                                        start_index_on_file,                   &
     
    59687307#else                 
    59697308                IF ( k == 1 )  THEN
    5970                    IF ( .NOT.  ALLOCATED( t_surf_h_1 ) )                       &
    5971                       ALLOCATE( t_surf_h_1(1:surf_usm_h%ns) )
    5972                    READ ( 13 )  tmp_surf_h
     7309                   IF ( .NOT.  ALLOCATED( t_surf_wall_h_1 ) )                       &
     7310                      ALLOCATE( t_surf_wall_h_1(1:surf_usm_h%ns) )
     7311                   READ ( 13 )  tmp_surf_wall_h
    59737312                ENDIF             
    59747313                CALL surface_restore_elements(                                 &
    5975                                         t_surf_h_1, tmp_surf_h,                &
    5976                                         surf_usm_h%start_index,                & 
     7314                                        t_surf_wall_h_1, tmp_surf_wall_h,      &
     7315                                        surf_usm_h%start_index,                &
    59777316                                        start_index_on_file,                   &
    59787317                                        end_index_on_file,                     &
     
    59837322#endif
    59847323
    5985              CASE ( 't_surf_v(0)' )
     7324             CASE ( 't_surf_wall_v(0)' )
    59867325#if defined( __nopointer )           
    59877326                IF ( k == 1 )  THEN
    5988                    IF ( .NOT.  ALLOCATED( t_surf_v(0)%t ) )                    &
     7327                   IF ( .NOT.  ALLOCATED( t_surf_wall_v(0)%t ) )                    &
    59897328                      ALLOCATE( t_surf_v(0)%t(1:surf_usm_v(0)%ns) )
    5990                    READ ( 13 )  tmp_surf_v(0)%t
     7329                   READ ( 13 )  tmp_surf_wall_v(0)%t
    59917330                ENDIF
    59927331                CALL surface_restore_elements(                                 &
    5993                                         t_surf_v(0)%t, tmp_surf_v(0)%t,        &
     7332                                        t_surf_wall_v(0)%t, tmp_surf_wall_v(0)%t,        &
    59947333                                        surf_usm_v(0)%start_index,             &
    59957334                                        start_index_on_file,                   &
     
    60017340#else                     
    60027341                IF ( k == 1 )  THEN
    6003                    IF ( .NOT.  ALLOCATED( t_surf_v_1(0)%t ) )                  &
    6004                       ALLOCATE( t_surf_v_1(0)%t(1:surf_usm_v(0)%ns) )
    6005                    READ ( 13 )  tmp_surf_v(0)%t
     7342                   IF ( .NOT.  ALLOCATED( t_surf_wall_v_1(0)%t ) )                  &
     7343                      ALLOCATE( t_surf_wall_v_1(0)%t(1:surf_usm_v(0)%ns) )
     7344                   READ ( 13 )  tmp_surf_wall_v(0)%t
    60067345                ENDIF
    60077346                CALL surface_restore_elements(                                 &
    6008                                         t_surf_v_1(0)%t, tmp_surf_v(0)%t,      &
     7347                                        t_surf_wall_v_1(0)%t, tmp_surf_wall_v(0)%t,      &
    60097348                                        surf_usm_v(0)%start_index,             &
    60107349                                        start_index_on_file,                   &
     
    60167355#endif
    60177356                     
    6018              CASE ( 't_surf_v(1)' )
     7357             CASE ( 't_surf_wall_v(1)' )
    60197358#if defined( __nopointer )       
    60207359                IF ( k == 1 )  THEN
    6021                    IF ( .NOT.  ALLOCATED( t_surf_v(1)%t ) )                    &
    6022                       ALLOCATE( t_surf_v(1)%t(1:surf_usm_v(1)%ns) )
    6023                    READ ( 13 )  tmp_surf_v(1)%t
     7360                   IF ( .NOT.  ALLOCATED( t_surf_wall_v(1)%t ) )                    &
     7361                      ALLOCATE( t_surf_wall_v(1)%t(1:surf_usm_v(1)%ns) )
     7362                   READ ( 13 )  tmp_surf_wall_v(1)%t
    60247363                ENDIF
    60257364                CALL surface_restore_elements(                                 &
    6026                                         t_surf_v(1)%t, tmp_surf_v(1)%t,        &
     7365                                        t_surf_wall_v(1)%t, tmp_surf_wall_v(1)%t,        &
    60277366                                        surf_usm_v(1)%start_index,             &
    60287367                                        start_index_on_file,                   &
     
    60347373#else                     
    60357374                IF ( k == 1 )  THEN
    6036                    IF ( .NOT.  ALLOCATED( t_surf_v_1(1)%t ) )                  &
    6037                       ALLOCATE( t_surf_v_1(1)%t(1:surf_usm_v(1)%ns) )
    6038                    READ ( 13 )  tmp_surf_v(1)%t
     7375                   IF ( .NOT.  ALLOCATED( t_surf_wall_v_1(1)%t ) )                  &
     7376                      ALLOCATE( t_surf_wall_v_1(1)%t(1:surf_usm_v(1)%ns) )
     7377                   READ ( 13 )  tmp_surf_wall_v(1)%t
    60397378                ENDIF
    60407379                CALL surface_restore_elements(                                 &
    6041                                         t_surf_v_1(1)%t, tmp_surf_v(1)%t,      &
     7380                                        t_surf_wall_v_1(1)%t, tmp_surf_wall_v(1)%t,      &
    60427381                                        surf_usm_v(1)%start_index,             &
    60437382                                        start_index_on_file,                   &
     
    60497388#endif
    60507389
    6051              CASE ( 't_surf_v(2)' )
     7390             CASE ( 't_surf_wall_v(2)' )
    60527391#if defined( __nopointer )         
    60537392                IF ( k == 1 )  THEN
    6054                    IF ( .NOT.  ALLOCATED( t_surf_v(2)%t ) )                    &
    6055                       ALLOCATE( t_surf_v(2)%t(1:surf_usm_v(2)%ns) )
    6056                    READ ( 13 )  tmp_surf_v(2)%t
     7393                   IF ( .NOT.  ALLOCATED( t_surf_wall_v(2)%t ) )                    &
     7394                      ALLOCATE( t_surf_wall_v(2)%t(1:surf_usm_v(2)%ns) )
     7395                   READ ( 13 )  tmp_surf_wall_v(2)%t
    60577396                ENDIF
    60587397                CALL surface_restore_elements(                                 &
    6059                                         t_surf_v(2)%t, tmp_surf_v(2)%t,        &
     7398                                        t_surf_wall_v(2)%t, tmp_surf_wall_v(2)%t,        &
    60607399                                        surf_usm_v(2)%start_index,             &
    60617400                                        start_index_on_file,                   &
     
    60677406#else                     
    60687407                IF ( k == 1 )  THEN
    6069                    IF ( .NOT.  ALLOCATED( t_surf_v_1(2)%t ) )                  &
    6070                       ALLOCATE( t_surf_v_1(2)%t(1:surf_usm_v(2)%ns) )
    6071                    READ ( 13 )  tmp_surf_v(2)%t
     7408                   IF ( .NOT.  ALLOCATED( t_surf_wall_v_1(2)%t ) )                  &
     7409                      ALLOCATE( t_surf_wall_v_1(2)%t(1:surf_usm_v(2)%ns) )
     7410                   READ ( 13 )  tmp_surf_wall_v(2)%t
    60727411                ENDIF
    60737412                CALL surface_restore_elements(                                 &
    6074                                         t_surf_v_1(2)%t, tmp_surf_v(2)%t,      &
     7413                                        t_surf_wall_v_1(2)%t, tmp_surf_wall_v(2)%t,      &
    60757414                                        surf_usm_v(2)%start_index,             & 
    60767415                                        start_index_on_file,                   &
     
    60827421#endif
    60837422                     
    6084              CASE ( 't_surf_v(3)' )
     7423             CASE ( 't_surf_wall_v(3)' )
    60857424#if defined( __nopointer )   
    60867425                IF ( k == 1 )  THEN
    6087                    IF ( .NOT.  ALLOCATED( t_surf_v(3)%t ) )                    &
    6088                       ALLOCATE( t_surf_v(3)%t(1:surf_usm_v(3)%ns) )
    6089                    READ ( 13 )  tmp_surf_v(3)%t
     7426                   IF ( .NOT.  ALLOCATED( t_surf_wall_v(3)%t ) )                    &
     7427                      ALLOCATE( t_surf_wall_v(3)%t(1:surf_usm_v(3)%ns) )
     7428                   READ ( 13 )  tmp_surf_wall_v(3)%t
    60907429                ENDIF
    60917430                CALL surface_restore_elements(                                 &
    6092                                         t_surf_v(3)%t, tmp_surf_v(3)%t,        &
     7431                                        t_surf_wall_v(3)%t, tmp_surf_wall_v(3)%t,        &
    60937432                                        surf_usm_v(3)%start_index,             &
    60947433                                        start_index_on_file,                   &
     
    61007439#else                     
    61017440                IF ( k == 1 )  THEN
    6102                    IF ( .NOT.  ALLOCATED( t_surf_v_1(3)%t ) )                  &
    6103                       ALLOCATE( t_surf_v_1(3)%t(1:surf_usm_v(3)%ns) )
    6104                    READ ( 13 )  tmp_surf_v(3)%t
     7441                   IF ( .NOT.  ALLOCATED( t_surf_wall_v_1(3)%t ) )                  &
     7442                      ALLOCATE( t_surf_wall_v_1(3)%t(1:surf_usm_v(3)%ns) )
     7443                   READ ( 13 )  tmp_surf_wall_v(3)%t
    61057444                ENDIF
    61067445                CALL surface_restore_elements(                                 &
    6107                                         t_surf_v_1(3)%t, tmp_surf_v(3)%t,      &
     7446                                        t_surf_wall_v_1(3)%t, tmp_surf_wall_v(3)%t,      &
    61087447                                        surf_usm_v(3)%start_index,             &
    61097448                                        start_index_on_file,                   &
     
    67068045                CALL surface_restore_elements(                                 &
    67078046                                        t_green_v(1)%t, tmp_green_v(1)%t,      &
    6708                                         surf_usm_v(1)%start_index,             &
     8047                                        surf_usm_v(1)%start_index,             & 
    67098048                                        start_index_on_file,                   &
    6710                                         end_index_on_file,                     &
     8049                                        end_index_on_file ,                    &
    67118050                                        nxlc, nysc,                            &
    67128051                                        nxlf, nxrf, nysf, nynf,                &
     
    67228061                CALL surface_restore_elements(                                 &
    67238062                                        t_green_v_1(1)%t, tmp_green_v(1)%t,    &
    6724                                         surf_usm_v(1)%start_index,             &
     8063                                        surf_usm_v(1)%start_index,             & 
    67258064                                        start_index_on_file,                   &
    67268065                                        end_index_on_file,                     &
     
    68798218                                        surf_usm_v(1)%start_index,             &
    68808219                                        start_index_on_file,                   &
    6881                                         end_index_on_file,                     &
     8220                                        end_index_on_file ,                    &
    68828221                                        nxlc, nysc,                            &
    68838222                                        nxlf, nxrf, nysf, nynf,                &
     
    70028341        INTEGER(iwp), DIMENSION(0:17, nysg:nyng, nxlg:nxrg)   :: usm_par
    70038342        REAL(wp), DIMENSION(1:14, nysg:nyng, nxlg:nxrg)       :: usm_val
    7004         INTEGER(iwp)                                          :: k, l, iw, jw, kw, it, ip, ii, ij, m
     8343        INTEGER(iwp)                                          :: k, l, d, iw, jw, kw, it, ip, ii, ij, m
    70058344        INTEGER(iwp)                                          :: i, j
    70068345        INTEGER(iwp)                                          :: nz, roof, dirwe, dirsn
     
    75958934!--                     assign temperatures
    75968935                        IF ( d == 0 ) THEN
    7597                            t_surf_h(isurfl) = rtsurf
     8936                           t_surf_wall_h(isurfl) = rtsurf
    75988937                           t_wall_h(:,isurfl) = rtwall(:)
    75998938                        ELSE
    7600                            t_surf_v(d-1)%t(isurfl) = rtsurf
     8939                           t_surf_wall_v(d-1)%t(isurfl) = rtsurf
    76018940                           t_wall_v(d-1)%t(:,isurfl) = rtwall(:)
    76028941                        ENDIF
     
    76338972!> TODO better description
    76348973!------------------------------------------------------------------------------!
    7635     SUBROUTINE usm_surface_energy_balance
     8974    SUBROUTINE usm_surface_energy_balance( spinup )
     8975
    76368976
    76378977        IMPLICIT NONE
    76388978
    7639         INTEGER(iwp)                          :: i, j, k, l, m      !< running indices
     8979        INTEGER(iwp)                          :: i, j, k, l, d, m   !< running indices
    76408980       
    7641         REAL(wp)                              :: stend              !< surface tendency
     8981        INTEGER(iwp) ::  i_off     !< offset to determine index of surface element, seen from atmospheric grid point, for x
     8982        INTEGER(iwp) ::  j_off     !< offset to determine index of surface element, seen from atmospheric grid point, for y
     8983        INTEGER(iwp) ::  k_off     !< offset to determine index of surface element, seen from atmospheric grid point, for z
     8984
     8985        LOGICAL                               :: spinup             !true during spinup
     8986       
     8987        REAL(wp)                              :: u1,v1,w1           !< near wall u,v,w
     8988        REAL(wp)                              :: stend_wall              !< surface tendency
     8989       
    76428990        REAL(wp)                              :: stend_window       !< surface tendency
    76438991        REAL(wp)                              :: stend_green        !< surface tendency
     
    76488996        REAL(wp)                              :: coef_window_2      !< second  coeficient for prognostic window equation
    76498997        REAL(wp)                              :: coef_green_2       !< second  coeficient for prognostic green wall equation
    7650         REAL(wp)                              :: rho_cp             !< rho_wall_surface * cp
     8998        REAL(wp)                              :: rho_cp             !< rho_wall_surface * c_p
    76518999        REAL(wp)                              :: f_shf              !< factor for shf_eb
    76529000        REAL(wp)                              :: f_shf_window       !< factor for shf_eb window
     
    76599007        INTEGER(iwp)                          :: dhour              !< simulated hour of day (in UTC)
    76609008        REAL(wp)                              :: acoef              !< actual coefficient of diurnal profile of anthropogenic heat
    7661 
     9009        REAL(wp) ::  f1,          & !< resistance correction term 1
     9010                     f2,          & !< resistance correction term 2
     9011                     f3,          & !< resistance correction term 3
     9012                     e,           & !< water vapour pressure
     9013                     e_s,         & !< water vapour saturation pressure
     9014                     e_s_dt,      & !< derivate of e_s with respect to T
     9015                     tend,        & !< tendency
     9016                     dq_s_dt,     & !< derivate of q_s with respect to T
     9017                     f_qsws,      & !< factor for qsws
     9018                     f_qsws_veg,  & !< factor for qsws_veg
     9019                     f_qsws_liq,  & !< factor for qsws_liq
     9020                     m_liq_max,   & !< maxmimum value of the liq. water reservoir
     9021                     qv1,         & !< specific humidity at first grid level
     9022                     m_max_depth = 0.0002_wp, & ! Maximum capacity of the water reservoir (m)
     9023                     rho_lv,      &
     9024                     drho_l_lv,   &
     9025                     q_s
     9026
     9027!
     9028!--     Index offset of surface element point with respect to adjoining
     9029!--     atmospheric grid point
     9030        k_off = surf_usm_h%koff
     9031        j_off = surf_usm_h%joff
     9032        i_off = surf_usm_h%ioff
    76629033
    76639034!       
     
    76839054           ENDIF
    76849055#if ! defined( __nopointer )
     9056!            pt1  = pt(k,j,i)
     9057           IF ( humidity )  THEN
     9058              qv1 = q(k,j,i)
     9059           ELSE
     9060              qv1 = 0.0_wp
     9061           ENDIF
    76859062!
    76869063!--        calculate rho * c_p coefficient at surface layer
    76879064           rho_cp  = c_p * hyp(k) / ( r_d * surf_usm_h%pt1(m) * exner(k) )
     9065
     9066if (surf_usm_h%frac(ind_pav_green,m).gt.0.0_wp) then
     9067!
     9068!--         Calculate frequently used parameters
     9069            rho_lv    = rho_cp / c_p * l_v
     9070            drho_l_lv = 1.0_wp / (rho_l * l_v)
     9071endif
    76889072#endif
    76899073!
     
    77319115           f_shf_green  = rho_cp / surf_usm_h%r_a_green(m)
    77329116       
     9117!***************************************************************************************
     9118if (surf_usm_h%frac(ind_pav_green,m).gt.0.0_wp) then
     9119!--    Adapted from LSM:
     9120!--    Second step: calculate canopy resistance r_canopy
     9121!--    f1-f3 here are defined as 1/f1-f3 as in ECMWF documentation
     9122 
     9123!--    f1: correction for incoming shortwave radiation (stomata close at
     9124!--    night)
     9125       f1 = MIN( 1.0_wp, ( 0.004_wp * surf_usm_h%rad_sw_in(m) + 0.05_wp ) / &
     9126                        (0.81_wp * (0.004_wp * surf_usm_h%rad_sw_in(m)      &
     9127                         + 1.0_wp)) )
     9128!
     9129!--    f2: correction for soil moisture availability to plants (the
     9130!--    integrated soil moisture must thus be considered here)
     9131!--    f2 = 0 for very dry soils
     9132          m_total = 0.0_wp
     9133          DO  k = nzb_wall, nzt_wall+1
     9134              m_total = m_total + rootfr_h(nzb_wall,m)                              &
     9135                        * MAX(swc_h(nzb_wall,m),wilt_h(nzb_wall,m))
     9136          ENDDO
     9137
     9138          IF ( m_total > wilt_h(nzb_wall,m)  .AND.  m_total < fc_h(nzb_wall,m) )  THEN
     9139             f2 = ( m_total - wilt_h(nzb_wall,m) ) / (fc_h(nzb_wall,m) - wilt_h(nzb_wall,m) )
     9140          ELSEIF ( m_total >= fc_h(nzb_wall,m) )  THEN
     9141             f2 = 1.0_wp
     9142          ELSE
     9143             f2 = 1.0E-20_wp
     9144          ENDIF
     9145
     9146!
     9147!--    Calculate water vapour pressure at saturation
     9148       e_s = 0.01_wp * 610.78_wp * EXP( 17.269_wp * ( t_surf_green_h(m) &
     9149                     - 273.16_wp ) / ( t_surf_green_h(m) - 35.86_wp ) )
     9150!
     9151!--    f3: correction for vapour pressure deficit
     9152       IF ( surf_usm_h%g_d(m) /= 0.0_wp )  THEN
     9153!
     9154!--       Calculate vapour pressure
     9155          e  = qv1 * surface_pressure / ( qv1 + 0.622_wp )
     9156          f3 = EXP ( - surf_usm_h%g_d(m) * (e_s - e) )
     9157       ELSE
     9158          f3 = 1.0_wp
     9159       ENDIF
     9160
     9161!
     9162!--    Calculate canopy resistance. In case that c_veg is 0 (bare soils),
     9163!--    this calculation is obsolete, as r_canopy is not used below.
     9164!--    To do: check for very dry soil -> r_canopy goes to infinity
     9165       surf_usm_h%r_canopy(m) = surf_usm_h%r_canopy_min(m) /                               &
     9166                              ( surf_usm_h%lai(m) * f1 * f2 * f3 + 1.0E-20_wp )
     9167
     9168!
     9169!--    Calculate the maximum possible liquid water amount on plants and
     9170!--    bare surface. For vegetated surfaces, a maximum depth of 0.2 mm is
     9171!--    assumed, while paved surfaces might hold up 1 mm of water. The
     9172!--    liquid water fraction for paved surfaces is calculated after
     9173!--    Noilhan & Planton (1989), while the ECMWF formulation is used for
     9174!--    vegetated surfaces and bare soils.
     9175       m_liq_max = m_max_depth * ( surf_usm_h%lai(m) )
     9176       surf_usm_h%c_liq(m) = MIN( 1.0_wp, ( m_liq_usm_h%var_usm_1d(m) / m_liq_max )**0.67 )
     9177!
     9178!--    Calculate saturation specific humidity
     9179       q_s = 0.622_wp * e_s / ( surface_pressure - e_s )
     9180!
     9181!--    In case of dewfall, set evapotranspiration to zero
     9182!--    All super-saturated water is then removed from the air
     9183       IF ( humidity  .AND.  q_s <= qv1 )  THEN
     9184          surf_usm_h%r_canopy(m) = 0.0_wp
     9185       ENDIF
     9186
     9187!
     9188!--    Calculate coefficients for the total evapotranspiration
     9189!--    In case of water surface, set vegetation and soil fluxes to zero.
     9190!--    For pavements, only evaporation of liquid water is possible.
     9191       f_qsws_veg  = rho_lv *                                &
     9192                         ( 1.0_wp        - surf_usm_h%c_liq(m)    ) /   &
     9193                         ( surf_usm_h%r_a_green(m) + surf_usm_h%r_canopy(m) )
     9194       f_qsws_liq  = rho_lv * surf_usm_h%c_liq(m)   /             &
     9195                           surf_usm_h%r_a_green(m)
     9196
     9197       f_qsws = f_qsws_veg + f_qsws_liq
     9198!
     9199!--    Calculate derivative of q_s for Taylor series expansion
     9200       e_s_dt = e_s * ( 17.269_wp / ( t_surf_green_h(m) - 35.86_wp) -   &
     9201                        17.269_wp*( t_surf_green_h(m) - 273.16_wp)      &
     9202                       / ( t_surf_green_h(m) - 35.86_wp)**2 )
     9203
     9204       dq_s_dt = 0.622_wp * e_s_dt / ( surface_pressure - e_s_dt )
     9205endif
     9206!***********************************************************************************
    77339207!--        add LW up so that it can be removed in prognostic equation
    77349208           surf_usm_h%rad_net_l(m) = surf_usm_h%rad_sw_in(m)  -                &
     
    77429216           coef_1 = surf_usm_h%rad_net_l(m) +                                  &
    77439217                 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(ind_veg_wall,m) * &
    7744                                        sigma_sb * t_surf_h(m) ** 4 +           & 
     9218                                       sigma_sb * t_surf_wall_h(m) ** 4 +           & 
    77459219                                       f_shf * surf_usm_h%pt1(m) +             &
    77469220                                       lambda_surface * t_wall_h(nzb_wall,m)
     9221if ((.NOT. spinup).AND.(surf_usm_h%frac(ind_wat_win,m).GT.0.0_wp)) then
    77479222           coef_window_1 = surf_usm_h%rad_net_l(m) +                           &
    77489223                   ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(ind_wat_win,m)  &
     
    77509225                                       f_shf_window * surf_usm_h%pt1(m) +      &
    77519226                                       lambda_surface_window * t_window_h(nzb_wall,m)
     9227endif                 
     9228         IF ( (humidity).and.(surf_usm_h%frac(ind_pav_green,m).gt.0.0_wp) )  THEN
     9229                    coef_green_1 = surf_usm_h%rad_net_l(m) +                              &
     9230                   ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(ind_pav_green,m) * sigma_sb * &
     9231                                       t_surf_green_h(m) ** 4 +                  & 
     9232                                          f_shf_green * surf_usm_h%pt1(m) + f_qsws * ( qv1 - q_s    &
     9233                                          + dq_s_dt * t_surf_green_h(m) )        &
     9234                                          +lambda_surface_green * t_green_h(nzb_wall,m)
     9235           ELSE
    77529236           coef_green_1 = surf_usm_h%rad_net_l(m) +                            &
    77539237                 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(ind_pav_green,m) *&
    77549238                                       sigma_sb * t_surf_green_h(m) ** 4 +     & 
    77559239                                       f_shf_green * surf_usm_h%pt1(m) +       &
    7756                                        lambda_surface_green * t_wall_h(nzb_wall,m)
     9240                                       lambda_surface_green * t_green_h(nzb_wall,m)
     9241          ENDIF
    77579242
    77589243!--        denominator of the prognostic equation
    77599244           coef_2 = 4.0_wp * surf_usm_h%emissivity(ind_veg_wall,m) *           &
    7760                              sigma_sb * t_surf_h(m) ** 3                       &
     9245                             sigma_sb * t_surf_wall_h(m) ** 3                       &
    77619246                           + lambda_surface + f_shf / exner(k)
     9247if ((.NOT. spinup).AND.(surf_usm_h%frac(ind_wat_win,m).GT.0.0_wp)) then
    77629248           coef_window_2 = 4.0_wp * surf_usm_h%emissivity(ind_wat_win,m) *     &
    77639249                             sigma_sb * t_surf_window_h(m) ** 3                &
    77649250                           + lambda_surface_window + f_shf_window / exner(k)
    7765            coef_green_2 = 4.0_wp * surf_usm_h%emissivity(ind_pav_green,m) *    &
    7766                              sigma_sb * t_surf_green_h(m) ** 3                 &
     9251endif
     9252           IF ( (humidity).and.(surf_usm_h%frac(ind_pav_green,m).gt.0.0_wp) )  THEN
     9253              coef_green_2 = 4.0_wp * surf_usm_h%emissivity(ind_pav_green,m) * sigma_sb *    &
     9254                                t_surf_green_h(m) ** 3 + f_qsws * dq_s_dt        &
     9255                              + lambda_surface_green + f_shf_green / exner(k)
     9256           ELSE
     9257           coef_green_2 = 4.0_wp * surf_usm_h%emissivity(ind_pav_green,m) * sigma_sb *    &
     9258                             t_surf_green_h(m) ** 3                           &
    77679259                           + lambda_surface_green + f_shf_green / exner(k)
     9260           ENDIF
    77689261
    77699262!--        implicit solution when the surface layer has no heat capacity,
    77709263!--        otherwise use RK3 scheme.
    7771            t_surf_h_p(m) = ( coef_1 * dt_3d * tsc(2) +                        &
    7772                              surf_usm_h%c_surface(m) * t_surf_h(m) ) /        &
     9264           t_surf_wall_h_p(m) = ( coef_1 * dt_3d * tsc(2) +                        &
     9265                             surf_usm_h%c_surface(m) * t_surf_wall_h(m) ) /        &
    77739266                           ( surf_usm_h%c_surface(m) + coef_2 * dt_3d * tsc(2) )
     9267if ((.NOT. spinup).AND.(surf_usm_h%frac(ind_wat_win,m).GT.0.0_wp)) then
    77749268           t_surf_window_h_p(m) = ( coef_window_1 * dt_3d * tsc(2) +                        &
    77759269                             surf_usm_h%c_surface_window(m) * t_surf_window_h(m) ) /        &
    7776                            ( surf_usm_h%c_surface_window(m) + coef_window_2 * dt_3d * tsc(2) )
     9270                           ( surf_usm_h%c_surface_window(m) + coef_window_2 * dt_3d * tsc(2) )
     9271endif
    77779272           t_surf_green_h_p(m) = ( coef_green_1 * dt_3d * tsc(2) +                        &
    77789273                             surf_usm_h%c_surface_green(m) * t_surf_green_h(m) ) /        &
     
    77809275
    77819276!--        add RK3 term
    7782            t_surf_h_p(m) = t_surf_h_p(m) + dt_3d * tsc(3) *                   &
    7783                            surf_usm_h%tt_surface_m(m)
     9277           t_surf_wall_h_p(m) = t_surf_wall_h_p(m) + dt_3d * tsc(3) *                   &
     9278                           surf_usm_h%tt_surface_wall_m(m)
     9279
    77849280           t_surf_window_h_p(m) = t_surf_window_h_p(m) + dt_3d * tsc(3) *     &
    77859281                           surf_usm_h%tt_surface_window_m(m)
     9282
    77869283           t_surf_green_h_p(m) = t_surf_green_h_p(m) + dt_3d * tsc(3) *       &
    77879284                           surf_usm_h%tt_surface_green_m(m)
     
    77909287!--        store also vpt_surface, which is, due to the lack of moisture on roofs simply
    77919288!--        assumed to be the surface temperature.
    7792            surf_usm_h%pt_surface(m) = ( surf_usm_h%frac(ind_veg_wall,m) * t_surf_h_p(m)   &
     9289           surf_usm_h%pt_surface(m) = ( surf_usm_h%frac(ind_veg_wall,m) * t_surf_wall_h_p(m)   &
    77939290                               + surf_usm_h%frac(ind_wat_win,m) * t_surf_window_h_p(m)   &
    77949291                               + surf_usm_h%frac(ind_pav_green,m) * t_surf_green_h_p(m) )  &
     
    77999296
    78009297!--        calculate true tendency
    7801            stend = ( t_surf_h_p(m) - t_surf_h(m) - dt_3d * tsc(3) *           &
    7802                      surf_usm_h%tt_surface_m(m)) / ( dt_3d  * tsc(2) )
     9298           stend_wall = ( t_surf_wall_h_p(m) - t_surf_wall_h(m) - dt_3d * tsc(3) *           &
     9299                     surf_usm_h%tt_surface_wall_m(m)) / ( dt_3d  * tsc(2) )
    78039300           stend_window = ( t_surf_window_h_p(m) - t_surf_window_h(m) - dt_3d * tsc(3) *        &
    78049301                     surf_usm_h%tt_surface_window_m(m)) / ( dt_3d  * tsc(2) )
     
    78099306           IF ( timestep_scheme(1:5) == 'runge' )  THEN
    78109307              IF ( intermediate_timestep_count == 1 )  THEN
    7811                  surf_usm_h%tt_surface_m(m) = stend
     9308                 surf_usm_h%tt_surface_wall_m(m) = stend_wall
    78129309                 surf_usm_h%tt_surface_window_m(m) = stend_window
    78139310                 surf_usm_h%tt_surface_green_m(m) = stend_green
    78149311              ELSEIF ( intermediate_timestep_count <                          &
    78159312                        intermediate_timestep_count_max )  THEN
    7816                  surf_usm_h%tt_surface_m(m) = -9.5625_wp * stend +            &
    7817                                      5.3125_wp * surf_usm_h%tt_surface_m(m)
     9313                 surf_usm_h%tt_surface_wall_m(m) = -9.5625_wp * stend_wall +            &
     9314                                     5.3125_wp * surf_usm_h%tt_surface_wall_m(m)
    78189315                 surf_usm_h%tt_surface_window_m(m) = -9.5625_wp * stend_window +   &
    78199316                                     5.3125_wp * surf_usm_h%tt_surface_window_m(m)
     
    78259322!--        in case of fast changes in the skin temperature, it is required to
    78269323!--        update the radiative fluxes in order to keep the solution stable
    7827            IF ( ( ( ABS( t_surf_h_p(m) - t_surf_h(m) ) > 1.0_wp ) .OR.          &
    7828                 ( ABS( t_surf_green_h_p(m) - t_surf_green_h(m) ) > 1.0_wp ) .OR. &
    7829                 ( ABS( t_surf_window_h_p(m) - t_surf_window_h(m) ) > 1.0_wp ) )  &
    7830                  .AND.  unscheduled_radiation_calls  ) THEN
     9324           IF ( ( ( ABS( t_surf_wall_h_p(m)   - t_surf_wall_h(m) )   > 1.0_wp )   .OR. &
     9325                (   ABS( t_surf_green_h_p(m)  - t_surf_green_h(m) )  > 1.0_wp )  .OR. &
     9326                (   ABS( t_surf_window_h_p(m) - t_surf_window_h(m) ) > 1.0_wp ) )      &
     9327                   .AND.  unscheduled_radiation_calls  ) THEN
    78319328              force_radiation_call_l = .TRUE.
    78329329           ENDIF
     
    78379334                                     surf_usm_h%frac(ind_veg_wall,m) *                   &
    78389335                                     sigma_sb * surf_usm_h%emissivity(ind_veg_wall,m) *  &
    7839                                      ( t_surf_h_p(m)**4 - t_surf_h(m)**4 )               &
     9336                                     ( t_surf_wall_h_p(m)**4 - t_surf_wall_h(m)**4 )               &
    78409337                                    + surf_usm_h%frac(ind_wat_win,m) *                   &
    78419338                                     sigma_sb * surf_usm_h%emissivity(ind_wat_win,m) *   &
     
    78469343
    78479344           surf_usm_h%wghf_eb(m)   = lambda_surface *                         &
    7848                                       ( t_surf_h_p(m) - t_wall_h(nzb_wall,m) )
     9345                                      ( t_surf_wall_h_p(m) - t_wall_h(nzb_wall,m) )
    78499346           surf_usm_h%wghf_eb_green(m)  = lambda_surface_green *                         &
    78509347                                          ( t_surf_green_h_p(m) - t_green_h(nzb_wall,m) )
     
    78549351!
    78559352!--        ground/wall/roof surface heat flux
    7856            surf_usm_h%wshf_eb(m)   = - f_shf  * ( surf_usm_h%pt1(m) - t_surf_h_p(m) / exner(k) ) *               &
     9353           surf_usm_h%wshf_eb(m)   = - f_shf  * ( surf_usm_h%pt1(m) - t_surf_wall_h_p(m) / exner(k) ) *               &
    78579354                                       surf_usm_h%frac(ind_veg_wall,m)         &
    78589355                                     - f_shf_window  * ( surf_usm_h%pt1(m) - t_surf_window_h_p(m) / exner(k) ) * &
     
    78659362           surf_usm_h%shf(m) = surf_usm_h%wshf_eb(m) / c_p
    78669363     
     9364!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     9365if (surf_usm_h%frac(ind_pav_green,m).gt.0.0_wp) then
     9366
     9367! print*, "tsurfroofgreen",m,t_surf_green_h_p(m),i,j,k,surf_usm_h%wghf_eb_green(m),surf_usm_h%rad_net_l(m),&
     9368!         surf_usm_h%wshf_eb(m),f_qsws_veg,f_qsws_liq,dq_s_dt
     9369! print*, "B",surf_usm_h%rad_sw_in(m),surf_usm_h%rad_sw_out(m),surf_usm_h%rad_lw_in(m),surf_usm_h%rad_lw_out(m)
     9370! print*, "lambdasurface",lambda_surface_green,lambda_surface,i,j,k
     9371! print*, "fractions",i,j,k,surf_usm_h%frac(0:2,m)
     9372if ((t_surf_green_h_p(m).gt.370.0_wp).or.(t_surf_green_h_p(m).lt.250.0_wp)) then
     9373  print*, t_surf_green_h_p(m),m,i,j,k
     9374  stop
     9375endif
     9376
     9377       IF ( humidity )  THEN
     9378          surf_usm_h%qsws_eb(m)  = - f_qsws * ( qv1 - q_s + dq_s_dt                     &
     9379                          * t_surf_green_h(m) - dq_s_dt *               &
     9380                            t_surf_green_h_p(m) )
     9381
     9382          surf_usm_h%qsws(m) = surf_usm_h%qsws_eb(m) / rho_lv
     9383
     9384          surf_usm_h%qsws_veg_eb(m)  = - f_qsws_veg  * ( qv1 - q_s                      &
     9385                              + dq_s_dt * t_surf_green_h(m) - dq_s_dt   &
     9386                              * t_surf_green_h_p(m) )
     9387
     9388          surf_usm_h%qsws_liq_eb(m)  = - f_qsws_liq  * ( qv1 - q_s                      &
     9389                              + dq_s_dt * t_surf_green_h(m) - dq_s_dt   &
     9390                              * t_surf_green_h_p(m) )
     9391       ENDIF
     9392
     9393!
     9394!--    Calculate the true surface resistance
     9395       IF ( .NOT.  humidity )  THEN
     9396          surf_usm_h%r_s(m) = 1.0E10_wp
     9397       ELSE
     9398          surf_usm_h%r_s(m) = - rho_lv * ( qv1 - q_s + dq_s_dt                       &
     9399                          *  t_surf_green_h(m) - dq_s_dt *               &
     9400                            t_surf_green_h_p(m) ) /                     &
     9401                            (surf_usm_h%qsws(m) + 1.0E-20)  - surf_usm_h%r_a_green(m)
     9402       ENDIF
     9403
     9404!
     9405!--    Calculate change in liquid water reservoir due to dew fall or
     9406!--    evaporation of liquid water
     9407       IF ( humidity )  THEN
     9408!
     9409!--       If precipitation is activated, add rain water to qsws_liq
     9410!--       and qsws_soil according the the vegetation coverage.
     9411!--       precipitation_rate is given in mm.
     9412          IF ( precipitation )  THEN
     9413
     9414!
     9415!--          Add precipitation to liquid water reservoir, if possible.
     9416!--          Otherwise, add the water to soil. In case of
     9417!--          pavements, the exceeding water amount is implicitely removed
     9418!--          as runoff as qsws_soil is then not used in the soil model
     9419             IF ( m_liq_usm_h%var_usm_1d(m) /= m_liq_max )  THEN
     9420                surf_usm_h%qsws_liq_eb(m) = surf_usm_h%qsws_liq_eb(m)                            &
     9421                                 + surf_usm_h%frac(ind_pav_green,m) * prr(k+k_off,j+j_off,i+i_off)&
     9422                                 * hyrho(k+k_off)                              &
     9423                                 * 0.001_wp * rho_l * l_v
     9424             ENDIF
     9425
     9426          ENDIF
     9427
     9428!
     9429!--       If the air is saturated, check the reservoir water level
     9430          IF ( surf_usm_h%qsws(m) < 0.0_wp )  THEN
     9431!
     9432!--          Check if reservoir is full (avoid values > m_liq_max)
     9433!--          In that case, qsws_liq goes to qsws_soil. In this
     9434!--          case qsws_veg is zero anyway (because c_liq = 1),       
     9435!--          so that tend is zero and no further check is needed
     9436             IF ( m_liq_usm_h%var_usm_1d(m) == m_liq_max )  THEN
     9437!                 surf_usm_h%qsws_soil(m) = surf_usm_h%qsws_soil(m) + surf_usm_h%qsws_liq(m)
     9438
     9439                surf_usm_h%qsws_liq_eb(m)  = 0.0_wp
     9440             ENDIF
     9441
     9442!
     9443!--          In case qsws_veg becomes negative (unphysical behavior),
     9444!--          let the water enter the liquid water reservoir as dew on the
     9445!--          plant
     9446             IF ( surf_usm_h%qsws_veg_eb(m) < 0.0_wp )  THEN
     9447                surf_usm_h%qsws_liq_eb(m) = surf_usm_h%qsws_liq_eb(m) + surf_usm_h%qsws_veg_eb(m)
     9448                surf_usm_h%qsws_veg_eb(m) = 0.0_wp
     9449             ENDIF
     9450          ENDIF                   
     9451 
     9452          surf_usm_h%qsws(m) = surf_usm_h%qsws(m) / l_v
     9453 
     9454          tend = - surf_usm_h%qsws_liq_eb(m) * drho_l_lv
     9455          m_liq_usm_h_p%var_usm_1d(m) = m_liq_usm_h%var_usm_1d(m) + dt_3d *    &
     9456                                        ( tsc(2) * tend +                      &
     9457                                          tsc(3) * tm_liq_usm_h_m%var_usm_1d(m) )
     9458!
     9459!--       Check if reservoir is overfull -> reduce to maximum
     9460!--       (conservation of water is violated here)
     9461          m_liq_usm_h_p%var_usm_1d(m) = MIN( m_liq_usm_h_p%var_usm_1d(m),m_liq_max )
     9462
     9463!
     9464!--       Check if reservoir is empty (avoid values < 0.0)
     9465!--       (conservation of water is violated here)
     9466          m_liq_usm_h_p%var_usm_1d(m) = MAX( m_liq_usm_h_p%var_usm_1d(m), 0.0_wp )
     9467!
     9468!--       Calculate m_liq tendencies for the next Runge-Kutta step
     9469          IF ( timestep_scheme(1:5) == 'runge' )  THEN
     9470             IF ( intermediate_timestep_count == 1 )  THEN
     9471                tm_liq_usm_h_m%var_usm_1d(m) = tend
     9472             ELSEIF ( intermediate_timestep_count <                            &
     9473                      intermediate_timestep_count_max )  THEN
     9474                tm_liq_usm_h_m%var_usm_1d(m) = -9.5625_wp * tend +             &
     9475                                              5.3125_wp * tm_liq_usm_h_m%var_usm_1d(m)
     9476             ENDIF
     9477          ENDIF
     9478
     9479       ENDIF
     9480else
     9481  surf_usm_h%r_s(m) = 1.0E10_wp
     9482endif
     9483
    78679484       ENDDO
    78689485!
     
    78869503
    78879504#if ! defined( __nopointer )         
     9505!            pt1  = pt(k,j,i)
     9506           IF ( humidity )  THEN
     9507              qv1 = q(k,j,i)
     9508           ELSE
     9509              qv1 = 0.0_wp
     9510           ENDIF
    78889511!
    78899512!--          calculate rho * c_p coefficient at wall layer
    78909513             rho_cp  = c_p * hyp(k) / ( r_d * surf_usm_v(l)%pt1(m) * exner(k) )
     9514             
     9515if (surf_usm_v(l)%frac(1,m).gt.0.0_wp) then
     9516!
     9517!--         Calculate frequently used parameters
     9518            rho_lv    = rho_cp / c_p * l_v
     9519            drho_l_lv = 1.0_wp / (rho_l * l_v)
     9520endif
    78919521#endif
    78929522
     
    79329562             f_shf_green   = rho_cp / surf_usm_v(l)%r_a(m)
    79339563
     9564!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     9565if (surf_usm_v(l)%frac(1,m).gt.0.0_wp) then
     9566!--    Adapted from LSM:
     9567!--    Second step: calculate canopy resistance r_canopy
     9568!--    f1-f3 here are defined as 1/f1-f3 as in ECMWF documentation
     9569 
     9570!--    f1: correction for incoming shortwave radiation (stomata close at
     9571!--    night)
     9572       f1 = MIN( 1.0_wp, ( 0.004_wp * surf_usm_v(l)%rad_sw_in(m) + 0.05_wp ) / &
     9573                        (0.81_wp * (0.004_wp * surf_usm_v(l)%rad_sw_in(m)      &
     9574                         + 1.0_wp)) )
     9575!
     9576!--    f2: correction for soil moisture availability to plants (the
     9577!--    integrated soil moisture must thus be considered here)
     9578!--    f2 = 0 for very dry soils
     9579
     9580f2=1.0_wp
     9581!           m_total = 0.0_wp
     9582!           DO  k = nzb_wall, nzt_wall+1
     9583!               m_total = m_total + rootfr_h(nzb_wall,m)                              &
     9584!                         * MAX(swc_h(nzb_wall,m),wilt_h(nzb_wall,m))
     9585!           ENDDO
     9586!
     9587!           IF ( m_total > wilt_h(nzb_wall,m)  .AND.  m_total < fc_h(nzb_wall,m) )  THEN
     9588!              f2 = ( m_total - wilt_h(nzb_wall,m) ) / (fc_h(nzb_wall,m) - wilt_h(nzb_wall,m) )
     9589!           ELSEIF ( m_total >= fc_h(nzb_wall,m) )  THEN
     9590!              f2 = 1.0_wp
     9591!           ELSE
     9592!              f2 = 1.0E-20_wp
     9593!           ENDIF
     9594
     9595!
     9596!--    Calculate water vapour pressure at saturation
     9597       e_s = 0.01_wp * 610.78_wp * EXP( 17.269_wp * (  t_surf_green_v_p(l)%t(m) &
     9598                     - 273.16_wp ) / (  t_surf_green_v_p(l)%t(m) - 35.86_wp ) )
     9599!
     9600!--    f3: correction for vapour pressure deficit
     9601       IF ( surf_usm_v(l)%g_d(m) /= 0.0_wp )  THEN
     9602!
     9603!--       Calculate vapour pressure
     9604          e  = qv1 * surface_pressure / ( qv1 + 0.622_wp )
     9605          f3 = EXP ( - surf_usm_v(l)%g_d(m) * (e_s - e) )
     9606       ELSE
     9607          f3 = 1.0_wp
     9608       ENDIF
     9609!
     9610!--    Calculate canopy resistance. In case that c_veg is 0 (bare soils),
     9611!--    this calculation is obsolete, as r_canopy is not used below.
     9612!--    To do: check for very dry soil -> r_canopy goes to infinity
     9613       surf_usm_v(l)%r_canopy(m) = surf_usm_v(l)%r_canopy_min(m) /                               &
     9614                              ( surf_usm_v(l)%lai(m) * f1 * f2 * f3 + 1.0E-20_wp )
     9615                             
     9616! !--    Calculate the maximum possible liquid water amount on plants and
     9617! !--    bare surface. For vegetated surfaces, a maximum depth of 0.2 mm is
     9618! !--    assumed, while paved surfaces might hold up 1 mm of water. The
     9619! !--    liquid water fraction for paved surfaces is calculated after
     9620! !--    Noilhan & Planton (1989), while the ECMWF formulation is used for
     9621! !--    vegetated surfaces and bare soils.
     9622! ! surf_usm_h%lai(m)=4.0_wp
     9623!        m_liq_max = m_max_depth * ( surf_usm_h%lai(m) )
     9624!        surf_usm_h%c_liq(m) = MIN( 1.0_wp, ( m_liq_usm_h%var_usm_1d(m) / m_liq_max )**0.67 )
     9625!
     9626!--    Calculate saturation specific humidity
     9627       q_s = 0.622_wp * e_s / ( surface_pressure - e_s )
     9628!
     9629!--    In case of dewfall, set evapotranspiration to zero
     9630!--    All super-saturated water is then removed from the air
     9631       IF ( humidity  .AND.  q_s <= qv1 )  THEN
     9632          surf_usm_v(l)%r_canopy(m) = 0.0_wp
     9633       ENDIF
     9634
     9635!
     9636!--    Calculate coefficients for the total evapotranspiration
     9637!--    In case of water surface, set vegetation and soil fluxes to zero.
     9638!--    For pavements, only evaporation of liquid water is possible.
     9639       f_qsws_veg  = rho_lv *                                &
     9640                         ( 1.0_wp        - 0.0_wp ) / & !surf_usm_h%c_liq(m)    ) /   &
     9641                         ( surf_usm_v(l)%r_a(m) + surf_usm_v(l)%r_canopy(m) )
     9642!        f_qsws_liq  = rho_lv * surf_usm_h%c_liq(m)   /             &
     9643!                            surf_usm_h%r_a_green(m)
     9644
     9645       f_qsws = f_qsws_veg! + f_qsws_liq
     9646!
     9647!--    Calculate derivative of q_s for Taylor series expansion
     9648       e_s_dt = e_s * ( 17.269_wp / ( t_surf_green_v_p(l)%t(m) - 35.86_wp) -   &
     9649                        17.269_wp*( t_surf_green_v_p(l)%t(m) - 273.16_wp)      &
     9650                       / ( t_surf_green_v_p(l)%t(m) - 35.86_wp)**2 )
     9651
     9652       dq_s_dt = 0.622_wp * e_s_dt / ( surface_pressure - e_s_dt )
     9653endif
     9654!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     9655               
    79349656!--          add LW up so that it can be removed in prognostic equation
    79359657             surf_usm_v(l)%rad_net_l(m) = surf_usm_v(l)%rad_sw_in(m)  -        &
     
    79389660                                          surf_usm_v(l)%rad_lw_out(m)
    79399661
     9662if ((abs(t_surf_wall_v(l)%t(m)-276.).gt.100.).or.(abs(t_surf_window_v(l)%t(m)-276.).gt.300.) &
     9663.or.(abs(t_surf_green_v(l)%t(m)-276.).gt.100)) then
     9664print*, "tsurfvvvv",m,t_surf_wall_v(l)%t(m),t_surf_window_v(l)%t(m),t_surf_green_v(l)%t(m)
     9665print*, "params", surf_usm_v(l)%emissivity(ind_veg_wall,m),lambda_surface, t_wall_v(l)%t(nzb_wall:nzt_wall,m), &
     9666                  surf_usm_v(l)%emissivity(ind_wat_win,m),lambda_surface_window,t_window_v(l)%t(nzb_wall:nzt_wall,m),t_green_v(l)%t(nzb_wall:nzt_wall,m)
     9667print*, "dicken",surf_usm_v(l)%zw(nzb_wall:nzt_wall,m),surf_usm_v(l)%zw_window(nzb_wall:nzt_wall,m),surf_usm_v(l)%zw_green(nzb_wall:nzt_wall,m)
     9668print*, "c",surf_usm_v(l)%c_surface_window(m),surf_usm_v(l)%c_surface(m)
     9669!if ((abs(t_surf_v(l)%t(m)-276.).gt.10.).or.(abs(t_surf_window_v(l)%t(m)-276.).gt.10.)) then
     9670stop
     9671endif
    79409672!--           numerator of the prognostic equation
    79419673              coef_1 = surf_usm_v(l)%rad_net_l(m) +                            & ! coef +1 corresponds to -lwout included in calculation of radnet_l
    79429674             ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_veg_wall,m) *  &
    7943                                      sigma_sb *  t_surf_v(l)%t(m) ** 4 +       & 
     9675                                     sigma_sb *  t_surf_wall_v(l)%t(m) ** 4 +       & 
    79449676                                     f_shf * surf_usm_v(l)%pt1(m) +            &
    79459677                                     lambda_surface * t_wall_v(l)%t(nzb_wall,m)
     9678if ((.NOT. spinup).AND.(surf_usm_v(l)%frac(ind_wat_win,m).GT.0.0_wp)) then
    79469679              coef_window_1 = surf_usm_v(l)%rad_net_l(m) +                     & ! coef +1 corresponds to -lwout included in calculation of radnet_l
    79479680               ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_wat_win,m) * &
     
    79499682                                     f_shf * surf_usm_v(l)%pt1(m) +            &
    79509683                                     lambda_surface_window * t_window_v(l)%t(nzb_wall,m)
    7951 
     9684endif
     9685           IF ( (humidity).and.(surf_usm_v(l)%frac(ind_pav_green,m).gt.0.0_wp) )  THEN
    79529686              coef_green_1 = surf_usm_v(l)%rad_net_l(m) +                      & ! coef +1 corresponds to -lwout included in calculation of radnet_l
    7953               ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_pav_green,m) *&
    7954                                      sigma_sb * t_surf_green_v(l)%t(m) ** 4 +  & 
     9687               ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_pav_green,m) * sigma_sb *  &
     9688                                     t_surf_green_v(l)%t(m) ** 4 +               & 
     9689                                     f_shf * surf_usm_v(l)%pt1(m) +     f_qsws * ( qv1 - q_s    &
     9690                                          + dq_s_dt * t_surf_green_v(l)%t(m) ) +            &
     9691                                     lambda_surface_green * t_wall_v(l)%t(nzb_wall,m)
     9692           ELSE
     9693              coef_green_1 = surf_usm_v(l)%rad_net_l(m) +                        & ! coef +1 corresponds to -lwout included in calculation of radnet_l
     9694               ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_pav_green,m) * sigma_sb *  &
     9695                                     t_surf_green_v(l)%t(m) ** 4 +               & 
    79559696                                     f_shf * surf_usm_v(l)%pt1(m) +            &
    79569697                                     lambda_surface_green * t_wall_v(l)%t(nzb_wall,m)
     9698           ENDIF
     9699                                     
    79579700
    79589701!--           denominator of the prognostic equation
    7959               coef_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_veg_wall,m) *     &
    7960                                 sigma_sb * t_surf_v(l)%t(m) ** 3               &
    7961                               + lambda_surface + f_shf / exner(k)
    7962               coef_window_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_wat_win,m) *&
    7963                                 sigma_sb * t_surf_window_v(l)%t(m) ** 3        &
     9702              coef_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_veg_wall,m) * sigma_sb *           &
     9703                                t_surf_wall_v(l)%t(m) ** 3                           &
     9704                              + lambda_surface + f_shf / exner(k) 
     9705if ((.NOT. spinup).AND.(surf_usm_v(l)%frac(ind_wat_win,m).GT.0.0_wp)) then             
     9706              coef_window_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_wat_win,m) * sigma_sb *           &
     9707                                t_surf_window_v(l)%t(m) ** 3                         &
    79649708                              + lambda_surface_window + f_shf / exner(k)
    7965               coef_green_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_pav_green,m) *&
    7966                                 sigma_sb * t_surf_green_v(l)%t(m) ** 3         &
     9709endif
     9710           IF ( (humidity).and.(surf_usm_v(l)%frac(ind_pav_green,m).gt.0.0_wp) )  THEN
     9711               coef_green_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_pav_green,m) * sigma_sb *     &
     9712                                t_surf_green_v(l)%t(m) ** 3  + f_qsws * dq_s_dt      &
    79679713                              + lambda_surface_green + f_shf / exner(k)
     9714           ELSE
     9715              coef_green_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_pav_green,m) * sigma_sb *     &
     9716                                t_surf_green_v(l)%t(m) ** 3                          &
     9717                              + lambda_surface_green + f_shf / exner(k)
     9718           ENDIF
    79689719
    79699720!--           implicit solution when the surface layer has no heat capacity,
    79709721!--           otherwise use RK3 scheme.
    7971               t_surf_v_p(l)%t(m) = ( coef_1 * dt_3d * tsc(2) +                 &
    7972                              surf_usm_v(l)%c_surface(m) * t_surf_v(l)%t(m) ) / &
     9722              t_surf_wall_v_p(l)%t(m) = ( coef_1 * dt_3d * tsc(2) +                 &
     9723                             surf_usm_v(l)%c_surface(m) * t_surf_wall_v(l)%t(m) ) / &
    79739724                           ( surf_usm_v(l)%c_surface(m) + coef_2 * dt_3d * tsc(2) )
     9725if ((.NOT. spinup).AND.(surf_usm_v(l)%frac(ind_wat_win,m).GT.0.0_wp)) then
    79749726              t_surf_window_v_p(l)%t(m) = ( coef_window_1 * dt_3d * tsc(2) +                 &
    79759727                             surf_usm_v(l)%c_surface_window(m) * t_surf_window_v(l)%t(m) ) / &
    79769728                           ( surf_usm_v(l)%c_surface_window(m) + coef_window_2 * dt_3d * tsc(2) )
    7977 
     9729endif
    79789730              t_surf_green_v_p(l)%t(m) = ( coef_green_1 * dt_3d * tsc(2) +                 &
    79799731                             surf_usm_v(l)%c_surface_green(m) * t_surf_green_v(l)%t(m) ) / &
     
    79819733
    79829734!--           add RK3 term
    7983               t_surf_v_p(l)%t(m) = t_surf_v_p(l)%t(m) + dt_3d * tsc(3) *                   &
    7984                                 surf_usm_v(l)%tt_surface_m(m)
     9735              t_surf_wall_v_p(l)%t(m) = t_surf_wall_v_p(l)%t(m) + dt_3d * tsc(3) *         &
     9736                                surf_usm_v(l)%tt_surface_wall_m(m)
    79859737              t_surf_window_v_p(l)%t(m) = t_surf_window_v_p(l)%t(m) + dt_3d * tsc(3) *     &
    79869738                                surf_usm_v(l)%tt_surface_window_m(m)
     
    79919743!--           store also vpt_surface, which is, due to the lack of moisture on roofs simply
    79929744!--           assumed to be the surface temperature.     
    7993               surf_usm_v(l)%pt_surface(m) =  ( surf_usm_v(l)%frac(ind_veg_wall,m) * t_surf_v_p(l)%t(m)   &
    7994                                       + surf_usm_v(l)%frac(ind_wat_win,m) * t_surf_window_v_p(l)%t(m)    &
     9745              surf_usm_v(l)%pt_surface(m) =  ( surf_usm_v(l)%frac(ind_veg_wall,m) * t_surf_wall_v_p(l)%t(m)  &
     9746                                      + surf_usm_v(l)%frac(ind_wat_win,m) * t_surf_window_v_p(l)%t(m)  &
    79959747                                      + surf_usm_v(l)%frac(ind_pav_green,m) * t_surf_green_v_p(l)%t(m) ) &
    79969748                                      / exner(k)
     
    80009752
    80019753!--           calculate true tendency
    8002               stend = ( t_surf_v_p(l)%t(m) - t_surf_v(l)%t(m) - dt_3d * tsc(3) *&
    8003                         surf_usm_v(l)%tt_surface_m(m) ) / ( dt_3d  * tsc(2) )
     9754              stend_wall = ( t_surf_wall_v_p(l)%t(m) - t_surf_wall_v(l)%t(m) - dt_3d * tsc(3) *&
     9755                        surf_usm_v(l)%tt_surface_wall_m(m) ) / ( dt_3d  * tsc(2) )
    80049756              stend_window = ( t_surf_window_v_p(l)%t(m) - t_surf_window_v(l)%t(m) - dt_3d * tsc(3) *&
    80059757                        surf_usm_v(l)%tt_surface_window_m(m) ) / ( dt_3d  * tsc(2) )
     
    80079759                        surf_usm_v(l)%tt_surface_green_m(m) ) / ( dt_3d  * tsc(2) )
    80089760
    8009 !--           calculate t_surf tendencies for the next Runge-Kutta step
     9761!--           calculate t_surf_* tendencies for the next Runge-Kutta step
    80109762              IF ( timestep_scheme(1:5) == 'runge' )  THEN
    80119763                 IF ( intermediate_timestep_count == 1 )  THEN
    8012                     surf_usm_v(l)%tt_surface_m(m) = stend
     9764                    surf_usm_v(l)%tt_surface_wall_m(m) = stend_wall
    80139765                    surf_usm_v(l)%tt_surface_window_m(m) = stend_window
    80149766                    surf_usm_v(l)%tt_surface_green_m(m) = stend_green
    80159767                 ELSEIF ( intermediate_timestep_count <                                 &
    80169768                          intermediate_timestep_count_max )  THEN
    8017                     surf_usm_v(l)%tt_surface_m(m) = -9.5625_wp * stend +                &
    8018                                      5.3125_wp * surf_usm_v(l)%tt_surface_m(m)
     9769                    surf_usm_v(l)%tt_surface_wall_m(m) = -9.5625_wp * stend_wall +      &
     9770                                     5.3125_wp * surf_usm_v(l)%tt_surface_wall_m(m)
    80199771                    surf_usm_v(l)%tt_surface_green_m(m) = -9.5625_wp * stend_green +    &
    80209772                                     5.3125_wp * surf_usm_v(l)%tt_surface_green_m(m)
     
    80279779!--           update the radiative fluxes in order to keep the solution stable
    80289780
    8029               IF ( ( ( ABS( t_surf_v_p(l)%t(m) - t_surf_v(l)%t(m) ) > 1.0_wp ) .OR.            &
    8030                    ( ABS( t_surf_green_v_p(l)%t(m) - t_surf_green_v(l)%t(m) ) > 1.0_wp ) .OR. &
    8031                    ( ABS( t_surf_window_v_p(l)%t(m) - t_surf_window_v(l)%t(m) ) > 1.0_wp ) )   &
    8032                      .AND.  unscheduled_radiation_calls ) THEN
     9781              IF ( ( ( ABS( t_surf_wall_v_p(l)%t(m)   - t_surf_wall_v(l)%t(m) )   > 1.0_wp ) .OR. &
     9782                   (   ABS( t_surf_green_v_p(l)%t(m)  - t_surf_green_v(l)%t(m) )  > 1.0_wp ) .OR. &
     9783                   (   ABS( t_surf_window_v_p(l)%t(m) - t_surf_window_v(l)%t(m) ) > 1.0_wp ) )    &
     9784                      .AND.  unscheduled_radiation_calls ) THEN
    80339785                 force_radiation_call_l = .TRUE.
    80349786              ENDIF
     
    80399791                                           ( surf_usm_v(l)%rad_net_l(m) +                            &
    80409792                                           3.0_wp * sigma_sb *                                       &
    8041                                            t_surf_v(l)%t(m)**4 - 4.0_wp * sigma_sb *                 &
    8042                                            t_surf_v(l)%t(m)**3 * t_surf_v_p(l)%t(m) )                &
     9793                                           t_surf_wall_v(l)%t(m)**4 - 4.0_wp * sigma_sb *                 &
     9794                                           t_surf_wall_v(l)%t(m)**3 * t_surf_wall_v_p(l)%t(m) )                &
    80439795                                         + surf_usm_v(l)%frac(ind_wat_win,m) *                       &
    80449796                                           ( surf_usm_v(l)%rad_net_l(m) +                            &
     
    80559807                                                ( t_surf_window_v_p(l)%t(m) - t_window_v(l)%t(nzb_wall,m) )
    80569808              surf_usm_v(l)%wghf_eb(m)   = lambda_surface *                    &
    8057                                      ( t_surf_v_p(l)%t(m) - t_wall_v(l)%t(nzb_wall,m) )
     9809                                     ( t_surf_wall_v_p(l)%t(m) - t_wall_v(l)%t(nzb_wall,m) )
    80589810              surf_usm_v(l)%wghf_eb_green(m)  = lambda_surface_green *  &
    80599811                                                ( t_surf_green_v_p(l)%t(m) - t_green_v(l)%t(nzb_wall,m) )
     
    80629814              surf_usm_v(l)%wshf_eb(m)   =                                     &
    80639815                 - f_shf  * ( surf_usm_v(l)%pt1(m) -                           &
    8064                  t_surf_v_p(l)%t(m) / exner(k) ) * surf_usm_v(l)%frac(ind_veg_wall,m)       &
     9816                 t_surf_wall_v_p(l)%t(m) / exner(k) ) * surf_usm_v(l)%frac(ind_veg_wall,m)       &
    80659817                 - f_shf_window  * ( surf_usm_v(l)%pt1(m) -                    &
    80669818                 t_surf_window_v_p(l)%t(m) / exner(k) ) * surf_usm_v(l)%frac(ind_wat_win,m)&
     
    80729824!--           diffusion_s, surface_layer_fluxes,...
    80739825              surf_usm_v(l)%shf(m) = surf_usm_v(l)%wshf_eb(m) / c_p
     9826
     9827!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     9828if (surf_usm_v(l)%frac(ind_pav_green,m).gt.0.0_wp) then !111
     9829
     9830! print*, "tsurfroofgreen",m,t_surf_green_h_p(m),i,j,k,surf_usm_h%wghf_eb_green(m),surf_usm_h%rad_net_l(m),&
     9831!         surf_usm_h%wshf_eb(m),f_qsws_veg,f_qsws_liq,dq_s_dt
     9832! print*, "B",surf_usm_h%rad_sw_in(m),surf_usm_h%rad_sw_out(m),surf_usm_h%rad_lw_in(m),surf_usm_h%rad_lw_out(m)
     9833! print*, "lambdasurface",lambda_surface_green,lambda_surface,i,j,k
     9834! print*, "fractions",i,j,k,surf_usm_h%frac(0:2,m)
     9835if ((t_surf_green_v_p(l)%t(m).gt.370.0_wp).or.(t_surf_green_v_p(l)%t(m).lt.250.0_wp)) then
     9836  print*, t_surf_green_v_p(l)%t(m),m,i,j,k
     9837  stop
     9838endif
     9839
     9840       IF ( humidity )  THEN
     9841          surf_usm_v(l)%qsws_eb(m)  = - f_qsws * ( qv1 - q_s + dq_s_dt                     &
     9842                          * t_surf_green_v(l)%t(m) - dq_s_dt *               &
     9843                            t_surf_green_v_p(l)%t(m) )
     9844
     9845          surf_usm_v(l)%qsws(m) = surf_usm_v(l)%qsws_eb(m) / rho_lv
     9846
     9847          surf_usm_v(l)%qsws_veg_eb(m)  = - f_qsws_veg  * ( qv1 - q_s                      &
     9848                              + dq_s_dt * t_surf_green_v(l)%t(m) - dq_s_dt   &
     9849                              * t_surf_green_v_p(l)%t(m) )
     9850
     9851!           surf_usm_h%qsws_liq_eb(m)  = - f_qsws_liq  * ( qv1 - q_s                      &
     9852!                               + dq_s_dt * t_surf_green_h(m) - dq_s_dt   &
     9853!                               * t_surf_green_h_p(m) )
     9854       ENDIF
     9855
     9856!
     9857!--    Calculate the true surface resistance
     9858       IF ( .NOT.  humidity )  THEN
     9859          surf_usm_v(l)%r_s(m) = 1.0E10_wp
     9860       ELSE
     9861          surf_usm_v(l)%r_s(m) = - rho_lv * ( qv1 - q_s + dq_s_dt                       &
     9862                          *  t_surf_green_v(l)%t(m) - dq_s_dt *               &
     9863                            t_surf_green_v_p(l)%t(m) ) /                     &
     9864                            (surf_usm_v(l)%qsws(m) + 1.0E-20)  - surf_usm_v(l)%r_a(m)
     9865       ENDIF
     9866
     9867       
     9868!
     9869!--    Calculate change in liquid water reservoir due to dew fall or
     9870!--    evaporation of liquid water
     9871       IF ( humidity )  THEN
     9872!
     9873!--       If the air is saturated, check the reservoir water level
     9874          IF ( surf_usm_v(l)%qsws(m) < 0.0_wp )  THEN
     9875       
     9876!
     9877!--          In case qsws_veg becomes negative (unphysical behavior),
     9878!--          let the water enter the liquid water reservoir as dew on the
     9879!--          plant
     9880             IF ( surf_usm_v(l)%qsws_veg_eb(m) < 0.0_wp )  THEN
     9881!                 surf_usm_h%qsws_liq_eb(m) = surf_usm_h%qsws_liq_eb(m) + surf_usm_h%qsws_veg_eb(m)
     9882                surf_usm_v(l)%qsws_veg_eb(m) = 0.0_wp
     9883             ENDIF
     9884          ENDIF   
     9885    ENDIF
     9886else
     9887  surf_usm_v(l)%r_s(m) = 1.0E10_wp
     9888endif !111
     9889!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     9890
    80749891
    80759892           ENDDO
     
    81309947       ENDIF
    81319948
     9949! !
     9950! !-- Calculate surface specific humidity
     9951!     IF ( humidity )  THEN
     9952!        CALL calc_q_surface_usm
     9953!     ENDIF
     9954
     9955
     9956    CONTAINS
     9957!------------------------------------------------------------------------------!
     9958! Description:
     9959! ------------
     9960!> Calculation of specific humidity of the skin layer (surface). It is assumend
     9961!> that the skin is always saturated.
     9962!------------------------------------------------------------------------------!
     9963       SUBROUTINE calc_q_surface_usm
     9964
     9965          IMPLICIT NONE
     9966
     9967          REAL(wp) :: resistance    !< aerodynamic and soil resistance term
     9968
     9969          DO  m = 1, surf_usm_h%ns
     9970
     9971             i   = surf_usm_h%i(m)           
     9972             j   = surf_usm_h%j(m)
     9973             k   = surf_usm_h%k(m)
     9974
     9975!
     9976!--          Calculate water vapour pressure at saturation
     9977             e_s = 0.01_wp * 610.78_wp * EXP( 17.269_wp *                  &
     9978                                    ( t_surf_green_h_p(m) - 273.16_wp ) /  &
     9979                                    ( t_surf_green_h_p(m) - 35.86_wp  )    &
     9980                                         )
     9981
     9982!
     9983!--          Calculate specific humidity at saturation
     9984             q_s = 0.622_wp * e_s / ( surface_pressure - e_s )
     9985
     9986!              surf_usm_h%r_a_green(m) = ( surf_usm_h%pt1(m) - t_surf_green_h(m) / exner(k) ) /                  &
     9987!                    ( surf_usm_h%ts(m) * surf_usm_h%us(m) + 1.0E-10_wp )
     9988!                 
     9989! !--          make sure that the resistance does not drop to zero
     9990!              IF ( ABS(surf_usm_h%r_a_green(m)) < 1.0E-10_wp )  surf_usm_h%r_a_green(m) = 1.0E-10_wp
     9991
     9992             resistance = surf_usm_h%r_a_green(m) / ( surf_usm_h%r_a_green(m) + surf_usm_h%r_s(m) + 1E-5_wp )
     9993
     9994!
     9995!--          Calculate specific humidity at surface
     9996             IF ( bulk_cloud_model )  THEN
     9997                q(k,j,i) = resistance * q_s +                   &
     9998                                           ( 1.0_wp - resistance ) *              &
     9999                                           ( q(k,j,i) - ql(k,j,i) )
     10000             ELSE
     10001                q(k,j,i) = resistance * q_s +                   &
     10002                                           ( 1.0_wp - resistance ) *              &
     10003                                             q(k,j,i)
     10004             ENDIF
     10005
     10006!
     10007!--          Update virtual potential temperature
     10008             vpt(k,j,i) = pt(k,j,i) *         &
     10009                        ( 1.0_wp + 0.61_wp * q(k,j,i) )
     10010
     10011          ENDDO
     10012
     10013!--       Now, treat vertical surface elements
     10014          DO  l = 0, 3
     10015             DO  m = 1, surf_usm_v(l)%ns
     10016!
     10017!--             Get indices of respective grid point
     10018                i = surf_usm_v(l)%i(m)
     10019                j = surf_usm_v(l)%j(m)
     10020                k = surf_usm_v(l)%k(m)
     10021
     10022!
     10023!--             Calculate water vapour pressure at saturation
     10024                e_s = 0.01_wp * 610.78_wp * EXP( 17.269_wp *                       &
     10025                                       ( t_surf_green_v_p(l)%t(m) - 273.16_wp ) /  &
     10026                                       ( t_surf_green_v_p(l)%t(m) - 35.86_wp  )    &
     10027                                            )
     10028
     10029!
     10030!--             Calculate specific humidity at saturation
     10031                q_s = 0.622_wp * e_s / ( surface_pressure -e_s )
     10032
     10033!
     10034!--             Calculate specific humidity at surface
     10035                IF ( bulk_cloud_model )  THEN
     10036                   q(k,j,i) = ( q(k,j,i) - ql(k,j,i) )
     10037                ELSE
     10038                   q(k,j,i) = q(k,j,i)
     10039                ENDIF
     10040!
     10041!--             Update virtual potential temperature
     10042                vpt(k,j,i) = pt(k,j,i) *         &
     10043                           ( 1.0_wp + 0.61_wp * q(k,j,i) )
     10044
     10045             ENDDO
     10046
     10047          ENDDO
     10048
     10049       END SUBROUTINE calc_q_surface_usm
     10050       
    813210051    END SUBROUTINE usm_surface_energy_balance
    813310052
     
    814610065     
    814710066#if defined( __nopointer )
    8148        t_surf_h    = t_surf_h_p
     10067       t_surf_wall_h    = t_surf_wall_h_p
    814910068       t_wall_h    = t_wall_h_p
    8150        t_surf_v    = t_surf_v_p
     10069       t_surf_wall_v    = t_surf_wall_v_p
    815110070       t_wall_v    = t_wall_v_p
    815210071       t_surf_window_h    = t_surf_window_h_p
     
    816310082!
    816410083!--          Horizontal surfaces
    8165              t_surf_h  => t_surf_h_1; t_surf_h_p  => t_surf_h_2
     10084             t_surf_wall_h  => t_surf_wall_h_1; t_surf_wall_h_p  => t_surf_wall_h_2
    816610085             t_wall_h     => t_wall_h_1;    t_wall_h_p     => t_wall_h_2
    816710086             t_surf_window_h  => t_surf_window_h_1; t_surf_window_h_p  => t_surf_window_h_2
     
    817110090!
    817210091!--          Vertical surfaces
    8173              t_surf_v  => t_surf_v_1; t_surf_v_p  => t_surf_v_2
     10092             t_surf_wall_v  => t_surf_wall_v_1; t_surf_wall_v_p  => t_surf_wall_v_2
    817410093             t_wall_v     => t_wall_v_1;    t_wall_v_p     => t_wall_v_2
    817510094             t_surf_window_v  => t_surf_window_v_1; t_surf_window_v_p  => t_surf_window_v_2
     
    818010099!
    818110100!--          Horizontal surfaces
    8182              t_surf_h  => t_surf_h_2; t_surf_h_p  => t_surf_h_1
     10101             t_surf_wall_h  => t_surf_wall_h_2; t_surf_wall_h_p  => t_surf_wall_h_1
    818310102             t_wall_h     => t_wall_h_2;    t_wall_h_p     => t_wall_h_1
    818410103             t_surf_window_h  => t_surf_window_h_2; t_surf_window_h_p  => t_surf_window_h_1
     
    818810107!
    818910108!--          Vertical surfaces
    8190              t_surf_v  => t_surf_v_2; t_surf_v_p  => t_surf_v_1
     10109             t_surf_wall_v  => t_surf_wall_v_2; t_surf_wall_v_p  => t_surf_wall_v_1
    819110110             t_wall_v     => t_wall_v_2;    t_wall_v_p     => t_wall_v_1
    819210111             t_surf_window_v  => t_surf_window_v_2; t_surf_window_v_p  => t_surf_window_v_1
     
    822410143       WRITE ( 14 )  surf_usm_h%end_index
    822510144
    8226        CALL wrd_write_string( 't_surf_h' )
    8227        WRITE ( 14 )  t_surf_h
     10145       CALL wrd_write_string( 't_surf_wall_h' )
     10146       WRITE ( 14 )  t_surf_wall_h
    822810147
    822910148       CALL wrd_write_string( 't_surf_window_h' )
     
    824310162          WRITE( dum, '(I1)')  l         
    824410163
    8245           CALL wrd_write_string( 't_surf_v(' // dum // ')' )
    8246           WRITE ( 14 )  t_surf_v(l)%t
     10164          CALL wrd_write_string( 't_surf_wall_v(' // dum // ')' )
     10165          WRITE ( 14 )  t_surf_wall_v(l)%t
    824710166
    824810167          CALL wrd_write_string( 't_surf_window_v(' // dum // ')' )
Note: See TracChangeset for help on using the changeset viewer.