GemaCoreLib
The GeMA Core library
Public Member Functions | Static Public Member Functions | List of all members
GmBorderIntegrationRule Class Referenceabstract

Border integration rule base classe. More...

#include <gmBorderIntegrationRule.h>

Inheritance diagram for GmBorderIntegrationRule:
Inheritance graph
[legend]
Collaboration diagram for GmBorderIntegrationRule:
Collaboration graph
[legend]

Public Member Functions

virtual bool translatePoint (int border, const GmVector &borderCoord, GmVector &elementCoord) const =0
 Given an integration point calculated with the border rule, by a call to integrationPoint(), whose returned coordinate uses the border reference (edge or face), and so has less coordinates than the element coordinate system, returns a new point in the element reference system, filling the original set of coordinates with the missing, fixed, values assciated with a border. More...
 
virtual int numBorderCoord () const =0
 Returns the number of expected coordinates in a border coordinate.
 
- Public Member Functions inherited from GmIntegrationRule
virtual ~GmIntegrationRule ()
 Virtual destructor.
 
virtual bool isValid () const =0
 Returns true if this is a valid integration rule object, false if not. More...
 
virtual int numPoints () const =0
 Returns the number of integration points returned by this rule.
 
virtual void integrationPoint (int index, GmVector &naturalCoord, double *weight) const =0
 Given an index from 0 to numPoints() - 1, fills naturalCoord and weight with the position and weigth of the given integration point. More...
 
virtual int numNaturalCoord () const =0
 Returns the number of natural coordinates used by this integration rule.
 
virtual int degree () const =0
 Returns the integration degree for this rule (The polynomial degree for which this rule is exact)
 
virtual GmIntegrationRuleType ruleType () const =0
 Returns the type of the integration rule.
 
virtual QString ruleName () const =0
 Returns the current ruleName adopted by this integration rule.
 
virtual int rulePar (int num) const =0
 Returns the value of the numbered rule parameter received in the rule constructor (-1 if unused). Num should be a value between 1 and 3.
 
virtual int ruleParNumPoints (int num) const =0
 
virtual int cacheKey () const =0
 Returns an unique integer that can be used to uniquelly represent this kind of integration rule (i.e, two objects with the same cache key should return exactly the same set of integration points). More...
 
virtual const QVector< int > & closestIntegrationIndex (GmCellType type, int P, int Q, int nodeIndex) const
 Returns a list with the index of the closest(s) integraion points from nodeIndex. More...
 

Static Public Member Functions

static GmBorderIntegrationRulefaceInstance (GmCellType type, int P, int Q, int faceType, GmIntegrationRuleType irType, int rule1=-1, int rule2=-1)
 Instanciates a face integration rule for the specified element type using the provided parameters. Returns NULL if the parameter set results in an invalid integration rule. More...
 
static GmBorderIntegrationRuleedgeInstance (GmCellType type, int P, int Q, GmIntegrationRuleType irType, int rule1=-1)
 Instanciates an edge integration rule for the specified element type using the provided parameters. Returns NULL if the parameter set results in an invalid integration rule. More...
 
- Static Public Member Functions inherited from GmIntegrationRule
static GmIntegrationRuleinstance (GmCellType type, int P, int Q, GmIntegrationRuleType irType, int rule1=-1, int rule2=-1, int rule3=-1)
 Instanciates an integration rule for the specified element type using the provided parameters. Returns NULL if the parameter set results in an invalid integration rule. More...
 

Additional Inherited Members

- Protected Member Functions inherited from GmIntegrationRule
int makeCacheKey (GmIntegrationRuleCacheKeyBase base, bool closed, int rule1, int rule2=-1, int rule3=-1) const
 Creates an unique cache key based on the rule type cache key and the rule parameters.
 
QString makeRuleName (GmIntegrationRuleType irType, int rule1, int rule2=-1, int rule3=-1) const
 Returns a standard rule name based on rule type and rule parameters.
 

Detailed Description

Border integration rule base classe.

A border rule is an integration rule tied to en element border, where one or more of the elements natural coordinates is fixed.

Member Function Documentation

◆ edgeInstance()

GmBorderIntegrationRule * GmBorderIntegrationRule::edgeInstance ( GmCellType  type,
int  P,
int  Q,
GmIntegrationRuleType  irType,
int  rule1 = -1 
)
static

Instanciates an edge integration rule for the specified element type using the provided parameters. Returns NULL if the parameter set results in an invalid integration rule.

Parameters P and Q are needed only when working with hierarchical element types, such as GM_HQUADP or GM_HHEXP. They can be set to 0 for "common" element types.

Obs: A call with irType == GM_AUTO_RULE_TYPE and all rules set to -1 will always succeed (unless type refers to a 1D "line" element, which can't have an associated edge rule).

◆ faceInstance()

GmBorderIntegrationRule * GmBorderIntegrationRule::faceInstance ( GmCellType  type,
int  P,
int  Q,
int  faceType,
GmIntegrationRuleType  irType,
int  rule1 = -1,
int  rule2 = -1 
)
static

Instanciates a face integration rule for the specified element type using the provided parameters. Returns NULL if the parameter set results in an invalid integration rule.

The faceType parameter can be used to identify the desired face type for elements with more than one face type (like a wedge that has 3 quadrilateral faces and 2 triangular faces). In that case, faceType should be a GmCellFaceType value. If the element has only one face type, -1 can be passed to the faceType parameter (if the value is not -1, it MUST be equal to the type's face type).

Parameters P and Q are needed only when working with hierarchical element types, such as GM_HQUADP or GM_HHEXP. They can be set to 0 for "common" element types.

Obs: A call with irType == GM_AUTO_RULE_TYPE and all rules set to -1 will always succeed (unless type refers to an 1D "line" or 2D "surface" element, which can't have an associated face rule, or faceType references an invalid ace type for this element).

◆ translatePoint()

virtual bool GmBorderIntegrationRule::translatePoint ( int  border,
const GmVector borderCoord,
GmVector elementCoord 
) const
pure virtual

Given an integration point calculated with the border rule, by a call to integrationPoint(), whose returned coordinate uses the border reference (edge or face), and so has less coordinates than the element coordinate system, returns a new point in the element reference system, filling the original set of coordinates with the missing, fixed, values assciated with a border.

Parameters
borderThe number of the edge or face associated with the current element where the integration takes place.
borderCoordThe border integration point coordinate returned by the call to integrationPoint().
elementCoordThe vector to be filled with element coordinates equivalent to borderCoord. After filled, elementCoord will be a vector with size equal to numNaturalCoord(), which should be equal to the number of natural coordinates of the shape function of the element that this rule will be tied to. If necessary, this function also should make sure that the domain of the natural coordinate returned is compatible with the element's shape function.
Returns
Returns true on success or false if the given border shoiuld NOT be used for integration (like the 0 length edge for a closed 2d interface element)

Implemented in GmProxyBorderIntegrationRule.


The documentation for this class was generated from the following files: