PartMC
2.2.0
|
The aero_particle_t structure and associated subroutines. More...
Data Types | |
type | aero_particle_t |
Single aerosol particle data structure. More... | |
Public Member Functions | |
subroutine | aero_particle_allocate (aero_particle) |
Allocates memory in an aero_particle_t. | |
subroutine | aero_particle_allocate_size (aero_particle, n_spec, n_source) |
Allocates an aero_particle_t of the given size. | |
subroutine | aero_particle_deallocate (aero_particle) |
Deallocates memory associated with an aero_particle_t. | |
subroutine | aero_particle_copy (aero_particle_from, aero_particle_to) |
Copies a particle. | |
subroutine | aero_particle_shift (aero_particle_from, aero_particle_to) |
Shift data from one aero_particle_t to another and free the first one. | |
subroutine | aero_particle_zero (aero_particle) |
Resets an aero_particle to be zero. | |
subroutine | aero_particle_new_id (aero_particle) |
Assigns a globally-unique new ID number to the particle. | |
subroutine | aero_particle_set_create_time (aero_particle, create_time) |
Sets the creation times for the particle. | |
subroutine | aero_particle_set_vols (aero_particle, vols) |
Sets the aerosol particle volumes. | |
subroutine | aero_particle_set_source (aero_particle, i_source) |
Sets the aerosol particle source. | |
subroutine | aero_particle_set_group (aero_particle, i_group) |
Sets the aerosol particle weight group. | |
elemental real(kind=dp) function | aero_particle_mass (aero_particle, aero_data) |
Total mass of the particle (kg). | |
elemental real(kind=dp) function | aero_particle_species_mass (aero_particle, i_spec, aero_data) |
Mass of a single species in the particle (kg). | |
elemental real(kind=dp) function | aero_particle_moles (aero_particle, aero_data) |
Total moles in the particle (1). | |
elemental real(kind=dp) function | aero_particle_volume (aero_particle) |
Total volume of the particle (m^3). | |
elemental real(kind=dp) function | aero_particle_dry_volume (aero_particle, aero_data) |
Total dry volume of the particle (m^3). | |
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). | |
elemental real(kind=dp) function | aero_particle_radius (aero_particle) |
Total radius of the particle (m). | |
elemental real(kind=dp) function | aero_particle_dry_radius (aero_particle, aero_data) |
Total dry radius of the particle (m). | |
elemental real(kind=dp) function | aero_particle_diameter (aero_particle) |
Total diameter of the particle (m). | |
elemental real(kind=dp) function | aero_particle_dry_diameter (aero_particle, aero_data) |
Total dry diameter of the particle (m). | |
real(kind=dp) function | aero_particle_density (aero_particle, aero_data) |
Average density of the particle (kg/m^3). | |
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. | |
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. | |
real(kind=dp) function | aero_particle_average_water_quantity (aero_particle, aero_data, quantity) |
Returns the water element of quantity. | |
real(kind=dp) function | aero_particle_total_water_quantity (aero_particle, aero_data, quantity) |
Returns the volume-total of the water element of quantity. | |
real(kind=dp) function | aero_particle_water_molec_weight (aero_data) |
Returns the water molecular weight. (kg/mole) | |
real(kind=dp) function | aero_particle_solute_molec_weight (aero_particle, aero_data) |
Returns the average of the solute molecular weight (kg/mole). | |
real(kind=dp) function | aero_particle_solute_num_ions (aero_particle, aero_data) |
Returns the average of the solute ion number (1). | |
real(kind=dp) function | aero_particle_water_density (aero_data) |
Returns the water density (kg/m^3). | |
real(kind=dp) function | aero_particle_solute_density (aero_particle, aero_data) |
Returns the average of the solute densities (kg/m^3). | |
real(kind=dp) function | aero_particle_water_mass (aero_particle, aero_data) |
Returns the water mass (kg). | |
real(kind=dp) function | aero_particle_solute_mass (aero_particle, aero_data) |
Returns the total solute mass (kg). | |
real(kind=dp) function | aero_particle_solute_volume (aero_particle, aero_data) |
Returns the total solute volume (m^3). | |
real(kind=dp) function | aero_particle_solute_radius (aero_particle, aero_data) |
Returns the total solute radius (m). | |
real(kind=dp) function | aero_particle_solute_kappa (aero_particle, aero_data) |
Returns the average of the solute kappas (1). | |
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. | |
integer function | pmc_mpi_pack_size_aero_particle (val) |
Determines the number of bytes required to pack the given value. | |
subroutine | pmc_mpi_pack_aero_particle (buffer, position, val) |
Packs the given value into the buffer, advancing position. | |
subroutine | pmc_mpi_unpack_aero_particle (buffer, position, val) |
Unpacks the given value from the buffer, advancing position. | |
Public Attributes | |
integer, save | next_id = 1 |
Next unique ID number to use for a particle. |
The aero_particle_t structure and associated subroutines.
Definition at line 9 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_allocate | ( | type(aero_particle_t), intent(out) | aero_particle | ) |
Allocates memory in an aero_particle_t.
[out] | aero_particle | Particle to init. |
Definition at line 63 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_allocate_size | ( | type(aero_particle_t), intent(out) | aero_particle, |
integer, intent(in) | n_spec, | ||
integer, intent(in) | n_source | ||
) |
Allocates an aero_particle_t of the given size.
[out] | aero_particle | Particle to init. |
[in] | n_spec | Number of species. |
[in] | n_source | Number of sources. |
Definition at line 77 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 453 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 502 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 724 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_copy | ( | type(aero_particle_t), intent(in) | aero_particle_from, |
type(aero_particle_t), intent(inout) | aero_particle_to | ||
) |
Copies a particle.
[in] | aero_particle_from | Reference particle. |
[in,out] | aero_particle_to | Destination particle (already alloced on entry). |
Definition at line 108 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_deallocate | ( | type(aero_particle_t), intent(inout) | aero_particle | ) |
Deallocates memory associated with an aero_particle_t.
[in,out] | aero_particle | Particle to free. |
Definition at line 95 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 438 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_diameter | ( | type(aero_particle_t), intent(in) | aero_particle | ) |
Total diameter of the particle (m).
[in] | aero_particle | Particle. |
Definition at line 410 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 422 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 394 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 337 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 278 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 310 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 208 of file aero_particle.F90.
elemental real(kind=dp) function pmc_aero_particle::aero_particle_radius | ( | type(aero_particle_t), intent(in) | aero_particle | ) |
Total radius of the particle (m).
[in] | aero_particle | Particle. |
Definition at line 382 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 221 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_set_group | ( | type(aero_particle_t), intent(inout) | aero_particle, |
integer, intent(in) | i_group | ||
) |
Sets the aerosol particle weight group.
[in,out] | aero_particle | Particle. |
[in] | i_group | Weight group number for the particle. |
Definition at line 264 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 250 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(size(aero_particle%vol)), intent(in) | vols | ||
) |
Sets the aerosol particle volumes.
[in,out] | aero_particle | Particle. |
[in] | vols | New volumes. |
Definition at line 236 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.
This is roughly equivalent to aero_particle_copy(from, to) followed by aero_particle_deallocate(from), but faster and with different memory allocation requirements.
[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 154 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 602 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 687 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 635 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 555 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 572 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_data | Aerosol data. |
[in] | aero_particle | Aerosol particle. |
Definition at line 671 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 651 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 292 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 476 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 520 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 325 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 360 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 589 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 619 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 541 of file aero_particle.F90.
subroutine pmc_aero_particle::aero_particle_zero | ( | type(aero_particle_t), intent(inout) | aero_particle | ) |
Resets an aero_particle to be zero.
[in,out] | aero_particle | Particle to zero. |
Definition at line 184 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 796 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 771 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 831 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 56 of file aero_particle.F90.