ESYS13
Revision_
|
00001 00002 /******************************************************* 00003 * 00004 * Copyright (c) 2003-2012 by University of Queensland 00005 * Earth Systems Science Computational Center (ESSCC) 00006 * http://www.uq.edu.au/esscc 00007 * 00008 * Primary Business: Queensland, Australia 00009 * Licensed under the Open Software License version 3.0 00010 * http://www.opensource.org/licenses/osl-3.0.php 00011 * 00012 *******************************************************/ 00013 00014 00015 /**************************************************************/ 00016 00017 /* Finley: integration schemes for element shapes Tri, Quad, Hex, Tet, Line, Point */ 00018 00019 /**************************************************************/ 00020 00021 #ifndef INC_FINLEY_QUADRATURE 00022 #define INC_FINLEY_QUADRATURE 00023 00024 /**************************************************************/ 00025 00026 #include "Finley.h" 00027 00028 /**************************************************************/ 00029 00030 #define MAX_numQuadNodesLine 10 00031 00032 typedef enum { 00033 PointQuad, 00034 LineQuad, 00035 TriQuad, 00036 RecQuad, 00037 TetQuad, 00038 HexQuad, 00039 NoQuad /* marks end of list */ 00040 } Finley_QuadTypeId; 00041 00042 typedef void (Finley_Quad_getNodes) (dim_t,double*,double*); 00043 typedef dim_t (Finley_Quad_getNumNodes) (dim_t); 00044 typedef dim_t(Finley_Quad_getMacro)(dim_t numSubElements, int numQuadNodes, double* quadNodes, double* quadWeights, 00045 dim_t numF, double* dFdv, 00046 dim_t new_len, double* new_quadNodes, double* new_quadWeights, 00047 double* new_dFfv ); 00048 00049 typedef struct Finley_QuadInfo { 00050 Finley_QuadTypeId TypeId; /* the id */ 00051 char* Name; /* the name in text form e.g. Line,Rec,... */ 00052 dim_t numDim; /* spatial dimension */ 00053 dim_t numVertices; /* number of vertices of the element */ 00054 Finley_Quad_getNodes* getQuadNodes; /* function to set the quadrature points for a given order */ 00055 Finley_Quad_getNumNodes* getNumQuadNodes; /* function selects the number of quadrature nodes for a given accuracy order */ 00056 Finley_Quad_getMacro *getMacro; /* transfers a given quadrature scheme to a macro element structure */ 00057 } Finley_QuadInfo; 00058 00059 /**************************************************************/ 00060 00061 /* Interfaces: */ 00062 00063 00064 Finley_Quad_getMacro Finley_Quad_MacroPoint; 00065 Finley_Quad_getMacro Finley_Quad_MacroLine; 00066 Finley_Quad_getMacro Finley_Quad_MacroTri; 00067 Finley_Quad_getMacro Finley_Quad_MacroRec; 00068 Finley_Quad_getMacro Finley_Quad_MacroTet; 00069 Finley_Quad_getMacro Finley_Quad_MacroHex; 00070 00071 00072 Finley_Quad_getNodes Finley_Quad_getNodesTri; 00073 Finley_Quad_getNodes Finley_Quad_getNodesTet; 00074 Finley_Quad_getNodes Finley_Quad_getNodesRec; 00075 Finley_Quad_getNodes Finley_Quad_getNodesHex; 00076 Finley_Quad_getNodes Finley_Quad_getNodesLine; 00077 Finley_Quad_getNodes Finley_Quad_getNodesPoint; 00078 Finley_Quad_getNodes Finley_Quad_getNodesTriOnFace; 00079 Finley_Quad_getNodes Finley_Quad_getNodesRecOnFace; 00080 Finley_Quad_getNodes Finley_Quad_getNodesLineOnFace; 00081 Finley_Quad_getNodes Finley_Quad_getNodesPointOnFace; 00082 Finley_Quad_getNodes Finley_Quad_getNodesTriMacro; 00083 Finley_Quad_getNodes Finley_Quad_getNodesTetMacro; 00084 Finley_Quad_getNodes Finley_Quad_getNodesRecMacro; 00085 Finley_Quad_getNodes Finley_Quad_getNodesHexMacro; 00086 Finley_Quad_getNodes Finley_Quad_getNodesLineMacro; 00087 00088 00089 00090 Finley_Quad_getNumNodes Finley_Quad_getNumNodesPoint; 00091 Finley_Quad_getNumNodes Finley_Quad_getNumNodesLine; 00092 Finley_Quad_getNumNodes Finley_Quad_getNumNodesTri; 00093 Finley_Quad_getNumNodes Finley_Quad_getNumNodesRec; 00094 Finley_Quad_getNumNodes Finley_Quad_getNumNodesTet; 00095 Finley_Quad_getNumNodes Finley_Quad_getNumNodesHex; 00096 00097 void Finley_Quad_makeNodesOnFace(dim_t, dim_t,double*,double*, Finley_Quad_getNodes); 00098 Finley_QuadInfo* Finley_QuadInfo_getInfo(Finley_QuadTypeId id); 00099 00100 #endif /* #ifndef INC_FINLEY_QUADRATURE */ 00101