Dune::P1Function< GV, RT, LC, m > Class Template Reference
[Functions Hierarchy]

#include <p1function.hh>

Inheritance diagram for Dune::P1Function< GV, RT, LC, m >:

Dune::GridFunctionGlobalEvalDefault< GV, RT, m > Dune::FunctionDefault< GV::Grid::ctype, RT, GV::Grid::dimension, m > Dune::ElementwiseCInfinityFunction< GV::Grid, RT, m > Dune::H1Function< GV::Grid::ctype, RT, GV::Grid::dimension, m > Dune::C0GridFunction< GV::Grid, RT, m > Dune::FunctionBase< DT, RT, n, m > Dune::DifferentiableGridFunction< G, RT, m > Dune::DifferentiableFunction< DT, RT, n, m > Dune::L2Function< DT, RT, n, m > Dune::GridFunction< G, RT, m > Dune::C0Function< DT, RT, n, m > Dune::GridFunction< G, RT, m > Dune::FunctionBase< DT, RT, n, m > Dune::FunctionBase< DT, RT, n, m > Dune::FunctionBase< G::ctype, RT, G::dimension, m > Dune::FunctionBase< DT, RT, n, m > Dune::FunctionBase< G::ctype, RT, G::dimension, m > Dune::LeafP1Function< G, RT, m > Dune::LevelP1Function< G, RT, m > List of all members.

Detailed Description

template<class GV, class RT, class LC, int m = 1>
class Dune::P1Function< GV, RT, LC, m >

class for P1 finite element functions on a grid

This class implements the interface of a DifferentiableGridFunction with piecewise linear elements using a Lagrange basis. It is implemented using the general shape functions, thus it should work for all element types and dimensions.

In addition to the DifferentiableGridFunction interface P1 functions can be initialized from a C0GridFunction via Lagrange interpolation. Dereferencing delivers the coefficient vector.

GV The grid view


Public Types

enum  
 export dimension of domain and range
typedef DT DomainFieldType
 export type for domain components
typedef RT RangeFieldType
 export type for range components
enum  
 export dimension of domain and range
typedef G::ctype DomainFieldType
 export type for domain components
typedef RT RangeFieldType
 export type for range components

Public Member Functions

 P1Function (const GV &gridView, LC lcomm, bool extendoverlap=false)
 allocate data
 ~P1Function ()
 deallocate the vector
virtual RT derivative (int comp, const Dune::FieldVector< int, n > &d, const Dune::FieldVector< DT, n > &x) const
 evaluate partial derivative
virtual int order () const
 return number of partial derivatives that can be taken
virtual RT evallocal (int comp, const Entity &e, const Dune::FieldVector< DT, n > &xi) const
 evaluate single component comp in the entity e at local coordinates xi
virtual void evalalllocal (const Entity &e, const Dune::FieldVector< DT, G::dimension > &xi, Dune::FieldVector< RT, m > &y) const
 evaluate all components in the entity e at local coordinates xi
virtual RT derivativelocal (int comp, const Dune::FieldVector< int, n > &d, const Entity &e, const Dune::FieldVector< DT, n > &xi) const
 evaluate derivative in local coordinates
void interpolate (const C0GridFunction< G, RT, m > &u)
 interpolate nodal values from a grid function
void interpolate (const P0Function< GV, RT, m > &u)
const RepresentationType & operator * () const
 return const reference to coefficient vector
RepresentationType & operator * ()
 return reference to coefficient vector
void fillIndexInfoFromGrid (P1IndexInfoFromGrid &info)
 deliver communication object
void preAdapt ()
void postAdapt (P1FunctionManager< G, RT > &manager)
 Initiate update process.
const VM & mapper () const
 export the mapper for external use
const GV & gridview () const
 export the gridview for external use
void vtkout (VTKWriter< GV > &vtkwriter, std::string s) const
 VTK output.
virtual RT eval (int comp, const Dune::FieldVector< DT, n > &xi) const
 implement global evaluation with local evaluation
virtual RT eval (int comp, const Dune::FieldVector< DT, n > &x) const=0
 evaluate single component comp at global point x
virtual RT evallocal (int comp, const Entity &e, const Dune::FieldVector< DT, n > &xi) const =0
 evaluate single component comp in the entity e at local coordinates xi
