MFEM v2.0
|
Abstract finite element space. More...
#include <fespace.hpp>
Public Member Functions | |
FiniteElementSpace (Mesh *m, const FiniteElementCollection *f, int dim=1, int order=Ordering::byNODES) | |
Mesh * | GetMesh () const |
Returns the mesh. | |
NURBSExtension * | GetNURBSext () |
int | GetVDim () const |
Returns vector dimension. | |
int | GetOrder (int i) const |
Returns the order of the i'th finite element. | |
int | GetNDofs () const |
Returns number of degrees of freedom. | |
int | GetVSize () const |
int | GetOrdering () const |
Return the ordering method. | |
const FiniteElementCollection * | FEColl () const |
int | GetNVDofs () const |
int | GetNEDofs () const |
int | GetNFDofs () const |
int | GetNE () const |
Returns number of elements in the mesh. | |
int | GetNV () const |
Returns number of nodes in the mesh. | |
int | GetNBE () const |
Returns number of boundary elements in the mesh. | |
int | GetElementType (int i) const |
Returns the type of element i. | |
void | GetElementVertices (int i, Array< int > &vertices) const |
Returns the vertices of element i. | |
int | GetBdrElementType (int i) const |
Returns the type of boundary element i. | |
ElementTransformation * | GetElementTransformation (int i) const |
Returns ElementTransformation for the i'th element. | |
void | GetElementTransformation (int i, IsoparametricTransformation *ElTr) |
ElementTransformation * | GetBdrElementTransformation (int i) const |
Returns ElementTransformation for the i'th boundary element. | |
int | GetAttribute (int i) |
int | GetBdrAttribute (int i) |
virtual void | GetElementDofs (int i, Array< int > &dofs) const |
Returns indexes of degrees of freedom in array dofs for i'th element. | |
virtual void | GetBdrElementDofs (int i, Array< int > &dofs) const |
Returns indexes of degrees of freedom for i'th boundary element. | |
void | GetFaceDofs (int i, Array< int > &dofs) const |
void | GetEdgeDofs (int i, Array< int > &dofs) const |
void | GetElementInteriorDofs (int i, Array< int > &dofs) const |
void | GetEdgeInteriorDofs (int i, Array< int > &dofs) const |
void | DofsToVDofs (Array< int > &dofs) const |
void | DofsToVDofs (int vd, Array< int > &dofs) const |
int | DofToVDof (int dof, int vd) const |
int | VDofToDof (int vdof) const |
void | GetElementVDofs (int i, Array< int > &dofs) const |
Returns indexes of degrees of freedom in array dofs for i'th element. | |
void | GetBdrElementVDofs (int i, Array< int > &dofs) const |
Returns indexes of degrees of freedom for i'th boundary element. | |
void | GetFaceVDofs (int iF, Array< int > &dofs) const |
Returns indexes of degrees of freedom for i'th face element. | |
void | GetEdgeVDofs (int iE, Array< int > &dofs) const |
Returns indexes of degrees of freedom for i'th edge. | |
void | GetElementInteriorVDofs (int i, Array< int > &vdofs) const |
void | GetEdgeInteriorVDofs (int i, Array< int > &vdofs) const |
void | BuildElementToDofTable () |
void | BuildDofToArrays () |
const Table & | GetElementToDofTable () const |
int | GetElementForDof (int i) |
int | GetLocalDofForDof (int i) |
const FiniteElement * | GetFE (int i) const |
Returns pointer to the FiniteElement associated with i'th element. | |
const FiniteElement * | GetBE (int i) const |
Returns pointer to the FiniteElement for the i'th boundary element. | |
SparseMatrix * | GlobalRestrictionMatrix (FiniteElementSpace *cfes, int one_vdim=-1) |
virtual void | GetEssentialVDofs (Array< int > &bdr_attr_is_ess, Array< int > &ess_dofs) |
Determine the boundary degrees of freedom. | |
void | EliminateEssentialBCFromGRM (FiniteElementSpace *cfes, Array< int > &bdr_attr_is_ess, SparseMatrix *R) |
SparseMatrix * | GlobalRestrictionMatrix (FiniteElementSpace *cfes, Array< int > &bdr_attr_is_ess, int one_vdim=-1) |
Generate the global restriction matrix with eliminated essential bc. | |
SparseMatrix * | D2C_GlobalRestrictionMatrix (FiniteElementSpace *cfes) |
SparseMatrix * | D2Const_GlobalRestrictionMatrix (FiniteElementSpace *cfes) |
SparseMatrix * | H2L_GlobalRestrictionMatrix (FiniteElementSpace *lfes) |
virtual void | Update () |
virtual FiniteElementSpace * | SaveUpdate () |
Return a copy of the current FE space and update. | |
void | Save (ostream &out) const |
virtual | ~FiniteElementSpace () |
Static Public Member Functions | |
static void | AdjustVDofs (Array< int > &vdofs) |
Protected Member Functions | |
void | UpdateNURBS () |
void | Constructor () |
void | Destructor () |
FiniteElementSpace (FiniteElementSpace &) | |
void | ConstructRefinementData (int k, int cdofs, RefinementType type) |
Constructs new refinement data using coarse element k as a template. | |
DenseMatrix * | LocalInterpolation (int k, int cdofs, RefinementType type, Array< int > &rows) |
Generates the local interpolation matrix for coarse element k. | |
Protected Attributes | |
Mesh * | mesh |
The mesh that FE space lives on. | |
int | vdim |
Vector dimension (number of unknowns per degree of freedom). | |
int | ndofs |
Number of degrees of freedom. Number of unknowns are ndofs*vdim. | |
int | ordering |
const FiniteElementCollection * | fec |
int | nvdofs |
int | nedofs |
int | nfdofs |
int | nbdofs |
int * | fdofs |
int * | bdofs |
Array< RefinementData * > | RefData |
Collection of currently known refinement data. | |
Table * | elem_dof |
Table * | bdrElem_dof |
Array< int > | dof_elem_array |
Array< int > | dof_ldof_array |
NURBSExtension * | NURBSext |
int | own_ext |
Abstract finite element space.
Definition at line 52 of file fespace.hpp.
FiniteElementSpace::FiniteElementSpace | ( | FiniteElementSpace & | fes | ) | [protected] |
Definition at line 420 of file fespace.cpp.
References bdofs, bdrElem_dof, dof_elem_array, dof_ldof_array, elem_dof, fdofs, fec, mesh, nbdofs, ndofs, nedofs, nfdofs, NURBSext, nvdofs, ordering, own_ext, Swap(), and vdim.
Referenced by SaveUpdate().
FiniteElementSpace::FiniteElementSpace | ( | Mesh * | m, |
const FiniteElementCollection * | f, | ||
int | dim = 1 , |
||
int | order = Ordering::byNODES |
||
) |
Definition at line 448 of file fespace.cpp.
References Constructor(), fec, NURBSExtension::GetOrder(), NURBSFECollection::GetOrder(), mesh, mfem_error(), NURBSext, Mesh::NURBSext, ordering, own_ext, UpdateNURBS(), and vdim.
FiniteElementSpace::~FiniteElementSpace | ( | ) | [virtual] |
Definition at line 799 of file fespace.cpp.
References Destructor(), RefData, and Array< T >::Size().
void FiniteElementSpace::AdjustVDofs | ( | Array< int > & | vdofs | ) | [static] |
Definition at line 101 of file fespace.cpp.
References Array< T >::Size().
void FiniteElementSpace::BuildDofToArrays | ( | ) |
Definition at line 173 of file fespace.cpp.
References BuildElementToDofTable(), dof_elem_array, dof_ldof_array, elem_dof, GetNE(), mesh, ndofs, Array< T >::SetSize(), and Array< T >::Size().
void FiniteElementSpace::BuildElementToDofTable | ( | ) |
Definition at line 150 of file fespace.cpp.
References elem_dof, GetElementDofs(), GetNE(), mesh, and Array< T >::Size().
Referenced by BuildDofToArrays().
void FiniteElementSpace::Constructor | ( | ) | [protected] |
Definition at line 508 of file fespace.cpp.
References bdofs, bdrElem_dof, Mesh::Dimension(), FiniteElementCollection::DofForGeometry(), elem_dof, fdofs, fec, Mesh::GetElementBaseGeometry(), Mesh::GetFaceBaseGeometry(), Mesh::GetNE(), Mesh::GetNEdges(), Mesh::GetNFaces(), Mesh::GetNV(), mesh, nbdofs, ndofs, nedofs, nfdofs, nvdofs, Geometry::POINT, and Geometry::SEGMENT.
Referenced by FiniteElementSpace(), SaveUpdate(), and Update().
void FiniteElementSpace::ConstructRefinementData | ( | int | k, |
int | cdofs, | ||
RefinementType | type | ||
) | [protected] |
Constructs new refinement data using coarse element k as a template.
Definition at line 846 of file fespace.cpp.
References Array< T >::Append(), fec, Mesh::GetElementBaseGeometry(), GetElementDofs(), RefinementData::I, mesh, nedofs, RefData, Array< T >::Size(), and Array< T >::Union().
SparseMatrix * FiniteElementSpace::D2C_GlobalRestrictionMatrix | ( | FiniteElementSpace * | cfes | ) |
Generate the global restriction matrix from a discontinuous FE space to the continuous FE space of the same polynomial degree.
Definition at line 325 of file fespace.cpp.
References GetElementVDofs(), GetNE(), GetVSize(), mesh, mfem_error(), and Array< T >::Size().
SparseMatrix * FiniteElementSpace::D2Const_GlobalRestrictionMatrix | ( | FiniteElementSpace * | cfes | ) |
Generate the global restriction matrix from a discontinuous FE space to the piecewise constant FE space.
Definition at line 353 of file fespace.cpp.
References GetElementDofs(), GetNDofs(), GetNE(), mesh, mfem_error(), ndofs, and Array< T >::Size().
void FiniteElementSpace::Destructor | ( | ) | [protected] |
Definition at line 807 of file fespace.cpp.
References bdofs, bdrElem_dof, Array< T >::DeleteAll(), dof_elem_array, dof_ldof_array, elem_dof, fdofs, NURBSext, and own_ext.
Referenced by Update(), and ~FiniteElementSpace().
void FiniteElementSpace::DofsToVDofs | ( | int | vd, |
Array< int > & | dofs | ||
) | const |
Definition at line 55 of file fespace.cpp.
References Ordering::byNODES, ndofs, ordering, Array< T >::Size(), and vdim.
void FiniteElementSpace::DofsToVDofs | ( | Array< int > & | dofs | ) | const |
Definition at line 24 of file fespace.cpp.
References Ordering::byNODES, Ordering::byVDIM, ndofs, ordering, Array< T >::SetSize(), Array< T >::Size(), and vdim.
Referenced by GetBdrElementVDofs(), GetEdgeInteriorVDofs(), GetEdgeVDofs(), GetElementInteriorVDofs(), GetElementVDofs(), GetFaceVDofs(), GridFunction::GetValue(), Mesh::Load(), and Mesh::PrintVTK().
int FiniteElementSpace::DofToVDof | ( | int | dof, |
int | vd | ||
) | const |
Definition at line 83 of file fespace.cpp.
References Ordering::byNODES, ndofs, ordering, and vdim.
Referenced by GridFunction::ProjectCoefficient().
void FiniteElementSpace::EliminateEssentialBCFromGRM | ( | FiniteElementSpace * | cfes, |
Array< int > & | bdr_attr_is_ess, | ||
SparseMatrix * | R | ||
) |
Definition at line 288 of file fespace.cpp.
References Array< T >::Size(), and Mesh::TWO_LEVEL_COARSE.
const FiniteElementCollection* FiniteElementSpace::FEColl | ( | ) | const [inline] |
Definition at line 123 of file fespace.hpp.
References fec.
Referenced by GridFunction::GridFunction(), Mesh::Load(), and Mesh::PrintVTK().
int FiniteElementSpace::GetAttribute | ( | int | i | ) | [inline] |
Definition at line 163 of file fespace.hpp.
References GetAttribute(), and mesh.
Referenced by GetAttribute(), GridFunction::GetFaceValues(), GridFunction::GetFaceVectorValues(), and ZZErrorEstimator().
int FiniteElementSpace::GetBdrAttribute | ( | int | i | ) | [inline] |
Definition at line 165 of file fespace.hpp.
References GetBdrAttribute(), and mesh.
Referenced by GetBdrAttribute(), GetEssentialVDofs(), GridFunction::ProjectBdrCoefficient(), GridFunction::ProjectBdrCoefficientNormal(), and GridFunction::ProjectBdrCoefficientTangent().
void FiniteElementSpace::GetBdrElementDofs | ( | int | i, |
Array< int > & | dofs | ||
) | const [virtual] |
Returns indexes of degrees of freedom for i'th boundary element.
Reimplemented in ParFiniteElementSpace.
Definition at line 644 of file fespace.cpp.
References bdrElem_dof, Mesh::Dimension(), FiniteElementCollection::DofForGeometry(), FiniteElementCollection::DofOrderForOrientation(), fdofs, fec, Mesh::GetBdrElementBaseGeometry(), Mesh::GetBdrElementEdges(), Mesh::GetBdrElementFace(), Mesh::GetBdrElementVertices(), Table::GetRow(), mesh, nedofs, nvdofs, Geometry::POINT, Geometry::SEGMENT, Array< T >::SetSize(), and Array< T >::Size().
Referenced by GetBdrElementVDofs(), GridFunction::ProjectBdrCoefficientNormal(), and GridFunction::ProjectBdrCoefficientTangent().
ElementTransformation* FiniteElementSpace::GetBdrElementTransformation | ( | int | i | ) | const [inline] |
Returns ElementTransformation for the i'th boundary element.
Definition at line 160 of file fespace.hpp.
References GetBdrElementTransformation(), and mesh.
Referenced by GetBdrElementTransformation(), GridFunction::ProjectBdrCoefficient(), GridFunction::ProjectBdrCoefficientNormal(), and GridFunction::ProjectBdrCoefficientTangent().
int FiniteElementSpace::GetBdrElementType | ( | int | i | ) | const [inline] |
Returns the type of boundary element i.
Definition at line 147 of file fespace.hpp.
References GetBdrElementType(), and mesh.
Referenced by GetBdrElementType().
void FiniteElementSpace::GetBdrElementVDofs | ( | int | i, |
Array< int > & | dofs | ||
) | const |
Returns indexes of degrees of freedom for i'th boundary element.
Definition at line 118 of file fespace.cpp.
References DofsToVDofs(), and GetBdrElementDofs().
Referenced by Mesh::GetBdrElementTransformation(), GridFunction::GetBdrValuesFrom(), GetEssentialVDofs(), and GridFunction::ProjectBdrCoefficient().
const FiniteElement * FiniteElementSpace::GetBE | ( | int | i | ) | const |
Returns pointer to the FiniteElement for the i'th boundary element.
Definition at line 778 of file fespace.cpp.
References Mesh::Dimension(), fec, FiniteElementCollection::FiniteElementForGeometry(), Mesh::GetBdrElementBaseGeometry(), NURBSExtension::LoadBE(), mesh, NURBSext, Geometry::POINT, and Geometry::SEGMENT.
Referenced by LinearForm::Assemble(), BilinearForm::Assemble(), Mesh::GetBdrElementTransformation(), GridFunction::GetBdrValuesFrom(), GridFunction::ProjectBdrCoefficient(), GridFunction::ProjectBdrCoefficientNormal(), and GridFunction::ProjectBdrCoefficientTangent().
void FiniteElementSpace::GetEdgeDofs | ( | int | i, |
Array< int > & | dofs | ||
) | const |
Returns the indexes of the degrees of freedom for i'th edge including the dofs for the vertices of the edge.
Definition at line 737 of file fespace.cpp.
References FiniteElementCollection::DofForGeometry(), fec, Mesh::GetEdgeVertices(), mesh, nvdofs, Geometry::POINT, Geometry::SEGMENT, and Array< T >::SetSize().
Referenced by GetEdgeVDofs().
void FiniteElementSpace::GetEdgeInteriorDofs | ( | int | i, |
Array< int > & | dofs | ||
) | const |
Definition at line 768 of file fespace.cpp.
References fec, nvdofs, Geometry::SEGMENT, and Array< T >::SetSize().
Referenced by GetEdgeInteriorVDofs().
void FiniteElementSpace::GetEdgeInteriorVDofs | ( | int | i, |
Array< int > & | vdofs | ||
) | const |
Definition at line 143 of file fespace.cpp.
References DofsToVDofs(), and GetEdgeInteriorDofs().
void FiniteElementSpace::GetEdgeVDofs | ( | int | iE, |
Array< int > & | dofs | ||
) | const |
Returns indexes of degrees of freedom for i'th edge.
Definition at line 130 of file fespace.cpp.
References DofsToVDofs(), and GetEdgeDofs().
void FiniteElementSpace::GetElementDofs | ( | int | i, |
Array< int > & | dofs | ||
) | const [virtual] |
Returns indexes of degrees of freedom in array dofs for i'th element.
Reimplemented in ParFiniteElementSpace.
Definition at line 558 of file fespace.cpp.
References bdofs, Mesh::Dimension(), FiniteElementCollection::DofForGeometry(), FiniteElementCollection::DofOrderForOrientation(), elem_dof, fdofs, fec, Mesh::GetElementBaseGeometry(), Mesh::GetElementEdges(), Mesh::GetElementFaces(), Mesh::GetElementVertices(), Mesh::GetFaceBaseGeometry(), FiniteElementCollection::HasFaceDofs(), mesh, nedofs, nfdofs, nvdofs, Geometry::POINT, Geometry::SEGMENT, Array< T >::SetSize(), and Array< T >::Size().
Referenced by BuildElementToDofTable(), ConstructRefinementData(), D2Const_GlobalRestrictionMatrix(), GridFunction::GetDerivative(), GridFunction::GetDivergence(), GridFunction::GetElementAverages(), GetElementVDofs(), GridFunction::GetGradients(), GridFunction::GetValue(), H2L_GlobalRestrictionMatrix(), Mesh::Load(), and Mesh::PrintVTK().
int FiniteElementSpace::GetElementForDof | ( | int | i | ) | [inline] |
Definition at line 218 of file fespace.hpp.
References dof_elem_array.
Referenced by GridFunction::ProjectCoefficient().
void FiniteElementSpace::GetElementInteriorDofs | ( | int | i, |
Array< int > & | dofs | ||
) | const |
Definition at line 756 of file fespace.cpp.
References bdofs, fec, mesh, nedofs, nfdofs, nvdofs, and Array< T >::SetSize().
Referenced by GetElementInteriorVDofs().
void FiniteElementSpace::GetElementInteriorVDofs | ( | int | i, |
Array< int > & | vdofs | ||
) | const |
Definition at line 136 of file fespace.cpp.
References DofsToVDofs(), and GetElementInteriorDofs().
const Table& FiniteElementSpace::GetElementToDofTable | ( | ) | const [inline] |
Definition at line 216 of file fespace.hpp.
References elem_dof.
ElementTransformation* FiniteElementSpace::GetElementTransformation | ( | int | i | ) | const [inline] |
Returns ElementTransformation for the i'th element.
Definition at line 151 of file fespace.hpp.
References GetElementTransformation(), and mesh.
Referenced by DiscreteLinearOperator::Assemble(), BilinearForm::Assemble(), BilinearForm::ComputeElementMatrices(), BilinearForm::ComputeElementMatrix(), ComputeFlux(), GridFunction::ComputeL1Error(), GridFunction::ComputeL2Error(), GridFunction::ComputeMaxError(), GridFunction::ComputeW11Error(), GridFunction::GetDerivative(), GridFunction::GetElementAverages(), GetElementTransformation(), GridFunction::GetGradients(), GridFunction::GetNodalValues(), GridFunction::GetValues(), GridFunction::GetVectorFieldValues(), GridFunction::GetVectorValue(), GridFunction::GetVectorValues(), GridFunction::ProjectCoefficient(), and ZZErrorEstimator().
void FiniteElementSpace::GetElementTransformation | ( | int | i, |
IsoparametricTransformation * | ElTr | ||
) | [inline] |
Returns the transformation defining the i-th element in the user-defined variable.
Definition at line 156 of file fespace.hpp.
References Mesh::GetElementTransformation(), and mesh.
int FiniteElementSpace::GetElementType | ( | int | i | ) | const [inline] |
Returns the type of element i.
Definition at line 139 of file fespace.hpp.
References GetElementType(), and mesh.
Referenced by GetElementType().
void FiniteElementSpace::GetElementVDofs | ( | int | i, |
Array< int > & | dofs | ||
) | const |
Returns indexes of degrees of freedom in array dofs for i'th element.
Definition at line 112 of file fespace.cpp.
References DofsToVDofs(), and GetElementDofs().
Referenced by DiscreteLinearOperator::Assemble(), BilinearForm::Assemble(), BilinearForm::AssembleElementMatrix(), BilinearForm::ComputeElementMatrix(), ComputeFlux(), GridFunction::ComputeH1Error(), GridFunction::ComputeL2Error(), GridFunction::ComputeMaxError(), GridFunction::ComputeW11Error(), D2C_GlobalRestrictionMatrix(), GridFunction::GetDerivative(), Mesh::GetElementTransformation(), GridFunction::GetNodalValues(), GridFunction::GetValues(), GridFunction::GetValuesFrom(), GridFunction::GetVectorFieldValues(), GridFunction::GetVectorGradientHat(), GridFunction::GetVectorValue(), GridFunction::GetVectorValues(), NURBSExtension::MergeGridFunctions(), GridFunction::ProjectCoefficient(), GridFunction::ProjectVectorFieldOn(), and ZZErrorEstimator().
void FiniteElementSpace::GetElementVertices | ( | int | i, |
Array< int > & | vertices | ||
) | const [inline] |
Returns the vertices of element i.
Definition at line 143 of file fespace.hpp.
References GetElementVertices(), and mesh.
Referenced by GetElementVertices(), GridFunction::GetNodalValues(), and GridFunction::GetVectorFieldNodalValues().
void FiniteElementSpace::GetEssentialVDofs | ( | Array< int > & | bdr_attr_is_ess, |
Array< int > & | ess_dofs | ||
) | [virtual] |
Determine the boundary degrees of freedom.
Reimplemented in ParFiniteElementSpace.
Definition at line 266 of file fespace.cpp.
References GetBdrAttribute(), GetBdrElementVDofs(), GetNBE(), GetVSize(), Array< T >::SetSize(), and Array< T >::Size().
void FiniteElementSpace::GetFaceDofs | ( | int | i, |
Array< int > & | dofs | ||
) | const |
Returns the indexes of the degrees of freedom for i'th face including the dofs for the edges and the vertices of the face.
Definition at line 707 of file fespace.cpp.
References FiniteElementCollection::DofForGeometry(), fdofs, fec, Mesh::GetFaceEdges(), Mesh::GetFaceVertices(), mesh, nedofs, nvdofs, Geometry::POINT, Geometry::SEGMENT, Array< T >::SetSize(), and Array< T >::Size().
Referenced by GetFaceVDofs().
void FiniteElementSpace::GetFaceVDofs | ( | int | iF, |
Array< int > & | dofs | ||
) | const |
Returns indexes of degrees of freedom for i'th face element.
Definition at line 124 of file fespace.cpp.
References DofsToVDofs(), and GetFaceDofs().
const FiniteElement * FiniteElementSpace::GetFE | ( | int | i | ) | const |
Returns pointer to the FiniteElement associated with i'th element.
Definition at line 633 of file fespace.cpp.
References fec, FiniteElementCollection::FiniteElementForGeometry(), Mesh::GetElementBaseGeometry(), NURBSExtension::LoadFE(), mesh, and NURBSext.
Referenced by LinearForm::Assemble(), DiscreteLinearOperator::Assemble(), BilinearForm::Assemble(), BilinearForm::ComputeElementMatrices(), BilinearForm::ComputeElementMatrix(), ComputeFlux(), GridFunction::ComputeH1Error(), GridFunction::ComputeL1Error(), GridFunction::ComputeL2Error(), GridFunction::ComputeMaxError(), GridFunction::ComputeW11Error(), GridFunction::GetDerivative(), GridFunction::GetDivergence(), GridFunction::GetElementAverages(), Mesh::GetElementTransformation(), GridFunction::GetGradients(), GridFunction::GetNodalValues(), GridFunction::GetValue(), GridFunction::GetValues(), GridFunction::GetValuesFrom(), GridFunction::GetVectorFieldNodalValues(), GridFunction::GetVectorFieldValues(), GridFunction::GetVectorGradientHat(), GridFunction::GetVectorValue(), GridFunction::GetVectorValues(), H2L_GlobalRestrictionMatrix(), GridFunction::ProjectCoefficient(), GridFunction::ProjectVectorFieldOn(), GridFunction::SaveSTL(), GridFunction::VectorDim(), and ZZErrorEstimator().
int FiniteElementSpace::GetLocalDofForDof | ( | int | i | ) | [inline] |
Definition at line 219 of file fespace.hpp.
References dof_ldof_array.
Referenced by GridFunction::ProjectCoefficient().
Mesh* FiniteElementSpace::GetMesh | ( | ) | const [inline] |
Returns the mesh.
Definition at line 105 of file fespace.hpp.
References mesh.
Referenced by GridFunction::ComputeH1Error(), GridFunction::ComputeW11Error(), GridFunction::GetFaceValues(), GridFunction::GetFaceVectorValues(), NURBSExtension::MergeGridFunctions(), GridFunction::ProjectCoefficient(), GridFunction::SaveSTL(), and GridFunction::SaveVTK().
int FiniteElementSpace::GetNBE | ( | ) | const [inline] |
Returns number of boundary elements in the mesh.
Definition at line 136 of file fespace.hpp.
References GetNBE(), and mesh.
Referenced by GridFunction::GetBdrValuesFrom(), GetEssentialVDofs(), GetNBE(), GridFunction::ProjectBdrCoefficient(), GridFunction::ProjectBdrCoefficientNormal(), and GridFunction::ProjectBdrCoefficientTangent().
int FiniteElementSpace::GetNDofs | ( | ) | const [inline] |
Returns number of degrees of freedom.
Definition at line 116 of file fespace.hpp.
References ndofs.
Referenced by D2Const_GlobalRestrictionMatrix(), GridFunction::GridFunction(), H2L_GlobalRestrictionMatrix(), Mesh::PrintVTK(), and GridFunction::ReorderByNodes().
int FiniteElementSpace::GetNE | ( | ) | const [inline] |
Returns number of elements in the mesh.
Definition at line 130 of file fespace.hpp.
Referenced by DiscreteLinearOperator::Assemble(), BuildDofToArrays(), BuildElementToDofTable(), BilinearForm::ComputeElementMatrices(), ComputeFlux(), GridFunction::ComputeL1Error(), GridFunction::ComputeL2Error(), GridFunction::ComputeMaxError(), D2C_GlobalRestrictionMatrix(), D2Const_GlobalRestrictionMatrix(), GridFunction::GetDerivative(), GridFunction::GetElementAverages(), GetNE(), GridFunction::GetNodalValues(), GridFunction::GetValuesFrom(), GridFunction::GetVectorFieldNodalValues(), H2L_GlobalRestrictionMatrix(), GridFunction::ProjectCoefficient(), GridFunction::ProjectVectorFieldOn(), and ZZErrorEstimator().
int FiniteElementSpace::GetNEDofs | ( | ) | const [inline] |
Definition at line 126 of file fespace.hpp.
References nedofs.
Referenced by GridFunction::GridFunction().
int FiniteElementSpace::GetNFDofs | ( | ) | const [inline] |
Definition at line 127 of file fespace.hpp.
References nfdofs.
Referenced by GridFunction::GridFunction().
NURBSExtension* FiniteElementSpace::GetNURBSext | ( | ) | [inline] |
Definition at line 107 of file fespace.hpp.
References NURBSext.
int FiniteElementSpace::GetNV | ( | ) | const [inline] |
Returns number of nodes in the mesh.
Definition at line 133 of file fespace.hpp.
Referenced by GridFunction::GetNodalValues(), GetNV(), and GridFunction::GetVectorFieldNodalValues().
int FiniteElementSpace::GetNVDofs | ( | ) | const [inline] |
Definition at line 125 of file fespace.hpp.
References nvdofs.
Referenced by GridFunction::GridFunction().
int FiniteElementSpace::GetOrder | ( | int | i | ) | const |
Returns the order of the i'th finite element.
Definition at line 17 of file fespace.cpp.
References fec, FiniteElementCollection::FiniteElementForGeometry(), Mesh::GetElementBaseGeometry(), FiniteElement::GetOrder(), and mesh.
int FiniteElementSpace::GetOrdering | ( | ) | const [inline] |
Return the ordering method.
Definition at line 121 of file fespace.hpp.
References ordering.
Referenced by MixedBilinearForm::GetBlocks(), GridFunction::GridFunction(), GridFunction::ReorderByNodes(), and GridFunction::Save().
int FiniteElementSpace::GetVDim | ( | ) | const [inline] |
Returns vector dimension.
Definition at line 110 of file fespace.hpp.
References vdim.
Referenced by BilinearForm::ComputeElementMatrices(), GridFunction::ComputeL2Error(), GridFunction::ComputeMaxError(), GridFunction::GetBdrValuesFrom(), MixedBilinearForm::GetBlocks(), GridFunction::GetValuesFrom(), GridFunction::GetVectorValue(), GridFunction::GetVectorValues(), GridFunction::GridFunction(), GridFunction::ProjectBdrCoefficient(), GridFunction::ProjectCoefficient(), GridFunction::ReorderByNodes(), GridFunction::Save(), and GridFunction::VectorDim().
int FiniteElementSpace::GetVSize | ( | ) | const [inline] |
Definition at line 118 of file fespace.hpp.
Referenced by D2C_GlobalRestrictionMatrix(), GridFunction::GetDerivative(), GetEssentialVDofs(), GridFunction::GridFunction(), main(), MixedBilinearForm::MixedBilinearForm(), GridFunction::ProjectVectorFieldOn(), GridFunction::Update(), MixedBilinearForm::Update(), and BilinearForm::Update().
SparseMatrix * FiniteElementSpace::GlobalRestrictionMatrix | ( | FiniteElementSpace * | cfes, |
Array< int > & | bdr_attr_is_ess, | ||
int | one_vdim = -1 |
||
) |
Generate the global restriction matrix with eliminated essential bc.
Definition at line 314 of file fespace.cpp.
SparseMatrix * FiniteElementSpace::GlobalRestrictionMatrix | ( | FiniteElementSpace * | cfes, |
int | one_vdim = -1 |
||
) |
Return the restriction matrix from this FE space to the coarse FE space 'cfes'. Both FE spaces must use the same FE collection and be defined on the same Mesh which must be in TWO_LEVEL_* state. When vdim > 1, 'one_vdim' specifies whether the restriction matrix built should be the scalar restriction (one_vdim=1) or the full vector restriction (one_vdim=0); if one_vdim=-1 then the behavior depends on the ordering of this FE space: if ordering=byNodes then the scalar restriction matrix is built and if ordering=byVDim -- the full vector restriction matrix.
Definition at line 224 of file fespace.cpp.
References Ordering::byNODES, Array< T >::GetSubArray(), Array< T >::Size(), Mesh::TWO_LEVEL_COARSE, and Mesh::TWO_LEVEL_FINE.
Referenced by Mesh::UpdateNodes().
SparseMatrix * FiniteElementSpace::H2L_GlobalRestrictionMatrix | ( | FiniteElementSpace * | lfes | ) |
Construct the restriction matrix from the FE space given by (*this) to the lower degree FE space given by (*lfes) which is defined on the same mesh.
Definition at line 382 of file fespace.cpp.
References GetElementDofs(), GetFE(), GetNDofs(), GetNE(), mesh, ndofs, DenseMatrix::SetSize(), Vector::SetSize(), and Vector::Size().
DenseMatrix * FiniteElementSpace::LocalInterpolation | ( | int | k, |
int | cdofs, | ||
RefinementType | type, | ||
Array< int > & | rows | ||
) | [protected] |
Generates the local interpolation matrix for coarse element k.
Definition at line 196 of file fespace.cpp.
References Array< T >::SetSize(), and Array< T >::Size().
void FiniteElementSpace::Save | ( | ostream & | out | ) | const |
Definition at line 907 of file fespace.cpp.
References fec, FiniteElementCollection::Name(), ordering, and vdim.
Referenced by GridFunction::Save().
FiniteElementSpace * FiniteElementSpace::SaveUpdate | ( | ) | [virtual] |
Return a copy of the current FE space and update.
Reimplemented in ParFiniteElementSpace.
Definition at line 839 of file fespace.cpp.
References Constructor(), and FiniteElementSpace().
Referenced by Mesh::UpdateNodes().
void FiniteElementSpace::Update | ( | ) | [virtual] |
Reimplemented in ParFiniteElementSpace.
Definition at line 826 of file fespace.cpp.
References Constructor(), Destructor(), NURBSext, and UpdateNURBS().
Referenced by Mesh::UpdateNURBS().
void FiniteElementSpace::UpdateNURBS | ( | ) | [protected] |
Definition at line 490 of file fespace.cpp.
References bdofs, bdrElem_dof, elem_dof, fdofs, fec, NURBSExtension::GetBdrElementDofTable(), NURBSExtension::GetElementDofTable(), NURBSExtension::GetNDof(), nbdofs, ndofs, nedofs, nfdofs, NURBSext, and nvdofs.
Referenced by FiniteElementSpace(), and Update().
int FiniteElementSpace::VDofToDof | ( | int | vdof | ) | const [inline] |
Definition at line 191 of file fespace.hpp.
References Ordering::byNODES, ndofs, ordering, and vdim.
Referenced by ParFiniteElementSpace::GetDofSign().
int * FiniteElementSpace::bdofs [protected] |
Definition at line 71 of file fespace.hpp.
Referenced by Constructor(), Destructor(), FiniteElementSpace(), GetElementDofs(), GetElementInteriorDofs(), and UpdateNURBS().
Table* FiniteElementSpace::bdrElem_dof [protected] |
Definition at line 77 of file fespace.hpp.
Referenced by Constructor(), Destructor(), FiniteElementSpace(), GetBdrElementDofs(), and UpdateNURBS().
Array<int> FiniteElementSpace::dof_elem_array [protected] |
Definition at line 78 of file fespace.hpp.
Referenced by BuildDofToArrays(), Destructor(), FiniteElementSpace(), and GetElementForDof().
Array<int> FiniteElementSpace::dof_ldof_array [protected] |
Definition at line 78 of file fespace.hpp.
Referenced by BuildDofToArrays(), Destructor(), FiniteElementSpace(), and GetLocalDofForDof().
Table* FiniteElementSpace::elem_dof [protected] |
Definition at line 76 of file fespace.hpp.
Referenced by BuildDofToArrays(), BuildElementToDofTable(), Constructor(), Destructor(), FiniteElementSpace(), GetElementDofs(), GetElementToDofTable(), and UpdateNURBS().
int* FiniteElementSpace::fdofs [protected] |
Definition at line 71 of file fespace.hpp.
Referenced by Constructor(), Destructor(), FiniteElementSpace(), GetBdrElementDofs(), GetElementDofs(), GetFaceDofs(), and UpdateNURBS().
const FiniteElementCollection* FiniteElementSpace::fec [protected] |
Definition at line 69 of file fespace.hpp.
Referenced by Constructor(), ConstructRefinementData(), FEColl(), FiniteElementSpace(), GetBdrElementDofs(), GetBE(), GetEdgeDofs(), GetEdgeInteriorDofs(), GetElementDofs(), GetElementInteriorDofs(), GetFaceDofs(), GetFE(), GetOrder(), Save(), and UpdateNURBS().
Mesh* FiniteElementSpace::mesh [protected] |
The mesh that FE space lives on.
Definition at line 56 of file fespace.hpp.
Referenced by BuildDofToArrays(), BuildElementToDofTable(), Constructor(), ConstructRefinementData(), D2C_GlobalRestrictionMatrix(), D2Const_GlobalRestrictionMatrix(), FiniteElementSpace(), GetAttribute(), GetBdrAttribute(), GetBdrElementDofs(), GetBdrElementTransformation(), GetBdrElementType(), GetBE(), GetEdgeDofs(), GetElementDofs(), GetElementInteriorDofs(), GetElementTransformation(), GetElementType(), GetElementVertices(), GetFaceDofs(), GetFE(), GetMesh(), GetNBE(), GetNE(), GetNV(), GetOrder(), and H2L_GlobalRestrictionMatrix().
int FiniteElementSpace::nbdofs [protected] |
Definition at line 70 of file fespace.hpp.
Referenced by Constructor(), FiniteElementSpace(), and UpdateNURBS().
int FiniteElementSpace::ndofs [protected] |
Number of degrees of freedom. Number of unknowns are ndofs*vdim.
Definition at line 62 of file fespace.hpp.
Referenced by BuildDofToArrays(), Constructor(), D2Const_GlobalRestrictionMatrix(), DofsToVDofs(), DofToVDof(), FiniteElementSpace(), GetNDofs(), GetVSize(), H2L_GlobalRestrictionMatrix(), UpdateNURBS(), and VDofToDof().
int FiniteElementSpace::nedofs [protected] |
Definition at line 70 of file fespace.hpp.
Referenced by Constructor(), ConstructRefinementData(), FiniteElementSpace(), GetBdrElementDofs(), GetElementDofs(), GetElementInteriorDofs(), GetFaceDofs(), GetNEDofs(), and UpdateNURBS().
int FiniteElementSpace::nfdofs [protected] |
Definition at line 70 of file fespace.hpp.
Referenced by Constructor(), FiniteElementSpace(), GetElementDofs(), GetElementInteriorDofs(), GetNFDofs(), and UpdateNURBS().
NURBSExtension* FiniteElementSpace::NURBSext [protected] |
Definition at line 80 of file fespace.hpp.
Referenced by Destructor(), FiniteElementSpace(), GetBE(), ParFiniteElementSpace::GetDofSign(), GetFE(), ParFiniteElementSpace::GetGroupTopo(), GetNURBSext(), ParFiniteElementSpace::pNURBSext(), Update(), and UpdateNURBS().
int FiniteElementSpace::nvdofs [protected] |
Definition at line 70 of file fespace.hpp.
Referenced by Constructor(), FiniteElementSpace(), GetBdrElementDofs(), GetEdgeDofs(), GetEdgeInteriorDofs(), GetElementDofs(), GetElementInteriorDofs(), GetFaceDofs(), GetNVDofs(), and UpdateNURBS().
int FiniteElementSpace::ordering [protected] |
Type of ordering of dofs. Ordering::byNODES - first nodes, then vector dimension, Ordering::byVDIM - first vector dimension, then nodes
Definition at line 67 of file fespace.hpp.
Referenced by DofsToVDofs(), DofToVDof(), FiniteElementSpace(), GetOrdering(), Save(), and VDofToDof().
int FiniteElementSpace::own_ext [protected] |
Definition at line 81 of file fespace.hpp.
Referenced by Destructor(), and FiniteElementSpace().
Array<RefinementData *> FiniteElementSpace::RefData [protected] |
Collection of currently known refinement data.
Definition at line 74 of file fespace.hpp.
Referenced by ConstructRefinementData(), and ~FiniteElementSpace().
int FiniteElementSpace::vdim [protected] |
Vector dimension (number of unknowns per degree of freedom).
Definition at line 59 of file fespace.hpp.
Referenced by DofsToVDofs(), DofToVDof(), FiniteElementSpace(), GetVDim(), GetVSize(), Save(), and VDofToDof().