Model#
-
class Model#
Aerosol/Cloud Model.
Model is a collection of representations that collectively define an aerosol and/or cloud system. Model is compatible with the micm::ExternalModelSystem and micm::ExternalModelProcessSet interfaces.
Public Types
-
using RepresentationVariant = std::variant<SingleMomentMode, TwoMomentMode, UniformSection>#
-
using ProcessVariant = std::variant<DissolvedReaction, DissolvedReversibleReaction, HenryLawPhaseTransfer>#
-
using ConstraintVariant = std::variant<DissolvedEquilibriumConstraint, HenryLawEquilibriumConstraint, LinearConstraint>#
Public Functions
-
inline std::tuple<std::size_t, std::size_t> StateSize() const#
Returns the total state size (number of variables, number of parameters)
-
inline std::set<std::string> StateVariableNames() const#
Returns unique names for all state variables.
-
inline std::set<std::string> StateParameterNames() const#
Returns unique names for all state parameters.
-
inline std::set<std::string> SpeciesUsed() const#
Returns names of all species used in the model’s processes and constraints.
-
template<typename ProcessType>
inline void AddProcesses(const std::vector<ProcessType> &new_processes)# Add processes to the model.
Accepts a vector of any process type stored in ProcessVariant. Each process is copied with a new UUID to ensure uniqueness across models.
-
template<typename ProcessType>
inline void AddProcesses(std::initializer_list<ProcessType> new_processes)# Add processes to the model from an initializer list.
-
template<typename ...ProcessTypes>
inline void AddProcesses(ProcessTypes&&... processes)# Add processes to the model (variadic form for mixed types)
-
template<typename ConstraintType>
inline void AddConstraints(const std::vector<ConstraintType> &new_constraints)# Add constraints to the model.
-
template<typename ConstraintType>
inline void AddConstraints(std::initializer_list<ConstraintType> new_constraints)# Add constraints to the model from an initializer list.
-
template<typename ...ConstraintTypes>
inline void AddConstraints(ConstraintTypes&&... constraints)# Add constraints to the model (variadic form for mixed types)
-
inline std::set<std::pair<std::size_t, std::size_t>> NonZeroJacobianElements(const std::unordered_map<std::string, std::size_t> &state_indices) const#
Returns non-zero Jacobian element positions.
-
template<typename DenseMatrixPolicy>
inline std::function<void(const std::vector<micm::Conditions>&, DenseMatrixPolicy&)> UpdateStateParametersFunction(const std::unordered_map<std::string, std::size_t> &state_parameter_indices) const# Returns a function that updates state parameters.
-
template<typename DenseMatrixPolicy>
inline std::function<void(const DenseMatrixPolicy&, const DenseMatrixPolicy&, DenseMatrixPolicy&)> ForcingFunction(const std::unordered_map<std::string, std::size_t> &state_parameter_indices, const std::unordered_map<std::string, std::size_t> &state_variable_indices) const# Returns a function that calculates forcing terms.
-
template<typename DenseMatrixPolicy, typename SparseMatrixPolicy>
inline std::function<void(const DenseMatrixPolicy&, const DenseMatrixPolicy&, SparseMatrixPolicy&)> JacobianFunction(const std::unordered_map<std::string, std::size_t> &state_parameter_indices, const std::unordered_map<std::string, std::size_t> &state_variable_indices, const SparseMatrixPolicy &jacobian) const# Returns a function that calculates Jacobian contributions.
-
inline std::set<std::string> ConstraintStateParameterNames() const#
Returns unique names for constraint-specific state parameters Includes parameters for diagnosed constants (mass conservation totals)
-
inline std::set<std::string> InitializeConstraintParameterNames() const#
Returns parameter names that need initialization from state variables.
-
template<typename DenseMatrixPolicy>
inline std::function<void(const DenseMatrixPolicy&, DenseMatrixPolicy&)> InitializeConstraintParametersFunction(const std::unordered_map<std::string, std::size_t> &state_parameter_indices, const std::unordered_map<std::string, std::size_t> &state_variable_indices) const# Returns a function that diagnoses constraint parameters from current state.
-
template<typename DenseMatrixPolicy>
inline std::function<void(const std::vector<micm::Conditions>&, DenseMatrixPolicy&)> ConstraintUpdateStateParametersFunction(const std::unordered_map<std::string, std::size_t> &state_parameter_indices) const# Returns a function that updates constraint parameters based on conditions.
-
inline std::set<std::string> ConstraintAlgebraicVariableNames() const#
Returns names of all algebraic variables across all constraints.
-
inline std::set<std::string> ConstraintSpeciesDependencies() const#
Returns all species that constraints depend on.
-
inline std::set<std::pair<std::size_t, std::size_t>> NonZeroConstraintJacobianElements(const std::unordered_map<std::string, std::size_t> &state_indices) const#
Returns non-zero constraint Jacobian element positions.
-
template<typename DenseMatrixPolicy>
inline std::function<void(const DenseMatrixPolicy&, const DenseMatrixPolicy&, DenseMatrixPolicy&)> ConstraintResidualFunction(const std::unordered_map<std::string, std::size_t> &state_parameter_indices, const std::unordered_map<std::string, std::size_t> &state_variable_indices) const# Returns combined constraint residual function G(y) = 0.
-
template<typename DenseMatrixPolicy, typename SparseMatrixPolicy>
inline std::function<void(const DenseMatrixPolicy&, const DenseMatrixPolicy&, SparseMatrixPolicy&)> ConstraintJacobianFunction(const std::unordered_map<std::string, std::size_t> &state_parameter_indices, const std::unordered_map<std::string, std::size_t> &state_variable_indices, const SparseMatrixPolicy &jacobian) const# Returns combined constraint Jacobian function (subtracts dG/dy)
Public Members
-
std::string name_#
-
std::vector<RepresentationVariant> representations_#
-
std::vector<ProcessVariant> processes_ = {}#
-
std::vector<ConstraintVariant> constraints_ = {}#
-
using RepresentationVariant = std::variant<SingleMomentMode, TwoMomentMode, UniformSection>#