24 #ifndef _GEMA_TET_CELL_GEOMETRY_INFO_H_ 25 #define _GEMA_TET_CELL_GEOMETRY_INFO_H_ 97 GmTetEdgeIntegrationRuleSet, GmLinearTetEdgeIntegrationRuleSetDefaults,
98 GmTetFaceIntegrationRuleSet, GmLinearTetFaceIntegrationRuleSetDefaults>
124 return GmGeometryUtils::tet4IsWellDefined(X.col(0), X.col(1), X.col(2), X.col(3));
145 GmTetEdgeIntegrationRuleSet, GmQuadraticTetEdgeIntegrationRuleSetDefaults,
146 GmTetFaceIntegrationRuleSet, GmQuadraticTetFaceIntegrationRuleSetDefaults>
165 return GmGeometryUtils::tet10ValidEdges(X) &&
166 GmGeometryUtils::tet4IsWellDefined(X.col(0), X.col(1), X.col(2), X.col(3));
GmTet10CellGeometryInfo(GmCellGeometryMetadata &&metadata)
Protected constructor. Only a single Hex20 geometry info object is ever necessary,...
Definition: gmTetCellGeometryInfo.h:171
void centroidByIntegration(const GmMatrix &X, GmVector &coord, const GmIntegrationRule *ir=NULL) const
Given a cell geometry defined by matrix X (with node coordinates organized by column) performs a nume...
Definition: gmCellGeometryInfo.cpp:114
Gauss rules.
Definition: gmIntegrationRule.h:75
GmCellGeometryIntegrationRuleSet< GmTetGaussFaceIntegrationRule, GmCellGeometryNullIntegrationRule, GmCellGeometryNullIntegrationRule, GmCellGeometryNullIntegrationRule > GmTetFaceIntegrationRuleSet
The set of possible FACE integration rules, per integration rule type, for the family of Tet elements...
Definition: gmTetCellGeometryInfo.h:45
GmCellGeometryIntegrationRuleSetDefaultRules< GM_GAUSS_RULE_TYPE, 2, -1, -1, -1 > GmQuadraticTetEdgeIntegrationRuleSetDefaults
The set of default rules for an Tet10 EDGE. Template parameters 2 to 5 are the default rule numbers f...
Definition: gmTetCellGeometryInfo.h:87
An auxiliary class that can be used as base for solid elements. Implements the needed integration rul...
Definition: gmCellGeometryInfo.h:380
A type used to represent a 'unexistant" integration rule. Should be used as template parameter for Gm...
Definition: gmCellGeometryIntegrationRuleSet.h:35
A helper class used to store the default rules for each rule type. Template parameters are the defaul...
Definition: gmCellGeometryIntegrationRuleSet.h:43
static bool pointInTetrahedron(const GmMatrix &X, const GmVector &p, QVector< bool > &ss)
Helper function for pointInTetrahedron(X, p) also returning the "same side" vector.
Definition: gmGeometryUtils.cpp:784
GmCellGeometryIntegrationRuleSetDefaultRules< GM_GAUSS_RULE_TYPE, 3, -1, -1, -1 > GmQuadraticTetFaceIntegrationRuleSetDefaults
The set of default rules for an Tet10 FACE. Template parameters 2 to 5 are the default rule numbers f...
Definition: gmTetCellGeometryInfo.h:82
virtual void centroidCartesian(const GmMatrix &X, GmVector &coord) const
Returns the Tet4 centroid by calculating the mean of the vertices (simplex centroid)
Definition: gmTetCellGeometryInfo.h:113
virtual bool contains(const GmMatrix &X, const GmVector &coord) const
Virtual method that should be implemented if this geometry info supports the GM_CELL_GEOMETRY_CONTAIN...
Definition: gmTetCellGeometryInfo.h:128
GmCellGeometryIntegrationRuleSet< GmTetGaussEdgeIntegrationRule, GmCellGeometryNullIntegrationRule, GmCellGeometryNullIntegrationRule, GmCellGeometryNullIntegrationRule > GmTetEdgeIntegrationRuleSet
The set of possible EDGE integration rules, per integration rule type, for the family of Tet elements...
Definition: gmTetCellGeometryInfo.h:49
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
Shape function handling base classe.
Definition: gmShape.h:37
GmCellGeometryIntegrationRuleSetDefaultRules< GM_GAUSS_RULE_TYPE, 2, -1, -1, -1 > GmLinearTetEdgeIntegrationRuleSetDefaults
The set of default rules for an Tet4 EDGE. Template parameters 2 to 5 are the default rule numbers fo...
Definition: gmTetCellGeometryInfo.h:68
Declaration of the GmCellGeometryIntegrationRuleSet class & friends.
The Tet10 implementation.
Definition: gmTetCellGeometryInfo.h:143
GmCellGeometryIntegrationRuleSetDefaultRules< GM_GAUSS_RULE_TYPE, 4, -1, 2, 2 > GmQuadraticTetIntegrationRuleSetDefaults
The set of default rules for an Tet10 ELEMENT. Template parameters 2 to 5 are the default rule number...
Definition: gmTetCellGeometryInfo.h:77
Declaration of the 3D tet shapes inheriting from GmShape class Previosuly part of the gmShape3D....
The Tet4 implementation.
Definition: gmTetCellGeometryInfo.h:95
double tetrahedronVolume(const GmVector &p1, const GmVector &p2, const GmVector &p3, const GmVector &p4)
Calculates the volume of the given tetrahedron. Points follow the standard Tet cell definition.
Definition: gmGeometryUtils.cpp:240
virtual bool isValid(const GmMatrix &X, double tol) const
Virtual method that should be implemented if this geometry info supports the GM_CELL_GEOMETRY_VALID c...
Definition: gmTetCellGeometryInfo.h:121
GmCellGeometryIntegrationRuleSet< GmTetGaussIntegrationRule, GmCellGeometryNullIntegrationRule, GmTetNewtonIntegrationRule, GmTetNewtonIntegrationRule > GmTetIntegrationRuleSet
The set of possible ELEMENT integration rules, per integration rule type, for the family of Tet eleme...
Definition: gmTetCellGeometryInfo.h:41
virtual GmShape * shapeInstance(int P, int Q) const
Shape function factory. Should return a NEW instance of the shape function object for this type....
Definition: gmTetCellGeometryInfo.h:104
A helper class used to store the class types for each rule type. Template parameters are the implemen...
Definition: gmCellGeometryIntegrationRuleSet.h:196
GmCellGeometryIntegrationRuleSetDefaultRules< GM_GAUSS_RULE_TYPE, 3, -1, -1, -1 > GmLinearTetFaceIntegrationRuleSetDefaults
The set of default rules for an Tet4 FACE. Template parameters 2 to 5 are the default rule numbers fo...
Definition: gmTetCellGeometryInfo.h:63
Utilitary functions for working with geometry.
virtual GmShape * shapeInstance(int P, int Q) const
Shape function factory. Should return a NEW instance of the shape function object for this type....
Definition: gmTetCellGeometryInfo.h:152
void tetrahedronCentroid(const GmVector &p1, const GmVector &p2, const GmVector &p3, const GmVector &p4, GmVector &coord)
Returns the cartesian coordinate of the tetrahedron centroid.
Definition: gmGeometryUtils.cpp:373
double dimensionByIntegration(const GmMatrix &X, const GmIntegrationRule *ir=NULL) const
Given a cell geometry defined by matrix X (with node coordinates organized by column) performs a nume...
Definition: gmCellGeometryInfo.cpp:76
GmTet4CellGeometryInfo(GmCellGeometryMetadata &&metadata)
Protected constructor. Only a single Hex8 geometry info object is ever necessary, created by GmTetCel...
Definition: gmTetCellGeometryInfo.h:132
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
GmShape specialization for a Tetrahedron with 4 nodes object.
Definition: gmTetShape.h:105
GmShape specialization for a Tetrahedron with 4 nodes object.
Definition: gmTetShape.h:136
virtual double dimension(const GmMatrix &X) const
Returns the Tet4 volume.
Definition: gmTetCellGeometryInfo.h:107
3D integration rules for Tet elements
Definition: gmTetIntegrationRule.h:43
virtual bool isValid(const GmMatrix &X, double tol) const
Virtual method that should be implemented if this geometry info supports the GM_CELL_GEOMETRY_VALID c...
Definition: gmTetCellGeometryInfo.h:162
Declaration of the GmCellGeometryInfo base class.
arma::vec GmVector
The basic type for a GeMA vector object. Currently based on an Armadillo vector.
Definition: gmVector.h:34
arma::mat GmMatrix
The basic type for a GeMA matrix object. Currently based on an Armadillo matrix.
Definition: gmMatrix.h:38
Declaration of the GmTetXxxxIntegrationRule family of classes, including border rules....
GmCellGeometryIntegrationRuleSetDefaultRules< GM_GAUSS_RULE_TYPE, 4, -1, 1, 1 > GmLinearTetIntegrationRuleSetDefaults
The set of default rules for an Tet4 ELEMENT. Template parameters 2 to 5 are the default rule numbers...
Definition: gmTetCellGeometryInfo.h:58
virtual void centroidCartesian(const GmMatrix &X, GmVector &coord) const
Returns the Tet10 centroid by numeric integration.
Definition: gmTetCellGeometryInfo.h:158
virtual double dimension(const GmMatrix &X) const
Returns the Tet10 volume by numeric integration.
Definition: gmTetCellGeometryInfo.h:155