00001 // ------------------------------------------------------------------------- 00002 // shpquads.h - this file contains methods for the general serendipity 00003 // isoparametric quadrilateral finite element shape. 00004 // ------------------------------------------------------------------------- 00005 // Remarks: 00006 // ------------------------------------------------------------------------- 00007 // This element is general in the sense that the entire plane isoparametric 00008 // family is represented. Even triangular elements are represented. This is 00009 // indicated by replication of corner nodes. 00010 // ------------------------------------------------------------------------- 00011 // The numbering scheme is: 00012 // 00013 // s 00014 // ^ 00015 // | (natural coord. system) 00016 // | 00017 // -----> r 00018 // 00019 // 7 00020 // 4 +-------+-------+ 3 00021 // | | 00022 // | | 00023 // 8 + QUADS + 6 00024 // | | 00025 // | | 00026 // 1 +-------+-------+ 2 00027 // 5 00028 // ------------------------------------------------------------------------- 00029 // Some of the mid-side nodes indicated above may not exist 00030 // (indicated by a null - 0 - incidence number), in which case 00031 // the behavior along that border is linear instead of quadratic. 00032 // A triangular element can be obtained by collapsing nodes 00033 // 3 and 4, for example. This is the case when the incidence 00034 // numbers of these nodes are the same (incidence number of node 7 00035 // is disregarded in this case). 00036 // ------------------------------------------------------------------------- 00037 // 00038 // $Author: evandro $ 00039 // $Revision: 1.3 $ 00040 // $Date: 1999/04/12 14:58:25 $ 00041 // $State: Exp $ 00042 // 00043 // ------------------------------------------------------------------------- 00044 00045 #ifndef _SHPQUADS_H 00046 #define _SHPQUADS_H 00047 00048 #include "gbldefs.h" 00049 #include "shpplane.h" 00050 00051 // ------------------------------------------------------------------------- 00052 // Quads (Finite) Element Shape class: 00053 // 00054 class cShapeQuads : public cPlaneShape 00055 { 00056 public: 00057 cShapeQuads ( void ); 00058 virtual ~cShapeQuads ( void ); 00059 void Connectivity ( int * ); 00060 int GetMapOrder ( void ) { return 2; } 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