GemaCoreLib
The GeMA Core library
gmPyraIntegrationRule.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_PYRA_INT_RULE_H_
27 #define _GEMA_PYRA_INT_RULE_H_
28 
29 #include "gmIntegrationRule.h"
31 #include "gmBarIntegrationRule.h" // Needed by edge rules
32 #include "gmQuadIntegrationRule.h" // Needed by face rules
33 #include "gmTriIntegrationRule.h" // Needed by face rules
34 
35 //--------------------------------------------------------
36 // Element rules
37 //--------------------------------------------------------
38 
41 {
42 public:
49  GmGaussIntegrationTables::pyraRuleTable(rule),
50  GmGaussIntegrationTables::pyraRuleDegree(rule))
51  {
52  }
53 
55  GmPyraGaussIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
57  {
58  assert(irType == GM_GAUSS_RULE_TYPE); Q_UNUSED(irType); Q_UNUSED(rule2); Q_UNUSED(rule3);
59  }
60 };
61 
63 
64 
65 //--------------------------------------------------------
66 // Border rules
67 //--------------------------------------------------------
68 
71 {
72 public:
74  GmPyraGaussFaceIntegrationRule(GmCellType type, GmCellFaceType faceType, int rule1, int rule2)
75  : GmProxyBorderIntegrationRule(type, 3, faceType == GM_QUAD_FACE ?
76  (GmIntegrationRule*) new GmQuadGaussIntegrationRule(rule1, rule2) :
77  (GmIntegrationRule*) new GmTriGaussIntegrationRule(rule1), true) {}
78 
80  GmPyraGaussFaceIntegrationRule(GmCellType type, GmCellFaceType faceType, GmIntegrationRuleType irType, int rule1, int rule2)
81  : GmPyraGaussFaceIntegrationRule(type, faceType, rule1, rule2) { Q_UNUSED(irType); }
82 };
83 
86 {
87 public:
90  : GmProxyBorderIntegrationRule(type, 3, new GmLineGaussIntegrationRule(rule), false) {}
91 
94  : GmPyraGaussEdgeIntegrationRule(type, rule) { Q_UNUSED(irType); }
95 };
96 
97 
98 #endif
99 
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.
GmPyraGaussEdgeIntegrationRule(GmCellType type, GmIntegrationRuleType irType, int rule)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmPyraIntegrationRule.h:93
Gauss rules.
Definition: gmIntegrationRule.h:75
GmCellFaceType
The type of a 3D element's face.
Definition: gmCellType.h:135
GmPyraGaussIntegrationRule(GmIntegrationRuleType irType, int rule1, int rule2, int rule3)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmPyraIntegrationRule.h:55
Gauss integration rule for Tet element borders (edges)
Definition: gmPyraIntegrationRule.h:85
Declaration of the GmIntegrationRule class and its helper decendants.
2D Isotropic / anisotropic Gauss integration rules for Quad elements
Definition: gmQuadIntegrationRule.h:42
GmPyraGaussEdgeIntegrationRule(GmCellType type, int rule)
Constructor.
Definition: gmPyraIntegrationRule.h:89
Integration rule base classe.
Definition: gmIntegrationRule.h:88
GmPyraGaussFaceIntegrationRule(GmCellType type, GmCellFaceType faceType, int rule1, int rule2)
Constructor.
Definition: gmPyraIntegrationRule.h:74
3D integration rules for Pyramid elements
Definition: gmPyraIntegrationRule.h:40
The element face is a quadrilateral.
Definition: gmCellType.h:137
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
GmPyraGaussIntegrationRule(int rule)
Basic constructor for a pyramid integration rule using Gauss rules. Rule should be 1 ,...
Definition: gmPyraIntegrationRule.h:47
Newton Integration rule for pyramid elements. Should be included.
Definition: gmPyraIntegrationRule.h:70
#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 GmQuadXxxxIntegrationRule family of classes, including border rules....
GmCellType
Mesh Cell types. Don't change type orders or add types without reading comments below.
Definition: gmCellType.h:30
GmPyraGaussFaceIntegrationRule(GmCellType type, GmCellFaceType faceType, GmIntegrationRuleType irType, int rule1, int rule2)
Standard constructor to enable the class use with GmCellIntegrationRuleSet.
Definition: gmPyraIntegrationRule.h:80
Base cache key for 3D Gauss pyramid rules.
Definition: gmIntegrationRule.h:48
Declaration of the GmTriXxxxIntegrationRule family of classes, including border rules....
A helper class used to implement rules based on a single table storing the full natural coordinate + ...
Definition: gmIntegrationRule.h:252
1D Gauss Integration rules (for bar elements)
Definition: gmBarIntegrationRule.h:36
Declaration of the GmLineXxxxIntegrationRule family of classes Content previously in gmIntegrationRul...