virtual void evalalllocal (const Entity &e, const Dune::FieldVector< DT, GV::Grid::dimension > &xi, Dune::FieldVector< RT, m > &y) const=0
 evaluate all components in the entity e at local coordinates xi
virtual void evalall (const Dune::FieldVector< DT, n > &x, Dune::FieldVector< RT, m > &y) const=0
 evaluate all components at point x and store result in y
virtual void evalall (const Dune::FieldVector< GV::Grid::ctype, n > &x, Dune::FieldVector< RT, m > &y) const
 default implemention for evaluation of all components
virtual RT derivativelocal (int comp, const Dune::FieldVector< int, n > &d, const Entity &e, const Dune::FieldVector< DT, n > &xi) const=0
 evaluate derivative in local coordinates
virtual RT evallocal (int comp, const Entity &e, const Dune::FieldVector< DT, n > &xi) const =0
 evaluate single component comp in the entity e at local coordinates xi
virtual void evalalllocal (const Entity &e, const Dune::FieldVector< DT, G::dimension > &xi, Dune::FieldVector< RT, m > &y) const=0
 evaluate all components in the entity e at local coordinates xi
virtual RT eval (int comp, const Dune::FieldVector< G::ctype, n > &x) const=0
 evaluate single component comp at global point x
virtual void evalall (const Dune::FieldVector< G::ctype, n > &x, Dune::FieldVector< RT, m > &y) const=0
 evaluate all components at point x and store result in y
virtual RT derivative (int comp, const Dune::FieldVector< int, n > &d, const Dune::FieldVector< DT, n > &x) const=0
 evaluate partial derivative

Member Function Documentation

template<class GV, class RT, class LC, int m = 1>
virtual RT Dune::P1Function< GV, RT, LC, m >::derivative ( int  comp,
const Dune::FieldVector< int, n > &  d,
const Dune::FieldVector< DT, n > &  x 
) const [inline, virtual]

evaluate partial derivative

Evaluate partial derivative of a component of the vector-valued function.

Parameters:
[in] comp number of component that should be differentiated
[in] d vector giving order of derivative for each variable
[in] x position where derivative is to be evaluated
Returns:
value of the derivative
Todo:
Not implemented yet!

Implements Dune::DifferentiableFunction< G::ctype, RT, G::dimension, m >.

template<class GV, class RT, class LC, int m = 1>
virtual int Dune::P1Function< GV, RT, LC, m >::order (  )  const [inline, virtual]

return number of partial derivatives that can be taken

A DifferentiableFunction can say how many derivatives exist and can be safely evaluated.

Reimplemented from Dune::H1Function< GV::Grid::ctype, RT, GV::Grid::dimension, m >.

template<class GV, class RT, class LC, int m = 1>
virtual RT Dune::P1Function< GV, RT, LC, m >::evallocal ( int  comp,
const Entity &  e,
const Dune::FieldVector< DT, n > &  xi 
) const [inline, virtual]

evaluate single component comp in the entity e at local coordinates xi

Evaluate the function in an entity at local coordinates.

Parameters:
[in] comp number of component to be evaluated
[in] e reference to grid entity of codimension 0
[in] xi point in local coordinates of the reference element of e
Returns:
value of the component

template<class GV, class RT, class LC, int m = 1>
virtual void Dune::P1Function< GV, RT, LC, m >::evalalllocal ( const Entity &  e,
const Dune::FieldVector< DT, G::dimension > &  xi,
Dune::FieldVector< RT, m > &  y 
) const [inline, virtual]

evaluate all components in the entity e at local coordinates xi

Evaluates all components of a function at once.

Parameters:
[in] e reference to grid entity of codimension 0
[in] xi point in local coordinates of the reference element of e
[out] y vector with values to be filled

template<class GV, class RT, class LC, int m = 1>
virtual RT Dune::P1Function< GV, RT, LC, m >::derivativelocal ( int  comp,
const Dune::FieldVector< int, n > &  d,
const Entity &  e,
const Dune::FieldVector< DT, n > &  xi 
) const [inline, virtual]

evaluate derivative in local coordinates

Evaluate the partial derivative a the given position in local coordinates in an entity.

