Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
ibodyblock.h
Go to the documentation of this file.
1 #pragma once
2 //ibodyblock
8 #include "utility/interface/igroup.h"
9 #include "base/src/farray.h"
10 
11 namespace itasca {
12  class IThing;
13 }
14 namespace itascaxd{
15  class IGeomPoly;
16  class IGeomEdge;
17  class IGeomPoint;
18 }
19 
20 namespace body{
21 using namespace itasca;
22 using namespace itascaxd;
24  class IBodyBlock{
25 
26  public:
28  enum blockType{Hexahedron=1, Tetrahedron, Wedge, Default};
31  WrongTopologyFaceAttachment=-7,
32  WrongNumberOfNodes,
33  IntersectWithOthers,
34  HasConcaveFaces,
35  SelfIntersections,
36  NegativeOrZeroVolume,
37  BadDegeneracy,
38  AFaceHasAttachedBlocksFromOneSide,
39  Contained, // the block is contained inside another block
40  ValidBlock,
41  ValidButNotAttached,
42  DefaultState
43  };
44 
46  inline static const TType type_=0x53a34354;
48  virtual const IThing * getIThing() const=0;
50  virtual IThing * getIThing()=0;
52  virtual quint32 getSize() const=0;
54  virtual quint32 getSizeEdges() const=0;
56  virtual quint32 getSizePoints() const=0;
58  virtual IGeomPoly* getFace(quint32 index)=0;
60  virtual const IGeomPoly* getFace(quint32 index)const =0;
62  virtual const IGeomEdge * getEdge(const quint32 index) const=0;
64  virtual IGeomEdge * getEdge(quint32 index)=0;
66  virtual const IGeomPoint * getPoint(quint32 index) const=0;
68  virtual IGeomPoint * getPoint(quint32 index)=0;
70  virtual bool isValid() const=0;
72  virtual DVect getCentroid() const=0;
74  virtual double getArea() const=0;
76  virtual double getVolume(double tol=1.0e-9) const=0;
78  virtual blockValidState getValidState()const=0;
80  virtual QString getValidStateString()const=0;
82  virtual void getEdgesOrder(FArray<QPair<quint32,quint32>> &edgesOrder)const=0;
84  virtual void getFacesOrder( FArray< FArray<quint32> > &facesOrder)const=0;
88  virtual bool isIn(const DVect &v,const double &tolerance=1e-7) const=0;
90  virtual DVect getClosestPoint(const DVect &v) const=0;
92  virtual quint32 getMultiplier() const=0;
94  virtual void setMultiplier(quint32 m)=0;
96  virtual bool getGUIselect() const=0;
98  virtual void setGUIselect(bool flag) const=0;
100  virtual bool getOKdegeneracyFlag()const=0;
102  virtual void setOKdegeneracyFlag(bool OK)const=0;
105  virtual const IGeomPoly * getTheOpositeFace(const IGeomPoly *face) const=0;
106  };
107 }
namespace Itasca
Definition: basememory.cpp:9
Base class for items that will be stored in containers.
Definition: ithing.h:31
blockType
Type of block enumeration ({Hexahedron=1, Tetrahedron, Wedge, Default}). Default usually means Hexahe...
Definition: ibodyblock.h:28
An array class that attempts to minimize unnecessary heap access.
blockValidState
Type of valid state.
Definition: ibodyblock.h:30
A class representing a single closed polygon made up of a list of edges.
Definition: igeompoly.h:23
unsigned int TType
class type indicator
Definition: basedef.h:41
Interface for a user-defined geometric point.
Definition: igeompoint.h:18
Interface for a user-defined geometric edge, defined as the line between two IGeomPoint objects.
Definition: igeomedge.h:24
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4
An array class that attempts to minimize unnecessary heap access.
Definition: farray.h:27
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition: dim.h:145
Interface to provide acces to BodyBlock.
Definition: ibodyblock.h:24