Loading [MathJax]/extensions/tex2jax.js
https://mooseframework.inl.gov
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
Moose::FunctorBase< T > Class Template Referenceabstract

Base class template for functor objects. More...

#include <MooseFunctor.h>

Inheritance diagram for Moose::FunctorBase< T >:
[legend]

Public Types

using FunctorType = FunctorBase< T >
 
using ValueType = T
 
using GradientType = typename FunctorReturnType< T, FunctorEvaluationKind::Gradient >::type
 This rigmarole makes it so that a user can create functors that return containers (std::vector, std::array). More...
 
using DotType = ValueType
 

Public Member Functions

virtual ~FunctorBase ()=default
 
 FunctorBase (const MooseFunctorName &name, const std::set< ExecFlagType > &clearance_schedule={EXEC_ALWAYS})
 
template<FunctorEvaluationKind FET, typename Space , typename State >
FunctorReturnType< T, FET >::type genericEvaluate (const Space &r, const State &state) const
 Perform a generic evaluation based on the supplied template argument FET and supplied spatial and temporal arguments. More...
 
const MooseFunctorName & functorName () const
 Return the functor name. More...
 
virtual void residualSetup () override
 
virtual void jacobianSetup () override
 
virtual void timestepSetup () override
 
virtual void customSetup (const ExecFlagType &exec_type) override
 
void setCacheClearanceSchedule (const std::set< ExecFlagType > &clearance_schedule)
 Set how often to clear the functor evaluation cache. More...
 
virtual bool hasBlocks (SubdomainID) const
 Returns whether the functor is defined on this block. More...
 
virtual bool isExtrapolatedBoundaryFace (const FaceInfo &, const Elem *, const StateArg &) const
 Returns whether this (sided) face is an extrapolated boundary face for this functor. More...
 
bool isInternalFace (const FaceInfo &) const
 Returns true if the face is an internal face. More...
 
virtual bool isConstant () const
 Returns true if this functor is a constant. More...
 
virtual bool hasFaceSide (const FaceInfo &fi, const bool fi_elem_side) const override
 
void checkFace (const Moose::FaceArg &face) const
 Examines the incoming face argument. More...
 
virtual bool supportsFaceArg () const =0
 Whether this functor supports evaluation with FaceArg. More...
 
virtual bool supportsElemSideQpArg () const =0
 Whether this functor supports evaluation with ElemSideQpArg. More...
 
ValueType operator() (const ElemArg &elem, const StateArg &state) const
 Same as their evaluate overloads with the same arguments but allows for caching implementation. More...
 
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
 
GradientType gradient (const ElemArg &elem, const StateArg &state) const
 Same as their evaluateGradient overloads with the same arguments but allows for caching implementation. More...
 
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
 
DotType dot (const ElemArg &elem, const StateArg &state) const
 Same as their evaluateDot overloads with the same arguments but allows for caching implementation. More...
 
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
 Same as their evaluateGradDot overloads with the same arguments but allows for caching implementation. More...
 
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
 

Protected Member Functions

Functor evaluation routines

These methods are all for evaluating functors with different kinds of spatial arguments.

Each of these methods also takes a state argument. For a description of the state argument, please see the StateArg doxygen

virtual ValueType evaluate (const ElemArg &elem, const StateArg &state) const =0
 Evaluate the functor with a given element. More...
 
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
 Evaluate the functor with a given element and point. More...
 
virtual ValueType evaluate (const NodeArg &node, const StateArg &state) const =0
 
virtual GradientType evaluateGradient (const ElemArg &, const StateArg &) const
 Evaluate the functor gradient with a given element. More...
 
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
 Evaluate the functor gradient with a given element and point. More...
 
virtual GradientType evaluateGradient (const NodeArg &, const StateArg &) const
 
virtual DotType evaluateDot (const ElemArg &, const StateArg &) const
 Evaluate the functor time derivative with a given element. More...
 
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
 Evaluate the functor time derivative with a given element and point. More...
 
virtual DotType evaluateDot (const NodeArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemArg &, const StateArg &) const
 Evaluate the functor gradient-dot with a given element. More...
 
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
 Evaluate the functor gradient-dot with a given element and point. More...
 
virtual GradientType evaluateGradDot (const NodeArg &, const StateArg &) const
 

Private Member Functions

void clearCacheData ()
 clear cache data More...
 
template<typename SpaceArg , typename StateArg >
ValueType queryQpCache (unsigned int qp, const libMesh::QBase &qrule, std::vector< std::pair< bool, T >> &qp_cache_data, const SpaceArg &space, const StateArg &state) const
 check a qp cache and if invalid then evaluate More...
 
template<typename SpaceArg >
ValueType queryFVArgCache (std::map< SpaceArg, ValueType > &cache_data, const SpaceArg &space) const
 check a finite volume spatial argument cache and if invalid then evaluate More...
 

Private Attributes

std::set< ExecFlagType_clearance_schedule
 How often to clear the material property cache. More...
 
bool _always_evaluate
 Boolean to check if we always need evaluation. More...
 
dof_id_type _current_qp_map_key = libMesh::DofObject::invalid_id
 Current key for qp map cache. More...
 
std::vector< std::pair< bool, ValueType > > * _current_qp_map_value = nullptr
 Current value for qp map cache. More...
 
std::unordered_map< dof_id_type, std::vector< std::pair< bool, ValueType > > > _qp_to_value
 Cached element quadrature point functor property evaluations. More...
 
dof_id_type _current_side_qp_map_key = libMesh::DofObject::invalid_id
 Current key for side-qp map cache. More...
 
std::vector< std::vector< std::pair< bool, ValueType > > > * _current_side_qp_map_value
 Current value for side-qp map cache. More...
 
std::unordered_map< dof_id_type, std::vector< std::vector< std::pair< bool, ValueType > > > > _side_qp_to_value
 Cached element quadrature point functor property evaluations. More...
 
std::map< ElemArg, ValueType_elem_arg_to_value
 Map from element arguments to their cached evaluations. More...
 
std::map< FaceArg, ValueType_face_arg_to_value
 Map from face arguments to their cached evaluations. More...
 
std::map< NodeArg, ValueType_node_arg_to_value
 Map from nodal arguments to their cached evaluations. More...
 
MooseFunctorName _functor_name
 name of the functor More...
 

Detailed Description

template<typename T>
class Moose::FunctorBase< T >

Base class template for functor objects.

This class template defines various operator() overloads that allow a user to evaluate the functor at arbitrary geometric locations. This template is meant to enable highly flexible on-the-fly variable and material property evaluations

Definition at line 137 of file MooseFunctor.h.

Member Typedef Documentation

◆ DotType

template<typename T>
using Moose::FunctorBase< T >::DotType = ValueType

Definition at line 150 of file MooseFunctor.h.

◆ FunctorType

template<typename T>
using Moose::FunctorBase< T >::FunctorType = FunctorBase<T>

Definition at line 140 of file MooseFunctor.h.

◆ GradientType

template<typename T>
using Moose::FunctorBase< T >::GradientType = typename FunctorReturnType<T, FunctorEvaluationKind::Gradient>::type

This rigmarole makes it so that a user can create functors that return containers (std::vector, std::array).

This logic will make it such that if a user requests a functor type T that is a container of algebraic types, for example Reals, then the GradientType will be a container of the gradients of those algebraic types, in this example VectorValue<Reals>. So if T is std::vector<Real>, then GradientType will be std::vector<VectorValue<Real>>. As another example: T = std::array<VectorValue<Real>, 1> -> GradientType = std::array<TensorValue<Real>, 1>

Definition at line 149 of file MooseFunctor.h.

◆ ValueType

template<typename T>
using Moose::FunctorBase< T >::ValueType = T

Definition at line 141 of file MooseFunctor.h.

Constructor & Destructor Documentation

◆ ~FunctorBase()

template<typename T>
virtual Moose::FunctorBase< T >::~FunctorBase ( )
virtualdefault

◆ FunctorBase()

template<typename T>
Moose::FunctorBase< T >::FunctorBase ( const MooseFunctorName &  name,
const std::set< ExecFlagType > &  clearance_schedule = {EXEC_ALWAYS} 
)
inline

