Changeset 2575 for palm/trunk
- Timestamp:
- Oct 24, 2017 9:57:58 AM (7 years ago)
- Location:
- palm/trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/INSTALL/test_oceanml_p3d
r2492 r2575 8 8 initializing_actions = 'set_constant_profiles', 9 9 10 phi= 55.6,10 latitude = 55.6, 11 11 12 12 momentum_advec = 'pw-scheme', -
palm/trunk/SOURCE/check_parameters.f90
r2564 r2575 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Renamed phi --> latitude 28 ! 29 ! 2564 2017-10-19 15:56:56Z Giersch 27 30 ! Variable wind_turbine was added to control_parameters. 28 31 ! … … 1596 1599 ! 1597 1600 !-- Compute Coriolis parameter 1598 f = 2.0_wp * omega * SIN( phi/ 180.0_wp * pi )1599 fs = 2.0_wp * omega * COS( phi/ 180.0_wp * pi )1601 f = 2.0_wp * omega * SIN( latitude / 180.0_wp * pi ) 1602 fs = 2.0_wp * omega * COS( latitude / 180.0_wp * pi ) 1600 1603 1601 1604 ! -
palm/trunk/SOURCE/header.f90
r2550 r2575 1764 1764 ! 1765 1765 !-- Geostrophic parameters 1766 WRITE ( io, 410 ) phi, omega, f, fs1766 WRITE ( io, 410 ) latitude, longitude, omega, f, fs 1767 1767 1768 1768 ! … … 2200 2200 400 FORMAT (//' Physical quantities:'/ & 2201 2201 ' -------------------'/) 2202 410 FORMAT (' Geograph. latitude : phi = ',F4.1,' degr'/ & 2202 410 FORMAT (' Geograph. latitude : latitude = ',F4.1,' degr'/ & 2203 ' Geograph. longitude : longitude = ',F4.1,' degr'/ & 2203 2204 ' Angular velocity : omega =',E10.3,' rad/s'/ & 2204 2205 ' Coriolis parameter : f = ',F9.6,' 1/s'/ & … … 2215 2216 ' Specific heat cap. : c_p = ',F6.1,' J/(kg K)'/ & 2216 2217 ' Vapourization heat : L_v =',E9.2,' J/kg') 2217 417 FORMAT (' Geograph. longitude : lambda = ',F4.1,' degr')2218 2218 418 FORMAT (/' Day of the year at model start : day_init = ',I3 & 2219 2219 /' UTC time at model start : time_utc_init = ',F7.1' s') -
palm/trunk/SOURCE/land_surface_model_mod.f90
r2573 r2575 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Pavement parameterization revised 28 ! 29 ! 2573 2017-10-20 15:57:49Z scharf 27 30 ! bugfixes in last_actions 28 31 ! … … 269 272 !> @todo Implement surface runoff model (required when performing long-term LES 270 273 !> with considerable precipitation. 271 !> @todo Fix crashes with radiation_scheme == 'constant'272 274 !> @todo Revise calculation of f2 when wilting point is non-constant in the 273 275 !> soil 274 !> @todo Solve problems with soil heat flux paramterization275 !> @todo Make pavement_depth variable for each surface element276 276 !> @todo Allow for zero soil moisture (currently, it is set to wilting point) 277 277 !> @note No time step criterion is required as long as the soil layers do not … … 336 336 REAL(wp), DIMENSION(0:7), PARAMETER :: dz_soil_default = & ! default soil layer configuration 337 337 (/ 0.01_wp, 0.02_wp, 0.04_wp, & 338 0.0 7_wp, 0.15_wp, 0.21_wp, &339 0. 72_wp, 1.89_wp/)338 0.06_wp, 0.14_wp, 0.26_wp, & 339 0.54_wp, 1.86_wp/) 340 340 341 341 REAL(wp), DIMENSION(0:3), PARAMETER :: dz_soil_ref = & ! reference four layer soil configuration used for estimating the root fractions … … 356 356 357 357 358 INTEGER(iwp) :: nzb_soil = 0, & !< bottom of the soil model (Earth's surface) 359 nzt_soil = 7, & !< top of the soil model 360 nzs = 8, & !< number of soil layers 361 pavement_type = 1, & !< default NAMELIST pavement_type 362 soil_type = 3, & !< default NAMELIST soil_type 363 vegetation_type = 2, & !< default NAMELIST vegetation_type 364 water_type = 1 !< default NAMELISt water_type 358 INTEGER(iwp) :: nzb_soil = 0, & !< bottom of the soil model (Earth's surface) 359 nzt_soil = 7, & !< top of the soil model 360 nzt_pavement = 0, & !< top of the pavement within the soil 361 nzs = 8, & !< number of soil layers 362 pavement_depth_level = 0, & !< default NAMELIST nzt_pavement 363 pavement_type = 1, & !< default NAMELIST pavement_type 364 soil_type = 3, & !< default NAMELIST soil_type 365 vegetation_type = 2, & !< default NAMELIST vegetation_type 366 water_type = 1 !< default NAMELISt water_type 365 367 366 368 … … 392 394 m_total = 0.0_wp, & !< weighted total water content of the soil (m3/m3) 393 395 n_vangenuchten = 9999999.9_wp, & !< NAMELIST n_vg 394 pavement_depth = 9999999.9_wp, & !< depth of the pavement395 396 pavement_heat_capacity = 9999999.9_wp, & !< volumetric heat capacity of pavement (e.g. roads) (J/m3/K) 396 397 pavement_heat_conduct = 9999999.9_wp, & !< heat conductivity for pavements (e.g. roads) (W/m/K) … … 679 680 ! 680 681 !-- TO BE FILLED 681 !-- Pavement parameters depth, z0, z0h, lambda_h, rho_c, albedo_type, emissivity 682 REAL(wp), DIMENSION(0:6,1:15), PARAMETER :: pavement_pars = RESHAPE( (/ & 683 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 18.0_wp, 0.97_wp, & ! 1 684 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 19.0_wp, 0.94_wp, & ! 2 685 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 20.0_wp, 0.98_wp, & ! 3 686 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 21.0_wp, 0.93_wp, & ! 4 687 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 22.0_wp, 0.97_wp, & ! 5 688 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 23.0_wp, 0.97_wp, & ! 6 689 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 24.0_wp, 0.97_wp, & ! 7 690 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 25.0_wp, 0.94_wp, & ! 8 691 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 26.0_wp, 0.98_wp, & ! 9 692 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 27.0_wp, 0.93_wp, & ! 10 693 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 28.0_wp, 0.97_wp, & ! 11 694 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 29.0_wp, 0.97_wp, & ! 12 695 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 30.0_wp, 0.97_wp, & ! 13 696 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 31.0_wp, 0.94_wp, & ! 14 697 0.050_wp, 1.0E-4_wp, 1.0E-5_wp, 1.00_wp, 1.94E6_wp, 32.0_wp, 0.98_wp & ! 15 698 /), (/ 7, 15 /) ) 699 682 !-- Pavement parameters z0, z0h, albedo_type, emissivity 683 REAL(wp), DIMENSION(0:3,1:15), PARAMETER :: pavement_pars = RESHAPE( (/ & 684 1.0E-4_wp, 1.0E-5_wp, 18.0_wp, 0.97_wp, & ! 1 685 1.0E-4_wp, 1.0E-5_wp, 19.0_wp, 0.94_wp, & ! 2 686 1.0E-4_wp, 1.0E-5_wp, 20.0_wp, 0.98_wp, & ! 3 687 1.0E-4_wp, 1.0E-5_wp, 21.0_wp, 0.93_wp, & ! 4 688 1.0E-4_wp, 1.0E-5_wp, 22.0_wp, 0.97_wp, & ! 5 689 1.0E-4_wp, 1.0E-5_wp, 23.0_wp, 0.97_wp, & ! 6 690 1.0E-4_wp, 1.0E-5_wp, 24.0_wp, 0.97_wp, & ! 7 691 1.0E-4_wp, 1.0E-5_wp, 25.0_wp, 0.94_wp, & ! 8 692 1.0E-4_wp, 1.0E-5_wp, 26.0_wp, 0.98_wp, & ! 9 693 1.0E-4_wp, 1.0E-5_wp, 27.0_wp, 0.93_wp, & ! 10 694 1.0E-4_wp, 1.0E-5_wp, 28.0_wp, 0.97_wp, & ! 11 695 1.0E-4_wp, 1.0E-5_wp, 29.0_wp, 0.97_wp, & ! 12 696 1.0E-4_wp, 1.0E-5_wp, 30.0_wp, 0.97_wp, & ! 13 697 1.0E-4_wp, 1.0E-5_wp, 31.0_wp, 0.94_wp, & ! 14 698 1.0E-4_wp, 1.0E-5_wp, 32.0_wp, 0.98_wp & ! 15 699 /), (/ 4, 15 /) ) 700 ! 701 !-- Pavement subsurface parameters part 1: thermal conductivity (W/m/K) 702 !-- 0.0-0.01, 0.01-0.03, 0.03-0.07, 0.07-0.15, 0.15-0.30, 0.30-0.50, 0.50-1.25, 1.25-3.00 703 REAL(wp), DIMENSION(0:7,1:15), PARAMETER :: pavement_subsurface_pars_1 = RESHAPE( (/ & 704 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 1 705 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 2 706 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 3 707 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 4 708 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 5 709 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 6 710 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 7 711 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 8 712 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 9 713 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 10 714 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 11 715 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 12 716 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 13 717 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp, & ! 14 718 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 1.00_wp, 9999999.9_wp, 9999999.9_wp & ! 15 719 /), (/ 8, 15 /) ) 720 721 ! 722 !-- Pavement subsurface parameters part 2: volumetric heat capacity (J/m3/K) 723 !-- 0.0-0.01, 0.01-0.03, 0.03-0.07, 0.07-0.15, 0.15-0.30, 0.30-0.50, 0.50-1.25, 1.25-3.00 724 REAL(wp), DIMENSION(0:7,1:15), PARAMETER :: pavement_subsurface_pars_2 = RESHAPE( (/ & 725 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 1 726 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 2 727 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 3 728 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 4 729 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 5 730 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 6 731 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 7 732 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 8 733 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 9 734 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 10 735 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 11 736 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 12 737 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 13 738 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp, & ! 14 739 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 1.94E6_wp, 9999999.9_wp, 9999999.9_wp & ! 15 740 /), (/ 8, 15 /) ) 741 700 742 ! 701 743 !-- TO BE FILLED … … 1121 1163 IF ( vegetation_coverage /= 9999999.9_wp .AND. vegetation_coverage & 1122 1164 /= 0.0_wp ) THEN 1123 message_string = 'vegetation_type = 1 (bare soil)'//&1165 message_string = 'vegetation_type = 1 (bare soil)'// & 1124 1166 ' requires vegetation_coverage = 0' 1125 1167 CALL message( 'check_parameters', 'PA0471', 1, 2, 0, 6, 0 ) … … 1167 1209 IF ( TRIM( surface_type ) == 'pavement' ) THEN 1168 1210 1211 IF ( ANY( dz_soil /= 9999999.9_wp ) .AND. pavement_type /= 0 ) THEN 1212 message_string = 'non-default setting of dz_soil '// & 1213 'does not allow to use pavement_type /= 0)' 1214 CALL message( 'check_parameters', 'PA0341', 1, 2, 0, 6, 0 ) 1215 ENDIF 1216 1169 1217 IF ( pavement_type == 0 ) THEN 1170 1218 … … 1182 1230 CALL message( 'check_parameters', 'PA0353', 1, 2, 0, 6, 0 ) 1183 1231 ENDIF 1184 1185 IF ( pavement_depth == 9999999.9_wp ) THEN1186 message_string = 'pavement_type = 0 (user_defined)'// &1187 'requires setting of pavement_depth'// &1188 '/= 9999999.9'1189 CALL message( 'check_parameters', 'PA0341', 1, 2, 0, 6, 0 )1190 ENDIF1191 1232 1192 1233 IF ( pavement_heat_conduct == 9999999.9_wp ) THEN 1193 1234 message_string = 'pavement_type = 0 (user_defined)'// & 1194 1235 'requires setting of pavement_heat_conduct'// & … … 1202 1243 '/= 9999999.9' 1203 1244 CALL message( 'check_parameters', 'PA0139', 1, 2, 0, 6, 0 ) 1245 ENDIF 1246 1247 IF ( pavement_depth_level == 0 ) THEN 1248 message_string = 'pavement_type = 0 (user_defined)'// & 1249 'requires setting of pavement_depth_level'// & 1250 '/= 0' 1251 CALL message( 'check_parameters', 'PA0474', 1, 2, 0, 6, 0 ) 1204 1252 ENDIF 1205 1253 … … 2159 2207 ALLOCATE ( surf_lsm_h%gamma_w_sat(nzb_soil:nzt_soil,1:surf_lsm_h%ns) ) 2160 2208 ALLOCATE ( surf_lsm_h%lambda_h(nzb_soil:nzt_soil,1:surf_lsm_h%ns) ) 2209 ALLOCATE ( surf_lsm_h%lambda_h_def(nzb_soil:nzt_soil,1:surf_lsm_h%ns)) 2161 2210 ALLOCATE ( surf_lsm_h%l_vg(nzb_soil:nzt_soil,1:surf_lsm_h%ns) ) 2162 2211 ALLOCATE ( surf_lsm_h%m_fc(nzb_soil:nzt_soil,1:surf_lsm_h%ns) ) … … 2166 2215 ALLOCATE ( surf_lsm_h%n_vg(nzb_soil:nzt_soil,1:surf_lsm_h%ns) ) 2167 2216 ALLOCATE ( surf_lsm_h%rho_c_total(nzb_soil:nzt_soil,1:surf_lsm_h%ns) ) 2217 ALLOCATE ( surf_lsm_h%rho_c_total_def(nzb_soil:nzt_soil,1:surf_lsm_h%ns) ) 2168 2218 ALLOCATE ( surf_lsm_h%root_fr(nzb_soil:nzt_soil,1:surf_lsm_h%ns) ) 2169 2219 … … 2183 2233 ALLOCATE ( surf_lsm_v(l)%gamma_w_sat(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) ) 2184 2234 ALLOCATE ( surf_lsm_v(l)%lambda_h(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) ) 2235 ALLOCATE ( surf_lsm_v(l)%lambda_h_def(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns)) 2185 2236 ALLOCATE ( surf_lsm_v(l)%l_vg(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) ) 2186 2237 ALLOCATE ( surf_lsm_v(l)%m_fc(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) ) … … 2190 2241 ALLOCATE ( surf_lsm_v(l)%n_vg(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) ) 2191 2242 ALLOCATE ( surf_lsm_v(l)%rho_c_total(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) ) 2243 ALLOCATE ( surf_lsm_v(l)%rho_c_total_def(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) ) 2192 2244 ALLOCATE ( surf_lsm_v(l)%root_fr(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) ) 2193 2245 … … 2365 2417 IF ( pavement_type /= 0 ) THEN 2366 2418 2367 IF ( pavement_depth == 9999999.9_wp ) THEN 2368 pavement_depth = pavement_pars(0,pavement_type) 2369 ELSE 2370 pavement_depth = MAX( 0.5_wp * dz_soil(nzb_soil), pavement_depth ) 2371 ENDIF 2419 ! 2420 !-- When a pavement_type is used, overwrite a possible setting of 2421 !-- the pavement depth as it is already defined by the pavement type 2422 pavement_depth_level = 0 2372 2423 2373 2424 IF ( z0_pavement == 9999999.9_wp ) THEN 2374 z0_pavement = pavement_pars( 1,pavement_type)2425 z0_pavement = pavement_pars(0,pavement_type) 2375 2426 ENDIF 2376 2427 2377 2428 IF ( z0h_pavement == 9999999.9_wp ) THEN 2378 z0h_pavement = pavement_pars( 2,pavement_type)2429 z0h_pavement = pavement_pars(1,pavement_type) 2379 2430 ENDIF 2380 2431 2381 2432 IF ( pavement_heat_conduct == 9999999.9_wp ) THEN 2382 pavement_heat_conduct = pavement_ pars(3,pavement_type)2433 pavement_heat_conduct = pavement_subsurface_pars_1(0,pavement_type) 2383 2434 ENDIF 2384 2435 2385 2436 IF ( pavement_heat_capacity == 9999999.9_wp ) THEN 2386 pavement_heat_capacity = pavement_ pars(4,pavement_type)2437 pavement_heat_capacity = pavement_subsurface_pars_2(0,pavement_type) 2387 2438 ENDIF 2388 2439 2389 2440 IF ( albedo_type == 9999999 .AND. albedo == 9999999.9_wp ) THEN 2390 albedo_type = INT(pavement_pars( 5,pavement_type))2441 albedo_type = INT(pavement_pars(2,pavement_type)) 2391 2442 ENDIF 2392 2443 2393 2444 IF ( emissivity == 9999999.9_wp ) THEN 2394 emissivity = pavement_pars(6,pavement_type) 2445 emissivity = pavement_pars(3,pavement_type) 2446 ENDIF 2447 2448 ! 2449 !-- If the depth level of the pavement is not set, determine it from 2450 !-- lookup table. 2451 IF ( pavement_depth_level == 0 ) THEN 2452 DO k = nzb_soil, nzt_soil 2453 IF ( pavement_subsurface_pars_1(k,pavement_type) == 9999999.9_wp & 2454 .OR. pavement_subsurface_pars_2(k,pavement_type) & 2455 == 9999999.9_wp) THEN 2456 nzt_pavement = k-1 2457 EXIT 2458 ENDIF 2459 ENDDO 2460 ELSE 2461 nzt_pavement = pavement_depth_level 2395 2462 ENDIF 2396 2463 … … 2466 2533 * dz_soil(nzb_soil) & 2467 2534 * 0.25_wp 2468 surf_lsm_h%lambda_h_def(m) = pavement_heat_conduct 2469 surf_lsm_h%rho_c_def(m) = pavement_heat_capacity 2535 2536 IF ( pavement_type /= 0 ) THEN 2537 DO k = nzb_soil, nzt_soil 2538 surf_lsm_h%lambda_h_def(k,m) = pavement_subsurface_pars_1(k,pavement_type) 2539 surf_lsm_h%rho_c_total_def(k,m) = pavement_subsurface_pars_2(k,pavement_type) 2540 ENDDO 2541 ELSE 2542 surf_lsm_h%lambda_h_def(:,m) = pavement_heat_conduct 2543 surf_lsm_h%rho_c_total_def(:,m) = pavement_heat_capacity 2544 ENDIF 2470 2545 2471 2546 ELSEIF ( surf_lsm_h%vegetation_surface(m) ) THEN … … 2556 2631 * dz_soil(nzb_soil) & 2557 2632 * 0.25_wp 2558 surf_lsm_v(l)%lambda_h_def(m) = pavement_heat_conduct 2559 surf_lsm_v(l)%rho_c_def(m) = pavement_heat_capacity 2633 IF ( pavement_type /= 0 ) THEN 2634 DO k = nzb_soil, nzt_soil 2635 surf_lsm_v(l)%lambda_h_def(k,m) = pavement_subsurface_pars_1(k,pavement_type) 2636 surf_lsm_v(l)%rho_c_total_def(k,m) = pavement_subsurface_pars_2(k,pavement_type) 2637 ENDDO 2638 ELSE 2639 surf_lsm_v(l)%lambda_h_def(:,m) = pavement_heat_conduct 2640 surf_lsm_v(l)%rho_c_total_def(:,m) = pavement_heat_capacity 2641 ENDIF 2642 2560 2643 2561 2644 ELSEIF ( surf_lsm_v(l)%vegetation_surface(m) ) THEN … … 2734 2817 j = surf_lsm_h%j(m) 2735 2818 DO k = nzb_soil, nzt_soil 2736 IF ( surf_lsm_h%pavement_surface(m) .AND. zs(k) <= pavement_depth ) THEN 2819 IF ( surf_lsm_h%pavement_surface(m) .AND. & 2820 k <= nzt_pavement ) THEN 2737 2821 surf_lsm_h%root_fr(k,m) = 0.0_wp 2738 2822 ELSE … … 2742 2826 2743 2827 ! 2744 !-- Normalize so that the sum = 1. Only relevant when the root distribution was2745 !-- set to zero due to pavement at some layers.2828 !-- Normalize so that the sum = 1. Only relevant when the root 2829 !-- distribution was set to zero due to pavement at some layers. 2746 2830 IF ( SUM( surf_lsm_h%root_fr(:,m) ) > 0.0_wp ) THEN 2747 2831 DO k = nzb_soil, nzt_soil 2748 surf_lsm_h%root_fr(k,m) = surf_lsm_h%root_fr(k,m) / SUM( surf_lsm_h%root_fr(:,m) ) 2832 surf_lsm_h%root_fr(k,m) = surf_lsm_h%root_fr(k,m) & 2833 / SUM( surf_lsm_h%root_fr(:,m) ) 2749 2834 ENDDO 2750 2835 ENDIF … … 2757 2842 2758 2843 DO k = nzb_soil, nzt_soil 2759 IF ( surf_lsm_v(l)%pavement_surface(m) .AND. zs(k) <= pavement_depth ) THEN 2844 IF ( surf_lsm_v(l)%pavement_surface(m) .AND. & 2845 k <= nzt_pavement ) THEN 2760 2846 surf_lsm_v(l)%root_fr(k,m) = 0.0_wp 2761 2847 ELSE … … 2764 2850 ENDDO 2765 2851 ! 2766 !-- Normalize so that the sum = 1. Only relevant when the root distribution was2767 !-- sset to zero due to pavement at some layers.2852 !-- Normalize so that the sum = 1. Only relevant when the root 2853 !-- distribution was set to zero due to pavement at some layers. 2768 2854 IF ( SUM( surf_lsm_v(l)%root_fr(:,m) ) > 0.0_wp ) THEN 2769 2855 DO k = nzb_soil, nzt_soil 2770 surf_lsm_v(l)%root_fr(k,m) = surf_lsm_v(l)%root_fr(k,m) / SUM( surf_lsm_v(l)%root_fr(:,m) ) 2856 surf_lsm_v(l)%root_fr(k,m) = surf_lsm_v(l)%root_fr(k,m) & 2857 / SUM( surf_lsm_v(l)%root_fr(:,m) ) 2771 2858 ENDDO 2772 2859 ENDIF … … 2929 3016 ALLOCATE ( surf_lsm_h%g_d(1:surf_lsm_h%ns) ) 2930 3017 ALLOCATE ( surf_lsm_h%lai(1:surf_lsm_h%ns) ) 2931 ALLOCATE ( surf_lsm_h%lambda_h_def(1:surf_lsm_h%ns) )2932 3018 ALLOCATE ( surf_lsm_h%lambda_surface_u(1:surf_lsm_h%ns) ) 2933 3019 ALLOCATE ( surf_lsm_h%lambda_surface_s(1:surf_lsm_h%ns) ) … … 2937 3023 ALLOCATE ( surf_lsm_h%qsws_liq(1:surf_lsm_h%ns) ) 2938 3024 ALLOCATE ( surf_lsm_h%qsws_veg(1:surf_lsm_h%ns) ) 2939 ALLOCATE ( surf_lsm_h%rad_net_l(1:surf_lsm_h%ns) ) 2940 ALLOCATE ( surf_lsm_h%rho_c_def(1:surf_lsm_h%ns) ) 3025 ALLOCATE ( surf_lsm_h%rad_net_l(1:surf_lsm_h%ns) ) 2941 3026 ALLOCATE ( surf_lsm_h%r_a(1:surf_lsm_h%ns) ) 2942 3027 ALLOCATE ( surf_lsm_h%r_canopy(1:surf_lsm_h%ns) ) … … 2961 3046 ALLOCATE ( surf_lsm_v(l)%g_d(1:surf_lsm_v(l)%ns) ) 2962 3047 ALLOCATE ( surf_lsm_v(l)%lai(1:surf_lsm_v(l)%ns) ) 2963 ALLOCATE ( surf_lsm_v(l)%lambda_h_def(1:surf_lsm_v(l)%ns) )2964 3048 ALLOCATE ( surf_lsm_v(l)%lambda_surface_u(1:surf_lsm_v(l)%ns) ) 2965 3049 ALLOCATE ( surf_lsm_v(l)%lambda_surface_s(1:surf_lsm_v(l)%ns) ) … … 2970 3054 ALLOCATE ( surf_lsm_v(l)%qsws_veg(1:surf_lsm_v(l)%ns) ) 2971 3055 ALLOCATE ( surf_lsm_v(l)%rad_net_l(1:surf_lsm_v(l)%ns) ) 2972 ALLOCATE ( surf_lsm_v(l)%rho_c_def(1:surf_lsm_h%ns) )2973 3056 ALLOCATE ( surf_lsm_v(l)%r_a(1:surf_lsm_v(l)%ns) ) 2974 3057 ALLOCATE ( surf_lsm_v(l)%r_canopy(1:surf_lsm_v(l)%ns) ) … … 3028 3111 l_vangenuchten, min_canopy_resistance, & 3029 3112 min_soil_resistance, n_vangenuchten, & 3030 pavement_depth, pavement_heat_capacity, & 3113 pavement_depth_level, & 3114 pavement_heat_capacity, & 3031 3115 pavement_heat_conduct, pavement_type, & 3032 3116 residual_moisture, root_fraction, & … … 3135 3219 DO k = nzb_soil, nzt_soil 3136 3220 3137 IF ( surf%pavement_surface(m) .AND. zs(k) <= pavement_depth) THEN3221 IF ( surf%pavement_surface(m) .AND. k <= nzt_pavement ) THEN 3138 3222 3139 surf%rho_c_total(k,m) = surf%rho_c_ def(m)3140 lambda_temp(k) = surf%lambda_h_def(m)3223 surf%rho_c_total(k,m) = surf%rho_c_total_def(k,m) 3224 lambda_temp(k) = surf%lambda_h_def(k,m) 3141 3225 3142 3226 ELSE … … 3167 3251 !-- true pavement depth is considered 3168 3252 DO k = nzb_soil, nzt_soil-1 3169 IF ( surf%pavement_surface(m) .AND. zs(k) < pavement_depth &3170 .AND. zs(k+1) > pavement_depth ) &3171 THEN3172 surf%lambda_h(k,m) = ( pavement_depth - zs(k) ) &3173 * ddz_soil_center(k+1) * lambda_temp(k) &3174 + ( zs(k+1) - pavement_depth ) &3175 * ddz_soil_center(k+1) * lambda_temp(k+1)3176 ELSE3177 3253 surf%lambda_h(k,m) = ( lambda_temp(k+1) + lambda_temp(k) ) & 3178 3254 * 0.5_wp 3179 ENDIF3180 3181 3255 ENDDO 3182 3256 surf%lambda_h(nzt_soil,m) = lambda_temp(nzt_soil) … … 3232 3306 !-- In order to prevent water tranport through paved surfaces, 3233 3307 !-- conductivity and diffusivity are set to zero 3234 IF ( surf%pavement_surface(m) .AND. zs(k) <= pavement_depth) THEN3308 IF ( surf%pavement_surface(m) .AND. k <= nzt_pavement ) THEN 3235 3309 3236 3310 lambda_temp(k) = 0.0_wp … … 3288 3362 !-- ECMWF-IFS Eq. 8.81 3289 3363 DO k = nzb_soil, nzt_soil-1 3290 IF ( surf%pavement_surface(m) .AND. zs(k) < pavement_depth& 3291 .AND. zs(k+1) > pavement_depth ) & 3292 THEN 3293 surf%lambda_w(k,m) = ( pavement_depth - zs(k) ) & 3294 * ddz_soil_center(k+1) * lambda_temp(k) & 3295 + ( zs(k+1) - pavement_depth ) & 3296 * ddz_soil_center(k+1) * lambda_temp(k+1) 3297 3298 surf%gamma_w(k,m) = ( pavement_depth - zs(k) ) & 3299 * ddz_soil_center(k+1) * gamma_temp(k) & 3300 + ( zs(k+1) - pavement_depth ) & 3301 * ddz_soil_center(k+1) * gamma_temp(k+1) 3302 ELSE 3303 surf%lambda_w(k,m) = ( lambda_temp(k+1) + & 3304 lambda_temp(k) ) * 0.5_wp 3305 surf%gamma_w(k,m) = ( gamma_temp(k+1) + & 3306 gamma_temp(k) ) * 0.5_wp 3307 ENDIF 3364 surf%lambda_w(k,m) = ( lambda_temp(k+1) + lambda_temp(k) ) & 3365 * 0.5_wp 3366 surf%gamma_w(k,m) = ( gamma_temp(k+1) + gamma_temp(k) ) & 3367 * 0.5_wp 3308 3368 ENDDO 3309 3310 3369 ! 3311 3370 ! -
palm/trunk/SOURCE/modules.f90
r2563 r2575 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Renamed phi -> latitude, moved longitude from radiation model to modules 28 ! 29 ! 2563 2017-10-19 15:36:10Z Giersch 27 30 ! Variable wind_turbine was added to control_parameters 28 31 ! … … 1320 1323 REAL(wp) :: kappa = 0.4_wp !< von Karman constant 1321 1324 REAL(wp) :: km_constant = -1.0_wp !< namelist parameter 1325 REAL(wp) :: latitude = 55.0_wp !< namelist parameter 1326 REAL(wp) :: longitude = 0.0_wp !< namelist parameter 1322 1327 REAL(wp) :: mask_scale_x = 1.0_wp !< namelist parameter 1323 1328 REAL(wp) :: mask_scale_y = 1.0_wp !< namelist parameter … … 1330 1335 REAL(wp) :: outflow_source_plane = -9999999.9_wp !< namelist parameter 1331 1336 REAL(wp) :: particle_maximum_age = 9999999.9_wp !< namelist parameter 1332 REAL(wp) :: phi = 55.0_wp !< namelist parameter1333 1337 REAL(wp) :: prandtl_number = 1.0_wp !< namelist parameter 1334 1338 REAL(wp) :: precipitation_amount_interval = 9999999.9_wp !< namelist parameter -
palm/trunk/SOURCE/parin.f90
r2563 r2575 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Renamed phi -> latitude, added longitude 28 ! 29 ! 2563 2017-10-19 15:36:10Z Giersch 27 30 ! Changed position where restart files are closed. 28 31 ! … … 417 420 inflow_disturbance_begin, inflow_disturbance_end, & 418 421 initializing_actions, km_constant, & 419 large_scale_forcing, large_scale_subsidence, 420 limiter_sedimentation, 422 large_scale_forcing, large_scale_subsidence, latitude, & 423 limiter_sedimentation, longitude, & 421 424 loop_optimization, lsf_exception, masking_method, mg_cycles, & 422 425 mg_switch_to_pe0_level, mixing_length_1d, momentum_advec, & 423 426 most_method, na_init, nc_const, netcdf_precision, neutral, ngsrb, & 424 427 nsor, nsor_ini, nudging, nx, ny, nz, ocean, omega, omega_sor, & 425 outflow_source_plane, passive_scalar, phi,&428 outflow_source_plane, passive_scalar, & 426 429 prandtl_number, precipitation, psolver, pt_damping_factor, & 427 430 pt_damping_width, pt_reference, pt_surface, & -
palm/trunk/SOURCE/radiation_model_mod.f90
r2547 r2575 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Bugfix: calculation of shortwave and longwave albedos for RRTMG swapped 28 ! 29 ! 2547 2017-10-16 12:41:56Z schwenkel 27 30 ! extended by cloud_droplets option, minor bugfix and correct calculation of 28 31 ! cloud droplet number concentration … … 187 190 USE control_parameters, & 188 191 ONLY: cloud_droplets, cloud_physics, g, initializing_actions, & 189 la rge_scale_forcing, lsf_surf, microphysics_morrison, phi, &190 pt_surface, rho_surface, surface_pressure,&191 time_since_reference_point192 latitude, longitude, large_scale_forcing, lsf_surf, & 193 microphysics_morrison, pt_surface, rho_surface, & 194 surface_pressure, time_since_reference_point 192 195 193 196 USE date_and_time_mod, & … … 299 302 dt_radiation = 0.0_wp, & !< radiation model timestep 300 303 emissivity = 9999999.9_wp, & !< NAMELIST surface emissivity 301 lambda = 0.0_wp, & !< longitude in degrees302 304 lon = 0.0_wp, & !< longitude in radians 303 305 lat = 0.0_wp, & !< latitude in radians … … 972 974 decl_2 = 2.0_wp * pi / 365.0_wp 973 975 decl_3 = decl_2 * 81.0_wp 974 lat = phi* pi / 180.0_wp975 lon = l ambda* pi / 180.0_wp976 lat = latitude * pi / 180.0_wp 977 lon = longitude * pi / 180.0_wp 976 978 ENDIF 977 979 … … 1039 1041 1040 1042 IF ( albedo_type /= 0 ) THEN 1043 IF ( albedo_sw_dif == 9999999.9_wp ) THEN 1044 albedo_sw_dif = albedo_pars(0,albedo_type) 1045 albedo_sw_dir = albedo_sw_dif 1046 ENDIF 1041 1047 IF ( albedo_lw_dif == 9999999.9_wp ) THEN 1042 albedo_lw_dif = albedo_pars( 0,albedo_type)1048 albedo_lw_dif = albedo_pars(1,albedo_type) 1043 1049 albedo_lw_dir = albedo_lw_dif 1044 ENDIF1045 IF ( albedo_sw_dif == 9999999.9_wp ) THEN1046 albedo_sw_dif = albedo_pars(1,albedo_type)1047 albedo_sw_dir = albedo_sw_dif1048 1050 ENDIF 1049 1051 ENDIF … … 1365 1367 ENDIF 1366 1368 1367 IF ( radiation .AND. radiation_scheme /= 'constant' ) THEN1368 WRITE ( io, 1 ) lambda1369 ENDIF1370 1371 1369 WRITE( io, 12 ) dt_radiation 1372 1370 1373 1371 1374 1 FORMAT (' Geograph. longitude : lambda = ',F4.1,' degr')1375 1372 3 FORMAT (//' Radiation model information:'/ & 1376 1373 ' ----------------------------'/) … … 1406 1403 albedo_lw_dif, albedo_sw_dir, albedo_sw_dif, & 1407 1404 constant_albedo, dt_radiation, & 1408 l ambda, lw_radiation, net_radiation,&1405 lw_radiation, net_radiation, & 1409 1406 radiation_scheme, skip_time_do_radiation, & 1410 1407 sw_radiation, unscheduled_radiation_calls -
palm/trunk/SOURCE/read_var_list.f90
r2563 r2575 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Renamed phi -> latitude, added longitude 28 ! 29 ! 2563 2017-10-19 15:36:10Z Giersch 27 30 ! CALL stg_read_restart_data moved to synthetic_turbulence_generator_mod and 28 31 ! CALL flight_read_restart_data moved to virtual_flights_mod. Furthermore … … 580 583 CASE ( 'passive_scalar' ) 581 584 READ ( 13 ) passive_scalar 582 CASE ( 'phi' ) 583 READ ( 13 ) phi 585 CASE ( 'latitude' ) 586 READ ( 13 ) latitude 587 CASE ( 'longitude' ) 588 READ ( 13 ) longitude 584 589 CASE ( 'prandtl_number' ) 585 590 READ ( 13 ) prandtl_number -
palm/trunk/SOURCE/surface_mod.f90
r2547 r2575 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Pavement parameterization revised 28 ! 29 ! 2547 2017-10-16 12:41:56Z schwenkel 27 30 ! extended by cloud_droplets option 28 31 ! … … 170 173 REAL(wp), DIMENSION(:), ALLOCATABLE :: rad_net_l !< net radiation 171 174 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: lambda_h !< heat conductivity of soil (W/m/K) 172 REAL(wp), DIMENSION(: ), ALLOCATABLE:: lambda_h_def !< default heat conductivity of soil (W/m/K)175 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: lambda_h_def !< default heat conductivity of soil (W/m/K) 173 176 174 177 LOGICAL, DIMENSION(:), ALLOCATABLE :: building_surface !< flag parameter indicating that the surface element is covered by buildings (no LSM actions, not implemented yet) … … 205 208 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: m_wilt !< soil moisture at permanent wilting point (m3/m3) 206 209 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: n_vg !< coef. Van Genuchten 207 REAL(wp), DIMENSION(: ), ALLOCATABLE :: rho_c_def!< default volumetric heat capacity of the (soil) layer (J/m3/K)210 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: rho_c_total_def !< default volumetric heat capacity of the (soil) layer (J/m3/K) 208 211 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: rho_c_total !< volumetric heat capacity of the actual soil matrix (J/m3/K) 209 212 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: root_fr !< root fraction within the soil layers -
palm/trunk/SOURCE/write_var_list.f90
r2574 r2575 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Renamed phi -> latitude, added longitude 28 ! 29 ! 2574 2017-10-23 09:02:53Z Giersch 27 30 ! Bugfix: Increased length of the character string *** end *** 28 31 ! … … 249 252 250 253 251 binary_version = '4. 3'254 binary_version = '4.4' 252 255 253 256 WRITE ( 14 ) binary_version … … 492 495 WRITE ( 14 ) 'passive_scalar ' 493 496 WRITE ( 14 ) passive_scalar 494 WRITE ( 14 ) 'phi ' 495 WRITE ( 14 ) phi 497 WRITE ( 14 ) 'latitude ' 498 WRITE ( 14 ) latitude 499 WRITE ( 14 ) 'longitude ' 500 WRITE ( 14 ) longitude 496 501 WRITE ( 14 ) 'prandtl_number ' 497 502 WRITE ( 14 ) prandtl_number
Note: See TracChangeset
for help on using the changeset viewer.