Utilities#
AerosolProperty#
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:
Determine Jacobian sparsity (NonZeroJacobianElements)
Know how many columns the partials matrix needs
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 ¶meters)#
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_#
-
inline EquilibriumConstant()#
-
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 ¶meters)#
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_#
-
inline HenrysLawConstant()#
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³ #⁻¹]
-
std::function<double(double r_eff, double N, double T)> ComputeValue#
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