Data Types | Functions/Subroutines

pmc_aero_binned Module Reference

The aero_binned_t structure and associated subroutines. More...

Data Types

type  aero_binned_t
 Aerosol number and volume distributions stored per bin. More...

Functions/Subroutines

subroutine aero_binned_allocate (aero_binned)
 Allocate an aero_binned_t.
subroutine aero_binned_allocate_size (aero_binned, n_bin, n_spec)
 Allocate an aero_binned_t of the given size.
subroutine aero_binned_deallocate (aero_binned)
 Free internal memory in an aero_binned_t structure.
subroutine aero_binned_zero (aero_binned)
 Set all internal data in an aero_binned_t structure to zero.
subroutine aero_binned_add_particle_in_bin (aero_binned, bin_grid, bin, comp_vol, aero_particle)
 Update aero_binned_t structure for the addition of the given particle whose bin is also given.
subroutine aero_binned_add_particle (aero_binned, bin_grid, comp_vol, aero_particle)
 Update aero_binned_t structure for the addition of the given particle.
subroutine aero_binned_remove_particle_in_bin (aero_binned, bin_grid, bin, comp_vol, aero_particle)
 Update aero_binned_t structure for the removal of the given particle whose bin is also given.
subroutine aero_binned_remove_particle (aero_binned, bin_grid, comp_vol, aero_particle)
 Update the aero_binned_t structure for the removal of the given particle.
subroutine aero_binned_add (aero_binned, aero_binned_delta)
 Add two aero_binned_t structures together.
subroutine aero_binned_sub (aero_binned, aero_binned_delta)
 Subtract one aero_binned_t structure from another.
subroutine aero_binned_scale (aero_binned, alpha)
 Scale an aero_binned_t by a real number.
subroutine aero_binned_copy (aero_binned_from, aero_binned_to)
 Copy one aero_binned_t structure to another.
subroutine aero_binned_add_aero_dist (aero_binned, bin_grid, aero_data, aero_dist)
 Add an aero_dist_t to an aero_binned_t.
integer pmc_mpi_pack_size_aero_binned (val)
 Determine the number of bytes required to pack the structure.
subroutine pmc_mpi_pack_aero_binned (buffer, position, val)
 Pack the structure into the buffer and advance position.
subroutine pmc_mpi_unpack_aero_binned (buffer, position, val)
 Unpack the structure from the buffer and advance position.
subroutine pmc_mpi_reduce_avg_aero_binned (val, val_avg)
 Computes the average of the structure across all processes, storing the result on the root process.
subroutine aero_binned_output_netcdf (aero_binned, ncid, bin_grid, aero_data)
 Write full state.
subroutine aero_binned_input_netcdf (aero_binned, ncid, bin_grid, aero_data)
 Read full state.

Detailed Description

The aero_binned_t structure and associated subroutines.


Function/Subroutine Documentation

subroutine pmc_aero_binned::aero_binned_add ( type(aero_binned_t),intent(inout)  aero_binned,
type(aero_binned_t),intent(in)  aero_binned_delta 
)

Add two aero_binned_t structures together.

Symbolically does aero_binned = aero_binned + aero_binned_delta.

Parameters:
aero_binnedBase aero_binned_t structure that will be added to.
aero_binned_deltaStructure to add to aero_binned.
subroutine pmc_aero_binned::aero_binned_add_aero_dist ( type(aero_binned_t),intent(inout)  aero_binned,
type(bin_grid_t),intent(in)  bin_grid,
type(aero_data_t),intent(in)  aero_data,
type(aero_dist_t),intent(in)  aero_dist 
)

Add an aero_dist_t to an aero_binned_t.

Symbolically does aero_binned = aero_binned + aero_dist.

Parameters:
aero_binnedBase aero_binned_t structure to add to.
bin_gridBin grid.
aero_dataAerosol data.
aero_distThe aero_dist_t structure to add.
subroutine pmc_aero_binned::aero_binned_add_particle ( type(aero_binned_t),intent(inout)  aero_binned,
type(bin_grid_t),intent(in)  bin_grid,
real(kind=dp),intent(in)  comp_vol,
type(aero_particle_t),intent(in)  aero_particle 
)

Update aero_binned_t structure for the addition of the given particle.

If the correct bin for the particle is already known then it is cheaper to call aero_binned_add_particle_in_bin().

Parameters:
aero_binnedStructure to update with the new particle.
bin_gridBin grid.
comp_volComputational volume (m^3).
aero_particleParticle to add.
subroutine pmc_aero_binned::aero_binned_add_particle_in_bin ( type(aero_binned_t),intent(inout)  aero_binned,
type(bin_grid_t),intent(in)  bin_grid,
integer,intent(in)  bin,
real(kind=dp),intent(in)  comp_vol,
type(aero_particle_t),intent(in)  aero_particle 
)

Update aero_binned_t structure for the addition of the given particle whose bin is also given.

If the bin of the particle is not known the more expensive aero_binned_add_particle() can be used.

Parameters:
aero_binnedStructure to update with the new particle.
bin_gridBin grid.
binBin number that new particle is in (must be correct).
comp_volComputational volume (m^3).
aero_particleParticle to add.
subroutine pmc_aero_binned::aero_binned_allocate ( type(aero_binned_t),intent(out)  aero_binned )

Allocate an aero_binned_t.

Parameters:
aero_binnedStructure to be allocated.
subroutine pmc_aero_binned::aero_binned_allocate_size ( type(aero_binned_t),intent(out)  aero_binned,
integer,intent(in)  n_bin,
integer,intent(in)  n_spec 
)

