Class representing topology of the hexahedron and creating a mesh volume basing on analysis of hexahedron intersection with geometry. More...
#include <StdMeshers_Cartesian_3D_Hexahedron.hxx>
Data Structures | |
| struct | _Face |
| struct | _Link |
| struct | _Node |
| < node either at a hexahedron corner or at intersection More... | |
| struct | _OrientedLink |
| struct | _SplitIterator |
| set to _hexLinks splits on one side of INTERNAL FACEs More... | |
| struct | _volumeDef |
Public Member Functions | |
| Hexahedron (StdMeshers::Cartesian3D::Grid *grid) | |
| Creates topology of the hexahedron. More... | |
| int | MakeElements (SMESH_MesherHelper &helper, const TEdge2faceIDsMap &edge2faceIDsMap, const int numOfThreads=1) |
| Create elements in the mesh. More... | |
| void | computeElements (const Solid *solid=0, int solidIndex=-1) |
| Compute mesh volumes resulted from intersection of the Hexahedron. More... | |
Private Types | |
| enum | IsInternalFlag { IS_NOT_INTERNAL , IS_INTERNAL , IS_CUT_BY_INTERNAL_FACE } |
| typedef std::pair< StdMeshers::Cartesian3D::TGeomID, int > | TFaceOfLink |
| typedef boost::container::flat_map< StdMeshers::Cartesian3D::TGeomID, size_t > | TID2Nb |
Private Member Functions | |
| Hexahedron (const Hexahedron &other, size_t i, size_t j, size_t k, int cellID) | |
| Copy constructor. More... | |
| void | init (size_t i, size_t j, size_t k, const Solid *solid=0) |
| Initializes its data by given grid cell nodes and intersections. More... | |
| void | init (size_t i) |
| Initializes its data by given grid cell (countered from zero) More... | |
| void | clearNodesLinkedToNull (const Solid *solid, SMESH_MesherHelper &helper) |
| Clear nodes linked to null by not splitted links. More... | |
| bool | isSplittedLink (const Solid *solid, SMESH_MesherHelper &helper, const Hexahedron::_Link &linkIn) const |
| Returns true if the link will be split on the Hexaedron initialization. More... | |
| void | setIJK (size_t i) |
| Initializes IJK by Hexahedron index. More... | |
| void | defineHexahedralFaces (const Solid *solid, const IsInternalFlag intFlag) |
| Compute mesh volumes resulted from intersection of the Hexahedron. More... | |
| bool | compute (const Solid *solid, const IsInternalFlag intFlag) |
| Compute mesh volumes resulted from intersection of the Hexahedron. More... | |
| size_t | getSolids (StdMeshers::Cartesian3D::TGeomID ids[]) |
| Return IDs of SOLIDs interfering with this Hexahedron. More... | |
| bool | isCutByInternalFace (IsInternalFlag &maxFlag) |
| Count cuts by INTERNAL FACEs and set _Node::_isInternalFlags. More... | |
| void | addEdges (SMESH_MesherHelper &helper, std::vector< Hexahedron * > &intersectedHex, const TEdge2faceIDsMap &edge2faceIDsMap) |
| Implements geom edges into the mesh. More... | |
| gp_Pnt | findIntPoint (double u1, double proj1, double u2, double proj2, double proj, BRepAdaptor_Curve &curve, const gp_XYZ &axis, const gp_XYZ &origin) |
| Finds intersection of a curve with a plane. More... | |
| int | getEntity (const StdMeshers::Cartesian3D::E_IntersectPoint *ip, int *facets, int &sub) |
| Returns indices of a hexahedron sub-entities holding a point. More... | |
| bool | addIntersection (const StdMeshers::Cartesian3D::E_IntersectPoint *ip, std::vector< Hexahedron * > &hexes, int ijk[], int dIJK[]) |
| Adds intersection with an EDGE. More... | |
| bool | isQuadOnFace (const size_t iQuad) |
| Check if a hexahedron facet lies on a FACE Also return true if the facet does not interfere with any FACE. More... | |
| bool | findChain (_Node *n1, _Node *n2, _Face &quad, std::vector< _Node * > &chainNodes) |
| Finds nodes at a path from one node to another via intersections with EDGEs. More... | |
| bool | closePolygon (_Face *polygon, std::vector< _Node * > &chainNodes) const |
| Try to heal a polygon whose ends are not connected. More... | |
| bool | findChainOnEdge (const std::vector< _OrientedLink > &splits, const _OrientedLink &prevSplit, const _OrientedLink &avoidSplit, const std::set< StdMeshers::Cartesian3D::TGeomID > &concaveFaces, size_t &iS, _Face &quad, std::vector< _Node * > &chn) |
| Finds nodes on the same EDGE as the first node of avoidSplit. More... | |
| size_t | findCoplanarPolygon (const _Face &thePolygon, const size_t nbQuadPolygons, std::vector< _OrientedLink * > &freeLinks, int &nbFreeLinks, const E_IntersectPoint &ipTmp, std::set< StdMeshers::Cartesian3D::TGeomID > &usedFaceIDs, std::map< StdMeshers::Cartesian3D::TGeomID, std::vector< const B_IntersectPoint * > > &tmpAddedFace, const StdMeshers::Cartesian3D::TGeomID &curFace) |
| find coplanar polygon, if any, and set it to be re-created next More... | |
| int | addVolumes (SMESH_MesherHelper &helper) |
| Adds computed elements to the mesh. More... | |
| void | addFaces (SMESH_MesherHelper &helper, const std::vector< const SMDS_MeshElement * > &boundaryVolumes) |
| Create mesh faces at free facets. More... | |
| void | addSegments (SMESH_MesherHelper &helper, const TEdge2faceIDsMap &edge2faceIDsMap) |
| Create mesh segments. More... | |
| void | getVolumes (std::vector< const SMDS_MeshElement * > &volumes) |
| void | getBoundaryElems (std::vector< const SMDS_MeshElement * > &boundaryVolumes) |
| Return created volumes and volumes that can have free facet because of skipped small volume. More... | |
| void | removeExcessSideDivision (const std::vector< Hexahedron * > &allHexa) |
| Remove edges and nodes dividing a hexa side in the case if an adjacent volume also sharing the dividing edge is missing due to its small side. More... | |
| void | removeExcessNodes (std::vector< Hexahedron * > &allHexa) |
| Remove nodes splitting Cartesian cell edges in the case if a node is used in every cells only by two polygons sharing the edge Issue #19887. More... | |
| void | preventVolumesOverlapping () |
| [Issue #19913] Modify _hexLinks._splits to prevent creating overlapping volumes More... | |
| StdMeshers::Cartesian3D::TGeomID | getAnyFace () const |
| Return any FACE interfering with this Hexahedron. More... | |
| void | cutByExtendedInternal (std::vector< Hexahedron * > &hexes, const TColStd_MapOfInteger &intEdgeIDs) |
| Fully cut hexes that are partially cut by INTERNAL FACE. More... | |
| gp_Pnt | mostDistantInternalPnt (int hexIndex, const gp_Pnt &p1, const gp_Pnt &p2) |
| Return intersection point on INTERNAL FACE most distant from given ones. More... | |
| bool | isOutPoint (_Link &link, int iP, SMESH_MesherHelper &helper, const Solid *solid) const |
| Checks transition at the ginen intersection node of a link. More... | |
| void | sortVertexNodes (std::vector< _Node * > &nodes, _Node *curNode, StdMeshers::Cartesian3D::TGeomID face) |
| Sort nodes on a FACE. More... | |
| bool | isInHole () const |
| Return true if the element is in a hole. More... | |
| bool | hasStrangeEdge () const |
| Check if a polyherdon has an edge lying on EDGE shared by strange FACE that will be meshed by other algo. More... | |
| bool | checkPolyhedronSize (bool isCutByInternalFace, double &volSize) const |
| Return true if a polyhedron passes _sizeThreshold criterion. More... | |
| int | checkPolyhedronValidity (_volumeDef *volDef, std::vector< std::vector< int > > &splitQuantities, std::vector< std::vector< const SMDS_MeshNode * > > &splitNodes) |
| Check that all faces in polyhedron are connected so a unique volume is defined. More... | |
| const SMDS_MeshElement * | addPolyhedronToMesh (_volumeDef *volDef, SMESH_MesherHelper &helper, const std::vector< const SMDS_MeshNode * > &nodes, const std::vector< int > &quantities) |
| add original or separated polyhedrons to the mesh More... | |
| bool | addHexa () |
| Tries to create a hexahedron. More... | |
| bool | addTetra () |
| Tries to create a tetrahedron. More... | |
| bool | addPenta () |
| Tries to create a pentahedron. More... | |
| bool | addPyra () |
| Tries to create a pyramid. More... | |
| bool | debugDumpLink (_Link *link) |
Dump a link and return false. More... | |
| _Node * | findEqualNode (std::vector< _Node * > &nodes, const StdMeshers::Cartesian3D::E_IntersectPoint *ip, const double tol2) |
| bool | isCorner (const _Node *node) const |
| bool | hasEdgesAround (const ConcaveFace *cf) const |
| Return true if there are _eIntPoints at EDGEs forming a concave corner. More... | |
| bool | isImplementEdges () const |
| bool | isOutParam (const double uvw[3]) const |
| Classify a point by grid parameters. More... | |
Static Private Member Functions | |
| static TFaceOfLink | findStartLink (const std::vector< _OrientedLink * > &freeLinks, std::set< StdMeshers::Cartesian3D::TGeomID > &usedFaceIDs) |
| get a remaining link to start from, one lying on minimal nb of FACEs More... | |
| static void | insertAndIncrement (StdMeshers::Cartesian3D::TGeomID id, TID2Nb &id2nbMap) |
Private Attributes | |
| _Node | _hexNodes [HEX_NODES_NUM] |
| _Link | _hexLinks [HEX_LINKS_NUM] |
| _Face | _hexQuads [HEX_QUADS_NUM] |
| std::vector< _Face > | _polygons |
| std::vector< const StdMeshers::Cartesian3D::E_IntersectPoint * > | _eIntPoints |
| std::vector< _Node > | _intNodes |
| std::vector< _Node * > | _vIntNodes |
| _volumeDef | _volumeDefs |
| StdMeshers::Cartesian3D::Grid * | _grid |
| double | _sideLength [3] |
| int | _nbCornerNodes |
| int | _nbFaceIntNodes |
| int | _nbBndNodes |
| int | _origNodeInd |
| size_t | _i |
| size_t | _j |
| size_t | _k |
| bool | _hasTooSmall |
| int | _cellID |
Static Private Attributes | |
| static const std::size_t | HEX_NODES_NUM = 8 |
| static const std::size_t | HEX_LINKS_NUM = 12 |
| static const std::size_t | HEX_QUADS_NUM = 6 |
Class representing topology of the hexahedron and creating a mesh volume basing on analysis of hexahedron intersection with geometry.
|
private |
|
private |
|
private |
| Hexahedron::Hexahedron | ( | StdMeshers::Cartesian3D::Grid * | grid | ) |
Creates topology of the hexahedron.
References _grid, _hexLinks, _hexNodes, _hexQuads, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, StdMeshers::Cartesian3D::Hexahedron::_Face::_name, StdMeshers::Cartesian3D::Hexahedron::_Link::_nodes, StdMeshers::Cartesian3D::Grid::_nodeShift, _polygons, SMESH_Block::GetEdgeVertexIDs(), SMESH_Block::GetFaceEdgesIDs(), SMESH_Block::ID_E11z, SMESH_Block::ID_Ex00, SMESH_Block::ID_F0yz, SMESH_Block::ID_F1yz, SMESH_Block::ID_Fx1z, SMESH_Block::ID_Fxy0, SMESH_Block::ID_V000, SMESH_Block::ID_V001, SMESH_Block::ID_V010, SMESH_Block::ID_V011, SMESH_Block::ID_V100, SMESH_Block::ID_V101, SMESH_Block::ID_V110, SMESH_Block::ID_V111, StdMeshers::Cartesian3D::Grid::NodeIndexDX(), StdMeshers::Cartesian3D::Grid::NodeIndexDY(), StdMeshers::Cartesian3D::Grid::NodeIndexDZ(), and SMESH_Block::ShapeIndex().
Referenced by cutByExtendedInternal(), and MakeElements().
|
private |
Copy constructor.
References _cellID, _hexLinks, _hexNodes, _hexQuads, StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::_link, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, StdMeshers::Cartesian3D::Hexahedron::_Face::_name, StdMeshers::Cartesian3D::Hexahedron::_Link::_nodes, _polygons, and StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::_reverse.
|
private |
Implements geom edges into the mesh.
References StdMeshers::Cartesian3D::Grid::_axes, StdMeshers::Cartesian3D::Grid::_coords, StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, _grid, StdMeshers::Cartesian3D::Grid::_minCellSize, StdMeshers::Cartesian3D::Grid::_origin, StdMeshers::Cartesian3D::E_IntersectPoint::_point, StdMeshers::Cartesian3D::E_IntersectPoint::_shapeID, StdMeshers::Cartesian3D::Grid::_tol, StdMeshers::Cartesian3D::E_IntersectPoint::_uvw, StdMeshers::Cartesian3D::GridPlanes::_zNorm, StdMeshers::Cartesian3D::GridPlanes::_zProjs, StdMeshers::Cartesian3D::Grid::Add(), addIntersection(), StdMeshers::Cartesian3D::Grid::ComputeUVW(), cutByExtendedInternal(), deflection(), Edge, findIntPoint(), StdMeshers::Cartesian3D::Grid::IsInternal(), SMESH_MesherHelper::IthVertex(), locateValue(), StdMeshers::Cartesian3D::Grid::PseudoIntExtFaceID(), StdMeshers::Cartesian3D::Grid::Remove(), StdMeshers::Cartesian3D::Grid::Shape(), StdMeshers::Cartesian3D::Grid::ShapeID(), and StdMeshers::Cartesian3D::Grid::UpdateFacesOfVertex().
Referenced by MakeElements().
|
private |
Create mesh faces at free facets.
References StdMeshers::Cartesian3D::Grid::_geometry, _grid, StdMeshers::Cartesian3D::Geometry::_mainShape, StdMeshers::Cartesian3D::Geometry::_soleSolid, StdMeshers::Cartesian3D::Grid::_toCreateFaces, StdMeshers::Cartesian3D::Grid::_toUseQuanta, StdMeshers::Cartesian3D::Grid::_toUseThresholdForInternalFaces, SMDS_VolumeTool::Element(), findCommonFace(), SMDS_Mesh::FindElement(), SMESHDS_SubMesh::GetElements(), SMDS_VolumeTool::GetFaceNodes(), SMESH_MesherHelper::GetMesh(), SMESH_MesherHelper::GetMeshDS(), StdMeshers::Cartesian3D::Grid::GetOneOfSolids(), SMDS_MeshElement::GetShapeID(), StdMeshers::Cartesian3D::Solid::HasInternalFaces(), StdMeshers::Cartesian3D::Grid::IsBoundaryFace(), SMDS_VolumeTool::IsFreeFace(), SMDS_VolumeTool::IsFreeFaceCheckAllNodes(), StdMeshers::Cartesian3D::Grid::IsInternal(), SMDS_MeshElement::isMarked(), StdMeshers::Cartesian3D::Geometry::IsOneSolid(), StdMeshers::Cartesian3D::Solid::IsOutsideOriented(), SMDS_VolumeTool::IsPoly(), StdMeshers::Cartesian3D::Grid::IsShared(), StdMeshers::Cartesian3D::Grid::IsSolid(), SMESHDS_Mesh::MeshElements(), SMESH_MeshEditor::ElemFeatures::myNodes, SMDS_VolumeTool::NbFaceNodes(), SMDS_VolumeTool::NbFaces(), SMESH::SMESH_MeshEditor::Reorient(), SMESH::SMESH_MeshEditor::Reorient2D(), reverse(), SMDS_VolumeTool::Set(), SMDS_VolumeTool::SetExternalNormal(), SMESHDS_Mesh::SetMeshElementOnShape(), SMESH_MeshEditor::ElemFeatures::SetPoly(), StdMeshers::Cartesian3D::Grid::Shape(), SMDSAbs_Face, splitPolygon(), and SMESHDS_Mesh::UnSetMeshElementOnShape().
Referenced by MakeElements().
|
private |
Tries to create a hexahedron.
References StdMeshers::Cartesian3D::Hexahedron::_Link::_faces, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, _polygons, _volumeDefs, debugDumpLink(), and StdMeshers::Cartesian3D::Hexahedron::_volumeDef::Set().
Referenced by compute().
|
private |
Adds intersection with an EDGE.
References _eIntPoints, _grid, StdMeshers::Cartesian3D::E_IntersectPoint::_uvw, StdMeshers::Cartesian3D::Grid::CellIndex(), and isOutParam().
Referenced by addEdges().
|
private |
Tries to create a pentahedron.
References StdMeshers::Cartesian3D::Hexahedron::_Link::_faces, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, _polygons, _volumeDefs, debugDumpLink(), and StdMeshers::Cartesian3D::Hexahedron::_volumeDef::Set().
Referenced by compute().
|
private |
add original or separated polyhedrons to the mesh
References _cellID, _i, _j, _k, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_size, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_solidID, SMESH_MesherHelper::AddPolyhedralVolume(), SMESH_MesherHelper::GetMesh(), SMESH_MesherHelper::GetMeshDS(), SMDS_VolumeTool::GetSize(), SMESHDS_Mesh::RemoveFreeElement(), and SMESH::SMESH_MeshEditor::Reorient().
Referenced by addVolumes().
|
private |
Tries to create a pyramid.
References StdMeshers::Cartesian3D::Hexahedron::_Link::_faces, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, _polygons, _volumeDefs, debugDumpLink(), and StdMeshers::Cartesian3D::Hexahedron::_volumeDef::Set().
Referenced by compute().
|
private |
Create mesh segments.
References _grid, SMESHDS_Mesh::AddEdge(), Edge, Face, SMDS_Mesh::FindEdge(), SMDS_Mesh::GetElementsByNodes(), SMESH_MesherHelper::GetMesh(), SMESH_MesherHelper::GetMeshDS(), StdMeshers_FaceSide::GetOrderedNodes(), SMESHDS_Mesh::SetMeshElementOnShape(), and StdMeshers::Cartesian3D::Grid::Shape().
Referenced by MakeElements().
|
private |
Tries to create a tetrahedron.
References StdMeshers::Cartesian3D::Hexahedron::_Link::_faces, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, _polygons, _volumeDefs, debugDumpLink(), and StdMeshers::Cartesian3D::Hexahedron::_volumeDef::Set().
Referenced by compute().
|
private |
Adds computed elements to the mesh.
References _grid, _hexNodes, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_next, StdMeshers::Cartesian3D::Grid::_quanta, _sideLength, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_size, StdMeshers::Cartesian3D::Grid::_toUseQuanta, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_volume, _volumeDefs, SMESH_MesherHelper::AddNode(), addPolyhedronToMesh(), SMESH_MesherHelper::AddVolume(), checkPolyhedronValidity(), SMESH_MesherHelper::GetMeshDS(), StdMeshers::Cartesian3D::Grid::IsToCheckNodePos(), SMESHDS_Mesh::RemoveFreeElement(), SMESHDS_Mesh::SetMeshElementOnShape(), SMESHDS_Mesh::SetNodeOnEdge(), SMESHDS_Mesh::SetNodeOnVertex(), StdMeshers::Cartesian3D::Grid::SetOnShape(), StdMeshers::Cartesian3D::Grid::ShapeType(), and SMESHDS_Mesh::UnSetNodeOnShape().
Return true if a polyhedron passes _sizeThreshold criterion.
References StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, _grid, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, _polygons, _sideLength, StdMeshers::Cartesian3D::Grid::_sizeThreshold, StdMeshers::Cartesian3D::Grid::_toUseThresholdForInternalFaces, hasStrangeEdge(), StdMeshers::Cartesian3D::Grid::IsAnyShared(), and StdMeshers::Cartesian3D::Hexahedron::_Node::IsCutByInternal().
Referenced by compute().
|
private |
Check that all faces in polyhedron are connected so a unique volume is defined.
We test that it is possible to go from any node to all nodes in the polyhedron. The set of nodes that can be visit within then defines a unique element. In case more than one polyhedron is detected. The function return the set of quantities and nodes defining separates elements. Reference to issue #bos[38521][EDF] Generate polyhedron with separate volume.
References StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_nodes, and StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_quantities.
Referenced by addVolumes().
|
private |
Clear nodes linked to null by not splitted links.
Exclude from computation all nodes those linked to null without any splits in links. This prevents building non-planar faces in cases when the source geometry surface coincident with an intermediate grid plane.
References _hexLinks, StdMeshers::Cartesian3D::Hexahedron::_Node::_node, StdMeshers::Cartesian3D::Hexahedron::_Link::_nodes, StdMeshers::Cartesian3D::Hexahedron::_Link::clear(), HEX_LINKS_NUM, and isSplittedLink().
|
private |
Try to heal a polygon whose ends are not connected.
References StdMeshers::Cartesian3D::Hexahedron::_Face::_links, and StdMeshers::Cartesian3D::Hexahedron::_Node::IsLinked().
Referenced by defineHexahedralFaces().
|
private |
Compute mesh volumes resulted from intersection of the Hexahedron.
References StdMeshers::Cartesian3D::Grid::_axes, StdMeshers::Cartesian3D::Grid::_coords, _eIntPoints, StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, _grid, _hasTooSmall, _hexNodes, _i, _intNodes, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, _j, _k, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, StdMeshers::Cartesian3D::Hexahedron::_Face::_name, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_names, _nbFaceIntNodes, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_nodes, _polygons, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_quantities, _sideLength, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_size, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_solidID, StdMeshers::Cartesian3D::Grid::_toAddEdges, StdMeshers::Cartesian3D::Grid::_tol, _vIntNodes, _volumeDefs, addHexa(), addPenta(), StdMeshers::Cartesian3D::Hexahedron::_Face::AddPolyLink(), addPyra(), addTetra(), checkPolyhedronSize(), StdMeshers::Cartesian3D::Grid::ComputeUVW(), defineHexahedralFaces(), findCoplanarPolygon(), findEqualNode(), findStartLink(), StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::FirstNode(), StdMeshers::Cartesian3D::Solid::ID(), SMESH_Block::ID_F0yz, SMESH_Block::ID_F1yz, SMESH_Block::ID_Fx0z, SMESH_Block::ID_Fx1z, SMESH_Block::ID_Fxy0, SMESH_Block::ID_Fxy1, SMESH_Block::ID_NONE, IS_CUT_BY_INTERNAL_FACE, StdMeshers::Cartesian3D::Grid::IsToRemoveExcessEntities(), StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::LastNode(), StdMeshers::Cartesian3D::Hexahedron::_Node::Node(), preventVolumesOverlapping(), StdMeshers::Cartesian3D::Grid::PseudoIntExtFaceID(), reverse(), and sortVertexNodes().
Referenced by computeElements().
| void Hexahedron::computeElements | ( | const Solid * | solid = 0, |
| int | solidIndex = -1 |
||
| ) |
Compute mesh volumes resulted from intersection of the Hexahedron.
References _eIntPoints, StdMeshers::Cartesian3D::Grid::_geometry, _grid, _hexLinks, _i, _j, _k, _nbBndNodes, _nbCornerNodes, _nbFaceIntNodes, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_nodes, _volumeDefs, compute(), computeElements(), StdMeshers::Cartesian3D::Grid::GetSolid(), getSolids(), StdMeshers::Cartesian3D::Solid::HasInternalFaces(), init(), IS_CUT_BY_INTERNAL_FACE, IS_NOT_INTERNAL, isInHole(), StdMeshers::Cartesian3D::Geometry::IsOneSolid(), StdMeshers::Cartesian3D::Hexahedron::_SplitIterator::More(), and StdMeshers::Cartesian3D::Hexahedron::_volumeDef::SetNext().
Referenced by computeElements().
|
private |
Fully cut hexes that are partially cut by INTERNAL FACE.
Cut them by extended INTERNAL FACE.
References StdMeshers::Cartesian3D::Grid::_coords, _eIntPoints, StdMeshers::Cartesian3D::Grid::_extIntPool, StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntPoints, _grid, StdMeshers::Cartesian3D::Grid::_gridIntP, StdMeshers::Cartesian3D::Grid::_helper, _hexLinks, _hexNodes, _i, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, _j, _k, _nbFaceIntNodes, StdMeshers::Cartesian3D::B_IntersectPoint::_node, StdMeshers::Cartesian3D::Hexahedron::_Link::_nodes, StdMeshers::Cartesian3D::Grid::_nodeShift, _origNodeInd, StdMeshers::Cartesian3D::Grid::_tol, StdMeshers::Cartesian3D::F_IntersectPoint::_transition, SMESHDS_Mesh::AddNode(), StdMeshers::Cartesian3D::CellsAroundLink::GetCell(), SMESH_MesherHelper::GetMeshDS(), StdMeshers::Cartesian3D::Grid::GetSolid(), Hexahedron(), StdMeshers::Cartesian3D::Solid::ID(), StdMeshers::Cartesian3D::CellsAroundLink::Init(), StdMeshers::Cartesian3D::Hexahedron::_Node::IsOnFace(), mostDistantInternalPnt(), StdMeshers::Cartesian3D::Hexahedron::_Node::Node(), StdMeshers::Cartesian3D::Hexahedron::_Node::Point(), StdMeshers::Cartesian3D::Grid::PseudoIntExtFaceID(), SMESHDS_Mesh::SetNodeInVolume(), and StdMeshers::Cartesian3D::Trans_INTERNAL.
Referenced by addEdges().
|
private |
Dump a link and return false.
References _i, _j, _k, StdMeshers::Cartesian3D::Hexahedron::_Link::_nodes, and StdMeshers::Cartesian3D::Hexahedron::_Node::Point().
Referenced by addHexa(), addPenta(), addPyra(), and addTetra().
|
private |
Compute mesh volumes resulted from intersection of the Hexahedron.
References StdMeshers::Cartesian3D::Hexahedron::_Face::_eIntNodes, _eIntPoints, StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, _hexNodes, _hexQuads, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, StdMeshers::Cartesian3D::Hexahedron::_Node::_isInternalFlags, StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::_link, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, StdMeshers::Cartesian3D::Hexahedron::_Face::_name, _polygons, StdMeshers::Cartesian3D::Hexahedron::_Face::_polyLinks, StdMeshers::Cartesian3D::Hexahedron::_Face::AddPolyLink(), closePolygon(), findChain(), findChainOnEdge(), StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::FirstNode(), StdMeshers::Cartesian3D::Solid::GetConcave(), StdMeshers::Cartesian3D::Solid::HasConcaveVertex(), hasEdgesAround(), IS_CUT_BY_INTERNAL_FACE, isImplementEdges(), StdMeshers::Cartesian3D::Hexahedron::_Node::IsLinked(), and isQuadOnFace().
Referenced by compute().
|
private |
Finds nodes at a path from one node to another via intersections with EDGEs.
References StdMeshers::Cartesian3D::Hexahedron::_Face::_eIntNodes, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, and StdMeshers::Cartesian3D::Hexahedron::_Node::IsLinked().
Referenced by defineHexahedralFaces().
|
private |
Finds nodes on the same EDGE as the first node of avoidSplit.
This function is for 1) a case where an EDGE lies on a quad which lies on a FACE so that a part of quad in ON and another part is IN 2) INTERNAL FACE passes through the 1st node of avoidSplit
References StdMeshers::Cartesian3D::Hexahedron::_Face::_eIntNodes, StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::_link, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::FirstNode(), StdMeshers::Cartesian3D::Hexahedron::_Node::GetCommonFaces(), isCorner(), StdMeshers::Cartesian3D::Hexahedron::_Node::IsLinked(), StdMeshers::Cartesian3D::Hexahedron::_Node::IsOnFace(), and StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::LastNode().
Referenced by defineHexahedralFaces().
|
private |
find coplanar polygon, if any, and set it to be re-created next
References StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, _polygons, StdMeshers::Cartesian3D::Hexahedron::_Face::_polyLinks, StdMeshers::Cartesian3D::B_IntersectPoint::Add(), and StdMeshers::Cartesian3D::Hexahedron::_Face::IsPolyLink().
Referenced by compute().
|
private |
|
private |
Finds intersection of a curve with a plane.
| [in] | u1 | - parameter of one curve point |
| [in] | proj1 | - projection of the curve point to the plane normal |
| [in] | u2 | - parameter of another curve point |
| [in] | proj2 | - projection of the other curve point to the plane normal |
| [in] | proj | - projection of a point where the curve intersects the plane |
| [in] | curve | - the curve |
| [in] | axis | - the plane normal |
| [in] | origin | - the plane origin |
References _grid, StdMeshers::Cartesian3D::Grid::_tol, and findIntPoint().
Referenced by addEdges(), and findIntPoint().
|
staticprivate |
get a remaining link to start from, one lying on minimal nb of FACEs
References StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::FirstNode(), StdMeshers::Cartesian3D::Hexahedron::_Node::IsLinked(), and StdMeshers::Cartesian3D::Hexahedron::_OrientedLink::LastNode().
Referenced by compute().
|
private |
Return any FACE interfering with this Hexahedron.
References StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, _hexNodes, _intNodes, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, and insertAndIncrement().
Referenced by getBoundaryElems().
|
private |
Return created volumes and volumes that can have free facet because of skipped small volume.
Also create mesh faces on free facets of adjacent not-cut volumes if the result volume is too small.
References _grid, _hasTooSmall, StdMeshers::Cartesian3D::Grid::_helper, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_next, _polygons, _volumeDefs, getAnyFace(), SMDS_Mesh::GetElementsByNodes(), SMESH_MesherHelper::GetMesh(), SMESH_MesherHelper::GetMeshDS(), StdMeshers::Cartesian3D::Grid::GetOneOfSolids(), StdMeshers::Cartesian3D::Grid::IsInternal(), StdMeshers::Cartesian3D::Solid::IsOutsideOriented(), StdMeshers::Cartesian3D::Grid::IsShared(), StdMeshers::Cartesian3D::Grid::IsSolid(), StdMeshers::Cartesian3D::Grid::IsToCheckNodePos(), SMESH_MeshEditor::ElemFeatures::myNodes, reverse(), SMESHDS_Mesh::SetMeshElementOnShape(), SMDSAbs_Face, and SMDSAbs_Volume.
|
private |
Returns indices of a hexahedron sub-entities holding a point.
| [in] | ip | - intersection point |
| [out] | facets | - 0-3 facets holding a point |
| [out] | sub | - index of a vertex or an edge holding a point |
References StdMeshers::Cartesian3D::Grid::_coords, _grid, _i, _j, _k, StdMeshers::Cartesian3D::Grid::_tol, StdMeshers::Cartesian3D::E_IntersectPoint::_uvw, SMESH_Block::ID_E00z, SMESH_Block::ID_E01z, SMESH_Block::ID_E0y0, SMESH_Block::ID_E0y1, SMESH_Block::ID_E10z, SMESH_Block::ID_E11z, SMESH_Block::ID_E1y0, SMESH_Block::ID_E1y1, SMESH_Block::ID_Ex00, SMESH_Block::ID_Ex01, SMESH_Block::ID_Ex10, SMESH_Block::ID_Ex11, SMESH_Block::ID_F0yz, SMESH_Block::ID_F1yz, SMESH_Block::ID_FirstV, SMESH_Block::ID_Fx0z, SMESH_Block::ID_Fx1z, SMESH_Block::ID_Fxy0, and SMESH_Block::ID_Fxy1.
Referenced by init().
|
private |
Return IDs of SOLIDs interfering with this Hexahedron.
References _eIntPoints, StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntPoints, StdMeshers::Cartesian3D::Grid::_geometry, _grid, StdMeshers::Cartesian3D::Grid::_gridIntP, _hexLinks, _hexNodes, _i, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, _j, _k, StdMeshers::Cartesian3D::Hexahedron::_Node::_node, StdMeshers::Cartesian3D::Grid::_nodes, StdMeshers::Cartesian3D::Grid::_nodeShift, _origNodeInd, StdMeshers::Cartesian3D::Grid::GetSolid(), StdMeshers::Cartesian3D::Grid::GetSolidIDs(), StdMeshers::Cartesian3D::Solid::ID(), insertAndIncrement(), StdMeshers::Cartesian3D::Geometry::IsOneSolid(), and StdMeshers::Cartesian3D::Grid::NodeIndex().
Referenced by computeElements(), and MakeElements().
|
private |
|
private |
Return true if there are _eIntPoints at EDGEs forming a concave corner.
References _eIntPoints, StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, _hexNodes, StdMeshers::Cartesian3D::B_IntersectPoint::_node, SMDS_MeshElement::GetShapeID(), StdMeshers::Cartesian3D::ConcaveFace::HasEdge(), StdMeshers::Cartesian3D::ConcaveFace::HasVertex(), StdMeshers::Cartesian3D::ConcaveFace::SetEdge(), and StdMeshers::Cartesian3D::ConcaveFace::SetVertex().
Referenced by defineHexahedralFaces().
|
private |
Check if a polyherdon has an edge lying on EDGE shared by strange FACE that will be meshed by other algo.
References _eIntPoints, _grid, StdMeshers::Cartesian3D::Grid::_helper, SMESH_MesherHelper::GetAncestors(), SMESH_MesherHelper::GetMesh(), StdMeshers::Cartesian3D::Grid::IsStrangeEdge(), and StdMeshers::Cartesian3D::Grid::Shape().
Referenced by checkPolyhedronSize().
|
private |
|
private |
Initializes its data by given grid cell nodes and intersections.
References StdMeshers::Cartesian3D::Grid::_allBorderNodes, StdMeshers::Cartesian3D::Hexahedron::_Node::_boundaryCornerNode, StdMeshers::Cartesian3D::Grid::_coords, StdMeshers::Cartesian3D::Hexahedron::_Face::_eIntNodes, _eIntPoints, StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntNodes, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntPoints, StdMeshers::Cartesian3D::Grid::_geometry, _grid, StdMeshers::Cartesian3D::Grid::_gridIntP, StdMeshers::Cartesian3D::Grid::_helper, _hexLinks, _hexNodes, _hexQuads, _i, _intNodes, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, StdMeshers::Cartesian3D::Hexahedron::_Node::_isInternalFlags, _j, _k, _nbBndNodes, _nbCornerNodes, _nbFaceIntNodes, StdMeshers::Cartesian3D::Hexahedron::_Node::_node, StdMeshers::Cartesian3D::Grid::_nodes, StdMeshers::Cartesian3D::Hexahedron::_Link::_nodes, StdMeshers::Cartesian3D::Grid::_nodeShift, _origNodeInd, _sideLength, StdMeshers::Cartesian3D::Hexahedron::_Link::_splits, StdMeshers::Cartesian3D::Grid::_tol, _vIntNodes, StdMeshers::Cartesian3D::B_IntersectPoint::Add(), StdMeshers::Cartesian3D::Hexahedron::_Node::Add(), StdMeshers::Cartesian3D::Solid::Contains(), StdMeshers::Cartesian3D::Solid::ContainsAny(), findEqualNode(), getEntity(), SMESH_MesherHelper::GetMesh(), SMDS_MeshElement::GetShapeID(), StdMeshers::Cartesian3D::Grid::GetSolid(), SMESH_Block::ID_FirstE, SMESH_Block::ID_FirstF, SMESH_Block::ID_FirstV, StdMeshers::Cartesian3D::Grid::IsCorrectTransition(), StdMeshers::Cartesian3D::Grid::IsInternal(), StdMeshers::Cartesian3D::Geometry::IsOneSolid(), isOutPoint(), StdMeshers::Cartesian3D::Hexahedron::_Node::Node(), StdMeshers::Cartesian3D::Grid::NodeIndex(), StdMeshers::Cartesian3D::Grid::ShapeType(), StdMeshers::Cartesian3D::Trans_IN, and StdMeshers::Cartesian3D::Trans_OUT.
Referenced by computeElements(), init(), and MakeElements().
|
staticprivate |
Referenced by getAnyFace(), getSolids(), and isCutByInternalFace().
Referenced by findChainOnEdge().
|
private |
Count cuts by INTERNAL FACEs and set _Node::_isInternalFlags.
References StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, _grid, _hexNodes, _intNodes, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, insertAndIncrement(), IS_CUT_BY_INTERNAL_FACE, IS_INTERNAL, IS_NOT_INTERNAL, and StdMeshers::Cartesian3D::Grid::IsInternal().
|
private |
References StdMeshers::Cartesian3D::Grid::_edgeIntPool.
Referenced by defineHexahedralFaces().
|
private |
Return true if the element is in a hole.
References StdMeshers::Cartesian3D::Grid::_coords, StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntPoints, _grid, _hexLinks, _i, StdMeshers::Cartesian3D::GridLine::_intPoints, _j, _k, StdMeshers::Cartesian3D::Grid::_lines, StdMeshers::Cartesian3D::Hexahedron::_Link::_nodes, StdMeshers::Cartesian3D::F_IntersectPoint::_paramOnLine, StdMeshers::Cartesian3D::Grid::_tol, StdMeshers::Cartesian3D::F_IntersectPoint::_transition, _vIntNodes, StdMeshers::Cartesian3D::Grid::GetLineIndexer(), StdMeshers::Cartesian3D::Grid::IsShared(), StdMeshers::Cartesian3D::LineIndexer::LineIndex(), StdMeshers::Cartesian3D::LineIndexer::LineIndex01(), StdMeshers::Cartesian3D::LineIndexer::LineIndex10(), StdMeshers::Cartesian3D::LineIndexer::LineIndex11(), StdMeshers::Cartesian3D::Hexahedron::_Node::Node(), StdMeshers::Cartesian3D::LineIndexer::SetIJK(), and StdMeshers::Cartesian3D::Trans_OUT.
Referenced by computeElements(), and MakeElements().
|
private |
Classify a point by grid parameters.
References StdMeshers::Cartesian3D::Grid::_coords, _grid, _i, _j, _k, and StdMeshers::Cartesian3D::Grid::_tol.
Referenced by addIntersection(), and sortVertexNodes().
|
private |
Checks transition at the ginen intersection node of a link.
References StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntNodes, _grid, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, StdMeshers::Cartesian3D::Hexahedron::_Link::_nodes, StdMeshers::Cartesian3D::Grid::_tol, Face, SMESH_MesherHelper::GetProjector(), SMESH::if(), StdMeshers::Cartesian3D::Grid::IsInternal(), StdMeshers::Cartesian3D::Hexahedron::_Node::IsOnFace(), StdMeshers::Cartesian3D::Hexahedron::_Node::Node(), StdMeshers::Cartesian3D::Solid::Orientation(), StdMeshers::Cartesian3D::Hexahedron::_Node::Point(), and StdMeshers::Cartesian3D::Grid::Shape().
Referenced by init(), and isSplittedLink().
|
private |
Check if a hexahedron facet lies on a FACE Also return true if the facet does not interfere with any FACE.
References _hexQuads, and StdMeshers::Cartesian3D::Hexahedron::_Face::_links.
Referenced by defineHexahedralFaces().
|
private |
Returns true if the link will be split on the Hexaedron initialization.
References _eIntPoints, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntNodes, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntPoints, _grid, StdMeshers::Cartesian3D::Hexahedron::_Link::_nodes, StdMeshers::Cartesian3D::Hexahedron::_Link::_splits, StdMeshers::Cartesian3D::Solid::ContainsAny(), StdMeshers::Cartesian3D::Grid::IsCorrectTransition(), StdMeshers::Cartesian3D::Grid::IsInternal(), isOutPoint(), StdMeshers::Cartesian3D::Hexahedron::_Node::Node(), StdMeshers::Cartesian3D::Trans_IN, and StdMeshers::Cartesian3D::Trans_OUT.
Referenced by clearNodesLinkedToNull().
| int Hexahedron::MakeElements | ( | SMESH_MesherHelper & | helper, |
| const TEdge2faceIDsMap & | edge2faceIDsMap, | ||
| const int | numOfThreads = 1 |
||
| ) |
Create elements in the mesh.
References _eIntPoints, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntPoints, StdMeshers::Cartesian3D::Grid::_geometry, _grid, _hexLinks, _hexNodes, _i, StdMeshers::Cartesian3D::GridLine::_intPoints, _j, _k, StdMeshers::Cartesian3D::Grid::_lines, _nbBndNodes, StdMeshers::Cartesian3D::CellsAroundLink::_nbCells, _nbCornerNodes, _nbFaceIntNodes, StdMeshers::Cartesian3D::Geometry::_shape2NbNodes, StdMeshers::Cartesian3D::Grid::_toCreateFaces, StdMeshers::Cartesian3D::Grid::_tol, addEdges(), addFaces(), addSegments(), SMESHDS_Mesh::AddVolume(), SMESH::SMESH_MeshEditor::FindCoincidentNodes(), StdMeshers::Cartesian3D::CellsAroundLink::GetCell(), StdMeshers::Cartesian3D::Grid::GetLineIndexer(), SMESH_MesherHelper::GetMesh(), SMESH_MesherHelper::GetMeshDS(), SMDS_MeshElement::GetShapeID(), getSolids(), Hexahedron(), StdMeshers::Cartesian3D::LineIndexer::I(), StdMeshers::Cartesian3D::CellsAroundLink::Init(), init(), isInHole(), StdMeshers::Cartesian3D::Grid::IsToRemoveExcessEntities(), StdMeshers::Cartesian3D::LineIndexer::J(), StdMeshers::Cartesian3D::LineIndexer::K(), StdMeshers::Cartesian3D::LineIndexer::LineIndex(), SMESH::SMESH_MeshEditor::MergeNodes(), SMESHDS_Mesh::MeshElements(), StdMeshers::Cartesian3D::LineIndexer::More(), Node, StdMeshers::Cartesian3D::Hexahedron::_Node::Node(), StdMeshers::Cartesian3D::parallel_for(), StdMeshers::Cartesian3D::LineIndexer::SetIndexOnLine(), SMDS_MeshElement::setIsMarked(), and SMESHDS_Mesh::SetMeshElementOnShape().
Referenced by StdMeshers_Cartesian_3D::Compute(), testNRTJ4(), testNRTM1(), and testShape().
|
private |
Return intersection point on INTERNAL FACE most distant from given ones.
References StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntPoints, _grid, StdMeshers::Cartesian3D::Grid::_gridIntP, _hexLinks, _hexNodes, _i, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, _j, _k, StdMeshers::Cartesian3D::Hexahedron::_Node::_node, StdMeshers::Cartesian3D::Grid::_nodes, StdMeshers::Cartesian3D::Grid::_nodeShift, _origNodeInd, StdMeshers::Cartesian3D::Grid::_tol, MESHCUT::d, StdMeshers::Cartesian3D::Grid::IsInternal(), StdMeshers::Cartesian3D::Grid::NodeIndex(), StdMeshers::Cartesian3D::Grid::PseudoIntExtFaceID(), and setIJK().
Referenced by cutByExtendedInternal().
|
private |
[Issue #19913] Modify _hexLinks._splits to prevent creating overlapping volumes
References StdMeshers::Cartesian3D::B_IntersectPoint::_faceIDs, _grid, StdMeshers::Cartesian3D::Grid::_helper, _hexQuads, StdMeshers::Cartesian3D::Hexahedron::_Node::_intPoint, StdMeshers::Cartesian3D::Hexahedron::_Face::_links, StdMeshers::Cartesian3D::Grid::GetSolidIDs(), and SMESH_MesherHelper::WrapIndex().
Referenced by compute().
|
private |
Remove nodes splitting Cartesian cell edges in the case if a node is used in every cells only by two polygons sharing the edge Issue #19887.
References StdMeshers::Cartesian3D::Hexahedron::_Link::_fIntPoints, _grid, _hexLinks, _i, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_nodeDef::_intPoint, _j, _k, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_names, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_nodes, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_quantities, StdMeshers::Cartesian3D::Grid::_tol, _volumeDefs, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::at(), StdMeshers::Cartesian3D::Grid::ComputeUVW(), StdMeshers::Cartesian3D::CellsAroundLink::GetCell(), SMESH_Block::ID_Fxy0, SMESH_Block::ID_Fxy1, StdMeshers::Cartesian3D::CellsAroundLink::Init(), StdMeshers::Cartesian3D::Hexahedron::_volumeDef::IsPolyhedron(), and StdMeshers::Cartesian3D::Hexahedron::_volumeDef::size().
|
private |
Remove edges and nodes dividing a hexa side in the case if an adjacent volume also sharing the dividing edge is missing due to its small side.
Issue #19887.
References _grid, _hexQuads, _i, _j, _k, StdMeshers::Cartesian3D::Hexahedron::_Face::_name, StdMeshers::Cartesian3D::Hexahedron::_volumeDef::_next, _volumeDefs, StdMeshers::Cartesian3D::Grid::CellIndex(), and StdMeshers::Cartesian3D::Hexahedron::_volumeDef::IsPolyhedron().
|
private |
Initializes IJK by Hexahedron index.
References StdMeshers::Cartesian3D::Grid::_coords, _grid, _i, _j, and _k.
Referenced by init(), and mostDistantInternalPnt().
|
private |
Sort nodes on a FACE.
References _grid, StdMeshers::Cartesian3D::Grid::ComputeUVW(), Face, SMESH_Block::GetOrderedEdges(), Handle(), isOutParam(), SMESH_MesherHelper::IthVertex(), StdMeshers::Cartesian3D::Hexahedron::_Node::Point(), reverse(), StdMeshers::Cartesian3D::Grid::Shape(), and StdMeshers::Cartesian3D::Grid::ShapeID().
Referenced by compute().
|
private |
Referenced by addPolyhedronToMesh(), and Hexahedron().
|
private |
|
private |
Referenced by addEdges(), addFaces(), addIntersection(), addSegments(), addVolumes(), checkPolyhedronSize(), compute(), computeElements(), cutByExtendedInternal(), findIntPoint(), getBoundaryElems(), getEntity(), getSolids(), hasStrangeEdge(), Hexahedron(), init(), isCutByInternalFace(), isInHole(), isOutParam(), isOutPoint(), isSplittedLink(), MakeElements(), mostDistantInternalPnt(), preventVolumesOverlapping(), removeExcessNodes(), removeExcessSideDivision(), setIJK(), and sortVertexNodes().
|
private |
Referenced by compute(), and getBoundaryElems().
|
private |
|
private |
|
private |
Referenced by defineHexahedralFaces(), Hexahedron(), init(), isQuadOnFace(), preventVolumesOverlapping(), and removeExcessSideDivision().
|
private |
|
private |
Referenced by compute(), getAnyFace(), init(), and isCutByInternalFace().
|
private |
|
private |
|
private |
Referenced by computeElements(), init(), and MakeElements().
|
private |
Referenced by computeElements(), init(), and MakeElements().
|
private |
Referenced by compute(), computeElements(), cutByExtendedInternal(), init(), and MakeElements().
|
private |
Referenced by cutByExtendedInternal(), getSolids(), init(), and mostDistantInternalPnt().
|
private |
Referenced by addHexa(), addPenta(), addPyra(), addTetra(), checkPolyhedronSize(), compute(), defineHexahedralFaces(), findCoplanarPolygon(), getBoundaryElems(), and Hexahedron().
|
private |
Referenced by addVolumes(), checkPolyhedronSize(), compute(), and init().
|
private |
Referenced by compute(), init(), and isInHole().
|
private |
Referenced by addHexa(), addPenta(), addPyra(), addTetra(), addVolumes(), compute(), computeElements(), getBoundaryElems(), removeExcessNodes(), and removeExcessSideDivision().
|
staticprivate |
Referenced by clearNodesLinkedToNull().
|
staticprivate |
|
staticprivate |