|
DOLFINx 0.12.0.0
DOLFINx C++
|
#include <Function.h>
Public Types | |
| using | value_type = T |
| using | geometry_type = U |
| Geometry type of the Mesh that the Function is defined on. | |
Public Member Functions | |
| Function (std::shared_ptr< const FunctionSpace< geometry_type > > V) | |
| Create function on given function space. | |
| Function (std::shared_ptr< const FunctionSpace< geometry_type > > V, std::shared_ptr< la::Vector< value_type > > x) | |
| Create function on given function space with a given vector. | |
| Function (const Function &v)=delete | |
| Function (Function &&v)=default | |
| Move constructor. | |
| ~Function ()=default | |
| Destructor. | |
| Function & | operator= (Function &&v)=default |
| Move assignment. | |
| Function & | operator= (const Function &v)=delete |
| Function | sub (int i) const |
| Extract a sub-function (a view into the Function). | |
| Function | collapse () const |
| Collapse a subfunction (view into a Function) to a stand-alone Function. | |
| std::shared_ptr< const FunctionSpace< geometry_type > > | function_space () const |
| Access the function space. | |
| std::shared_ptr< const la::Vector< value_type > > | x () const |
| Underlying vector (const version). | |
| std::shared_ptr< la::Vector< value_type > > | x () |
| Underlying vector. | |
| void | interpolate (const std::function< std::pair< std::vector< value_type >, std::vector< std::size_t > >(md::mdspan< const geometry_type, md::extents< std::size_t, 3, md::dynamic_extent > >)> &f, mesh::CellRange auto &&cells) |
| Interpolate an expression f(x) over a set of cells. | |
| void | interpolate (const std::function< std::pair< std::vector< value_type >, std::vector< std::size_t > >(md::mdspan< const geometry_type, md::extents< std::size_t, 3, md::dynamic_extent > >)> &f) |
| Interpolate an expression f(x) on the whole domain. | |
| void | interpolate (const Function< value_type, geometry_type > &u0, mesh::CellRange auto &&cells0, mesh::CellRange auto &&cells1) |
| Interpolate a Function over a subset of cells. | |
| void | interpolate (const Function< value_type, geometry_type > &u, mesh::CellRange auto &&cells) |
| Interpolate a Function over a subset of cells. | |
| void | interpolate (const Function< value_type, geometry_type > &u) |
| Interpolate a Function over all cells. | |
| void | interpolate (const Function< value_type, geometry_type > &u, mesh::CellRange auto &&cells, double tol, int maxit, const geometry::PointOwnershipData< U > &interpolation_data) |
| Interpolate a Function defined on a different mesh. | |
| void | eval (std::span< const geometry_type > x, std::array< std::size_t, 2 > xshape, mesh::CellRange auto &&cells, std::span< value_type > u, std::array< std::size_t, 2 > ushape, double tol, int maxit) const |
| Evaluate the Function at points. | |
Public Attributes | |
| std::string | name = "u" |
| Name. | |
This class represents a function \( u_h \) in a finite element function space \( V_h \), given by
\[ u_h = \sum_{i=1}^{n} U_i \phi_i, \]
where \( \{\phi_i\}_{i=1}^{n} \) is a basis for \( V_h \), and \( U \) is a vector of expansion coefficients for \( u_h \).
| T | The function scalar type. |
| U | The mesh geometry scalar type. |
| using value_type = T |
Field type for the Function, e.g. double, std::complex<float>, etc.
|
inlineexplicit |
Create function on given function space.
| [in] | V | The function space |
|
inline |
Create function on given function space with a given vector.
| [in] | V | The function space. |
| [in] | x | The vector. |
|
inline |
|
inline |
Evaluate the Function at points.
| [in] | x | The coordinates of the points. It has shape (num_points, 3) and storage is row-major. |
| [in] | xshape | Shape of x. |
| [in] | cells | Cell indices such that cells[i] is the index of the cell that contains the point x(i). Negative cell indices can be passed, in which case the corresponding point is ignored. |
| [out] | u | Values at the points. Values are not computed for points with a negative cell index. This argument must be passed with the correct size. Storage is row-major. |
| [in] | ushape | Shape of u. |
| [in] | tol | Tolerance for convergence in Newton method for non-affine pullbacks. If the mesh geometry is affine this argument is ignored. |
| [in] | maxit | Maximum number of Newton iterations in non-affine pull-back. If the mesh geometry is affine this argument is ignored. |
|
inline |
Access the function space.
|
inline |
|
inline |
|
inline |
Interpolate a Function defined on a different mesh.
| [in] | u | Function to be interpolated. |
| [in] | cells | Cells in the mesh associated with this to interpolate into. |
| [in] | tol | Tolerance for convergence in Newton method for non-affine pullbacks. If the mesh geometry is affine this argument is ignored. |
| [in] | maxit | Maximum number of Newton iterations in non-affine pull-back. If the mesh geometry is affine this argument is ignored. |
| [in] | interpolation_data | Data required for associating the interpolation points of this with cells in u. Can be computed with fem::create_interpolation_data. |
|
inline |
Interpolate a Function over a subset of cells.
The Function being interpolated from and the Function being interpolated into can be defined on different sub-meshes, i.e. views into a subset a cells.
| [in] | u0 | Function to be interpolated. |
| [in] | cells0 | Cells to interpolate from. These are the indices of the cells in the mesh associated with u0. |
| [in] | cells1 | Cell indices associated with the mesh of this that will be interpolated to. If cells0[i] is the index of a cell in the mesh associated with u0, then cells1[i] is the index of the same cell but in the mesh associated with this. |
|
inline |
Interpolate an expression f(x) on the whole domain.
| [in] | f | Expression to be interpolated. |
|
inline |
Interpolate an expression f(x) over a set of cells.
| [in] | f | Expression function to be interpolated. |
| [in] | cells | Cells to interpolate on. |
|
inline |
Extract a sub-function (a view into the Function).
| [in] | i | Index of subfunction |