Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef INC_FINLEY_SHAPEFUNCTIONS
00022 #define INC_FINLEY_SHAPEFUNCTIONS
00023
00024
00025
00026 #include "Finley.h"
00027
00028
00029
00030 #define S_INDEX(_J_,_I_,_NUMNODES_) INDEX2(_J_,_I_,_NUMNODES_)
00031 #define DSDV_INDEX(_J_,_K_,_I_,_NUMNODES_,_DIM_) INDEX3(_J_,_K_,_I_,_NUMNODES_,_DIM_)
00032
00033
00034 typedef enum {
00035 Point1Shape,
00036 Line2Shape,
00037 Line3Shape,
00038 Line4Shape,
00039 Tri3Shape,
00040 Tri6Shape,
00041 Tri9Shape,
00042 Tri10Shape,
00043 Rec4Shape,
00044 Rec8Shape,
00045 Rec9Shape,
00046 Rec12Shape,
00047 Rec16Shape,
00048 Tet4Shape,
00049 Tet10Shape,
00050 Tet16Shape,
00051 Hex8Shape,
00052 Hex20Shape,
00053 Hex27Shape,
00054 Hex32Shape,
00055 NoShape
00056 } Finley_ShapeFunctionTypeId;
00057
00058
00059
00060
00061
00062 typedef void (Finley_ShapeFunction_Evaluation) (dim_t,double*,double*,double*);
00063
00064 typedef struct Finley_ShapeFunctionInfo {
00065
00066 Finley_ShapeFunctionTypeId TypeId;
00067 char* Name;
00068 dim_t numDim;
00069 dim_t numShapes;
00070 dim_t numOrder;
00071 dim_t numVertices;
00072 Finley_ShapeFunction_Evaluation* getValues;
00073 } Finley_ShapeFunctionInfo;
00074
00075
00076
00077
00078
00079
00080 typedef struct Finley_ShapeFunction {
00081 Finley_ShapeFunctionInfo* Type;
00082 int numQuadNodes;
00083 double *QuadNodes;
00084 double *QuadWeights;
00085 double *S;
00086 double *dSdv;
00087 index_t reference_counter;
00088 } Finley_ShapeFunction;
00089
00090
00091
00092
00093 Finley_ShapeFunction_Evaluation Finley_Shape_Point1;
00094 Finley_ShapeFunction_Evaluation Finley_Shape_Line2;
00095 Finley_ShapeFunction_Evaluation Finley_Shape_Line3;
00096 Finley_ShapeFunction_Evaluation Finley_Shape_Line4;
00097 Finley_ShapeFunction_Evaluation Finley_Shape_Tri3;
00098 Finley_ShapeFunction_Evaluation Finley_Shape_Tri6;
00099 Finley_ShapeFunction_Evaluation Finley_Shape_Tri9;
00100 Finley_ShapeFunction_Evaluation Finley_Shape_Tri10;
00101 Finley_ShapeFunction_Evaluation Finley_Shape_Rec4;
00102 Finley_ShapeFunction_Evaluation Finley_Shape_Rec8;
00103 Finley_ShapeFunction_Evaluation Finley_Shape_Rec9;
00104 Finley_ShapeFunction_Evaluation Finley_Shape_Rec12;
00105 Finley_ShapeFunction_Evaluation Finley_Shape_Rec16;
00106 Finley_ShapeFunction_Evaluation Finley_Shape_Tet4;
00107 Finley_ShapeFunction_Evaluation Finley_Shape_Tet10;
00108 Finley_ShapeFunction_Evaluation Finley_Shape_Tet16;
00109 Finley_ShapeFunction_Evaluation Finley_Shape_Hex8;
00110 Finley_ShapeFunction_Evaluation Finley_Shape_Hex20;
00111 Finley_ShapeFunction_Evaluation Finley_Shape_Hex27;
00112 Finley_ShapeFunction_Evaluation Finley_Shape_Hex32;
00113
00114 Finley_ShapeFunction* Finley_ShapeFunction_alloc(Finley_ShapeFunctionTypeId id,int numQuadDim, int numQuadNodes, double *QuadNodes, double *QuadWeights);
00115 void Finley_ShapeFunction_dealloc(Finley_ShapeFunction*);
00116 Finley_ShapeFunctionTypeId Finley_ShapeFunction_getTypeId(char*);
00117 Finley_ShapeFunction* Finley_ShapeFunction_reference(Finley_ShapeFunction* in);
00118 Finley_ShapeFunctionInfo* Finley_ShapeFunction_getInfo(Finley_ShapeFunctionTypeId id);
00119 #endif