NGSolve  4.9
Public Member Functions | Public Attributes | Protected Attributes
ngcomp::FESpace Class Reference

Base class for finite element space. More...

#include <fespace.hpp>

Inheritance diagram for ngcomp::FESpace:
ngcomp::NGS_Object ngcomp::CompoundFESpace ngcomp::ElementFESpace ngcomp::FacetFESpace ngcomp::H1HighOrderFESpace ngcomp::HCurlHighOrderFESpace ngcomp::HDivHighOrderFESpace ngcomp::L2HighOrderFESpace ngcomp::L2SurfaceHighOrderFESpace ngcomp::NedelecFESpace ngcomp::NedelecFESpace2 ngcomp::NodalFESpace ngcomp::NonconformingFESpace ngcomp::RaviartThomasFESpace ngcomp::SurfaceElementFESpace ngcomp::VectorFacetFESpace

List of all members.

Public Member Functions

 FESpace (const MeshAccess &ama, const Flags &flags, bool checkflags=false)
 Constructor.
virtual void Update (LocalHeap &lh)
 update dof-tables, old style
virtual void FinalizeUpdate (LocalHeap &lh)
 update element coloring
int GetLevelUpdated () const
 highest level where update/finalize was called
const Table< int > & ElementColoring () const
virtual void PrintReport (ostream &ost)
 print report to stream
int GetOrder () const
 order of finite elements
int GetDimension () const
 how many components
bool IsComplex () const
 complex space ?
virtual int GetNDof () const =0
 number of dofs of process
virtual int GetNDofLevel (int level) const
 number of dofs on the level
const FiniteElementGetFE (int elnr, bool boundary, LocalHeap &lh) const
 returns finite element.
virtual const FiniteElementGetFE (int elnr, LocalHeap &lh) const
 returns finite element.
virtual void GetDofNrs (int elnr, Array< int > &dnums) const =0
 get dof-nrs of the element
void GetDofNrs (int elnr, bool boundary, Array< int > &dnums) const
 get dof-nrs of domain or boundary element elnr
virtual void GetDofCouplingTypes (int elnr, Array< COUPLING_TYPE > &dnums) const
 get coupling types of dofs
virtual COUPLING_TYPE GetDofCouplingType (int dof) const
 get coupling types of dof
void GetDofNrs (int elnr, Array< int > &dnums, COUPLING_TYPE ctype) const
 get dof-nrs of the element of certain coupling type
virtual void GetNodeDofNrs (NODE_TYPE nt, int nr, Array< int > &dnums) const
 get dofs on nr'th node of type nt.
virtual void GetVertexDofNrs (int vnr, Array< int > &dnums) const
 get number of low-order dofs for node of type nt
virtual void GetEdgeDofNrs (int ednr, Array< int > &dnums) const
 get dofs on edge enr
virtual void GetFaceDofNrs (int fanr, Array< int > &dnums) const
 get dofs on face fnr
virtual void GetInnerDofNrs (int elnr, Array< int > &dnums) const
 get dofs on element (=cell) elnr
virtual bool UsesDGCoupling () const
virtual const FiniteElementGetSFE (int selnr, LocalHeap &lh) const
 returns surface element for boundary interals
virtual void GetSDofNrs (int selnr, Array< int > &dnums) const =0
 returns dofs of sourface element
bool DefinedOn (int domnr) const
 is the FESpace defined for this sub-domain nr ?
bool DefinedOnBoundary (int bnr) const
 is the FESpace defined for this boundary nr ?
void SetDefinedOn (const BitArray &defon)
void SetDefinedOnBoundary (const BitArray &defon)
void SetDirichletBoundaries (const BitArray &dirbnds)
const FiniteElementGetFE (ELEMENT_TYPE type) const
 Get reference element for tet, prism, trig, etc ..
FESpaceLowOrderFESpace ()
 according low-order FESpace (if available)
const FESpaceLowOrderFESpace () const
 according low-order FESpace (if available)
void SetLowOrderSpace (bool los)
bool IsLowOrderSpace () const
virtual const BitArrayGetFreeDofs (bool external=false) const
 non Dirichlet dofs
bool IsDirichletDof (int i) const
bool IsDirichletBoundary (int i) const
bool IsDirichletVertex (int i) const
 is vertex on Dirichlet boundary ?
bool IsDirichletEdge (int i) const
 is edge on Dirichlet boundary ?
bool IsDirichletFace (int i) const
 is face on Dirichlet boundary ?
void GetFilteredDofs (COUPLING_TYPE doffilter, BitArray &output, bool freedofsonly=true) const
virtual Table< int > * CreateSmoothingBlocks (const Flags &flags) const
virtual Array< int > * CreateDirectSolverClusters (const Flags &flags) const
 for anisotropic plane smoothing:
