27#ifndef _SMDS_Mesh_HeaderFile
28#define _SMDS_Mesh_HeaderFile
46#include <smIdType.hxx>
71 size_t nbElemsToReturn=-1,
74 size_t nbElemsToReturn=-1,
81 virtual SMDS_MeshNode* AddNodeWithID(
double x,
double y,
double z, smIdType ID);
88 virtual SMDS_BallElement* AddBallWithID(smIdType n,
double diameter, smIdType ID);
92 virtual SMDS_MeshEdge* AddEdgeWithID(smIdType n1, smIdType n2, smIdType ID);
100 virtual SMDS_MeshEdge* AddEdgeWithID(smIdType n1, smIdType n2, smIdType n12, smIdType ID);
109 virtual SMDS_MeshFace* AddFaceWithID(smIdType n1, smIdType n2, smIdType n3, smIdType ID);
118 virtual SMDS_MeshFace* AddFaceWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType ID);
131 virtual SMDS_MeshFace* AddFaceWithID(smIdType n1, smIdType n2, smIdType n3,
132 smIdType n12,smIdType n23,smIdType n31, smIdType ID);
148 virtual SMDS_MeshFace* AddFaceWithID(smIdType n1, smIdType n2, smIdType n3,
149 smIdType n12,smIdType n23,smIdType n31, smIdType nCenter, smIdType ID);
167 virtual SMDS_MeshFace* AddFaceWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
168 smIdType n12,smIdType n23,smIdType n34,smIdType n41, smIdType ID);
187 virtual SMDS_MeshFace* AddFaceWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
188 smIdType n12,smIdType n23,smIdType n34,smIdType n41, smIdType nCenter, smIdType ID);
209 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType ID);
220 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
221 smIdType n5, smIdType ID);
234 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
235 smIdType n5, smIdType n6, smIdType ID);
250 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
251 smIdType n5, smIdType n6, smIdType n7, smIdType n8, smIdType ID);
272 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType n5, smIdType n6,
273 smIdType n7, smIdType n8, smIdType n9, smIdType n10, smIdType n11, smIdType n12,
302 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
303 smIdType n12,smIdType n23,smIdType n31,
304 smIdType n14,smIdType n24,smIdType n34, smIdType ID);
328 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4, smIdType n5,
329 smIdType n12,smIdType n23,smIdType n34,smIdType n41,
330 smIdType n15,smIdType n25,smIdType n35,smIdType n45,
361 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3,
362 smIdType n4, smIdType n5, smIdType n6,
363 smIdType n12,smIdType n23,smIdType n31,
364 smIdType n45,smIdType n56,smIdType n64,
365 smIdType n14,smIdType n25,smIdType n36,
400 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3,
401 smIdType n4, smIdType n5, smIdType n6,
402 smIdType n12,smIdType n23,smIdType n31,
403 smIdType n45,smIdType n56,smIdType n64,
404 smIdType n14,smIdType n25,smIdType n36,
405 smIdType n1245, smIdType n2356, smIdType n1346,
447 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
448 smIdType n5, smIdType n6, smIdType n7, smIdType n8,
449 smIdType n12,smIdType n23,smIdType n34,smIdType n41,
450 smIdType n56,smIdType n67,smIdType n78,smIdType n85,
451 smIdType n15,smIdType n26,smIdType n37,smIdType n48,
496 virtual SMDS_MeshVolume* AddVolumeWithID(smIdType n1, smIdType n2, smIdType n3, smIdType n4,
497 smIdType n5, smIdType n6, smIdType n7, smIdType n8,
498 smIdType n12,smIdType n23,smIdType n34,smIdType n41,
499 smIdType n56,smIdType n67,smIdType n78,smIdType n85,
500 smIdType n15,smIdType n26,smIdType n37,smIdType n48,
501 smIdType n1234,smIdType n1256,smIdType n2367,smIdType n3478,
502 smIdType n1458,smIdType n5678,smIdType nCenter,
560 virtual SMDS_MeshFace* AddPolygonalFaceWithID (
const std::vector<smIdType> & nodes_ids,
563 virtual SMDS_MeshFace* AddPolygonalFaceWithID (
const std::vector<const SMDS_MeshNode*> & nodes,
566 virtual SMDS_MeshFace* AddPolygonalFace (
const std::vector<const SMDS_MeshNode*> & nodes);
568 virtual SMDS_MeshFace* AddQuadPolygonalFaceWithID(
const std::vector<smIdType> & nodes_ids,
571 virtual SMDS_MeshFace* AddQuadPolygonalFaceWithID(
const std::vector<const SMDS_MeshNode*> & nodes,
574 virtual SMDS_MeshFace* AddQuadPolygonalFace(
const std::vector<const SMDS_MeshNode*> & nodes);
577 (
const std::vector<smIdType> & nodes_ids,
578 const std::vector<int> & quantities,
582 (
const std::vector<const SMDS_MeshNode*> & nodes,
583 const std::vector<int> & quantities,
587 (
const std::vector<const SMDS_MeshNode*> & nodes,
588 const std::vector<int> & quantities);
590 virtual SMDS_MeshVolume* AddVolumeFromVtkIds(
const std::vector<vtkIdType>& vtkNodeIds);
592 virtual SMDS_MeshFace* AddFaceFromVtkIds(
const std::vector<vtkIdType>& vtkNodeIds);
594 virtual void MoveNode(
const SMDS_MeshNode *n,
double x,
double y,
double z);
597 std::vector<const SMDS_MeshElement *>& removedElems,
598 std::vector<const SMDS_MeshElement *>& removedNodes,
599 const bool removenodes =
false);
600 virtual void RemoveElement(
const SMDS_MeshElement * elem,
bool removenodes =
false);
609 virtual void Clear();
611 virtual bool RemoveFromParent();
612 virtual bool RemoveSubMesh(
const SMDS_Mesh * aMesh);
618 const std::vector<const SMDS_MeshNode*>& nodes,
619 const std::vector<int>& quantities);
621 void SetAllNodesNotMarked();
622 void SetAllCellsNotMarked();
627 virtual void CompactMesh();
628 virtual bool IsCompacted();
629 virtual bool HasNumerationHoles();
631 template<
class ELEMTYPE>
634 return (( e && !e->
IsNull() && ELEMTYPE::Type() == e->
GetType() ) ?
635 static_cast<const ELEMTYPE*
>(e) : 0 );
671 static const SMDS_MeshFace* FindFace (
const std::vector<const SMDS_MeshNode *>& nodes);
672 static const SMDS_MeshElement* FindElement(
const std::vector<const SMDS_MeshNode *>& nodes,
674 const bool noMedium=
true);
675 static int GetElementsByNodes(
const std::vector<const SMDS_MeshNode *>& nodes,
676 std::vector<const SMDS_MeshElement *>& foundElems,
686 static int CheckMemory(
const bool doNotRaise=
false);
688 virtual smIdType MaxNodeID()
const;
689 virtual smIdType MinNodeID()
const;
690 virtual smIdType MaxElementID()
const;
691 virtual smIdType MinElementID()
const;
695 virtual smIdType NbNodes()
const;
696 virtual smIdType NbElements()
const;
697 virtual smIdType Nb0DElements()
const;
698 virtual smIdType NbBalls()
const;
699 virtual smIdType NbEdges()
const;
700 virtual smIdType NbFaces()
const;
701 virtual smIdType NbVolumes()
const;
702 virtual smIdType NbSubMesh()
const;
707 smIdType FromVtkToSmds(vtkIdType vtkid)
const;
709 void dumpGrid(std::string ficdump=
"dumpGrid");
721 void addChildrenWithNodes(std::set<const SMDS_MeshElement*>& setOfChildren,
723 std::set<const SMDS_MeshElement*>& nodes);
727 if (x > xmax) xmax = x;
728 else if (x < xmin) xmin = x;
729 if (y > ymax) ymax = y;
730 else if (y < ymin) ymin = y;
731 if (z > zmax) zmax = z;
732 else if (z < zmin) zmin = z;
738 std::set<const SMDS_MeshNode*>& oldNodes );
740 void setNbShapes(
size_t nbShapes );
SMDSAbs_GeometryType
enumeration for element geometry type
Definition: SMDSAbs_ElementType.hxx:47
SMDSAbs_ElementType
Type (node, edge, face or volume) of elements.
Definition: SMDSAbs_ElementType.hxx:34
@ SMDSAbs_All
Definition: SMDSAbs_ElementType.hxx:35
SMDSAbs_EntityType
Enumeration of entity type used in mesh info array.
Definition: SMDSAbs_ElementType.hxx:79
boost::shared_ptr< SMDS_Iterator< const SMDS_MeshElement * > > SMDS_ElemIteratorPtr
Definition: SMDS_ElemIterator.hxx:43
boost::shared_ptr< SMDS_Iterator< const SMDS_MeshVolume * > > SMDS_VolumeIteratorPtr
Definition: SMDS_ElemIterator.hxx:58
boost::shared_ptr< SMDS_Iterator< const SMDS_MeshEdge * > > SMDS_EdgeIteratorPtr
Definition: SMDS_ElemIterator.hxx:52
boost::shared_ptr< SMDS_Iterator< const SMDS_MeshNode * > > SMDS_NodeIteratorPtr
Definition: SMDS_ElemIterator.hxx:46
boost::shared_ptr< SMDS_Iterator< const SMDS_MeshFace * > > SMDS_FaceIteratorPtr
Definition: SMDS_ElemIterator.hxx:55
unsigned long int vtkMTimeType
Definition: SMDS_UnstructuredGrid.hxx:53
#define SMDS_EXPORT
Definition: SMESH_SMDS.hxx:37
Ball element.
Definition: SMDS_BallElement.hxx:36
Allocate SMDS_MeshElement's (SMDS_MeshCell's or SMDS_MeshNode's ) and bind some attributes to element...
Definition: SMDS_ElementFactory.hxx:65
Base class of object holding SMDS_MeshElement pointers.
Definition: SMDS_ElementHolder.hxx:48
0D mesh element.
Definition: SMDS_Mesh0DElement.hxx:36
Edge mesh element.
Definition: SMDS_MeshEdge.hxx:36
Base class for elements.
Definition: SMDS_MeshElement.hxx:56
bool IsNull() const
Definition: SMDS_MeshElement.hxx:141
virtual SMDSAbs_ElementType GetType() const =0
Mesh face.
Definition: SMDS_MeshFace.hxx:41
Definition: SMDS_MeshInfo.hxx:36
Definition: SMDS_MeshNode.hxx:36
Definition: SMDS_MeshObject.hxx:33
Mesh volume.
Definition: SMDS_MeshVolume.hxx:40
Definition: SMDS_Mesh.hxx:53
double zmax
Definition: SMDS_Mesh.hxx:768
SMDS_NodeFactory * myNodeFactory
Small objects like SMDS_MeshNode are allocated by chunks to limit memory costs of new.
Definition: SMDS_Mesh.hxx:748
const SMDS_MeshInfo & GetMeshInfo() const
Definition: SMDS_Mesh.hxx:693
double xmax
Definition: SMDS_Mesh.hxx:764
double ymax
Definition: SMDS_Mesh.hxx:766
unsigned long myCompactTime
Definition: SMDS_Mesh.hxx:758
SMDS_UnstructuredGrid * GetGrid()
actual nodes coordinates, cells definition and reverse connectivity are stored in a vtkUnstructuredGr...
Definition: SMDS_Mesh.hxx:59
SMDS_Mesh * myParent
Definition: SMDS_Mesh.hxx:751
SMDS_ElementFactory * myCellFactory
Definition: SMDS_Mesh.hxx:749
static const ELEMTYPE * DownCast(const SMDS_MeshElement *e)
Definition: SMDS_Mesh.hxx:632
SMDS_UnstructuredGrid * myGrid
actual nodes coordinates, cells definition and reverse connectivity are stored in a vtkUnstructuredGr...
Definition: SMDS_Mesh.hxx:745
std::list< SMDS_Mesh * > myChildren
Definition: SMDS_Mesh.hxx:752
void setMyModified()
low level modification: add, change or remove node or element
Definition: SMDS_Mesh.hxx:713
double xmin
Definition: SMDS_Mesh.hxx:763
static int chunkSize
Definition: SMDS_Mesh.hxx:710
double ymin
Definition: SMDS_Mesh.hxx:765
bool myModified
any add, remove or change of node or cell
Definition: SMDS_Mesh.hxx:756
void adjustBoundingBox(double x, double y, double z)
Definition: SMDS_Mesh.hxx:725
double zmin
Definition: SMDS_Mesh.hxx:767
SMDS_MeshInfo myInfo
Definition: SMDS_Mesh.hxx:753
std::set< SMDS_ElementHolder * > myElemHolders
Definition: SMDS_Mesh.hxx:761
Allocate SMDS_MeshNode's.
Definition: SMDS_ElementFactory.hxx:147
This class extends vtkUnstructuredGrid to deal with downward connectivity.
Definition: SMDS_UnstructuredGrid.hxx:108
const SMDS_MeshNode * FindNode(const SMDS_Mesh *theMesh, TInt theId)
Definition: DriverMED_R_SMESHDS_Mesh.cxx:70
long AddNode(SMESH::SMESH_Mesh_ptr theMesh, float x, float y, float z, const QStringList &theParameters)
Definition: SMESHGUI_NodesDlg.cxx:96