Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F79362791
equilibrium_stagger.hpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Aug 26, 00:50
Size
2 KB
Mime Type
text/x-c++
Expires
Wed, Aug 28, 00:50 (2 d)
Engine
blob
Format
Raw Data
Handle
20127585
Attached To
rSPECMICP SpecMiCP / ReactMiCP
equilibrium_stagger.hpp
View Options
#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
Log In to Comment