/[escript]/trunk/finley/src/Quadrature.h
ViewVC logotype

Diff of /trunk/finley/src/Quadrature.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1388 by trankine, Fri Jan 11 07:45:58 2008 UTC revision 5448 by jfenwick, Fri Feb 6 05:31:37 2015 UTC
# Line 1  Line 1 
1    
2  /* $Id$ */  /*****************************************************************************
3    *
4    * Copyright (c) 2003-2015 by University of Queensland
5    * http://www.uq.edu.au
6    *
7    * Primary Business: Queensland, Australia
8    * Licensed under the Open Software License version 3.0
9    * http://www.opensource.org/licenses/osl-3.0.php
10    *
11    * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12    * Development 2012-2013 by School of Earth Sciences
13    * Development from 2014 by Centre for Geoscience Computing (GeoComp)
14    *
15    *****************************************************************************/
16    
17    
18    /****************************************************************************
19    
20  /*******************************************************    Finley: integration schemes for element shapes Tri, Quad, Hex, Tet, Line,
21   *            Point
  *           Copyright 2003-2007 by ACceSS MNRF  
  *       Copyright 2007 by University of Queensland  
  *  
  *                http://esscc.uq.edu.au  
  *        Primary Business: Queensland, Australia  
  *  Licensed under the Open Software License version 3.0  
  *     http://www.opensource.org/licenses/osl-3.0.php  
  *  
  *******************************************************/  
   
 /**************************************************************/  
22    
23  /*   Finley: integration schemes for element shapes Tri, Quad, Hex, Tet, Line, Point */  *****************************************************************************/
24    
25  /**************************************************************/  #ifndef __FINLEY_QUADRATURE_H__
26    #define __FINLEY_QUADRATURE_H__
27    
28  #ifndef INC_FINLEY_QUADRATURE  #include "Finley.h"
 #define INC_FINLEY_QUADRATURE  
