ITK  4.9.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass > Class Template Reference

#include <itkFEMElementStd.h>

+ Inheritance diagram for itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >:
+ Collaboration diagram for itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >:

Detailed Description

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
class itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >

Implements standard node management in the element classes.

This is a templated helper class that automatically defines some of the virtual functions in elements. It is used to avoid code duplication.

If a derived element class has DOFs associated only with points that define the geometry of the element, you can derive from this class to automatically create all the functions required for proper node management.

You must specify two or three template parameters:

VNumberOfNodes - Number of nodes that define the element (e.g. four for quadrilateral)

VNumberOfSpatialDimensions - Number of dimensions of space in which the element is defined. This is also the size of a vector returned by GetNodeCoordinates() member function.

TBaseClass - Class from which ElementStd is derived. TBaseClass must be derived from the Element base class. This enables you to use this class at any level of element definition. If not specified, it defaults to the Element class.

Definition at line 56 of file itkFEMElementStd.h.

Public Types

enum  { InvalidDegreeOfFreedomID = Superclass::InvalidDegreeOfFreedomID }
 
enum  { NumberOfNodes = VNumberOfNodes }
 
enum  { NumberOfSpatialDimensions = VNumberOfSpatialDimensions }
 
typedef SmartPointer< const SelfConstPointer
 
typedef
Superclass::DegreeOfFreedomIDType 
DegreeOfFreedomIDType
 
typedef Superclass::Float Float
 
typedef Superclass::LoadPointer LoadPointer
 
typedef Superclass::LoadType LoadType
 
typedef Superclass::MatrixType MatrixType
 
typedef Superclass::Node Node
 
typedef Superclass::NodeIDType NodeIDType
 
typedef SmartPointer< SelfPointer
 
typedef ElementStd Self
 
typedef TBaseClass Superclass
 
typedef Superclass::VectorType VectorType
 

Public Member Functions

 ElementStd ()
 
virtual const char * GetNameOfClass () const
 
virtual NodeIDType GetNode (unsigned int n) const override
 
virtual const VectorTypeGetNodeCoordinates (unsigned int n) const override
 
virtual unsigned int GetNumberOfNodes (void) const override
 
virtual unsigned int GetNumberOfSpatialDimensions () const override
 
virtual void SetNode (unsigned int n, NodeIDType node) override
 
virtual void SetNode (unsigned int n, typename Superclass::Node::Pointer node) override
 

Protected Member Functions

virtual void PrintSelf (std::ostream &os, Indent indent) const override
 
virtual void SetNodeInternal (unsigned int n, const Node *node)
 

Protected Attributes

const Nodem_node [NumberOfNodes]
 

Member Typedef Documentation

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef SmartPointer<const Self> itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::ConstPointer

Definition at line 64 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef Superclass::DegreeOfFreedomIDType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::DegreeOfFreedomIDType

Definition at line 79 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef Superclass::Float itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Float

Definition at line 67 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef Superclass::LoadPointer itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::LoadPointer

Definition at line 77 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef Superclass::LoadType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::LoadType

Definition at line 76 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef Superclass::MatrixType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::MatrixType

Definition at line 74 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef Superclass::Node itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Node

Definition at line 80 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef Superclass::NodeIDType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::NodeIDType

Definition at line 78 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef SmartPointer<Self> itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Pointer

Definition at line 63 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef ElementStd itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Self

Standard class typedefs.

Definition at line 61 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef TBaseClass itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Superclass

Definition at line 62 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
typedef Superclass::VectorType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::VectorType

Definition at line 75 of file itkFEMElementStd.h.

Member Enumeration Documentation

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
anonymous enum
Enumerator
InvalidDegreeOfFreedomID 

Definition at line 81 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
anonymous enum

Number of nodes that define the element.

Enumerator
NumberOfNodes 

Definition at line 86 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
anonymous enum

Number of dimensions of space in which element can exist.

Enumerator
NumberOfSpatialDimensions 

Definition at line 91 of file itkFEMElementStd.h.

Constructor & Destructor Documentation

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::ElementStd ( )

Default constructor just clears the ivars

Member Function Documentation

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
virtual const char* itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

