- Timestamp:
- Aug 30, 2018 1:35:35 PM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/land_surface_model_mod.f90
r3215 r3222 25 25 ! ----------------- 26 26 ! $Id$ 27 ! - Introduction of surface array for type and its names 28 ! - Bugfix in intialization of pavement surfaces 29 ! 30 ! 3215 2018-08-29 09:58:59Z suehring 27 31 ! Enable optional initialization of soil properties directly from dynamic 28 32 ! input file. … … 2600 2604 2601 2605 surf_lsm_v(l)%lambda_w = 0.0_wp 2602 ENDIF 2606 ENDIF 2603 2607 ENDDO 2604 2608 ! … … 2631 2635 ALLOCATE( surf_lsm_v(l)%building_covered(1:surf_lsm_v(l)%ns) ) 2632 2636 ENDDO 2637 ! 2638 !-- Allocate arrays for the respective types and their names on the surface 2639 !-- elements. This will be required to treat deposition of chemical species. 2640 ALLOCATE( surf_lsm_h%pavement_type(1:surf_lsm_h%ns) ) 2641 ALLOCATE( surf_lsm_h%vegetation_type(1:surf_lsm_h%ns) ) 2642 ALLOCATE( surf_lsm_h%water_type(1:surf_lsm_h%ns) ) 2643 2644 surf_lsm_h%pavement_type = 0 2645 surf_lsm_h%vegetation_type = 0 2646 surf_lsm_h%water_type = 0 2647 2648 ALLOCATE( surf_lsm_h%pavement_type_name(1:surf_lsm_h%ns) ) 2649 ALLOCATE( surf_lsm_h%vegetation_type_name(1:surf_lsm_h%ns) ) 2650 ALLOCATE( surf_lsm_h%water_type_name(1:surf_lsm_h%ns) ) 2651 2652 surf_lsm_h%pavement_type_name = 'none' 2653 surf_lsm_h%vegetation_type_name = 'none' 2654 surf_lsm_h%water_type_name = 'none' 2655 2656 DO l = 0, 3 2657 ALLOCATE( surf_lsm_v(l)%pavement_type(1:surf_lsm_v(l)%ns) ) 2658 ALLOCATE( surf_lsm_v(l)%vegetation_type(1:surf_lsm_v(l)%ns) ) 2659 ALLOCATE( surf_lsm_v(l)%water_type(1:surf_lsm_v(l)%ns) ) 2660 2661 surf_lsm_v(l)%pavement_type = 0 2662 surf_lsm_v(l)%vegetation_type = 0 2663 surf_lsm_v(l)%water_type = 0 2664 2665 ALLOCATE( surf_lsm_v(l)%pavement_type_name(1:surf_lsm_v(l)%ns) ) 2666 ALLOCATE( surf_lsm_v(l)%vegetation_type_name(1:surf_lsm_v(l)%ns) ) 2667 ALLOCATE( surf_lsm_v(l)%water_type_name(1:surf_lsm_v(l)%ns) ) 2668 2669 surf_lsm_v(l)%pavement_type_name = 'none' 2670 surf_lsm_v(l)%vegetation_type_name = 'none' 2671 surf_lsm_v(l)%water_type_name = 'none' 2672 ENDDO 2673 2633 2674 ! 2634 2675 !-- Set flag parameter for the prescribed surface type depending on user … … 3134 3175 surf_lsm_h%albedo_type(ind_veg_wall,m) = albedo_type 3135 3176 surf_lsm_h%emissivity(ind_veg_wall,m) = emissivity 3177 3178 surf_lsm_h%vegetation_type(m) = vegetation_type 3179 surf_lsm_h%vegetation_type_name(m) = vegetation_type_name(vegetation_type) 3136 3180 ELSE 3137 3181 surf_lsm_h%lai(m) = 0.0_wp … … 3160 3204 surf_lsm_v(l)%albedo_type(ind_veg_wall,m) = albedo_type 3161 3205 surf_lsm_v(l)%emissivity(ind_veg_wall,m) = emissivity 3206 3207 surf_lsm_v(l)%vegetation_type(m) = vegetation_type 3208 surf_lsm_v(l)%vegetation_type_name(m) = vegetation_type_name(vegetation_type) 3162 3209 ELSE 3163 3210 surf_lsm_v(l)%lai(m) = 0.0_wp … … 3195 3242 surf_lsm_h%albedo_type(ind_veg_wall,m) = INT( vegetation_pars(ind_v_at,st) ) 3196 3243 surf_lsm_h%emissivity(ind_veg_wall,m) = vegetation_pars(ind_v_emis,st) 3244 3245 surf_lsm_h%vegetation_type(m) = st 3246 surf_lsm_h%vegetation_type_name(m) = vegetation_type_name(st) 3197 3247 ENDIF 3198 3248 ENDDO … … 3221 3271 surf_lsm_v(l)%albedo_type(ind_veg_wall,m) = INT( vegetation_pars(ind_v_at,st) ) 3222 3272 surf_lsm_v(l)%emissivity(ind_veg_wall,m) = vegetation_pars(ind_v_emis,st) 3273 3274 surf_lsm_v(l)%vegetation_type(m) = st 3275 surf_lsm_v(l)%vegetation_type_name(m) = vegetation_type_name(st) 3223 3276 ENDIF 3224 3277 ENDDO … … 3423 3476 surf_lsm_h%albedo_type(ind_wat_win,m) = albedo_type 3424 3477 surf_lsm_h%emissivity(ind_wat_win,m) = emissivity 3478 3479 surf_lsm_h%water_type(m) = water_type 3480 surf_lsm_h%water_type_name(m) = water_type_name(water_type) 3425 3481 ENDIF 3426 3482 ENDDO … … 3441 3497 surf_lsm_v(l)%albedo_type(ind_wat_win,m) = albedo_type 3442 3498 surf_lsm_v(l)%emissivity(ind_wat_win,m) = emissivity 3499 3500 surf_lsm_v(l)%water_type(m) = water_type 3501 surf_lsm_v(l)%water_type_name(m) = water_type_name(water_type) 3443 3502 ENDIF 3444 3503 ENDDO … … 3471 3530 surf_lsm_h%albedo_type(ind_wat_win,m) = INT( water_pars(ind_w_at,st) ) 3472 3531 surf_lsm_h%emissivity(ind_wat_win,m) = water_pars(ind_w_emis,st) 3532 3533 surf_lsm_h%water_type(m) = st 3534 surf_lsm_h%water_type_name(m) = water_type_name(st) 3473 3535 ENDIF 3474 3536 ENDDO … … 3498 3560 surf_lsm_v(l)%emissivity(ind_wat_win,m) = & 3499 3561 water_pars(ind_w_emis,st) 3562 3563 surf_lsm_v(l)%water_type(m) = st 3564 surf_lsm_v(l)%water_type_name(m) = water_type_name(st) 3500 3565 ENDIF 3501 3566 ENDDO … … 3694 3759 surf_lsm_h%albedo_type(ind_pav_green,m) = albedo_type 3695 3760 surf_lsm_h%emissivity(ind_pav_green,m) = emissivity 3761 3762 surf_lsm_h%pavement_type(m) = pavement_type 3763 surf_lsm_h%pavement_type_name(m) = pavement_type_name(pavement_type) 3696 3764 3697 3765 IF ( pavement_type /= 0 ) THEN … … 3703 3771 ENDDO 3704 3772 ELSE 3705 surf_lsm_ v(l)%lambda_h_def(:,m) = pavement_heat_conduct3706 surf_lsm_ v(l)%rho_c_total_def(:,m) = pavement_heat_capacity3773 surf_lsm_h%lambda_h_def(:,m) = pavement_heat_conduct 3774 surf_lsm_h%rho_c_total_def(:,m) = pavement_heat_capacity 3707 3775 ENDIF 3708 3776 ENDIF … … 3729 3797 surf_lsm_v(l)%albedo_type(ind_pav_green,m) = albedo_type 3730 3798 surf_lsm_v(l)%emissivity(ind_pav_green,m) = emissivity 3799 3800 surf_lsm_v(l)%pavement_type(m) = pavement_type 3801 surf_lsm_v(l)%pavement_type_name(m) = pavement_type_name(pavement_type) 3731 3802 3732 3803 IF ( pavement_type /= 0 ) THEN … … 3786 3857 surf_lsm_h%albedo_type(ind_pav_green,m) = INT( pavement_pars(ind_p_at,st) ) 3787 3858 surf_lsm_h%emissivity(ind_pav_green,m) = pavement_pars(ind_p_emis,st) 3859 3860 surf_lsm_h%pavement_type(m) = st 3861 surf_lsm_h%pavement_type_name(m) = pavement_type_name(st) 3788 3862 3789 3863 DO k = nzb_soil, surf_lsm_h%nzt_pavement(m) … … 3837 3911 INT( pavement_pars(ind_p_at,st) ) 3838 3912 surf_lsm_v(l)%emissivity(ind_pav_green,m) = & 3839 pavement_pars(ind_p_emis,st) 3913 pavement_pars(ind_p_emis,st) 3914 3915 surf_lsm_v(l)%pavement_type(m) = st 3916 surf_lsm_v(l)%pavement_type_name(m) = pavement_type_name(st) 3840 3917 3841 3918 DO k = nzb_soil, surf_lsm_v(l)%nzt_pavement(m) -
palm/trunk/SOURCE/surface_mod.f90
r3176 r3222 26 26 ! ----------------- 27 27 ! $Id$ 28 ! +building_type, pavement_type, vegetation_type, water_type 29 ! +building_type_name, pavement_type_name, vegetation_type_name, water_type_name 30 ! 31 ! 3176 2018-07-26 17:12:48Z suehring 28 32 ! Bugfix in restarts for surface elements. 29 33 ! … … 290 294 ! 291 295 !-- Variables required for LSM as well as for USM 292 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: nzt_pavement !< top index for pavement in soil 296 CHARACTER(LEN=40), DIMENSION(:), ALLOCATABLE :: building_type_name !< building type name at surface element 297 CHARACTER(LEN=40), DIMENSION(:), ALLOCATABLE :: pavement_type_name !< pavement type name at surface element 298 CHARACTER(LEN=40), DIMENSION(:), ALLOCATABLE :: vegetation_type_name !< water type at name surface element 299 CHARACTER(LEN=40), DIMENSION(:), ALLOCATABLE :: water_type_name !< water type at name surface element 300 301 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: nzt_pavement !< top index for pavement in soil 302 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: building_type !< building type at surface element 303 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: pavement_type !< pavement type at surface element 304 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: vegetation_type !< vegetation type at surface element 305 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: water_type !< water type at surface element 306 293 307 INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE :: albedo_type !< albedo type, for each fraction (wall,green,window or vegetation,pavement water) 294 308 … … 298 312 LOGICAL, DIMENSION(:), ALLOCATABLE :: water_surface !< flag parameter for water surfaces 299 313 LOGICAL, DIMENSION(:), ALLOCATABLE :: vegetation_surface !< flag parameter for natural land surfaces 300 314 301 315 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: albedo !< broadband albedo for each surface fraction (LSM: vegetation, water, pavement; USM: wall, green, window) 302 316 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: emissivity !< emissivity of the surface, for each fraction (LSM: vegetation, water, pavement; USM: wall, green, window) -
palm/trunk/SOURCE/urban_surface_mod.f90
r3203 r3222 28 28 ! ----------------- 29 29 ! $Id$ 30 ! Introduction of surface array for type and its name 31 ! 32 ! 3203 2018-08-23 10:48:36Z suehring 30 33 ! Revise bulk parameter for emissivity at ground-floor level 31 34 ! … … 886 889 887 890 !-- allocate array of wall types and wall parameters 888 ALLOCATE ( surf_usm_h%surface_types(1:surf_usm_h%ns) ) 891 ALLOCATE ( surf_usm_h%surface_types(1:surf_usm_h%ns) ) 892 ALLOCATE ( surf_usm_h%building_type(1:surf_usm_h%ns) ) 893 ALLOCATE ( surf_usm_h%building_type_name(1:surf_usm_h%ns) ) 894 surf_usm_h%building_type = 0 895 surf_usm_h%building_type = 'none' 889 896 DO l = 0, 3 890 897 ALLOCATE( surf_usm_v(l)%surface_types(1:surf_usm_v(l)%ns) ) 898 ALLOCATE ( surf_usm_v(l)%building_type(1:surf_usm_v(l)%ns) ) 899 ALLOCATE ( surf_usm_v(l)%building_type_name(1:surf_usm_v(l)%ns) ) 900 surf_usm_v(l)%building_type = 0 901 surf_usm_v(l)%building_type = 'none' 891 902 ENDDO 892 903 ! … … 3752 3763 surf_usm_h%ground_level(m) ) 3753 3764 ! 3765 !-- Store building type and its name on each surface element 3766 surf_usm_h%building_type(m) = building_type 3767 surf_usm_h%building_type_name(m) = building_type_name(building_type) 3768 ! 3754 3769 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions 3755 3770 surf_usm_h%frac(ind_veg_wall,m) = building_pars(ind_wall_frac,building_type) … … 3869 3884 ind_z0qh = MERGE( ind_z0qh_gfl, ind_z0qh_agfl, & 3870 3885 surf_usm_v(l)%ground_level(m) ) 3871 3886 ! 3887 !-- Store building type and its name on each surface element 3888 surf_usm_v(l)%building_type(m) = building_type 3889 surf_usm_v(l)%building_type_name(m) = building_type_name(building_type) 3872 3890 ! 3873 3891 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions … … 3999 4017 ind_z0qh = MERGE( ind_z0qh_gfl, ind_z0qh_agfl, & 4000 4018 surf_usm_h%ground_level(m) ) 4001 4019 ! 4020 !-- Store building type and its name on each surface element 4021 surf_usm_h%building_type(m) = st 4022 surf_usm_h%building_type_name(m) = building_type_name(st) 4002 4023 ! 4003 4024 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions … … 4127 4148 ind_z0qh = MERGE( ind_z0qh_gfl, ind_z0qh_agfl, & 4128 4149 surf_usm_v(l)%ground_level(m) ) 4129 4150 ! 4151 !-- Store building type and its name on each surface element 4152 surf_usm_v(l)%building_type(m) = st 4153 surf_usm_v(l)%building_type_name(m) = building_type_name(st) 4130 4154 ! 4131 4155 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions … … 4210 4234 ENDDO 4211 4235 ENDIF 4212 4236 4213 4237 ! 4214 4238 !-- Level 3 - initialization via building_pars read from file
Note: See TracChangeset
for help on using the changeset viewer.