PartMC  2.6.1
Data Types | Functions/Subroutines | Variables
pmc_fractal Module Reference

The fractal_t structure and associated subroutines. More...

Data Types

type  fractal_t
 Fractal data. More...
 

Functions/Subroutines

subroutine fractal_set_spherical (fractal)
 Set fractal parameters for spherical particles. More...
 
real(kind=dp) elemental function fractal_vol_to_num_of_monomers (fractal, v)
 Convert mass-equivalent volume $V$ (m^3) to number of monomers $N$ in a fractal particle cluster. More...
 
real(kind=dp) elemental function fractal_vol2rad (fractal, v)
 Convert mass-equivalent volume $V$ (m^3) to geometric radius $R_{\rm geo}$ (m). More...
 
real(kind=dp) elemental function fractal_vol2diam (fractal, v)
 Convert mass-equivalent volume $V$ (m^3) to geometric diameter $D_{\rm geo}$ (m). More...
 
real(kind=dp) elemental function fractal_rad2vol (fractal, r)
 Convert geometric radius $R_{\rm geo}$ (m) to mass-equivalent volume $V$ (m^3). More...
 
real(kind=dp) elemental function fractal_diam2vol (fractal, d)
 Convert geometric diameter $D_{\rm geo}$ (m) to mass-equivalent volume $V$ (m^3). More...
 
real(kind=dp) function fractal_surface_frac_dim (fractal)
 Compute surface fractal dimension $d_{\rm s}$. More...
 
real(kind=dp) function fractal_vol_to_accessible_surface (fractal, v)
 Convert mass-equivalent volume $V$ (m^3) to accessible particle surface area $S_{\rm acc}$ (m^2). More...
 
real(kind=dp) function fractal_kirkwood_riseman (fractal)
 Kirkwood-Riseman ratio $h_{\rm KR}$. More...
 
real(kind=dp) function fractal_vol_to_mobility_rad_in_continuum (fractal, v)
 Convert mass-equivalent volume $V$ (m^3) to continuum regime mobility equivalent radius $R_{\rm me,c}$ (m). More...
 
real(kind=dp) function fractal_vol_to_effective_rad (fractal, v)
 Convert mass-equivalent volume $V$ (m^3) to particle effective radius $R_{\rm eff}$ (m). More...
 
real(kind=dp) function fractal_slip_correct (R_eff, temp, pressure)
 Slip correction function $C(R_eff)$ from continuum to free molecular regime. More...
 
elemental logical function fractal_is_spherical (fractal)
 Test whether a particle is spherical. More...
 
real(kind=dp) function fractal_vol_to_mobility_rad (fractal, v, temp, pressure)
 Convert mass-equivalent volume $V$ (m^3) to mobility equivalent radius $R_{\rm me}$ (m). More...
 
real(kind=dp) function fractal_mobility_rad_to_mobility_rad_in_continuum (fractal, mobility_rad, temp, pressure)
 Convert mobility equivalent radius $R_{\rm me}$ (m) to that in the continuum regime $R_{\rm me,c}$ (m). More...
 
real(kind=dp) function fractal_mobility_rad_to_geometric_rad (fractal, mobility_rad, temp, pressure)
 Convert mobility equivalent radius $R_{\rm me}$ (m) to geometric radius $R_{\rm geo}$ (m^3). More...
 
real(kind=dp) function fractal_mobility_rad_to_vol (fractal, mobility_rad, temp, pressure)
 Convert mobility equivalent radius $R_{\rm me}$ (m) to mass-equivalent volume $V$ (m^3). More...
 
integer function pmc_mpi_pack_size_fractal (val)
 Determines the number of bytes required to pack the given value. More...
 
subroutine pmc_mpi_pack_fractal (buffer, position, val)
 Packs the given value into the buffer, advancing position. More...
 
subroutine pmc_mpi_unpack_fractal (buffer, position, val)
 Unpacks the given value from the buffer, advancing position. More...
 
subroutine fractal_input_netcdf (fractal, ncid)
 Read full state. More...
 

Variables

real(kind=dp), parameter fractal_a_slip = 1.142d0
 Constant $A$ in slip correction equation in Eq. 22 of Naumann [2003]. More...
 
