Programming tasks to Scientific Computing I
Public Member Functions | Protected Attributes | Private Types | List of all members
shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer > Class Template Reference

Triangle which has a tangent space at each node. More...

#include <triangleShellFE.h>

Public Member Functions

 ShellElementWithTangentSpaceAtVertex ()
 
 ShellElementWithTangentSpaceAtVertex (const int globalIdx, const Indices3DType globalNodeIndex, const VertexIterator &nodes)
 
 ~ShellElementWithTangentSpaceAtVertex ()
 
void updateNodesAndEdges (const VertexIterator &nodes)
 
void printNodes () const
 
void print () const
 
void getWeightedNormalForFlattenedTriangle (TangentVecType &normal) const
 
void getNormalizedNormalForFlattenedTriangle (TangentVecType &normal) const
 
RealType getAreaOfFlattenedTriangle () const
 
int getGlobalElementIdx () const
 
const Indices3DTypegetGlobalNodeIdx () const
 
int getGlobalNodeIdx (int localIndex) const
 
void setGlobalNodeIdx (int localIndex, int globalIndex)
 
const Point3DTypegetNode (int i) const
 Access node i. More...
 
Point3DTypegetNode (int i)
 
void setNode (int i, const Point3DType &node)
 
const TangentVecTypegetEdge (int i) const
 Access edge i. More...
 
const TangentVecTypeoperator[] (int i) const
 
TangentVecTypeoperator[] (int i)
 

Protected Attributes

int _globIdx
 
Indices3DType _globNodeIdx
 
Point3DType _nodes [3]
 
TangentVecType _edges [3]
 

Private Types

typedef DataTypeContainer::RealType RealType
 
typedef DataTypeContainer::DomVecType DomVecType
 
typedef DataTypeContainer::Point3DType Point3DType
 
typedef DataTypeContainer::TangentVecType TangentVecType
 
typedef DataTypeContainer::Indices3DType Indices3DType
 
typedef std::vector< Point3DTypeVertexIterator
 
typedef std::vector< TangentVecTypeTangentVecIterator
 

Detailed Description

template<typename DataTypeContainer>
class shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >

Triangle which has a tangent space at each node.

Definition at line 10 of file triangleShellFE.h.

Member Typedef Documentation

template<typename DataTypeContainer >
typedef DataTypeContainer::DomVecType shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::DomVecType
private

Definition at line 13 of file triangleShellFE.h.

template<typename DataTypeContainer >
typedef DataTypeContainer::Indices3DType shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::Indices3DType
private

Definition at line 16 of file triangleShellFE.h.

template<typename DataTypeContainer >
typedef DataTypeContainer::Point3DType shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::Point3DType
private

Definition at line 14 of file triangleShellFE.h.

template<typename DataTypeContainer >
typedef DataTypeContainer::RealType shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::RealType
private

Definition at line 12 of file triangleShellFE.h.

template<typename DataTypeContainer >
typedef std::vector<TangentVecType> shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::TangentVecIterator
private

Definition at line 18 of file triangleShellFE.h.

template<typename DataTypeContainer >
typedef DataTypeContainer::TangentVecType shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::TangentVecType
private

Definition at line 15 of file triangleShellFE.h.

template<typename DataTypeContainer >
typedef std::vector<Point3DType> shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::VertexIterator
private

Definition at line 17 of file triangleShellFE.h.

Constructor & Destructor Documentation

template<typename DataTypeContainer >
shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::ShellElementWithTangentSpaceAtVertex ( )
inline

Definition at line 29 of file triangleShellFE.h.

template<typename DataTypeContainer >
shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::ShellElementWithTangentSpaceAtVertex ( const int  globalIdx,
const Indices3DType  globalNodeIndex,
const VertexIterator nodes 
)
inline

Definition at line 31 of file triangleShellFE.h.

31  :
32  _globIdx(globalIdx),
33  _globNodeIdx ( globalNodeIndex )
34  {
35  // fill nodes and edges
36  for ( int i = 0; i < 3; ++i ) _nodes[i] = nodes[ _globNodeIdx[i] ];
37  for ( int i = 0; i < 3; ++i ) _edges[i] = getNode((i+2)%3) - getNode((i+1)%3);
38  }
const Point3DType & getNode(int i) const
Access node i.
template<typename DataTypeContainer >
shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::~ShellElementWithTangentSpaceAtVertex ( )
inline

Definition at line 40 of file triangleShellFE.h.

40 {}

Member Function Documentation

template<typename DataTypeContainer >
RealType shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::getAreaOfFlattenedTriangle ( ) const
inline

Definition at line 68 of file triangleShellFE.h.

