GemaCoreLib
The GeMA Core library
gmTetIntegrationRule.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_TET_INT_RULE_H_
27 #define _GEMA_TET_INT_RULE_H_
28 
29 #include "gmIntegrationRule.h"
31 #include "gmBarIntegrationRule.h" // Needed by edge rules
32 #include "gmTriIntegrationRule.h" // Needed by face rules
33 
36 
37 //--------------------------------------------------------
38 // Element rules
39 //--------------------------------------------------------
40 
41 
44 {
45 public:
52  GmGaussIntegrationTables::tetRuleTable(rule),
53  GmGaussIntegrationTables::tetRuleDegree(rule))
54  {
55  }
56 
58  GmTetGaussIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
60  {
61  assert(irType == GM_GAUSS_RULE_TYPE); Q_UNUSED(irType); Q_UNUSED(rule2); Q_UNUSED(rule3);
62  }
63 };
64 
67 {
68 public:
73  GmTetNewtonIntegrationRule(int rule, bool closed)
75  GM_TET_NIR_KEY, rule,
76  GmNewtonIntegrationTables::tetRuleTable(rule, closed),
77  GmNewtonIntegrationTables::tetRuleDegree(rule))
78  {
79  }
80 
82  GmTetNewtonIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
84  {
85  assert(irType == GM_CLOSED_NEWTON_RULE_TYPE || irType == GM_OPEN_NEWTON_RULE_TYPE); Q_UNUSED(rule2); Q_UNUSED(rule3);
86  }
87 };
88 
89 //--------------------------------------------------------
90 // Border rules
91 //--------------------------------------------------------
92 
93 
96 {
97 public:
100  : GmProxyBorderIntegrationRule(type, 4, new GmTriGaussIntegrationRule(rule), true) {}
101 
103  GmTetGaussFaceIntegrationRule(GmCellType type, GmCellFaceType faceType, GmIntegrationRuleType irType, int rule1, int rule2)
104  : GmTetGaussFaceIntegrationRule(type, rule1) { Q_UNUSED(faceType); Q_UNUSED(irType); Q_UNUSED(rule2); }
105 };
106 
109 {
110 public:
113  : GmProxyBorderIntegrationRule(type, 4, new GmLineGaussIntegrationRule(rule), false) {}
114 
117  : GmTetGaussEdgeIntegrationRule(type, rule) { Q_UNUSED(irType); }
118 };
119 
120 
121 #endif
122 
Gauss Integration rule for triangle elements. Base on Felippa, IFEM, section 24.2.
Definition: gmTriIntegrationRule.h:42
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...
Gauss rules.
Definition: gmIntegrationRule.h:75
Base cache key for 3D Newton cotes tetrahedron rules.
Definition: gmIntegrationRule.h:55
GmCellFaceType
The type of a 3D element's face.
Definition: gmCellType.h:135
GmTetGaussEdgeIntegrationRule(GmCellType type, GmIntegrationRuleType irType, int rule)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmTetIntegrationRule.h:116
GmTetGaussFaceIntegrationRule(GmCellType type, GmCellFaceType faceType, GmIntegrationRuleType irType, int rule1, int rule2)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmTetIntegrationRule.h:103
Base cache key for 3D Gauss tetrahedron rules.
Definition: gmIntegrationRule.h:46
Declaration of the GmIntegrationRule class and its helper decendants.
Gauss integration rule for Tet element faces.
Definition: gmTetIntegrationRule.h:95
Newton Integration rule for tetrahedron elements. Accepts both open and closed rules.
Definition: gmTetIntegrationRule.h:66
GmTetGaussEdgeIntegrationRule(GmCellType type, int rule)
Constructor.
Definition: gmTetIntegrationRule.h:112
A class storing tables with (position, weight) pairs for line, triangle and tetrahedron Gauss integra...
Definition: gmGaussIntegrationTables.h:36
GmTetNewtonIntegrationRule(int rule, bool closed)
Basic constructor for a tetrahedron integration rule using Newton Cotes rules. Rule from 1 to 5....
Definition: gmTetIntegrationRule.h:73
GmTetNewtonIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmTetIntegrationRule.h:82
Common code for border integration rules based on a given integration rule that is used to implement ...
Definition: gmBorderIntegrationRule.h:74
Gauss integration rule for Tet element borders (edges)
Definition: gmTetIntegrationRule.h:108
#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
GmTetGaussIntegrationRule(int rule)
Basic constructor for a Tetrahedron integration rule using Gauss rules. Rule should be 1 or 4....
Definition: gmTetIntegrationRule.h:50
GmTetGaussFaceIntegrationRule(GmCellType type, int rule)
Constructor.
Definition: gmTetIntegrationRule.h:99
GmTetGaussIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmTetIntegrationRule.h:58
GmCellType
Mesh Cell types. Don't change type orders or add types without reading comments below.
Definition: gmCellType.h:30
3D integration rules for Tet elements
Definition: gmTetIntegrationRule.h:43
Declaration of the set of tables defining Gauss integration rule points and weights Content was previ...
Declaration of the GmTriXxxxIntegrationRule family of classes, including border rules....
Open Newton-Cotes rules.
Definition: gmIntegrationRule.h:78
A helper class used to implement rules based on a single table storing the full natural coordinate + ...
Definition: gmIntegrationRule.h:252
Closed Newton-Cotes rules.
Definition: gmIntegrationRule.h:77
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