33 real(kind=
dp) :: rel_humid
35 real(kind=
dp) :: pressure
37 real(kind=
dp) :: longitude
39 real(kind=
dp) :: latitude
41 real(kind=
dp) :: altitude
44 real(kind=
dp) :: z_min
46 real(kind=
dp) :: z_max
48 real(kind=
dp) :: inverse_density
50 real(kind=
dp) :: cell_volume
58 real(kind=
dp) :: diff_coef
60 real(kind=
dp),
allocatable :: prob_advection(:,:,:,:)
62 real(kind=
dp),
allocatable :: prob_diffusion(:,:,:,:)
64 real(kind=
dp),
allocatable :: prob_vert_diffusion(:,:)
67 real(kind=
dp) :: start_time
71 real(kind=
dp) :: elapsed_time
73 real(kind=
dp) :: solar_zenith_angle
75 real(kind=
dp) :: height
77 real(kind=
dp) :: additive_kernel_coefficient
92 env_state%temp = env_state%temp + env_state_delta%temp
93 env_state%rel_humid = env_state%rel_humid + env_state_delta%rel_humid
94 env_state%pressure = env_state%pressure + env_state_delta%pressure
95 env_state%longitude = env_state%longitude + env_state_delta%longitude
96 env_state%latitude = env_state%latitude + env_state_delta%latitude
97 env_state%altitude = env_state%altitude + env_state_delta%altitude
98 env_state%start_time = env_state%start_time + env_state_delta%start_time
99 env_state%start_day = env_state%start_day + env_state_delta%start_day
100 env_state%elapsed_time = env_state%elapsed_time &
101 + env_state_delta%elapsed_time
102 env_state%solar_zenith_angle = env_state%solar_zenith_angle &
103 + env_state_delta%solar_zenith_angle
104 env_state%height = env_state%height + env_state_delta%height
116 real(kind=
dp),
intent(in) :: alpha
118 env_state%temp = env_state%temp * alpha
119 env_state%rel_humid = env_state%rel_humid * alpha
120 env_state%pressure = env_state%pressure * alpha
121 env_state%longitude = env_state%longitude * alpha
122 env_state%latitude = env_state%latitude * alpha
123 env_state%altitude = env_state%altitude * alpha
124 env_state%start_time = env_state%start_time * alpha
125 env_state%start_day = nint(real(env_state%start_day, kind=
dp) * alpha)
126 env_state%elapsed_time = env_state%elapsed_time * alpha
127 env_state%solar_zenith_angle = env_state%solar_zenith_angle * alpha
128 env_state%height = env_state%height * alpha
141 real(kind=
dp),
intent(in) :: dv
148 dmv = dv *
const%water_density
150 mv =
const%water_molec_weight / (
const%univ_gas_const*env_state%temp) * pmv
153 call warn_msg(980320483,
"relative humidity tried to go negative")
156 env_state%rel_humid =
const%univ_gas_const * env_state%temp &
157 /
const%water_molec_weight * mv &
171 * 10d0**(7.45d0 * (env_state%temp -
const%water_freeze_temp) &
172 / (env_state%temp - 38d0))
198 / (
const%univ_gas_const * env_state%temp)
213 real(kind=
dp),
parameter :: t_steam = 373.15
214 real(kind=
dp) :: a, water_vp
216 a = 1.0 - t_steam / env_state%temp
217 a = (((-0.1299 * a - 0.6445) * a - 1.976) * a + 13.3185) * a
218 water_vp = 101325.0 * exp(a)
233 / (
const%univ_gas_const * env_state%temp *
const%water_density)
245 real(kind=
dp),
intent(in) :: ppb
260 real(kind=
dp),
intent(in) :: conc
271 subroutine env_state_set_camp_env_state(env_state, camp_state)
276 type(camp_state_t),
intent(in) :: camp_state
279 camp_state%env_states(1)%val%rel_humid = env_state%rel_humid
280 camp_state%env_states(1)%val%temp = env_state%temp
283 end subroutine env_state_set_camp_env_state
289 subroutine spec_file_read_env_state(file, env_state)
333 end subroutine spec_file_read_env_state
349 val%temp = val_avg%temp
350 val%rel_humid = val_avg%rel_humid
351 val%pressure = val_avg%pressure
372 val%temp = val_avg%temp
373 val%rel_humid = val_avg%rel_humid
374 val%pressure = val_avg%pressure
423 character,
intent(inout) :: buffer(:)
425 integer,
intent(inout) :: position
430 integer :: prev_position
432 prev_position = position
470 character,
intent(inout) :: buffer(:)
472 integer,
intent(inout) :: position
477 integer :: prev_position
479 prev_position = position
498 val%prob_vert_diffusion)
533 subroutine env_state_output_netcdf(env_state, ncid)
538 integer,
intent(in) :: ncid
564 standard_name=
"air_temperature")
566 "relative_humidity", unit=
"1", standard_name=
"relative_humidity")
568 standard_name=
"air_pressure")
570 unit=
"degree_east", standard_name=
"longitude")
572 unit=
"degree_north", standard_name=
"latitude")
574 standard_name=
"altitude")
577 unit=
"m", standard_name=
"bottom_altitude")
579 unit=
"m", standard_name=
"top_altitude")
581 "inverse_density", unit=
"m3kg-1", standard_name=
"inverse_density")
583 unit=
"m3", standard_name=
"cell_volume")
585 description=
"east-west index of WRF domain")
587 description=
"north-south index of WRF domain")
589 description=
"top-bottom index of WRF domain")
591 unit=
"m2s-1", description=
"eddy diffusion coefficient")
594 "start_time_of_day", unit=
"s", description=
"time-of-day of " &
595 //
"simulation start in seconds since midnight")
597 "start_day_of_year", &
598 description=
"day-of-year number of simulation start")
600 unit=
"s", description=
"elapsed time since simulation start")
602 "solar_zenith_angle", unit=
"radian", &
603 description=
"current angle from the zenith to the sun")
605 long_name=
"boundary layer mixing height")
607 end subroutine env_state_output_netcdf
617 integer,
intent(in) :: ncid
641 "solar_zenith_angle")