real(kind=dp), parameter fractal_q_slip = 0.588d0
 Constant $Q$ in slip correction equation in Eq. 22 of Naumann [2003]. More...
 
real(kind=dp), parameter fractal_b_slip = 0.999d0
 Constant $b$ in slip correction equation in Eq. 22 of Naumann [2003]. More...
 
real(kind=dp), parameter fractal_scale_factor_s_acc = 1d0
 Scaling factor $z$ in calculating accessible particle surface area in Eq. 26 of Naumann [2003]. More...
 
real(kind=dp), parameter fractal_scale_exponent_s_acc = 0.86d0
 Scaling exponent $\gamma$ in calculating accessible particle surface area in Eq. 26 of Naumann [2003]. More...
 

Detailed Description

The fractal_t structure and associated subroutines.

This module includes all the conversions of different radii and diameters to volume (and vice versa), such as geometric radius/diameter, mobility equivalent radius/diameter, etc. Here volume means the particle mass-equivalent volume (referred to "vol" in code). The mass-equivalent volume is the sum of the per-species volumes, which are in turn the per-species masses divided by the per-species densities in aero_data. Geometric radius (referred to "rad" in code) is defined as the radius of the closest convex envelop. This quantity provides the information about the collisional cross section which is required to calculate coagulation rates. Mobility equivalent radius (referred to "mobility_rad" in code) will be the same as geometric radius for spherical particles, but different for fractal particles. This is due to hydrodynamic interactions between the primary particles, which result in a decrease of the frictional forces acting upon the particles accompanied by an increase of the translational diffusion coefficient. Mobility equivalent radius is often used as output from experimental data such as SMPS measurements. We also use "mobility_rad_in_continuum" for the mobility equivalent radius in continuum regime.

All equations used in this file are obtained from K. -H. Naumann (2003) COSIMA - a computer program simulating the dynamics of fractal aerosols, Journal of Aerosol Science, 34(10), 1371-1397. The equations are written in detail in the file doc/fractal/fractal.tex.

Function/Subroutine Documentation

◆ fractal_diam2vol()

real(kind=dp) elemental function pmc_fractal::fractal_diam2vol ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  d 
)

Convert geometric diameter $D_{\rm geo}$ (m) to mass-equivalent volume $V$ (m^3).

Parameters
[in]fractalFractal parameters.
[in]dGeometric diameter (m).

Definition at line 163 of file fractal.F90.

◆ fractal_input_netcdf()

subroutine pmc_fractal::fractal_input_netcdf ( type(fractal_t), intent(inout)  fractal,
integer, intent(in)  ncid 
)

Read full state.

Parameters
[in,out]fractalFractal parameters to read.
[in]ncidNetCDF file ID, in data mode.

Definition at line 632 of file fractal.F90.

◆ fractal_is_spherical()

elemental logical function pmc_fractal::fractal_is_spherical ( type(fractal_t), intent(in)  fractal)

Test whether a particle is spherical.

Parameters
[in]fractalFractal parameters.

Definition at line 296 of file fractal.F90.

◆ fractal_kirkwood_riseman()

real(kind=dp) function pmc_fractal::fractal_kirkwood_riseman ( type(fractal_t), intent(in)  fractal)

Kirkwood-Riseman ratio $h_{\rm KR}$.

Based on Eq. 21 in Naumann [2003].

Parameters
[in]fractalFractal parameters.

Definition at line 223 of file fractal.F90.

◆ fractal_mobility_rad_to_geometric_rad()

real(kind=dp) function pmc_fractal::fractal_mobility_rad_to_geometric_rad ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  mobility_rad,
real(kind=dp), intent(in)  temp,
real(kind=dp), intent(in)  pressure 
)

Convert mobility equivalent radius $R_{\rm me}$ (m) to geometric radius $R_{\rm geo}$ (m^3).

Parameters
[in]fractalFractal parameters.
[in]mobility_radMobility equivalent radius (m).
[in]tempTemperature (K).
[in]pressurePressure (Pa).

Definition at line 434 of file fractal.F90.

◆ fractal_mobility_rad_to_mobility_rad_in_continuum()

real(kind=dp) function pmc_fractal::fractal_mobility_rad_to_mobility_rad_in_continuum ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  mobility_rad,
real(kind=dp), intent(in)  temp,
real(kind=dp), intent(in)  pressure 
)