Parameters:
[in] comp number of component that should be differentiated
[in] d vector giving order of derivative for each variable
[in] e reference to grid entity of codimension 0
[in] xi point in local coordinates of the reference element of e
Returns:
value of the derivative

template<class GV, class RT, class LC, int m = 1>
void Dune::P1Function< GV, RT, LC, m >::interpolate ( const C0GridFunction< G, RT, m > &  u  )  [inline]

interpolate nodal values from a grid function

Lagrange interpolation of a P1 finite element function from given continuous grid function. Evaluation is done by visiting the vertices of each element and storing a bitvector of visited vertices.

Parameters:
[in] u a continuous grid function

template<class GV, class RT, class LC, int m = 1>
void Dune::P1Function< GV, RT, LC, m >::interpolate ( const P0Function< GV, RT, m > &  u  )  [inline]

Todo:
Please doc me!

template<class GV, class RT, class LC, int m = 1>
const RepresentationType& Dune::P1Function< GV, RT, LC, m >::operator * (  )  const [inline]

return const reference to coefficient vector

Dereferencing a finite element function returns the coefficient representation of the finite element function. This is the const version.

template<class GV, class RT, class LC, int m = 1>
RepresentationType& Dune::P1Function< GV, RT, LC, m >::operator * (  )  [inline]

return reference to coefficient vector

Dereferencing a finite element function returns the coefficient representation of the finite element function. This is the non-const version.

template<class GV, class RT, class LC, int m = 1>
void Dune::P1Function< GV, RT, LC, m >::preAdapt (  )  [inline]

empty method to maintain symmetry For vertex data nothing is required in preAdapt but for other finite element functions this method is necessary.

template<class GV, class RT, class LC, int m = 1>
void Dune::P1Function< GV, RT, LC, m >::postAdapt ( P1FunctionManager< G, RT > &  manager  )  [inline]

Initiate update process.

Call this method after the grid has been adapted. The representation is now updated to the new grid and the finite element function can be used on the new grid. However the data is not initialized. The old representation (with respect to the old grid) can still be accessed if it has been saved. It is deleted in endUpdate().

template<class GV, class RT, int m>
virtual RT Dune::GridFunctionGlobalEvalDefault< GV, RT, m >::eval ( int  comp,
const Dune::FieldVector< DT, n > &  xi 
) const [inline, virtual, inherited]

implement global evaluation with local evaluation

The local entity is searched via a hierarchic search

Parameters:
[in] comp number of component to be evaluated
[in] xi point in local coordinates of the reference element of e
Returns:
value of the component

template<class DT, class RT, int n, int m>
virtual RT Dune::FunctionBase< DT, RT, n, m >::eval ( int  comp,
const Dune::FieldVector< DT, n > &  x 
) const [pure virtual, inherited]

virtual RT Dune::GridFunction< GV::Grid , RT , m >::evallocal ( int  comp,
const Entity &  e,
const Dune::FieldVector< DT, n > &  xi 
) const [pure virtual, inherited]

evaluate single component comp in the entity e at local coordinates xi

Evaluate the function in an entity at local coordinates.

Parameters:
[in] comp number of component to be evaluated
[in] e reference to grid entity of codimension 0
[in] xi point in local coordinates of the reference element of e
Returns:
value of the component

virtual void Dune::GridFunction< GV::Grid , RT , m >::evalalllocal ( const Entity &  e,
const Dune::FieldVector< DT, GV::Grid ::dimension > &  xi,
Dune::FieldVector< RT , m > &  y 
) const [pure virtual, inherited]

evaluate all components in the entity e at local coordinates xi

Evaluates all components of a function at once.

Parameters:
[in] e reference to grid entity of codimension 0
[in] xi point in local coordinates of the reference element of e
[out] y vector with values to be filled

template<class DT, class RT, int n, int m>
virtual void Dune::FunctionBase< DT, RT, n, m >::evalall ( const Dune::FieldVector< DT, n > &  x,
Dune::FieldVector< RT, m > &  y 
) const [pure virtual, inherited]

evaluate all components at point x and store result in y

Evaluation function for all components at once.

Parameters:
[in] x position to be evaluated
[out] y result vector to be filled

Implemented in Dune::FunctionDefault< DT, RT, n, m >.

