FEMFunction which is a function of another function. More...
#include <composite_fem_function.h>
Public Member Functions | |
CompositeFEMFunction ()=default | |
CompositeFEMFunction (CompositeFEMFunction &&)=default | |
CompositeFEMFunction & | operator= (CompositeFEMFunction &&)=default |
CompositeFEMFunction (const CompositeFEMFunction &)=delete | |
CompositeFEMFunction & | operator= (const CompositeFEMFunction &)=delete |
virtual | ~CompositeFEMFunction ()=default |
void | attach_subfunction (const FEMFunctionBase< Output > &f, const std::vector< unsigned int > &index_map) |
virtual Output | operator() (const FEMContext &c, const Point &p, const Real time=0) override |
virtual void | operator() (const FEMContext &c, const Point &p, const Real time, DenseVector< Output > &output) override |
virtual Output | component (const FEMContext &c, unsigned int i, const Point &p, Real time) override |
virtual std::unique_ptr< FEMFunctionBase< Output > > | clone () const override |
unsigned int | n_subfunctions () const |
unsigned int | n_components () const |
virtual void | init_context (const FEMContext &) |
void | operator() (const FEMContext &, const Point &p, DenseVector< Output > &output) |
Private Attributes | |
std::vector< std::unique_ptr< FEMFunctionBase< Output > > > | subfunctions |
std::vector< std::vector< unsigned int > > | index_maps |
std::vector< std::pair< unsigned int, unsigned int > > | reverse_index_map |
FEMFunction which is a function of another function.
FEMFunction which is a function of another function.
Definition at line 43 of file composite_fem_function.h.
|
explicitdefault |
Referenced by libMesh::CompositeFEMFunction< Output >::clone().
|
default |
This class can be default move constructed and assigned.
|
delete |
This class contains unique_ptr members so it can't be default copied or assigned.
|
virtualdefault |
The subfunctions vector is automatically cleaned up.
|
inline |
Attach a new subfunction, along with a map from the indices of that subfunction to the indices of the global function. (*this)(index_map[i]) will return f(i).
Definition at line 72 of file composite_fem_function.h.
References libMesh::FEMFunctionBase< Output >::clone(), libMesh::CompositeFEMFunction< Output >::index_maps, libMesh::invalid_uint, libMesh::CompositeFEMFunction< Output >::reverse_index_map, and libMesh::CompositeFEMFunction< Output >::subfunctions.
Referenced by libMesh::CompositeFEMFunction< Output >::clone().
|
inlineoverridevirtual |
The new copy should be as "deep" as necessary to allow independent destruction and simultaneous evaluations of the copies in different threads.
Implements libMesh::FEMFunctionBase< Output >.
Definition at line 148 of file composite_fem_function.h.
References libMesh::CompositeFEMFunction< Output >::attach_subfunction(), libMesh::CompositeFEMFunction< Output >::CompositeFEMFunction(), libMesh::CompositeFEMFunction< Output >::index_maps, and libMesh::CompositeFEMFunction< Output >::subfunctions.
|
inlineoverridevirtual |
i
at coordinate p
and time time
.Reimplemented from libMesh::FEMFunctionBase< Output >.
Definition at line 131 of file composite_fem_function.h.
References libMesh::invalid_uint, libMesh::CompositeFEMFunction< Output >::reverse_index_map, and libMesh::CompositeFEMFunction< Output >::subfunctions.
Referenced by libMesh::CompositeFEMFunction< Output >::operator()().
|
inlinevirtualinherited |
Prepares a context object for use.
Most problems will want to reimplement this for efficiency, in order to call FE::get_*() as their particular function requires.
Reimplemented in libMesh::ParsedFEMFunction< Output >, and libMesh::ParsedFEMFunction< T >.
Definition at line 73 of file fem_function_base.h.
|
inline |
Definition at line 161 of file composite_fem_function.h.
References libMesh::CompositeFEMFunction< Output >::reverse_index_map.
|
inline |
Definition at line 156 of file composite_fem_function.h.
References libMesh::CompositeFEMFunction< Output >::subfunctions.
|
inlineinherited |
Evaluation function for time-independent vector-valued functions. Sets output values in the passed-in output
DenseVector.
Definition at line 145 of file fem_function_base.h.
|
inlineoverridevirtual |
p
and time time
, which defaults to zero.Pure virtual, so you have to override it.
Implements libMesh::FEMFunctionBase< Output >.
Definition at line 102 of file composite_fem_function.h.
References libMesh::CompositeFEMFunction< Output >::component().
|
inlineoverridevirtual |
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.
Implements libMesh::FEMFunctionBase< Output >.
Definition at line 109 of file composite_fem_function.h.
References libMesh::CompositeFEMFunction< Output >::index_maps, libMesh::DenseVector< T >::resize(), libMesh::CompositeFEMFunction< Output >::reverse_index_map, libMesh::DenseVector< T >::size(), libMesh::CompositeFEMFunction< Output >::subfunctions, and libMesh::DenseVector< T >::zero().
|
default |
|
delete |
|
private |
Definition at line 171 of file composite_fem_function.h.
Referenced by libMesh::CompositeFEMFunction< Output >::attach_subfunction(), libMesh::CompositeFEMFunction< Output >::clone(), and libMesh::CompositeFEMFunction< Output >::operator()().
|
private |
Definition at line 174 of file composite_fem_function.h.
Referenced by libMesh::CompositeFEMFunction< Output >::attach_subfunction(), libMesh::CompositeFEMFunction< Output >::component(), libMesh::CompositeFEMFunction< Output >::n_components(), and libMesh::CompositeFEMFunction< Output >::operator()().
|
private |
Definition at line 168 of file composite_fem_function.h.
Referenced by libMesh::CompositeFEMFunction< Output >::attach_subfunction(), libMesh::CompositeFEMFunction< Output >::clone(), libMesh::CompositeFEMFunction< Output >::component(), libMesh::CompositeFEMFunction< Output >::n_subfunctions(), and libMesh::CompositeFEMFunction< Output >::operator()().