Definition at line 153 of file MooseFunctor.h.

154  {EXEC_ALWAYS})
155  : _always_evaluate(true), _functor_name(name)
156 
157  {
158  setCacheClearanceSchedule(clearance_schedule);
159  }
void setCacheClearanceSchedule(const std::set< ExecFlagType > &clearance_schedule)
Set how often to clear the functor evaluation cache.
Definition: MooseFunctor.h:714
const ExecFlagType EXEC_ALWAYS
Definition: Moose.C:44
MooseFunctorName _functor_name
name of the functor
Definition: MooseFunctor.h:564
bool _always_evaluate
Boolean to check if we always need evaluation.
Definition: MooseFunctor.h:517

Member Function Documentation

◆ checkFace()

template<typename T>
void Moose::FunctorBase< T >::checkFace ( const Moose::FaceArg face) const

Examines the incoming face argument.

If the face argument producer (residual object, postprocessor, etc.) did not indicate a sidedness to the face, e.g. if the face_side member of the FaceArg is nullptr, then we may "modify" the sidedness of the argument if we are only defined on one side of the face. If the face argument producer has indicated a sidedness and we are not defined on that side, then we will error

Parameters
faceThe face argument created by the face argument producer, likely a residual object
Returns
A face with possibly changed sidedness depending on whether we aren't defined on both sides of the face

Definition at line 732 of file MooseFunctor.h.

737 {
738 #if DEBUG
739  const Elem * const elem = face.face_side;
740  const FaceInfo * const fi = face.fi;
741  mooseAssert(fi, "face info should be non-null");
742  bool check_elem_def = false;
743  bool check_neighbor_def = false;
744  // We check if the functor is defined on both sides of the face
745  if (!elem)
746  {
747  if (!hasFaceSide(*fi, true))
748  check_neighbor_def = true;
749  else if (!hasFaceSide(*fi, false))
750  check_elem_def = true;
751  }
752  else if (elem == fi->elemPtr())
753  check_elem_def = true;
754  else
755  {
756  mooseAssert(elem == fi->neighborPtr(), "This has to match something");
757  check_neighbor_def = true;
758  }
759 
760  if (check_elem_def && !hasFaceSide(*fi, true))
761  {
762  std::string additional_message = "It is not defined on the neighbor side either.";
763  if (hasFaceSide(*fi, false))
764  additional_message = "It is however defined on the neighbor side.";
765  additional_message += " Face centroid: " + Moose::stringify(fi->faceCentroid());
767  " is not defined on the element side of the face information, but a face argument "
768  "producer "
769  "(e.g. residual object, postprocessor, etc.) has requested evaluation there.\n",
770  additional_message);
771  }
772  if (check_neighbor_def && !hasFaceSide(*fi, false))
773  {
774  std::string additional_message = "It is not defined on the element side either.";
775  if (hasFaceSide(*fi, true))
776  additional_message = "It is however defined on the element side.";
777  additional_message += " Face centroid: " + Moose::stringify(fi->faceCentroid());
778  mooseError(
780  " is not defined on the neighbor side of the face information, but a face argument "
781  "producer (e.g. residual object, postprocessor, etc.) has requested evaluation there.\n",
782  additional_message);
783  }
784 #endif
785 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const libMesh::Elem * face_side
A member that can be used to indicate whether there is a sidedness to this face.
const Point & faceCentroid() const
Returns the coordinates of the face centroid.
Definition: FaceInfo.h:71
This data structure is used to store geometric and variable related metadata about each cell face in ...
Definition: FaceInfo.h:36
const Elem * neighborPtr() const
Definition: FaceInfo.h:84
MooseFunctorName _functor_name
name of the functor
Definition: MooseFunctor.h:564
const FaceInfo * fi
a face information object which defines our location in space
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:62
const Elem * elemPtr() const
Definition: FaceInfo.h:82
virtual bool hasFaceSide(const FaceInfo &fi, const bool fi_elem_side) const override
Definition: MooseFunctor.h:976

◆ clearCacheData()

template<typename T >
void Moose::FunctorBase< T >::clearCacheData ( )
private

clear cache data

Definition at line 789 of file MooseFunctor.h.

790 {
791  for (auto & map_pr : _qp_to_value)
792  for (auto & pr : map_pr.second)
793  pr.first = false;
794 
795  for (auto & map_pr : _side_qp_to_value)
796  {
797  auto & side_vector = map_pr.second;
798  for (auto & qp_vector : side_vector)
799  for (auto & pr : qp_vector)
800  pr.first = false;
801  }
802 
804  _current_qp_map_value = nullptr;
806  _current_side_qp_map_value = nullptr;
807 
808  _elem_arg_to_value.clear();
809  _face_arg_to_value.clear();
810  _node_arg_to_value.clear();
811 }
dof_id_type _current_qp_map_key
Current key for qp map cache.
Definition: MooseFunctor.h:523
std::map< FaceArg, ValueType > _face_arg_to_value
Map from face arguments to their cached evaluations.
Definition: MooseFunctor.h:558
std::vector< std::pair< bool, ValueType > > * _current_qp_map_value
Current value for qp map cache.
Definition: MooseFunctor.h:526
std::unordered_map< dof_id_type, std::vector< std::vector< std::pair< bool, ValueType > > > > _side_qp_to_value
Cached element quadrature point functor property evaluations.
Definition: MooseFunctor.h:552
static const dof_id_type invalid_id
std::map< ElemArg, ValueType > _elem_arg_to_value
Map from element arguments to their cached evaluations.
Definition: MooseFunctor.h:555
dof_id_type _current_side_qp_map_key
Current key for side-qp map cache.
Definition: MooseFunctor.h:539
std::vector< std::vector< std::pair< bool, ValueType > > > * _current_side_qp_map_value
Current value for side-qp map cache.
Definition: MooseFunctor.h:542
std::unordered_map< dof_id_type, std::vector< std::pair< bool, ValueType > > > _qp_to_value
Cached element quadrature point functor property evaluations.
Definition: MooseFunctor.h:533
std::map< NodeArg, ValueType > _node_arg_to_value
Map from nodal arguments to their cached evaluations.
Definition: MooseFunctor.h:561

◆ customSetup()

template<typename T >
void Moose::FunctorBase< T >::customSetup ( const ExecFlagType exec_type)
overridevirtual

Implements Moose::FunctorAbstract.

Reimplemented in Function.

Definition at line 839 of file MooseFunctor.h.

840 {
841  if (_clearance_schedule.count(exec_type))
842  clearCacheData();
843 }
void clearCacheData()
clear cache data
Definition: MooseFunctor.h:789
std::set< ExecFlagType > _clearance_schedule
How often to clear the material property cache.
Definition: MooseFunctor.h:514

◆ dot() [1/6]

template<typename T >
FunctorBase< T >::DotType Moose::FunctorBase< T >::dot ( const ElemArg elem,
const StateArg state 
) const

Same as their evaluateDot overloads with the same arguments but allows for caching implementation.

These are the methods a user will call in their code

Definition at line 890 of file MooseFunctor.h.

Referenced by FVFunctorTimeKernel::computeQpResidual(), and Moose::ADWrapperFunctor< T >::evaluateDot().

891 {
892  return evaluateDot(elem, state);
893 }
virtual DotType evaluateDot(const ElemArg &, const StateArg &) const
Evaluate the functor time derivative with a given element.
Definition: MooseFunctor.h:385

◆ dot() [2/6]

template<typename T >
FunctorBase< T >::DotType Moose::FunctorBase< T >::dot ( const FaceArg face,
const StateArg state 
) const

Definition at line 897 of file MooseFunctor.h.

898 {
899  checkFace(face);
900  return evaluateDot(face, state);
901 }
virtual DotType evaluateDot(const ElemArg &, const StateArg &) const
Evaluate the functor time derivative with a given element.
Definition: MooseFunctor.h:385
void checkFace(const Moose::FaceArg &face) const
Examines the incoming face argument.
Definition: MooseFunctor.h:732

◆ dot() [3/6]