Convert mobility equivalent radius $R_{\rm me}$ (m) to that in the continuum regime $R_{\rm me,c}$ (m).

Based on Eq. 30 in Naumann [2003].

Parameters
[in]fractalFractal parameters.
[in]mobility_radMobility equivalent radius (m).
[in]tempTemperature (K).
[in]pressurePressure (Pa).

Definition at line 370 of file fractal.F90.

◆ fractal_mobility_rad_to_vol()

real(kind=dp) function pmc_fractal::fractal_mobility_rad_to_vol ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  mobility_rad,
real(kind=dp), intent(in)  temp,
real(kind=dp), intent(in)  pressure 
)

Convert mobility equivalent radius $R_{\rm me}$ (m) to mass-equivalent volume $V$ (m^3).

Based on Eq. 5, 21 and 30 in Naumann [2003].

Parameters
[in]fractalFractal parameters.
[in]mobility_radMobility equivalent radius (m).
[in]tempTemperature (K).
[in]pressurePressure (Pa).

Definition at line 466 of file fractal.F90.

◆ fractal_rad2vol()

real(kind=dp) elemental function pmc_fractal::fractal_rad2vol ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  r 
)

Convert geometric radius $R_{\rm geo}$ (m) to mass-equivalent volume $V$ (m^3).

Parameters
[in]fractalFractal parameters.
[in]rGeometric radius (m).

Definition at line 142 of file fractal.F90.

◆ fractal_set_spherical()

subroutine pmc_fractal::fractal_set_spherical ( type(fractal_t), intent(out)  fractal)

Set fractal parameters for spherical particles.

Parameters
[out]fractalFractal parameters.

Definition at line 73 of file fractal.F90.

◆ fractal_slip_correct()

real(kind=dp) function pmc_fractal::fractal_slip_correct ( real(kind=dp), intent(in)  R_eff,
real(kind=dp), intent(in)  temp,
real(kind=dp), intent(in)  pressure 
)

Slip correction function $C(R_eff)$ from continuum to free molecular regime.

Based on Eq. 22 in Naumann [2003].

Parameters
[in]r_effEffective radius (m).
[in]tempTemperature (K).
[in]pressurePressure (Pa).

Definition at line 276 of file fractal.F90.

◆ fractal_surface_frac_dim()

real(kind=dp) function pmc_fractal::fractal_surface_frac_dim ( type(fractal_t), intent(in)  fractal)

Compute surface fractal dimension $d_{\rm s}$.

Parameters
[in]fractalFractal parameters.

Definition at line 177 of file fractal.F90.

◆ fractal_vol2diam()

real(kind=dp) elemental function pmc_fractal::fractal_vol2diam ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  v 
)

Convert mass-equivalent volume $V$ (m^3) to geometric diameter $D_{\rm geo}$ (m).

Parameters
[in]fractalFractal parameters.
[in]vParticle mass-equivalent volume (m^3).

Definition at line 127 of file fractal.F90.

◆ fractal_vol2rad()

real(kind=dp) elemental function pmc_fractal::fractal_vol2rad ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  v 
)

Convert mass-equivalent volume $V$ (m^3) to geometric radius $R_{\rm geo}$ (m).

Parameters
[in]fractalFractal parameters.
[in]vParticle mass-equivalent volume (m^3).

Definition at line 106 of file fractal.F90.

◆ fractal_vol_to_accessible_surface()

real(kind=dp) function pmc_fractal::fractal_vol_to_accessible_surface ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  v 
)

Convert mass-equivalent volume $V$ (m^3) to accessible particle surface area $S_{\rm acc}$ (m^2).

Based on Eq. 26 in Naumann [2003].

Parameters
[in]fractalFractal parameters.
[in]vParticle mass-equivalent volume (m^3)

Definition at line 199 of file fractal.F90.

◆ fractal_vol_to_effective_rad()

real(kind=dp) function pmc_fractal::fractal_vol_to_effective_rad ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  v 
)

Convert mass-equivalent volume $V$ (m^3) to particle effective radius $R_{\rm eff}$ (m).

Based on Eq. 28 in Naumann [2003].

Parameters
[in]fractalFractal parameters.
[in]vParticle mass-equivalent volume (m^3).

Definition at line 257 of file fractal.F90.

◆ fractal_vol_to_mobility_rad()

