PartMC
2.1.5
|
Aerosol particle coagulation. More...
Public Member Functions | |
subroutine | mc_coag (coag_kernel_type, bin_grid, env_state, aero_data, aero_weight, aero_state, del_t, k_max, tot_n_samp, tot_n_coag) |
Do coagulation for time del_t. | |
subroutine | compute_n_samp (ni, nj, same_bin, k_max, comp_vol, del_t, n_samp, accept_factor) |
Compute the number of samples required for the pair of bins. | |
subroutine | maybe_coag_pair (bin_grid, env_state, aero_data, aero_weight, aero_state, b1, b2, coag_kernel_type, accept_factor, did_coag) |
Choose a random pair for potential coagulation and test its probability of coagulation. If it happens, do the coagulation and update all structures. | |
subroutine | find_rand_pair (aero_state, b1, b2, s1, s2) |
Given bins b1 and b2, find a random pair of particles (b1, s1) and (b2, s2) that are not the same particle particle as each other. | |
subroutine | coagulate_weighting (particle_1, particle_2, particle_new, aero_data, aero_weight, remove_1, remove_2, create_new, id_1_lost, id_2_lost, aero_info_1, aero_info_2) |
Actually coagulate particle_1 and particle_2 to form particle_new and compute weighting effects, including which particles should be lost and which gained. | |
subroutine | coagulate (bin_grid, aero_data, aero_weight, aero_state, b1, s1, b2, s2) |
Join together particles (b1, s1) and (b2, s2), updating all particle and bin structures to reflect the change. |
Aerosol particle coagulation.
Definition at line 9 of file coagulation.F90.
subroutine pmc_coagulation::coagulate | ( | type(bin_grid_t), intent(in) | bin_grid, |
type(aero_data_t), intent(in) | aero_data, | ||
type(aero_weight_t), intent(in) | aero_weight, | ||
type(aero_state_t), intent(inout) | aero_state, | ||
integer, intent(in) | b1, | ||
integer, intent(in) | s1, | ||
integer, intent(in) | b2, | ||
integer, intent(in) | s2 | ||
) |
Join together particles (b1, s1) and (b2, s2), updating all particle and bin structures to reflect the change.
[in] | bin_grid | Bin grid. |
[in] | aero_data | Aerosol data. |
[in] | aero_weight | Aerosol weight. |
[in,out] | aero_state | Aerosol state. |
[in] | b1 | First particle (bin number). |
[in] | s1 | First particle (number in bin). |
[in] | b2 | Second particle (bin number). |
[in] | s2 | Second particle (number in bin). |
Definition at line 362 of file coagulation.F90.
subroutine pmc_coagulation::coagulate_weighting | ( | type(aero_particle_t), intent(in) | particle_1, |
type(aero_particle_t), intent(in) | particle_2, | ||
type(aero_particle_t), intent(inout) | particle_new, | ||
type(aero_data_t), intent(in) | aero_data, | ||
type(aero_weight_t), intent(in) | aero_weight, | ||
logical, intent(out) | remove_1, | ||
logical, intent(out) | remove_2, | ||
logical, intent(out) | create_new, | ||
logical, intent(out) | id_1_lost, | ||
logical, intent(out) | id_2_lost, | ||
type(aero_info_t), intent(inout) | aero_info_1, | ||
type(aero_info_t), intent(inout) | aero_info_2 | ||
) |
Actually coagulate particle_1 and particle_2 to form particle_new and compute weighting effects, including which particles should be lost and which gained.
[in] | particle_1 | First coagulating aerosol particle. |
[in] | particle_2 | Second coagulating aerosol particle. |
[in,out] | particle_new | Combined aerosol particle resulting from coagulation of particle_1 and particle_2. |
[in] | aero_data | Aerosol data. |
[in] | aero_weight | Aerosol weight. |
[out] | remove_1 | Whether to remove particle_1. |
[out] | remove_2 | Whether to remove particle_2. |
[out] | create_new | Whether to create particle_new. |
[out] | id_1_lost | Whether the ID of particle_1 will be lost due to coagulation. |
[out] | id_2_lost | Whether the ID of particle_2 will be lost due to coagulation. |
[in,out] | aero_info_1 | The removal information associated with particle_1. |
[in,out] | aero_info_2 | The removal information associated with particle_2. |
Definition at line 240 of file coagulation.F90.
subroutine pmc_coagulation::compute_n_samp | ( | integer, intent(in) | ni, |
integer, intent(in) | nj, | ||
logical, intent(in) | same_bin, | ||
real(kind=dp), intent(in) | k_max, | ||
real(kind=dp), intent(in) | comp_vol, | ||
real(kind=dp), intent(in) | del_t, | ||
integer, intent(out) | n_samp, | ||
real(kind=dp), intent(out) | accept_factor | ||
) |
Compute the number of samples required for the pair of bins.
[in] | ni | Number particles in first bin. |
[in] | nj | Number particles in second bin. |
[in] | same_bin | Whether first bin is second bin. |
[in] | k_max | Maximum kernel value (s^{-1}). |
[in] | comp_vol | Computational volume (m^3). |
[in] | del_t | Timestep (s). |
[out] | n_samp | Number of samples per timestep. |
[out] | accept_factor | Scale factor for accept probability (1). |
Definition at line 84 of file coagulation.F90.
subroutine pmc_coagulation::find_rand_pair | ( | type(aero_state_t), intent(in) | aero_state, |
integer, intent(in) | b1, | ||
integer, intent(in) | b2, | ||
integer, intent(out) | s1, | ||
integer, intent(out) | s2 | ||
) |
Given bins b1 and b2, find a random pair of particles (b1, s1) and (b2, s2) that are not the same particle particle as each other.
[in] | aero_state | Aerosol state. |
[in] | b1 | Bin number of first particle. |
[in] | b2 | Bin number of second particle. |
[out] | s1 | First rand particle. |
[out] | s2 | Second rand particle. |
Definition at line 203 of file coagulation.F90.
subroutine pmc_coagulation::maybe_coag_pair | ( | type(bin_grid_t), intent(in) | bin_grid, |
type(env_state_t), intent(in) | env_state, | ||
type(aero_data_t), intent(in) | aero_data, | ||
type(aero_weight_t), intent(in) | aero_weight, | ||
type(aero_state_t), intent(inout) | aero_state, | ||
integer, intent(in) | b1, | ||
integer, intent(in) | b2, | ||
integer, intent(in) | coag_kernel_type, | ||
real(kind=dp), intent(in) | accept_factor, | ||
logical, intent(out) | did_coag | ||
) |
Choose a random pair for potential coagulation and test its probability of coagulation. If it happens, do the coagulation and update all structures.
The probability of a coagulation will be taken as (kernel / k_max)
.
[in] | bin_grid | Bin grid. |
[in] | env_state | Environment state. |
[in] | aero_data | Aerosol data. |
[in] | aero_weight | Aerosol weight. |
[in,out] | aero_state | Aerosol state. |
[in] | b1 | Bin of first particle. |
[in] | b2 | Bin of second particle. |
[in] | coag_kernel_type | Coagulation kernel type. |
[in] | accept_factor | Scale factor for accept probability (1). |
[out] | did_coag | Whether a coagulation occured. |
Definition at line 149 of file coagulation.F90.
subroutine pmc_coagulation::mc_coag | ( | integer, intent(in) | coag_kernel_type, |
type(bin_grid_t), intent(in) | bin_grid, | ||
type(env_state_t), intent(in) | env_state, | ||
type(aero_data_t), intent(in) | aero_data, | ||
type(aero_weight_t), intent(in) | aero_weight, | ||
type(aero_state_t), intent(inout) | aero_state, | ||
real(kind=dp) | del_t, | ||
real(kind=dp), dimension(bin_grid%n_bin,bin_grid%n_bin), intent(in) | k_max, | ||
integer, intent(out) | tot_n_samp, | ||
integer, intent(out) | tot_n_coag | ||
) |
Do coagulation for time del_t.
[in] | coag_kernel_type | Coagulation kernel type. |
[in] | bin_grid | Bin grid. |
[in] | env_state | Environment state. |
[in] | aero_data | Aerosol data. |
[in] | aero_weight | Aerosol weight. |
[in,out] | aero_state | Aerosol state. |
del_t | Timestep for coagulation. | |
[in] | k_max | Maximum kernel. |
[out] | tot_n_samp | Total number of samples tested. |
[out] | tot_n_coag | Number of coagulation events. |
Definition at line 28 of file coagulation.F90.