Go to the documentation of this file.
30 aero_data, env_state, k)
41 real(kind=
dp),
intent(out) :: k
53 real(kind=
dp),
intent(in) :: v1
55 real(kind=
dp),
intent(in) :: v2
61 real(kind=
dp),
intent(out) :: k_min
63 real(kind=
dp),
intent(out) :: k_max
105 subroutine soln_zero(bin_grid, aero_data, time, aero_dist_init, &
106 scenario, env_state, aero_binned)
113 real(kind=
dp),
intent(in) :: time
124 real(kind=
dp) :: emission_rate_scale, dilution_rate, p
125 real(kind=
dp),
allocatable :: loss_array(:)
129 logical,
save :: already_warned_water = .false.
137 scenario%aero_emission_time, scenario%aero_emission_rate_scale, &
138 env_state%elapsed_time, emissions, emission_rate_scale)
140 scenario%aero_dilution_time, scenario%aero_dilution_rate, 0d0, &
141 background, dilution_rate)
145 if (dilution_rate == 0d0 .and. &
151 emission_rate_scale * time / env_state%height)
156 if (aero_data%name(1) /=
"H2O")
then
158 "exact solution assumes composition is water", &
159 already_warned_water)
166 const%water_density, aero_data, env_state)
167 call assert_msg(181676342, loss_array(i) > 0, &
168 "non-positive loss rate")
169 loss_array(i) = 1d0 / loss_array(i)
176 aero_data, emissions)
178 emission_rate_scale / env_state%height)
184 loss_array(i) = exp(-time / loss_array(i))
Single aerosol particle data structure.
elemental integer function aero_data_n_spec(aero_data)
Return the number of aerosol species, or -1 if uninitialized.
subroutine aero_binned_set_sizes(aero_binned, n_bin, n_spec)
Set the number of bins and species in an aero_binned_t.
real(kind=dp) function scenario_loss_rate(scenario, vol, density, aero_data, env_state)
Evaluate a loss rate function.
subroutine kernel_zero_minmax(v1, v2, aero_data, env_state, k_min, k_max)
Minimum and maximum of the zero coagulation kernel.
The aero_particle_t structure and associated subroutines.
The scenario_t structure and associated subroutines.
subroutine aero_binned_add(aero_binned, aero_binned_delta)
Add two aero_binned_t structures together.
integer, parameter scenario_loss_function_none
Type code for a zero loss function.
integer, parameter dp
Kind of a double precision real number.
subroutine aero_dist_interp_1d(aero_dist_list, time_list, rate_list, time, aero_dist, rate)
Determine the current aero_dist and rate by interpolating at the current time with the lists of aero_...
subroutine soln_zero(bin_grid, aero_data, time, aero_dist_init, scenario, env_state, aero_binned)
Exact solution with the zero coagulation kernel. Only useful for testing emissions,...
elemental integer function bin_grid_size(bin_grid)
Return the number of bins in the grid, or -1 if the bin grid is not allocated.
Current environment state.
subroutine aero_binned_add_aero_dist(aero_binned, bin_grid, aero_data, aero_dist)
Add an aero_dist_t to an aero_binned_t.
subroutine warn_msg(code, warning_msg, already_warned)
Prints a warning message.
subroutine aero_binned_scale_by_array(aero_binned, alpha_array)
Scales an aero_binned_t element-wise by an array of reals.
subroutine assert_msg(code, condition_ok, error_msg)
Errors unless condition_ok is true.
The aero_dist_t structure and associated subroutines.
Constant kernel equal to zero.
type(const_t), save const
Fixed variable for accessing the constant's values.
subroutine aero_binned_sub(aero_binned, aero_binned_delta)
Subtract one aero_binned_t structure from another.
The env_state_t structure and associated subroutines.
Aerosol material properties and associated data.
A complete aerosol distribution, consisting of several modes.
Common utility subroutines.
subroutine aero_binned_scale(aero_binned, alpha)
Scale an aero_binned_t by a real number.
subroutine aero_binned_zero(aero_binned)
Set all internal data in an aero_binned_t structure to zero.
The aero_binned_t structure and associated subroutines.
Aerosol number and volume distributions stored per bin.
The bin_grid_t structure and associated subroutines.
real(kind=dp) elemental function aero_data_rad2vol(aero_data, r)
Convert geometric radius (m) to mass-equivalent volume (m^3).
The aero_data_t structure and associated subroutines.
1D grid, either logarithmic or linear.
subroutine kernel_zero(aero_particle_1, aero_particle_2, aero_data, env_state, k)
Zero coagulation kernel.