20 params.
addRequiredParam<std::vector<VariableName>>(
"solver_variables",
"Species to solve for");
22 "auxiliary_variables",
23 "Additional species to output the concentration of, which do not require an additional " 24 "equation to obtain");
26 params.
addParam<std::vector<Real>>(
"equation_scaling",
27 "Scaling factor to apply to each equation");
30 params.
addParam<std::vector<MooseFunctorName>>(
"initial_conditions",
31 "Initial conditions for the species to solve for");
34 params.
addParam<std::string>(
"reactions",
"The list of chemical reactions");
41 _solver_species(getParam<
std::vector<VariableName>>(
"solver_variables")),
42 _num_solver_species(_solver_species.size()),
43 _aux_species(getParam<
std::vector<AuxVariableName>>(
"auxiliary_variables")),
44 _num_aux_species(_aux_species.size()),
47 _num_reactions(_reactions.size())
57 checkVectorParamsSameLength<VariableName, MooseFunctorName>(
"solver_variables",
58 "initial_conditions");
60 checkVectorParamsSameLength<VariableName, Real>(
"solver_variables",
"equation_scaling");
68 std::stringstream reactions_param(getParam<std::string>(
"reactions"));
70 while (std::getline(reactions_param, line,
'\n'))
73 "Should be the same size. Extra line break in the reaction network?");
86 {
"variable_order",
"system_names",
"equation_scaling"},
"MooseVariable", var_name);
90 const std::string variable_type =
"MooseVariable";
92 params.
set<
MooseEnum>(
"order") = getParam<MooseEnum>(
"variable_order");
95 params.
set<std::vector<Real>>(
"scaling") = {
96 getParam<std::vector<Real>>(
"equation_scaling")[i]};
117 const std::string variable_type =
"MooseVariable";
119 params.
set<
MooseEnum>(
"order") = getParam<MooseEnum>(
"variable_order");
135 for (
const auto & block :
component.blocks())
144 std::vector<MooseFunctorName> empty_functor_vector;
145 const auto & initial_functors =
147 ? getParam<std::vector<MooseFunctorName>>(
"initial_conditions")
148 : empty_functor_vector;
161 params.
set<VariableName>(
"variable") = var_name;
162 params.
set<MooseFunctorName>(
"functor") = initial_functors[i];
static InputParameters validParams()
std::string prefix() const
void assignBlocks(InputParameters ¶ms, const std::vector< SubdomainName > &blocks) const
std::vector< std::string > _reactions_input
Reaction network as a vector of lines for pretty output.
void addRequiredPhysicsTask(const std::string &task)
const unsigned int _num_reactions
Number of reactions involved in the network.
static const std::string component
InputParameters getValidParams(const std::string &name) const
void reportPotentiallyMissedParameters(const std::vector< std::string > ¶m_names, const std::string &object_type, const std::string &object_name="") const
const std::vector< VariableName > & _solver_species
Name of the species variables to solve for in the reaction network.
bool shouldCreateIC(const VariableName &var_name, const std::vector< SubdomainName > &blocks, const bool ic_is_default_ic, const bool error_if_already_defined) const
void addComponent(const ActionComponent &component) override
virtual void addAuxVariable(const std::string &var_type, const std::string &var_name, InputParameters ¶ms)
static InputParameters validParams()
std::vector< SubdomainName > _blocks
virtual void addInitialCondition(const std::string &ic_name, const std::string &name, InputParameters ¶meters)
void saveAuxVariableName(const VariableName &var_name)
virtual FEProblemBase & getProblem()
const SolverSystemName & getSolverSystem(unsigned int variable_index) const
const std::vector< AuxVariableName > & _aux_species
Name of the species variables that can be computed without additional solves, simply auxkernels...
virtual void addVariable(const std::string &var_type, const std::string &var_name, InputParameters ¶ms)
virtual void addPreconditioning() override
Add default preconditioning options (not implemented at this time)
bool variableExists(const VariableName &var_name, bool error_if_aux) const
static InputParameters validParams()
std::vector< Reaction > parseReactionNetwork(const std::string &reaction_network_string, bool output_to_cout)
Parses the reaction network from a string form to a vector a Reaction.
virtual void addInitialConditions() override
Add initial conditions for the solver variable (auxiliary not implemented)
virtual void addAuxiliaryVariables() override
Add nodal auxiliary variables.
virtual void addSolverVariables() override
Add solver variables (currently coded for CGFE)
bool isParamValid(const std::string &name) const
ReactionNetworkPhysicsBase(const InputParameters ¶meters)
bool isParamSetByUser(const std::string &name) const
void saveSolverVariableName(const VariableName &var_name)
auto index_range(const T &sizable)