Utilities#

AerosolProperty#

enum class miam::AerosolProperty#

Aerosol/cloud particle properties that representations can provide.

Values:

enumerator EffectiveRadius#
enumerator NumberConcentration#
enumerator PhaseVolumeFraction#

AerosolPropertyProvider#

template<typename DenseMatrixPolicy>
struct AerosolPropertyProvider#

A provider for a single aerosol property, created at setup time by a representation instance.

Captures all needed parameter/variable column indices internally. Operates on ForEachRow-compatible column views — no per-cell indexing. Partial derivatives are written into columns of a pre-allocated DenseMatrixPolicy, one column per dependent variable.

Template Parameters:

DenseMatrixPolicy – The dense matrix type used for state data

Public Members

std::vector<std::size_t> dependent_variable_indices#

State variable indices that this property has non-zero partial derivatives with respect to.

Fixed at creation time. Used by processes to:

  1. Determine Jacobian sparsity (NonZeroJacobianElements)

  2. Know how many columns the partials matrix needs

  3. Map partials columns back to state variable indices

std::function<void(const DenseMatrixPolicy&, const DenseMatrixPolicy&, DenseMatrixPolicy&)> ComputeValue#

Compute the property value for all grid cells in the current group.

Called inside a ForEachRow loop — receives column views and writes into a RowVariable. The provider internally calls params_view.GetConstColumnView(…) and vars_view.GetConstColumnView(…) using its captured indices.

Parameters: params_view: const GroupView of state parameters vars_view: const GroupView of state variables result: mutable RowVariable to write the property value into

std::function<void(const DenseMatrixPolicy&, const DenseMatrixPolicy&, DenseMatrixPolicy&, DenseMatrixPolicy&)> ComputeValueAndDerivatives#

Compute the property value AND partial derivatives for all grid cells in the current group.

Called inside a ForEachRow loop.

Parameters: params_view: const GroupView of state parameters vars_view: const GroupView of state variables result: mutable RowVariable for the property value partials_matrix: mutable GroupView of the partials DenseMatrix (num_cells x num_dependent_variables) Column k corresponds to d(property)/d(var[dependent_variable_indices[k]])

Rate Constants#

class EquilibriumConstant#

An equilibrium constant dependent on temperature.

Calculates equilibrium constant as: K_eq = A * exp( C * ( 1 / T0 - 1 / T ) )

Public Functions

inline EquilibriumConstant()#

Default constructor.

inline EquilibriumConstant(const EquilibriumConstantParameters &parameters)#

Constructor with parameters.

Parameters:

parameters – A set of equilibrium constant parameters

inline double Calculate(const micm::Conditions &conditions) const#

Calculate the equilibrium constant.

Parameters:

conditions – The current environmental conditions of the chemical system

Returns:

An equilibrium constant based off of the conditions in the system

inline double Calculate(const double &temperature) const#

Calculate the equilibrium constant.

Parameters:

temperature – The temperature [K]

Returns:

An equilibrium constant

Public Members

const EquilibriumConstantParameters parameters_#
class HenrysLawConstant#

A Henry’s Law constant dependent on temperature.

Calculates Henry’s Law constant as: HLC(T) = HLC_ref * exp( C * ( 1 / T - 1 / T0 ) )

Public Functions

inline HenrysLawConstant()#

Default constructor.

inline HenrysLawConstant(const HenrysLawConstantParameters &parameters)#

Constructor with parameters.

Parameters:

parameters – A set of Henry’s Law constant parameters

inline double Calculate(const micm::Conditions &conditions) const#

Calculate the Henry’s Law constant.

Parameters:

conditions – The current environmental conditions of the chemical system

Returns:

A Henry’s Law constant based off of the conditions in the system [mol m⁻³ Pa⁻¹]

inline double Calculate(const double &temperature) const#

Calculate the Henry’s Law constant.

Parameters:

temperature – The temperature [K]

Returns:

A Henry’s Law constant [mol m⁻³ Pa⁻¹]

Public Members

const HenrysLawConstantParameters parameters_#

Condensation Rate#

struct CondensationRateProvider#

Provider for condensation rate and its derivatives.

Encapsulates the Fuchs-Sutugin transition regime calculation Fuchs1971, Zaveri2008:

     k_cond = 4π · r_eff · N · D · f(Kn, α)                      [s⁻¹]

     f(Kn, α) = 0.75α(1 + Kn) / (Kn² + (1 + 0.283α)Kn + 0.75α)   [dimensionless]

     Kn = λ / r_eff                                              [dimensionless]
     λ  = 3·D / c̄                                                [m]
     c̄  = √(8·R·T / (π·M))                                       [m s⁻¹]

     Variable definitions:
       k_cond  First-order condensation rate coefficient         [s⁻¹]
       r_eff   Effective radius of the aerosol particle          [m]
       N       Aerosol particle number concentration             [# m⁻³]
       D       Gas-phase diffusion coefficient                   [m² s⁻¹]
       f       Fuchs-Sutugin transition regime correction factor [dimensionless]
       Kn      Knudsen number                                    [dimensionless]
       λ       Mean free path of gas molecules                   [m]
       c̄       Mean molecular speed of gas molecules             [m s⁻¹]
       R       Ideal gas constant (8.314 J mol⁻¹ K⁻¹)            [J mol⁻¹ K⁻¹]
       T       Temperature                                       [K]
       M       Molecular weight of the gas species               [kg mol⁻¹]
       α       Mass accommodation coefficient                    [dimensionless, 0–1]

Public Members

std::function<double(double r_eff, double N, double T)> ComputeValue#

Compute condensation rate k_cond [s⁻¹].

Param r_eff:

Effective radius [m]

Param N:

Number concentration [# m⁻³]

Param T:

Temperature [K]

Return:

k_cond [s⁻¹]

std::function<void(double r_eff, double N, double T, double &k_cond, double &dk_dr, double &dk_dN)> ComputeValueAndDerivatives#

Compute condensation rate and partial derivatives.

Param r_eff:

Effective radius [m]

Param N:

Number concentration [# m⁻³]

Param T:

Temperature [K]

Param k_cond:

Output: condensation rate [s⁻¹]

Param dk_dr:

Output: ∂k_cond/∂r_eff [s⁻¹ m⁻¹]

Param dk_dN:

Output: ∂k_cond/∂N [s⁻¹ m³ #⁻¹]

UUID Generation#

Warning

doxygenfunction: Cannot find function “miam::generate_uuid_v4” in doxygen xml output for project “miam” from directory: /home/docs/checkouts/readthedocs.org/user_builds/miam/checkouts/latest/build/docs/doxygen/xml