Itasca C++ Interface
Loading...
Searching...
No Matches
irblock.h
1#pragma once
2#include "base/src/farray.h"
3#include "baseqt/src/baseqt.h"
4
5namespace itasca {
6 class IThing;
7 class IGroup;
8 class IContainer;
9}
10
11namespace itascaxd {
12 class IPiece;
13 class IPieceMechanical;
14 class IBodyMechanical;
15 class IRigidBodyMechanical;
16 class IBody;
17 class IContact;
18 class IHalfFacet;
19 class IHalfVertex;
20}
21
22namespace rblock {
23 using namespace itasca;
24 using namespace itascaxd;
25
26 class IRBlock {
27 public:
29 inline static const TType type_ = 0x5595cd9e;
31 virtual IThing * getIThing()=0;
33 virtual const IThing * getIThing() const=0;
35 virtual IRBlock * getNextIRBlock()=0;
37 virtual const IRBlock * getNextIRBlock() const=0;
39 virtual DExtent3 getExtent() const=0;
40 // Return the cell extent
41 virtual const DExtent &getCellExtent() const=0;
42
43
45 virtual void getGeometry(FArray<DVect> *vert,FArray<int> *fac=0) const=0;
47 virtual DVect getBallOffset() const=0;
49 virtual double getBallRadius() const=0;
51 virtual double getAspectRatio() const=0;
53 virtual void getFacetGeometry(FArray<DVect> *vert) const=0;
55 virtual DVect getVertexOfFacet(int fac,int ver) const=0;
57 virtual double getFacetArea(int fac) const = 0;
59 virtual DVect getVertex(int ver) const=0;
61 virtual DVect getClosestPointOnFacet(const DVect &,int fac) const =0;
64 virtual int getFacetClosestToPoint(const DVect &) const =0;
66 virtual DVect getFacetNormal(int fac) const=0;
68 virtual DVect getFacetPosition(int fac) const=0;
70 virtual bool getIsIn(const DVect &) const = 0;
71
72
74 virtual int getNumberFacets() const=0;
76 virtual int getNumberVertices() const=0;
78 virtual const IPiece * getIPiece() const = 0;
79 virtual IPiece * getIPiece() = 0;
81 virtual const IBody * getIBody() const = 0;
82 virtual IBody * getIBody() = 0;
84 virtual const IBodyMechanical * getIBodyMechanical() const = 0;
85 virtual IBodyMechanical * getIBodyMechanical() = 0;
87 virtual const IRigidBodyMechanical * getIRigidBodyMechanical() const = 0;
90 virtual DAVect getMoi() const=0;
92 virtual DAVect getInertialMoi() const=0;
95 virtual double getMoiComp(int) const = 0;
98 virtual double getInertialMoiComp(int) const = 0;
99
100#ifdef THREED
102 virtual SymTensor getInertialMoiTensor() const = 0;
103 virtual SymTensor getMoiTensor() const = 0;
104#endif
106 virtual void setMoiComp(const double &,int) = 0;
107
109 virtual void setMoi(const DAVect &d)=0;
110
112 virtual void setMoiFix(bool b)=0;
113 virtual bool isMoiFix()=0;
114 virtual bool isMoiFix() const=0;
115
117 virtual void setVolumeNoScale(const double &d)=0;
118
120 virtual void getContactList(FArray<IContact *> *ret,const TType &type=0,const IPiece *p2=0)=0;
122 virtual void getContactList(FArray<const IContact *> *ret,const TType &type=0,const IPiece *p2=0) const=0;
124 virtual uint64 getContactCount(bool active,const TType &type=0,bool domainToo = false) const=0;
125
127 virtual DMatrix<DIM,DIM> getStress() const=0;
128
131 virtual bool rotate(const DVect &rotp,const DVect &axis,const double &w,bool update=true,bool noThrow = false) = 0;
133 virtual bool scale(const double &)=0;
135 virtual void getSurfaceRotMatrix(DMatrix<dim,dim> *) const=0;
136
138 virtual bool getFix(quint32 dof) const=0;
140 virtual void setFix(quint32 dof,bool b)=0;
142 virtual double getVolume() const=0;
144 virtual double getLocalDamping() const=0;
146 virtual void setLocalDamping(const double &d)=0;
148 virtual double getDensity() const=0;
150 virtual void setDensity(const double &d)=0;
152 virtual double getInertialMass() const=0;
154 virtual double getMass() const=0;
156 virtual int getFragmentIndex() const=0;
158 virtual void setFragmentIndex(int ind)=0;
160 virtual DVect getCentroid() const=0;
162 virtual void setCentroid(const DVect &p)=0;
164 virtual DVect getDisplacement() const=0;
166 virtual void setDisplacement(const DVect &v)=0;
167#ifdef TWOD
169 virtual double getAngDisplacement() const=0;
171 virtual void setAngDisplacement(const double &v)=0;
172#endif
174 virtual DVect getVelocity() const=0;
176 virtual void setVelocity(const DVect &p)=0;
178 virtual DAVect getAngVelocity() const=0;
180 virtual void setAngVelocity(const DAVect &p)=0;
182 virtual DVect getAppliedForce() const=0;
184 virtual void setAppliedForce(const DVect &v)=0;
186 virtual DAVect getAppliedMoment() const=0;
188 virtual void setAppliedMoment(const DAVect &v)=0;
190 virtual DVect getContactForce() const=0;
192 virtual void setContactForce(const DVect &v)=0;
194 virtual DVect getUnbalancedForce() const=0;
196 virtual DAVect getUnbalancedMoment() const=0;
198 virtual DAVect getContactMoment() const=0;
200 virtual void setContactMoment(const DAVect &v)=0;
201
203 virtual DVect getPosition() const = 0;
205 virtual double getRounding() const = 0;
206#ifdef THREED
207 virtual DVect getEulerFromOrient() const=0;
208 virtual void setOrientFromEuler(const DVect3 &d)=0;
209#endif
210
212 virtual QString getFaceGroupName(uint32 side,const ISlotID &slot=ISlotID()) const=0;
213
214 virtual bool getBit(int bit) const=0;
215 virtual void setBit(int bit,bool b) const=0;
216
217 };
218} // namespace rblock
219// EoF
220
An array class that attempts to minimize unnecessary heap access.
Definition farray.h:25
A template-based matrix class, size fixed at compile time. Defaults to symmetric sized matrix.
Definition matrix.h:22
A symmetric 2nd order tensor.
Definition symtensor.h:22
Definition igroup.h:41
Base class for items that will be stored in containers.
Definition ithing.h:31
Definition ibody.h:22
Definition ibodymechanical.h:13
Definition ipiece.h:16
Definition irigidbodymechanical.h:7
Definition irblock.h:26
virtual bool scale(const double &)=0
Scale the rblock to have this area or volume.
virtual void getFacetGeometry(FArray< DVect > *vert) const =0
Get the vertices listed out in facet format.
virtual DVect getBallOffset() const =0
Returns the ball position containing the block.
virtual double getFacetArea(int fac) const =0
Get the area of a facet.
virtual int getNumberVertices() const =0
Return the number of vertices.
virtual void getContactList(FArray< IContact * > *ret, const TType &type=0, const IPiece *p2=0)=0
Return a list of IContacts.
virtual double getMoiComp(int) const =0
virtual DAVect getContactMoment() const =0
Return the resultant of all contact moments.
virtual DVect getVertex(int ver) const =0
Get the vertex.
virtual void setFragmentIndex(int ind)=0
Set the fragment index.
virtual DAVect getAngVelocity() const =0
Get the angular velocity.
virtual DVect getUnbalancedForce() const =0
Return the unbalanced force.
virtual DVect getFacetNormal(int fac) const =0
Get the facet normal.
virtual void setLocalDamping(const double &d)=0
Set the local damping coefficient.
virtual double getAspectRatio() const =0
Returns the aspect ratio of the block.
virtual DVect getFacetPosition(int fac) const =0
Get the facet position.
virtual QString getFaceGroupName(uint32 side, const ISlotID &slot=ISlotID()) const =0
Support for face groups.
virtual DVect getClosestPointOnFacet(const DVect &, int fac) const =0
Get the closest point on a facet to a point in space.
virtual double getInertialMoiComp(int) const =0
virtual void setVelocity(const DVect &p)=0
Set the velocity.
virtual IThing * getIThing()=0
Return an IThing interface for this object.
virtual DAVect getAppliedMoment() const =0
Return the applied moment.
virtual const IPiece * getIPiece() const =0
Return the IPiece pointer.
virtual DVect getContactForce() const =0
Return the resultant of all contact forces.
virtual void setAngVelocity(const DAVect &p)=0
Set the angular velocity.
virtual void getContactList(FArray< const IContact * > *ret, const TType &type=0, const IPiece *p2=0) const =0
Return a list of const IContacts.
virtual IRBlock * getNextIRBlock()=0
Return the next IRBlock object in the global list, or 0 if it is the last set.
virtual const IThing * getIThing() const =0
Return a const IThing interface for this object.
virtual void getSurfaceRotMatrix(DMatrix< dim, dim > *) const =0
Get the rotation matrix with reference to the principal axis system.
virtual const IRBlock * getNextIRBlock() const =0
Return the next IRBlock object in the global list, or 0 if it is the last set.
virtual DAVect getMoi() const =0
Return the inertia tensor in principal axis form.
virtual DVect getVertexOfFacet(int fac, int ver) const =0
Get the vertex of a facet.
virtual void setAppliedForce(const DVect &v)=0
Set the applied force.
virtual double getVolume() const =0
Get the volume.
virtual double getRounding() const =0
Return the rounding.
virtual DVect getCentroid() const =0
Get the centroid.
virtual const IBodyMechanical * getIBodyMechanical() const =0
Return the IBodyMechanical pointer.
virtual void setContactMoment(const DAVect &v)=0
Set the contact moment.
virtual const IBody * getIBody() const =0
Return the IBody pointer.
virtual DVect getPosition() const =0
Return the rblock position. This is implementation dependent.
virtual double getLocalDamping() const =0
Return the local damping coefficient.
virtual DExtent3 getExtent() const =0
Return the DExtent3 extent.
virtual DAVect getUnbalancedMoment() const =0
Return the unbalanced moment.
virtual DVect getVelocity() const =0
Get the velocity.
static const TType type_
TType for type casting.
Definition irblock.h:29
virtual int getNumberFacets() const =0
Return the number of facets.
virtual DVect getDisplacement() const =0
Get the displacement.
virtual int getFacetClosestToPoint(const DVect &) const =0
virtual void setCentroid(const DVect &p)=0
Set the centroid.
virtual uint64 getContactCount(bool active, const TType &type=0, bool domainToo=false) const =0
Return the number of contacts.
virtual void setAppliedMoment(const DAVect &v)=0
Set the applied moment.
virtual double getInertialMass() const =0
Return the inertial mass.
virtual bool getFix(quint32 dof) const =0
Return a boolean indicating the fixity condition.
virtual DVect getAppliedForce() const =0
Return the applied force.
virtual DAVect getInertialMoi() const =0
Return the inertial (may be scaled) inertia tensor in principal axis form.
virtual DMatrix< DIM, DIM > getStress() const =0
Return the current stress computed for this rblock.
virtual double getDensity() const =0
Return the density.
virtual void setMoiFix(bool b)=0
When setting the MOI from FISH one needs make sure that it is not reset no matter what.
virtual void setDisplacement(const DVect &v)=0
Set the displacement.
virtual int getFragmentIndex() const =0
Return the fragment index.
virtual double getBallRadius() const =0
Returns the ball radius containing the block.
virtual const IRigidBodyMechanical * getIRigidBodyMechanical() const =0
Return the IRigidBodyMechanical pointer.
virtual bool getIsIn(const DVect &) const =0
Returns a boolean indicating whether a point in space is inside or outside of the rigid block.
virtual void getGeometry(FArray< DVect > *vert, FArray< int > *fac=0) const =0
Get the list of vertices and facets. Nothing is done with the second array in 2D.
virtual void setMoi(const DAVect &d)=0
Set the principal values of the inertia tensor directly.
virtual void setFix(quint32 dof, bool b)=0
Set the fixity condition.
virtual void setVolumeNoScale(const double &d)=0
Set the volume without scaling the rblock.
virtual double getMass() const =0
Return the mass.
virtual bool rotate(const DVect &rotp, const DVect &axis, const double &w, bool update=true, bool noThrow=false)=0
virtual void setDensity(const double &d)=0
Set the density.
virtual void setMoiComp(const double &, int)=0
Set a component of the inertia tensor. Admissible values are: 11,12,13,22,23,33 in 3D.
virtual void setContactForce(const DVect &v)=0
Set the contact force.
An array class that attempts to minimize unnecessary heap access.
uint32 TType
class type indicator
Definition basedef.h:47
DExtent3 DExtent
A DExtent2 in 2D, a DExtent3 in 3D.
Definition dim.h:162
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition dim.h:156
DAVect3 DAVect
Angular vector of doubles, either 2D or 3D.
Definition dim.h:164
namespace Itasca
Definition basememory.cpp:14
Itasca Library standard namespace, specific to 2D or 3D.
Definition icontactmodule.h:6