00001 /* -*- C -*- */ 00002 /* 00003 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00004 * 00005 * Fehmi Cirak 00006 * California Institute of Technology 00007 * (C) 2004 All Rights Reserved 00008 * 00009 * <LicenseText> 00010 * 00011 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00012 */ 00013 #ifndef SHAPEFUNCTION_H 00014 #define SHAPEFUNCTION_H 00015 00016 00017 #ifdef __cplusplus 00018 namespace shells { 00019 #define DECLARE_EXTERN extern "C" 00020 #else 00021 #define DECLARE_EXTERN extern 00022 #endif 00023 00024 typedef struct ShapeFunctionS { 00025 double *funct; /* function value */ 00026 double *deriv1[2]; /* first derivative */ 00027 double *deriv2[3]; /* second derivative */ 00028 } ShapeFunction; 00029 00030 00031 typedef struct InterpolationS { 00032 struct SVertexS **csubno; /* vertices used for interpolation */ 00033 int ivals; /* number of vertices in **csubno */ 00034 00035 ShapeFunction *shape, /* shape functions for the center */ 00036 *shape7Gp[7], 00037 *shapeVtx0, /* shape functions for the vertices */ 00038 *shapeVtx1, 00039 *shapeVtx2, 00040 *shapeEdge[3][3]; /* shape functios on the edges */ 00041 } Interpolation; 00042 00043 struct SElementS; 00044 00045 DECLARE_EXTERN void rotateInternalNumberingElement(struct SElementS *); 00046 DECLARE_EXTERN void shapeFunctionElement(struct SElementS *); 00047 00048 #ifdef __cplusplus 00049 } 00050 #endif 00051 #undef DECLARE_EXTERN 00052 00053 #endif