29    
30  /**************************************************************/  #define MAX_numQuadNodesLine 10
31    
32  #include "Finley.h"  namespace finley {
33    
34  /**************************************************************/  typedef enum {
35        PointQuad,
36        LineQuad,
37        TriQuad,
38        RecQuad,
39        TetQuad,
40        HexQuad,
41        NoQuad   // marks end of list
42    } QuadTypeId;
43    
44    typedef void (Quad_getNodes) (int, std::vector<double>&, std::vector<double>&);
45    typedef int (Quad_getNumNodes) (int);
46    typedef int (Quad_getMacro) (int numSubElements, int numQuadNodes,
47                                 const double* quadNodes,
48                                 const double* quadWeights,
49                                 int numF, const double* dFdv,
50                                 int new_len, double* new_quadNodes,
51                                 double* new_quadWeights, double* new_dFfv);
52    
53    struct QuadInfo {
54        /// quadrature type id
55        QuadTypeId TypeId;
56        /// the name in text form e.g. "Line", "Rec", ...
57        const char* Name;
58        /// number of spatial dimensions
59        int numDim;
60        /// number of vertices of the element
61        int numVertices;
62        /// function that returns the quadrature points for a given order
63        Quad_getNodes* getQuadNodes;
64        /// function that returns the number of quadrature nodes for a given
65        /// accuracy order
66        Quad_getNumNodes* getNumQuadNodes;
67        /// transfers a given quadrature scheme to a macro element structure
68        Quad_getMacro *getMacro;
69    };
70    
71    
72    /****** Interfaces ******/
73    
74    Quad_getMacro Quad_MacroPoint;
75    Quad_getMacro Quad_MacroLine;
76    Quad_getMacro Quad_MacroTri;
77    Quad_getMacro Quad_MacroRec;
78    Quad_getMacro Quad_MacroTet;
79    Quad_getMacro Quad_MacroHex;
80    
81    Quad_getNodes Quad_getNodesTri;
82    Quad_getNodes Quad_getNodesTet;
83    Quad_getNodes Quad_getNodesRec;
84    Quad_getNodes Quad_getNodesHex;
85    Quad_getNodes Quad_getNodesLine;
86    Quad_getNodes Quad_getNodesPoint;
87    Quad_getNodes Quad_getNodesTriOnFace;
88    Quad_getNodes Quad_getNodesRecOnFace;
89    Quad_getNodes Quad_getNodesLineOnFace;
90    Quad_getNodes Quad_getNodesPointOnFace;
91    Quad_getNodes Quad_getNodesTriMacro;
92    Quad_getNodes Quad_getNodesTetMacro;
93    Quad_getNodes Quad_getNodesRecMacro;
94    Quad_getNodes Quad_getNodesHexMacro;
95    Quad_getNodes Quad_getNodesLineMacro;
96    
97    Quad_getNumNodes Quad_getNumNodesPoint;
98    Quad_getNumNodes Quad_getNumNodesLine;
99    Quad_getNumNodes Quad_getNumNodesTri;
100    Quad_getNumNodes Quad_getNumNodesRec;
101    Quad_getNumNodes Quad_getNumNodesTet;
102    Quad_getNumNodes Quad_getNumNodesHex;
103    
104  #define MAX_numQuadNodesLine 10  void Quad_makeNodesOnFace(int, int, double*, double*, Quad_getNodes);
105    const QuadInfo* QuadInfo_getInfo(QuadTypeId id);
106    
107  /**************************************************************/  } // namespace finley
108    
109  /*     Interfaces: */  #endif // __FINLEY_QUADRATURE_H__
110    
 typedef void (Finley_Quad_getNodes) (dim_t,double*,double*);  
 Finley_Quad_getNodes Finley_Quad_getNodesTri;  
 Finley_Quad_getNodes Finley_Quad_getNodesTet;  
 Finley_Quad_getNodes Finley_Quad_getNodesRec;  
 Finley_Quad_getNodes Finley_Quad_getNodesHex;  
 Finley_Quad_getNodes Finley_Quad_getNodesLine;  
 Finley_Quad_getNodes Finley_Quad_getNodesPoint;  
 Finley_Quad_getNodes Finley_Quad_getNodesTriOnFace;  
 Finley_Quad_getNodes Finley_Quad_getNodesRecOnFace;  
 Finley_Quad_getNodes Finley_Quad_getNodesLineOnFace;  
 Finley_Quad_getNodes Finley_Quad_getNodesPointOnFace;  
   
 typedef dim_t (Finley_Quad_getNumNodes) (dim_t);  
 Finley_Quad_getNumNodes Finley_Quad_getNumNodesPoint;  
 Finley_Quad_getNumNodes Finley_Quad_getNumNodesLine;  
 Finley_Quad_getNumNodes Finley_Quad_getNumNodesTri;  
 Finley_Quad_getNumNodes Finley_Quad_getNumNodesRec;  
 Finley_Quad_getNumNodes Finley_Quad_getNumNodesTet;  
 Finley_Quad_getNumNodes Finley_Quad_getNumNodesHex;  
   
 void Finley_Quad_makeNodesOnFace(dim_t, dim_t,double*,double*, Finley_Quad_getNodes);  
   
 #endif /* #ifndef INC_FINLEY_QUADRATURE */  
   
 /*  
  * $Log$  
  * Revision 1.3  2005/09/15 03:44:23  jgs  
  * Merge of development branch dev-02 back to main trunk on 2005-09-15  
  *  
  * Revision 1.2.2.1  2005/09/07 06:26:20  gross  
  * the solver from finley are put into the standalone package paso now  
  *  
  * Revision 1.2  2005/07/08 04:07:56  jgs  
  * Merge of development branch back to main trunk on 2005-07-08  
  *  
  * Revision 1.1.1.1.2.1  2005/06/29 02:34:55  gross  
  * some changes towards 64 integers in finley  
  *  
  * Revision 1.1.1.1  2004/10/26 06:53:57  jgs  
  * initial import of project esys2  
  *  
  * Revision 1.1.1.1  2004/06/24 04:00:40  johng  
  * Initial version of eys using boost-python.  
  *  
  *  
  */  

Legend:
Removed from v.1388  
changed lines
  Added in v.5448

  ViewVC Help
Powered by ViewVC 1.1.26