Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
imodulewall.h
Go to the documentation of this file.
1 #pragma once
2 
7 #include "base/src/farray.h"
9 #include "base/src/callback.h"
10 
11 namespace itasca {
12  class IContainer;
13  class IEnergyMap;
14 }
15 
16 namespace itascaxd {
17  class IContact;
18  class ICellSpace;
19  class IContainerContact;
20  class IHalfFacet;
21  class IHalfVertex;
22 }
23 
24 namespace pfc {
25  using namespace itasca;
26  using namespace itascaxd;
27 
28  class IWall;
29  class IFWall;
30 
44  class IModuleWall {
45  public:
48 
50  virtual TType getFWallType() const=0;
52  virtual TType getFacetType() const=0;
54  virtual TType getVertexType() const=0;
56  virtual uint getFWallGeometryNotice() const=0;
58  virtual uint getFWallCycleNotice() const=0;
60  virtual uint getFWallVelocityNotice() const=0;
62  virtual uint getFWallDisplacementNotice() const=0;
64  virtual uint getFWallPropertyNotice() const=0;
66  virtual uint getFWallExtraNotice() const=0;
68  virtual uint getFWallGroupNotice() const=0;
70  virtual uint getFWallFacetExtraNotice() const=0;
72  virtual uint getFWallFacetGroupNotice() const=0;
74  virtual uint getFWallCleanNotice() const=0;
76  virtual const IContainer * getIContainerFWall() const=0;
78  virtual IContainer * getIContainerFWall()=0;
80  virtual IContainer * getIContainerFacet()=0;
82  virtual const IContainer * getIContainerFacet() const=0;
84  virtual IContainer * getIContainerVertex()=0;
86  virtual const IContainer * getIContainerVertex() const=0;
87 
89  virtual const ICellSpace * getFWallCellSpace() const=0;
91  virtual ICellSpace * getFWallCellSpace()=0;
93  virtual const IWall * findWallWithID(quint64 id) const=0;
95  virtual IWall * findWallWithID(quint64 id) =0;
97  virtual const IFWall * findFWallWithID(quint64 id) const=0;
99  virtual IFWall * findFWallWithID(quint64 id) =0;
101  virtual const IWall * findWallWithName(const QString &name) const=0;
103  virtual IWall * findWallWithName(const QString &name) =0;
105  virtual const IFWall * findFWallWithName(const QString &name) const=0;
107  virtual IFWall * findFWallWithName(const QString &name) =0;
109  virtual const IFWall * findFWallClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
111  virtual IFWall * findFWallClosestTo(const DVect &v,const double &radius=limits<double>::max())=0;
113  virtual IFWall * createIFWall(QString name,quint64 id=0)=0;
115  virtual const IHalfFacet * findFacetWithID(quint64 id,IFWall *w=0) const=0;
117  virtual IHalfFacet * findFacetWithID(quint64 id,IFWall *w=0) =0;
119  virtual IHalfFacet * findFacetAloneWithID(quint64 id) =0;
121  virtual const IHalfFacet * findFacetClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
123  virtual IHalfFacet * findFacetClosestTo(const DVect &v,const double &radius=limits<double>::max())=0;
125  virtual IFWall * removeIHalfFacet(IHalfFacet *fac) = 0;
126 
128  virtual const IHalfVertex * findVertexWithID(quint64 id,IFWall *w=0) const=0;
130  virtual IHalfVertex * findVertexWithID(quint64 id,IFWall *w=0) =0;
132  virtual IHalfVertex * findVertexAloneWithID(quint64 id) =0;
134  virtual const IHalfVertex * findVertexClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
136  virtual IHalfVertex * findVertexClosestTo(const DVect &v,const double &radius=limits<double>::max())=0;
137 
139  virtual void getWallList(FArray<IWall *> *ret)=0;
141  virtual void eraseIWall(IWall *w) = 0;
142 
144  virtual const IEnergyMap * getIWallEnergies() const=0;
145 
147  virtual void getWallInBoxList(const DExtent &d,FArray<IFWall *> *ret,bool intersect=true)=0;
148  virtual void getWallInBoxList(const DExtent &d,FArray<const IFWall *> *ret,bool intersect=true)=0;
149 
151  virtual void getFacetInBoxList(const DExtent &d,FArray<IHalfFacet *> *ret,bool intersect=true)=0;
152  virtual void getFacetInBoxList(const DExtent &d,FArray<const IHalfFacet *> *ret,bool intersect=true)=0;
153 
155  virtual void getVertexInBoxList(const DExtent &d,FArray<IHalfVertex *> *ret,bool intersect=true)=0;
156  virtual void getVertexInBoxList(const DExtent &d,FArray<const IHalfVertex *> *ret,bool intersect=true)=0;
157 
159  virtual void populateAttributeSets(QStringList *scalarAtts,FArray<uint> *scalarNotices,QStringList *stringAtts,FArray<uint> *stringNotices,QStringList *vectorAtts,FArray<uint> *vectorNotices) const=0;
161  virtual void populatePieceAttributeSets(QStringList *valueAtts,QStringList *labelAtts,QStringList *vectorAtts)const=0;
163  virtual void populatePropertySets(QStringList *valueProps,QStringList *labelProps,QStringList *vectorProps)const=0;
165  virtual prop_signal * getPropertySignal() const = 0;
166 
168  virtual void threadedCallbackObjectWall(Callback4<void,IFWall *,quint32,quint32,void *> &callback,void *v=nullptr,bool useThreads=true) const=0;
169 
171  template <class S,void (S::*MFP)(IFWall *,quint32,quint32,void *)>
172  void threadedCallbackMethodWall(S *s,void *v=nullptr,bool useThreads=true) const {
174  threadedCallbackObjectWall(callback,v,useThreads);
175  }
176 
178  virtual void threadedCallbackObjectFacet(Callback4<void,IHalfFacet *,quint32,quint32,void *> &callback,void *v=nullptr,bool useThreads=true) const=0;
179 
181  template <class S,void (S::*MFP)(IHalfFacet *,quint32,quint32,void *)>
182  void threadedCallbackMethodFacet(S *s,void *v=nullptr,bool useThreads=true) const {
184  threadedCallbackObjectFacet(callback,v,useThreads);
185  }
186 
188  virtual void threadedCallbackObjectVertex(Callback4<void,IHalfVertex *,quint32,quint32,void *> &callback,void *v=nullptr,bool useThreads=true) const=0;
189 
191  template <class S,void (S::*MFP)(IHalfFacet *,quint32,quint32,void *)>
192  void threadedCallbackMethodVertex(S *s,void *v=nullptr,bool useThreads=true) const {
194  threadedCallbackObjectVertex(callback,v,useThreads);
195  }
196 
197  };
198 } // namespace pfc
199 // EoF
Definition: callback.h:30
Interface for a faceted wall.
Definition: ifwall.h:45
namespace Itasca
Definition: basememory.cpp:9
Definition of a Signal2 object, holding a list of ISlot2 objects.
Definition: isignalbase.h:76
void threadedCallbackMethodVertex(S *s, void *v=nullptr, bool useThreads=true) const
Implementation of the multithreaded loop using the threadedCallbackObjectVertex.
Definition: imodulewall.h:192
Interface for a vertex used in the faceted wall logic. This is the interface for a vertex used in the...
Definition: ihalfvertex.h:27
Signal2< const QString &, const QVariant & > prop_signal
Typedef for the small granularity signal used to indicate to the gui that a propery has been added.
Definition: imodulewall.h:47
Interface for the small-granularity callback utility.
void threadedCallbackMethodWall(S *s, void *v=nullptr, bool useThreads=true) const
Implementation of the multithreaded loop using the threadedCallbackObjectFWall.
Definition: imodulewall.h:172
PFC namespace.
Definition: iballfluid.h:15
An array class that attempts to minimize unnecessary heap access.
debug checked shorthand for std::numeric_limits<T>::
Definition: limit.h:25
unsigned int TType
class type indicator
Definition: basedef.h:41
DExtent3 DExtent
A DExtent2 in 2D, a DExtent3 in 3D.
Definition: dim.h:149
void threadedCallbackMethodFacet(S *s, void *v=nullptr, bool useThreads=true) const
Implementation of the multithreaded loop using the threadedCallbackObjectFacet.
Definition: imodulewall.h:182
Definition: callback.h:122
Interface for a facet used in the faceted wall logic. This is the interface for a triangular facet as...
Definition: ihalffacet.h:37
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4
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
Interface for a generic wall. This is the interface for a generic wall. Specific wall types must deri...
Definition: iwall.h:35
Interface to EnergyMap class.
Definition: ienergymap.h:15
Interface for the wall module.
Definition: imodulewall.h:44