template<typename T >
FunctorBase< T >::DotType Moose::FunctorBase< T >::dot ( const ElemQpArg qp,
const StateArg state 
) const

Definition at line 905 of file MooseFunctor.h.

906 {
907  return evaluateDot(elem_qp, state);
908 }
virtual DotType evaluateDot(const ElemArg &, const StateArg &) const
Evaluate the functor time derivative with a given element.
Definition: MooseFunctor.h:385

◆ dot() [4/6]

template<typename T >
FunctorBase< T >::DotType Moose::FunctorBase< T >::dot ( const ElemSideQpArg qp,
const StateArg state 
) const

Definition at line 912 of file MooseFunctor.h.

913 {
914  return evaluateDot(elem_side_qp, state);
915 }
virtual DotType evaluateDot(const ElemArg &, const StateArg &) const
Evaluate the functor time derivative with a given element.
Definition: MooseFunctor.h:385

◆ dot() [5/6]

template<typename T >
FunctorBase< T >::DotType Moose::FunctorBase< T >::dot ( const ElemPointArg elem_point,
const StateArg state 
) const

Definition at line 919 of file MooseFunctor.h.

920 {
921  return evaluateDot(elem_point, state);
922 }
virtual DotType evaluateDot(const ElemArg &, const StateArg &) const
Evaluate the functor time derivative with a given element.
Definition: MooseFunctor.h:385

◆ dot() [6/6]

template<typename T >
FunctorBase< T >::DotType Moose::FunctorBase< T >::dot ( const NodeArg node,
const StateArg state 
) const

Definition at line 926 of file MooseFunctor.h.

927 {
928  return evaluateDot(node, state);
929 }
virtual DotType evaluateDot(const ElemArg &, const StateArg &) const
Evaluate the functor time derivative with a given element.
Definition: MooseFunctor.h:385

◆ evaluate() [1/6]

template<typename T>
virtual ValueType Moose::FunctorBase< T >::evaluate ( const ElemArg elem,
const StateArg state 
) const
protectedpure virtual

Evaluate the functor with a given element.

Some example implementations of this method could compute an element-average or evaluate at the element centroid

Implemented in Moose::NullFunctor< T >, Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, PiecewiseByBlockLambdaFunctor< T >, Moose::VectorCompositeFunctor< T >, Moose::ADWrapperFunctor< T >, Moose::VectorComponentFunctor< T >, Moose::RawValueFunctor< T >, Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >, SpatialUserObjectFunctor< UserObjectType >, SpatialUserObjectFunctor< PointVariableSamplerBase >, SpatialUserObjectFunctor< SideIntegralFunctorUserObject >, SpatialUserObjectFunctor< SideIntegralVariableUserObject >, SpatialUserObjectFunctor< GeneralUserObject >, SpatialUserObjectFunctor< ElementVectorPostprocessor >, SpatialUserObjectFunctor< FunctionElementIntegralUserObject >, SpatialUserObjectFunctor< ElementIntegralFunctorUserObject >, SpatialUserObjectFunctor< ElementVariableVectorPostprocessor >, SpatialUserObjectFunctor< BaseType >, and SpatialUserObjectFunctor< ElementIntegralVariableUserObject >.

◆ evaluate() [2/6]

template<typename T>
virtual ValueType Moose::FunctorBase< T >::evaluate ( const FaceArg face,
const StateArg state 
) const
protectedpure virtual
Parameters
faceSee the FaceArg doxygen
stateSee the StateArg doxygen
Returns
The functor evaluated at the requested state and space

Implemented in Moose::NullFunctor< T >, Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, PiecewiseByBlockLambdaFunctor< T >, Moose::VectorCompositeFunctor< T >, Moose::ADWrapperFunctor< T >, Moose::VectorComponentFunctor< T >, Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >, Moose::RawValueFunctor< T >, SpatialUserObjectFunctor< UserObjectType >, SpatialUserObjectFunctor< PointVariableSamplerBase >, SpatialUserObjectFunctor< SideIntegralFunctorUserObject >, SpatialUserObjectFunctor< SideIntegralVariableUserObject >, SpatialUserObjectFunctor< GeneralUserObject >, SpatialUserObjectFunctor< ElementVectorPostprocessor >, SpatialUserObjectFunctor< FunctionElementIntegralUserObject >, SpatialUserObjectFunctor< ElementIntegralFunctorUserObject >, SpatialUserObjectFunctor< ElementVariableVectorPostprocessor >, SpatialUserObjectFunctor< BaseType >, and SpatialUserObjectFunctor< ElementIntegralVariableUserObject >.

◆ evaluate() [3/6]

template<typename T>
virtual ValueType Moose::FunctorBase< T >::evaluate ( const ElemQpArg qp,
const StateArg state 
) const
protectedpure virtual
Parameters
qpSee the ElemQpArg doxygen
stateSee the StateArg doxygen
Returns
The functor evaluated at the requested state and space

Implemented in Moose::NullFunctor< T >, Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, PiecewiseByBlockLambdaFunctor< T >, Moose::VectorCompositeFunctor< T >, Moose::ADWrapperFunctor< T >, Moose::VectorComponentFunctor< T >, Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >, Moose::RawValueFunctor< T >, SpatialUserObjectFunctor< UserObjectType >, SpatialUserObjectFunctor< PointVariableSamplerBase >, SpatialUserObjectFunctor< SideIntegralFunctorUserObject >, SpatialUserObjectFunctor< SideIntegralVariableUserObject >, SpatialUserObjectFunctor< GeneralUserObject >, SpatialUserObjectFunctor< ElementVectorPostprocessor >, SpatialUserObjectFunctor< FunctionElementIntegralUserObject >, SpatialUserObjectFunctor< ElementIntegralFunctorUserObject >, SpatialUserObjectFunctor< ElementVariableVectorPostprocessor >, SpatialUserObjectFunctor< BaseType >, and SpatialUserObjectFunctor< ElementIntegralVariableUserObject >.

◆ evaluate() [4/6]

template<typename T>
virtual ValueType Moose::FunctorBase< T >::evaluate ( const ElemSideQpArg side_qp,
const StateArg state 
) const
protectedpure virtual
Parameters
side_qpSee the ElemSideQpArg doxygen
stateSee the StateArg doxygen
Returns
The functor evaluated at the requested state and space

Implemented in Moose::NullFunctor< T >, Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, PiecewiseByBlockLambdaFunctor< T >, Moose::ADWrapperFunctor< T >, Moose::VectorCompositeFunctor< T >, Moose::VectorComponentFunctor< T >, Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >, Moose::RawValueFunctor< T >, SpatialUserObjectFunctor< UserObjectType >, SpatialUserObjectFunctor< PointVariableSamplerBase >, SpatialUserObjectFunctor< SideIntegralFunctorUserObject >, SpatialUserObjectFunctor< SideIntegralVariableUserObject >, SpatialUserObjectFunctor< GeneralUserObject >, SpatialUserObjectFunctor< ElementVectorPostprocessor >, SpatialUserObjectFunctor< FunctionElementIntegralUserObject >, SpatialUserObjectFunctor< ElementIntegralFunctorUserObject >, SpatialUserObjectFunctor< ElementVariableVectorPostprocessor >, SpatialUserObjectFunctor< BaseType >, and SpatialUserObjectFunctor< ElementIntegralVariableUserObject >.

◆ evaluate() [5/6]

template<typename T>
virtual ValueType Moose::FunctorBase< T >::evaluate ( const ElemPointArg elem_point,
const StateArg state 
) const
protectedpure virtual

Evaluate the functor with a given element and point.

Some example implementations of this method could perform a two-term Taylor expansion using cell-centered value and gradient

Implemented in Moose::NullFunctor< T >, Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, PiecewiseByBlockLambdaFunctor< T >, Moose::ADWrapperFunctor< T >, Moose::VectorComponentFunctor< T >, Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >, Moose::VectorCompositeFunctor< T >, Moose::RawValueFunctor< T >, SpatialUserObjectFunctor< UserObjectType >, SpatialUserObjectFunctor< PointVariableSamplerBase >, SpatialUserObjectFunctor< SideIntegralFunctorUserObject >, SpatialUserObjectFunctor< SideIntegralVariableUserObject >, SpatialUserObjectFunctor< GeneralUserObject >, SpatialUserObjectFunctor< ElementVectorPostprocessor >, SpatialUserObjectFunctor< FunctionElementIntegralUserObject >, SpatialUserObjectFunctor< ElementIntegralFunctorUserObject >, SpatialUserObjectFunctor< ElementVariableVectorPostprocessor >, SpatialUserObjectFunctor< BaseType >, and SpatialUserObjectFunctor< ElementIntegralVariableUserObject >.

