Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
iball.h
Go to the documentation of this file.
1 #pragma once
2 
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;
49  virtual IPieceMechanical * getIPieceMechanical()=0;
51  virtual const IPieceMechanical * getIPieceMechanical() const=0;
53  virtual IBody * getIBody()=0;
55  virtual const IBody * getIBody() const=0;
57  virtual IBodyMechanical * getIBodyMechanical()=0;
59  virtual const IBodyMechanical * getIBodyMechanical() const=0;
61  virtual IRigidBodyMechanical * getIRigidBodyMechanical()=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(quint32 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(quint32 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 
namespace Itasca
Definition: basememory.cpp:9
DMatrix is a Matrix that defaults to type double...
Definition: matrix.h:719
Base class for items that will be stored in containers.
Definition: ithing.h:31
PFC namespace.
Definition: iballfluid.h:15
Definition: ipiece.h:15
Definition: irigidbodymechanical.h:7
Definition: ipiecemechanical.h:11
unsigned int TType
class type indicator
Definition: basedef.h:41
DExtent3 DExtent
A DExtent2 in 2D, a DExtent3 in 3D.
Definition: dim.h:149
Definition: ibodymechanical.h:13
A template-based matrix class, size fixed at compile time.
Interface for a ball.
Definition: iball.h:35
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
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