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
43 real(kind=
dp) :: start_time
47 real(kind=
dp) :: elapsed_time
49 real(kind=
dp) :: solar_zenith_angle
51 real(kind=
dp) :: height
66 env_state%temp = env_state%temp + env_state_delta%temp
67 env_state%rel_humid = env_state%rel_humid + env_state_delta%rel_humid
68 env_state%pressure = env_state%pressure + env_state_delta%pressure
69 env_state%longitude = env_state%longitude + env_state_delta%longitude
70 env_state%latitude = env_state%latitude + env_state_delta%latitude
71 env_state%altitude = env_state%altitude + env_state_delta%altitude
72 env_state%start_time = env_state%start_time + env_state_delta%start_time
73 env_state%start_day = env_state%start_day + env_state_delta%start_day
74 env_state%elapsed_time = env_state%elapsed_time &
75 + env_state_delta%elapsed_time
76 env_state%solar_zenith_angle = env_state%solar_zenith_angle &
77 + env_state_delta%solar_zenith_angle
78 env_state%height = env_state%height + env_state_delta%height
90 real(kind=
dp),
intent(in) :: alpha
92 env_state%temp = env_state%temp * alpha
93 env_state%rel_humid = env_state%rel_humid * alpha
94 env_state%pressure = env_state%pressure * alpha
95 env_state%longitude = env_state%longitude * alpha
96 env_state%latitude = env_state%latitude * alpha
97 env_state%altitude = env_state%altitude * alpha
98 env_state%start_time = env_state%start_time * alpha
99 env_state%start_day = nint(real(env_state%start_day, kind=
dp) * alpha)
100 env_state%elapsed_time = env_state%elapsed_time * alpha
101 env_state%solar_zenith_angle = env_state%solar_zenith_angle * alpha
102 env_state%height = env_state%height * alpha
115 real(kind=
dp),
intent(in) :: dv
122 dmv = dv *
const%water_density
124 mv =
const%water_molec_weight / (
const%univ_gas_const*env_state%temp) * pmv
127 call warn_msg(980320483,
"relative humidity tried to go negative")
130 env_state%rel_humid =
const%univ_gas_const * env_state%temp &
131 /
const%water_molec_weight * mv &
145 * 10d0**(7.45d0 * (env_state%temp -
const%water_freeze_temp) &
146 / (env_state%temp - 38d0))
172 / (
const%univ_gas_const * env_state%temp)
185 / (
const%univ_gas_const * env_state%temp *
const%water_density)
197 real(kind=
dp),
intent(in) :: ppb
212 real(kind=
dp),
intent(in) :: conc
223 subroutine env_state_set_camp_env_state(env_state, camp_state)
228 type(camp_state_t),
intent(in) :: camp_state
231 camp_state%env_states(1)%val%rel_humid = env_state%rel_humid
232 camp_state%env_states(1)%val%temp = env_state%temp
235 end subroutine env_state_set_camp_env_state
241 subroutine spec_file_read_env_state(file, env_state)
285 end subroutine spec_file_read_env_state
301 val%temp = val_avg%temp
302 val%rel_humid = val_avg%rel_humid
303 val%pressure = val_avg%pressure
324 val%temp = val_avg%temp
325 val%rel_humid = val_avg%rel_humid
326 val%pressure = val_avg%pressure
361 character,
intent(inout) :: buffer(:)
363 integer,
intent(inout) :: position
368 integer :: prev_position
370 prev_position = position
394 character,
intent(inout) :: buffer(:)
396 integer,
intent(inout) :: position
401 integer :: prev_position
403 prev_position = position
442 subroutine env_state_output_netcdf(env_state, ncid)
447 integer,
intent(in) :: ncid
473 standard_name=
"air_temperature")
475 "relative_humidity", unit=
"1", standard_name=
"relative_humidity")
477 standard_name=
"air_pressure")
479 unit=
"degree_east", standard_name=
"longitude")
481 unit=
"degree_north", standard_name=
"latitude")
483 standard_name=
"altitude")
485 "start_time_of_day", unit=
"s", description=
"time-of-day of " &
486 //
"simulation start in seconds since midnight")
488 "start_day_of_year", &
489 description=
"day-of-year number of simulation start")
491 unit=
"s", description=
"elapsed time since simulation start")
493 "solar_zenith_angle", unit=
"radian", &
494 description=
"current angle from the zenith to the sun")
496 long_name=
"boundary layer mixing height")
498 end subroutine env_state_output_netcdf
508 integer,
intent(in) :: ncid
522 "solar_zenith_angle")