68  {
70  return n.norm() / 2.;
71  }
DataTypeContainer::TangentVecType TangentVecType
void getWeightedNormalForFlattenedTriangle(TangentVecType &normal) const
template<typename DataTypeContainer >
const TangentVecType& shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::getEdge ( int  i) const
inline

Access edge i.

Definition at line 85 of file triangleShellFE.h.

85 { return _edges[i]; }
template<typename DataTypeContainer >
int shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::getGlobalElementIdx ( ) const
inline

Definition at line 74 of file triangleShellFE.h.

template<typename DataTypeContainer >
const Indices3DType& shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::getGlobalNodeIdx ( ) const
inline

Definition at line 75 of file triangleShellFE.h.

template<typename DataTypeContainer >
int shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::getGlobalNodeIdx ( int  localIndex) const
inline

Definition at line 76 of file triangleShellFE.h.

76 { return _globNodeIdx[localIndex];}
template<typename DataTypeContainer >
const Point3DType& shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::getNode ( int  i) const
inline

Access node i.

Definition at line 80 of file triangleShellFE.h.

80 { return _nodes[i];}
template<typename DataTypeContainer >
Point3DType& shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::getNode ( int  i)
inline

Definition at line 81 of file triangleShellFE.h.

81 { return _nodes[i];}
template<typename DataTypeContainer >
void shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::getNormalizedNormalForFlattenedTriangle ( TangentVecType normal) const
inline

Definition at line 63 of file triangleShellFE.h.

63  {
65  normal.normalize();
66  }
void getWeightedNormalForFlattenedTriangle(TangentVecType &normal) const
template<typename DataTypeContainer >
void shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::getWeightedNormalForFlattenedTriangle ( TangentVecType normal) const
inline

Definition at line 56 of file triangleShellFE.h.

56  {
57  TangentVecType dx1 = getNode(1), dx2 = getNode(2);
58  dx1 -= getNode(0);
59  dx2 -= getNode(0);
60  normal = TangentVecType( dx1.cross(dx2) );
61  }
const Point3DType & getNode(int i) const
Access node i.
DataTypeContainer::TangentVecType TangentVecType
template<typename DataTypeContainer >
const TangentVecType& shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::operator[] ( int  i) const
inline

Definition at line 87 of file triangleShellFE.h.

87 { return getNode(i);}
const Point3DType & getNode(int i) const
Access node i.
template<typename DataTypeContainer >
TangentVecType& shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::operator[] ( int  i)
inline

Definition at line 88 of file triangleShellFE.h.

88 {return getNode(i);}
const Point3DType & getNode(int i) const
Access node i.
template<typename DataTypeContainer >
void shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::print ( ) const
inline

Definition at line 50 of file triangleShellFE.h.

50  {
51  cout << endl << "Element " << _globIdx << endl;
52  printNodes();
53  }
template<typename DataTypeContainer >
void shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::printNodes ( ) const
inline

Definition at line 48 of file triangleShellFE.h.

48 { cout << "node0 = " << getNode(0).transpose() << endl << "node1 = " << getNode(1).transpose() << endl << "node2 = " << getNode(2).transpose() << endl;}
const Point3DType & getNode(int i) const
Access node i.
template<typename DataTypeContainer >
void shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::setGlobalNodeIdx ( int  localIndex,
int  globalIndex 
)
inline

Definition at line 77 of file triangleShellFE.h.

77 { _globNodeIdx[localIndex] = globalIndex;}
template<typename DataTypeContainer >
void shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::setNode ( int  i,
const Point3DType node 
)
inline

Definition at line 82 of file triangleShellFE.h.

template<typename DataTypeContainer >
void shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::updateNodesAndEdges ( const VertexIterator nodes)
inline

Definition at line 43 of file triangleShellFE.h.

43  {
44  for ( int i = 0; i < 3; ++i ) _nodes[i] = nodes[ _globNodeIdx[i] ];
45  for ( int i = 0; i < 3; ++i ) _edges[i] = getNode((i+2)%3) - getNode((i+1)%3);
46  }
const Point3DType & getNode(int i) const
Access node i.

Member Data Documentation

template<typename DataTypeContainer >
TangentVecType shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::_edges[3]
protected

Definition at line 25 of file triangleShellFE.h.

template<typename DataTypeContainer >
int shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::_globIdx
protected

Definition at line 22 of file triangleShellFE.h.

template<typename DataTypeContainer >
Indices3DType shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::_globNodeIdx
protected

Definition at line 23 of file triangleShellFE.h.

template<typename DataTypeContainer >
Point3DType shellFE::ShellElementWithTangentSpaceAtVertex< DataTypeContainer >::_nodes[3]
protected

Definition at line 24 of file triangleShellFE.h.


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