Implements standard node management in the element classes. More...
#include <itkFEMElementStd.h>
Public Types | |
enum | { InvalidDegreeOfFreedomID = Superclass::InvalidDegreeOfFreedomID } |
enum | { NumberOfNodes = VNumberOfNodes } |
enum | { NumberOfSpatialDimensions = VNumberOfSpatialDimensions } |
typedef const Self * | ConstPointer |
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 Self * | Pointer |
typedef ElementStd | Self |
typedef TBaseClass | Superclass |
typedef Superclass::VectorType | VectorType |
Public Member Functions | |
ElementStd () | |
virtual NodeIDType | GetNode (unsigned int n) const |
virtual const VectorType & | GetNodeCoordinates (unsigned int n) const |
virtual unsigned int | GetNumberOfNodes (void) const |
virtual unsigned int | GetNumberOfSpatialDimensions () const |
virtual void | Read (std::istream &, void *info) |
virtual void | SetNode (unsigned int n, NodeIDType node) |
virtual void | Write (std::ostream &f) const |
Protected Attributes | |
NodeIDType | m_node [NumberOfNodes] |
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 three or four 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 funtion.
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 53 of file itkFEMElementStd.h.
typedef const Self* itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::ConstPointer |
Const pointer or SmartPointer to an object.
Reimplemented in itk::fem::Element2DC0LinearLine, itk::fem::Element2DC0LinearLineStress, itk::fem::Element2DC0LinearQuadrilateral, itk::fem::Element2DC0LinearQuadrilateralMembrane, itk::fem::Element2DC0LinearQuadrilateralStrain, itk::fem::Element2DC0LinearQuadrilateralStress, itk::fem::Element2DC0LinearTriangular, itk::fem::Element2DC0LinearTriangularMembrane, itk::fem::Element2DC0LinearTriangularStrain, itk::fem::Element2DC0LinearTriangularStress, itk::fem::Element2DC0QuadraticTriangular, itk::fem::Element2DC0QuadraticTriangularStrain, itk::fem::Element2DC0QuadraticTriangularStress, itk::fem::Element2DC1Beam, itk::fem::Element3DC0LinearHexahedron, itk::fem::Element3DC0LinearHexahedronMembrane, itk::fem::Element3DC0LinearHexahedronStrain, itk::fem::Element3DC0LinearTetrahedron, itk::fem::Element3DC0LinearTetrahedronMembrane, itk::fem::Element3DC0LinearTetrahedronStrain, itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, and itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >.
Definition at line 55 of file itkFEMElementStd.h.
typedef Superclass::DegreeOfFreedomIDType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::DegreeOfFreedomIDType |
Definition at line 67 of file itkFEMElementStd.h.
typedef Superclass::Float itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Float |
Reimplemented in itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, and itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >.
Definition at line 61 of file itkFEMElementStd.h.
typedef Superclass::LoadPointer itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::LoadPointer |
Definition at line 65 of file itkFEMElementStd.h.
typedef Superclass::LoadType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::LoadType |
Definition at line 64 of file itkFEMElementStd.h.
typedef Superclass::MatrixType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::MatrixType |
Reimplemented in itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, and itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >.
Definition at line 62 of file itkFEMElementStd.h.
typedef Superclass::Node itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Node |
Definition at line 68 of file itkFEMElementStd.h.
typedef Superclass::NodeIDType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::NodeIDType |
Definition at line 66 of file itkFEMElementStd.h.
typedef Self* itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Pointer |
Pointer or SmartPointer to an object.
Reimplemented in itk::fem::Element2DC0LinearLine, itk::fem::Element2DC0LinearLineStress, itk::fem::Element2DC0LinearQuadrilateral, itk::fem::Element2DC0LinearQuadrilateralMembrane, itk::fem::Element2DC0LinearQuadrilateralStrain, itk::fem::Element2DC0LinearQuadrilateralStress, itk::fem::Element2DC0LinearTriangular, itk::fem::Element2DC0LinearTriangularMembrane, itk::fem::Element2DC0LinearTriangularStrain, itk::fem::Element2DC0LinearTriangularStress, itk::fem::Element2DC0QuadraticTriangular, itk::fem::Element2DC0QuadraticTriangularStrain, itk::fem::Element2DC0QuadraticTriangularStress, itk::fem::Element2DC1Beam, itk::fem::Element3DC0LinearHexahedron, itk::fem::Element3DC0LinearHexahedronMembrane, itk::fem::Element3DC0LinearHexahedronStrain, itk::fem::Element3DC0LinearTetrahedron, itk::fem::Element3DC0LinearTetrahedronMembrane, itk::fem::Element3DC0LinearTetrahedronStrain, itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, and itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >.
Definition at line 55 of file itkFEMElementStd.h.
typedef ElementStd itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Self |
Standard Self typedef.
Reimplemented in itk::fem::Element2DC0LinearLine, itk::fem::Element2DC0LinearLineStress, itk::fem::Element2DC0LinearQuadrilateral, itk::fem::Element2DC0LinearQuadrilateralMembrane, itk::fem::Element2DC0LinearQuadrilateralStrain, itk::fem::Element2DC0LinearQuadrilateralStress, itk::fem::Element2DC0LinearTriangular, itk::fem::Element2DC0LinearTriangularMembrane, itk::fem::Element2DC0LinearTriangularStrain, itk::fem::Element2DC0LinearTriangularStress, itk::fem::Element2DC0QuadraticTriangular, itk::fem::Element2DC0QuadraticTriangularStrain, itk::fem::Element2DC0QuadraticTriangularStress, itk::fem::Element2DC1Beam, itk::fem::Element3DC0LinearHexahedron, itk::fem::Element3DC0LinearHexahedronMembrane, itk::fem::Element3DC0LinearHexahedronStrain, itk::fem::Element3DC0LinearTetrahedron, itk::fem::Element3DC0LinearTetrahedronMembrane, itk::fem::Element3DC0LinearTetrahedronStrain, itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, and itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >.
Definition at line 55 of file itkFEMElementStd.h.
typedef TBaseClass itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Superclass |
Standard Superclass typedef.
Reimplemented in itk::fem::Element2DC0LinearLine, itk::fem::Element2DC0LinearLineStress, itk::fem::Element2DC0LinearQuadrilateral, itk::fem::Element2DC0LinearQuadrilateralMembrane, itk::fem::Element2DC0LinearQuadrilateralStrain, itk::fem::Element2DC0LinearQuadrilateralStress, itk::fem::Element2DC0LinearTriangular, itk::fem::Element2DC0LinearTriangularMembrane, itk::fem::Element2DC0LinearTriangularStrain, itk::fem::Element2DC0LinearTriangularStress, itk::fem::Element2DC0QuadraticTriangular, itk::fem::Element2DC0QuadraticTriangularStrain, itk::fem::Element2DC0QuadraticTriangularStress, itk::fem::Element2DC1Beam, itk::fem::Element3DC0LinearHexahedron, itk::fem::Element3DC0LinearHexahedronMembrane, itk::fem::Element3DC0LinearHexahedronStrain, itk::fem::Element3DC0LinearTetrahedron, itk::fem::Element3DC0LinearTetrahedronMembrane, itk::fem::Element3DC0LinearTetrahedronStrain, itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, and itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >.
Definition at line 55 of file itkFEMElementStd.h.
typedef Superclass::VectorType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::VectorType |
Reimplemented in itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, and itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >.
Definition at line 63 of file itkFEMElementStd.h.
anonymous enum |
Definition at line 69 of file itkFEMElementStd.h.
anonymous enum |
Number of nodes that define the element.
Definition at line 74 of file itkFEMElementStd.h.
anonymous enum |
Number of dimensions of space in which element can exist.
Definition at line 79 of file itkFEMElementStd.h.
itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::ElementStd | ( | ) |
Default constructor just clears the ivars
virtual NodeIDType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::GetNode | ( | unsigned int | n | ) | const [inline, virtual] |
Definition at line 93 of file itkFEMElementStd.h.
virtual const VectorType& itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::GetNodeCoordinates | ( | unsigned int | n | ) | const [inline, virtual] |
Definition at line 111 of file itkFEMElementStd.h.
virtual unsigned int itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::GetNumberOfNodes | ( | void | ) | const [inline, virtual] |
Methods that define the geometry of an element
Definition at line 90 of file itkFEMElementStd.h.
virtual unsigned int itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::GetNumberOfSpatialDimensions | ( | ) | const [inline, virtual] |
Definition at line 116 of file itkFEMElementStd.h.
virtual void itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Read | ( | std::istream & | , | |
void * | info | |||
) | [virtual] |
Methods related to I/O Read data for this class from input stream
Reimplemented in itk::fem::Element2DC1Beam, itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, and itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >.
virtual void itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::SetNode | ( | unsigned int | n, | |
NodeIDType | node | |||
) | [inline, virtual] |
Definition at line 102 of file itkFEMElementStd.h.
virtual void itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::Write | ( | std::ostream & | f | ) | const [virtual] |
Write data for this class to output stream
Reimplemented in itk::fem::Element2DC1Beam, itk::fem::Element1DStress< Element2DC0LinearLine >, itk::fem::Element2DMembrane< Element2DC0LinearQuadrilateral >, itk::fem::Element2DMembrane< Element2DC0LinearTriangular >, itk::fem::Element2DStrain< Element2DC0QuadraticTriangular >, itk::fem::Element2DStrain< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStrain< Element2DC0LinearTriangular >, itk::fem::Element2DStress< Element2DC0QuadraticTriangular >, itk::fem::Element2DStress< Element2DC0LinearQuadrilateral >, itk::fem::Element2DStress< Element2DC0LinearTriangular >, itk::fem::Element3DMembrane< Element3DC0LinearHexahedron >, itk::fem::Element3DMembrane< Element3DC0LinearTetrahedron >, itk::fem::Element3DStrain< Element3DC0LinearHexahedron >, and itk::fem::Element3DStrain< Element3DC0LinearTetrahedron >.
NodeIDType itk::fem::ElementStd< VNumberOfNodes, VNumberOfSpatialDimensions, TBaseClass >::m_node[NumberOfNodes] [protected] |
Array of pointers to point objects that define the element
Definition at line 141 of file itkFEMElementStd.h.
Referenced by itk::fem::ElementStd< 4, 2 >::GetNode(), itk::fem::ElementStd< 4, 2 >::GetNodeCoordinates(), and itk::fem::ElementStd< 4, 2 >::SetNode().