virtual void Dune::FunctionDefault< GV::Grid::ctype , RT , n, m >::evalall ( const Dune::FieldVector< GV::Grid::ctype , n > &  x,
Dune::FieldVector< RT , m > &  y 
) const [inline, virtual, inherited]

default implemention for evaluation of all components

Evaluate all components at once using componentwise evaluation function

Parameters:
[in] x position to be evaluated
[out] y result vector to be filled

template<class G, class RT, int m>
virtual RT Dune::DifferentiableGridFunction< G, RT, m >::derivativelocal ( int  comp,
const Dune::FieldVector< int, n > &  d,
const Entity &  e,
const Dune::FieldVector< DT, n > &  xi 
) const [pure virtual, inherited]

evaluate derivative in local coordinates

Evaluate the partial derivative a the given position in local coordinates in an entity.

Parameters:
[in] comp number of component that should be differentiated
[in] d vector giving order of derivative for each variable
[in] e reference to grid entity of codimension 0
[in] xi point in local coordinates of the reference element of e
Returns:
value of the derivative

Implemented in Dune::DifferentiableGridFunctionDefault< G, RT, m >.

template<class G, class RT, int m>
virtual RT Dune::GridFunction< G, RT, m >::evallocal ( int  comp,
const Entity &  e,
const Dune::FieldVector< DT, n > &  xi 
) const [pure virtual, inherited]

evaluate single component comp in the entity e at local coordinates xi

Evaluate the function in an entity at local coordinates.

Parameters:
[in] comp number of component to be evaluated
[in] e reference to grid entity of codimension 0
[in] xi point in local coordinates of the reference element of e
Returns:
value of the component

Implemented in Dune::GridFunctionDefault< G, RT, m >, and Dune::GridFunctionDefault< G, RT, G::dimension >.

template<class G, class RT, int m>
virtual void Dune::GridFunction< G, RT, m >::evalalllocal ( const Entity &  e,
const Dune::FieldVector< DT, G::dimension > &  xi,
Dune::FieldVector< RT, m > &  y 
) const [pure virtual, inherited]

evaluate all components in the entity e at local coordinates xi

Evaluates all components of a function at once.

Parameters:
[in] e reference to grid entity of codimension 0
[in] xi point in local coordinates of the reference element of e
[out] y vector with values to be filled

Implemented in Dune::GridFunctionDefault< G, RT, m >, and Dune::GridFunctionDefault< G, RT, G::dimension >.

virtual RT Dune::FunctionBase< G::ctype , RT , n, m >::eval ( int  comp,
const Dune::FieldVector< G::ctype , n > &  x 
) const [pure virtual, inherited]

virtual void Dune::FunctionBase< G::ctype , RT , n, m >::evalall ( const Dune::FieldVector< G::ctype , n > &  x,
Dune::FieldVector< RT , m > &  y 
) const [pure virtual, inherited]

evaluate all components at point x and store result in y

Evaluation function for all components at once.

Parameters:
[in] x position to be evaluated
[out] y result vector to be filled

template<class DT, class RT, int n, int m>
virtual RT Dune::DifferentiableFunction< DT, RT, n, m >::derivative ( int  comp,
const Dune::FieldVector< int, n > &  d,
const Dune::FieldVector< DT, n > &  x 
) const [pure virtual, inherited]

evaluate partial derivative

Evaluate partial derivative of a component of the vector-valued function.

Parameters:
[in] comp number of component that should be differentiated
[in] d vector giving order of derivative for each variable
[in] x position where derivative is to be evaluated
Returns:
value of the derivative

Implemented in Dune::DifferentiableGridFunctionAdapter< G, RT, m >, Dune::DifferentiableFunctionDefault< DT, RT, n, m >, Dune::P1Function< GV, RT, LC, m >, Dune::GridFunctionGlobalDifferentiationDefault< GV, RT, 1 >, Dune::GridFunctionGlobalDifferentiationDefault< G::LeafGridView, RT, 1 >, Dune::GridFunctionGlobalDifferentiationDefault< G::LevelGridView, RT, 1 >, Dune::P1Function< G::LevelGridView, RT, Dune::LevelCommunicate< G >, m >, and Dune::P1Function< G::LeafGridView, RT, Dune::LeafCommunicate< G >, m >.


The documentation for this class was generated from the following file:

Generated on 6 Jan 2009 with Doxygen (ver 1.5.1) [logfile].