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;
122 template <
typename T>
126 for (
const auto & symbol : symbols)
135 template <
typename T>
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));
std::string name(const ElemQuality q)
ParsedObjectBase(const MooseObject *object)
static InputParameters validParams()
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 ...
std::unordered_map< std::string, VariableValue > _fields
Field variables used in the parsed expression.
std::unordered_map< std::string, std::reference_wrapper< const Real > > _scalars
Scalar variables used in the parsed expression.
const MooseObject * _parsed_object
Parsed object.
void addField(const std::string &name, const VariableValue &field)
Add a field variable.
void addProperty(const std::string &name, const MaterialProperty< Real > &property)
Add a material property.
std::unordered_map< std::string, Function > _functions
Functions used in the parsed expression.
void addConstant(const std::string &name, const Real constant)
Add a constant.
void checkDuplicateSymbols(const std::vector< T > &symbols, const std::string ¶m)
Check if duplicate symbols were added.
The abstract class that provides polymorphic interfaces for a function.
std::unordered_set< std::string > _all_symbols
All symbols added to the parsed function.
Every object that can be built by the factory should be derived from this class.
void addScalar(const std::string &name, const Real &scalar)
Add a scalar variable.
The Kokkos wrapper classes for MOOSE-like variable value access.
Reverse Polish Notation (RPN) evaluator.
void initParsed(T *obj, const std::vector< VariableName > &variable_names)
Initialize symbols from parsed parameters.
RPNEvaluator _evaluator
Parsed function evaluator.
void addFunction(const std::string &name, const Function &function)
Add a function.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::unordered_map< std::string, MaterialProperty< Real > > _properties
Material properties used in the parsed expression.
std::shared_ptr< RPNBuilder > _builder
Parsed function builder.
IntRange< T > make_range(T beg, T end)
std::unordered_map< std::string, Real > _constants
Constants used in the parsed expression.
void finalize()
Finalize parsed function.
const std::string & _expression
Parsed expression.