◆ evaluate() [6/6]

template<typename T>
virtual ValueType Moose::FunctorBase< T >::evaluate ( const NodeArg node,
const StateArg state 
) const
protectedpure virtual

Implemented in Moose::NullFunctor< T >, Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, PiecewiseByBlockLambdaFunctor< T >, Moose::ADWrapperFunctor< T >, Moose::VectorComponentFunctor< T >, Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >, Moose::VectorCompositeFunctor< T >, Moose::RawValueFunctor< T >, SpatialUserObjectFunctor< UserObjectType >, SpatialUserObjectFunctor< PointVariableSamplerBase >, SpatialUserObjectFunctor< SideIntegralFunctorUserObject >, SpatialUserObjectFunctor< SideIntegralVariableUserObject >, SpatialUserObjectFunctor< GeneralUserObject >, SpatialUserObjectFunctor< ElementVectorPostprocessor >, SpatialUserObjectFunctor< FunctionElementIntegralUserObject >, SpatialUserObjectFunctor< ElementIntegralFunctorUserObject >, SpatialUserObjectFunctor< ElementVariableVectorPostprocessor >, SpatialUserObjectFunctor< BaseType >, and SpatialUserObjectFunctor< ElementIntegralVariableUserObject >.

◆ evaluateDot() [1/6]

template<typename T>
virtual DotType Moose::FunctorBase< T >::evaluateDot ( const ElemArg ,
const StateArg  
) const
inlineprotectedvirtual

Evaluate the functor time derivative with a given element.

Some example implementations of this method could compute an element-average or evaluate at the element centroid

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, Moose::ADWrapperFunctor< T >, Moose::RawValueFunctor< T >, and Moose::VectorCompositeFunctor< T >.

Definition at line 385 of file MooseFunctor.h.

