Changeset 4602
- Timestamp:
- Jul 14, 2020 2:49:45 PM (4 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/land_surface_model_mod.f90
r4581 r4602 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 23 ! 22 ! 23 ! 24 24 ! Former revisions: 25 25 ! ----------------- 26 26 ! $Id$ 27 ! - Bugfix in level 3 initialization of pavements - wrongly assumed existence of 28 ! pavement_subsurface_pars 29 ! - Add missing initialization of albedo type with values given from static input 30 ! file 31 ! 32 ! 4581 2020-06-29 08:49:58Z suehring 27 33 ! Minor formatting of error message 28 34 ! … … 264 270 265 271 USE netcdf_data_input_mod, & 266 ONLY : building_type_f, & 272 ONLY : albedo_type_f, & 273 building_type_f, & 267 274 char_fill, & 268 275 char_lod, & … … 4036 4043 surf_lsm_h%z0q(m) = pavement_pars_f%pars_xy(ind_p_z0h,j,i) 4037 4044 ENDIF 4045 IF ( pavement_pars_f%pars_xy(ind_p_at,j,i) /= & 4046 pavement_pars_f%fill ) & 4047 surf_lsm_h%albedo_type(m,ind_pav_green) = & 4048 INT( pavement_pars_f%pars_xy(ind_p_at,j,i) ) 4049 IF ( pavement_pars_f%pars_xy(ind_p_emis,j,i) /= & 4050 pavement_pars_f%fill ) & 4051 surf_lsm_h%emissivity(m,ind_pav_green) = & 4052 pavement_pars_f%pars_xy(ind_p_emis,j,i) 4053 ENDIF 4054 4055 ENDDO 4056 ! 4057 !-- Vertical surfaces 4058 DO l = 0, 3 4059 DO m = 1, surf_lsm_v(l)%ns 4060 i = surf_lsm_v(l)%i(m) + MERGE( 0, surf_lsm_v(l)%ioff, & 4061 surf_lsm_v(l)%building_covered(m) ) 4062 j = surf_lsm_v(l)%j(m) + MERGE( 0, surf_lsm_v(l)%joff, & 4063 surf_lsm_v(l)%building_covered(m) ) 4064 ! 4065 !-- If surface element is not a pavement surface and any value in 4066 !-- pavement_pars is given, neglect this information and give an 4067 !-- informative message that this value will not be used. 4068 IF ( .NOT. surf_lsm_v(l)%pavement_surface(m) .AND. & 4069 ANY( pavement_pars_f%pars_xy(:,j,i) /= & 4070 pavement_pars_f%fill ) ) THEN 4071 WRITE( message_string, * ) & 4072 'surface element at grid point (j,i) = (', & 4073 j, i, ') is not a pavement surface, ', & 4074 'so that information given in ', & 4075 'pavement_pars at this point is neglected.' 4076 CALL message( 'land_surface_model_mod', 'PA0647', 0, 0, myid, 6, 0 ) 4077 ELSE 4078 IF ( pavement_pars_f%pars_xy(ind_p_z0,j,i) /= & 4079 pavement_pars_f%fill ) & 4080 surf_lsm_v(l)%z0(m) = pavement_pars_f%pars_xy(ind_p_z0,j,i) 4081 IF ( pavement_pars_f%pars_xy(ind_p_z0h,j,i) /= & 4082 pavement_pars_f%fill ) THEN 4083 surf_lsm_v(l)%z0h(m) = pavement_pars_f%pars_xy(ind_p_z0h,j,i) 4084 surf_lsm_v(l)%z0q(m) = pavement_pars_f%pars_xy(ind_p_z0h,j,i) 4085 ENDIF 4086 IF ( pavement_pars_f%pars_xy(ind_p_at,j,i) /= & 4087 pavement_pars_f%fill ) & 4088 surf_lsm_v(l)%albedo_type(m,ind_pav_green) = & 4089 INT( pavement_pars_f%pars_xy(ind_p_at,j,i) ) 4090 4091 IF ( pavement_pars_f%pars_xy(ind_p_emis,j,i) /= & 4092 pavement_pars_f%fill ) & 4093 surf_lsm_v(l)%emissivity(m,ind_pav_green) = & 4094 pavement_pars_f%pars_xy(ind_p_emis,j,i) 4095 ENDIF 4096 ENDDO 4097 ENDDO 4098 ENDIF 4099 ! 4100 !-- Moreover, for grid points which are flagged with pavement-type 0 or whre 4101 !-- pavement_subsurface_pars_f is provided, soil heat conductivity and 4102 !-- capacity are initialized with parameters given in 4103 !-- pavement_subsurface_pars read from file. 4104 IF ( pavement_subsurface_pars_f%from_file ) THEN 4105 ! 4106 !-- Set pavement depth to nzt_soil. Please note, this is just a 4107 !-- workaround at the moment. 4108 DO m = 1, surf_lsm_h%ns 4109 IF ( surf_lsm_h%pavement_surface(m) ) THEN 4110 4111 i = surf_lsm_h%i(m) 4112 j = surf_lsm_h%j(m) 4113 4114 surf_lsm_h%nzt_pavement(m) = nzt_soil 4115 4038 4116 IF ( pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,0,j,i) & 4039 4117 /= pavement_subsurface_pars_f%fill ) THEN … … 4054 4132 * 0.25_wp 4055 4133 ENDIF 4056 IF ( pavement_pars_f%pars_xy(ind_p_at,j,i) /= & 4057 pavement_pars_f%fill ) & 4058 surf_lsm_h%albedo_type(m,ind_pav_green) = & 4059 INT( pavement_pars_f%pars_xy(ind_p_at,j,i) ) 4060 IF ( pavement_pars_f%pars_xy(ind_p_emis,j,i) /= & 4061 pavement_pars_f%fill ) & 4062 surf_lsm_h%emissivity(m,ind_pav_green) = & 4063 pavement_pars_f%pars_xy(ind_p_emis,j,i) 4064 ENDIF 4065 4066 ENDDO 4067 ! 4068 !-- Vertical surfaces 4069 DO l = 0, 3 4070 DO m = 1, surf_lsm_v(l)%ns 4071 i = surf_lsm_v(l)%i(m) + MERGE( 0, surf_lsm_v(l)%ioff, & 4072 surf_lsm_v(l)%building_covered(m) ) 4073 j = surf_lsm_v(l)%j(m) + MERGE( 0, surf_lsm_v(l)%joff, & 4074 surf_lsm_v(l)%building_covered(m) ) 4075 ! 4076 !-- If surface element is not a pavement surface and any value in 4077 !-- pavement_pars is given, neglect this information and give an 4078 !-- informative message that this value will not be used. 4079 IF ( .NOT. surf_lsm_v(l)%pavement_surface(m) .AND. & 4080 ANY( pavement_pars_f%pars_xy(:,j,i) /= & 4081 pavement_pars_f%fill ) ) THEN 4082 WRITE( message_string, * ) & 4083 'surface element at grid point (j,i) = (', & 4084 j, i, ') is not a pavement surface, ', & 4085 'so that information given in ', & 4086 'pavement_pars at this point is neglected.' 4087 CALL message( 'land_surface_model_mod', 'PA0647', 0, 0, myid, 6, 0 ) 4088 ELSE 4089 4090 IF ( pavement_pars_f%pars_xy(ind_p_z0,j,i) /= & 4091 pavement_pars_f%fill ) & 4092 surf_lsm_v(l)%z0(m) = pavement_pars_f%pars_xy(ind_p_z0,j,i) 4093 IF ( pavement_pars_f%pars_xy(ind_p_z0h,j,i) /= & 4094 pavement_pars_f%fill ) THEN 4095 surf_lsm_v(l)%z0h(m) = pavement_pars_f%pars_xy(ind_p_z0h,j,i) 4096 surf_lsm_v(l)%z0q(m) = pavement_pars_f%pars_xy(ind_p_z0h,j,i) 4134 4135 DO k = nzb_soil, nzt_soil 4136 IF ( pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,k,j,i) /= & 4137 pavement_subsurface_pars_f%fill ) THEN 4138 surf_lsm_h%lambda_h_def(k,m) = & 4139 pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,k,j,i) 4097 4140 ENDIF 4098 IF ( pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,0,j,i)& 4099 /= pavement_subsurface_pars_f%fill ) THEN 4100 surf_lsm_v(l)%lambda_surface_s(m) = & 4101 pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,0,j,i)& 4102 * ddz_soil(nzb_soil) & 4103 * 2.0_wp 4104 surf_lsm_v(l)%lambda_surface_u(m) = & 4105 pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,0,j,i)& 4106 * ddz_soil(nzb_soil) & 4107 * 2.0_wp 4141 IF ( pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,k,j,i) /= & 4142 pavement_subsurface_pars_f%fill ) THEN 4143 surf_lsm_h%rho_c_total_def(k,m) = & 4144 pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,k,j,i) 4108 4145 ENDIF 4109 IF ( pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,0,j,i) &4110 /= pavement_subsurface_pars_f%fill ) THEN4111 surf_lsm_v(l)%c_surface(m) = &4112 pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,0,j,i)&4113 * dz_soil(nzb_soil) &4114 * 0.25_wp4115 ENDIF4116 IF ( pavement_pars_f%pars_xy(ind_p_at,j,i) /= &4117 pavement_pars_f%fill ) &4118 surf_lsm_v(l)%albedo_type(m,ind_pav_green) = &4119 INT( pavement_pars_f%pars_xy(ind_p_at,j,i) )4120 4121 IF ( pavement_pars_f%pars_xy(ind_p_emis,j,i) /= &4122 pavement_pars_f%fill ) &4123 surf_lsm_v(l)%emissivity(m,ind_pav_green) = &4124 pavement_pars_f%pars_xy(ind_p_emis,j,i)4125 ENDIF4126 ENDDO4127 ENDDO4128 ENDIF4129 !4130 !-- Moreover, for grid points which are flagged with pavement-type 0 or whre4131 !-- pavement_subsurface_pars_f is provided, soil heat conductivity and4132 !-- capacity are initialized with parameters given in4133 !-- pavement_subsurface_pars read from file.4134 IF ( pavement_subsurface_pars_f%from_file ) THEN4135 !4136 !-- Set pavement depth to nzt_soil. Please note, this is just a4137 !-- workaround at the moment.4138 DO m = 1, surf_lsm_h%ns4139 IF ( surf_lsm_h%pavement_surface(m) ) THEN4140 4141 i = surf_lsm_h%i(m)4142 j = surf_lsm_h%j(m)4143 4144 surf_lsm_h%nzt_pavement(m) = nzt_soil4145 4146 DO k = nzb_soil, nzt_soil4147 surf_lsm_h%lambda_h_def(k,m) = &4148 pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,k,j,i)4149 surf_lsm_h%rho_c_total_def(k,m) = &4150 pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,k,j,i)4151 4146 ENDDO 4152 4147 … … 4164 4159 surf_lsm_v(l)%nzt_pavement(m) = nzt_soil 4165 4160 4161 IF ( pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,0,j,i) & 4162 /= pavement_subsurface_pars_f%fill ) THEN 4163 surf_lsm_v(l)%lambda_surface_s(m) = & 4164 pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,0,j,i) & 4165 * ddz_soil(nzb_soil) & 4166 * 2.0_wp 4167 surf_lsm_v(l)%lambda_surface_u(m) = & 4168 pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,0,j,i) & 4169 * ddz_soil(nzb_soil) & 4170 * 2.0_wp 4171 ENDIF 4172 IF ( pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,0,j,i) & 4173 /= pavement_subsurface_pars_f%fill ) THEN 4174 surf_lsm_v(l)%c_surface(m) = & 4175 pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,0,j,i) & 4176 * dz_soil(nzb_soil) & 4177 * 0.25_wp 4178 ENDIF 4179 4166 4180 DO k = nzb_soil, nzt_soil 4167 surf_lsm_v(l)%lambda_h_def(k,m) = & 4168 pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,k,j,i) 4169 surf_lsm_v(l)%rho_c_total_def(k,m) = & 4170 pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,k,j,i) 4181 IF ( pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,0,j,i) & 4182 /= pavement_subsurface_pars_f%fill ) THEN 4183 surf_lsm_v(l)%lambda_h_def(k,m) = & 4184 pavement_subsurface_pars_f%pars_xyz(ind_p_lambda_h,k,j,i) 4185 ENDIF 4186 IF ( pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,0,j,i) & 4187 /= pavement_subsurface_pars_f%fill ) THEN 4188 surf_lsm_v(l)%rho_c_total_def(k,m) = & 4189 pavement_subsurface_pars_f%pars_xyz(ind_p_rho_c,k,j,i) 4190 ENDIF 4171 4191 ENDDO 4172 4192 … … 4175 4195 ENDDO 4176 4196 ENDIF 4177 4197 ! 4198 !-- Initialize albedo type via given type from static input file. Please note, even though 4199 !-- the albedo type has been already given by the pars, albedo_type overwrites these values. 4200 IF ( albedo_type_f%from_file ) THEN 4201 DO m = 1, surf_lsm_h%ns 4202 i = surf_lsm_h%i(m) 4203 j = surf_lsm_h%j(m) 4204 IF ( albedo_type_f%var(j,i) /= albedo_type_f%fill ) & 4205 surf_lsm_h%albedo_type(m,:) = albedo_type_f%var(j,i) 4206 ENDDO 4207 DO l = 0, 3 4208 DO m = 1, surf_lsm_v(l)%ns 4209 i = surf_lsm_v(l)%i(m) + MERGE( 0, surf_lsm_v(l)%ioff, & 4210 surf_lsm_v(l)%building_covered(m) ) 4211 j = surf_lsm_v(l)%j(m) + MERGE( 0, surf_lsm_v(l)%joff, & 4212 surf_lsm_v(l)%building_covered(m) ) 4213 IF ( albedo_type_f%var(j,i) /= albedo_type_f%fill ) & 4214 surf_lsm_v(l)%albedo_type(m,:) = albedo_type_f%var(j,i) 4215 ENDDO 4216 ENDDO 4217 ENDIF 4178 4218 ! 4179 4219 !-- Initial run actions -
palm/trunk/SOURCE/urban_surface_mod.f90
r4581 r4602 22 22 ! Current revisions: 23 23 ! ----------------- 24 ! 25 ! 24 ! 25 ! 26 26 ! Former revisions: 27 27 ! ----------------- 28 28 ! $Id$ 29 ! Add missing initialization of albedo type with values given from static input file 30 ! 31 ! 4581 2020-06-29 08:49:58Z suehring 29 32 ! Missing initialization in case of cyclic_fill runs 30 33 ! … … 3513 3516 3514 3517 USE netcdf_data_input_mod, & 3515 ONLY: building_pars_f, & 3518 ONLY: albedo_type_f, & 3519 building_pars_f, & 3516 3520 building_surface_pars_f, & 3517 3521 building_type_f, & … … 4340 4344 4341 4345 ! 4342 !-- 4343 !-- 4344 ind_wall_frac = MERGE( ind_wall_frac_gfl, ind_wall_frac_agfl,&4345 4346 ind_green_frac_w = MERGE( ind_green_frac_w_gfl, ind_green_frac_w_agfl,&4347 4348 ind_win_frac = MERGE( ind_win_frac_gfl, ind_win_frac_agfl,&4349 4350 ind_lai_w = MERGE( ind_lai_w_gfl, ind_lai_w_agfl,&4351 4352 ind_z0 = MERGE( ind_z0_gfl, ind_z0_agfl,&4353 4354 ind_z0qh = MERGE( ind_z0qh_gfl, ind_z0qh_agfl,&4355 4356 ind_hc1 = MERGE( ind_hc1_gfl, ind_hc1_agfl,&4357 4358 ind_hc2 = MERGE( ind_hc2_gfl, ind_hc2_agfl,&4359 4360 ind_hc3 = MERGE( ind_hc3_gfl, ind_hc3_agfl,&4361 4362 ind_tc1 = MERGE( ind_tc1_gfl, ind_tc1_agfl,&4363 4364 ind_tc2 = MERGE( ind_tc2_gfl, ind_tc2_agfl,&4365 4366 ind_tc3 = MERGE( ind_tc3_gfl, ind_tc3_agfl,&4367 4368 ind_emis_wall = MERGE( ind_emis_wall_gfl, ind_emis_wall_agfl,&4369 4370 ind_emis_green = MERGE( ind_emis_green_gfl, ind_emis_green_agfl,&4371 4372 ind_emis_win = MERGE( ind_emis_win_gfl, ind_emis_win_agfl,&4373 4374 ind_trans = MERGE( ind_trans_gfl, ind_trans_agfl,&4375 4376 4377 ! 4378 !-- 4379 IF ( building_pars_f%pars_xy(ind_wall_frac,j,i) /= building_pars_f%fill )&4380 4381 4382 IF ( building_pars_f%pars_xy(ind_green_frac_w,j,i) /= building_pars_f%fill )&4383 surf_usm_v(l)%frac(m,ind_pav_green) =&4384 4385 4386 IF ( building_pars_f%pars_xy(ind_win_frac,j,i) /= building_pars_f%fill )&4387 4388 4389 IF ( building_pars_f%pars_xy(ind_lai_w,j,i) /= building_pars_f%fill )&4390 4391 4392 4393 4394 4395 4396 4397 4398 IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill )&4399 4400 4401 IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill )&4402 4403 4404 4405 4406 4407 4408 IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill )&4409 4410 4411 IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill )&4412 4413 4414 4415 4416 4417 4418 IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill )&4419 4420 4421 IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill )&4422 4423 4424 4425 4426 4427 4428 IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill )&4429 4430 4431 IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill )&4432 4433 4434 4435 4436 surf_usm_v(l)%lambda_h_green(nzb_wall+1,m) =&4437 4438 4439 IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill )&4440 surf_usm_v(l)%lambda_h_green(nzb_wall+2,m) =&4441 4442 4443 IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill )&4444 surf_usm_v(l)%lambda_h_green(nzb_wall+3,m) =&4445 4446 4447 4448 4449 surf_usm_v(l)%lambda_h_window(nzb_wall+1,m) =&4450 4451 4452 IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill )&4453 surf_usm_v(l)%lambda_h_window(nzb_wall+2,m) =&4454 4455 4456 IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill )&4457 surf_usm_v(l)%lambda_h_window(nzb_wall+3,m) =&4458 4459 4460 IF ( building_pars_f%pars_xy(ind_indoor_target_temp_summer,j,i) /=&4461 building_pars_f%fill )&4462 surf_usm_v(l)%target_temp_summer(m) =&4463 4464 4465 IF ( building_pars_f%pars_xy(ind_indoor_target_temp_winter,j,i) /=&4466 building_pars_f%fill )&4467 surf_usm_v(l)%target_temp_winter(m) =&4468 4469 4470 IF ( building_pars_f%pars_xy(ind_emis_wall,j,i) /= building_pars_f%fill )&4471 surf_usm_v(l)%emissivity(m,ind_veg_wall) =&4472 4473 4474 IF ( building_pars_f%pars_xy(ind_emis_green,j,i) /= building_pars_f%fill )&4475 surf_usm_v(l)%emissivity(m,ind_pav_green) =&4476 4477 4478 IF ( building_pars_f%pars_xy(ind_emis_win,j,i) /= building_pars_f%fill )&4479 surf_usm_v(l)%emissivity(m,ind_wat_win) =&4480 4481 4482 IF ( building_pars_f%pars_xy(ind_trans,j,i) /= building_pars_f%fill )&4483 surf_usm_v(l)%transmissivity(m) =&4484 4485 4486 IF ( building_pars_f%pars_xy(ind_z0,j,i) /= building_pars_f%fill )&4487 4488 4489 IF ( building_pars_f%pars_xy(ind_z0qh,j,i) /= building_pars_f%fill )&4490 4491 4492 IF ( building_pars_f%pars_xy(ind_z0qh,j,i) /= building_pars_f%fill )&4493 4494 4495 IF ( building_pars_f%pars_xy(ind_alb_wall_agfl,j,i) /= building_pars_f%fill )&4496 surf_usm_v(l)%albedo_type(m,ind_veg_wall) =&4497 4498 4499 IF ( building_pars_f%pars_xy(ind_alb_green_agfl,j,i) /= building_pars_f%fill )&4500 surf_usm_v(l)%albedo_type(m,ind_pav_green) =&4501 4502 4503 IF ( building_pars_f%pars_xy(ind_alb_win_agfl,j,i) /= building_pars_f%fill )&4504 surf_usm_v(l)%albedo_type(m,ind_wat_win) =&4505 4506 4507 IF ( building_pars_f%pars_xy(ind_thick_1_agfl,j,i) /= building_pars_f%fill )&4508 4509 4510 IF ( building_pars_f%pars_xy(ind_thick_2_agfl,j,i) /= building_pars_f%fill )&4511 4512 4513 IF ( building_pars_f%pars_xy(ind_thick_3_agfl,j,i) /= building_pars_f%fill )&4514 4515 4516 IF ( building_pars_f%pars_xy(ind_thick_4_agfl,j,i) /= building_pars_f%fill )&4517 4518 4519 IF ( building_pars_f%pars_xy(ind_thick_1_agfl,j,i) /= building_pars_f%fill )&4520 surf_usm_v(l)%zw_green(nzb_wall,m) =&4521 4522 4523 IF ( building_pars_f%pars_xy(ind_thick_2_agfl,j,i) /= building_pars_f%fill )&4524 surf_usm_v(l)%zw_green(nzb_wall+1,m) =&4525 4526 4527 IF ( building_pars_f%pars_xy(ind_thick_3_agfl,j,i) /= building_pars_f%fill )&4528 surf_usm_v(l)%zw_green(nzb_wall+2,m) =&4529 4530 4531 IF ( building_pars_f%pars_xy(ind_thick_4_agfl,j,i) /= building_pars_f%fill )&4532 surf_usm_v(l)%zw_green(nzb_wall+3,m) =&4533 4346 !-- In order to distinguish between ground floor level and above-ground-floor level 4347 !-- surfaces, set input indices. 4348 ind_wall_frac = MERGE( ind_wall_frac_gfl, ind_wall_frac_agfl, & 4349 surf_usm_v(l)%ground_level(m) ) 4350 ind_green_frac_w = MERGE( ind_green_frac_w_gfl, ind_green_frac_w_agfl, & 4351 surf_usm_v(l)%ground_level(m) ) 4352 ind_win_frac = MERGE( ind_win_frac_gfl, ind_win_frac_agfl, & 4353 surf_usm_v(l)%ground_level(m) ) 4354 ind_lai_w = MERGE( ind_lai_w_gfl, ind_lai_w_agfl, & 4355 surf_usm_v(l)%ground_level(m) ) 4356 ind_z0 = MERGE( ind_z0_gfl, ind_z0_agfl, & 4357 surf_usm_v(l)%ground_level(m) ) 4358 ind_z0qh = MERGE( ind_z0qh_gfl, ind_z0qh_agfl, & 4359 surf_usm_v(l)%ground_level(m) ) 4360 ind_hc1 = MERGE( ind_hc1_gfl, ind_hc1_agfl, & 4361 surf_usm_v(l)%ground_level(m) ) 4362 ind_hc2 = MERGE( ind_hc2_gfl, ind_hc2_agfl, & 4363 surf_usm_v(l)%ground_level(m) ) 4364 ind_hc3 = MERGE( ind_hc3_gfl, ind_hc3_agfl, & 4365 surf_usm_v(l)%ground_level(m) ) 4366 ind_tc1 = MERGE( ind_tc1_gfl, ind_tc1_agfl, & 4367 surf_usm_v(l)%ground_level(m) ) 4368 ind_tc2 = MERGE( ind_tc2_gfl, ind_tc2_agfl, & 4369 surf_usm_v(l)%ground_level(m) ) 4370 ind_tc3 = MERGE( ind_tc3_gfl, ind_tc3_agfl, & 4371 surf_usm_v(l)%ground_level(m) ) 4372 ind_emis_wall = MERGE( ind_emis_wall_gfl, ind_emis_wall_agfl, & 4373 surf_usm_v(l)%ground_level(m) ) 4374 ind_emis_green = MERGE( ind_emis_green_gfl, ind_emis_green_agfl, & 4375 surf_usm_v(l)%ground_level(m) ) 4376 ind_emis_win = MERGE( ind_emis_win_gfl, ind_emis_win_agfl, & 4377 surf_usm_v(l)%ground_level(m) ) 4378 ind_trans = MERGE( ind_trans_gfl, ind_trans_agfl, & 4379 surf_usm_v(l)%ground_level(m) ) 4380 4381 ! 4382 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions 4383 IF ( building_pars_f%pars_xy(ind_wall_frac,j,i) /= building_pars_f%fill ) & 4384 surf_usm_v(l)%frac(m,ind_veg_wall) = building_pars_f%pars_xy(ind_wall_frac,j,i) 4385 4386 IF ( building_pars_f%pars_xy(ind_green_frac_w,j,i) /= building_pars_f%fill ) & 4387 surf_usm_v(l)%frac(m,ind_pav_green) = & 4388 building_pars_f%pars_xy(ind_green_frac_w,j,i) 4389 4390 IF ( building_pars_f%pars_xy(ind_win_frac,j,i) /= building_pars_f%fill ) & 4391 surf_usm_v(l)%frac(m,ind_wat_win) = building_pars_f%pars_xy(ind_win_frac,j,i) 4392 4393 IF ( building_pars_f%pars_xy(ind_lai_w,j,i) /= building_pars_f%fill ) & 4394 surf_usm_v(l)%lai(m) = building_pars_f%pars_xy(ind_lai_w,j,i) 4395 4396 IF ( building_pars_f%pars_xy(ind_hc1,j,i) /= building_pars_f%fill ) THEN 4397 surf_usm_v(l)%rho_c_wall(nzb_wall,m) = building_pars_f%pars_xy(ind_hc1,j,i) 4398 surf_usm_v(l)%rho_c_wall(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1,j,i) 4399 ENDIF 4400 4401 4402 IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill ) & 4403 surf_usm_v(l)%rho_c_wall(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2,j,i) 4404 4405 IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill ) & 4406 surf_usm_v(l)%rho_c_wall(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3,j,i) 4407 4408 IF ( building_pars_f%pars_xy(ind_hc1,j,i) /= building_pars_f%fill ) THEN 4409 surf_usm_v(l)%rho_c_green(nzb_wall,m) = building_pars_f%pars_xy(ind_hc1,j,i) 4410 surf_usm_v(l)%rho_c_green(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1,j,i) 4411 ENDIF 4412 IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill ) & 4413 surf_usm_v(l)%rho_c_green(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2,j,i) 4414 4415 IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill ) & 4416 surf_usm_v(l)%rho_c_green(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3,j,i) 4417 4418 IF ( building_pars_f%pars_xy(ind_hc1,j,i) /= building_pars_f%fill ) THEN 4419 surf_usm_v(l)%rho_c_window(nzb_wall,m) = building_pars_f%pars_xy(ind_hc1,j,i) 4420 surf_usm_v(l)%rho_c_window(nzb_wall+1,m) = building_pars_f%pars_xy(ind_hc1,j,i) 4421 ENDIF 4422 IF ( building_pars_f%pars_xy(ind_hc2,j,i) /= building_pars_f%fill ) & 4423 surf_usm_v(l)%rho_c_window(nzb_wall+2,m) = building_pars_f%pars_xy(ind_hc2,j,i) 4424 4425 IF ( building_pars_f%pars_xy(ind_hc3,j,i) /= building_pars_f%fill ) & 4426 surf_usm_v(l)%rho_c_window(nzb_wall+3,m) = building_pars_f%pars_xy(ind_hc3,j,i) 4427 4428 IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill ) THEN 4429 surf_usm_v(l)%lambda_h(nzb_wall,m) = building_pars_f%pars_xy(ind_tc1,j,i) 4430 surf_usm_v(l)%lambda_h(nzb_wall+1,m) = building_pars_f%pars_xy(ind_tc1,j,i) 4431 ENDIF 4432 IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill ) & 4433 surf_usm_v(l)%lambda_h(nzb_wall+2,m) = building_pars_f%pars_xy(ind_tc2,j,i) 4434 4435 IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill ) & 4436 surf_usm_v(l)%lambda_h(nzb_wall+3,m) = building_pars_f%pars_xy(ind_tc3,j,i) 4437 4438 IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill ) THEN 4439 surf_usm_v(l)%lambda_h_green(nzb_wall,m) = building_pars_f%pars_xy(ind_tc1,j,i) 4440 surf_usm_v(l)%lambda_h_green(nzb_wall+1,m) = & 4441 building_pars_f%pars_xy(ind_tc1,j,i) 4442 ENDIF 4443 IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill ) & 4444 surf_usm_v(l)%lambda_h_green(nzb_wall+2,m) = & 4445 building_pars_f%pars_xy(ind_tc2,j,i) 4446 4447 IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill ) & 4448 surf_usm_v(l)%lambda_h_green(nzb_wall+3,m) = & 4449 building_pars_f%pars_xy(ind_tc3,j,i) 4450 4451 IF ( building_pars_f%pars_xy(ind_tc1,j,i) /= building_pars_f%fill ) THEN 4452 surf_usm_v(l)%lambda_h_window(nzb_wall,m) = building_pars_f%pars_xy(ind_tc1,j,i) 4453 surf_usm_v(l)%lambda_h_window(nzb_wall+1,m) = & 4454 building_pars_f%pars_xy(ind_tc1,j,i) 4455 ENDIF 4456 IF ( building_pars_f%pars_xy(ind_tc2,j,i) /= building_pars_f%fill ) & 4457 surf_usm_v(l)%lambda_h_window(nzb_wall+2,m) = & 4458 building_pars_f%pars_xy(ind_tc2,j,i) 4459 4460 IF ( building_pars_f%pars_xy(ind_tc3,j,i) /= building_pars_f%fill ) & 4461 surf_usm_v(l)%lambda_h_window(nzb_wall+3,m) = & 4462 building_pars_f%pars_xy(ind_tc3,j,i) 4463 4464 IF ( building_pars_f%pars_xy(ind_indoor_target_temp_summer,j,i) /= & 4465 building_pars_f%fill ) & 4466 surf_usm_v(l)%target_temp_summer(m) = & 4467 building_pars_f%pars_xy(ind_indoor_target_temp_summer,j,i) 4468 4469 IF ( building_pars_f%pars_xy(ind_indoor_target_temp_winter,j,i) /= & 4470 building_pars_f%fill ) & 4471 surf_usm_v(l)%target_temp_winter(m) = & 4472 building_pars_f%pars_xy(ind_indoor_target_temp_winter,j,i) 4473 4474 IF ( building_pars_f%pars_xy(ind_emis_wall,j,i) /= building_pars_f%fill ) & 4475 surf_usm_v(l)%emissivity(m,ind_veg_wall) = & 4476 building_pars_f%pars_xy(ind_emis_wall,j,i) 4477 4478 IF ( building_pars_f%pars_xy(ind_emis_green,j,i) /= building_pars_f%fill ) & 4479 surf_usm_v(l)%emissivity(m,ind_pav_green) = & 4480 building_pars_f%pars_xy(ind_emis_green,j,i) 4481 4482 IF ( building_pars_f%pars_xy(ind_emis_win,j,i) /= building_pars_f%fill ) & 4483 surf_usm_v(l)%emissivity(m,ind_wat_win) = & 4484 building_pars_f%pars_xy(ind_emis_win,j,i) 4485 4486 IF ( building_pars_f%pars_xy(ind_trans,j,i) /= building_pars_f%fill ) & 4487 surf_usm_v(l)%transmissivity(m) = & 4488 building_pars_f%pars_xy(ind_trans,j,i) 4489 4490 IF ( building_pars_f%pars_xy(ind_z0,j,i) /= building_pars_f%fill ) & 4491 surf_usm_v(l)%z0(m) = building_pars_f%pars_xy(ind_z0,j,i) 4492 4493 IF ( building_pars_f%pars_xy(ind_z0qh,j,i) /= building_pars_f%fill ) & 4494 surf_usm_v(l)%z0h(m) = building_pars_f%pars_xy(ind_z0qh,j,i) 4495 4496 IF ( building_pars_f%pars_xy(ind_z0qh,j,i) /= building_pars_f%fill ) & 4497 surf_usm_v(l)%z0q(m) = building_pars_f%pars_xy(ind_z0qh,j,i) 4498 4499 IF ( building_pars_f%pars_xy(ind_alb_wall_agfl,j,i) /= building_pars_f%fill ) & 4500 surf_usm_v(l)%albedo_type(m,ind_veg_wall) = & 4501 building_pars_f%pars_xy(ind_alb_wall_agfl,j,i) 4502 4503 IF ( building_pars_f%pars_xy(ind_alb_green_agfl,j,i) /= building_pars_f%fill ) & 4504 surf_usm_v(l)%albedo_type(m,ind_pav_green) = & 4505 building_pars_f%pars_xy(ind_alb_green_agfl,j,i) 4506 4507 IF ( building_pars_f%pars_xy(ind_alb_win_agfl,j,i) /= building_pars_f%fill ) & 4508 surf_usm_v(l)%albedo_type(m,ind_wat_win) = & 4509 building_pars_f%pars_xy(ind_alb_win_agfl,j,i) 4510 4511 IF ( building_pars_f%pars_xy(ind_thick_1_agfl,j,i) /= building_pars_f%fill ) & 4512 surf_usm_v(l)%zw(nzb_wall,m) = building_pars_f%pars_xy(ind_thick_1_agfl,j,i) 4513 4514 IF ( building_pars_f%pars_xy(ind_thick_2_agfl,j,i) /= building_pars_f%fill ) & 4515 surf_usm_v(l)%zw(nzb_wall+1,m) = building_pars_f%pars_xy(ind_thick_2_agfl,j,i) 4516 4517 IF ( building_pars_f%pars_xy(ind_thick_3_agfl,j,i) /= building_pars_f%fill ) & 4518 surf_usm_v(l)%zw(nzb_wall+2,m) = building_pars_f%pars_xy(ind_thick_3_agfl,j,i) 4519 4520 IF ( building_pars_f%pars_xy(ind_thick_4_agfl,j,i) /= building_pars_f%fill ) & 4521 surf_usm_v(l)%zw(nzb_wall+3,m) = building_pars_f%pars_xy(ind_thick_4_agfl,j,i) 4522 4523 IF ( building_pars_f%pars_xy(ind_thick_1_agfl,j,i) /= building_pars_f%fill ) & 4524 surf_usm_v(l)%zw_green(nzb_wall,m) = & 4525 building_pars_f%pars_xy(ind_thick_1_agfl,j,i) 4526 4527 IF ( building_pars_f%pars_xy(ind_thick_2_agfl,j,i) /= building_pars_f%fill ) & 4528 surf_usm_v(l)%zw_green(nzb_wall+1,m) = & 4529 building_pars_f%pars_xy(ind_thick_2_agfl,j,i) 4530 4531 IF ( building_pars_f%pars_xy(ind_thick_3_agfl,j,i) /= building_pars_f%fill ) & 4532 surf_usm_v(l)%zw_green(nzb_wall+2,m) = & 4533 building_pars_f%pars_xy(ind_thick_3_agfl,j,i) 4534 4535 IF ( building_pars_f%pars_xy(ind_thick_4_agfl,j,i) /= building_pars_f%fill ) & 4536 surf_usm_v(l)%zw_green(nzb_wall+3,m) = & 4537 building_pars_f%pars_xy(ind_thick_4_agfl,j,i) 4534 4538 4535 4539 ENDDO … … 4822 4826 ENDDO 4823 4827 ENDIF 4828 ! 4829 !-- Initialize albedo type via given type from static input file. Please note, even though 4830 !-- the albedo type has been already given by the pars, albedo_type overwrites these values. 4831 IF ( albedo_type_f%from_file ) THEN 4832 DO m = 1, surf_usm_h%ns 4833 i = surf_usm_h%i(m) 4834 j = surf_usm_h%j(m) 4835 IF ( albedo_type_f%var(j,i) /= albedo_type_f%fill ) & 4836 surf_usm_h%albedo_type(m,:) = albedo_type_f%var(j,i) 4837 ENDDO 4838 DO l = 0, 3 4839 DO m = 1, surf_usm_v(l)%ns 4840 i = surf_usm_v(l)%i(m) + surf_usm_v(l)%ioff 4841 j = surf_usm_v(l)%j(m) + surf_usm_v(l)%joff 4842 4843 IF ( albedo_type_f%var(j,i) /= albedo_type_f%fill ) & 4844 surf_usm_v(l)%albedo_type(m,:) = albedo_type_f%var(j,i) 4845 ENDDO 4846 ENDDO 4847 ENDIF 4824 4848 ! 4825 4849 !-- Run further checks to ensure that the respecitve material fractions are prescribed properly.
Note: See TracChangeset
for help on using the changeset viewer.