Allocate an aero_binned_t of the given size.

Parameters:
aero_binnedStructure to be allocated.
n_binNumber of aerosol bins to allocate (typically bin_grid%n_bin).
n_specNumber of aerosol species to allocate (typically aero_data%n_spec).
subroutine pmc_aero_binned::aero_binned_copy ( type(aero_binned_t),intent(in)  aero_binned_from,
type(aero_binned_t),intent(inout)  aero_binned_to 
)

Copy one aero_binned_t structure to another.

Symbolically does aero_binned_to = aero_binned_from.

Parameters:
aero_binned_fromBase aero_binned_t structure to copy from.
aero_binned_toStructure to copy to.
subroutine pmc_aero_binned::aero_binned_deallocate ( type(aero_binned_t),intent(inout)  aero_binned )

Free internal memory in an aero_binned_t structure.

Parameters:
aero_binnedStructure to free.
subroutine pmc_aero_binned::aero_binned_input_netcdf ( type(aero_binned_t),intent(inout)  aero_binned,
integer,intent(in)  ncid,
type(bin_grid_t),intent(in)  bin_grid,
type(aero_data_t),intent(in)  aero_data 
)

Read full state.

Parameters:
aero_binnedAero_binned to write.
ncidNetCDF file ID, in data mode.
bin_gridbin_grid structure.
aero_dataaero_data structure.
subroutine pmc_aero_binned::aero_binned_output_netcdf ( type(aero_binned_t),intent(in)  aero_binned,
integer,intent(in)  ncid,
type(bin_grid_t),intent(in)  bin_grid,
type(aero_data_t),intent(in)  aero_data 
)

Write full state.

Parameters:
aero_binnedAero_binned to write.
ncidNetCDF file ID, in data mode.
bin_gridbin_grid structure.
aero_dataaero_data structure.
subroutine pmc_aero_binned::aero_binned_remove_particle ( type(aero_binned_t),intent(inout)  aero_binned,
type(bin_grid_t),intent(in)  bin_grid,
real(kind=dp),intent(in)  comp_vol,
type(aero_particle_t),intent(in)  aero_particle 
)

Update the aero_binned_t structure for the removal of the given particle.

If the correct bin for the particle is already known then it is cheaper to call aero_binned_remove_particle_in_bin().

Parameters:
aero_binnedStructure to remove the particle from.
bin_gridBin grid.
comp_volComputational volume (m^3).
aero_particleParticle to remove.
subroutine pmc_aero_binned::aero_binned_remove_particle_in_bin ( type(aero_binned_t),intent(inout)  aero_binned,
type(bin_grid_t),intent(in)  bin_grid,
integer,intent(in)  bin,
real(kind=dp),intent(in)  comp_vol,
type(aero_particle_t),intent(in)  aero_particle 
)

Update aero_binned_t structure for the removal of the given particle whose bin is also given.

If the bin of the particle is not known the more expensive aero_binned_remove_particle() can be used.

Parameters:
aero_binnedStructure to remove the particle from.
bin_gridBin grid.
binBin number of the aero_particle.
comp_volComputational volume (m^3).
aero_particleParticle to remove.
subroutine pmc_aero_binned::aero_binned_scale ( type(aero_binned_t),intent(inout)  aero_binned,
real(kind=dp),intent(in)  alpha 
)

Scale an aero_binned_t by a real number.

Symbolically does aero_binned = aero_binned * alpha.

Parameters:
aero_binnedBase aero_binned to scale.
alphaScale factor.
subroutine pmc_aero_binned::aero_binned_sub ( type(aero_binned_t),intent(inout)  aero_binned,
type(aero_binned_t),intent(in)  aero_binned_delta 
)

Subtract one aero_binned_t structure from another.

Symbolically does aero_binned = aero_binned - aero_binned_delta.

Parameters:
aero_binnedBase aero_binned_t structure that will be subtracted from.
aero_binned_deltaStructure to subtract from aero_binned.
subroutine pmc_aero_binned::aero_binned_zero ( type(aero_binned_t),intent(inout)  aero_binned )

Set all internal data in an aero_binned_t structure to zero.

Parameters:
aero_binnedStructure to zero.
subroutine pmc_aero_binned::pmc_mpi_pack_aero_binned ( character,dimension(:),intent(inout)  buffer,
integer,intent(inout)  position,
type(aero_binned_t),intent(in)  val 
)

Pack the structure into the buffer and advance position.

See pmc_mpi for usage details.

Parameters:
bufferMemory buffer.
positionCurrent buffer position.
valStructure to pack.
integer pmc_aero_binned::pmc_mpi_pack_size_aero_binned ( type(aero_binned_t),intent(in)  val )

Determine the number of bytes required to pack the structure.

See pmc_mpi for usage details.

Parameters:
valStructure to pack.
subroutine pmc_aero_binned::pmc_mpi_reduce_avg_aero_binned ( type(aero_binned_t),intent(in)  val,
type(aero_binned_t),intent(inout)  val_avg 
)

Computes the average of the structure across all processes, storing the result on the root process.

Parameters:
valPer-process value to average.
val_avgAveraged result (only valid on root process).
subroutine pmc_aero_binned::pmc_mpi_unpack_aero_binned ( character,dimension(:),intent(inout)  buffer,
integer,intent(inout)  position,
type(aero_binned_t),intent(inout)  val 
)

Unpack the structure from the buffer and advance position.

See pmc_mpi for usage details.

Parameters:
bufferMemory buffer.
positionCurrent buffer position.
valStructure to unpack into (must not be allocated).