00001 // ------------------------------------------------------------------------- 00002 // ShpQuad6.h - this file contains methods for the 6-noded 00003 // quadrilateral element shape. 00004 // ------------------------------------------------------------------------- 00005 // Remarks: 00006 // ------------------------------------------------------------------------- 00007 // This shape contains two extra points for displacement interpolation. 00008 // The extra shape functions [ (1-r*r) and (1-s*s) ] are 00009 // associated to these points ( "nodeless" points ) in 00010 // order to compute the element stiffness matrix. After 00011 // that, the stiffness matrix is condensed to obtain the 00012 // final element stiffness matrix in terms of the original 00013 // corner nodes ( as in a Q4 element ). This element is 00014 // "non-conforming" because the shape mode (1-r*r) can be 00015 // activated in a given element and not be activated in 00016 // an adjacent finite element as shown in figure below: 00017 // ------------------------------------------------------------------------- 00018 // The numbering scheme is: 00019 // 00020 // s 00021 // ^ 00022 // | (natural coord. system) 00023 // | 00024 // -----> r 00025 // 00026 // 4 +---------------+ 3 00027 // | | 00028 // | | 00029 // | | 00030 // | * 5,6 | 00031 // | | 00032 // | | 00033 // | QUAD6 | 00034 // 1 +---------------+ 2 00035 // 00036 // Obs: 5,6 are internal dofs (nodeless). 00037 // ------------------------------------------------------------------------- 00038 // 00039 // $Author: evandro $ 00040 // $Revision: 1.3 $ 00041 // $Date: 1999/04/12 14:58:25 $ 00042 // $State: Exp $ 00043 // 00044 // ------------------------------------------------------------------------- 00045 00046 #ifndef _SHPQUAD6_H 00047 #define _SHPQUAD6_H 00048 00049 #include "gbldefs.h" 00050 #include "shpplane.h" 00051 00052 // ------------------------------------------------------------------------- 00053 // Quad6B (Finite) Element Shape class: 00054 // 00055 class cShapeQuad6 : public cPlaneShape 00056 { 00057 public: 00058 cShapeQuad6 ( void ); 00059 virtual ~cShapeQuad6 ( void ); 00060 int GetMapOrder ( void ) { return 1; } 00061 void MapFunc ( sNatCoord *, double * ); 00062 void ShapeFunc ( sNatCoord *, double * ); 00063 void DerivMapRST ( sNatCoord *, sDerivNat * ); 00064 void DerivShpRST ( sNatCoord *, sDerivNat * ); 00065 int GetEdge ( int *, eShapeType *, int *, int * ); 00066 int GetFace ( int *, eShapeType *, int *, int * ); 00067 void GetNatCoordMapNode( sNatCoord * ); 00068 }; 00069 00070 #endif