virtual void AddDirectSolverClusterDof (int dn) const
virtual Array< int > & DirectVertexClusters (void)
virtual Array< int > & DirectEdgeClusters (void)
virtual Array< int > & DirectFaceClusters (void)
virtual Array< int > & DirectElementClusters (void)
void TransformMat (int elnr, bool boundary, const SliceMatrix< double > &mat, TRANSFORM_TYPE type) const
void TransformMat (int elnr, bool boundary, const SliceMatrix< Complex > &mat, TRANSFORM_TYPE type) const
void TransformVec (int elnr, bool boundary, const FlatVector< double > &vec, TRANSFORM_TYPE type) const
void TransformVec (int elnr, bool boundary, const FlatVector< Complex > &vec, TRANSFORM_TYPE type) const
template<int S, class T >
void TransformVec (int elnr, bool boundary, const FlatVector< Vec< S, T > > &vec, TRANSFORM_TYPE type) const
virtual void VTransformMR (int elnr, bool boundary, const SliceMatrix< double > &mat, TRANSFORM_TYPE type) const
virtual void VTransformMC (int elnr, bool boundary, const SliceMatrix< Complex > &mat, TRANSFORM_TYPE type) const
virtual void VTransformVR (int elnr, bool boundary, const FlatVector< double > &vec, TRANSFORM_TYPE type) const
virtual void VTransformVC (int elnr, bool boundary, const FlatVector< Complex > &vec, TRANSFORM_TYPE type) const
virtual const ngmg::ProlongationGetProlongation () const
 Returns multigrid-prolongation.
const DifferentialOperatorGetEvaluator (bool boundary=false) const
 Set multigrid prolongation.
const BilinearFormIntegratorGetIntegrator (bool boundary=false) const
 returns function-evaluator
const DifferentialOperatorGetBoundaryEvaluator () const
 returns function-evaluator for boundary values
const BilinearFormIntegratorGetBoundaryIntegrator () const
void AppendSpecialElement (SpecialElement *spel)
const Array< SpecialElement * > & GetSpecialElements () const
ParallelDofs & GetParallelDofs () const
virtual void UpdateParallelDofs ()
bool IsParallel () const
int GetNDofGlobal () const
 ndof over all mpi-partitions
virtual int GetRelOrder () const
virtual bool VarOrder () const
void Timing () const

Public Attributes

Array< SpecialElement * > specialelements
 special elements for hacks (used for contact, periodic-boundary-penalty-constraints, ...
bool timing

Protected Attributes

int order
 order of finite elements
int dimension
 how many components
bool iscomplex
 complex space
bool dgjumps
 couple (all) neighbouring degrees of freedom (like for jump terms of dg-methods)?
bool print
 debug output to testout
ngmg::Prolongationprol
 prolongation operators between multigrid levels
int level_updated
 highest multigrid-level for which Update was called (memory allocation)
Array< int > definedon
 on which subdomains is the space defined ?
Array< int > definedonbound
 on which boundaries is the space defined ?
BitArray dirichlet_boundaries
 prototype: what are the Dirichlet boundaries ?
BitArray dirichlet_dofs
 dofs on Dirichlet boundary
BitArray free_dofs
BitArray external_free_dofs
Array< bool > dirichlet_vertex
Array< bool > dirichlet_edge
Array< bool > dirichlet_face
FiniteElementtet
 Reference - element (low order only)
FiniteElementprism
 Reference - element (low order only)
FiniteElementpyramid
 Reference - element (low order only)
FiniteElementhex
 Reference - element (low order only)
FiniteElementtrig
 Reference - element (low order only)
FiniteElementquad
 Reference - element (low order only)
FiniteElementsegm
 Reference - element (low order only)
FiniteElementpoint
 Reference - element (low order only)
DifferentialOperatorevaluator
 Evaluator for visualization (future style)
DifferentialOperatorboundary_evaluator
 Evaluator for visualization of boundary data.
BilinearFormIntegratorintegrator
 Evaluator for visualization (old style)
BilinearFormIntegratorboundary_integrator
 Evaluator for visualization of boundary data.
FESpacelow_order_space
 if non-zero, pointer to low order space
bool is_low_order_space
Array< bool > directsolverclustered
 if directsolverclustered[i] is true, then the unknowns of domain i are clustered
Array< string > directsolvermaterials
Array< int > adddirectsolverdofs
Array< int > directvertexclusters
Array< int > directedgeclusters
Array< int > directfaceclusters
Array< int > directelementclusters
Table< int > * element_coloring
Array< COUPLING_TYPEctofdof
ParallelDofs * paralleldofs

Detailed Description

Base class for finite element space.

Provides finite elements, global degrees of freedom, and transformations of element-matrices and element-vectors


Constructor & Destructor Documentation

ngcomp::FESpace::FESpace ( const MeshAccess ama,
const Flags flags,
bool  checkflags = false 
)

Constructor.

Used flags are: \ -order=<int>: finite element order \ -dim=<int>: number of components \ -complex: complex space \ -dirichlet=<int-list>: dirichlet boundaries, 1-based \


Member Function Documentation

const DifferentialOperator* ngcomp::FESpace::GetEvaluator ( bool  boundary = false) const [inline]

Set multigrid prolongation.

returns function-evaluator

virtual void ngcomp::FESpace::GetVertexDofNrs ( int  vnr,
Array< int > &  dnums 
) const [virtual]
virtual void ngcomp::FESpace::Update ( LocalHeap lh) [virtual]

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