Implementation of Function that memoizes (caches) former evaluations in an unordered map using a hash of the evaluation locations as the key. More...
#include <MemoizedFunctionInterface.h>
Public Types | |
typedef DataFileName | DataFileParameterType |
typedef FunctorBase< Real > | FunctorType |
typedef Real | ValueType |
typedef typename FunctorReturnType< Real, FunctorEvaluationKind::Gradient >::type | GradientType |
typedef ValueType | DotType |
Public Member Functions | |
MemoizedFunctionInterface (const InputParameters ¶meters) | |
virtual void | meshChanged () override |
void | useCache (bool use) |
Enable/disable the cache. More... | |
virtual Real | value (Real time, const Point &point) const final |
virtual ADReal | value (const ADReal &time, const ADPoint &point) const final |
virtual Real | value (Real t, const Point &p) const |
virtual ADReal | value (const ADReal &t, const ADPoint &p) const |
ChainedReal | value (const ChainedReal &t) const |
auto | value (const U &t) const |
auto | value (const U &t, const U &x, const U &y=0, const U &z=0) const |
ChainedReal | value (const ChainedReal &t) const |
auto | value (const U &t) const |
auto | value (const U &t, const U &x, const U &y=0, const U &z=0) const |
ChainedReal | value (const ChainedReal &t) const |
auto | value (const U &t) const |
auto | value (const U &t, const U &x, const U &y=0, const U &z=0) const |
virtual RealVectorValue | vectorValue (Real t, const Point &p) const |
virtual RealVectorValue | curl (Real t, const Point &p) const |
virtual Real | div (Real t, const Point &p) const |
virtual RealGradient | gradient (Real t, const Point &p) const |
GradientType | gradient (const ElemArg &elem, const StateArg &state) const |
GradientType | gradient (const FaceArg &face, const StateArg &state) const |
GradientType | gradient (const ElemQpArg &qp, const StateArg &state) const |
GradientType | gradient (const ElemSideQpArg &qp, const StateArg &state) const |
GradientType | gradient (const ElemPointArg &elem_point, const StateArg &state) const |
GradientType | gradient (const NodeArg &node, const StateArg &state) const |
GradientType | gradient (const ElemArg &elem, const StateArg &state) const |
GradientType | gradient (const FaceArg &face, const StateArg &state) const |
GradientType | gradient (const ElemQpArg &qp, const StateArg &state) const |
GradientType | gradient (const ElemSideQpArg &qp, const StateArg &state) const |
GradientType | gradient (const ElemPointArg &elem_point, const StateArg &state) const |
GradientType | gradient (const NodeArg &node, const StateArg &state) const |
GradientType | gradient (const ElemArg &elem, const StateArg &state) const |
GradientType | gradient (const FaceArg &face, const StateArg &state) const |
GradientType | gradient (const ElemQpArg &qp, const StateArg &state) const |
GradientType | gradient (const ElemSideQpArg &qp, const StateArg &state) const |
GradientType | gradient (const ElemPointArg &elem_point, const StateArg &state) const |
GradientType | gradient (const NodeArg &node, const StateArg &state) const |
virtual Real | timeDerivative (Real t, const Point &p) const |
auto | timeDerivative (const U &t) const |
auto | timeDerivative (const U &t, const U &x, const U &y=0, const U &z=0) const |
auto | timeDerivative (const U &t) const |
auto | timeDerivative (const U &t, const U &x, const U &y=0, const U &z=0) const |
virtual Real | integral () const |
virtual Real | average () const |
virtual Real | timeIntegral (Real t1, Real t2, const Point &p) const |
void | timestepSetup () override |
void | residualSetup () override final |
void | jacobianSetup () override final |
void | customSetup (const ExecFlagType &exec_type) override final |
bool | hasBlocks (SubdomainID) const override |
bool | supportsFaceArg () const override final |
bool | supportsElemSideQpArg () const override final |
virtual bool | enabled () const |
std::shared_ptr< MooseObject > | getSharedPtr () |
std::shared_ptr< const MooseObject > | getSharedPtr () const |
MooseApp & | getMooseApp () const |
const std::string & | type () const |
virtual const std::string & | name () const |
std::string | typeAndName () const |
std::string | errorPrefix (const std::string &error_type) const |
void | callMooseError (std::string msg, const bool with_prefix) const |
MooseObjectParameterName | uniqueParameterName (const std::string ¶meter_name) const |
const InputParameters & | parameters () const |
MooseObjectName | uniqueName () const |
const T & | getParam (const std::string &name) const |
std::vector< std::pair< T1, T2 > > | getParam (const std::string ¶m1, const std::string ¶m2) const |
const T * | queryParam (const std::string &name) const |
const T & | getRenamedParam (const std::string &old_name, const std::string &new_name) const |
T | getCheckedPointerParam (const std::string &name, const std::string &error_string="") const |
bool | isParamValid (const std::string &name) const |
bool | isParamSetByUser (const std::string &nm) const |
void | paramError (const std::string ¶m, Args... args) const |
void | paramWarning (const std::string ¶m, Args... args) const |
void | paramInfo (const std::string ¶m, Args... args) const |
void | connectControllableParams (const std::string ¶meter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const |
void | mooseError (Args &&... args) const |
void | mooseErrorNonPrefixed (Args &&... args) const |
void | mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const |
void | mooseWarning (Args &&... args) const |
void | mooseWarningNonPrefixed (Args &&... args) const |
void | mooseDeprecated (Args &&... args) const |
void | mooseInfo (Args &&... args) const |
std::string | getDataFileName (const std::string ¶m) const |
std::string | getDataFileNameByName (const std::string &relative_path) const |
std::string | getDataFilePath (const std::string &relative_path) const |
virtual void | initialSetup () |
virtual void | subdomainSetup () |
const ExecFlagEnum & | getExecuteOnEnum () const |
bool | isImplicit () |
Moose::StateArg | determineState () const |
bool | isDefaultPostprocessorValue (const std::string ¶m_name, const unsigned int index=0) const |
bool | hasPostprocessor (const std::string ¶m_name, const unsigned int index=0) const |
bool | hasPostprocessorByName (const PostprocessorName &name) const |
std::size_t | coupledPostprocessors (const std::string ¶m_name) const |
const PostprocessorName & | getPostprocessorName (const std::string ¶m_name, const unsigned int index=0) const |
UserObjectName | getUserObjectName (const std::string ¶m_name) const |
const T & | getUserObject (const std::string ¶m_name, bool is_dependency=true) const |
const T & | getUserObjectByName (const UserObjectName &object_name, bool is_dependency=true) const |
const UserObject & | getUserObjectBase (const std::string ¶m_name, bool is_dependency=true) const |
const UserObject & | getUserObjectBaseByName (const UserObjectName &object_name, bool is_dependency=true) const |
const std::vector< MooseVariableScalar *> & | getCoupledMooseScalarVars () |
const std::set< TagID > & | getScalarVariableCoupleableVectorTags () const |
const std::set< TagID > & | getScalarVariableCoupleableMatrixTags () const |
FunctorReturnType< Real, FET >::type | genericEvaluate (const Space &r, const State &state) const |
const MooseFunctorName & | functorName () const |
void | setCacheClearanceSchedule (const std::set< ExecFlagType > &clearance_schedule) |
virtual bool | isExtrapolatedBoundaryFace (const FaceInfo &, const Elem *, const StateArg &) const |
bool | isInternalFace (const FaceInfo &) const |
virtual bool | isConstant () const |
virtual bool | hasFaceSide (const FaceInfo &fi, const bool fi_elem_side) const override |
void | checkFace (const Moose::FaceArg &face) const |
const PostprocessorValue & | getPostprocessorValue (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValue (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOld (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOld (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOlder (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOlder (const std::string ¶m_name, const unsigned int index=0) const |
virtual const PostprocessorValue & | getPostprocessorValueByName (const PostprocessorName &name) const |
virtual const PostprocessorValue & | getPostprocessorValueByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOldByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOldByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOlderByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOlderByName (const PostprocessorName &name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
ValueType | operator() (const ElemArg &elem, const StateArg &state) const |
ValueType | operator() (const FaceArg &face, const StateArg &state) const |
ValueType | operator() (const ElemQpArg &qp, const StateArg &state) const |
ValueType | operator() (const ElemSideQpArg &qp, const StateArg &state) const |
ValueType | operator() (const ElemPointArg &elem_point, const StateArg &state) const |
ValueType | operator() (const NodeArg &node, const StateArg &state) const |
ValueType | operator() (const ElemArg &elem, const StateArg &state) const |
ValueType | operator() (const FaceArg &face, const StateArg &state) const |
ValueType | operator() (const ElemQpArg &qp, const StateArg &state) const |
ValueType | operator() (const ElemSideQpArg &qp, const StateArg &state) const |
ValueType | operator() (const ElemPointArg &elem_point, const StateArg &state) const |
ValueType | operator() (const NodeArg &node, const StateArg &state) const |
ValueType | operator() (const ElemArg &elem, const StateArg &state) const |
ValueType | operator() (const FaceArg &face, const StateArg &state) const |
ValueType | operator() (const ElemQpArg &qp, const StateArg &state) const |
ValueType | operator() (const ElemSideQpArg &qp, const StateArg &state) const |
ValueType | operator() (const ElemPointArg &elem_point, const StateArg &state) const |
ValueType | operator() (const NodeArg &node, const StateArg &state) const |
DotType | dot (const ElemArg &elem, const StateArg &state) const |
DotType | dot (const FaceArg &face, const StateArg &state) const |
DotType | dot (const ElemQpArg &qp, const StateArg &state) const |
DotType | dot (const ElemSideQpArg &qp, const StateArg &state) const |
DotType | dot (const ElemPointArg &elem_point, const StateArg &state) const |
DotType | dot (const NodeArg &node, const StateArg &state) const |
DotType | dot (const ElemArg &elem, const StateArg &state) const |
DotType | dot (const FaceArg &face, const StateArg &state) const |
DotType | dot (const ElemQpArg &qp, const StateArg &state) const |
DotType | dot (const ElemSideQpArg &qp, const StateArg &state) const |
DotType | dot (const ElemPointArg &elem_point, const StateArg &state) const |
DotType | dot (const NodeArg &node, const StateArg &state) const |
DotType | dot (const ElemArg &elem, const StateArg &state) const |
DotType | dot (const FaceArg &face, const StateArg &state) const |
DotType | dot (const ElemQpArg &qp, const StateArg &state) const |
DotType | dot (const ElemSideQpArg &qp, const StateArg &state) const |
DotType | dot (const ElemPointArg &elem_point, const StateArg &state) const |
DotType | dot (const NodeArg &node, const StateArg &state) const |
GradientType | gradDot (const ElemArg &elem, const StateArg &state) const |
GradientType | gradDot (const FaceArg &face, const StateArg &state) const |
GradientType | gradDot (const ElemQpArg &qp, const StateArg &state) const |
GradientType | gradDot (const ElemSideQpArg &qp, const StateArg &state) const |
GradientType | gradDot (const ElemPointArg &elem_point, const StateArg &state) const |
GradientType | gradDot (const NodeArg &node, const StateArg &state) const |
GradientType | gradDot (const ElemArg &elem, const StateArg &state) const |
GradientType | gradDot (const FaceArg &face, const StateArg &state) const |
GradientType | gradDot (const ElemQpArg &qp, const StateArg &state) const |
GradientType | gradDot (const ElemSideQpArg &qp, const StateArg &state) const |
GradientType | gradDot (const ElemPointArg &elem_point, const StateArg &state) const |
GradientType | gradDot (const NodeArg &node, const StateArg &state) const |
GradientType | gradDot (const ElemArg &elem, const StateArg &state) const |
GradientType | gradDot (const FaceArg &face, const StateArg &state) const |
GradientType | gradDot (const ElemQpArg &qp, const StateArg &state) const |
GradientType | gradDot (const ElemSideQpArg &qp, const StateArg &state) const |
GradientType | gradDot (const ElemPointArg &elem_point, const StateArg &state) const |
GradientType | gradDot (const NodeArg &node, const StateArg &state) const |
const Parallel::Communicator & | comm () const |
processor_id_type | n_processors () const |
processor_id_type | processor_id () const |
Static Public Member Functions | |
static InputParameters | validParams () |
Public Attributes | |
const ConsoleStream | _console |
Protected Member Functions | |
virtual Real | evaluateValue (Real time, const Point &point)=0 |
Used in derived classes, equivalent to Function::value() More... | |
void | invalidateCache () |
Called by derived classes to invalidate the cache, perhaps due to a state change. More... | |
virtual void | addPostprocessorDependencyHelper (const PostprocessorName &) const |
virtual void | addUserObjectDependencyHelper (const UserObject &) const |
T & | declareRestartableData (const std::string &data_name, Args &&... args) |
ManagedValue< T > | declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args) |
const T & | getRestartableData (const std::string &data_name) const |
T & | declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args) |
T & | declareRecoverableData (const std::string &data_name, Args &&... args) |
T & | declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args) |
T & | declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args) |
std::string | restartableName (const std::string &data_name) const |
bool | isCoupledScalar (const std::string &var_name, unsigned int i=0) const |
unsigned int | coupledScalarComponents (const std::string &var_name) const |
unsigned int | coupledScalar (const std::string &var_name, unsigned int comp=0) const |
libMesh::Order | coupledScalarOrder (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarValue (const std::string &var_name, unsigned int comp=0) const |
const ADVariableValue & | adCoupledScalarValue (const std::string &var_name, unsigned int comp=0) const |
const GenericVariableValue< is_ad > & | coupledGenericScalarValue (const std::string &var_name, unsigned int comp=0) const |
const GenericVariableValue< false > & | coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const |
const GenericVariableValue< true > & | coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const |
const VariableValue & | coupledVectorTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const |
const VariableValue & | coupledMatrixTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const |
const VariableValue & | coupledScalarValueOld (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarValueOlder (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDot (const std::string &var_name, unsigned int comp=0) const |
const ADVariableValue & | adCoupledScalarDot (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDot (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotOld (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDotOld (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDu (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDotDu (const std::string &var_name, unsigned int comp=0) const |
const MooseVariableScalar * | getScalarVar (const std::string &var_name, unsigned int comp) const |
virtual GradientType | evaluateGradDot (const ElemArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const FaceArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemQpArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemSideQpArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemPointArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const NodeArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const FaceArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemQpArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemSideQpArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemPointArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const NodeArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const FaceArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemQpArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemSideQpArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const ElemPointArg &, const StateArg &) const |
virtual GradientType | evaluateGradDot (const NodeArg &, const StateArg &) const |
virtual ValueType | evaluate (const ElemArg &elem, const StateArg &state) const =0 |
virtual ValueType | evaluate (const FaceArg &face, const StateArg &state) const =0 |
virtual ValueType | evaluate (const ElemQpArg &qp, const StateArg &state) const =0 |
virtual ValueType | evaluate (const ElemSideQpArg &side_qp, const StateArg &state) const =0 |
virtual ValueType | evaluate (const ElemPointArg &elem_point, const StateArg &state) const =0 |
virtual ValueType | evaluate (const NodeArg &node, const StateArg &state) const =0 |
virtual GradientType | evaluateGradient (const ElemArg &, const StateArg &) const |
virtual GradientType | evaluateGradient (const FaceArg &, const StateArg &) const |
virtual GradientType | evaluateGradient (const ElemQpArg &, const StateArg &) const |
virtual GradientType | evaluateGradient (const ElemSideQpArg &, const StateArg &) const |
virtual GradientType | evaluateGradient (const ElemPointArg &, const StateArg &) const |
virtual GradientType | evaluateGradient (const NodeArg &, const StateArg &) const |
virtual DotType | evaluateDot (const ElemArg &, const StateArg &) const |
virtual DotType | evaluateDot (const FaceArg &, const StateArg &) const |
virtual DotType | evaluateDot (const ElemQpArg &, const StateArg &) const |
virtual DotType | evaluateDot (const ElemSideQpArg &, const StateArg &) const |
virtual DotType | evaluateDot (const ElemPointArg &, const StateArg &) const |
virtual DotType | evaluateDot (const NodeArg &, const StateArg &) const |
Protected Attributes | |
const bool & | _enabled |
MooseApp & | _app |
const std::string | _type |
const std::string | _name |
const InputParameters & | _pars |
Factory & | _factory |
ActionFactory & | _action_factory |
const ExecFlagEnum & | _execute_enum |
const ExecFlagType & | _current_execute_flag |
const InputParameters & | _ti_params |
FEProblemBase & | _ti_feproblem |
bool | _is_implicit |
Real & | _t |
const Real & | _t_old |
int & | _t_step |
Real & | _dt |
Real & | _dt_old |
bool | _is_transient |
MooseApp & | _restartable_app |
const std::string | _restartable_system_name |
const THREAD_ID | _restartable_tid |
const bool | _restartable_read_only |
FEProblemBase & | _mci_feproblem |
FEProblemBase & | _sc_fe_problem |
const THREAD_ID | _sc_tid |
const Real & | _real_zero |
const VariableValue & | _scalar_zero |
const Point & | _point_zero |
const Parallel::Communicator & | _communicator |
Private Attributes | |
std::unordered_map< hashing::HashValue, Real > | _cache |
Cached evaluations for each point. More... | |
Real | _current_time |
Stores the time evaluation of the cache. More... | |
bool | _enable_cache |
Flag for whether to cache values. More... | |
bool | _respect_time |
Flag for whether changes in time invalidate the cache. More... | |
Implementation of Function that memoizes (caches) former evaluations in an unordered map using a hash of the evaluation locations as the key.
The purpose is to allow for quick evaluation of a complex function that may be reevaluated multiple times without changing the actual outputs.
Definition at line 23 of file MemoizedFunctionInterface.h.
MemoizedFunctionInterface::MemoizedFunctionInterface | ( | const InputParameters & | parameters | ) |
Definition at line 31 of file MemoizedFunctionInterface.C.
|
protectedpure virtual |
Used in derived classes, equivalent to Function::value()
Implemented in FunctionSeries.
Referenced by value().
|
protected |
Called by derived classes to invalidate the cache, perhaps due to a state change.
Definition at line 89 of file MemoizedFunctionInterface.C.
Referenced by MutableCoefficientsFunctionInterface::coefficientsChanged(), meshChanged(), useCache(), and value().
|
overridevirtual |
Reimplemented from Function.
Definition at line 39 of file MemoizedFunctionInterface.C.
void MemoizedFunctionInterface::useCache | ( | bool | use | ) |
Enable/disable the cache.
Definition at line 80 of file MemoizedFunctionInterface.C.
Referenced by FXFluxBC::FXFluxBC(), FXValueBC::FXValueBC(), and FXValuePenaltyBC::FXValuePenaltyBC().
|
static |
Definition at line 13 of file MemoizedFunctionInterface.C.
Referenced by MutableCoefficientsFunctionInterface::validParams().
virtual Real Function::value |
ChainedReal Function::value |
auto Function::value |
virtual ADReal Function::value |
auto Function::value |
auto Function::value |
ChainedReal Function::value |
auto Function::value |
Reimplemented from Function.
Definition at line 46 of file MemoizedFunctionInterface.C.
|
finalvirtual |
Reimplemented from Function.
Definition at line 74 of file MemoizedFunctionInterface.C.
|
mutableprivate |
Cached evaluations for each point.
Definition at line 58 of file MemoizedFunctionInterface.h.
Referenced by invalidateCache(), and value().
|
mutableprivate |
Stores the time evaluation of the cache.
Definition at line 61 of file MemoizedFunctionInterface.h.
Referenced by value().
|
private |
Flag for whether to cache values.
Definition at line 64 of file MemoizedFunctionInterface.h.
Referenced by useCache(), and value().
|
private |
Flag for whether changes in time invalidate the cache.
Definition at line 67 of file MemoizedFunctionInterface.h.
Referenced by value().