00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkFEMElement2DC0QuadraticTriangular_h
00019 #define __itkFEMElement2DC0QuadraticTriangular_h
00020
00021 #include "itkFEMElementStd.h"
00022
00023 namespace itk {
00024 namespace fem {
00025
00030 class Element2DC0QuadraticTriangular : public ElementStd<6,2>
00031 {
00032 typedef ElementStd<3,2> TemplatedParentClass;
00033 FEM_ABSTRACT_CLASS( Element2DC0QuadraticTriangular, TemplatedParentClass )
00034 public:
00035
00037
00041 enum { DefaultIntegrationOrder = 2 };
00042
00043 virtual void GetIntegrationPointAndWeight(unsigned int i, VectorType& pt, Float& w, unsigned int order) const;
00044
00045 virtual unsigned int GetNumberOfIntegrationPoints(unsigned int order) const;
00046
00048
00052 virtual VectorType ShapeFunctions( const VectorType& pt ) const;
00053
00054 virtual void ShapeFunctionDerivatives( const VectorType& pt, MatrixType& shapeD ) const;
00055
00056
00057 virtual bool GetLocalFromGlobalCoordinates( const VectorType&, VectorType& ) const
00058 {
00059 throw;
00060 return false;
00061 }
00062
00063
00064
00065 virtual Float JacobianDeterminant( const VectorType& pt, const MatrixType* pJ = 0 ) const;
00066 virtual void JacobianInverse( const VectorType& pt, MatrixType& invJ, const MatrixType* pJ = 0 ) const;
00067
00071 #ifdef FEM_BUILD_VISUALIZATION
00072 void Draw(CDC* pDC, Solution::ConstPointer sol) const;
00073 #endif
00074
00075 };
00076
00077 }}
00078
00079 #endif // #ifndef __itkFEMElement2DC0QuadraticTriangular_h
00080