Page MenuHomec4science

equilibrium_stagger.hpp
No OneTemporary

File Metadata

Created
Tue, Jul 9, 14:01

equilibrium_stagger.hpp

#ifndef SPECMICP_REACTMICP_SYSTEMS_SATURATED_EQUILIBRIUMSTAGGER_HPP
#define SPECMICP_REACTMICP_SYSTEMS_SATURATED_EQUILIBRIUMSTAGGER_HPP
#include "reactmicp/solver/staggers_base/chemistry_stagger_base.hpp"
#include "variablesfwd.hpp"
#include "specmicp/adimensional/adimensional_system_solver_structs.hpp"
namespace specmicp {
namespace reactmicp {
namespace systems {
namespace satdiff {
using VariablesBasePtr = solver::VariablesBasePtr;
//! \brief Solve the equilibrium problem
class EquilibriumStagger: public solver::ChemistryStaggerBase
{
public:
EquilibriumStagger(index_t nb_nodes,
AdimensionalSystemConstraints constraints,
AdimensionalSystemSolverOptions options):
m_id_constraints(nb_nodes, 0),
m_list_constraints({constraints,}),
m_options(options)
{}
EquilibriumStagger(
std::vector<AdimensionalSystemConstraints> list_constraints,
std::vector<int> index_constraints,
AdimensionalSystemSolverOptions options):
m_id_constraints(index_constraints),
m_list_constraints(list_constraints),
m_options(options)
{}
//! \brief Initialize the stagger at the beginning of the computation
void initialize(VariablesBasePtr var) {}
//! \brief Initialize the stagger at the beginning of an iteration
void initialize_timestep(scalar_t dt, VariablesBasePtr var) override;
//! \brief Solve the equation for the timestep
solver::StaggerReturnCode restart_timestep(VariablesBasePtr var) override;
//! \brief Solve the speciation problem at one node
int solve_one_node(index_t node, SaturatedVariablesPtr var);
//! \brief Return the constraints for 'node'
//!
//! \param node Index of the node
AdimensionalSystemConstraints& get_constraints(index_t node) {
return m_list_constraints[m_id_constraints[node]];
}
private:
scalar_t m_dt;
std::vector<int> m_id_constraints;
std::vector<AdimensionalSystemConstraints> m_list_constraints;
AdimensionalSystemSolverOptions m_options;
};
} // end namespace satdiff
} // end namespace systems
} // end namespace reactmicp
} // end namespace specmicp
#endif // SPECMICP_REACTMICP_SYSTEMS_SATURATED_EQUILIBRIUMSTAGGER_HPP

Event Timeline