386  {
387  mooseError("Element time derivative not implemented for functor " + functorName());
388  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateDot() [2/6]

template<typename T>
virtual DotType Moose::FunctorBase< T >::evaluateDot ( const FaceArg ,
const StateArg  
) const
inlineprotectedvirtual
Parameters
faceSee the FaceArg doxygen
stateSee the StateArg doxygen
Returns
The functor time derivative evaluated at the requested state and space

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, Function, Moose::ADWrapperFunctor< T >, Postprocessor, Moose::RawValueFunctor< T >, and Moose::VectorCompositeFunctor< T >.

Definition at line 395 of file MooseFunctor.h.

396  {
397  mooseError("Face time derivative not implemented for functor " + functorName());
398  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateDot() [3/6]

template<typename T>
virtual DotType Moose::FunctorBase< T >::evaluateDot ( const ElemQpArg ,
const StateArg  
) const
inlineprotectedvirtual
Parameters
qpSee the ElemQpArg doxygen
stateSee the StateArg doxygen
Returns
The functor time derivative evaluated at the requested state and space

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, Function, Moose::ADWrapperFunctor< T >, Postprocessor, and Moose::RawValueFunctor< T >.

Definition at line 405 of file MooseFunctor.h.

406  {
407  mooseError("Element quadrature point time derivative not implemented for functor " +
408  functorName());
409  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateDot() [4/6]

template<typename T>
virtual DotType Moose::FunctorBase< T >::evaluateDot ( const ElemSideQpArg ,
const StateArg  
) const
inlineprotectedvirtual

◆ evaluateDot() [5/6]

template<typename T>
virtual DotType Moose::FunctorBase< T >::evaluateDot ( const ElemPointArg ,
const StateArg  
) const
inlineprotectedvirtual

Evaluate the functor time derivative with a given element and point.

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, Function, Moose::ADWrapperFunctor< T >, Moose::RawValueFunctor< T >, and Postprocessor.

Definition at line 425 of file MooseFunctor.h.

426  {
427  mooseError("Element-point time derivative not implemented for functor " + functorName());
428  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateDot() [6/6]

template<typename T>
virtual DotType Moose::FunctorBase< T >::evaluateDot ( const NodeArg ,
const StateArg  
) const
inlineprotectedvirtual

◆ evaluateGradDot() [1/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradDot ( const ElemArg ,
const StateArg  
) const
inlineprotectedvirtual

◆ evaluateGradDot() [2/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradDot ( const FaceArg ,
const StateArg  
) const
inlineprotectedvirtual
Parameters
faceSee the FaceArg doxygen
stateSee the StateArg doxygen
Returns
The functor gradient-dot evaluated at the requested state and space

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, Moose::ADWrapperFunctor< T >, Moose::RawValueFunctor< T >, and Moose::VectorComponentFunctor< T >.

Definition at line 449 of file MooseFunctor.h.

450  {
451  mooseError("Face gradient-dot not implemented for functor " + functorName());
452  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateGradDot() [3/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradDot ( const ElemQpArg ,
const StateArg  
) const
inlineprotectedvirtual
Parameters
qpSee the ElemQpArg doxygen
stateSee the StateArg doxygen
Returns
The functor gradient-dot evaluated at the requested state and space

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, Moose::ADWrapperFunctor< T >, and Moose::RawValueFunctor< T >.

Definition at line 459 of file MooseFunctor.h.

460  {
461  mooseError("Element quadrature point gradient-dot not implemented for functor " +
462  functorName());
463  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateGradDot() [4/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradDot ( const ElemSideQpArg ,
const StateArg  
) const
inlineprotectedvirtual
Parameters
side_qpSee the ElemSideQpArg doxygen
stateSee the StateArg doxygen
Returns
The functor gradient-dot evaluated at the requested state and space

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, Moose::ADWrapperFunctor< T >, and Moose::RawValueFunctor< T >.

Definition at line 470 of file MooseFunctor.h.

471  {
472  mooseError("Element side quadrature point gradient-dot not implemented for functor " +
473  functorName());
474  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateGradDot() [5/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradDot ( const ElemPointArg ,
const StateArg  
) const
inlineprotectedvirtual

Evaluate the functor gradient-dot with a given element and point.

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, Moose::ADWrapperFunctor< T >, and Moose::RawValueFunctor< T >.

Definition at line 479 of file MooseFunctor.h.

480  {
481  mooseError("Element-point gradient-dot not implemented for functor " + functorName());
482  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateGradDot() [6/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradDot ( const NodeArg ,
const StateArg  
) const
inlineprotectedvirtual

◆ evaluateGradient() [1/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradient ( const ElemArg ,
const StateArg  
) const
inlineprotectedvirtual

Evaluate the functor gradient with a given element.

Some example implementations of this method could compute an element-average or evaluate at the element centroid

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, PiecewiseByBlockLambdaFunctor< T >, Moose::ADWrapperFunctor< T >, Moose::VectorComponentFunctor< T >, Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >, Moose::RawValueFunctor< T >, and Moose::VectorCompositeFunctor< T >.

Definition at line 332 of file MooseFunctor.h.

333  {
334  mooseError("Element gradient not implemented for functor " + functorName());
335  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateGradient() [2/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradient ( const FaceArg ,
const StateArg  
) const
inlineprotectedvirtual
Parameters
faceSee the FaceArg doxygen
stateSee the StateArg doxygen
Returns
The functor gradient evaluated at the requested state and space

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, Moose::VectorComponentFunctor< T >, Moose::ADWrapperFunctor< T >, PiecewiseByBlockLambdaFunctor< T >, and Moose::RawValueFunctor< T >.

Definition at line 342 of file MooseFunctor.h.

343  {
344  mooseError("Face gradient not implemented for functor " + functorName());
345  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateGradient() [3/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradient ( const ElemQpArg ,
const StateArg  
) const
inlineprotectedvirtual
Parameters
qpSee the ElemQpArg doxygen
stateSee the StateArg doxygen
Returns
The functor gradient evaluated at the requested state and space

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Function, Postprocessor, Moose::ADWrapperFunctor< T >, and Moose::RawValueFunctor< T >.

Definition at line 352 of file MooseFunctor.h.

353  {
354  mooseError("Element quadrature point gradient not implemented for functor " + functorName());
355  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateGradient() [4/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradient ( const ElemSideQpArg ,
const StateArg  
) const
inlineprotectedvirtual

◆ evaluateGradient() [5/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradient ( const ElemPointArg ,
const StateArg  
) const
inlineprotectedvirtual

Evaluate the functor gradient with a given element and point.

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, Function, Postprocessor, Moose::ADWrapperFunctor< T >, and Moose::RawValueFunctor< T >.

Definition at line 371 of file MooseFunctor.h.

372  {
373  mooseError("Element-point gradient not implemented for functor " + functorName());
374  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ evaluateGradient() [6/6]

template<typename T>
virtual GradientType Moose::FunctorBase< T >::evaluateGradient ( const NodeArg ,
const StateArg  
) const
inlineprotectedvirtual

◆ functorName()

template<typename T>
const MooseFunctorName& Moose::FunctorBase< T >::functorName ( ) const
inline

◆ genericEvaluate()

template<typename T >
template<FunctorEvaluationKind FET, typename Space , typename State >
FunctorReturnType< T, FET >::type Moose::FunctorBase< T >::genericEvaluate ( const Space &  r,
const State &  state 
) const

Perform a generic evaluation based on the supplied template argument FET and supplied spatial and temporal arguments.

Definition at line 987 of file MooseFunctor.h.

988 {
989  if constexpr (FET == FunctorEvaluationKind::Value)
990  return (*this)(r, state);
991  else if constexpr (FET == FunctorEvaluationKind::Gradient)
992  return gradient(r, state);
993  else if constexpr (FET == FunctorEvaluationKind::Dot)
994  return dot(r, state);
995  else
996  return gradDot(r, state);
997 }
GradientType gradDot(const ElemArg &elem, const StateArg &state) const
Same as their evaluateGradDot overloads with the same arguments but allows for caching implementation...
Definition: MooseFunctor.h:933
DotType dot(const ElemArg &elem, const StateArg &state) const
Same as their evaluateDot overloads with the same arguments but allows for caching implementation...
Definition: MooseFunctor.h:890
GradientType gradient(const ElemArg &elem, const StateArg &state) const
Same as their evaluateGradient overloads with the same arguments but allows for caching implementatio...
Definition: MooseFunctor.h:847

◆ gradDot() [1/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradDot ( const ElemArg elem,
const StateArg state 
) const

Same as their evaluateGradDot overloads with the same arguments but allows for caching implementation.

These are the methods a user will call in their code

Definition at line 933 of file MooseFunctor.h.

Referenced by Moose::VectorComponentFunctor< T >::evaluateGradDot(), and Moose::ADWrapperFunctor< T >::evaluateGradDot().

934 {
935  return evaluateGradDot(elem, state);
936 }
virtual GradientType evaluateGradDot(const ElemArg &, const StateArg &) const
Evaluate the functor gradient-dot with a given element.
Definition: MooseFunctor.h:439

◆ gradDot() [2/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradDot ( const FaceArg face,
const StateArg state 
) const

Definition at line 940 of file MooseFunctor.h.

941 {
942  checkFace(face);
943  return evaluateGradDot(face, state);
944 }
void checkFace(const Moose::FaceArg &face) const
Examines the incoming face argument.
Definition: MooseFunctor.h:732
virtual GradientType evaluateGradDot(const ElemArg &, const StateArg &) const
Evaluate the functor gradient-dot with a given element.
Definition: MooseFunctor.h:439

◆ gradDot() [3/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradDot ( const ElemQpArg qp,
const StateArg state 
) const

Definition at line 948 of file MooseFunctor.h.

949 {
950  return evaluateGradDot(elem_qp, state);
951 }
virtual GradientType evaluateGradDot(const ElemArg &, const StateArg &) const
Evaluate the functor gradient-dot with a given element.
Definition: MooseFunctor.h:439

◆ gradDot() [4/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradDot ( const ElemSideQpArg qp,
const StateArg state 
) const

Definition at line 955 of file MooseFunctor.h.

956 {
957  return evaluateGradDot(elem_side_qp, state);
958 }
virtual GradientType evaluateGradDot(const ElemArg &, const StateArg &) const
Evaluate the functor gradient-dot with a given element.
Definition: MooseFunctor.h:439

◆ gradDot() [5/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradDot ( const ElemPointArg elem_point,
const StateArg state 
) const

Definition at line 962 of file MooseFunctor.h.

963 {
964  return evaluateGradDot(elem_point, state);
965 }
virtual GradientType evaluateGradDot(const ElemArg &, const StateArg &) const
Evaluate the functor gradient-dot with a given element.
Definition: MooseFunctor.h:439

◆ gradDot() [6/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradDot ( const NodeArg node,
const StateArg state 
) const

Definition at line 969 of file MooseFunctor.h.

970 {
971  return evaluateGradDot(node, state);
972 }
virtual GradientType evaluateGradDot(const ElemArg &, const StateArg &) const
Evaluate the functor gradient-dot with a given element.
Definition: MooseFunctor.h:439

◆ gradient() [1/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradient ( const ElemArg elem,
const StateArg state 
) const

Same as their evaluateGradient overloads with the same arguments but allows for caching implementation.

These are the methods a user will call in their code

Definition at line 847 of file MooseFunctor.h.

Referenced by GradientJumpIndicator::computeQpIntegral(), Moose::FV::containerInterpolate(), Moose::VectorComponentFunctor< T >::evaluateGradient(), Moose::ADWrapperFunctor< T >::evaluateGradient(), and Moose::FV::greenGaussGradient().

848 {
849  return evaluateGradient(elem, state);
850 }
virtual GradientType evaluateGradient(const ElemArg &, const StateArg &) const
Evaluate the functor gradient with a given element.
Definition: MooseFunctor.h:332

◆ gradient() [2/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradient ( const FaceArg face,
const StateArg state 
) const

Definition at line 854 of file MooseFunctor.h.

855 {
856  checkFace(face);
857  return evaluateGradient(face, state);
858 }
void checkFace(const Moose::FaceArg &face) const
Examines the incoming face argument.
Definition: MooseFunctor.h:732
virtual GradientType evaluateGradient(const ElemArg &, const StateArg &) const
Evaluate the functor gradient with a given element.
Definition: MooseFunctor.h:332

◆ gradient() [3/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradient ( const ElemQpArg qp,
const StateArg state 
) const

Definition at line 862 of file MooseFunctor.h.

863 {
864  return evaluateGradient(elem_qp, state);
865 }
virtual GradientType evaluateGradient(const ElemArg &, const StateArg &) const
Evaluate the functor gradient with a given element.
Definition: MooseFunctor.h:332

◆ gradient() [4/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradient ( const ElemSideQpArg qp,
const StateArg state 
) const

Definition at line 869 of file MooseFunctor.h.

870 {
871  return evaluateGradient(elem_side_qp, state);
872 }
virtual GradientType evaluateGradient(const ElemArg &, const StateArg &) const
Evaluate the functor gradient with a given element.
Definition: MooseFunctor.h:332

◆ gradient() [5/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradient ( const ElemPointArg elem_point,
const StateArg state 
) const

Definition at line 876 of file MooseFunctor.h.

877 {
878  return evaluateGradient(elem_point, state);
879 }
virtual GradientType evaluateGradient(const ElemArg &, const StateArg &) const
Evaluate the functor gradient with a given element.
Definition: MooseFunctor.h:332

◆ gradient() [6/6]

template<typename T >
FunctorBase< T >::GradientType Moose::FunctorBase< T >::gradient ( const NodeArg node,
const StateArg state 
) const

Definition at line 883 of file MooseFunctor.h.

884 {
885  return evaluateGradient(node, state);
886 }
virtual GradientType evaluateGradient(const ElemArg &, const StateArg &) const
Evaluate the functor gradient with a given element.
Definition: MooseFunctor.h:332

◆ hasBlocks()

template<typename T>
virtual bool Moose::FunctorBase< T >::hasBlocks ( SubdomainID  ) const
inlinevirtual

Returns whether the functor is defined on this block.

Reimplemented in Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableField< OutputType >, MooseVariableField< ComputeValueType >, MooseVariableField< RT >, MooseVariableField< T >, MooseVariableField< RealEigenVector >, MooseVariableField< RealVectorValue >, MooseVariableField< Real >, Function, Postprocessor, PiecewiseByBlockLambdaFunctor< T >, Moose::VectorCompositeFunctor< T >, MeshDivisionFunctorReductionVectorPostprocessor, Moose::ADWrapperFunctor< T >, Moose::VectorComponentFunctor< T >, Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >, Moose::RawValueFunctor< T >, SpatialUserObjectFunctor< UserObjectType >, SpatialUserObjectFunctor< PointVariableSamplerBase >, SpatialUserObjectFunctor< SideIntegralFunctorUserObject >, SpatialUserObjectFunctor< SideIntegralVariableUserObject >, SpatialUserObjectFunctor< GeneralUserObject >, SpatialUserObjectFunctor< ElementVectorPostprocessor >, SpatialUserObjectFunctor< FunctionElementIntegralUserObject >, SpatialUserObjectFunctor< ElementIntegralFunctorUserObject >, SpatialUserObjectFunctor< ElementVariableVectorPostprocessor >, SpatialUserObjectFunctor< BaseType >, and SpatialUserObjectFunctor< ElementIntegralVariableUserObject >.

Definition at line 237 of file MooseFunctor.h.

Referenced by Moose::FV::greenGaussGradient(), SpatialUserObjectFunctor< ElementIntegralVariableUserObject >::hasBlocks(), Moose::VectorComponentFunctor< T >::hasBlocks(), and Moose::ADWrapperFunctor< T >::hasBlocks().

238  {
239  mooseError("Block restriction has not been implemented for functor " + functorName());
240  return false;
241  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
const MooseFunctorName & functorName() const
Return the functor name.
Definition: MooseFunctor.h:170

◆ hasFaceSide()

template<typename T >
bool Moose::FunctorBase< T >::hasFaceSide ( const FaceInfo fi,
const bool  fi_elem_side 
) const
overridevirtual

Implements FaceArgInterface.

Reimplemented in Moose::NullFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, Moose::ADWrapperFunctor< T >, Moose::RawValueFunctor< T >, InternalSideIntegralVariablePostprocessor, InterfaceIntegralVariableValuePostprocessor, SideIntegralVariablePostprocessor, SideIntegralFunctorPostprocessorTempl< is_ad >, and SideIntegralFunctorPostprocessorTempl< false >.

Definition at line 976 of file MooseFunctor.h.

Referenced by SideIntegralVariablePostprocessor::hasFaceSide(), InternalSideIntegralVariablePostprocessor::hasFaceSide(), and Moose::ADWrapperFunctor< T >::hasFaceSide().

977 {
978  if (fi_elem_side)
979  return hasBlocks(fi.elem().subdomain_id());
980  else
981  return fi.neighborPtr() && hasBlocks(fi.neighbor().subdomain_id());
982 }
virtual bool hasBlocks(SubdomainID) const
Returns whether the functor is defined on this block.
Definition: MooseFunctor.h:237
const Elem & elem() const
Definition: FaceInfo.h:81
const Elem * neighborPtr() const
Definition: FaceInfo.h:84
const Elem & neighbor() const
Definition: FaceInfo.h:216

◆ isConstant()

template<typename T>
virtual bool Moose::FunctorBase< T >::isConstant ( ) const
inlinevirtual

◆ isExtrapolatedBoundaryFace()

template<typename T>
virtual bool Moose::FunctorBase< T >::isExtrapolatedBoundaryFace ( const FaceInfo ,
const Elem *  ,
const StateArg  
) const
inlinevirtual

Returns whether this (sided) face is an extrapolated boundary face for this functor.

Reimplemented in Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, PiecewiseByBlockLambdaFunctor< T >, Moose::VectorComponentFunctor< T >, Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >, Moose::ADWrapperFunctor< T >, and Moose::RawValueFunctor< T >.

Definition at line 247 of file MooseFunctor.h.

Referenced by Moose::ADWrapperFunctor< T >::isExtrapolatedBoundaryFace().

248  {
249  mooseError("not implemented");
250  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302

◆ isInternalFace()

template<typename T >
bool Moose::FunctorBase< T >::isInternalFace ( const FaceInfo fi) const

Returns true if the face is an internal face.

Definition at line 569 of file MooseFunctor.h.

Referenced by FVAnisotropicDiffusion::computeQpResidual(), and FVDiffusion::computeQpResidual().

570 {
571  if (!fi.neighborPtr())
572  return false;
573 
574  return hasBlocks(fi.elem().subdomain_id()) && hasBlocks(fi.neighborPtr()->subdomain_id());
575 }
virtual bool hasBlocks(SubdomainID) const
Returns whether the functor is defined on this block.
Definition: MooseFunctor.h:237
const Elem & elem() const
Definition: FaceInfo.h:81
const Elem * neighborPtr() const
Definition: FaceInfo.h:84

◆ jacobianSetup()

template<typename T >
void Moose::FunctorBase< T >::jacobianSetup ( )
overridevirtual

◆ operator()() [1/6]

template<typename T >
FunctorBase< T >::ValueType Moose::FunctorBase< T >::operator() ( const ElemArg elem,
const StateArg state 
) const

Same as their evaluate overloads with the same arguments but allows for caching implementation.

These are the methods a user will call in their code

Definition at line 597 of file MooseFunctor.h.

598 {
599  if (_always_evaluate)
600  return evaluate(elem, state);
601 
602  mooseAssert(state.state == 0,
603  "Cached evaluations are only currently supported for the current state.");
604 
605  return queryFVArgCache(_elem_arg_to_value, elem);
606 }
ValueType queryFVArgCache(std::map< SpaceArg, ValueType > &cache_data, const SpaceArg &space) const
check a finite volume spatial argument cache and if invalid then evaluate
Definition: MooseFunctor.h:580
virtual ValueType evaluate(const ElemArg &elem, const StateArg &state) const =0
Evaluate the functor with a given element.
std::map< ElemArg, ValueType > _elem_arg_to_value
Map from element arguments to their cached evaluations.
Definition: MooseFunctor.h:555
bool _always_evaluate
Boolean to check if we always need evaluation.
Definition: MooseFunctor.h:517

◆ operator()() [2/6]

template<typename T >
FunctorBase< T >::ValueType Moose::FunctorBase< T >::operator() ( const FaceArg face,
const StateArg state 
) const

Definition at line 610 of file MooseFunctor.h.

611 {
612  checkFace(face_in);
613 
614  if (_always_evaluate)
615  return evaluate(face_in, state);
616 
617  mooseAssert(state.state == 0,
618  "Cached evaluations are only currently supported for the current state.");
619 
620  return queryFVArgCache(_face_arg_to_value, face_in);
621 }
std::map< FaceArg, ValueType > _face_arg_to_value
Map from face arguments to their cached evaluations.
Definition: MooseFunctor.h:558
void checkFace(const Moose::FaceArg &face) const
Examines the incoming face argument.
Definition: MooseFunctor.h:732
ValueType queryFVArgCache(std::map< SpaceArg, ValueType > &cache_data, const SpaceArg &space) const
check a finite volume spatial argument cache and if invalid then evaluate
Definition: MooseFunctor.h:580
virtual ValueType evaluate(const ElemArg &elem, const StateArg &state) const =0
Evaluate the functor with a given element.
bool _always_evaluate
Boolean to check if we always need evaluation.
Definition: MooseFunctor.h:517

◆ operator()() [3/6]

template<typename T >
FunctorBase< T >::ValueType Moose::FunctorBase< T >::operator() ( const ElemQpArg qp,
const StateArg state 
) const

Definition at line 656 of file MooseFunctor.h.

657 {
658  if (_always_evaluate)
659  return evaluate(elem_qp, state);
660 
661  const auto elem_id = elem_qp.elem->id();
662  if (elem_id != _current_qp_map_key)
663  {
664  _current_qp_map_key = elem_id;
666  }
667  auto & qp_data = *_current_qp_map_value;
668  const auto qp = elem_qp.qp;
669  const auto * const qrule = elem_qp.qrule;
670  mooseAssert(qrule, "qrule must be non-null");
671 
672  return queryQpCache(qp, *qrule, qp_data, elem_qp, state);
673 }
dof_id_type _current_qp_map_key
Current key for qp map cache.
Definition: MooseFunctor.h:523
std::vector< std::pair< bool, ValueType > > * _current_qp_map_value
Current value for qp map cache.
Definition: MooseFunctor.h:526
ValueType queryQpCache(unsigned int qp, const libMesh::QBase &qrule, std::vector< std::pair< bool, T >> &qp_cache_data, const SpaceArg &space, const StateArg &state) const
check a qp cache and if invalid then evaluate
Definition: MooseFunctor.h:626
virtual ValueType evaluate(const ElemArg &elem, const StateArg &state) const =0
Evaluate the functor with a given element.
bool _always_evaluate
Boolean to check if we always need evaluation.
Definition: MooseFunctor.h:517
std::unordered_map< dof_id_type, std::vector< std::pair< bool, ValueType > > > _qp_to_value
Cached element quadrature point functor property evaluations.
Definition: MooseFunctor.h:533

◆ operator()() [4/6]

template<typename T >
FunctorBase< T >::ValueType Moose::FunctorBase< T >::operator() ( const ElemSideQpArg qp,
const StateArg state 
) const

Definition at line 677 of file MooseFunctor.h.

678 {
679  if (_always_evaluate)
680  return evaluate(elem_side_qp, state);
681 
682  const Elem * const elem = elem_side_qp.elem;
683  mooseAssert(elem, "elem must be non-null");
684  const auto elem_id = elem->id();
685  if (elem_id != _current_side_qp_map_key)
686  {
687  _current_side_qp_map_key = elem_id;
689  }
690  auto & side_qp_data = *_current_side_qp_map_value;
691  const auto side = elem_side_qp.side;
692  const auto qp = elem_side_qp.qp;
693  const auto * const qrule = elem_side_qp.qrule;
694  mooseAssert(qrule, "qrule must be non-null");
695 
696  // Check and see whether we even have sized for this side
697  if (side >= side_qp_data.size())
698  side_qp_data.resize(elem->n_sides());
699 
700  // Ok we were sized enough for our side
701  auto & qp_data = side_qp_data[side];
702  return queryQpCache(qp, *qrule, qp_data, elem_side_qp, state);
703 }
std::unordered_map< dof_id_type, std::vector< std::vector< std::pair< bool, ValueType > > > > _side_qp_to_value
Cached element quadrature point functor property evaluations.
Definition: MooseFunctor.h:552
ValueType queryQpCache(unsigned int qp, const libMesh::QBase &qrule, std::vector< std::pair< bool, T >> &qp_cache_data, const SpaceArg &space, const StateArg &state) const
check a qp cache and if invalid then evaluate
Definition: MooseFunctor.h:626
virtual ValueType evaluate(const ElemArg &elem, const StateArg &state) const =0
Evaluate the functor with a given element.
dof_id_type _current_side_qp_map_key
Current key for side-qp map cache.
Definition: MooseFunctor.h:539
std::vector< std::vector< std::pair< bool, ValueType > > > * _current_side_qp_map_value
Current value for side-qp map cache.
Definition: MooseFunctor.h:542
bool _always_evaluate
Boolean to check if we always need evaluation.
Definition: MooseFunctor.h:517

◆ operator()() [5/6]

template<typename T >
FunctorBase< T >::ValueType Moose::FunctorBase< T >::operator() ( const ElemPointArg elem_point,
const StateArg state 
) const

Definition at line 707 of file MooseFunctor.h.

708 {
709  return evaluate(elem_point, state);
710 }
virtual ValueType evaluate(const ElemArg &elem, const StateArg &state) const =0
Evaluate the functor with a given element.

◆ operator()() [6/6]

template<typename T >
FunctorBase< T >::ValueType Moose::FunctorBase< T >::operator() ( const NodeArg node,
const StateArg state 
) const

Definition at line 724 of file MooseFunctor.h.

725 {
726  mooseAssert(node.subdomain_ids, "Subdomain IDs must be supplied to the node argument");
727  return evaluate(node, state);
728 }
virtual ValueType evaluate(const ElemArg &elem, const StateArg &state) const =0
Evaluate the functor with a given element.

◆ queryFVArgCache()

template<typename T >
template<typename SpaceArg >
FunctorBase< T >::ValueType Moose::FunctorBase< T >::queryFVArgCache ( std::map< SpaceArg, ValueType > &  cache_data,
const SpaceArg &  space 
) const
private

check a finite volume spatial argument cache and if invalid then evaluate

Definition at line 580 of file MooseFunctor.h.

582 {
583  // We don't want to evaluate if the key already exists, so instead we value initialize
584  auto [it, inserted] = cache_data.try_emplace(space, ValueType());
585  auto & value = it->second;
586 
587  if (inserted)
588  // value not ready to go
589  // this function is only called from functions that assert we are in the current time state
590  value = evaluate(space, currentState());
591 
592  return value;
593 }
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
virtual ValueType evaluate(const ElemArg &elem, const StateArg &state) const =0
Evaluate the functor with a given element.
StateArg currentState()

◆ queryQpCache()

template<typename T>
template<typename SpaceArg , typename StateArg >
FunctorBase< T >::ValueType Moose::FunctorBase< T >::queryQpCache ( unsigned int  qp,
const libMesh::QBase qrule,
std::vector< std::pair< bool, T >> &  qp_cache_data,
const SpaceArg &  space,
const StateArg state 
) const
private

check a qp cache and if invalid then evaluate

Definition at line 626 of file MooseFunctor.h.

631 {
632  // Check and see whether we even have sized for this quadrature point. If we haven't then we
633  // must evaluate
634  if (qp >= qp_cache_data.size())
635  {
636  qp_cache_data.resize(qrule.n_points(), std::make_pair(false, ValueType()));
637  auto & pr = qp_cache_data[qp];
638  pr.second = evaluate(space, state);
639  pr.first = true;
640  return pr.second;
641  }
642 
643  // We've already sized for this qp, so let's see whether we have a valid cache value
644  auto & pr = qp_cache_data[qp];
645  if (pr.first)
646  return pr.second;
647 
648  // No valid cache value so evaluate
649  pr.second = evaluate(space, state);
650  pr.first = true;
651  return pr.second;
652 }
unsigned int n_points() const
virtual ValueType evaluate(const ElemArg &elem, const StateArg &state) const =0
Evaluate the functor with a given element.

◆ residualSetup()

template<typename T >
void Moose::FunctorBase< T >::residualSetup ( )
overridevirtual

◆ setCacheClearanceSchedule()

template<typename T >
void Moose::FunctorBase< T >::setCacheClearanceSchedule ( const std::set< ExecFlagType > &  clearance_schedule)

Set how often to clear the functor evaluation cache.

Definition at line 714 of file MooseFunctor.h.

715 {
716  if (clearance_schedule.count(EXEC_ALWAYS))
717  _always_evaluate = true;
718 
719  _clearance_schedule = clearance_schedule;
720 }
const ExecFlagType EXEC_ALWAYS
Definition: Moose.C:44
bool _always_evaluate
Boolean to check if we always need evaluation.
Definition: MooseFunctor.h:517
std::set< ExecFlagType > _clearance_schedule
How often to clear the material property cache.
Definition: MooseFunctor.h:514

◆ supportsElemSideQpArg()

template<typename T>
virtual bool Moose::FunctorBase< T >::supportsElemSideQpArg ( ) const
pure virtual

Whether this functor supports evaluation with ElemSideQpArg.

Implemented in Moose::NullFunctor< T >, Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, Function, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Postprocessor, Moose::VectorCompositeFunctor< T >, PiecewiseByBlockLambdaFunctor< T >, Moose::ADWrapperFunctor< T >, SpatialUserObjectFunctor< UserObjectType >, SpatialUserObjectFunctor< PointVariableSamplerBase >, SpatialUserObjectFunctor< SideIntegralFunctorUserObject >, SpatialUserObjectFunctor< SideIntegralVariableUserObject >, SpatialUserObjectFunctor< GeneralUserObject >, SpatialUserObjectFunctor< ElementVectorPostprocessor >, SpatialUserObjectFunctor< FunctionElementIntegralUserObject >, SpatialUserObjectFunctor< ElementIntegralFunctorUserObject >, SpatialUserObjectFunctor< ElementVariableVectorPostprocessor >, SpatialUserObjectFunctor< BaseType >, SpatialUserObjectFunctor< ElementIntegralVariableUserObject >, Moose::RawValueFunctor< T >, Moose::VectorComponentFunctor< T >, and Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >.

Referenced by Moose::VectorComponentFunctor< T >::supportsElemSideQpArg(), and Moose::ADWrapperFunctor< T >::supportsElemSideQpArg().

◆ supportsFaceArg()

template<typename T>
virtual bool Moose::FunctorBase< T >::supportsFaceArg ( ) const
pure virtual

Whether this functor supports evaluation with FaceArg.

Implemented in Moose::NullFunctor< T >, Moose::ConstantFunctor< T >, Moose::FunctorEnvelope< T >, Moose::FunctorEnvelope< ADReal >, Moose::FunctorEnvelope< GenericReal< is_ad > >, Moose::FunctorEnvelope< GenericRealVectorValue< is_ad > >, Moose::FunctorEnvelope< VectorValue< Real > >, Moose::FunctorEnvelope< Moose::GenericType< T, is_ad > >, Moose::FunctorEnvelope< VectorValue< GenericReal< is_ad > > >, Moose::FunctorEnvelope< Moose::GenericType< Real, is_ad > >, Moose::FunctorEnvelope< Real >, Moose::FunctorEnvelope< libMesh::VectorValue >, MooseVariableFE< OutputType >, MooseVariableFE< ComputeValueType >, MooseVariableFE< T >, MooseVariableFE< RealEigenVector >, MooseVariableFE< VectorValue< Real > >, MooseVariableFE< RealVectorValue >, MooseVariableFE< Real >, MooseVariableFV< OutputType >, MooseVariableFV< ComputeValueType >, MooseVariableFV< T >, MooseVariableFV< RealEigenVector >, MooseVariableFV< RealVectorValue >, MooseVariableFV< Real >, Function, MooseLinearVariableFV< OutputType >, MooseLinearVariableFV< ComputeValueType >, MooseLinearVariableFV< T >, MooseLinearVariableFV< RealEigenVector >, MooseLinearVariableFV< RealVectorValue >, MooseLinearVariableFV< Real >, Postprocessor, Moose::VectorCompositeFunctor< T >, PiecewiseByBlockLambdaFunctor< T >, Moose::ADWrapperFunctor< T >, SpatialUserObjectFunctor< UserObjectType >, SpatialUserObjectFunctor< PointVariableSamplerBase >, SpatialUserObjectFunctor< SideIntegralFunctorUserObject >, SpatialUserObjectFunctor< SideIntegralVariableUserObject >, SpatialUserObjectFunctor< GeneralUserObject >, SpatialUserObjectFunctor< ElementVectorPostprocessor >, SpatialUserObjectFunctor< FunctionElementIntegralUserObject >, SpatialUserObjectFunctor< ElementIntegralFunctorUserObject >, SpatialUserObjectFunctor< ElementVariableVectorPostprocessor >, SpatialUserObjectFunctor< BaseType >, SpatialUserObjectFunctor< ElementIntegralVariableUserObject >, Moose::RawValueFunctor< T >, Moose::VectorComponentFunctor< T >, and Moose::ArrayComponentFunctor< T, ArrayTypeFunctor >.

Referenced by Moose::VectorComponentFunctor< T >::supportsFaceArg(), and Moose::ADWrapperFunctor< T >::supportsFaceArg().

◆ timestepSetup()

template<typename T >
void Moose::FunctorBase< T >::timestepSetup ( )
overridevirtual

Member Data Documentation

◆ _always_evaluate

template<typename T>
bool Moose::FunctorBase< T >::_always_evaluate
private

Boolean to check if we always need evaluation.

Definition at line 517 of file MooseFunctor.h.

◆ _clearance_schedule

template<typename T>
std::set<ExecFlagType> Moose::FunctorBase< T >::_clearance_schedule
private

How often to clear the material property cache.

Definition at line 514 of file MooseFunctor.h.

◆ _current_qp_map_key

template<typename T>
dof_id_type Moose::FunctorBase< T >::_current_qp_map_key = libMesh::DofObject::invalid_id
mutableprivate

Current key for qp map cache.

Definition at line 523 of file MooseFunctor.h.

◆ _current_qp_map_value

template<typename T>
std::vector<std::pair<bool, ValueType> >* Moose::FunctorBase< T >::_current_qp_map_value = nullptr
mutableprivate

Current value for qp map cache.

Definition at line 526 of file MooseFunctor.h.

◆ _current_side_qp_map_key

template<typename T>
dof_id_type Moose::FunctorBase< T >::_current_side_qp_map_key = libMesh::DofObject::invalid_id
mutableprivate

Current key for side-qp map cache.

Definition at line 539 of file MooseFunctor.h.

◆ _current_side_qp_map_value

template<typename T>
std::vector<std::vector<std::pair<bool, ValueType> > >* Moose::FunctorBase< T >::_current_side_qp_map_value
mutableprivate
Initial value:
=
nullptr

Current value for side-qp map cache.

Definition at line 542 of file MooseFunctor.h.

◆ _elem_arg_to_value

template<typename T>
std::map<ElemArg, ValueType> Moose::FunctorBase< T >::_elem_arg_to_value
mutableprivate

Map from element arguments to their cached evaluations.

Definition at line 555 of file MooseFunctor.h.

◆ _face_arg_to_value

template<typename T>
std::map<FaceArg, ValueType> Moose::FunctorBase< T >::_face_arg_to_value
mutableprivate

Map from face arguments to their cached evaluations.

Definition at line 558 of file MooseFunctor.h.

◆ _functor_name

template<typename T>
MooseFunctorName Moose::FunctorBase< T >::_functor_name
private

name of the functor

Definition at line 564 of file MooseFunctor.h.

Referenced by Moose::FunctorBase< libMesh::VectorValue >::functorName().

◆ _node_arg_to_value

template<typename T>
std::map<NodeArg, ValueType> Moose::FunctorBase< T >::_node_arg_to_value
mutableprivate

Map from nodal arguments to their cached evaluations.

Definition at line 561 of file MooseFunctor.h.

◆ _qp_to_value

template<typename T>
std::unordered_map<dof_id_type, std::vector<std::pair<bool, ValueType> > > Moose::FunctorBase< T >::_qp_to_value
mutableprivate

Cached element quadrature point functor property evaluations.

The map key is the element id. The map values should have size corresponding to the number of quadrature points on the element. The vector elements are pairs. The first member of the pair indicates whether a cached value has been computed. The second member of the pair is the (cached) value. If the boolean is false, then the value cannot be trusted

Definition at line 533 of file MooseFunctor.h.

◆ _side_qp_to_value

template<typename T>
std::unordered_map<dof_id_type, std::vector<std::vector<std::pair<bool, ValueType> > > > Moose::FunctorBase< T >::_side_qp_to_value
mutableprivate

Cached element quadrature point functor property evaluations.

The map key is the element id. The map values are a multi-dimensional vector (or vector of vectors) with the first index corresponding to the side and the second index corresponding to the quadrature point index. The elements returned after double indexing are pairs. The first member of the pair indicates whether a cached value has been computed. The second member of the pair is the (cached) value. If the boolean is false, then the value cannot be trusted

Definition at line 552 of file MooseFunctor.h.


The documentation for this class was generated from the following file: