PartMC
2.6.1
|
The aero_particle_t structure and associated subroutines. More...
Data Types | |
type | aero_particle_t |
Single aerosol particle data structure. More... | |
Functions/Subroutines | |
subroutine | aero_particle_shift (aero_particle_from, aero_particle_to) |
Shift data from one aero_particle_t to another and free the first one. More... | |
subroutine | aero_particle_zero (aero_particle, aero_data) |
Resets an aero_particle to be zero. More... | |
subroutine | aero_particle_new_id (aero_particle) |
Assigns a globally-unique new ID number to the particle. More... | |
subroutine | aero_particle_set_create_time (aero_particle, create_time) |
Sets the creation times for the particle. More... | |
subroutine | aero_particle_set_vols (aero_particle, vols) |
Sets the aerosol particle volumes. More... | |
subroutine | aero_particle_set_source (aero_particle, i_source) |
Sets the aerosol particle source. More... | |
subroutine | aero_particle_set_weight (aero_particle, i_group, i_class) |
Sets the aerosol particle weight group. More... | |
elemental real(kind=dp) function | aero_particle_mass (aero_particle, aero_data) |
Total mass of the particle (kg). More... | |
elemental real(kind=dp) function | aero_particle_species_mass (aero_particle, i_spec, aero_data) |
Mass of a single species in the particle (kg). More... | |
real(kind=dp) function, dimension(aero_data_n_spec(aero_data)) | aero_particle_species_masses (aero_particle, aero_data) |
Mass of all species in the particle (kg). More... | |
elemental real(kind=dp) function | aero_particle_moles (aero_particle, aero_data) |
Total moles in the particle (1). More... | |
elemental real(kind=dp) function | aero_particle_volume (aero_particle) |
Total volume of the particle (m^3). More... | |
elemental real(kind=dp) function | aero_particle_species_volume (aero_particle, i_spec) |
Volume of a single species in the particle (m^3). More... | |
elemental real(kind=dp) function | aero_particle_dry_volume (aero_particle, aero_data) |
Total dry volume of the particle (m^3). More... | |
elemental real(kind=dp) function | aero_particle_volume_maybe_dry (aero_particle, aero_data, dry_volume) |
Total volume (dry or wet) of the particle (m^3). More... | |
elemental real(kind=dp) function | aero_particle_radius (aero_particle, aero_data) |
Total radius of the particle (m). More... | |
elemental real(kind=dp) function | aero_particle_dry_radius (aero_particle, aero_data) |
Total dry radius of the particle (m). More... | |
elemental real(kind=dp) function | aero_particle_diameter (aero_particle, aero_data) |
Total diameter of the particle (m). More... | |
elemental real(kind=dp) function | aero_particle_dry_diameter (aero_particle, aero_data) |
Total dry diameter of the particle (m). More... | |
real(kind=dp) function | aero_particle_mobility_diameter (aero_particle, aero_data, env_state) |
Mobility diameter of the particle (m). More... | |
real(kind=dp) function | aero_particle_density (aero_particle, aero_data) |
Average density of the particle (kg/m^3). More... | |
real(kind=dp) function | aero_particle_average_solute_quantity (aero_particle, aero_data, quantity) |
Returns the volume-average of the non-water elements of quantity. More... | |
real(kind=dp) function | aero_particle_total_solute_quantity (aero_particle, aero_data, quantity) |
Returns the volume-total of the non-water elements of quantity. More... | |
real(kind=dp) function | aero_particle_average_water_quantity (aero_particle, aero_data, quantity) |
Returns the water element of quantity. More... | |
real(kind=dp) function | aero_particle_total_water_quantity (aero_particle, aero_data, quantity) |
Returns the volume-total of the water element of quantity. More... | |
real(kind=dp) function | aero_particle_water_molec_weight (aero_data) |
Returns the water molecular weight. (kg/mole) More... | |
real(kind=dp) function | aero_particle_solute_molec_weight (aero_particle, aero_data) |
Returns the average of the solute molecular weight (kg/mole). More... | |
real(kind=dp) function | aero_particle_solute_num_ions (aero_particle, aero_data) |
Returns the average of the solute ion number (1). More... | |
real(kind=dp) function | aero_particle_water_density (aero_data) |
Returns the water density (kg/m^3). More... | |
real(kind=dp) function | aero_particle_solute_density (aero_particle, aero_data) |
Returns the average of the solute densities (kg/m^3). More... | |
real(kind=dp) function | aero_particle_water_mass (aero_particle, aero_data) |
Returns the water mass (kg). More... | |
real(kind=dp) function | aero_particle_solute_mass (aero_particle, aero_data) |
Returns the total solute mass (kg). More... | |
real(kind=dp) function | aero_particle_solute_volume (aero_particle, aero_data) |
Returns the total solute volume (m^3). More... | |
real(kind=dp) function | aero_particle_solute_radius (aero_particle, aero_data) |
Returns the total solute radius (m). More... | |
real(kind=dp) function | aero_particle_solute_kappa (aero_particle, aero_data) |
Returns the average of the solute kappas (1). More... | |
real(kind=dp) function | aero_particle_approx_crit_rel_humid (aero_particle, aero_data, env_state) |
Returns the approximate critical relative humidity (1). More... | |
real(kind=dp) function | aero_particle_crit_rel_humid (aero_particle, aero_data, env_state) |
Returns the critical relative humidity (1). More... | |
real(kind=dp) function | aero_particle_crit_diameter (aero_particle, aero_data, env_state) |
Returns the critical diameter (m). More... | |
subroutine | aero_particle_coagulate (aero_particle_1, aero_particle_2, aero_particle_new) |
Coagulate two particles together to make a new one. The new particle will not have its ID set. More... | |
integer function | pmc_mpi_pack_size_aero_particle (val) |
Determines the number of bytes required to pack the given value. More... | |
subroutine | pmc_mpi_pack_aero_particle (buffer, position, val) |
Packs the given value into the buffer, advancing position. More... | |
subroutine | pmc_mpi_unpack_aero_particle (buffer, position, val) |
Unpacks the given value from the buffer, advancing position. More... | |
subroutine | aero_particle_check (aero_particle, aero_data, continue_on_error) |
Check that the particle data is consistent. More... | |
Variables | |
integer, save | next_id = 1 |
Next unique ID number to use for a particle. More... | |
The aero_particle_t structure and associated subroutines.
real(kind=dp) function pmc_aero_particle::aero_particle_approx_crit_rel_humid | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
type(env_state_t), intent(in) | env_state | ||
) |
Returns the approximate critical relative humidity (1).
[in] | aero_particle | Aerosol particle. |
[in] | aero_data | Aerosol data. |
[in] | env_state | Environment state. |
Definition at line 709 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_average_solute_quantity | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
real(kind=dp), dimension(:), intent(in) | quantity | ||
) |
Returns the volume-average of the non-water elements of quantity.
[in] | aero_particle | Aerosol particle. |
[in] | aero_data | Aerosol data. |
[in] | quantity | Quantity to average. |
Definition at line 438 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_average_water_quantity | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
real(kind=dp), dimension(:), intent(in) | quantity | ||
) |
Returns the water element of quantity.
[in] | aero_particle | Aerosol particle. |
[in] | aero_data | Aerosol data. |
[in] | quantity | Quantity to average. |
Definition at line 487 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_check | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
logical, intent(in) | continue_on_error | ||
) |
Check that the particle data is consistent.
[in] | aero_particle | Aerosol particle to check. |
[in] | aero_data | Aerosol data. |
[in] | continue_on_error | Whether to continue despite error. |
Definition at line 991 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_coagulate | ( | type(aero_particle_t), intent(in) | aero_particle_1, |
type(aero_particle_t), intent(in) | aero_particle_2, | ||
type(aero_particle_t), intent(inout) | aero_particle_new | ||
) |
Coagulate two particles together to make a new one. The new particle will not have its ID set.
[in] | aero_particle_1 | First particle. |
[in] | aero_particle_2 | Second particle. |
[in,out] | aero_particle_new | Result particle. |
Definition at line 849 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_crit_diameter | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
type(env_state_t), intent(in) | env_state | ||
) |
Returns the critical diameter (m).
The method is as follows. We need to solve the polynomial equation given in Eq. (7) of
N. Riemer, M. West, R. Zaveri, D. Easter, "Estimating black carbon aging time-scales with a particle-resolved aerosol model", Aerosol Science 41, 143-158, 2010.
This is the equation:
where , , and . There is unique solution for , as shown in the above paper.
The polynomial has first derivative which factors like
The first term is positive for and the second is positive for . If we take
then we have that for . Similarly,
so for (as this ensures that and ).
Thus for $D > D_0$ we have that the first and second derivatives of $f(D)$ are positive, so Newton's method starting from will converge quadratically. This is the scheme used here.
[in] | aero_particle | Aerosol particle. |
[in] | aero_data | Aerosol data. |
[in] | env_state | Environment state. |
Definition at line 798 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_crit_rel_humid | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
type(env_state_t), intent(in) | env_state | ||
) |
Returns the critical relative humidity (1).
[in] | aero_particle | Aerosol particle. |
[in] | aero_data | Aerosol data. |
[in] | env_state | Environment state. |
Definition at line 731 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_density | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Average density of the particle (kg/m^3).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
Definition at line 423 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_diameter | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Total diameter of the particle (m).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
Definition at line 369 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_dry_diameter | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Total dry diameter of the particle (m).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
Definition at line 385 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_dry_radius | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Total dry radius of the particle (m).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
Definition at line 353 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_dry_volume | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Total dry volume of the particle (m^3).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
Definition at line 292 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_mass | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Total mass of the particle (kg).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
Definition at line 201 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_mobility_diameter | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
type(env_state_t), intent(in) | env_state | ||
) |
Mobility diameter of the particle (m).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
[in] | env_state | Environment state. |
Definition at line 401 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_moles | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Total moles in the particle (1).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
Definition at line 249 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_new_id | ( | type(aero_particle_t), intent(inout) | aero_particle | ) |
Assigns a globally-unique new ID number to the particle.
[in,out] | aero_particle | Particle to set ID for. |
Definition at line 127 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_radius | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Total radius of the particle (m).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
Definition at line 337 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_set_create_time | ( | type(aero_particle_t), intent(inout) | aero_particle, |
real(kind=dp), intent(in) | create_time | ||
) |
Sets the creation times for the particle.
[in,out] | aero_particle | Particle to set time for. |
[in] | create_time | Creation time. |
Definition at line 140 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_set_source | ( | type(aero_particle_t), intent(inout) | aero_particle, |
integer, intent(in) | i_source | ||
) |
Sets the aerosol particle source.
[in,out] | aero_particle | Particle. |
[in] | i_source | Source number for the particle. |
Definition at line 169 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_set_vols | ( | type(aero_particle_t), intent(inout) | aero_particle, |
real(kind=dp), dimension(:), intent(in) | vols | ||
) |
Sets the aerosol particle volumes.
[in,out] | aero_particle | Particle. |
[in] | vols | New volumes. |
Definition at line 155 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_set_weight | ( | type(aero_particle_t), intent(inout) | aero_particle, |
integer, intent(in), optional | i_group, | ||
integer, intent(in), optional | i_class | ||
) |
Sets the aerosol particle weight group.
[in,out] | aero_particle | Particle. |
[in] | i_group | Weight group number for the particle. |
[in] | i_class | Weight class number for the particle. |
Definition at line 184 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_shift | ( | type(aero_particle_t), intent(inout) | aero_particle_from, |
type(aero_particle_t), intent(inout) | aero_particle_to | ||
) |
Shift data from one aero_particle_t to another and free the first one.
[in,out] | aero_particle_from | Reference particle (will be deallocated on return). |
[in,out] | aero_particle_to | Destination particle (not allocated on entry). |
Definition at line 67 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_solute_density | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Returns the average of the solute densities (kg/m^3).
[in] | aero_data | Aerosol data. |
[in] | aero_particle | Aerosol particle. |
Definition at line 587 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_solute_kappa | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Returns the average of the solute kappas (1).
[in] | aero_data | Aerosol data. |
[in] | aero_particle | Aerosol particle. |
Definition at line 673 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_solute_mass | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Returns the total solute mass (kg).
[in] | aero_data | Aerosol data. |
[in] | aero_particle | Aerosol particle. |
Definition at line 620 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_solute_molec_weight | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Returns the average of the solute molecular weight (kg/mole).
[in] | aero_particle | Aerosol particle. |
[in] | aero_data | Aerosol data. |
Definition at line 540 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_solute_num_ions | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Returns the average of the solute ion number (1).
[in] | aero_data | Aerosol data. |
[in] | aero_particle | Aerosol particle. |
Definition at line 557 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_solute_radius | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Returns the total solute radius (m).
[in] | aero_particle | Aerosol particle. |
[in] | aero_data | Aerosol data. |
Definition at line 656 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_solute_volume | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Returns the total solute volume (m^3).
[in] | aero_data | Aerosol data. |
[in] | aero_particle | Aerosol particle. |
Definition at line 636 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_species_mass | ( | type(aero_particle_t), intent(in) | aero_particle, |
integer, intent(in) | i_spec, | ||
type(aero_data_t), intent(in) | aero_data | ||
) |
Mass of a single species in the particle (kg).
[in] | aero_particle | Particle. |
[in] | i_spec | Species number to find mass of. |
[in] | aero_data | Aerosol data. |
Definition at line 215 of file aero_particle.F90.
real(kind=dp) function, dimension(aero_data_n_spec(aero_data)) pmc_aero_particle::aero_particle_species_masses | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Mass of all species in the particle (kg).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
Definition at line 233 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_species_volume | ( | type(aero_particle_t), intent(in) | aero_particle, |
integer, intent(in) | i_spec | ||
) |
Volume of a single species in the particle (m^3).
[in] | aero_particle | Particle. |
[in] | i_spec | Species number to find volume of. |
Definition at line 277 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_total_solute_quantity | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
real(kind=dp), dimension(:), intent(in) | quantity | ||
) |
Returns the volume-total of the non-water elements of quantity.
[in] | aero_particle | Aerosol particle. |
[in] | aero_data | Aerosol data. |
[in] | quantity | Quantity to total. |
Definition at line 461 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_total_water_quantity | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
real(kind=dp), dimension(:), intent(in) | quantity | ||
) |
Returns the volume-total of the water element of quantity.
[in] | aero_particle | Aerosol particle. |
[in] | aero_data | Aerosol data. |
[in] | quantity | Quantity to total. |
Definition at line 505 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_volume | ( | type(aero_particle_t), intent(in) | aero_particle | ) |
Total volume of the particle (m^3).
[in] | aero_particle | Particle. |
Definition at line 265 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_volume_maybe_dry | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data, | ||
logical, intent(in) | dry_volume | ||
) |
Total volume (dry or wet) of the particle (m^3).
[in] | aero_particle | Particle. |
[in] | aero_data | Aerosol data. |
[in] | dry_volume | Whether the desired volume is dry (otherwise wet). |
Definition at line 315 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_water_density | ( | type(aero_data_t), intent(in) | aero_data | ) |
Returns the water density (kg/m^3).
[in] | aero_data | Aerosol data. |
Definition at line 574 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_water_mass | ( | type(aero_particle_t), intent(in) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Returns the water mass (kg).
[in] | aero_data | Aerosol data. |
[in] | aero_particle | Aerosol particle. |
Definition at line 604 of file aero_particle.F90.
real(kind=dp) function pmc_aero_particle::aero_particle_water_molec_weight | ( | type(aero_data_t), intent(in) | aero_data | ) |
Returns the water molecular weight. (kg/mole)
[in] | aero_data | Aerosol data. |
Definition at line 526 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_zero | ( | type(aero_particle_t), intent(inout) | aero_particle, |
type(aero_data_t), intent(in) | aero_data | ||
) |
Resets an aero_particle to be zero.
[in,out] | aero_particle | Particle to zero. |
[in] | aero_data | Aerosol data. |
Definition at line 97 of file aero_particle.F90.
subroutine pmc_aero_particle::pmc_mpi_pack_aero_particle | ( | character, dimension(:), intent(inout) | buffer, |
integer, intent(inout) | position, | ||
type(aero_particle_t), intent(in) | val | ||
) |
Packs the given value into the buffer, advancing position.
[in,out] | buffer | Memory buffer. |
[in,out] | position | Current buffer position. |
[in] | val | Value to pack. |
Definition at line 919 of file aero_particle.F90.
integer function pmc_aero_particle::pmc_mpi_pack_size_aero_particle | ( | type(aero_particle_t), intent(in) | val | ) |
Determines the number of bytes required to pack the given value.
[in] | val | Value to pack. |
Definition at line 893 of file aero_particle.F90.
subroutine pmc_aero_particle::pmc_mpi_unpack_aero_particle | ( | character, dimension(:), intent(inout) | buffer, |
integer, intent(inout) | position, | ||
type(aero_particle_t), intent(inout) | val | ||
) |
Unpacks the given value from the buffer, advancing position.
[in,out] | buffer | Memory buffer. |
[in,out] | position | Current buffer position. |
[in,out] | val | Value to pack. |
Definition at line 955 of file aero_particle.F90.
integer, save pmc_aero_particle::next_id = 1 |
Next unique ID number to use for a particle.
Definition at line 59 of file aero_particle.F90.