Base class for functors that can be evaluated at a point and (optionally) time. More...
#include <dirichlet_boundaries.h>
Public Member Functions | |
FunctionBase (FunctionBase &&)=default | |
FunctionBase (const FunctionBase &)=default | |
FunctionBase & | operator= (const FunctionBase &)=default |
FunctionBase & | operator= (FunctionBase &&)=default |
virtual | ~FunctionBase ()=default |
virtual void | init () |
virtual void | clear () |
virtual std::unique_ptr< FunctionBase< Output > > | clone () const =0 |
virtual Output | operator() (const Point &p, const Real time=0.)=0 |
void | operator() (const Point &p, DenseVector< Output > &output) |
virtual void | operator() (const Point &p, const Real time, DenseVector< Output > &output)=0 |
virtual Output | component (unsigned int i, const Point &p, Real time=0.) |
bool | initialized () const |
void | set_is_time_dependent (bool is_time_dependent) |
bool | is_time_dependent () const |
Protected Member Functions | |
FunctionBase (const FunctionBase *master=nullptr) | |
Protected Attributes | |
const FunctionBase * | _master |
bool | _initialized |
bool | _is_time_dependent |
Base class for functors that can be evaluated at a point and (optionally) time.
Instances of FunctionBase represent functions (in the mathematical sense) of time and space, , where v
may be either a Number
or a DenseVector<Number>
. Children of this base class implement different styles of data retrieval for these functions. Use the constructors of the derived classes for creating new objects. The required input of each derived class thwarts the effective use of the commonly used build()
member. But afterward the virtual members allow the convenient and libMesh-common usage through a FunctionBase
*.
Definition at line 45 of file dirichlet_boundaries.h.
|
inlineexplicitprotected |
|
default |
The 5 special functions can be defaulted for this class.
|
default |
|
virtualdefault |
|
inlinevirtual |
Clears the function.
Reimplemented in libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T >, libMesh::MeshFunction, and libMesh::AnalyticFunction< Output >.
Definition at line 92 of file function_base.h.
|
pure virtual |
The new copy should be as "deep" as necessary to allow independent destruction and simultaneous evaluations of the copies in different threads.
Implemented in libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T >, libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction, libMesh::CompositeFunction< Output >, libMesh::MeshFunction, libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T >, libMesh::AnalyticFunction< Output >, libMesh::WrappedFunction< Output >, libMesh::ConstFunction< Output >, and libMesh::ZeroFunction< Output >.
Referenced by libMesh::ExactErrorEstimator::attach_exact_deriv(), libMesh::ExactSolution::attach_exact_deriv(), libMesh::ExactErrorEstimator::attach_exact_hessian(), libMesh::ExactSolution::attach_exact_hessian(), libMesh::ExactErrorEstimator::attach_exact_value(), libMesh::ExactSolution::attach_exact_value(), libMesh::CompositeFunction< Output >::attach_subfunction(), libMesh::DirichletBoundary::DirichletBoundary(), and libMesh::MeshTools::Modification::redistribute().
|
inlinevirtual |
i
at coordinate p
and time time
.Reimplemented in libMesh::CompositeFunction< Output >, libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T >, and libMesh::WrappedFunction< Output >.
Definition at line 228 of file function_base.h.
|
inlinevirtual |
The actual initialization process.
Reimplemented in libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T >, libMesh::MeshFunction, and libMesh::AnalyticFunction< Output >.
Definition at line 87 of file function_base.h.
Referenced by libMesh::MeshFunction::clone().
|
inline |
true
when this object is properly initialized and ready for use, false
otherwise. Definition at line 206 of file function_base.h.
|
inline |
true
when the function this object represents is actually time-dependent, false
otherwise. Definition at line 220 of file function_base.h.
Referenced by libMesh::CompositeFunction< Output >::attach_subfunction().
|
pure virtual |
p
and time time
, which defaults to zero.Pure virtual, so you have to override it.
Implemented in libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T >, libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction, libMesh::MeshFunction, libMesh::CompositeFunction< Output >, libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T >, libMesh::AnalyticFunction< Output >, libMesh::WrappedFunction< Output >, and libMesh::ConstFunction< Output >.
|
inline |
Evaluation function for time-independent vector-valued functions. Sets output values in the passed-in output
DenseVector.
Definition at line 241 of file function_base.h.
|
pure virtual |
Evaluation function for time-dependent vector-valued functions. Sets output values in the passed-in output
DenseVector.
Pure virtual, so you have to override it.
Implemented in libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T >, libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction, libMesh::MeshFunction, libMesh::CompositeFunction< Output >, libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T >, libMesh::AnalyticFunction< Output >, libMesh::WrappedFunction< Output >, and libMesh::ConstFunction< Output >.
|
default |
|
default |
|
inline |
Function to set whether this is a time-dependent function or not. This is intended to be only used by subclasses who cannot natively determine time-dependence. In such a case, this function should be used immediately following construction.
Definition at line 213 of file function_base.h.
|
protected |
When init()
was called so that everything is ready for calls to operator()
(...), then this bool
is true.
Definition at line 180 of file function_base.h.
Referenced by libMesh::AnalyticFunction< Output >::AnalyticFunction(), libMesh::ConstFunction< Output >::ConstFunction(), and libMesh::WrappedFunction< Output >::WrappedFunction().
|
protected |
Cache whether or not this function is actually time-dependent.
Definition at line 185 of file function_base.h.
Referenced by libMesh::CompositeFunction< Output >::attach_subfunction(), and libMesh::ConstFunction< Output >::ConstFunction().
|
protected |
Const pointer to our master, initialized to nullptr
. There may be cases where multiple functions are required, but to save memory, one master handles some centralized data.
Definition at line 174 of file function_base.h.