00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkFEMElement2DC0LinearQuadrilateral_h
00019 #define __itkFEMElement2DC0LinearQuadrilateral_h
00020
00021 #include "itkFEMElementStd.h"
00022
00023 namespace itk {
00024 namespace fem {
00025
00026
00027
00028
00033 class Element2DC0LinearQuadrilateral : public ElementStd<4,2>
00034 {
00035 typedef ElementStd<4,2> TemplatedParentClass;
00036 FEM_ABSTRACT_CLASS( Element2DC0LinearQuadrilateral, TemplatedParentClass )
00037 public:
00038
00039
00040
00041
00043
00044
00045
00046
00047 enum { DefaultIntegrationOrder = 2 };
00048
00049 virtual void GetIntegrationPointAndWeight(unsigned int i, VectorType& pt, Float& w, unsigned int order) const;
00050
00051 virtual unsigned int GetNumberOfIntegrationPoints(unsigned int order) const;
00052
00053
00054
00056
00057
00058
00059
00060 virtual VectorType ShapeFunctions( const VectorType& pt ) const;
00061
00062 virtual void ShapeFunctionDerivatives( const VectorType& pt, MatrixType& shapeD ) const;
00063
00064 virtual bool GetLocalFromGlobalCoordinates( const VectorType& globalPt, VectorType& localPt) const;
00065
00069 #ifdef FEM_BUILD_VISUALIZATION
00070 void Draw(CDC* pDC, Solution::ConstPointer sol) const;
00071 #endif
00072
00073 };
00074
00075
00076
00077
00078 }}
00079
00080 #endif // #ifndef __itkFEMElement2DC0LinearQuadrilateral_h