escript
Revision_
|
00001 00002 /***************************************************************************** 00003 * 00004 * Copyright (c) 2003-2014 by University of Queensland 00005 * http://www.uq.edu.au 00006 * 00007 * Primary Business: Queensland, Australia 00008 * Licensed under the Open Software License version 3.0 00009 * http://www.opensource.org/licenses/osl-3.0.php 00010 * 00011 * Development until 2012 by Earth Systems Science Computational Center (ESSCC) 00012 * Development 2012-2013 by School of Earth Sciences 00013 * Development from 2014 by Centre for Geoscience Computing (GeoComp) 00014 * 00015 *****************************************************************************/ 00016 00017 00018 /**************************************************************************** 00019 00020 Finley: integration schemes for element shapes Tri, Quad, Hex, Tet, Line, 00021 Point 00022 00023 *****************************************************************************/ 00024 00025 #ifndef __FINLEY_QUADRATURE_H__ 00026 #define __FINLEY_QUADRATURE_H__ 00027 00028 #include "Finley.h" 00029 00030 #define MAX_numQuadNodesLine 10 00031 00032 namespace finley { 00033 00034 typedef enum { 00035 PointQuad, 00036 LineQuad, 00037 TriQuad, 00038 RecQuad, 00039 TetQuad, 00040 HexQuad, 00041 NoQuad // marks end of list 00042 } QuadTypeId; 00043 00044 typedef void (Quad_getNodes) (int, double*, double*); 00045 typedef int (Quad_getNumNodes) (int); 00046 typedef int (Quad_getMacro) (int numSubElements, int numQuadNodes, 00047 const double* quadNodes, 00048 const double* quadWeights, 00049 int numF, const double* dFdv, 00050 int new_len, double* new_quadNodes, 00051 double* new_quadWeights, double* new_dFfv); 00052 00053 struct QuadInfo { 00055 QuadTypeId TypeId; 00057 const char* Name; 00059 int numDim; 00061 int numVertices; 00063 Quad_getNodes* getQuadNodes; 00066 Quad_getNumNodes* getNumQuadNodes; 00068 Quad_getMacro *getMacro; 00069 }; 00070 00071 00072 /****** Interfaces ******/ 00073 00074 Quad_getMacro Quad_MacroPoint; 00075 Quad_getMacro Quad_MacroLine; 00076 Quad_getMacro Quad_MacroTri; 00077 Quad_getMacro Quad_MacroRec; 00078 Quad_getMacro Quad_MacroTet; 00079 Quad_getMacro Quad_MacroHex; 00080 00081 Quad_getNodes Quad_getNodesTri; 00082 Quad_getNodes Quad_getNodesTet; 00083 Quad_getNodes Quad_getNodesRec; 00084 Quad_getNodes Quad_getNodesHex; 00085 Quad_getNodes Quad_getNodesLine; 00086 Quad_getNodes Quad_getNodesPoint; 00087 Quad_getNodes Quad_getNodesTriOnFace; 00088 Quad_getNodes Quad_getNodesRecOnFace; 00089 Quad_getNodes Quad_getNodesLineOnFace; 00090 Quad_getNodes Quad_getNodesPointOnFace; 00091 Quad_getNodes Quad_getNodesTriMacro; 00092 Quad_getNodes Quad_getNodesTetMacro; 00093 Quad_getNodes Quad_getNodesRecMacro; 00094 Quad_getNodes Quad_getNodesHexMacro; 00095 Quad_getNodes Quad_getNodesLineMacro; 00096 00097 Quad_getNumNodes Quad_getNumNodesPoint; 00098 Quad_getNumNodes Quad_getNumNodesLine; 00099 Quad_getNumNodes Quad_getNumNodesTri; 00100 Quad_getNumNodes Quad_getNumNodesRec; 00101 Quad_getNumNodes Quad_getNumNodesTet; 00102 Quad_getNumNodes Quad_getNumNodesHex; 00103 00104 void Quad_makeNodesOnFace(int, int, double*, double*, Quad_getNodes); 00105 const QuadInfo* QuadInfo_getInfo(QuadTypeId id); 00106 00107 } // namespace finley 00108 00109 #endif // __FINLEY_QUADRATURE_H__ 00110