Itasca C++ Interface
iball.h
Go to the documentation of this file.
1 #pragma once
8 #include "base/src/matrix.h"
9 
10 namespace itasca {
11  class IThing;
12  class IGroup;
13 }
14 
15 namespace itascaxd {
16  class IPiece;
17  class IPieceMechanical;
18  class IBody;
19  class IBodyMechanical;
20  class IRigidBodyMechanical;
21 }
22 
23 namespace pfc {
24  using namespace itasca;
25  using namespace itascaxd;
26 
35  class IBall {
36  public:
38  inline static const TType type_ = 0x51c13f16;
39 
41  virtual IThing * getIThing()=0;
43  virtual const IThing * getIThing() const=0;
45  virtual IPiece * getIPiece()=0;
47  virtual const IPiece * getIPiece() const=0;
51  virtual const IPieceMechanical * getIPieceMechanical() const=0;
53  virtual IBody * getIBody()=0;
55  virtual const IBody * getIBody() const=0;
59  virtual const IBodyMechanical * getIBodyMechanical() const=0;
63  virtual const IRigidBodyMechanical * getIRigidBodyMechanical() const=0;
65  virtual DExtent getCellExtent() const=0;
67  virtual DExtent getToleranceExtent() const=0;
69  virtual DMatrix<DIM,DIM> getStress() const=0;
71  virtual double getInertialMoi() const=0;
73  virtual double getMoi() const=0;
75  virtual double getRadius() const=0;
77  virtual int getFragmentIndex() const=0;
79  virtual void setFragmentIndex(int ind)=0;
81  virtual bool getIsIn(const DVect &) const = 0;
82 
86  virtual void setRadius(const double &d,bool lock=false)=0;
87  virtual void setRadiusNoLock(const double &d)=0;
88 
91  virtual bool getFix(uint32 dof) const=0;
93  virtual QString getFixLabel() const=0;
95  virtual QVariant getPieceProperty(const QString &name,const IPiece *p=0) const=0;
97  virtual double getDensity() const=0;
99  virtual double getInertialMass() const=0;
101  virtual double getMass() const=0;
103  virtual DVect getContactForce() const=0;
105  virtual DAVect getContactMoment() const=0;
107  virtual DVect getAppliedForce() const=0;
109  virtual DAVect getAppliedMoment() const=0;
111  virtual DVect getUnbalancedForce() const=0;
113  virtual DAVect getUnbalancedMoment() const=0;
115  virtual double getLocalDamping() const=0;
117  virtual void setFix(uint32 dof,bool b)=0;
119  virtual bool setPieceProperty(const QString &name,const QVariant &v,IPiece *p=0) =0;
121  virtual void setDensity(const double &d)=0;
123  virtual void setContactForce(const DVect &v)=0;
125  virtual void setContactMoment(const DAVect &v)=0;
127  virtual void setAppliedForce(const DVect &v)=0;
129  virtual void setAppliedMoment(const DAVect &v)=0;
131  virtual void setLocalDamping(const double &d)=0;
133  virtual void scaleVolumePreserveMass(const double &d,bool checkState=true,bool lock=false)=0;
134 
135 
137 #ifdef TWOD
138  virtual double getAngDisplacement() const=0;
139 #endif
140  virtual DVect getCentroid() const=0;
141  virtual DVect getVelocity() const=0;
142  virtual DAVect getAngVelocity() const=0;
143  virtual DVect getDisplacement() const=0;
144  virtual double getVolume() const=0;
145  virtual Quat getOrient() const=0;
146 
147 #ifdef TWOD
148  virtual void setAngDisplacement(const double &v)=0;
149 #endif
150  virtual void setCentroid(const DVect &p)=0;
151  virtual void setVelocity(const DVect &p)=0;
152  virtual void setAngVelocity(const DAVect &p)=0;
153  virtual void setDisplacement(const DVect &v)=0;
154  virtual void setOrient(const Quat &q)=0;
155 #ifdef THREED
156  virtual DVect getEulerFromOrient() const=0;
157  virtual void setOrientFromEuler(const DVect3 &d)=0;
158 #endif
159 
160  };
161 } // namespace pfc
162 // EoF
163 
DMatrix is a Matrix that defaults to type double...
Definition: matrix.h:741
3D quaternion utility class.
Definition: quat.h:109
Base class for items that will be stored in containers.
Definition: ithing.h:30
Definition: ibody.h:20
Definition: ibodymechanical.h:13
Definition: ipiece.h:15
Definition: ipiecemechanical.h:11
Definition: irigidbodymechanical.h:7
Interface for a ball.
Definition: iball.h:35
virtual void setFragmentIndex(int ind)=0
Set the ball fragment index.
virtual IBodyMechanical * getIBodyMechanical()=0
Return an IBodyMechanical interface for this object.
virtual bool setPieceProperty(const QString &name, const QVariant &v, IPiece *p=0)=0
Set the property name.
virtual double getInertialMoi() const =0
Return the ball scaled moment of inertia.
virtual DVect getAppliedForce() const =0
Return the applied force.
virtual void scaleVolumePreserveMass(const double &d, bool checkState=true, bool lock=false)=0
Scale the volume to the specified value while preserving the mass.
virtual const IThing * getIThing() const =0
Return a const IThing interface for this object.
virtual DVect getCentroid() const =0
IRigidBodyMechanical interface.
virtual void setLocalDamping(const double &d)=0
Set the local damping coefficient.
virtual IThing * getIThing()=0
Return an IThing interface for this object.
virtual double getMass() const =0
Return the mass.
virtual bool getFix(uint32 dof) const =0
virtual const IBody * getIBody() const =0
Return a const IBody interface for this object.
virtual const IPieceMechanical * getIPieceMechanical() const =0
Return a const IPieceMechanical interface for this object.
virtual void setAppliedForce(const DVect &v)=0
Set the applied force.
virtual QString getFixLabel() const =0
Return a fixity label.
virtual IPieceMechanical * getIPieceMechanical()=0
Return an IPieceMechanical interface for this object.
virtual double getInertialMass() const =0
Return the inertial mass.
virtual void setContactMoment(const DAVect &v)=0
Set the contact moment.
virtual double getLocalDamping() const =0
Return the local damping coefficient.
virtual void setRadius(const double &d, bool lock=false)=0
virtual int getFragmentIndex() const =0
Return the ball fragment index.
virtual double getDensity() const =0
Return the density.
virtual const IPiece * getIPiece() const =0
Return a const IPiece interface for this object.
virtual DAVect getContactMoment() const =0
Return the resultant of all contact moments.
virtual const IBodyMechanical * getIBodyMechanical() const =0
Return a const IBodyMechanical interface for this object.
virtual QVariant getPieceProperty(const QString &name, const IPiece *p=0) const =0
Return the property of the piece.
virtual const IRigidBodyMechanical * getIRigidBodyMechanical() const =0
Return a const IRigidBodyMechanical interface for this object.
virtual DVect getUnbalancedForce() const =0
Return the unbalanced force.
virtual DExtent getCellExtent() const =0
Return the ball's cell extent.
virtual IBody * getIBody()=0
Return an IBody interface for this object.
virtual IRigidBodyMechanical * getIRigidBodyMechanical()=0
Return an IRigidBodyMechanical interface for this object.
virtual DAVect getAppliedMoment() const =0
Return the applied moment.
virtual void setFix(uint32 dof, bool b)=0
Set the fixity condition.
virtual double getRadius() const =0
Return the ball radius.
virtual DAVect getUnbalancedMoment() const =0
Return the unbalanced moment.
virtual double getMoi() const =0
Return the ball real moment of inertia.
virtual DExtent getToleranceExtent() const =0
Return the ball's tolerance extent.
virtual void setContactForce(const DVect &v)=0
Set the contact force.
virtual IPiece * getIPiece()=0
Return an IPiece interface for this object.
virtual DMatrix< DIM, DIM > getStress() const =0
Return the current stress computed for this ball.
virtual void setDensity(const double &d)=0
Set the density.
virtual void setAppliedMoment(const DAVect &v)=0
Set the applied moment.
virtual bool getIsIn(const DVect &) const =0
Returns a boolean indicating whether a point in space is inside or outside of the ball.
virtual DVect getContactForce() const =0
Return the resultant of all contact forces.
uint32 TType
class type indicator
Definition: basedef.h:46
DExtent3 DExtent
A DExtent2 in 2D, a DExtent3 in 3D.
Definition: dim.h:156
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition: dim.h:150
DAVect3 DAVect
Angular vector of doubles, either 2D or 3D.
Definition: dim.h:158
A template-based matrix class, size fixed at compile time.
namespace Itasca
Definition: basememory.cpp:10
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4
PFC namespace.
Definition: iballfluid.h:15