GemaCoreLib
The GeMA Core library
gmQuadIntegrationRule.h
Go to the documentation of this file.
1 /************************************************************************
2 **
3 ** Copyright (C) 2014 by Carlos Augusto Teixera Mendes
4 ** All rights reserved.
5 **
6 ** This file is part of the "GeMA" software. It's use should respect
7 ** the terms in the license agreement that can be found together
8 ** with this source code.
9 ** It is provided AS IS, with NO WARRANTY OF ANY KIND,
10 ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
11 ** A PARTICULAR PURPOSE.
12 **
13 ************************************************************************/
14 
26 #ifndef _GEMA_QUAD_INT_RULE_H_
27 #define _GEMA_QUAD_INT_RULE_H_
28 
29 #include "gmIntegrationRule.h"
31 #include "gmBarIntegrationRule.h" // Needed by edge rules
32 
36 
37 //--------------------------------------------------------
38 // Element rules
39 //--------------------------------------------------------
40 
43 {
44 public:
49  GmQuadGaussIntegrationRule(int xiRule, int etaRule)
51  xiRule, GmGaussIntegrationTables::lineRuleTable(xiRule), GmGaussIntegrationTables::lineRuleDegree(xiRule),
52  etaRule, GmGaussIntegrationTables::lineRuleTable(etaRule), GmGaussIntegrationTables::lineRuleDegree(etaRule))
53  {
54  }
55 
57  GmQuadGaussIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
58  : GmQuadGaussIntegrationRule(rule1, rule2)
59  {
60  assert(irType == GM_GAUSS_RULE_TYPE); Q_UNUSED(irType); Q_UNUSED(rule3);
61  }
62 };
63 
66 {
67 public:
72  GmQuadNewtonIntegrationRule(int xiRule, int etaRule, bool closed)
74  xiRule, GmNewtonIntegrationTables::lineRuleTable(xiRule, closed), GmNewtonIntegrationTables::lineRuleDegree(xiRule),
75  etaRule, GmNewtonIntegrationTables::lineRuleTable(etaRule, closed), GmNewtonIntegrationTables::lineRuleDegree(etaRule))
76  {
77  }
78 
80  GmQuadNewtonIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
82  {
83  assert(irType == GM_CLOSED_NEWTON_RULE_TYPE || irType == GM_OPEN_NEWTON_RULE_TYPE); Q_UNUSED(rule3);
84  }
85 };
86 
89 {
90 public:
95  GmQuadLobattoIntegrationRule(int xiRule, int etaRule)
97  xiRule, GmLobattoIntegrationTables::lineRuleTable(xiRule), GmLobattoIntegrationTables::lineRuleDegree(xiRule),
98  etaRule, GmLobattoIntegrationTables::lineRuleTable(etaRule), GmLobattoIntegrationTables::lineRuleDegree(etaRule))
99  {
100  }
101 
103  GmQuadLobattoIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
104  : GmQuadLobattoIntegrationRule(rule1, rule2)
105  {
106  assert(irType == GM_LOBATTO_RULE_TYPE); Q_UNUSED(irType); Q_UNUSED(rule3);
107  }
108 };
109 
110 
111 //--------------------------------------------------------
112 // Border rules
113 //--------------------------------------------------------
114 
115 
122 {
123 protected:
126  : GmProxyBorderIntegrationRule(type, 2, ir, false) {}
127 };
128 
131 {
132 public:
136 
139  : GmQuadGaussEdgeIntegrationRule(type, rule) { Q_UNUSED(irType); }
140 
141 };
142 
145 {
146 public:
150 
153  : GmQuadLobattoEdgeIntegrationRule(type, rule) { Q_UNUSED(irType); }
154 };
155 
156 #endif
157 
GmIntegrationRuleType
The type of desired integration rule (Gauss quadrature, Lobatto quadrature, etc)
Definition: gmIntegrationRule.h:67
Declaration of the GmBorderIntegrationRule and GmProxyBorderIntegrationRule classes.
Declaration of the set of tables defining Newton Cotes integration rule points and weights Content wa...
1D Lobatto Integration rules (for bar elements)
Definition: gmBarIntegrationRule.h:83
Lobatto integration rule for Quad element borders.
Definition: gmQuadIntegrationRule.h:144
Gauss rules.
Definition: gmIntegrationRule.h:75
GmQuadLobattoIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmQuadIntegrationRule.h:103
GmQuadEdgeIntegrationRule(GmCellType type, GmIntegrationRule *ir)
Constructor. See comments about parameters in GmProxyBorderIntegrationRule.
Definition: gmQuadIntegrationRule.h:125
GmQuadLobattoEdgeIntegrationRule(GmCellType type, int rule)
Constructor.
Definition: gmQuadIntegrationRule.h:148
GmQuadGaussEdgeIntegrationRule(GmCellType type, GmIntegrationRuleType irType, int rule)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmQuadIntegrationRule.h:138
2D Isotropic / anisotropic Lobatto integration rules for Quad elements
Definition: gmQuadIntegrationRule.h:88
Lobatto rules.
Definition: gmIntegrationRule.h:76
Declaration of the GmIntegrationRule class and its helper decendants.
2D Isotropic / anisotropic Gauss integration rules for Quad elements
Definition: gmQuadIntegrationRule.h:42
Integration rule base classe.
Definition: gmIntegrationRule.h:88
GmQuadLobattoIntegrationRule(int xiRule, int etaRule)
Basic constructor for a Quad integration rule using Lobatto rules. Rule from 1 to 11....
Definition: gmQuadIntegrationRule.h:95
GmQuadNewtonIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmQuadIntegrationRule.h:80
GmQuadLobattoEdgeIntegrationRule(GmCellType type, GmIntegrationRuleType irType, int rule)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmQuadIntegrationRule.h:152
A class storing tables with (position, weight) pairs for line, triangle and tetrahedron Gauss integra...
Definition: gmGaussIntegrationTables.h:36
Common code for border integration rules based on a given integration rule that is used to implement ...
Definition: gmBorderIntegrationRule.h:74
Base cache key for 2D Gauss quad rules.
Definition: gmIntegrationRule.h:43
Integration rule for Quad element borders.
Definition: gmQuadIntegrationRule.h:121
2D Isotropic / anisotropic Newton cotes integration rules for Quad elements
Definition: gmQuadIntegrationRule.h:65
Base cache key for 2D Newton cotes quad rules.
Definition: gmIntegrationRule.h:52
#define GMC_API_EXPORT
Macro for controling if the class is being exported (GEMA_CORE_LIB defined) or imported (GEMA_CORE_LI...
Definition: gmCoreConfig.h:35
Declaration of the set of tables defining Lobatto integration rule points and weights Content was pre...
GmQuadGaussIntegrationRule(int xiRule, int etaRule)
Basic constructor for a Quad integration rule using Gauss rules. Rule from 1 to 5....
Definition: gmQuadIntegrationRule.h:49
GmCellType
Mesh Cell types. Don't change type orders or add types without reading comments below.
Definition: gmCellType.h:30
Base cache key for 2D Lobatto quad rules.
Definition: gmIntegrationRule.h:59
GmQuadNewtonIntegrationRule(int xiRule, int etaRule, bool closed)
Basic constructor for a Quad integration rule using Newton Cotes rules. Rule from 1 to 5....
Definition: gmQuadIntegrationRule.h:72
A helper class used to combine 1, 2 or 3 single "line" integration rule tables into a multi-dimension...
Definition: gmIntegrationRule.h:191
GmQuadGaussEdgeIntegrationRule(GmCellType type, int rule)
Constructor.
Definition: gmQuadIntegrationRule.h:134
Declaration of the set of tables defining Gauss integration rule points and weights Content was previ...
Open Newton-Cotes rules.
Definition: gmIntegrationRule.h:78
A class storing tables with (position, weight) pairs for line Lobatto integration rules.
Definition: gmLobattoIntegrationTables.h:35
Closed Newton-Cotes rules.
Definition: gmIntegrationRule.h:77
GmQuadGaussIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmQuadIntegrationRule.h:57
1D Gauss Integration rules (for bar elements)
Definition: gmBarIntegrationRule.h:36
Declaration of the GmLineXxxxIntegrationRule family of classes Content previously in gmIntegrationRul...
A class storing tables with (position, weight) pairs for line, triangle and tetrahedron Open & closed...
Definition: gmNewtonCotesIntegrationTables.h:36
Gauss integration rule for Quad element borders.
Definition: gmQuadIntegrationRule.h:130