5#include "module/interface/ibody.h"
6#include "utility/src/thing.h"
7#include "utility/src/locallink.h"
14 class IPieceMechanical;
15 class IPieceMechanicalData;
24 public LocalLink<IPebble>
27 inline static const TType type_ = 0x4e6627a1;
28 IPebble(uint64
id) : ThingID(
id) { }
30 virtual IThing * getIThing() {
return this; }
31 virtual const IThing * getIThing()
const {
return this; }
32 virtual IPiece * getIPiece()=0;
33 virtual const IPiece * getIPiece()
const=0;
38 virtual IClump * getIClump()=0;
39 virtual const IClump * getIClump()
const=0;
40 virtual void setIClump(
IClump *)=0;
42 virtual const IPebble * getNext()
const=0;
44 virtual void setNext(
IPebble *)=0;
45 virtual void setPrev(
IPebble *)=0;
46 virtual const IPebble * getPrev()
const=0;
47 virtual bool baseIsIn(
const DVect &d,
const double &tol=1e-7)
const { d; tol;
throw Exception(
"Not in IPiece baseIsIn"); }
48 virtual bool baseBoxIsIn(
const DExtent &d,
const double &tol=1e-7)
const { d; tol;
throw Exception(
"Not in IPiece baseBoxIsIn"); }
49 virtual bool baseIntersects(
const DExtent &d,
const double &tol=1e-7)
const { d; tol;
throw Exception(
"Not in IPiece baseIntersects"); }
51 virtual void baseScale(
const double &d)=0;
52 virtual double baseRadius()
const=0;
53 virtual void baseSetOnRestore(
bool b)=0;
54 virtual void baseSetMapTolConst(
const double &d)=0;
55 virtual double baseTolerance()
const=0;
56 virtual bool checkExtent(
bool localLock=
false)=0;
57 virtual bool regularPebble()
const=0;
59 virtual void copy(
const IPebble *)=0;
61 virtual DVect getPosition()
const=0;
62 virtual double getRadius()
const=0;
63 virtual DVect getVelocity()
const=0;
64 virtual DAVect getAngVelocity()
const=0;
65 virtual DExtent getDExtent()
const=0;
66 virtual DExtent getCellExtent()
const=0;
67 virtual DExtent getToleranceExtent()
const=0;
68 virtual bool getIsClumpTemplate()
const=0;
69 virtual bool getIsClumpTemplateAndReferredTo()
const=0;
70 virtual void spinTranslate(
const DMatrix<dim,dim> &rm,
const DVect &trans,
bool lock=
false,
bool checkExtent=
true)=0;
76 virtual void setPosition(
const DVect &p)=0;
77 virtual void setRadius(
const double &d,
bool lock=
false)=0;
78 virtual void setRadiusNoLock(
const double &d)=0;
80 virtual int getFragmentIndex()
const = 0;
83 virtual void getFacetGeometry(
FArray<DVect> *vert,
double &)
const=0;
DMatrix is a Matrix that defaults to type double...
Definition matrix.h:758
Base exception class for all Itasca code.
Definition baseexception.h:10
An array class that attempts to minimize unnecessary heap access.
Definition farray.h:25
Base class for items that will be stored in containers.
Definition ithing.h:30
InOutMode
Enumerator for defining the geometric attributes of a body relative to a geometric shape.
Definition ibody.h:26
Definition ipiecemechanicaldata.h:13
Definition ipiecemechanical.h:11
Interface for a clump. This is the interface for a clump. A clump is a collection of pebbles that def...
Definition iclump.h:37
Interface for a clump template. This is the interface for a clump template. A clump template is compo...
Definition iclumptemplate.h:25
virtual IClumpTemplate * getMyClumpTemplate()=0
Return the IClumpTemplate pointer.
virtual const IClumpTemplate * getMyClumpTemplate() const =0
Return the const IClumpTemplate pointer.
uint32 TType
class type indicator
Definition basedef.h:46
DExtent3 DExtent
A DExtent2 in 2D, a DExtent3 in 3D.
Definition dim.h:160
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition dim.h:154
DAVect3 DAVect
Angular vector of doubles, either 2D or 3D.
Definition dim.h:162
A template-based matrix class, size fixed at compile time.
namespace Itasca
Definition basememory.cpp:14
Itasca Library standard namespace, specific to 2D or 3D.
Definition icontactmodule.h:4
PFC namespace.
Definition iballfluid.h:15