17 const std::string & function_str,
18 const std::vector<std::string> & vars,
19 const std::vector<std::string> & vals,
21 : _feproblem(feproblem), _function_str(function_str), _vars(vars), _vals_input(vals), _tid(tid)
28 for (
auto & v :
_vars)
49 DenseVector<Real> output(LIBMESH_DIM);
50 (*_function_ptr)(p, t, output);
58 DenseVector<Real> output = evaluate<DenseVector<Real>>(t, p);
92 for (
unsigned int i = 0; i <
_vals_input.size(); ++i)
128 val = MooseUtils::convert<Real>(
_vals_input[i],
true);
130 catch (
const std::invalid_argument & e)
132 mooseError(
"'No postprocessor, scalar variable, or function with the name '",
145 for (
unsigned int i = 0; i <
_pp_index.size(); ++i)
Base class for function objects.
const THREAD_ID _tid
The thread id passed from owning Function object.
std::vector< const Real * > _scalar_vals
Vector of pointers to scalar variables values.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Real evaluateDot(Real t, const Point &p)
Evaluate the time derivative of the function which libMesh provides through automatic differentiation...
const std::vector< std::string > & _vals_input
List of the values for the variables supplied by the user.
virtual bool hasScalarVariable(const std::string &var_name) const override
Returns a Boolean indicating whether any system contains a variable with the name provided...
void updateFunctionValues(Real t, const Point &pt)
Updates function values for use in the libMesh::ParsedFunction.
RealGradient evaluateGradient(Real t, const Point &p)
Evaluate the gradient of the function which libMesh provides through automatic differentiation.
const std::vector< std::string > & _vars
List of variables supplied from the user.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual Function & getFunction(const std::string &name, const THREAD_ID tid=0)
const ReporterData & getReporterData() const
Provides const access the ReporterData object.
std::vector< const Function * > _functions
Vector of Functions this parsed function is using.
Real PostprocessorValue
various MOOSE typedefs
virtual MooseVariableScalar & getScalarVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the scalar variable reference from whichever system contains it.
MooseParsedFunctionWrapper(FEProblemBase &feproblem, const std::string &function_str, const std::vector< std::string > &vars, const std::vector< std::string > &vals, const THREAD_ID tid=0)
Class constructor.
std::vector< Real > _initial_vals
Storage for the initial values of _vars variables used by the libMesh::ParsedFunction object...
const std::string & _function_str
Reference to the string containing the function to evaluate.
void update()
Updates postprocessor and scalar values for use in the libMesh::ParsedFunction.
virtual ~MooseParsedFunctionWrapper()
Class destruction Deletes the pointer to the dynamically allocated instance of the underlying libMesh...
const PostprocessorValue & getPostprocessorValueByName(const PostprocessorName &name, std::size_t t_index=0) const
Get a read-only reference to the value associated with a Postprocessor that exists.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::vector< Real * > _addr
Pointers to the variables that store the values of _vars inside the libMesh::ParsedFunction object...
std::vector< unsigned int > _pp_index
Stores indices into _addr variable that are connected to Postprocessors.
FEProblemBase & _feproblem
Reference to the FEProblemBase object.
std::unique_ptr< ParsedFunction< Real > > _function_ptr
Pointer to the libMesh::ParsedFunction object.
std::vector< unsigned int > _function_index
Stores indices into _addr that are connected to Functions this libMesh::ParsedFunction is using...
std::vector< unsigned int > _scalar_index
Stores indicies into _addr variable that are connected to Scalar Variables.
bool hasReporterValue(const ReporterName &reporter_name) const
Return True if a Reporter value with the given type and name have been created.
T evaluate(Real t, const Point &p)
A template method for performing the evaluation of the libMesh::ParsedFunction Within the source two ...
void initialize()
Initialization method that prepares the _vars and _initial_vals for use by the libMesh::ParsedFunctio...
std::vector< const Real * > _pp_vals
Vector of pointers to postprocessor values this parsed function is using.
virtual bool hasFunction(const std::string &name, const THREAD_ID tid=0)
const VariableValue & sln() const
The Reporter system is comprised of objects that can contain any number of data values.