NGSolve
4.9
|
Base class for finite element space. More...
#include <fespace.hpp>
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 FiniteElement & | GetFE (int elnr, bool boundary, LocalHeap &lh) const |
returns finite element. | |
virtual const FiniteElement & | GetFE (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 FiniteElement & | GetSFE (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 FiniteElement & | GetFE (ELEMENT_TYPE type) const |
Get reference element for tet, prism, trig, etc .. | |
FESpace & | LowOrderFESpace () |
according low-order FESpace (if available) | |
const FESpace & | LowOrderFESpace () const |
according low-order FESpace (if available) | |
void | SetLowOrderSpace (bool los) |
bool | IsLowOrderSpace () const |
virtual const BitArray * | GetFreeDofs (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::Prolongation * | GetProlongation () const |
Returns multigrid-prolongation. | |
const DifferentialOperator * | GetEvaluator (bool boundary=false) const |
Set multigrid prolongation. | |
const BilinearFormIntegrator * | GetIntegrator (bool boundary=false) const |
returns function-evaluator | |
const DifferentialOperator * | GetBoundaryEvaluator () const |
returns function-evaluator for boundary values | |
const BilinearFormIntegrator * | GetBoundaryIntegrator () 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 | |
debug output to testout | |
ngmg::Prolongation * | prol |
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 |
FiniteElement * | tet |
Reference - element (low order only) | |
FiniteElement * | prism |
Reference - element (low order only) | |
FiniteElement * | pyramid |
Reference - element (low order only) | |
FiniteElement * | hex |
Reference - element (low order only) | |
FiniteElement * | trig |
Reference - element (low order only) | |
FiniteElement * | quad |
Reference - element (low order only) | |
FiniteElement * | segm |
Reference - element (low order only) | |
FiniteElement * | point |
Reference - element (low order only) | |
DifferentialOperator * | evaluator |
Evaluator for visualization (future style) | |
DifferentialOperator * | boundary_evaluator |
Evaluator for visualization of boundary data. | |
BilinearFormIntegrator * | integrator |
Evaluator for visualization (old style) | |
BilinearFormIntegrator * | boundary_integrator |
Evaluator for visualization of boundary data. | |
FESpace * | low_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_TYPE > | ctofdof |
ParallelDofs * | paralleldofs |
Base class for finite element space.
Provides finite elements, global degrees of freedom, and transformations of element-matrices and element-vectors
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 \
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] |
get number of low-order dofs for node of type nt
get dofs on vertex vnr
Reimplemented in ngcomp::CompoundFESpace, ngcomp::ElementFESpace, ngcomp::NodalFESpace, ngcomp::NedelecFESpace2, ngcomp::L2SurfaceHighOrderFESpace, ngcomp::NedelecFESpace, ngcomp::HCurlHighOrderFESpace, ngcomp::FacetFESpace, ngcomp::HDivHighOrderFESpace, ngcomp::VectorFacetFESpace, ngcomp::H1HighOrderFESpace, and ngcomp::L2HighOrderFESpace.
virtual void ngcomp::FESpace::Update | ( | LocalHeap & | lh | ) | [virtual] |
update dof-tables, old style
update dof-table
Reimplemented in ngcomp::CompoundFESpace, ngcomp::SurfaceElementFESpace, ngcomp::ElementFESpace, ngcomp::NonconformingFESpace, ngcomp::NodalFESpace, ngcomp::NedelecFESpace2, ngcomp::L2SurfaceHighOrderFESpace, ngcomp::HCurlHighOrderFESpace, ngcomp::HDivHighOrderFESpace, ngcomp::H1HighOrderFESpace, ngcomp::FacetFESpace, ngcomp::VectorFacetFESpace, ngcomp::L2HighOrderFESpace, ngcomp::NedelecFESpace, and ngcomp::RaviartThomasFESpace.