#include <FeFunctionInterface.hpp>
Public Types | |
typedef float_t | value_t |
Public Member Functions | |
template<class fem_types> | |
float_t | value (size_t integrator_node, const FemKernel< fem_types > fem_kernel) const |
template<class fem_types> | |
bool | sanity_check (const FemKernel< fem_types > &kernel, std::string &error_message) const |
This class defines an interface which must be implemented by classes which provide an FE approximation of a function. By FE approximation, we mean a function which can compute its value for a given integration node on the reference element. In addition to the index of the integration node (which itself is of course not sufficient for a meaningful function evaluation) a FemKernel object, which is initialized to the current element, is passed to the function. You can you use the functions provided by FemKernel to interpolate values known on the element nodes to the values and derivatives in the integration nodes.
The type of the output of the function. This might be a scalar or any other kind for which vector operations are implemented (i.e. the operators +, - and *).
float_t imaging::FeFunctionInterface::value | ( | size_t | integrator_node, | |
const FemKernel< fem_types > | fem_kernel | |||
) | const [inline] |
The member value must evaluate the function in integrator_node. The second argument fem_kernel will be initialized to the current element. Thus, all the interpolation functions provided by FemKernel can (and most probably have to) be used to compute the actual value.
bool imaging::FeFunctionInterface::sanity_check | ( | const FemKernel< fem_types > & | kernel, | |
std::string & | error_message | |||
) | const [inline] |
Checks if the dimension of the data corresponds to the dimension of the grid stored in kernel.
This function is called by the routines evaluating the function. It should return false if the provided data does not match the dimensions of the grid. Otherwise, return true;