Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
imoduleball.h
1 #pragma once
2 
9 #include "base/src/farray.h"
10 #include "base/src/callback.h"
11 
12 namespace itasca {
13  class IContainer;
14  class IEnergyMap;
15 }
16 
17 namespace itascaxd {
18  class ICellSpace;
19  class IContainerContact;
20 }
21 
22 namespace pfc {
23  using namespace itasca;
24  using namespace itascaxd;
25 
26  class IBall;
27  class IGhostBall;
28 
33  class IModuleBall {
34  public:
37 
39  virtual TType getBallType() const=0;
41  virtual TType getGhostBallType() const=0;
43  virtual uint getBallGeometryNotice() const=0;
45  virtual uint getBallPropertyNotice() const=0;
47  virtual uint getBallVelocityNotice() const=0;
49  virtual uint getBallCycleNotice() const=0;
51  virtual uint getBallFixNotice() const=0;
53  virtual uint getBallExtraNotice() const=0;
55  virtual uint getBallGroupNotice() const=0;
57  virtual uint getBallCleanNotice() const=0;
59  virtual uint getBallRotationNotice() const=0;
60 
62  virtual const IContainer * getIContainerBall() const=0;
64  virtual IContainer * getIContainerBall()=0;
66  virtual const IContainer * getIContainerGhostBall() const=0;
68  virtual IContainer * getIContainerGhostBall()=0;
70  virtual const IContainerContact *getIContainerBallBallContact() const=0;
72  virtual IContainerContact * getIContainerBallBallContact()=0;
74  virtual const IContainerContact *getIContainerDomainBallContact() const=0;
76  virtual IContainerContact * getIContainerDomainBallContact()=0;
78  virtual const ICellSpace * getICellSpace() const=0;
80  virtual ICellSpace * getICellSpace()=0;
83  virtual const IBall * findBallWithID(quint64 id) const=0;
86  virtual IBall * findBallWithID(quint64 id) =0;
89  virtual const IGhostBall * findGhostBallWithID(quint64 id) const=0;
92  virtual IGhostBall * findGhostBallWithID(quint64 id) =0;
97  virtual const IBall * findBallClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
102  virtual IBall * findBallClosestTo(const DVect &v,const double &radius=limits<double>::max())=0;
103  virtual const IBall * findBallContaining(const DVect &v,QSet<quint64> *skip=nullptr) const=0;
104  virtual IBall * findBallContaining(const DVect &v,QSet<quint64> *skip=nullptr)=0;
106  virtual void validate()=0;
108  virtual const IEnergyMap * getIBallEnergies() const=0;
110  virtual const IEnergyMap * getIContactBallBallEnergies() const=0;
117  virtual void getBallInBoxList(const DExtent &d,FArray<IBall *> *ret,bool intersect=true)=0;
124  virtual void getBallInBoxList(const DExtent &d,FArray<const IBall *> *ret,bool intersect=true)=0;
131  virtual IBall * createBall(double rad,DVect pos,quint64 id=0)=0;
132 
133  // Populates sets of property names based on their type including the relevant notices
134  virtual void populateAttributeSets(QStringList *scalarAtts,FArray<uint> *scalarNotices,QStringList *stringAtts,FArray<uint> *stringNotices,QStringList *vectorAtts,FArray<uint> *vectorNotices)const=0;
135  // Populates sets of property names based on their type
136  virtual void populatePropertySets(QStringList *scalarProps,QStringList *stringProps,QStringList *vectorProps)const=0;
137 
139  virtual prop_signal * getPropertySignal() const = 0;
140 
142  virtual void threadedCallbackObject(Callback4<void,IBall *,quint32,quint32,void *> &callback,void *v=nullptr,bool useThreads=true) const=0;
143 
145  template <class S,void (S::*MFP)(IBall *,quint32,quint32,void *)>
146  void threadedCallbackMethod(S *s,void *v=nullptr,bool useThreads=true) const {
148  threadedCallbackObject(callback,v,useThreads);
149  }
150 
151  };
152 } // namespace pfc
153 // EoF
Definition: callback.h:30
namespace Itasca
Definition: basememory.cpp:9
Definition of a Signal2 object, holding a list of ISlot2 objects.
Definition: isignalbase.h:76
Interface for the small-granularity callback utility.
PFC namespace.
Definition: iballfluid.h:15
An array class that attempts to minimize unnecessary heap access.
void threadedCallbackMethod(S *s, void *v=nullptr, bool useThreads=true) const
Implementation of the multithreaded loop using the threadedCallbackObject.
Definition: imoduleball.h:146
Contact container class.
Definition: icontainercontact.h:28
debug checked shorthand for std::numeric_limits<T>::
Definition: limit.h:25
unsigned int TType
class type indicator
Definition: basedef.h:41
Definition: ighostball.h:16
DExtent3 DExtent
A DExtent2 in 2D, a DExtent3 in 3D.
Definition: dim.h:149
Definition: callback.h:122
Interface for a ball.
Definition: iball.h:35
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4
Interface for the Ball module. This is the interface for the Ball module.
Definition: imoduleball.h:33
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
Interface to a "refining" cell space.
Definition: icellspace.h:24
Signal2< const QString &, const QVariant & > prop_signal
Signal emitted when a property is created or modified.
Definition: imoduleball.h:36
Interface to EnergyMap class.
Definition: ienergymap.h:15