00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
#ifndef __itkFEMElement2DC0LinearTriangular_h
00019
#define __itkFEMElement2DC0LinearTriangular_h
00020
00021
#include "itkFEMElementStd.h"
00022
00023
namespace itk {
00024
namespace fem {
00025
00026
00027
00028
00033 class Element2DC0LinearTriangular :
public ElementStd<3,2>
00034 {
00035
typedef ElementStd<3,2> TemplatedParentClass;
00036 FEM_ABSTRACT_CLASS(
Element2DC0LinearTriangular,
TemplatedParentClass )
00037 public:
00038
00039
00041
00042
00043
00044
00045 enum {
DefaultIntegrationOrder = 1 };
00046
00047
virtual void GetIntegrationPointAndWeight(
unsigned int i, VectorType& pt, Float& w,
unsigned int order)
const;
00048
00049
virtual unsigned int GetNumberOfIntegrationPoints(
unsigned int order)
const;
00050
00051
00052
00054
00055
00056
00057
00058
virtual VectorType
ShapeFunctions(
const VectorType& pt )
const;
00059
00060
virtual void ShapeFunctionDerivatives(
const VectorType& pt, MatrixType& shapeD )
const;
00061
00062
00063
virtual bool GetLocalFromGlobalCoordinates(
const VectorType& globalPt , VectorType& localPt)
const;
00064
00065
00066
00067
virtual Float
JacobianDeterminant(
const VectorType& pt,
const MatrixType* pJ = 0 )
const;
00068
virtual void JacobianInverse(
const VectorType& pt, MatrixType& invJ,
const MatrixType* pJ = 0 )
const;
00069
00073
#ifdef FEM_BUILD_VISUALIZATION
00074
void Draw(CDC* pDC,
Solution::ConstPointer sol)
const;
00075
#endif
00076
00080 static const Float
trigGaussRuleInfo[6][7][4];
00081
00086 static const unsigned int Nip[6];
00087
00088 };
00089
00090
00091
00092
00093 }}
00094
00095
#endif // #ifndef __itkFEMElement2DC0LinearTriangular_h