DUNE-FEM (unstable)
#include <dune/fem/function/common/discretefunction.hh>
Public Types | |
typedef DiscreteFunctionTraits< Impl > | Traits |
type of the traits | |
typedef Traits::DiscreteFunctionType | DiscreteFunctionType |
type of the implementaton (Barton-Nackman) | |
typedef Traits::DiscreteFunctionSpaceType | DiscreteFunctionSpaceType |
type of associated discrete function space | |
typedef DiscreteFunctionSpaceType::FunctionSpaceType | FunctionSpaceType |
type of associated function space | |
typedef DiscreteFunctionInterface< Impl > | DiscreteFunctionInterfaceType |
type of the discrete function interface (this type) | |
typedef DiscreteFunctionSpaceType::DomainFieldType | DomainFieldType |
type of domain field, i.e. type of coordinate component | |
typedef DiscreteFunctionSpaceType::RangeFieldType | RangeFieldType |
type of range field, i.e. dof type | |
typedef DiscreteFunctionSpaceType::DomainType | DomainType |
type of domain, i.e. type of coordinates | |
typedef DiscreteFunctionSpaceType::RangeType | RangeType |
type of range, i.e. result of evaluation | |
typedef DiscreteFunctionSpaceType::JacobianRangeType | JacobianRangeType |
type of jacobian, i.e. type of evaluated gradient | |
typedef DiscreteFunctionSpaceType::GridPartType | GridPartType |
type of the underlying grid part | |
typedef DiscreteFunctionSpaceType::GridType | GridType |
type of the underlying grid | |
typedef Traits::LocalFunctionType | LocalFunctionType |
type of local functions | |
typedef Traits::DofVectorType | DofVectorType |
type of the dof vector used in the discrete function implementation | |
typedef Traits::DofIteratorType | DofIteratorType |
type of the dof iterator used in the discrete function implementation | |
typedef Traits::ConstDofIteratorType | ConstDofIteratorType |
type of the constantdof iterator used in the discrete function implementation | |
typedef BaseType::MappingType | MappingType |
type of mapping base class for this discrete function | |
typedef DiscreteFunctionSpaceType::EntityType | EntityType |
type of entity local functions are defined on | |
Public Member Functions | |
const std::string & | name () const |
obtain the name of the discrete function More... | |
std::string & | name () |
obtain the name of the discrete function More... | |
const std::string & | order () const |
obtain an upper bound on the polynomial order of the underlying space. | |
bool | continuous () const |
returns true if the space contains only globally continuous functions More... | |
const DiscreteFunctionSpaceType & | space () const |
obtain a reference to the corresponding DiscreteFunctionSpace | |
const GridPartType & | gridPart () const |
obtain a reference to the underlying grid part | |
LocalFunctionType | localFunction (const EntityType &entity) |
obtain a local function for an entity (read-write) More... | |
const LocalFunctionType | localFunction (const EntityType &entity) const |
obtain a local function for an entity (read-write) More... | |
LocalFunctionType | localFunction () |
obtain an uninitialized local function (read-write) More... | |
template<class LocalDofs > | |
void | addScaledLocalDofs (const EntityType &entity, const RangeFieldType &s, const LocalDofs &localDofs) |
add scaled local Dofs to dof vector associated with the entity More... | |
template<class LocalDofs > | |
void | addLocalDofs (const EntityType &entity, const LocalDofs &localDofs) |
add local Dofs to dof vector associated with the entity More... | |
template<class LocalDofs > | |
void | setLocalDofs (const EntityType &entity, const LocalDofs &localDofs) |
set local Dofs to dof vector associated with the entity More... | |
template<class Vector > | |
void | getLocalDofs (const EntityType &entity, Vector &localDofs) const |
fill local Dofs to dof vector associated with the entity More... | |
const LocalFunctionType | localFunction () const |
obtain an uninitialized local function (read-write) More... | |
void | clear () |
set all degrees of freedom to zero | |
int | size () const |
obtain total number of DoFs More... | |
int | blocks () const |
obtain total number of blocks, i.e. size / blockSize. More... | |
ConstDofIteratorType | dbegin () const |
obtain an iterator pointing to the first DoF (read-only) More... | |
ConstDofIteratorType | dend () const |
obtain an iterator pointing behind the last DoF (read-only) More... | |
DofIteratorType | dbegin () |
obtain an iterator pointing to the first DoF (read-write) More... | |
DofIteratorType | dend () |
obtain an iterator pointing behind the last DoF (read-write) More... | |
void | axpy (const RangeFieldType &s, const DiscreteFunctionInterfaceType &g) |
axpy operation More... | |
template<class DFType > | |
RangeFieldType | scalarProductDofs (const DiscreteFunctionInterface< DFType > &other) const |
Scalar product between the DoFs of two discrete functions. More... | |
Dune::FieldTraits< RangeFieldType >::real_type | normSquaredDofs () const |
Squared small l^2 norm of all dofs. More... | |
void | print (std ::ostream &out) const |
print all DoFs to a stream (for debugging purposes) More... | |
bool | dofsValid () const |
check for NaNs More... | |
template<class DFType > | |
void | assign (const DiscreteFunctionInterface< DFType > &g) |
assign the DoFs of another discrete function to this one More... | |
template<class Operation > | |
CommDataHandle< Operation >::Type | dataHandle (const Operation &operation) |
return reference to data handle object | |
void | communicate () |
do default communication of space for this discrete function | |
template<class DFType > | |
DiscreteFunctionType & | operator+= (const DiscreteFunctionInterface< DFType > &g) |
add another discrete function to this one More... | |
template<class DFType > | |
DiscreteFunctionType & | operator-= (const DiscreteFunctionInterface< DFType > &g) |
substract all degrees of freedom from given discrete function using the dof iterators More... | |
DiscreteFunctionType & | operator*= (const RangeFieldType &scalar) |
multiply all DoFs by a scalar factor More... | |
DiscreteFunctionType & | operator/= (const RangeFieldType &scalar) |
devide all DoFs by a scalar factor More... | |
template<class StreamTraits > | |
void | read (InStreamInterface< StreamTraits > &in) |
read the discrete function from a stream More... | |
template<class StreamTraits > | |
void | write (OutStreamInterface< StreamTraits > &out) const |
write the discrete function into a stream More... | |
void | enableDofCompression () |
Enable this discrete function for dof compression, i.e. during grid changes a dof compression is done when the DofManagers compress is called. | |
Static Public Attributes | |
static constexpr std::size_t | blockSize = Hybrid::size( BlockIndices() ) |
size of the dof blocks | |
Protected Member Functions | |
DiscreteFunctionInterface ()=default | |
default constructor | |
Related Functions | |
(Note that these are not member functions.) | |
template<class Impl > | |
std::ostream & | operator<< (std::ostream &out, const DiscreteFunctionInterface< Impl > &df) |
write a discrete function into an STL stream More... | |
Detailed Description
class Dune::Fem::DiscreteFunctionInterface< Impl >
This is the interface of a discrete function which describes the features of a discrete function. It contains a local function and a dof iterator which can iterate over all dofs of one level. Via the method access the local dofs and basis functions can be accessed for a given entity. The DOF-Iterators are STL-like Iterators, i.e. they can be dereferenced giving the corresponding DOF.
Member Function Documentation
◆ addLocalDofs()
|
inline |
add local Dofs to dof vector associated with the entity
- Parameters
-
[in] entity Entity to focus view of discrete function [in] localDofs the local dofs vector to be added
◆ addScaledLocalDofs()
|
inline |
add scaled local Dofs to dof vector associated with the entity
- Parameters
-
[in] entity Entity to focus view of discrete function [in] s scaling factor [in] localDofs the local dofs vector to be added
◆ assign()
|
inline |
assign the DoFs of another discrete function to this one
- Parameters
-
[in] g discrete function which is copied
◆ axpy()
|
inline |
axpy operation
Adds s * g to this discrete function.
- Parameters
-
[in] s scalar value to scale g with [in] g discrete function to add
◆ blocks()
|
inline |
obtain total number of blocks, i.e. size / blockSize.
The number of blocks of DoFs (degrees of freedom) can also be seen as the size of the discrete function divided by the blockSize.
- Returns
- total number of DoFs blocks
◆ continuous()
|
inline |
returns true if the space contains only globally continuous functions
For example, a Lagrange space returns true while a discontiuous Galerkin space returns false.
- Returns
- true if the space contians only globally continous functions, false otherwise
◆ dbegin() [1/2]
|
inline |
obtain an iterator pointing to the first DoF (read-write)
- Returns
- a DoF iterator pointing to first DoF (degre of freedom)
◆ dbegin() [2/2]
|
inline |
obtain an iterator pointing to the first DoF (read-only)
- Returns
- a DoF iterator pointing to first DoF (degre of freedom)
◆ dend() [1/2]
|
inline |
obtain an iterator pointing behind the last DoF (read-write)
- Returns
- a DoF iterator pointing behind the last DoF (degree of freedom)
◆ dend() [2/2]
|
inline |
obtain an iterator pointing behind the last DoF (read-only)
- Returns
- a DoF iterator pointing behind the last DoF (degree of freedom)
◆ dofsValid()
|
inline |
check for NaNs
- Returns
- if one of the DoFs is NaN false is returned, otherwise true
◆ getLocalDofs()
|
inline |
fill local Dofs to dof vector associated with the entity
- Parameters
-
[in] entity Entity to focus view of discrete function [out] localDofs the local dofs vector to be set
- Note
- localDofs should have sufficient size to store the dof values
◆ localFunction() [1/4]
|
inline |
obtain an uninitialized local function (read-write)
- Note
- before calling any method of the local function initialize it passing an entity
- Returns
- an uninitialized local function
◆ localFunction() [2/4]
|
inline |
obtain an uninitialized local function (read-write)
- Note
- before calling any method of the local function initialize it passing an entity
- Returns
- an uninitialized local function
◆ localFunction() [3/4]
|
inline |
obtain a local function for an entity (read-write)
- Parameters
-
[in] entity Entity to focus view of discrete function
- Returns
- a local function associated with the entity
◆ localFunction() [4/4]
|
inline |
obtain a local function for an entity (read-write)
- Parameters
-
[in] entity Entity to focus view of discrete function
- Returns
- a local function associated with the entity
◆ name() [1/2]
|
inline |
obtain the name of the discrete function
- Returns
- string holding name of discrete function
◆ name() [2/2]
|
inline |
obtain the name of the discrete function
- Returns
- string holding name of discrete function
◆ normSquaredDofs()
|
inline |
Squared small l^2 norm of all dofs.
- Note
- This is already parallel, so do not sum over all processes after calling scalarProductDofs!
- It is assumed that the discrete function has been communicated (i.e., every local DoF hat the value of the corresponding global DoF).
- Returns
- the squared norm of the DoF-vectors
◆ operator*=()
|
inline |
multiply all DoFs by a scalar factor
- Parameters
-
[in] scalar factor to muliply all DoFs by
- Returns
- a reference to this discrete function (i.e. *this)
Referenced by Dune::Fem::DiscreteFunctionDefault< Impl >::operator/=().
◆ operator+=()
|
inline |
add another discrete function to this one
- Parameters
-
[in] g discrete function to add
- Returns
- a reference to this discrete function (i.e. *this)
◆ operator-=()
|
inline |
substract all degrees of freedom from given discrete function using the dof iterators
- Parameters
-
[in] g discrete function which is substracted from this discrete function
- Returns
- reference to this (i.e. *this)
◆ operator/=()
|
inline |
devide all DoFs by a scalar factor
- Parameters
-
[in] scalar factor to divide all DoFs by
- Returns
- a reference to this discrete function (i.e. *this)
◆ print()
|
inline |
print all DoFs to a stream (for debugging purposes)
- Parameters
-
[in] out stream to print to
Referenced by Dune::Fem::DiscreteFunctionInterface< Impl >::operator<<().
◆ read()
|
inline |
read the discrete function from a stream
- Parameters
-
[in] in stream to read the discrete function from
- Note
- This call will automatically enable dof compression for this discrete function.
Referenced by Dune::Fem::InStreamInterface< TraitsImp >::operator>>().
◆ scalarProductDofs()
|
inline |
Scalar product between the DoFs of two discrete functions.
- Note
- This is a parallel scalar product, so do not sum over all processes after calling scalarProductDofs!
- It is assumed that the discrete function has been communicated (i.e., every local DoF hat the value of the corresponding global DoF).
- Parameters
-
[in] other discrete function to evaluate the scalar product with
- Returns
- the scalar product of the DoF-vectors
◆ setLocalDofs()
|
inline |
set local Dofs to dof vector associated with the entity
- Parameters
-
[in] entity Entity to focus view of discrete function [in] localDofs the local dofs vector to be set
◆ size()
|
inline |
obtain total number of DoFs
The number of DoFs (degrees of freedom) can also be seen as the size of the discrete function, i.e., the size of the vector that forms this discrete funciton.
- Returns
- total number of DoFs for this discrete function
◆ write()
|
inline |
write the discrete function into a stream
- Parameters
-
[in] out stream to write the discrete function to
Friends And Related Function Documentation
◆ operator<<()
|
related |
write a discrete function into an STL stream
- Parameters
-
[in] out STL stream to write to [in] df discrete function to write
- Returns
- the STL stream (for concatenation)
References Dune::Fem::DiscreteFunctionInterface< Impl >::print().
The documentation for this class was generated from the following files:
- dune/fem/function/common/discretefunction.hh
- dune/fem/function/common/discretefunction_inline.hh