real(kind=dp) function pmc_fractal::fractal_vol_to_mobility_rad ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  v,
real(kind=dp), intent(in)  temp,
real(kind=dp), intent(in)  pressure 
)

Convert mass-equivalent volume $V$ (m^3) to mobility equivalent radius $R_{\rm me}$ (m).

Based on Eq. 5, 21 and 30 in Naumann [2003].

Parameters
[in]fractalFractal parameters.
[in]vParticle mass-equivalent volume (m^3).
[in]tempTemperature (K).
[in]pressurePressure (Pa).

Definition at line 315 of file fractal.F90.

◆ fractal_vol_to_mobility_rad_in_continuum()

real(kind=dp) function pmc_fractal::fractal_vol_to_mobility_rad_in_continuum ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  v 
)

Convert mass-equivalent volume $V$ (m^3) to continuum regime mobility equivalent radius $R_{\rm me,c}$ (m).

Based on Eq. 21 in Naumann [2003].

Parameters
[in]fractalFractal parameters.
[in]vParticle mass-equivalent volume (m^3).

Definition at line 239 of file fractal.F90.

◆ fractal_vol_to_num_of_monomers()

real(kind=dp) elemental function pmc_fractal::fractal_vol_to_num_of_monomers ( type(fractal_t), intent(in)  fractal,
real(kind=dp), intent(in)  v 
)

Convert mass-equivalent volume $V$ (m^3) to number of monomers $N$ in a fractal particle cluster.

Based on Eq. 5 in Naumann [2003].

Parameters
[in]fractalFractal parameters.
[in]vParticle mass-equivalent volume (m^3).

Definition at line 90 of file fractal.F90.

◆ pmc_mpi_pack_fractal()

subroutine pmc_fractal::pmc_mpi_pack_fractal ( character, dimension(:), intent(inout)  buffer,
integer, intent(inout)  position,
type(fractal_t), intent(in)  val 
)

Packs the given value into the buffer, advancing position.

Parameters
[in,out]bufferMemory buffer.
[in,out]positionCurrent buffer position.
[in]valValue to pack.

Definition at line 504 of file fractal.F90.

◆ pmc_mpi_pack_size_fractal()

integer function pmc_fractal::pmc_mpi_pack_size_fractal ( type(fractal_t), intent(in)  val)

Determines the number of bytes required to pack the given value.

Parameters
[in]valValue to pack.

Definition at line 489 of file fractal.F90.

◆ pmc_mpi_unpack_fractal()

subroutine pmc_fractal::pmc_mpi_unpack_fractal ( character, dimension(:), intent(inout)  buffer,
integer, intent(inout)  position,
type(fractal_t), intent(inout)  val 
)

Unpacks the given value from the buffer, advancing position.

Parameters
[in,out]bufferMemory buffer.
[in,out]positionCurrent buffer position.
[in,out]valValue to pack.

Definition at line 527 of file fractal.F90.

Variable Documentation

◆ fractal_a_slip

real(kind=dp), parameter pmc_fractal::fractal_a_slip = 1.142d0

Constant $A$ in slip correction equation in Eq. 22 of Naumann [2003].

Definition at line 43 of file fractal.F90.

◆ fractal_b_slip

real(kind=dp), parameter pmc_fractal::fractal_b_slip = 0.999d0

Constant $b$ in slip correction equation in Eq. 22 of Naumann [2003].

Definition at line 47 of file fractal.F90.

◆ fractal_q_slip

real(kind=dp), parameter pmc_fractal::fractal_q_slip = 0.588d0

Constant $Q$ in slip correction equation in Eq. 22 of Naumann [2003].

Definition at line 45 of file fractal.F90.

◆ fractal_scale_exponent_s_acc

real(kind=dp), parameter pmc_fractal::fractal_scale_exponent_s_acc = 0.86d0

Scaling exponent $\gamma$ in calculating accessible particle surface area in Eq. 26 of Naumann [2003].

Definition at line 53 of file fractal.F90.

◆ fractal_scale_factor_s_acc

real(kind=dp), parameter pmc_fractal::fractal_scale_factor_s_acc = 1d0

Scaling factor $z$ in calculating accessible particle surface area in Eq. 26 of Naumann [2003].

Definition at line 50 of file fractal.F90.