hp2FEM
0.1
|
Calculates the coordinates and weights for numerical integration of the tetrahedra element. The coordinates are those ones mapped from the hexahedron element to the baricentric coordinates of the tetrahedron. More...
#include <TetraNumericalIntegration.h>
Public Member Functions | |
TetraNumericalIntegration () | |
Default constructor. | |
TetraNumericalIntegration (TetraNumericalIntegration &Instance) | |
Copy-initializer constructor. | |
~TetraNumericalIntegration () | |
Class destructor. | |
TetraNumericalIntegration & | operator= (TetraNumericalIntegration &Instance) |
Copies the contents of instance to the object. | |
operator LineNumericalIntegration & () | |
Cast operator for the reference of the class attribute "LineNI". | |
operator TriangleNumericalIntegration & () | |
Cast operator for the reference of the class attribute "TriangleNI". | |
void | SetMaxPolyOrder (unsigned long MaxPolyOrder) |
Sets the maximum polynomial order. | |
void | SetNumberCoordsWeights (unsigned long NumberRow, unsigned long NumberData) |
Sets the coordinates and weights table for the specific TetraNumericalIntegration allocated. | |
unsigned long | GetMaxPolyOrder () |
Returns the maximum polynomial order. | |
LineNumericalIntegration & | GetLineNumericalIntegration (unsigned long LiDirection=1) |
Returns the reference to LineNumericalIntegration. According to LiDirection parameter returns one of the LineNumericalIntegration attributes of the TetraNumericalIntegration class. | |
unsigned long | GetNumberIntegrationPointsSets () |
Returns the number of sets of integration points calculated using the polynomial and integration orders. | |
unsigned long | GetMaxNumberIntegrationPointsSets (unsigned long LiDirection=1) |
Returns the maximum number of sets of integration points according to LineNI[1-4] class attributes. | |
long | GetIntegrationPointsSetNumber (NumericalIntegrationAttributes_S &NIAttributes, unsigned long IntegrandOrder) |
Returns the set number of the integration points for the given polynomial order. | |
unsigned long | GetNumberIntegrationPoints (NumericalIntegrationAttributes_S &NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, long &IntegPointsSetNumber) |
Returns the number of integration points given by integrand order for the quadrature rule stored in the class. Returns also the number of the set which stores the points. | |
unsigned long | GetNumberIntegrationPoints (ElementShape_E EntityShape, long IntegrationPointsSetNumber, unsigned long LiDirection=1) |
Returns the number of integration points for a given set number to a specific baricentric direction number. | |
unsigned long | GetTotalNumberIntegrationPoints () |
Returns the total number of integration points. | |
double *const | GetIntegrationPointsCoords (NumericalIntegrationAttributes_S &NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long &NumberIntegPoints, unsigned long LiDirection=1) |
Returns the coordinates of the integration points. In the case of Shape=TRIANGLE, this method collects the coordinates for the triangle element from the coordinates of the line everytime the method is executed. If Shape=TETRAHEDRON, this method collects the coordinates for the tetra element from the coordinates of the line everytime the method is executed. | |
double *const | GetIntegrationPointsWeights (NumericalIntegrationAttributes_S &NIAttributes, ElementShape_E EntityShape, unsigned long IntegrandOrder, unsigned long &NumberIntegPoints, unsigned long LiDirection=1) |
Returns the weights of the integration points. This method assumes that the weights have been already calculated by the procedure RunNumericalIntegration. | |
double * | GetIntegrationPointsWeightsBySets (unsigned long SetNumber, unsigned long &NumberIntegPoints) |
return the integration points weights as a double*, according to the given set. | |
unsigned long *const | GetIndices (NumericalIntegrationAttributes_S &NIAttributes, unsigned long IntegrandOrder, unsigned long &NumberIndices) |
Get Indices for tensorization of numerical integration coordinates and weights. This method assumes that the indices have been already calculated by the procedure RunNumericalIntegration. | |
OneIndexTable< unsigned long > & | GetIndices () |
Get Indices for tensorization of numerical integration coordinates and weights. This method assumes that the indices have been already calculated by the procedure RunNumericalIntegration. | |
unsigned long * | GetIndicesBySet (unsigned long SetNumber, unsigned long &NumberIndices) |
Returns the tensor indices. This method assumes that the tensor indices have been already calculated by the procedure RunNumericalIntegration. | |
void | RunNumericalIntegration (NumericalIntegrationAttributes_S &NIAttributes, ElementShape_E EntityShape, BuiltInArray< unsigned long > &PolyOrder) |
Calculates the tensorization indices and the weigths for numerical integration of the polynomial orders given in the input parameter PolyOrder and integrand orders calculated by [1,IOFactor] * P.. | |
void | Print (FILE *File, ElementShape_E EntityShape) |
: Prints the numerical integration attributes and values to the given ascii file. | |
Protected Attributes | |
LineNumericalIntegration | LineNI1 |
Instance of the LineNumericalIntegration class used to store the line coordinates and weights in direction L1. | |
LineNumericalIntegration | LineNI2 |
Instance of the LineNumericalIntegration class used to store the line coordinates and weights in direction L2. | |
LineNumericalIntegration | LineNI3 |
Instance of the LineNumericalIntegration class used to store the line coordinates and weights in direction L3. | |
LineNumericalIntegration | LineNI4 |
Instance of the LineNumericalIntegration class used to store the line coordinates and weights in direction L4. | |
TriangleNumericalIntegration | TriangleNI |
Instance of the TriangleNumericalIntegration class used to store the triangle coordinates and weights. | |
OneIndexTable< double > | Weights |
Table to store the tetra integration weights for all polynomial orders P and integrand orders calculated as [1,IOFactor] * P. | |
OneIndexTable< double > | Coords |
Table that stores the integration points coordinates for tetrahedra. | |
OneIndexTable< unsigned long > | TensorIndices |
Table to store the tensorization indices p, q, r and s for every integration point of the tetra element and polynomial order. | |
unsigned long | Pmax |
Maximum polynomial order. |
Calculates the coordinates and weights for numerical integration of the tetrahedra element. The coordinates are those ones mapped from the hexahedron element to the baricentric coordinates of the tetrahedron.
Copy-initializer constructor.
[in] | Instance | - instance of the TetraNumericalIntegration class |
unsigned long *const TetraNumericalIntegration::GetIndices | ( | NumericalIntegrationAttributes_S & | NIAttributes, |
unsigned long | IntegrandOrder, | ||
unsigned long & | NumberIndices | ||
) |
Get Indices for tensorization of numerical integration coordinates and weights. This method assumes that the indices have been already calculated by the procedure RunNumericalIntegration.
[in] | IntegrandOrder | - order of the integrand. Based on this value, the number of integration points is calculated for the quadrature rule stored in the class data. |
[out] | NumberIndices | - number of tensorization indices. |
OneIndexTable< unsigned long > & TetraNumericalIntegration::GetIndices | ( | ) |
Get Indices for tensorization of numerical integration coordinates and weights. This method assumes that the indices have been already calculated by the procedure RunNumericalIntegration.
unsigned long * TetraNumericalIntegration::GetIndicesBySet | ( | unsigned long | SetNumber, |
unsigned long & | NumberIndices | ||
) |
Returns the tensor indices. This method assumes that the tensor indices have been already calculated by the procedure RunNumericalIntegration.
[in] | SetNumber | - the set number. |
[out] | NumberIndices | - number of tensor indices |
double *const TetraNumericalIntegration::GetIntegrationPointsCoords | ( | NumericalIntegrationAttributes_S & | NIAttributes, |
ElementShape_E | EntityShape, | ||
unsigned long | IntegrandOrder, | ||
unsigned long & | NumberIntegPoints, | ||
unsigned long | LiDirection = 1 |
||
) |
Returns the coordinates of the integration points. In the case of Shape=TRIANGLE, this method collects the coordinates for the triangle element from the coordinates of the line everytime the method is executed. If Shape=TETRAHEDRON, this method collects the coordinates for the tetra element from the coordinates of the line everytime the method is executed.
[in] | EntityShape | - entity shape for which the coordinates of the integration points must be returned. For example, the element shape is SQUARE, but only the edge points are required. In this case, EntityShape must be LINE. |
[in] | IntegrandOrder | - order of the integrand. Based on this value, the number of integration points are calculated for the quadrature rule stored in the class data. |
[out] | NumberIntegPoints | - number of integration points |
[in] | LiDirection | - Baricentric direction number. |
long TetraNumericalIntegration::GetIntegrationPointsSetNumber | ( | NumericalIntegrationAttributes_S & | NIAttributes, |
unsigned long | IntegrandOrder | ||
) |
Returns the set number of the integration points for the given polynomial order.
[in] | PolyOrder | - Polynomial order |
double *const TetraNumericalIntegration::GetIntegrationPointsWeights | ( | NumericalIntegrationAttributes_S & | NIAttributes, |
ElementShape_E | EntityShape, | ||
unsigned long | IntegrandOrder, | ||
unsigned long & | NumberIntegPoints, | ||
unsigned long | LiDirection = 1 |
||
) |
Returns the weights of the integration points. This method assumes that the weights have been already calculated by the procedure RunNumericalIntegration.
[in] | EntityShape | - entity shape for which the weights of the integration points must be returned. For example, the element shape is SQUARE, but only the edge points are required. In this case, EntityShape must be LINE. |
[in] | IntegrandOrder | - order of the integrand. Based on this value, the number of integration points are calculated for the quadrature rule stored in the class data. |
[out] | NumberIntegrationPoints | - number of integration points |
[in] | LiDirection | - Baricentric direction number. |
double * TetraNumericalIntegration::GetIntegrationPointsWeightsBySets | ( | unsigned long | SetNumber, |
unsigned long & | NumberIntegPoints | ||
) |
return the integration points weights as a double*, according to the given set.
[in] | SetNumber | - Integration point set number. |
[out] | NumberIntegPoints | - Number of integration points. |
return - double* pointer with the integration points weights
LineNumericalIntegration & TetraNumericalIntegration::GetLineNumericalIntegration | ( | unsigned long | LiDirection = 1 | ) |
Returns the reference to LineNumericalIntegration. According to LiDirection parameter returns one of the LineNumericalIntegration attributes of the TetraNumericalIntegration class.
[in] | LiDirection | - Baricentric direction number. |
unsigned long TetraNumericalIntegration::GetMaxNumberIntegrationPointsSets | ( | unsigned long | LiDirection = 1 | ) |
Returns the maximum number of sets of integration points according to LineNI[1-4] class attributes.
[in] | LiDirection | - Baricentric direction number. |
unsigned long TetraNumericalIntegration::GetMaxPolyOrder | ( | ) |
Returns the maximum polynomial order.
unsigned long TetraNumericalIntegration::GetNumberIntegrationPoints | ( | NumericalIntegrationAttributes_S & | NIAttributes, |
ElementShape_E | EntityShape, | ||
unsigned long | IntegrandOrder, | ||
long & | IntegPointsSetNumber | ||
) |
Returns the number of integration points given by integrand order for the quadrature rule stored in the class. Returns also the number of the set which stores the points.
[in] | EntityShape | - entity shape for which the number of integration points must be returned. For example, the element shape is SQUARE, but only the edge points are required. In this case, EntityShape must be LINE. |
[in] | IntegrandOrder | - order of the integrand. Based on this value, the number of integration points is calculated for the quadrature rule stored in the class data. |
[out] | IntegPointsSetNumber | - number of the integration point set which stores the coordinates. |
unsigned long TetraNumericalIntegration::GetNumberIntegrationPoints | ( | ElementShape_E | EntityShape, |
long | IntegrationPointsSetNumber, | ||
unsigned long | LiDirection = 1 |
||
) |
Returns the number of integration points for a given set number to a specific baricentric direction number.
[in] | EntityShape | - entity shape for which the integration points must be returned. For example, the element shape is SQUARE, but only the edge points are required. In this case, EntityShape must be LINE. |
[in] | IntegrationPointsSetNumber | - number of the integration point set which stores the coordinates. |
[in] | LiDirection | - Baricentric direction number. |
unsigned long TetraNumericalIntegration::GetNumberIntegrationPointsSets | ( | ) |
Returns the number of sets of integration points calculated using the polynomial and integration orders.
unsigned long TetraNumericalIntegration::GetTotalNumberIntegrationPoints | ( | ) |
Returns the total number of integration points.
TetraNumericalIntegration::operator LineNumericalIntegration & | ( | ) |
Cast operator for the reference of the class attribute "LineNI".
TetraNumericalIntegration::operator TriangleNumericalIntegration & | ( | ) |
Cast operator for the reference of the class attribute "TriangleNI".
TetraNumericalIntegration & TetraNumericalIntegration::operator= | ( | TetraNumericalIntegration & | Instance | ) |
Copies the contents of instance to the object.
[in] | Instance | - instance of the TetraNumericalIntegration class |
void TetraNumericalIntegration::Print | ( | FILE * | File, |
ElementShape_E | EntityShape | ||
) |
: Prints the numerical integration attributes and values to the given ascii file.
[in] | File | - pointer to the ascii file |
[in] | EntityShape | - entity shape for which the attributes of the integration points must be printed. |
void TetraNumericalIntegration::RunNumericalIntegration | ( | NumericalIntegrationAttributes_S & | NIAttributes, |
ElementShape_E | EntityShape, | ||
BuiltInArray< unsigned long > & | PolyOrder | ||
) |
Calculates the tensorization indices and the weigths for numerical integration of the polynomial orders given in the input parameter PolyOrder and integrand orders calculated by [1,IOFactor] * P..
[in] | NIAttributes | - parameters of the quadrature rule. |
[in] | EntityShape | - entity shape for which the coordinates and weights integration points must be calculated. For example, the element shape is SQUARE, but only the edge points are required. In this case, EntityShape must be LINE. |
[in] | PolyOrder | - element orders for a p-nonuniform mesh in an increasing sequence. For a p-uniform, this array stores only one value |
void TetraNumericalIntegration::SetMaxPolyOrder | ( | unsigned long | MaxPolyOrder | ) |
Sets the maximum polynomial order.
[in] | MaxPolyOrder | - maximum polynomial order. |
void TetraNumericalIntegration::SetNumberCoordsWeights | ( | unsigned long | NumberRow, |
unsigned long | NumberData | ||
) |
Sets the coordinates and weights table for the specific TetraNumericalIntegration allocated.
[in] | NumberRow | - Number of table row. |
[in] | NumberData | - Number of table coefficients. |