Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
ifwall.h
Go to the documentation of this file.
1 #pragma once
2 
7 #include "base/src/farray.h"
8 
9 namespace itasca {
10  class IThing;
11  class IGroup;
12  class IContainer;
13 }
14 
15 namespace itascaxd {
16  class IPiece;
17  class IPieceMechanical;
18  class IBody;
19  class IContact;
20  class IHalfFacet;
21  class IHalfVertex;
22 }
23 
24 namespace pfc {
25  using namespace itasca;
26  using namespace itascaxd;
27 
45  class IFWall {
46  public:
48  inline static const TType type_ = 0x4c90658e;
50  virtual IThing * getIThing()=0;
52  virtual const IThing * getIThing() const=0;
54  virtual IBody * getIBody() = 0;
56  virtual const IBody * getIBody() const = 0;
58  virtual QString getName() const=0;
60  virtual IFWall * getNextIFWall()=0;
62  virtual const IFWall * getNextIFWall() const=0;
64  virtual IHalfFacet * getFirstIHalfFacet()=0;
66  virtual const IHalfFacet *getFirstIHalfFacet() const=0;
68  virtual DExtent3 getExtent() const=0;
70  virtual double getCutoffAng() const=0;
72  virtual void setCutoffAng(const double &d) =0;
74  virtual IContainer *getFWallAsFacetContainer() =0;
76  virtual const IContainer *getFWallAsFacetContainer() const=0;
78  virtual IContainer *getFWallAsVertexContainer() =0;
80  virtual const IContainer *getFWallAsVertexContainer() const=0;
81 
82 
84  virtual int getNumberFacets() const=0;
86  virtual void getFacetList(FArray<IHalfFacet *> *ret)=0;
88  virtual void getFacetList(FArray<const IHalfFacet *> *ret) const=0;
90  virtual const IHalfFacet * findFacetWithID(quint64 id) const=0;
92  virtual IHalfFacet * findFacetWithID(quint64 id) =0;
94  virtual const IHalfFacet * findClosestFacet(const DVect &pos,const double &radius = limits<double>::max()) const=0;
96  virtual IHalfFacet * findClosestFacet(const DVect &pos,const double &radius = limits<double>::max())=0;
98  virtual void removeIHalfFacet(IHalfFacet *fac) =0;
100  virtual IHalfFacet * addFacetFromVertices(DVect verts[dim],QString &error,quint64 id=0,bool ignoreEnd=false,bool allowStar=false)=0;
102  virtual void doValidate() = 0;
103 
105  virtual void getVertexList(FArray<IHalfVertex *> *ret)=0;
107  virtual void getVertexList(FArray<const IHalfVertex *> *ret) const=0;
109  virtual const IHalfVertex * findVertexWithID(quint64 id) const=0;
111  virtual IHalfVertex * findVertexWithID(quint64 id) =0;
113  virtual const IHalfVertex * findClosestVertex(const DVect &pos,const double &radius = limits<double>::max()) const=0;
115  virtual IHalfVertex * findClosestVertex(const DVect &pos,const double &radius = limits<double>::max())=0;
116 
118  virtual DVect getPosition() const = 0;
120  virtual DVect getCentRot() const = 0;
122  virtual DVect getVelocity() const = 0;
124  virtual DAVect getAngVelocity() const = 0;
126  virtual DVect getDisplacement() const = 0;
127 #ifdef TWOD
128  virtual double getAngDisplacement() const = 0;
130 #endif
131  virtual DVect getForce() const = 0;
133  virtual DVect getContactForce() const = 0;
135  virtual DAVect getMoment() const = 0;
136  virtual DAVect getContactMoment() const = 0;
138  virtual Quat getOrient() const=0;
140  virtual bool getIsClosed() const=0;
142  virtual bool getIsIn(const DVect &d) const=0;
144  virtual bool getIsConvex() const=0;
145 
147  virtual void setPosition(const DVect &p) = 0;
149  virtual void setCentRot(const DVect &p) = 0;
151  virtual void setVelocity(const DVect &p) = 0;
153  virtual void setAngVelocity(const DAVect &p) = 0;
155  virtual void setDisplacement(const DVect &v) = 0;
156 #ifdef TWOD
157  virtual void setAngDisplacement(const double &v) = 0;
159 #endif
160  virtual void setContactForce(const DVect &v)=0;
163  virtual void setContactMoment(const DAVect &v)=0;
165  virtual void setOrient(const Quat &q)=0;
166 #ifdef THREED
167  virtual DVect getEulerFromOrient() const=0;
170  virtual void setOrientFromEuler(const DVect3 &d)=0;
171 #endif
172  virtual bool setProperty(const QString &name,const QVariant &v)=0;
174 
177  virtual void rotate(const DVect &rotp,const DVect &axis,const double &w,bool update=true,bool noThrow = false) = 0;
178 
179 
181  virtual bool getVertsHaveVel() const = 0;
183  virtual void updateFWallPosition(IHalfVertex *v=0,DVect *prevPos=0)=0;
184 
186  virtual int getFragmentIndex() const=0;
188  virtual void setFragmentIndex(int ind)=0;
190  virtual void getContactList(FArray<IContact *> *ret,const TType &type=0,const IPiece *p2=0)=0;
192  virtual void getContactList(FArray<const IContact *> *ret,const TType &type=0,const IPiece *p2=0) const=0;
193 
195  virtual double getServoGainFactor() const =0;
197  virtual double getServoGain() const =0;
199  virtual double getServoVmax() const =0;
201  virtual DVect getServoForce() const =0;
203  virtual bool getServoActive() const =0;
205  virtual int getServoGainUpdate() const =0;
207  virtual void setServoGainFactor(const double &d) =0;
209  virtual void setServoGain(const double &d) =0;
211  virtual void setServoVmax(const double &d) =0;
213  virtual void setServoForce(const DVect &f) =0;
215  virtual void setServoActive(bool b) =0;
217  virtual void setServoGainUpdate(int i) =0;
218  };
219 } // namespace pfc
220 // EoF
221 
Interface for a faceted wall.
Definition: ifwall.h:45
namespace Itasca
Definition: basememory.cpp:9
Base class for items that will be stored in containers.
Definition: ithing.h:31
Interface for a vertex used in the faceted wall logic. This is the interface for a vertex used in the...
Definition: ihalfvertex.h:27
PFC namespace.
Definition: iballfluid.h:15
An array class that attempts to minimize unnecessary heap access.
Definition: ipiece.h:15
debug checked shorthand for std::numeric_limits<T>::
Definition: limit.h:25
unsigned int TType
class type indicator
Definition: basedef.h:41
Interface for a facet used in the faceted wall logic. This is the interface for a triangular facet as...
Definition: ihalffacet.h:37
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4
DAVect3 DAVect
Angular vector of doubles, either 2D or 3D.
Definition: dim.h:151
EXPORT_TAG const char * getName()
Definition: fishexample.cpp:43
An array class that attempts to minimize unnecessary heap access.
Definition: farray.h:27
Interface for containers of IThings.
Definition: icontainer.h:23
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition: dim.h:145
3D quaternion utility class.
Definition: quat.h:103
Definition: ibody.h:20