40 void addConstant(
const std::string & name,
const Real constant);
46 void addScalar(
const std::string & name,
const Real & scalar);
71 void initParsed(T * obj,
const std::vector<VariableName> & variable_names);
92 std::unordered_map<std::string, std::reference_wrapper<const Real>>
_scalars;
96 std::unordered_map<std::string, VariableValue>
_fields;
100 std::unordered_map<std::string, MaterialProperty<Real>>
_properties;
126 for (
const auto & symbol : symbols)
139 const auto & constant_names = obj->template getParam<std::vector<std::string>>(
"constant_names");
140 const auto & postprocessor_names =
141 obj->template getParam<std::vector<PostprocessorName>>(
"postprocessor_names");
142 const auto & property_names =
143 obj->template getParam<std::vector<MaterialPropertyName>>(
"material_property_names");
144 const auto & function_names = obj->template getParam<std::vector<FunctionName>>(
"function_names");
145 const auto & constant_expressions =
146 obj->template getParam<std::vector<Real>>(
"constant_expressions");
148 for (
const auto i : make_range(constant_names.size()))
149 addConstant(constant_names[i], constant_expressions[i]);
151 for (
const auto & pp : postprocessor_names)
152 addScalar(pp, obj->getPostprocessorValueByName(pp));
154 for (
const auto i : make_range(variable_names.size()))
155 addField(variable_names[i], obj->kokkosCoupledValue(
"coupled_variables", i));
157 for (
const auto & prop : property_names)
158 addProperty(prop, obj->template getKokkosMaterialPropertyByName<Real>(prop));
160 for (
const auto & func : function_names)
161 addFunction(func, obj->getKokkosFunctionByName(func));
void paramError(const std::string ¶m, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Every object that can be built by the factory should be derived from this class.
The abstract class that provides polymorphic interfaces for a function.
The Kokkos material property class.
void addProperty(const std::string &name, const MaterialProperty< Real > &property)
Add a material property.
void addField(const std::string &name, const VariableValue &field)
Add a field variable.
const MooseObject * _parsed_object
Parsed object.
void initParsed(T *obj, const std::vector< VariableName > &variable_names)
Initialize symbols from parsed parameters.
void addScalar(const std::string &name, const Real &scalar)
Add a scalar variable.
void addFunction(const std::string &name, const Function &function)
Add a function.
std::unordered_map< std::string, VariableValue > _fields
Field variables used in the parsed expression.
void addConstant(const std::string &name, const Real constant)
Add a constant.
std::unordered_map< std::string, Real > _constants
Constants used in the parsed expression.
RPNEvaluator _evaluator
Parsed function evaluator.
std::unordered_map< std::string, MaterialProperty< Real > > _properties
Material properties used in the parsed expression.
std::unordered_set< std::string > _all_symbols
All symbols added to the parsed function.
std::unordered_map< std::string, std::reference_wrapper< const Real > > _scalars
Scalar variables used in the parsed expression.
const std::string & _expression
Parsed expression.
std::unordered_map< std::string, Function > _functions
Functions used in the parsed expression.
std::shared_ptr< RPNBuilder > _builder
Parsed function builder.
void checkDuplicateSymbols(const std::vector< T > &symbols, const std::string ¶m)
Check if duplicate symbols were added.
void finalize()
Finalize parsed function.
ParsedObjectBase(const MooseObject *object)
static InputParameters validParams()
Reverse Polish Notation (RPN) evaluator.
The Kokkos wrapper classes for MOOSE-like variable value access.