- Timestamp:
- Oct 24, 2018 4:07:39 PM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/surface_mod.f90
r3351 r3418 26 26 ! ----------------- 27 27 ! $Id$ 28 ! -Parameters for latent heat flux in usm, usm averages (rvtils) 29 ! 30 ! 3351 2018-10-15 18:40:42Z suehring 28 31 ! New flag indication that albedo at urban surfaces is initialized via ASCII 29 32 ! file … … 385 388 REAL(wp), DIMENSION(:), ALLOCATABLE :: lambda_surface_u !< coupling between surface and soil (depends on vegetation type) (W/m2/K) 386 389 REAL(wp), DIMENSION(:), ALLOCATABLE :: lambda_surface_s !< coupling between surface and soil (depends on vegetation type) (W/m2/K) 390 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_eb !< 387 391 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_liq !< surface flux of latent heat (liquid water portion) 392 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_liq_eb !< surface flux of latent heat (liquid water portion) 388 393 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_soil !< surface flux of latent heat (soil portion) 394 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_soil_eb !< surface flux of latent heat (soil portion) 389 395 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_veg !< surface flux of latent heat (vegetation portion) 396 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_veg_eb !< surface flux of latent heat (vegetation portion) 397 390 398 REAL(wp), DIMENSION(:), ALLOCATABLE :: r_a !< aerodynamic resistance 391 399 REAL(wp), DIMENSION(:), ALLOCATABLE :: r_a_green !< aerodynamic resistance at green fraction … … 423 431 REAL(wp), DIMENSION(:), ALLOCATABLE :: c_surface_green !< heat capacity of the green surface skin (J/m2/K) 424 432 REAL(wp), DIMENSION(:), ALLOCATABLE :: c_surface_window !< heat capacity of the window surface skin (J/m2/K) 433 REAL(wp), DIMENSION(:), ALLOCATABLE :: green_type_roof !< type of the green roof 425 434 REAL(wp), DIMENSION(:), ALLOCATABLE :: lambda_surf !< heat conductivity between air and surface (W/m2/K) 426 435 REAL(wp), DIMENSION(:), ALLOCATABLE :: lambda_surf_green !< heat conductivity between air and green surface (W/m2/K) … … 435 444 REAL(wp), DIMENSION(:), ALLOCATABLE :: surfhf !< total radiation flux incoming to minus outgoing from local surface 436 445 437 REAL(wp), DIMENSION(:), ALLOCATABLE :: tt_surface_ m!< surface temperature tendency (K)446 REAL(wp), DIMENSION(:), ALLOCATABLE :: tt_surface_wall_m !< surface temperature tendency (K) 438 447 REAL(wp), DIMENSION(:), ALLOCATABLE :: tt_surface_window_m !< window surface temperature tendency (K) 439 448 REAL(wp), DIMENSION(:), ALLOCATABLE :: tt_surface_green_m !< green surface temperature tendency (K) … … 470 479 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zw_window !< window layer depths (m) 471 480 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: rho_c_green !< volumetric heat capacity of the green material ( J m-3 K-1 ) (= 2.19E6) 481 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: rho_c_total_green !< volumetric heat capacity of the moist green material ( J m-3 K-1 ) (= 2.19E6) 472 482 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: dz_green !< green grid spacing (center-center) 473 483 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ddz_green !< 1/dz_green … … 476 486 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: tt_green_m !< t_green prognostic array 477 487 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zw_green !< green layer depths (m) 488 REAL(wp), DIMENSION(:), ALLOCATABLE :: n_vg_green !< vangenuchten parameters 489 REAL(wp), DIMENSION(:), ALLOCATABLE :: alpha_vg_green !< vangenuchten parameters 490 REAL(wp), DIMENSION(:), ALLOCATABLE :: l_vg_green !< vangenuchten parameters 491 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: gamma_w_green_sat !< hydraulic conductivity 492 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: lambda_w_green 493 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: gamma_w_green !< hydraulic conductivity 494 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: tswc_h_m 478 495 479 496 … … 498 515 REAL(wp), DIMENSION(:), ALLOCATABLE :: iwghf_eb_window_av !< indoor average of wghf_eb window 499 516 REAL(wp), DIMENSION(:), ALLOCATABLE :: wshf_eb_av !< average of wshf_eb 500 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_av !< average of wall surface temperature (K) 517 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_eb_av !< average of qsws_eb 518 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_veg_eb_av !< average of qsws_veg_eb 519 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_liq_eb_av !< average of qsws_liq_eb 520 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_wall_av !< average of wall surface temperature (K) 501 521 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_window_av !< average of window surface temperature (K) 502 522 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_green_av !< average of green wall surface temperature (K) 503 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_whole_av !< average of whole wall surface temperature (K)504 523 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_10cm_av !< average of the near surface temperature (K) 505 524 … … 507 526 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: t_window_av !< Average of t_window 508 527 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: t_green_av !< Average of t_green 528 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: swc_av !< Average of swc 509 529 510 530 END TYPE surf_type -
palm/trunk/SOURCE/time_integration.f90
r3378 r3418 25 25 ! ----------------- 26 26 ! $Id$ 27 ! call to material_heat_model now with check if spinup runs (rvtils) 28 ! 29 ! 3378 2018-10-19 12:34:59Z kanani 27 30 ! merge from radiation branch (r3362) into trunk 28 31 ! (moh.hefny): … … 1089 1092 CALL cpu_log( log_point(74), 'urban_surface', 'start' ) 1090 1093 1091 CALL usm_surface_energy_balance 1094 CALL usm_surface_energy_balance( .FALSE. ) 1092 1095 IF ( usm_material_model ) THEN 1093 1096 CALL usm_green_heat_model 1094 CALL usm_material_heat_model 1097 CALL usm_material_heat_model ( .FALSE. ) 1095 1098 ENDIF 1096 1099 -
palm/trunk/SOURCE/time_integration_spinup.f90
r3337 r3418 25 25 ! ----------------- 26 26 ! $Id$ 27 ! call to material_heat_model now with check if spinup runs (rvtils) 28 ! 29 ! 3337 2018-10-12 15:17:09Z kanani 27 30 ! (from branch resler) 28 31 ! Add pt1 initialization … … 395 398 IF (urban_surface) THEN 396 399 CALL cpu_log( log_point(74), 'urban_surface', 'start' ) 397 CALL usm_surface_energy_balance 400 CALL usm_surface_energy_balance( .TRUE. ) 398 401 IF ( usm_material_model ) THEN 399 402 CALL usm_green_heat_model 400 CALL usm_material_heat_model 403 CALL usm_material_heat_model( .TRUE. ) 401 404 ENDIF 402 405 IF ( urban_surface ) THEN -
palm/trunk/SOURCE/urban_surface_mod.f90
r3382 r3418 28 28 ! ----------------- 29 29 ! $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 30 40 ! Bugix: made array declaration Fortran Standard conform 31 41 ! … … 354 364 USE arrays_3d, & 355 365 #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 357 367 #else 358 ONLY: hyp, pt, u, v, w, tend, exner 368 ONLY: hyp, pt, u, v, w, tend, exner, hyrho, prr, q, ql, vpt 359 369 #endif 370 USE calc_mean_profile_mod, & 371 ONLY: calc_mean_profile 360 372 361 373 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 363 375 364 376 USE control_parameters, & … … 373 385 plant_canopy, dz 374 386 387 USE bulk_cloud_model_mod, & 388 ONLY: bulk_cloud_model, precipitation 389 375 390 USE cpulog, & 376 391 ONLY: cpu_log, log_point, log_point_s … … 422 437 IMPLICIT NONE 423 438 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 424 488 425 489 !-- configuration parameters (they can be setup in PALM config) … … 429 493 LOGICAL :: indoor_model = .FALSE. !< whether to use the indoor model 430 494 LOGICAL :: read_wall_temp_3d = .FALSE. 495 LOGICAL :: usm_wall_mod = .FALSE. !< reduces conductivity of the first 2 wall layers by factor 0.1 431 496 432 497 … … 439 504 ! 440 505 !-- 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 488 610 REAL(wp) :: ground_floor_level = 4.0_wp !< default ground floor level 489 611 … … 500 622 /) 501 623 ! 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/) ) 604 897 605 898 ! … … 613 906 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: t 614 907 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 615 939 616 940 … … 633 957 REAL(wp), DIMENSION(:), ALLOCATABLE :: pcbinswdif_av !< Average of pcbinswdif 634 958 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 635 971 636 972 … … 668 1004 REAL(wp) :: window_inner_temperature = 295.0_wp !< temperature of the inner window surface (~22 degrees C) (K) 669 1005 1006 REAL(wp) :: m_total = 0.0_wp !< weighted total water content of the soil (m3/m3) 1007 INTEGER(iwp) :: soil_type 1008 670 1009 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 671 1010 !-- surface and material model variables for walls, ground, roofs … … 676 1015 677 1016 #if defined( __nopointer ) 678 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_ h !< wall surface temperature (K) at horizontal walls679 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_ h_p !< progn. wall surface temperature (K) at horizontal walls1017 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 680 1019 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_window_h !< window surface temperature (K) at horizontal walls 681 1020 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_window_h_p !< progn. window surface temperature (K) at horizontal walls … … 684 1023 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_10cm_h !< near surface temperature (10cm) (K) at horizontal walls 685 1024 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_ v687 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_ v_p1025 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 688 1027 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_window_v 689 1028 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_window_v_p … … 693 1032 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_10cm_v_p 694 1033 #else 695 REAL(wp), DIMENSION(:), POINTER :: t_surf_ h696 REAL(wp), DIMENSION(:), POINTER :: t_surf_ h_p1034 REAL(wp), DIMENSION(:), POINTER :: t_surf_wall_h 1035 REAL(wp), DIMENSION(:), POINTER :: t_surf_wall_h_p 697 1036 REAL(wp), DIMENSION(:), POINTER :: t_surf_window_h 698 1037 REAL(wp), DIMENSION(:), POINTER :: t_surf_window_h_p … … 702 1041 REAL(wp), DIMENSION(:), POINTER :: t_surf_10cm_h_p 703 1042 704 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_ h_1705 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_ h_21043 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_wall_h_1 1044 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_wall_h_2 706 1045 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_window_h_1 707 1046 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_window_h_2 … … 711 1050 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_10cm_h_2 712 1051 713 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_ v714 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_ v_p1052 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_wall_v 1053 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_wall_v_p 715 1054 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_window_v 716 1055 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_window_v_p … … 720 1059 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_10cm_v_p 721 1060 722 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_ v_1723 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_ v_21061 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 724 1063 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_window_v_1 725 1064 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_window_v_2 … … 730 1069 731 1070 #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) 732 1080 733 1081 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 738 1086 #if defined( __nopointer ) 739 1087 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 740 1089 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_wall_h_p !< Prog. wall temperature (K) 741 1090 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 742 1092 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_window_h_p !< Prog. window temperature (K) 743 1093 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 744 1095 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 745 1105 746 1106 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 747 1108 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_wall_v_p !< Prog. wall temperature (K) 748 1109 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 749 1111 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_window_v_p !< Prog. window temperature (K) 750 1112 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 751 1114 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 752 1119 #else 753 1120 REAL(wp), DIMENSION(:,:), POINTER :: t_wall_h, t_wall_h_p 754 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_wall_h_ 1, t_wall_h_21121 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_wall_h_av, t_wall_h_1, t_wall_h_2 755 1122 REAL(wp), DIMENSION(:,:), POINTER :: t_window_h, t_window_h_p 756 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_window_h_ 1, t_window_h_21123 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_window_h_av, t_window_h_1, t_window_h_2 757 1124 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 759 1130 760 1131 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_21132 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_wall_v_av, t_wall_v_1, t_wall_v_2 762 1133 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_21134 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_window_v_av, t_window_v_1, t_window_v_2 764 1135 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 766 1139 #endif 767 1140 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 769 1146 !-- Surface and material parameters classes (surface_type) 770 1147 !-- albedo, emissivity, lambda_surf, roughness, thickness, volumetric heat capacity, thermal conductivity … … 864 1241 865 1242 !-- 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 868 1245 869 1246 … … 949 1326 950 1327 !-- 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) ) 953 1330 ALLOCATE ( surf_usm_h%lambda_surf_window(1:surf_usm_h%ns) ) 954 1331 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) ) 956 1333 ALLOCATE ( surf_usm_h%c_surface_window(1:surf_usm_h%ns) ) 957 1334 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) ) 965 1343 ! 966 1344 !-- For vertical surfaces. … … 978 1356 ALLOCATE ( surf_usm_v(l)%r_a_green(1:surf_usm_v(l)%ns) ) 979 1357 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) ) 980 1360 ENDDO 981 1361 … … 991 1371 ALLOCATE ( surf_usm_h%lambda_h_green(nzb_wall:nzt_wall,1:surf_usm_h%ns) ) 992 1372 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) ) 993 1382 994 1383 ! … … 1006 1395 ENDDO 1007 1396 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 1008 1419 !-- allocate wall and roof layers sizes. For horizontal surfaces. 1009 1420 ALLOCATE ( zwn(nzb_wall:nzt_wall) ) … … 1047 1458 !-- allocate wall and roof temperature arrays, for horizontal walls 1048 1459 #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) ) 1053 1464 IF ( .NOT. ALLOCATED( t_wall_h ) ) & 1054 1465 ALLOCATE ( t_wall_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) ) … … 1075 1486 IF ( .NOT. ALLOCATED( t_surf_10cm_h_p ) ) & 1076 1487 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 1077 1512 #else 1078 1513 ! 1079 1514 !-- Allocate if required. Note, in case of restarts, some of these arrays 1080 1515 !-- 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) ) 1085 1520 IF ( .NOT. ALLOCATED( t_wall_h_1 ) ) & 1086 1521 ALLOCATE ( t_wall_h_1(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) ) … … 1107 1542 IF ( .NOT. ALLOCATED( t_surf_10cm_h_2 ) ) & 1108 1543 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 1109 1564 ! 1110 1565 !-- initial assignment of the pointers … … 1112 1567 t_window_h => t_window_h_1; t_window_h_p => t_window_h_2 1113 1568 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_21569 t_surf_wall_h => t_surf_wall_h_1; t_surf_wall_h_p => t_surf_wall_h_2 1115 1570 t_surf_window_h => t_surf_window_h_1; t_surf_window_h_p => t_surf_window_h_2 1116 1571 t_surf_green_h => t_surf_green_h_1; t_surf_green_h_p => t_surf_green_h_2 1117 1572 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 1118 1580 1119 1581 #endif … … 1122 1584 #if defined( __nopointer ) 1123 1585 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) ) 1128 1590 IF ( .NOT. ALLOCATED( t_wall_v(l)%t ) ) & 1129 1591 ALLOCATE ( t_wall_v(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) ) … … 1150 1612 IF ( .NOT. ALLOCATED( t_surf_10cm_v_p(l)%t ) ) & 1151 1613 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) ) 1152 1620 ENDDO 1153 1621 #else … … 1156 1624 !-- might be already allocated. 1157 1625 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) ) 1162 1630 IF ( .NOT. ALLOCATED( t_wall_v_1(l)%t ) ) & 1163 1631 ALLOCATE ( t_wall_v_1(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) ) … … 1184 1652 IF ( .NOT. ALLOCATED( t_surf_10cm_v_2(l)%t ) ) & 1185 1653 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) ) 1186 1662 ENDDO 1187 1663 ! 1188 1664 !-- initial assignment of the pointers 1189 1665 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_21666 t_surf_wall_v => t_surf_wall_v_1; t_surf_wall_v_p => t_surf_wall_v_2 1191 1667 t_window_v => t_window_v_1; t_window_v_p => t_window_v_2 1192 1668 t_green_v => t_green_v_1; t_green_v_p => t_green_v_2 … … 1194 1670 t_surf_green_v => t_surf_green_v_1; t_surf_green_v_p => t_surf_green_v_2 1195 1671 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 1196 1674 1197 1675 #endif 1198 1676 ! 1199 1677 !-- 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) ) 1201 1679 ALLOCATE ( surf_usm_h%tt_wall_m(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) ) 1202 1680 ALLOCATE ( surf_usm_h%tt_surface_window_m(1:surf_usm_h%ns) ) … … 1206 1684 1207 1685 ! 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 ! 1208 1696 !-- Set inital values for prognostic quantities 1209 IF ( ALLOCATED( surf_usm_h%tt_surface_ m ) ) surf_usm_h%tt_surface_m = 0.0_wp1697 IF ( ALLOCATED( surf_usm_h%tt_surface_wall_m ) ) surf_usm_h%tt_surface_wall_m = 0.0_wp 1210 1698 IF ( ALLOCATED( surf_usm_h%tt_wall_m ) ) surf_usm_h%tt_wall_m = 0.0_wp 1211 1699 IF ( ALLOCATED( surf_usm_h%tt_surface_window_m ) ) surf_usm_h%tt_surface_window_m = 0.0_wp … … 1216 1704 !-- Now, for vertical surfaces 1217 1705 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) ) 1219 1707 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_wp1708 IF ( ALLOCATED( surf_usm_v(l)%tt_surface_wall_m ) ) surf_usm_v(l)%tt_surface_wall_m = 0.0_wp 1221 1709 IF ( ALLOCATED( surf_usm_v(l)%tt_wall_m ) ) surf_usm_v(l)%tt_wall_m = 0.0_wp 1222 1710 ALLOCATE ( surf_usm_v(l)%tt_surface_window_m(1:surf_usm_v(l)%ns) ) … … 1334 1822 ELSE 1335 1823 !-- 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 1336 1834 RETURN 1337 1835 ENDIF … … 1489 1987 ENDIF 1490 1988 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 1491 2028 ! 1492 2029 !-- Please note, the following output quantities belongs to the … … 1554 2091 ENDIF 1555 2092 1556 CASE ( 'usm_t_surf ' )2093 CASE ( 'usm_t_surf_wall' ) 1557 2094 !-- surface temperature for surfaces 1558 IF ( l == -1 .AND. .NOT. ALLOCATED(surf_usm_h%t_surf_ av) ) THEN1559 ALLOCATE( surf_usm_h%t_surf_ av(1:surf_usm_h%ns) )1560 surf_usm_h%t_surf_ av = 0.0_wp2095 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 1561 2098 ELSE 1562 IF ( .NOT. ALLOCATED(surf_usm_v(l)%t_surf_ av) ) THEN1563 ALLOCATE( surf_usm_v(l)%t_surf_ av(1:surf_usm_v(l)%ns) )1564 surf_usm_v(l)%t_surf_ av = 0.0_wp2099 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 1565 2102 ENDIF 1566 2103 ENDIF … … 1635 2172 ALLOCATE( surf_usm_v(l)%t_green_av(nzb_wall:nzt_wall,1:surf_usm_v(l)%ns) ) 1636 2173 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 1637 2185 ENDIF 1638 2186 ENDIF … … 1803 2351 ENDIF 1804 2352 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 1805 2401 CASE ( 'usm_wghf' ) 1806 2402 !-- array of heat flux from ground (wall, roof, land) … … 1883 2479 ENDIF 1884 2480 1885 CASE ( 'usm_t_surf ' )2481 CASE ( 'usm_t_surf_wall' ) 1886 2482 !-- surface temperature for surfaces 1887 2483 IF ( l == -1 ) THEN 1888 2484 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) 1892 2488 ENDDO 1893 2489 ELSE 1894 2490 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) 1898 2494 ENDDO 1899 2495 ENDIF … … 1996 2592 ENDIF 1997 2593 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 1998 2610 CASE DEFAULT 1999 2611 CONTINUE … … 2156 2768 ENDIF 2157 2769 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 2158 2818 CASE ( 'usm_wghf' ) 2159 2819 !-- array of heat flux from ground (wall, roof, land) … … 2236 2896 ENDIF 2237 2897 2238 CASE ( 'usm_t_surf ' )2898 CASE ( 'usm_t_surf_wall' ) 2239 2899 !-- surface temperature for surfaces 2240 2900 IF ( l == -1 ) THEN 2241 2901 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) / & 2244 2904 REAL( average_count_3d, kind=wp ) 2245 2905 ENDDO 2246 2906 ELSE 2247 2907 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) / & 2250 2910 REAL( average_count_3d, kind=wp ) 2251 2911 ENDDO … … 2347 3007 ENDDO 2348 3008 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 2349 3025 2350 3026 … … 2406 3082 !------------------------------------------------------------------------------! 2407 3083 SUBROUTINE usm_check_data_output( variable, unit ) 2408 3084 2409 3085 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 !< 2413 3089 2414 3090 INTEGER(iwp) :: i,j !< index 2415 CHARACTER(LEN=varnamelength) :: var 3091 CHARACTER(LEN=varnamelength) :: var !< TRIM(variable) 2416 3092 INTEGER(iwp), PARAMETER :: nl1 = 32 !< number of directional usm variables 2417 3093 CHARACTER(LEN=varnamelength), DIMENSION(nl1) :: varlist1 = & !< list of directional usm variables … … 2468 3144 2469 3145 lfound = .FALSE. 3146 2470 3147 var = TRIM(variable) 2471 3148 … … 2495 3172 10 CONTINUE 2496 3173 2497 !-- check if variable exists2498 3174 IF ( var(1:12) == 'usm_rad_net_' .OR. var(1:13) == 'usm_rad_insw_' .OR. & 2499 3175 var(1:13) == 'usm_rad_inlw_' .OR. var(1:16) == 'usm_rad_inswdir_' .OR. & … … 2505 3181 var(1:9) == 'usm_wshf_' .OR. var(1:9) == 'usm_wghf_' .OR. & 2506 3182 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 2509 3187 unit = 'W/m2' 2510 ELSE IF ( var(1:1 0) == '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. & 2511 3189 var(1:12) == 'usm_t_window' .OR. var(1:17) == 'usm_t_surf_window' .OR. & 2512 3190 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. & 2514 3192 var(1:15) == 'usm_t_surf_10cm' ) THEN 2515 3193 unit = 'K' … … 2662 3340 IF ( istat == 0 .AND. iwl >= nzb_wall .AND. iwl <= nzt_wall ) THEN 2663 3341 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) 2664 3349 ENDIF 2665 3350 ENDIF … … 3132 3817 ENDIF 3133 3818 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 3134 3936 3135 3937 … … 3327 4129 ENDIF 3328 4130 3329 CASE ( 'usm_t_surf ' )4131 CASE ( 'usm_t_surf_wall' ) 3330 4132 !-- surface temperature for surfaces 3331 4133 IF ( av == 0 ) THEN … … 3335 4137 j = surf_usm_h%j(m) 3336 4138 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) 3338 4140 ENDDO 3339 4141 ELSE … … 3343 4145 j = surf_usm_v(l)%j(m) 3344 4146 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) 3346 4148 ENDDO 3347 4149 ENDIF … … 3352 4154 j = surf_usm_h%j(m) 3353 4155 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) 3355 4157 ENDDO 3356 4158 ELSE … … 3360 4162 j = surf_usm_v(l)%j(m) 3361 4163 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) 3363 4165 ENDDO 3364 4166 ENDIF … … 3602 4404 k = surf_usm_v(l)%k(m) 3603 4405 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) 3604 4444 ENDDO 3605 4445 ENDIF … … 3658 4498 var(1:16) == 'usm_wghf_window_' .OR. var(1:15) == 'usm_wghf_green_' .OR. & 3659 4499 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. & 3661 4503 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. & 3663 4505 var(1:15) == 'usm_t_surf_10cm' .OR. & 3664 4506 var(1:9) == 'usm_surfz' .OR. var(1:7) == 'usm_svf' .OR. & 3665 4507 var(1:7) == 'usm_dif' .OR. var(1:11) == 'usm_surfcat' .OR. & 3666 4508 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. & 3668 4510 var(1:9) == 'usm_skyvf' .OR. var(1:9) == 'usm_skyvft' ) THEN 3669 4511 … … 3711 4553 surf_usm_h%zw_window(k-1,m) 3712 4554 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_wall3715 surf_usm_h%dz_green(k,m) = surf_usm_h%zw_green(k,m) - &3716 surf_usm_h%zw_green(k-1,m)3717 ENDDO4555 ! 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 3718 4560 3719 4561 surf_usm_h%dz_wall(nzt_wall+1,m) = surf_usm_h%dz_wall(nzt_wall,m) … … 3733 4575 surf_usm_h%dz_window_stag(nzt_wall,m) = surf_usm_h%dz_window(nzt_wall,m) 3734 4576 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 3735 4608 surf_usm_h%dz_green(nzt_wall+1,m) = surf_usm_h%dz_green(nzt_wall,m) 3736 4609 … … 3740 4613 ENDDO 3741 4614 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 !------------------------------- 3742 4661 ENDDO 3743 4662 surf_usm_h%ddz_wall = 1.0_wp / surf_usm_h%dz_wall … … 3807 4726 3808 4727 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 3809 4796 CALL location_message( ' wall structures filed out', .TRUE. ) 3810 4797 … … 3830 4817 3831 4818 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 3832 4822 INTEGER(iwp) :: ind_emis_wall !< index in input list for wall emissivity 3833 4823 INTEGER(iwp) :: ind_emis_green !< index in input list for green emissivity … … 3836 4826 INTEGER(iwp) :: ind_green_frac_r !< index in input list for green fraction on roof 3837 4827 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 3838 4829 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 3839 4831 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 3840 4833 INTEGER(iwp) :: ind_lai_r !< index in input list for LAI on roof 3841 4834 INTEGER(iwp) :: ind_lai_w !< index in input list for LAI on wall 3842 4835 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 3843 4837 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 3844 4839 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 3845 4849 INTEGER(iwp) :: ind_trans !< index in input list for window transmissivity 3846 4850 INTEGER(iwp) :: ind_wall_frac !< index in input list for wall fraction … … 3854 4858 INTEGER(iwp) :: st !< dummy 3855 4859 3856 REAL(wp) :: c, tin, twin4860 REAL(wp) :: c, d, tin, twin 3857 4861 REAL(wp) :: ground_floor_level_l !< local height of ground floor level 3858 4862 REAL(wp) :: z_agl !< height above ground … … 3949 4953 ENDDO 3950 4954 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 ! 3951 4974 ! 3952 4975 !-- Initialize urban-type surface attribute. According to initialization in … … 3960 4983 ! 3961 4984 !-- 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 3969 4987 ind_green_frac_r = MERGE( ind_green_frac_r_gfl, ind_green_frac_r_agfl, & 3970 4988 surf_usm_h%ground_level(m) ) 3971 4989 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, &3994 4990 surf_usm_h%ground_level(m) ) 3995 4991 ind_z0 = MERGE( ind_z0_gfl, ind_z0_agfl, & … … 4003 4999 ! 4004 5000 !-- 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) 4006 5002 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(1 2,building_type)4036 surf_usm_h%target_temp_winter(m) = building_pars(1 3,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) 4037 5033 ! 4038 5034 !-- 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) 4044 5040 4045 5041 surf_usm_h%z0(m) = building_pars(ind_z0,building_type) … … 4048 5044 ! 4049 5045 !-- 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) 4058 5054 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) 4063 5059 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) 4075 5073 4076 5074 ENDDO … … 4082 5080 ! 4083 5081 !-- 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) ) 4085 5089 ind_wall_frac = MERGE( ind_wall_frac_gfl, ind_wall_frac_agfl, & 4086 5090 surf_usm_v(l)%ground_level(m) ) … … 4097 5101 ind_hc1 = MERGE( ind_hc1_gfl, ind_hc1_agfl, & 4098 5102 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) ) 4099 5105 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, & 4100 5108 surf_usm_v(l)%ground_level(m) ) 4101 5109 ind_hc3 = MERGE( ind_hc3_gfl, ind_hc3_agfl, & 4102 5110 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) ) 4103 5113 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, & 4104 5116 surf_usm_v(l)%ground_level(m) ) 4105 5117 ind_tc2 = MERGE( ind_tc2_gfl, ind_tc2_agfl, & 4106 5118 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) ) 4107 5121 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, & 4108 5140 surf_usm_v(l)%ground_level(m) ) 4109 5141 ind_emis_wall = MERGE( ind_emis_wall_gfl, ind_emis_wall_agfl, & … … 4135 5167 surf_usm_v(l)%rho_c_wall(nzb_wall+3,m) = building_pars(ind_hc3,building_type) 4136 5168 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) 4141 5173 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) 4146 5178 4147 5179 surf_usm_v(l)%lambda_h(nzb_wall,m) = building_pars(ind_tc1,building_type) … … 4150 5182 surf_usm_v(l)%lambda_h(nzb_wall+3,m) = building_pars(ind_tc3,building_type) 4151 5183 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(1 2,building_type)4163 surf_usm_v(l)%target_temp_winter(m) = building_pars(1 3,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) 4164 5196 ! 4165 5197 !-- emissivity of wall-, green- and window fraction … … 4188 5220 surf_usm_v(l)%zw_green(nzb_wall+3,m) = building_pars(ind_thick_4,building_type) 4189 5221 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(4 6,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) 4201 5233 4202 5234 ENDDO … … 4215 5247 ! 4216 5248 !-- 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 4224 5251 ind_green_frac_r = MERGE( ind_green_frac_r_gfl, ind_green_frac_r_agfl, & 4225 5252 surf_usm_h%ground_level(m) ) 4226 5253 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, &4249 5254 surf_usm_h%ground_level(m) ) 4250 5255 ind_z0 = MERGE( ind_z0_gfl, ind_z0_agfl, & … … 4258 5263 ! 4259 5264 !-- 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) 4261 5266 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) 4273 5278 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) 4282 5287 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(1 2,st)4293 surf_usm_h%target_temp_winter(m) = building_pars(1 3,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) 4294 5299 ! 4295 5300 !-- 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) 4301 5306 4302 5307 surf_usm_h%z0(m) = building_pars(ind_z0,st) … … 4305 5310 ! 4306 5311 !-- 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) 4315 5320 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) 4332 5339 4333 5340 ENDIF … … 4346 5353 ! 4347 5354 !-- 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) ) 4349 5362 ind_wall_frac = MERGE( ind_wall_frac_gfl, ind_wall_frac_agfl, & 4350 5363 surf_usm_v(l)%ground_level(m) ) … … 4361 5374 ind_hc1 = MERGE( ind_hc1_gfl, ind_hc1_agfl, & 4362 5375 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) ) 4363 5378 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, & 4364 5381 surf_usm_v(l)%ground_level(m) ) 4365 5382 ind_hc3 = MERGE( ind_hc3_gfl, ind_hc3_agfl, & 4366 5383 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) ) 4367 5386 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, & 4368 5389 surf_usm_v(l)%ground_level(m) ) 4369 5390 ind_tc2 = MERGE( ind_tc2_gfl, ind_tc2_agfl, & 4370 5391 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) ) 4371 5394 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, & 4372 5413 surf_usm_v(l)%ground_level(m) ) 4373 5414 ind_emis_wall = MERGE( ind_emis_wall_gfl, ind_emis_wall_agfl, & … … 4378 5419 surf_usm_v(l)%ground_level(m) ) 4379 5420 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) ) 4381 5422 ind_z0 = MERGE( ind_z0_gfl, ind_z0_agfl, & 4382 5423 surf_usm_v(l)%ground_level(m) ) … … 4399 5440 surf_usm_v(l)%rho_c_wall(nzb_wall+3,m) = building_pars(ind_hc3,st) 4400 5441 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) 4405 5446 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) 4410 5451 4411 5452 surf_usm_v(l)%lambda_h(nzb_wall,m) = building_pars(ind_tc1,st) … … 4414 5455 surf_usm_v(l)%lambda_h(nzb_wall+3,m) = building_pars(ind_tc3,st) 4415 5456 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) 4420 5461 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(1 2,st)4427 surf_usm_v(l)%target_temp_winter(m) = building_pars(1 3,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) 4428 5469 ! 4429 5470 !-- emissivity of wall-, green- and window fraction … … 4452 5493 surf_usm_v(l)%zw_green(nzb_wall+3,m) = building_pars(ind_thick_4,st) 4453 5494 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(4 6,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) 4465 5506 4466 5507 … … 4479 5520 ! 4480 5521 !-- 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. 4488 5523 ind_green_frac_r = MERGE( ind_green_frac_r_gfl, ind_green_frac_r_agfl, & 4489 5524 surf_usm_h%ground_level(m) ) 4490 5525 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, &4513 5526 surf_usm_h%ground_level(m) ) 4514 5527 ind_z0 = MERGE( ind_z0_gfl, ind_z0_agfl, & … … 4519 5532 ! 4520 5533 !-- 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) 4523 5536 IF ( building_pars_f%pars_xy(ind_green_frac_r,j,i) /= building_pars_f%fill ) & 4524 5537 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) 4527 5540 4528 5541 … … 4530 5543 surf_usm_h%lai(m) = building_pars_f%pars_xy(ind_lai_r,j,i) 4531 5544 4532 IF ( building_pars_f%pars_xy(ind_hc1 ,j,i) /= building_pars_f%fill ) THEN4533 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) 4535 5548 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 ) THEN4541 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) 4543 5556 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 ) THEN4549 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) 4551 5564 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 ) THEN4558 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) 4560 5573 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 ) THEN4566 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) 4568 5581 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 ) THEN4574 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) 4576 5589 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(1 2,j,i) /= building_pars_f%fill ) &4583 surf_usm_h%target_temp_summer(m) = building_pars_f%pars_xy(1 2,j,i)4584 IF ( building_pars_f%pars_xy(1 3,j,i) /= building_pars_f%fill ) &4585 surf_usm_h%target_temp_winter(m) = building_pars_f%pars_xy(1 3,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) 4596 5609 4597 5610 IF ( building_pars_f%pars_xy(ind_z0,j,i) /= building_pars_f%fill ) & … … 4602 5615 surf_usm_h%z0q(m) = building_pars_f%pars_xy(ind_z0qh,j,i) 4603 5616 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) 4648 5664 ENDDO 4649 5665 … … 4657 5673 ! 4658 5674 !-- 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) ) 4660 5682 ind_wall_frac = MERGE( ind_wall_frac_gfl, ind_wall_frac_agfl, & 4661 5683 surf_usm_v(l)%ground_level(m) ) … … 4672 5694 ind_hc1 = MERGE( ind_hc1_gfl, ind_hc1_agfl, & 4673 5695 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) ) 4674 5698 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, & 4675 5701 surf_usm_v(l)%ground_level(m) ) 4676 5702 ind_hc3 = MERGE( ind_hc3_gfl, ind_hc3_agfl, & 4677 5703 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) ) 4678 5706 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, & 4679 5709 surf_usm_v(l)%ground_level(m) ) 4680 5710 ind_tc2 = MERGE( ind_tc2_gfl, ind_tc2_agfl, & 4681 5711 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) ) 4682 5714 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, & 4683 5733 surf_usm_v(l)%ground_level(m) ) 4684 5734 ind_emis_wall = MERGE( ind_emis_wall_gfl, ind_emis_wall_agfl, & … … 4728 5778 IF ( building_pars_f%pars_xy(ind_hc1,j,i) /= building_pars_f%fill ) THEN 4729 5779 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) 4731 5781 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) 4733 5783 ENDIF 4734 5784 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) 4736 5786 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 ) THEN4739 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) 4741 5791 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) 4746 5796 4747 5797 IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill ) THEN … … 4754 5804 surf_usm_v(l)%lambda_h(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3,j,i) 4755 5805 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) 4758 5808 ENDIF 4759 5809 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) 4761 5811 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 ) THEN4764 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) 4766 5816 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(1 2,j,i) /= building_pars_f%fill ) &4773 surf_usm_v(l)%target_temp_summer(m) = building_pars_f%pars_xy(1 2,j,i)4774 IF ( building_pars_f%pars_xy(1 3,j,i) /= building_pars_f%fill ) &4775 surf_usm_v(l)%target_temp_winter(m) = building_pars_f%pars_xy(1 3,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) 4776 5826 4777 5827 IF ( building_pars_f%pars_xy(ind_emis_wall,j,i) /= building_pars_f%fill ) & … … 4815 5865 IF ( building_pars_f%pars_xy(ind_thick_4,j,i) /= building_pars_f%fill ) & 4816 5866 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(4 6,j,i) /= building_pars_f%fill ) &4837 surf_usm_v(l)%lambda_surf_window(m) = building_pars_f%pars_xy(4 6,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) 4838 5888 4839 5889 ENDDO … … 4945 5995 4946 5996 ! 4947 !-- At horizontal surfaces. Please note, t_surf_ h is defined on a5997 !-- At horizontal surfaces. Please note, t_surf_wall_h is defined on a 4948 5998 !-- different data type, but with the same dimension. 4949 5999 #if ! defined( __nopointer ) … … 4953 6003 k = surf_usm_h%k(m) 4954 6004 4955 t_surf_ h(m) = pt(k,j,i) * exner(k)6005 t_surf_wall_h(m) = pt(k,j,i) * exner(k) 4956 6006 t_surf_window_h(m) = pt(k,j,i) * exner(k) 4957 6007 t_surf_green_h(m) = pt(k,j,i) * exner(k) … … 4966 6016 k = surf_usm_v(l)%k(m) 4967 6017 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) 4969 6019 t_surf_window_v(l)%t(m) = pt(k,j,i) * exner(k) 4970 6020 t_surf_green_v(l)%t(m) = pt(k,j,i) * exner(k) … … 5009 6059 REAL( nzt_wall + 1 - nzb_wall , wp ) 5010 6060 5011 t_wall_h(k,m) = ( 1.0_wp - c ) * t_surf_ h(m) + c * tin6061 t_wall_h(k,m) = ( 1.0_wp - c ) * t_surf_wall_h(m) + c * tin 5012 6062 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 5014 6070 ENDDO 5015 6071 ENDDO … … 5026 6082 c = REAL( k - nzb_wall, wp ) / & 5027 6083 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 * tin6084 t_wall_v(l)%t(k,m) = ( 1.0_wp - c ) * t_surf_wall_v(l)%t(m) + c * tin 5029 6085 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 5031 6088 ENDDO 5032 6089 ENDDO … … 5043 6100 5044 6101 !-- initialize prognostic values for the first timestep 5045 t_surf_ h_p = t_surf_h5046 t_surf_ v_p = t_surf_v6102 t_surf_wall_h_p = t_surf_wall_h 6103 t_surf_wall_v_p = t_surf_wall_v 5047 6104 t_surf_window_h_p = t_surf_window_h 5048 6105 t_surf_window_v_p = t_surf_window_v … … 5064 6121 !-- that is not yet possible. 5065 6122 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 5066 6156 CALL cpu_log( log_point_s(78), 'usm_init', 'stop' ) 5067 6157 … … 5076 6166 !> temperature. 5077 6167 !------------------------------------------------------------------------------! 5078 SUBROUTINE usm_material_heat_model 6168 SUBROUTINE usm_material_heat_model( spinup ) 5079 6169 5080 6170 … … 5084 6174 5085 6175 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 5086 6187 5087 6188 ! … … 5097 6198 wtend(:) = 0.0_wp 5098 6199 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) * & 5100 6201 ( t_wall_h(nzb_wall+1,m) & 5101 6202 - t_wall_h(nzb_wall,m) ) * & … … 5108 6209 / (surf_usm_h%frac(ind_veg_wall,m) & 5109 6210 + 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) & 5111 6212 * 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) & 5113 6214 * surf_usm_h%ddz_wall(nzb_wall,m) ) & 5114 6215 / ( surf_usm_h%ddz_green(nzt_wall,m) & … … 5118 6219 surf_usm_h%ddz_wall_stag(nzb_wall,m) 5119 6220 5120 !dummy value for testing5121 surf_usm_h%iwghf_eb(m) = 0.5122 5123 6221 IF ( indoor_model ) then 5124 6222 DO kw = nzb_wall+1, nzt_wall-1 5125 6223 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) & 5127 6225 * ( t_wall_h(kw+1,m) - t_wall_h(kw,m) ) & 5128 6226 * 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) & 5130 6228 * ( t_wall_h(kw,m) - t_wall_h(kw-1,m) ) & 5131 6229 * surf_usm_h%ddz_wall(kw,m) & … … 5133 6231 ENDDO 5134 6232 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) * & 5136 6234 ( t_wall_h(nzt_wall,m) & 5137 6235 - t_wall_h(nzt_wall-1,m) ) * & … … 5142 6240 DO kw = nzb_wall+1, nzt_wall 5143 6241 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) & 5145 6243 * ( t_wall_h(kw+1,m) - t_wall_h(kw,m) ) & 5146 6244 * 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) & 5148 6246 * ( t_wall_h(kw,m) - t_wall_h(kw-1,m) ) & 5149 6247 * surf_usm_h%ddz_wall(kw,m) & … … 5157 6255 * surf_usm_h%tt_wall_m(nzb_wall:nzt_wall,m) ) 5158 6256 6257 if (.NOT. spinup) then 6258 win_absorp = -log(surf_usm_h%transmissivity(m)) / surf_usm_h%zw_window(nzt_wall,m) 5159 6259 !-- prognostic equation for ground/roof window temperature t_window_h 5160 6260 wintend(:) = 0.0_wp … … 5166 6266 + surf_usm_h%wghf_eb_window(m) & 5167 6267 + surf_usm_h%rad_sw_in(m) & 5168 * (1.0_wp - exp(- surf_usm_h%transmissivity(m)&6268 * (1.0_wp - exp(-win_absorp & 5169 6269 * surf_usm_h%zw_window(nzb_wall,m) ) ) & 5170 6270 ) * surf_usm_h%ddz_window_stag(nzb_wall,m) … … 5180 6280 * surf_usm_h%ddz_window(kw,m) & 5181 6281 + surf_usm_h%rad_sw_in(m) & 5182 * (exp(- surf_usm_h%transmissivity(m)&6282 * (exp(-win_absorp & 5183 6283 * surf_usm_h%zw_window(kw-1,m) ) & 5184 - exp(- surf_usm_h%transmissivity(m)&6284 - exp(-win_absorp & 5185 6285 * surf_usm_h%zw_window(kw,m) ) ) & 5186 6286 ) * surf_usm_h%ddz_window_stag(kw,m) 5187 6287 5188 6288 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) ) ) & 5198 6300 ) * surf_usm_h%ddz_window_stag(nzt_wall,m) 5199 6301 ELSE … … 5207 6309 * surf_usm_h%ddz_window(kw,m) & 5208 6310 + surf_usm_h%rad_sw_in(m) & 5209 * (exp(- surf_usm_h%transmissivity(m)&6311 * (exp(-win_absorp & 5210 6312 * surf_usm_h%zw_window(kw-1,m) ) & 5211 - exp(- surf_usm_h%transmissivity(m)&6313 - exp(-win_absorp & 5212 6314 * surf_usm_h%zw_window(kw,m) ) ) & 5213 6315 ) * surf_usm_h%ddz_window_stag(kw,m) … … 5220 6322 * wintend(nzb_wall:nzt_wall) + tsc(3) & 5221 6323 * surf_usm_h%tt_window_m(nzb_wall:nzt_wall,m) ) 6324 6325 endif 5222 6326 5223 6327 ! … … 5237 6341 ENDIF 5238 6342 6343 if (.NOT. spinup) then 5239 6344 !-- calculate t_window tendencies for the next Runge-Kutta step 5240 6345 IF ( timestep_scheme(1:5) == 'runge' ) THEN … … 5251 6356 ENDIF 5252 6357 ENDIF 6358 6359 endif 6360 5253 6361 ENDDO 5254 6362 … … 5267 6375 5268 6376 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) * & 5270 6378 ( t_wall_v(l)%t(nzb_wall+1,m) & 5271 6379 - t_wall_v(l)%t(nzb_wall,m) ) * & … … 5278 6386 / (surf_usm_v(l)%frac(ind_veg_wall,m) & 5279 6387 + 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) & 5281 6389 * 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) & 5283 6391 * surf_usm_v(l)%ddz_wall(nzb_wall,m) ) & 5284 6392 / ( surf_usm_v(l)%ddz_green(nzt_wall,m) & … … 5288 6396 surf_usm_v(l)%ddz_wall_stag(nzb_wall,m) 5289 6397 5290 !dummy value for testing5291 surf_usm_v(l)%iwghf_eb(m) = 0.5292 5293 6398 IF ( indoor_model ) then 5294 6399 DO kw = nzb_wall+1, nzt_wall-1 5295 6400 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) & 5297 6402 * ( t_wall_v(l)%t(kw+1,m) - t_wall_v(l)%t(kw,m) )& 5298 6403 * 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) & 5300 6405 * ( t_wall_v(l)%t(kw,m) - t_wall_v(l)%t(kw-1,m) )& 5301 6406 * surf_usm_v(l)%ddz_wall(kw,m) & … … 5303 6408 ENDDO 5304 6409 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)* & 5306 6411 ( t_wall_v(l)%t(nzt_wall,m) & 5307 6412 - t_wall_v(l)%t(nzt_wall-1,m) ) * & … … 5312 6417 DO kw = nzb_wall+1, nzt_wall 5313 6418 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) & 5315 6420 * ( t_wall_v(l)%t(kw+1,m) - t_wall_v(l)%t(kw,m) )& 5316 6421 * 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) & 5318 6423 * ( t_wall_v(l)%t(kw,m) - t_wall_v(l)%t(kw-1,m) )& 5319 6424 * surf_usm_v(l)%ddz_wall(kw,m) & … … 5328 6433 * surf_usm_v(l)%tt_wall_m(nzb_wall:nzt_wall,m) ) 5329 6434 6435 if (.NOT. spinup) then 6436 win_absorp = -log(surf_usm_v(l)%transmissivity(m)) / surf_usm_v(l)%zw_window(nzt_wall,m) 5330 6437 !-- prognostic equation for window temperature t_window_v 5331 6438 wintend(:) = 0.0_wp … … 5337 6444 + surf_usm_v(l)%wghf_eb_window(m) & 5338 6445 + 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 & 5340 6447 * surf_usm_v(l)%zw_window(nzb_wall,m) ) ) & 5341 6448 ) * surf_usm_v(l)%ddz_window_stag(nzb_wall,m) … … 5351 6458 * surf_usm_v(l)%ddz_window(kw,m) & 5352 6459 + surf_usm_v(l)%rad_sw_in(m) & 5353 * (exp(- surf_usm_v(l)%transmissivity(m)&6460 * (exp(-win_absorp & 5354 6461 * surf_usm_v(l)%zw_window(kw-1,m) ) & 5355 - exp(- surf_usm_v(l)%transmissivity(m)&6462 - exp(-win_absorp & 5356 6463 * surf_usm_v(l)%zw_window(kw,m) ) ) & 5357 6464 ) * surf_usm_v(l)%ddz_window_stag(kw,m) 5358 6465 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) ) ) & 5368 6477 ) * surf_usm_v(l)%ddz_window_stag(nzt_wall,m) 5369 6478 ELSE … … 5377 6486 * surf_usm_v(l)%ddz_window(kw,m) & 5378 6487 + surf_usm_v(l)%rad_sw_in(m) & 5379 * (exp(- surf_usm_v(l)%transmissivity(m)&6488 * (exp(-win_absorp & 5380 6489 * surf_usm_v(l)%zw_window(kw-1,m) ) & 5381 - exp(- surf_usm_v(l)%transmissivity(m)&6490 - exp(-win_absorp & 5382 6491 * surf_usm_v(l)%zw_window(kw,m) ) ) & 5383 6492 ) * surf_usm_v(l)%ddz_window_stag(kw,m) … … 5390 6499 * wintend(nzb_wall:nzt_wall) + tsc(3) & 5391 6500 * surf_usm_v(l)%tt_window_m(nzb_wall:nzt_wall,m) ) 6501 endif 5392 6502 5393 6503 ! … … 5407 6517 ENDIF 5408 6518 ENDIF 6519 6520 6521 if (.NOT. spinup) then 5409 6522 !-- calculate t_window tendencies for the next Runge-Kutta step 5410 6523 IF ( timestep_scheme(1:5) == 'runge' ) THEN … … 5422 6535 ENDIF 5423 6536 ENDIF 6537 endif 6538 5424 6539 ENDDO 5425 6540 ENDDO … … 5441 6556 INTEGER(iwp) :: i,j,k,l,kw, m !< running indices 5442 6557 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) 5444 6573 5445 6574 ! 5446 6575 !-- For horizontal surfaces 5447 6576 DO m = 1, surf_usm_h%ns 6577 6578 if (surf_usm_h%frac(ind_pav_green,m).gt.0.0_wp) then 5448 6579 ! 5449 6580 !-- Obtain indices … … 5452 6583 k = surf_usm_h%k(m) 5453 6584 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 5454 6618 t_green_h(nzt_wall+1,m) = t_wall_h(nzb_wall,m) 5455 6619 ! 5456 6620 !-- prognostic equation for ground/roof temperature t_green_h 5457 6621 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)) * & 5459 6623 ( surf_usm_h%lambda_h_green(nzb_wall,m) * & 5460 6624 ( t_green_h(nzb_wall+1,m) & … … 5465 6629 5466 6630 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)) & 5468 6632 * ( surf_usm_h%lambda_h_green(kw,m) & 5469 6633 * ( t_green_h(kw+1,m) - t_green_h(kw,m) ) & … … 5496 6660 ENDIF 5497 6661 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 !-------------------------------------------------------------- 6823 ENDIF 6824 5498 6825 ENDDO 5499 6826 … … 5502 6829 DO l = 0, 3 5503 6830 DO m = 1, surf_usm_v(l)%ns 6831 6832 if (surf_usm_v(l)%frac(ind_pav_green,m).gt.0.0_wp) then 6833 if (1.gt.2) then 5504 6834 ! 5505 6835 !-- Obtain indices … … 5553 6883 ENDIF 5554 6884 ENDIF 6885 endif 6886 6887 DO kw = nzb_wall, nzt_wall+1 6888 t_green_v(l)%t(kw,m) = t_wall_v(l)%t(nzb_wall,m) 6889 ENDDO 6890 6891 ENDIF 5555 6892 5556 6893 ENDDO … … 5586 6923 roof_inner_temperature, & 5587 6924 soil_inner_temperature, & 5588 window_inner_temperature 6925 window_inner_temperature, & 6926 usm_wall_mod 5589 6927 5590 6928 NAMELIST /urban_surface_parameters/ & … … 5604 6942 roof_inner_temperature, & 5605 6943 soil_inner_temperature, & 5606 window_inner_temperature 6944 window_inner_temperature, & 6945 usm_wall_mod 5607 6946 5608 6947 … … 5842 7181 LOGICAL, INTENT(OUT) :: found 5843 7182 5844 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_ h, tmp_surf_window_h, tmp_surf_green_h7183 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_wall_h, tmp_surf_window_h, tmp_surf_green_h 5845 7184 REAL(wp), DIMENSION(:,:), ALLOCATABLE, SAVE :: tmp_wall_h, tmp_window_h, tmp_green_h 5846 7185 5847 TYPE( t_surf_vertical ), DIMENSION(0:3), SAVE :: tmp_surf_ v, tmp_surf_window_v, tmp_surf_green_v7186 TYPE( t_surf_vertical ), DIMENSION(0:3), SAVE :: tmp_surf_wall_v, tmp_surf_window_v, tmp_surf_green_v 5848 7187 TYPE( t_wall_vertical ), DIMENSION(0:3), SAVE :: tmp_wall_v, tmp_window_v, tmp_green_v 5849 7188 … … 5858 7197 READ ( 13 ) ns_h_on_file_usm 5859 7198 5860 IF ( ALLOCATED( tmp_surf_ h ) ) DEALLOCATE( tmp_surf_h )7199 IF ( ALLOCATED( tmp_surf_wall_h ) ) DEALLOCATE( tmp_surf_wall_h ) 5861 7200 IF ( ALLOCATED( tmp_wall_h ) ) DEALLOCATE( tmp_wall_h ) 5862 7201 IF ( ALLOCATED( tmp_surf_window_h ) ) & … … 5873 7212 !-- current processor, as the number of processors between 5874 7213 !-- 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) ) 5876 7215 ALLOCATE( tmp_wall_h(nzb_wall:nzt_wall+1, & 5877 7216 1:ns_h_on_file_usm) ) … … 5890 7229 5891 7230 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 ) 5894 7233 IF ( ALLOCATED( tmp_wall_v(l)%t ) ) & 5895 7234 DEALLOCATE( tmp_wall_v(l)%t ) … … 5911 7250 !-- restarts can change. 5912 7251 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)) ) 5914 7253 ALLOCATE( tmp_wall_v(l)%t(nzb_wall:nzt_wall+1, & 5915 7254 1:ns_v_on_file_usm(l) ) ) … … 5950 7289 ENDIF 5951 7290 5952 CASE ( 't_surf_ h' )7291 CASE ( 't_surf_wall_h' ) 5953 7292 #if defined( __nopointer ) 5954 7293 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_ h7294 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 5958 7297 ENDIF 5959 7298 CALL surface_restore_elements( & 5960 t_surf_ h, tmp_surf_h, &7299 t_surf_wall_h, tmp_surf_wall_h, & 5961 7300 surf_usm_h%start_index, & 5962 7301 start_index_on_file, & … … 5968 7307 #else 5969 7308 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_ h7309 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 5973 7312 ENDIF 5974 7313 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, & 5977 7316 start_index_on_file, & 5978 7317 end_index_on_file, & … … 5983 7322 #endif 5984 7323 5985 CASE ( 't_surf_ v(0)' )7324 CASE ( 't_surf_wall_v(0)' ) 5986 7325 #if defined( __nopointer ) 5987 7326 IF ( k == 1 ) THEN 5988 IF ( .NOT. ALLOCATED( t_surf_ v(0)%t ) ) &7327 IF ( .NOT. ALLOCATED( t_surf_wall_v(0)%t ) ) & 5989 7328 ALLOCATE( t_surf_v(0)%t(1:surf_usm_v(0)%ns) ) 5990 READ ( 13 ) tmp_surf_ v(0)%t7329 READ ( 13 ) tmp_surf_wall_v(0)%t 5991 7330 ENDIF 5992 7331 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, & 5994 7333 surf_usm_v(0)%start_index, & 5995 7334 start_index_on_file, & … … 6001 7340 #else 6002 7341 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)%t7342 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 6006 7345 ENDIF 6007 7346 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, & 6009 7348 surf_usm_v(0)%start_index, & 6010 7349 start_index_on_file, & … … 6016 7355 #endif 6017 7356 6018 CASE ( 't_surf_ v(1)' )7357 CASE ( 't_surf_wall_v(1)' ) 6019 7358 #if defined( __nopointer ) 6020 7359 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)%t7360 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 6024 7363 ENDIF 6025 7364 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, & 6027 7366 surf_usm_v(1)%start_index, & 6028 7367 start_index_on_file, & … … 6034 7373 #else 6035 7374 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)%t7375 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 6039 7378 ENDIF 6040 7379 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, & 6042 7381 surf_usm_v(1)%start_index, & 6043 7382 start_index_on_file, & … … 6049 7388 #endif 6050 7389 6051 CASE ( 't_surf_ v(2)' )7390 CASE ( 't_surf_wall_v(2)' ) 6052 7391 #if defined( __nopointer ) 6053 7392 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)%t7393 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 6057 7396 ENDIF 6058 7397 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, & 6060 7399 surf_usm_v(2)%start_index, & 6061 7400 start_index_on_file, & … … 6067 7406 #else 6068 7407 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)%t7408 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 6072 7411 ENDIF 6073 7412 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, & 6075 7414 surf_usm_v(2)%start_index, & 6076 7415 start_index_on_file, & … … 6082 7421 #endif 6083 7422 6084 CASE ( 't_surf_ v(3)' )7423 CASE ( 't_surf_wall_v(3)' ) 6085 7424 #if defined( __nopointer ) 6086 7425 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)%t7426 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 6090 7429 ENDIF 6091 7430 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, & 6093 7432 surf_usm_v(3)%start_index, & 6094 7433 start_index_on_file, & … … 6100 7439 #else 6101 7440 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)%t7441 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 6105 7444 ENDIF 6106 7445 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, & 6108 7447 surf_usm_v(3)%start_index, & 6109 7448 start_index_on_file, & … … 6706 8045 CALL surface_restore_elements( & 6707 8046 t_green_v(1)%t, tmp_green_v(1)%t, & 6708 surf_usm_v(1)%start_index, & 8047 surf_usm_v(1)%start_index, & 6709 8048 start_index_on_file, & 6710 end_index_on_file ,&8049 end_index_on_file , & 6711 8050 nxlc, nysc, & 6712 8051 nxlf, nxrf, nysf, nynf, & … … 6722 8061 CALL surface_restore_elements( & 6723 8062 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, & 6725 8064 start_index_on_file, & 6726 8065 end_index_on_file, & … … 6879 8218 surf_usm_v(1)%start_index, & 6880 8219 start_index_on_file, & 6881 end_index_on_file ,&8220 end_index_on_file , & 6882 8221 nxlc, nysc, & 6883 8222 nxlf, nxrf, nysf, nynf, & … … 7002 8341 INTEGER(iwp), DIMENSION(0:17, nysg:nyng, nxlg:nxrg) :: usm_par 7003 8342 REAL(wp), DIMENSION(1:14, nysg:nyng, nxlg:nxrg) :: usm_val 7004 INTEGER(iwp) :: k, l, iw, jw, kw, it, ip, ii, ij, m8343 INTEGER(iwp) :: k, l, d, iw, jw, kw, it, ip, ii, ij, m 7005 8344 INTEGER(iwp) :: i, j 7006 8345 INTEGER(iwp) :: nz, roof, dirwe, dirsn … … 7595 8934 !-- assign temperatures 7596 8935 IF ( d == 0 ) THEN 7597 t_surf_ h(isurfl) = rtsurf8936 t_surf_wall_h(isurfl) = rtsurf 7598 8937 t_wall_h(:,isurfl) = rtwall(:) 7599 8938 ELSE 7600 t_surf_ v(d-1)%t(isurfl) = rtsurf8939 t_surf_wall_v(d-1)%t(isurfl) = rtsurf 7601 8940 t_wall_v(d-1)%t(:,isurfl) = rtwall(:) 7602 8941 ENDIF … … 7633 8972 !> TODO better description 7634 8973 !------------------------------------------------------------------------------! 7635 SUBROUTINE usm_surface_energy_balance 8974 SUBROUTINE usm_surface_energy_balance( spinup ) 8975 7636 8976 7637 8977 IMPLICIT NONE 7638 8978 7639 INTEGER(iwp) :: i, j, k, l, m!< running indices8979 INTEGER(iwp) :: i, j, k, l, d, m !< running indices 7640 8980 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 7642 8990 REAL(wp) :: stend_window !< surface tendency 7643 8991 REAL(wp) :: stend_green !< surface tendency … … 7648 8996 REAL(wp) :: coef_window_2 !< second coeficient for prognostic window equation 7649 8997 REAL(wp) :: coef_green_2 !< second coeficient for prognostic green wall equation 7650 REAL(wp) :: rho_cp !< rho_wall_surface * c p8998 REAL(wp) :: rho_cp !< rho_wall_surface * c_p 7651 8999 REAL(wp) :: f_shf !< factor for shf_eb 7652 9000 REAL(wp) :: f_shf_window !< factor for shf_eb window … … 7659 9007 INTEGER(iwp) :: dhour !< simulated hour of day (in UTC) 7660 9008 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 7662 9033 7663 9034 ! … … 7683 9054 ENDIF 7684 9055 #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 7685 9062 ! 7686 9063 !-- calculate rho * c_p coefficient at surface layer 7687 9064 rho_cp = c_p * hyp(k) / ( r_d * surf_usm_h%pt1(m) * exner(k) ) 9065 9066 if (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) 9071 endif 7688 9072 #endif 7689 9073 ! … … 7731 9115 f_shf_green = rho_cp / surf_usm_h%r_a_green(m) 7732 9116 9117 !*************************************************************************************** 9118 if (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 ) 9205 endif 9206 !*********************************************************************************** 7733 9207 !-- add LW up so that it can be removed in prognostic equation 7734 9208 surf_usm_h%rad_net_l(m) = surf_usm_h%rad_sw_in(m) - & … … 7742 9216 coef_1 = surf_usm_h%rad_net_l(m) + & 7743 9217 ( 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 + & 7745 9219 f_shf * surf_usm_h%pt1(m) + & 7746 9220 lambda_surface * t_wall_h(nzb_wall,m) 9221 if ((.NOT. spinup).AND.(surf_usm_h%frac(ind_wat_win,m).GT.0.0_wp)) then 7747 9222 coef_window_1 = surf_usm_h%rad_net_l(m) + & 7748 9223 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(ind_wat_win,m) & … … 7750 9225 f_shf_window * surf_usm_h%pt1(m) + & 7751 9226 lambda_surface_window * t_window_h(nzb_wall,m) 9227 endif 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 7752 9236 coef_green_1 = surf_usm_h%rad_net_l(m) + & 7753 9237 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(ind_pav_green,m) *& 7754 9238 sigma_sb * t_surf_green_h(m) ** 4 + & 7755 9239 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 7757 9242 7758 9243 !-- denominator of the prognostic equation 7759 9244 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 & 7761 9246 + lambda_surface + f_shf / exner(k) 9247 if ((.NOT. spinup).AND.(surf_usm_h%frac(ind_wat_win,m).GT.0.0_wp)) then 7762 9248 coef_window_2 = 4.0_wp * surf_usm_h%emissivity(ind_wat_win,m) * & 7763 9249 sigma_sb * t_surf_window_h(m) ** 3 & 7764 9250 + 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 & 9251 endif 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 & 7767 9259 + lambda_surface_green + f_shf_green / exner(k) 9260 ENDIF 7768 9261 7769 9262 !-- implicit solution when the surface layer has no heat capacity, 7770 9263 !-- 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) ) / & 7773 9266 ( surf_usm_h%c_surface(m) + coef_2 * dt_3d * tsc(2) ) 9267 if ((.NOT. spinup).AND.(surf_usm_h%frac(ind_wat_win,m).GT.0.0_wp)) then 7774 9268 t_surf_window_h_p(m) = ( coef_window_1 * dt_3d * tsc(2) + & 7775 9269 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) ) 9271 endif 7777 9272 t_surf_green_h_p(m) = ( coef_green_1 * dt_3d * tsc(2) + & 7778 9273 surf_usm_h%c_surface_green(m) * t_surf_green_h(m) ) / & … … 7780 9275 7781 9276 !-- 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 7784 9280 t_surf_window_h_p(m) = t_surf_window_h_p(m) + dt_3d * tsc(3) * & 7785 9281 surf_usm_h%tt_surface_window_m(m) 9282 7786 9283 t_surf_green_h_p(m) = t_surf_green_h_p(m) + dt_3d * tsc(3) * & 7787 9284 surf_usm_h%tt_surface_green_m(m) … … 7790 9287 !-- store also vpt_surface, which is, due to the lack of moisture on roofs simply 7791 9288 !-- 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) & 7793 9290 + surf_usm_h%frac(ind_wat_win,m) * t_surf_window_h_p(m) & 7794 9291 + surf_usm_h%frac(ind_pav_green,m) * t_surf_green_h_p(m) ) & … … 7799 9296 7800 9297 !-- 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) ) 7803 9300 stend_window = ( t_surf_window_h_p(m) - t_surf_window_h(m) - dt_3d * tsc(3) * & 7804 9301 surf_usm_h%tt_surface_window_m(m)) / ( dt_3d * tsc(2) ) … … 7809 9306 IF ( timestep_scheme(1:5) == 'runge' ) THEN 7810 9307 IF ( intermediate_timestep_count == 1 ) THEN 7811 surf_usm_h%tt_surface_ m(m) = stend9308 surf_usm_h%tt_surface_wall_m(m) = stend_wall 7812 9309 surf_usm_h%tt_surface_window_m(m) = stend_window 7813 9310 surf_usm_h%tt_surface_green_m(m) = stend_green 7814 9311 ELSEIF ( intermediate_timestep_count < & 7815 9312 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) 7818 9315 surf_usm_h%tt_surface_window_m(m) = -9.5625_wp * stend_window + & 7819 9316 5.3125_wp * surf_usm_h%tt_surface_window_m(m) … … 7825 9322 !-- in case of fast changes in the skin temperature, it is required to 7826 9323 !-- 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 )THEN9324 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 7831 9328 force_radiation_call_l = .TRUE. 7832 9329 ENDIF … … 7837 9334 surf_usm_h%frac(ind_veg_wall,m) * & 7838 9335 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 ) & 7840 9337 + surf_usm_h%frac(ind_wat_win,m) * & 7841 9338 sigma_sb * surf_usm_h%emissivity(ind_wat_win,m) * & … … 7846 9343 7847 9344 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) ) 7849 9346 surf_usm_h%wghf_eb_green(m) = lambda_surface_green * & 7850 9347 ( t_surf_green_h_p(m) - t_green_h(nzb_wall,m) ) … … 7854 9351 ! 7855 9352 !-- 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) ) * & 7857 9354 surf_usm_h%frac(ind_veg_wall,m) & 7858 9355 - f_shf_window * ( surf_usm_h%pt1(m) - t_surf_window_h_p(m) / exner(k) ) * & … … 7865 9362 surf_usm_h%shf(m) = surf_usm_h%wshf_eb(m) / c_p 7866 9363 9364 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 9365 if (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) 9372 if ((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 9375 endif 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 9480 else 9481 surf_usm_h%r_s(m) = 1.0E10_wp 9482 endif 9483 7867 9484 ENDDO 7868 9485 ! … … 7886 9503 7887 9504 #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 7888 9511 ! 7889 9512 !-- calculate rho * c_p coefficient at wall layer 7890 9513 rho_cp = c_p * hyp(k) / ( r_d * surf_usm_v(l)%pt1(m) * exner(k) ) 9514 9515 if (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) 9520 endif 7891 9521 #endif 7892 9522 … … 7932 9562 f_shf_green = rho_cp / surf_usm_v(l)%r_a(m) 7933 9563 9564 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 9565 if (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 9580 f2=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 ) 9653 endif 9654 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 9655 7934 9656 !-- add LW up so that it can be removed in prognostic equation 7935 9657 surf_usm_v(l)%rad_net_l(m) = surf_usm_v(l)%rad_sw_in(m) - & … … 7938 9660 surf_usm_v(l)%rad_lw_out(m) 7939 9661 9662 if ((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 9664 print*, "tsurfvvvv",m,t_surf_wall_v(l)%t(m),t_surf_window_v(l)%t(m),t_surf_green_v(l)%t(m) 9665 print*, "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) 9667 print*, "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) 9668 print*, "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 9670 stop 9671 endif 7940 9672 !-- numerator of the prognostic equation 7941 9673 coef_1 = surf_usm_v(l)%rad_net_l(m) + & ! coef +1 corresponds to -lwout included in calculation of radnet_l 7942 9674 ( 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 + & 7944 9676 f_shf * surf_usm_v(l)%pt1(m) + & 7945 9677 lambda_surface * t_wall_v(l)%t(nzb_wall,m) 9678 if ((.NOT. spinup).AND.(surf_usm_v(l)%frac(ind_wat_win,m).GT.0.0_wp)) then 7946 9679 coef_window_1 = surf_usm_v(l)%rad_net_l(m) + & ! coef +1 corresponds to -lwout included in calculation of radnet_l 7947 9680 ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_wat_win,m) * & … … 7949 9682 f_shf * surf_usm_v(l)%pt1(m) + & 7950 9683 lambda_surface_window * t_window_v(l)%t(nzb_wall,m) 7951 9684 endif 9685 IF ( (humidity).and.(surf_usm_v(l)%frac(ind_pav_green,m).gt.0.0_wp) ) THEN 7952 9686 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 + & 7955 9696 f_shf * surf_usm_v(l)%pt1(m) + & 7956 9697 lambda_surface_green * t_wall_v(l)%t(nzb_wall,m) 9698 ENDIF 9699 7957 9700 7958 9701 !-- 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) 9705 if ((.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 & 7964 9708 + 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 & 9709 endif 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 & 7967 9713 + 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 7968 9719 7969 9720 !-- implicit solution when the surface layer has no heat capacity, 7970 9721 !-- 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) ) / & 7973 9724 ( surf_usm_v(l)%c_surface(m) + coef_2 * dt_3d * tsc(2) ) 9725 if ((.NOT. spinup).AND.(surf_usm_v(l)%frac(ind_wat_win,m).GT.0.0_wp)) then 7974 9726 t_surf_window_v_p(l)%t(m) = ( coef_window_1 * dt_3d * tsc(2) + & 7975 9727 surf_usm_v(l)%c_surface_window(m) * t_surf_window_v(l)%t(m) ) / & 7976 9728 ( surf_usm_v(l)%c_surface_window(m) + coef_window_2 * dt_3d * tsc(2) ) 7977 9729 endif 7978 9730 t_surf_green_v_p(l)%t(m) = ( coef_green_1 * dt_3d * tsc(2) + & 7979 9731 surf_usm_v(l)%c_surface_green(m) * t_surf_green_v(l)%t(m) ) / & … … 7981 9733 7982 9734 !-- 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) 7985 9737 t_surf_window_v_p(l)%t(m) = t_surf_window_v_p(l)%t(m) + dt_3d * tsc(3) * & 7986 9738 surf_usm_v(l)%tt_surface_window_m(m) … … 7991 9743 !-- store also vpt_surface, which is, due to the lack of moisture on roofs simply 7992 9744 !-- 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) & 7995 9747 + surf_usm_v(l)%frac(ind_pav_green,m) * t_surf_green_v_p(l)%t(m) ) & 7996 9748 / exner(k) … … 8000 9752 8001 9753 !-- 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) ) 8004 9756 stend_window = ( t_surf_window_v_p(l)%t(m) - t_surf_window_v(l)%t(m) - dt_3d * tsc(3) *& 8005 9757 surf_usm_v(l)%tt_surface_window_m(m) ) / ( dt_3d * tsc(2) ) … … 8007 9759 surf_usm_v(l)%tt_surface_green_m(m) ) / ( dt_3d * tsc(2) ) 8008 9760 8009 !-- calculate t_surf tendencies for the next Runge-Kutta step9761 !-- calculate t_surf_* tendencies for the next Runge-Kutta step 8010 9762 IF ( timestep_scheme(1:5) == 'runge' ) THEN 8011 9763 IF ( intermediate_timestep_count == 1 ) THEN 8012 surf_usm_v(l)%tt_surface_ m(m) = stend9764 surf_usm_v(l)%tt_surface_wall_m(m) = stend_wall 8013 9765 surf_usm_v(l)%tt_surface_window_m(m) = stend_window 8014 9766 surf_usm_v(l)%tt_surface_green_m(m) = stend_green 8015 9767 ELSEIF ( intermediate_timestep_count < & 8016 9768 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) 8019 9771 surf_usm_v(l)%tt_surface_green_m(m) = -9.5625_wp * stend_green + & 8020 9772 5.3125_wp * surf_usm_v(l)%tt_surface_green_m(m) … … 8027 9779 !-- update the radiative fluxes in order to keep the solution stable 8028 9780 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 )THEN9781 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 8033 9785 force_radiation_call_l = .TRUE. 8034 9786 ENDIF … … 8039 9791 ( surf_usm_v(l)%rad_net_l(m) + & 8040 9792 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) ) & 8043 9795 + surf_usm_v(l)%frac(ind_wat_win,m) * & 8044 9796 ( surf_usm_v(l)%rad_net_l(m) + & … … 8055 9807 ( t_surf_window_v_p(l)%t(m) - t_window_v(l)%t(nzb_wall,m) ) 8056 9808 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) ) 8058 9810 surf_usm_v(l)%wghf_eb_green(m) = lambda_surface_green * & 8059 9811 ( t_surf_green_v_p(l)%t(m) - t_green_v(l)%t(nzb_wall,m) ) … … 8062 9814 surf_usm_v(l)%wshf_eb(m) = & 8063 9815 - 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) & 8065 9817 - f_shf_window * ( surf_usm_v(l)%pt1(m) - & 8066 9818 t_surf_window_v_p(l)%t(m) / exner(k) ) * surf_usm_v(l)%frac(ind_wat_win,m)& … … 8072 9824 !-- diffusion_s, surface_layer_fluxes,... 8073 9825 surf_usm_v(l)%shf(m) = surf_usm_v(l)%wshf_eb(m) / c_p 9826 9827 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 9828 if (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) 9835 if ((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 9838 endif 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 9886 else 9887 surf_usm_v(l)%r_s(m) = 1.0E10_wp 9888 endif !111 9889 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 9890 8074 9891 8075 9892 ENDDO … … 8130 9947 ENDIF 8131 9948 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 8132 10051 END SUBROUTINE usm_surface_energy_balance 8133 10052 … … 8146 10065 8147 10066 #if defined( __nopointer ) 8148 t_surf_ h = t_surf_h_p10067 t_surf_wall_h = t_surf_wall_h_p 8149 10068 t_wall_h = t_wall_h_p 8150 t_surf_ v = t_surf_v_p10069 t_surf_wall_v = t_surf_wall_v_p 8151 10070 t_wall_v = t_wall_v_p 8152 10071 t_surf_window_h = t_surf_window_h_p … … 8163 10082 ! 8164 10083 !-- Horizontal surfaces 8165 t_surf_ h => t_surf_h_1; t_surf_h_p => t_surf_h_210084 t_surf_wall_h => t_surf_wall_h_1; t_surf_wall_h_p => t_surf_wall_h_2 8166 10085 t_wall_h => t_wall_h_1; t_wall_h_p => t_wall_h_2 8167 10086 t_surf_window_h => t_surf_window_h_1; t_surf_window_h_p => t_surf_window_h_2 … … 8171 10090 ! 8172 10091 !-- Vertical surfaces 8173 t_surf_ v => t_surf_v_1; t_surf_v_p => t_surf_v_210092 t_surf_wall_v => t_surf_wall_v_1; t_surf_wall_v_p => t_surf_wall_v_2 8174 10093 t_wall_v => t_wall_v_1; t_wall_v_p => t_wall_v_2 8175 10094 t_surf_window_v => t_surf_window_v_1; t_surf_window_v_p => t_surf_window_v_2 … … 8180 10099 ! 8181 10100 !-- Horizontal surfaces 8182 t_surf_ h => t_surf_h_2; t_surf_h_p => t_surf_h_110101 t_surf_wall_h => t_surf_wall_h_2; t_surf_wall_h_p => t_surf_wall_h_1 8183 10102 t_wall_h => t_wall_h_2; t_wall_h_p => t_wall_h_1 8184 10103 t_surf_window_h => t_surf_window_h_2; t_surf_window_h_p => t_surf_window_h_1 … … 8188 10107 ! 8189 10108 !-- Vertical surfaces 8190 t_surf_ v => t_surf_v_2; t_surf_v_p => t_surf_v_110109 t_surf_wall_v => t_surf_wall_v_2; t_surf_wall_v_p => t_surf_wall_v_1 8191 10110 t_wall_v => t_wall_v_2; t_wall_v_p => t_wall_v_1 8192 10111 t_surf_window_v => t_surf_window_v_2; t_surf_window_v_p => t_surf_window_v_1 … … 8224 10143 WRITE ( 14 ) surf_usm_h%end_index 8225 10144 8226 CALL wrd_write_string( 't_surf_ h' )8227 WRITE ( 14 ) t_surf_ h10145 CALL wrd_write_string( 't_surf_wall_h' ) 10146 WRITE ( 14 ) t_surf_wall_h 8228 10147 8229 10148 CALL wrd_write_string( 't_surf_window_h' ) … … 8243 10162 WRITE( dum, '(I1)') l 8244 10163 8245 CALL wrd_write_string( 't_surf_ v(' // dum // ')' )8246 WRITE ( 14 ) t_surf_ v(l)%t10164 CALL wrd_write_string( 't_surf_wall_v(' // dum // ')' ) 10165 WRITE ( 14 ) t_surf_wall_v(l)%t 8247 10166 8248 10167 CALL wrd_write_string( 't_surf_window_v(' // dum // ')' )
Note: See TracChangeset
for help on using the changeset viewer.