GemaCoreLib
The GeMA Core library
gmTriIntegrationRule.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_TRI_INT_RULE_H_
27 #define _GEMA_TRI_INT_RULE_H_
28 
29 #include "gmIntegrationRule.h"
31 #include "gmBarIntegrationRule.h" // Needed by edge rules
32 
35 
36  //--------------------------------------------------------
37  // Element rules
38  //--------------------------------------------------------
39 
40 
43 {
44 public:
51  GmGaussIntegrationTables::triRuleTable(rule),
52  GmGaussIntegrationTables::triRuleDegree(rule))
53  {
54  }
55 
57  GmTriGaussIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
59  {
60  assert(irType == GM_GAUSS_RULE_TYPE); Q_UNUSED(irType); Q_UNUSED(rule2); Q_UNUSED(rule3);
61  }
62 };
63 
66 {
67 public:
72  GmTriNewtonIntegrationRule(int rule, bool closed)
74  GM_TRI_NIR_KEY, rule,
75  GmNewtonIntegrationTables::triRuleTable(rule, closed),
76  GmNewtonIntegrationTables::triRuleDegree(rule))
77  {
78  }
79 
81  GmTriNewtonIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
83  {
84  assert(irType == GM_CLOSED_NEWTON_RULE_TYPE || irType == GM_OPEN_NEWTON_RULE_TYPE); Q_UNUSED(rule2); Q_UNUSED(rule3);
85  }
86 };
87 
88 
89 //--------------------------------------------------------
90 // Border rules
91 //--------------------------------------------------------
92 
93 
96 {
97 public:
100  : GmProxyBorderIntegrationRule(type, 3, new GmLineGaussIntegrationRule(rule), false) {}
101 
104  : GmTriGaussEdgeIntegrationRule(type, rule) { Q_UNUSED(irType); }
105 };
106 
107 
108 #endif
109 
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
GmTriGaussIntegrationRule(int rule)
Basic constructor for a Triangle integration rule using Gauss rules. Rule should be 1,...
Definition: gmTriIntegrationRule.h:49
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
GmTriGaussIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmTriIntegrationRule.h:57
Newton Integration rule for triangle elements. Accepts both open and closed rules.
Definition: gmTriIntegrationRule.h:65
Declaration of the GmIntegrationRule class and its helper decendants.
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 Newton cotes triangle rules.
Definition: gmIntegrationRule.h:53
GmTriNewtonIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmTriIntegrationRule.h:81
Gauss integration rule for Tri element borders.
Definition: gmTriIntegrationRule.h:95
GmTriGaussEdgeIntegrationRule(GmCellType type, GmIntegrationRuleType irType, int rule)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmTriIntegrationRule.h:103
#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
Base cache key for 2D Gauss triangle rules.
Definition: gmIntegrationRule.h:44
GmCellType
Mesh Cell types. Don't change type orders or add types without reading comments below.
Definition: gmCellType.h:30
Declaration of the set of tables defining Gauss integration rule points and weights Content was previ...
GmTriGaussEdgeIntegrationRule(GmCellType type, int rule)
Constructor.
Definition: gmTriIntegrationRule.h:99
GmTriNewtonIntegrationRule(int rule, bool closed)
Basic constructor for a Triangle integration rule using Newton Cotes rules. Rule from 1 to 5....
Definition: gmTriIntegrationRule.h:72
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