19 #ifndef __itkFEMElementBase_h
20 #define __itkFEMElementBase_h
27 #include "vnl/vnl_matrix.h"
28 #include "vnl/vnl_vector.h"
184 copyPtr->m_dof = this->
m_dof;
188 smartPtr =
static_cast<Pointer>(copyPtr);
242 if( i >=
m_dof.size() )
255 if( i >=
m_dof.size() )
295 mutable std::vector<DegreeOfFreedomIDType>
m_dof;
306 unsigned int index)
const;
396 unsigned int solutionIndex = 0)
const;
412 unsigned int solutionIndex = 0)
const;
426 return this->
GetNode(local_dof /
495 unsigned int order = 0)
const = 0;
644 const MatrixType *pshapeD = ITK_NULLPTR)
const;
706 virtual std::vector<std::vector<int> >
GetEdgeIds(
void)
const
728 virtual void PrintSelf(std::ostream& os,
Indent indent)
const ITK_OVERRIDE;
735 #endif // #ifndef __itkFEMElementBase_h
DegreeOfFreedomIDType GetDegreeOfFreedom(unsigned int i) const
DegreeOfFreedomIDType GetDegreeOfFreedom(unsigned int local_dof) const
virtual NodeIDType GetNode(unsigned int n) const =0
virtual void Jacobian(const VectorType &pt, MatrixType &J, const MatrixType *pshapeD=ITK_NULLPTR) const
virtual void ShapeFunctionGlobalDerivatives(const VectorType &pt, MatrixType &shapeDgl, const MatrixType *pJ=ITK_NULLPTR, const MatrixType *pshapeD=ITK_NULLPTR) const
virtual void SetMaterial(Material::ConstPointer)
virtual Float JacobianDeterminant(const VectorType &pt, const MatrixType *pJ=ITK_NULLPTR) const
virtual void GetStrainDisplacementMatrix(MatrixType &B, const MatrixType &shapeDgl) const =0
virtual VectorType GetStressesAtPoint(const VectorType &pt, const VectorType &e, const Solution &sol, unsigned int index) const
LoadType::Pointer LoadPointer
int GetGlobalNumber() const
virtual void GetLandmarkContributionMatrix(float eta, MatrixType &Le) const
virtual unsigned int GetNumberOfDegreesOfFreedomPerNode(void) const =0
virtual void PrintSelf(std::ostream &os, Indent indent) const ITK_OVERRIDE
std::vector< DegreeOfFreedomIDType > m_dof
unsigned long ElementIdentifier
virtual std::vector< std::vector< int > > GetEdgeIds(void) const
static const Float gaussWeight[gaussMaxOrder+1][gaussMaxOrder]
std::vector< std::vector< int > > m_EdgeIds
virtual void PopulateEdgeIds(void)=0
std::set< Element * > SetOfElements
SmartPointer< const Self > ConstPointer
virtual Float GetElementDeformationEnergy(MatrixType &LocalSolution) const
virtual Float InterpolateSolutionN(const VectorType &pt, const Solution &sol, unsigned int f, unsigned int solutionIndex=0) const
static T::Pointer Create()
virtual void GetMassMatrix(MatrixType &Me) const
ObjectType * GetPointer() const
void SetCoordinates(const VectorType &coords)
static const double e
The base of the natural logarithm or Euler's number
virtual unsigned int GetNumberOfIntegrationPoints(unsigned int order=0) const =0
Class that stores information required to define a node.
virtual void GetMaterialMatrix(MatrixType &D) const =0
vnl_matrix< Float > MatrixType
virtual void PrintSelf(std::ostream &os, Indent indent) const ITK_OVERRIDE
virtual void GetIntegrationPointAndWeight(unsigned int i, VectorType &pt, Float &w, unsigned int order=0) const =0
virtual void PrintSelf(std::ostream &os, Indent indent) const ITK_OVERRIDE
virtual void JacobianInverse(const VectorType &pt, MatrixType &invJ, const MatrixType *pJ=ITK_NULLPTR) const
unsigned int DegreeOfFreedomIDType
Provides functions to access the values of the solution vector.
virtual bool GetLocalFromGlobalCoordinates(const VectorType &globalPt, VectorType &localPt) const =0
VectorContainer< ElementIdentifier, Element::Pointer > ArrayType1
virtual unsigned int GetNumberOfNodes(void) const =0
Base class for all classes that define the FEM system.
virtual Material::ConstPointer GetMaterial(void) const
vnl_vector< Float > VectorType
SmartPointer< Self > Pointer
virtual unsigned int GetNumberOfSpatialDimensions() const =0
virtual void GetStiffnessMatrix(MatrixType &Ke) const
virtual ::itk::LightObject::Pointer CreateAnother(void) const ITK_OVERRIDE
SmartPointer< Self > Pointer
virtual void SetNode(unsigned int n, Node::Pointer node)
virtual VectorType GetStrainsAtPoint(const VectorType &pt, const Solution &sol, unsigned int index) const
virtual VectorType ShapeFunctions(const VectorType &pt) const =0
const VectorType & GetCoordinates(void) const
FEMLightObject Superclass
Abstract base element class.
virtual void ClearDegreesOfFreedom(void) const
static const Float gaussPoint[gaussMaxOrder+1][gaussMaxOrder]
Node::ConstPointer NodeIDType
virtual void ShapeFunctionDerivatives(const VectorType &pt, MatrixType &shapeD) const =0
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
SmartPointer< const Self > ConstPointer
Control indentation during Print() invocation.
virtual const VectorType & GetNodeCoordinates(unsigned int n) const =0
FEMPArray< Self > ArrayType
virtual void SetNode(unsigned int n, NodeIDType node)=0
virtual VectorType InterpolateSolution(const VectorType &pt, const Solution &sol, unsigned int solutionIndex=0) const
FEMPArray< Element > ArrayType
void SetDegreeOfFreedom(unsigned int i, DegreeOfFreedomIDType dof) const
FEMLightObject Superclass
virtual VectorType GetGlobalFromLocalCoordinates(const VectorType &pt) const
virtual unsigned int GetNumberOfDegreesOfFreedom(void) const