Utility class for quadratic quadrangle cells with 8 nodes.
More...
#include <MeshVizXLM/extractors/MxQuadrangle8CellExtract.h>
Static Public Member Functions | |
| static MbVec3d | getIsoParametricCoord (const MiGeometryI &meshGeometry, const MiSurfaceCell *quadrangleCell, const MbVec3d &point) |
| static MbVec3d | getIsoParametricCoord (size_t nodeIndex) |
| static void | getWeight (const MiGeometryI &meshGeometry, const MiSurfaceCell *quadrangleCell, const MbVec3d &point, std::vector< double > &weights) |
| static void | getWeight (const MbVec3d &ipcoord, std::vector< double > &weights) |
| static void | getDerivs (const MbVec3d &ipcoord, std::vector< double > &derivs) |
| static bool | isPointInsideCell (const MiGeometryI &meshGeometry, const MiSurfaceCell *quadrangleCell, const MbVec3d &point, std::vector< double > &weights) |
| static size_t | getSubTriangleNodesIndex (std::vector< size_t > &triangleNodeIds) |
Friends | |
| std::ostream & | operator<< (std::ostream &s, const MxQuadrangle8CellExtract &cell) |
Utility class for quadratic quadrangle cells with 8 nodes.
Utility class that provides a static implementation of the MiSurfaceCell interface methods for a quadratic quadrangle cell of 8 nodes. This class is provided to make it easier to create a class that implements the MiSurfaceCell interface for a quadratic quadrangle of 8 nodes.
The following image shows the node numbering used by this class. The weights (see getWeight()), and parametric coordinates (see getIsoParametricCoord()) are defined according to this node numbering.
Nodes numbering
| static void MxQuadrangle8CellExtract::getDerivs | ( | const MbVec3d & | ipcoord, | |
| std::vector< double > & | derivs | |||
| ) | [static] |
Gets the value of the derivatives of the shape functions (aka weights) at the point given by its iso parametric coordinates.
| [in] | ipcoord | The iso parametric coordinates of the input point. The reference space for the iso parametric coordinates is assumed to be [0-1]. Thus any point inside the cell has iso parametric coordinates in the interval [0-1]. |
| [out] | derivs | This method computes the 24 values derivs[0-23]. It assumes the derivs vector array has been already allocated. Its size must be set to 24 (at least) before calling this method, using for instance the derivs::resize(24) |
| static MbVec3d MxQuadrangle8CellExtract::getIsoParametricCoord | ( | size_t | nodeIndex | ) | [inline, static] |
Returns the iso parametric coordinates of one of the 8 nodes of a quadrangle cell.
This static method helps to implement the method MiCell::getIsoParametricCoord().
| [in] | nodeIndex | Must be defined in the range [0-7] |
| static MbVec3d MxQuadrangle8CellExtract::getIsoParametricCoord | ( | const MiGeometryI & | meshGeometry, | |
| const MiSurfaceCell * | quadrangleCell, | |||
| const MbVec3d & | point | |||
| ) | [static] |
Computes the iso parametric coordinates of the given point in the given cell with the given geometry.
As computing the iso parametric coordinates of a point needs the coordinates of the cell's nodes, the given quadrangleCell is assumed to contain 8 nodes.
meshGeometry.getCoord(quadrangleCell->getNodeIndex(i))
| [in] | meshGeometry | The geometry of the mesh. |
| [in] | quadrangleCell | The input cell. |
| [in] | point | The input point given in the same space coordinate as meshGeometry. |
| static size_t MxQuadrangle8CellExtract::getSubTriangleNodesIndex | ( | std::vector< size_t > & | triangleNodeIds | ) | [inline, static] |
Gets a triangulation of a quadratic quadrangle of 8 nodes.
This static method helps to implement the method MiSurfaceCell::getSubTriangleNodesIndex() for a quadratic quadrangle of 8 nodes.
| [out] | triangleNodeIds | Sub triangle node ids (where: 0 <= triangleNodeIds[i] < 8 for each i). |
| static void MxQuadrangle8CellExtract::getWeight | ( | const MbVec3d & | ipcoord, | |
| std::vector< double > & | weights | |||
| ) | [static] |
Gets the weights of a point defined by its iso parametric coordinates.
This static method helps to implement the method MiCell::getWeight(ipcoord,weights) for a quadrangle cell.
| [in] | ipcoord | The iso parametric coordinates of the input point. The reference space for the iso parametric coordinates is assumed to be [0-1]. Thus any point inside the cell has iso parametric coordinates in the interval [0-1]. |
| [out] | weights | This method computes the 8 values weights[0-7]. It assumes the weights vector array has been already allocated. Its size must be set to 8 (at least) before calling this method, using for instance the weights::resize(8) |
| static void MxQuadrangle8CellExtract::getWeight | ( | const MiGeometryI & | meshGeometry, | |
| const MiSurfaceCell * | quadrangleCell, | |||
| const MbVec3d & | point, | |||
| std::vector< double > & | weights | |||
| ) | [inline, static] |
Gets the weights in the given cell of the given point.
This static method helps to implement the method MiCell::getWeight(meshGeometry,point,weights) for a quadrangle cell. As computing the weights of a point needs the coordinates of the cell's nodes, the given quadrangleCell is assumed to contain 8 nodes.
meshGeometry.getCoord(quadrangleCell->getNodeIndex(i))
| [in] | meshGeometry | The geometry of the mesh. |
| [in] | quadrangleCell | The input cell. |
| [in] | point | The input point given in the same space coordinate as meshGeometry. |
| [out] | weights | This method computes the 8 values weights[0-7]. It assumes the weights vector array has been already allocated. Its size must be set to 8 (at least) before calling this method, using for instance the weights.resize(8) |
| static bool MxQuadrangle8CellExtract::isPointInsideCell | ( | const MiGeometryI & | meshGeometry, | |
| const MiSurfaceCell * | quadrangleCell, | |||
| const MbVec3d & | point, | |||
| std::vector< double > & | weights | |||
| ) | [inline, static] |
Checks if a point is inside or outside a quadrangle cell.
This static method helps to implement the method MiCell::isPointInsideCell(meshGeometry,point,weights) for a quadrangle cell.
| [in] | meshGeometry | The geometry of the mesh. |
| [in] | quadrangleCell | The input cell. |
| [in] | point | The input point given in the same space coordinate as meshGeometry. |
| [out] | weights | This method computes the 8 values weights[0-7] if the point is inside the cell. It assumes the weights vector array has been already allocated. Its size must be set to 8 (at least) before calling this method, using for instance the weights::resize(8) |
| std::ostream& operator<< | ( | std::ostream & | s, | |
| const MxQuadrangle8CellExtract & | cell | |||
| ) | [friend] |