Reimplemented in itk::fem::Element2DC0LinearTriangularMembrane, itk::fem::Element2DC0QuadraticTriangularStrain, itk::fem::Element3DC0LinearHexahedron, itk::fem::Element2DC0LinearTriangularStrain, itk::fem::Element3DC0LinearTetrahedron, itk::fem::Element2DC0QuadraticTriangularStress, itk::fem::Element2DC0LinearQuadrilateralMembrane, itk::fem::Element2DC0LinearQuadrilateralStress, itk::fem::Element2DC0LinearQuadrilateralStrain, itk::fem::Element2DC0LinearTriangular, itk::fem::Element2DC0QuadraticTriangular, itk::fem::Element2DC0LinearQuadrilateral, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element3DC0LinearTriangular, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTriangular >, itk::fem::Element3DC0LinearHexahedronMembrane, itk::fem::Element3DC0LinearHexahedronStrain, itk::fem::Element2DC0LinearTriangularStress, itk::fem::Element3DC0LinearTetrahedronMembrane, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >, itk::fem::Element3DC0LinearTetrahedronStrain, itk::fem::Element3DC0LinearTriangularLaplaceBeltrami, itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane1DOF< Element3DC0LinearTriangular >, itk::fem::Element3DC0LinearTriangularMembrane, itk::fem::Element2DC1Beam, itk::fem::Element2DC0LinearLineStress, and itk::fem::Element2DC0LinearLine.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
virtual NodeIDType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::GetNode ( unsigned int  n) const
inlineoverridevirtual

Get/Set the Nodes that define the element

Definition at line 111 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
virtual const VectorType& itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::GetNodeCoordinates ( unsigned int  n) const
inlineoverridevirtual

Get the nodal coordinates

Definition at line 130 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
virtual unsigned int itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::GetNumberOfNodes ( void  ) const
inlineoverridevirtual

Methods that define the geometry of an element

Definition at line 102 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
virtual unsigned int itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::GetNumberOfSpatialDimensions ( ) const
inlineoverridevirtual

Get the number of spatial dimensions

Definition at line 136 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
virtual void itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
overrideprotectedvirtual

Reimplemented in itk::fem::Element2DC1Beam, itk::fem::Element3DC0LinearTriangular, itk::fem::Element2DC0LinearTriangular, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane1DOF< Element3DC0LinearTriangular >, itk::fem::Element3DC0LinearHexahedron, itk::fem::Element2DC0LinearQuadrilateral, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >, itk::fem::Element2DC0QuadraticTriangular, itk::fem::Element3DC0LinearTetrahedron, itk::fem::Element2DC0LinearLine, itk::fem::Element2DC0QuadraticTriangularStrain, itk::fem::Element2DC0QuadraticTriangularStress, itk::fem::Element2DC0LinearQuadrilateralMembrane, itk::fem::Element2DC0LinearQuadrilateralStress, itk::fem::Element2DC0LinearTriangularMembrane, itk::fem::Element2DC0LinearQuadrilateralStrain, itk::fem::Element2DC0LinearTriangularStrain, itk::fem::Element3DC0LinearTriangularLaplaceBeltrami, itk::fem::Element2DC0LinearTriangularStress, itk::fem::Element3DC0LinearHexahedronMembrane, itk::fem::Element3DC0LinearHexahedronStrain, itk::fem::Element3DC0LinearTetrahedronMembrane, itk::fem::Element3DC0LinearTetrahedronStrain, itk::fem::Element2DC0LinearLineStress, and itk::fem::Element3DC0LinearTriangularMembrane.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
virtual void itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::SetNode ( unsigned int  n,
NodeIDType  node 
)
inlineoverridevirtual

Definition at line 120 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
virtual void itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::SetNode ( unsigned int  n,
typename Superclass::Node::Pointer  node 
)
inlineoverridevirtual

Definition at line 124 of file itkFEMElementStd.h.

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
virtual void itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::SetNodeInternal ( unsigned int  n,
const Node node 
)
inlineprotectedvirtual

Definition at line 147 of file itkFEMElementStd.h.

Referenced by itk::fem::ElementStd< 3, 3 >::SetNode().

Member Data Documentation

template<unsigned int VNumberOfNodes, unsigned int VNumberOfSpatialDimensions, typename TBaseClass = Element>
const Node* itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::m_node[NumberOfNodes]
protected

Array of pointers to point objects that define the element

Definition at line 158 of file itkFEMElementStd.h.

Referenced by itk::fem::ElementStd< 3, 3 >::GetNode(), itk::fem::ElementStd< 3, 3 >::GetNodeCoordinates(), and itk::fem::ElementStd< 3, 3 >::SetNodeInternal().


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