Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
imoduledfn.h
1 #pragma once
2 // imoduledfn.h
3 // For DFN Module
4 #include "base/src/farray.h"
6 
7 namespace itasca {
8  class IContainer;
9 }
10 
11 namespace itascaxd {
12  class IContact;
13  class ICellSpace;
14  class IContainerContact;
15  class IGeomSet;
16  class IRange;
17 }
18 
19 namespace dfn {
20  using namespace itasca;
21  using namespace itascaxd;
22 
23  class IVertexDFN;
24  class IFracture;
25  class IFracNetwork;
26  class IIntersect;
27  class IIntersectionSet;
28  class IDFNTemplate;
29  class IDFNCluster;
30 
31  class IModuleDFN {
32  public:
33 
35 
37  virtual TType getFracNetworkType() const=0;
39  virtual TType getInterSetType() const=0;
41  virtual TType getFractureType() const=0;
43  virtual TType getVertexDFNType() const=0;
45  virtual TType getIntersectType() const=0;
47  virtual TType getContactType() const=0;
49  virtual uint getFracNetworkGeometryNotice() const=0;
51  virtual uint getInterSetGeometryNotice() const=0;
53  virtual uint getFracNetworkIntersectNotice() const=0;
55  virtual uint getFracNetworkPropertyNotice() const=0;
57  virtual uint getFracNetworkExtraNotice() const=0;
59  virtual uint getFracNetworkGroupNotice() const=0;
61  virtual uint getInterSetExtraNotice() const=0;
63  virtual uint getInterSetGroupNotice() const=0;
65  virtual const IContainer * getIContainerFracNetwork() const=0;
67  virtual IContainer * getIContainerFracNetwork()=0;
69  virtual const IContainer * getIContainerIntersectionSet() const=0;
71  virtual IContainer * getIContainerIntersectionSet()=0;
73  virtual const IContainer * getIContainerCluster() const=0;
75  virtual IContainer * getIContainerCluster()=0;
77  virtual QStringList findAllFracNetworks() const=0;
79  virtual const IContainer * getIContainerFracture() const=0;
81  virtual IContainer * getIContainerFracture()=0;
83  virtual const IContainer * getIContainerTemplate() const=0;
85  virtual IContainer * getIContainerTemplate()=0;
86 
88  virtual IContainer * getIContainerVertexDFN()=0;
90  virtual const IContainer * getIContainerVertexDFN() const=0;
91 
93  virtual IContainer * getIContainerIntersects()=0;
95  virtual const IContainer * getIContainerIntersects() const=0;
96 
98  virtual const ICellSpace * getFractureCellSpace() const=0;
100  virtual ICellSpace * getFractureCellSpace()=0;
102  virtual const IFracNetwork * findFracNetworkWithID(quint64 id) const=0;
104  virtual IFracNetwork * findFracNetworkWithID(quint64 id) =0;
106  virtual const IFracNetwork * findFracNetworkWithName(const QString &name) const=0;
108  virtual IFracNetwork * findFracNetworkWithName(const QString &name) =0;
110  virtual const IFracture * findFractureWithID(quint64 id,IFracNetwork *fn=0) const=0;
112  virtual IFracture* findFractureWithID(quint64 id,IFracNetwork *fn=0) =0;
114  virtual const IVertexDFN * findVertexWithID(quint64 id) const=0;
116  virtual IVertexDFN* findVertexWithID(quint64 id) =0;
118  virtual const IIntersect * findIntersectWithID(quint64 id,IFracNetwork *fn=0) const=0;
120  virtual IIntersect * findIntersectWithID(quint64 id,IFracNetwork *fn=0) =0;
122  virtual const IIntersectionSet * findInterSetWithID(quint64 id) const=0;
124  virtual IIntersectionSet * findInterSetWithID(quint64 id) =0;
126  virtual const IDFNCluster * findClusterWithID(quint64 id) const=0;
128  virtual IDFNCluster * findClusterWithID(quint64 id) =0;
130  virtual const IDFNCluster * findClusterWithName(const QString& name) const=0;
132  virtual IDFNCluster * findClusterWithName(const QString& name) =0;
133 
135  virtual const IDFNTemplate * getTemplateOfDFN(IFracNetwork*fn=0) const=0;
137  virtual IDFNTemplate * getTemplateOfDFN(IFracNetwork*fn=0)=0;
139  virtual const IDFNTemplate * findTemplateWithID(quint64 id) const = 0;
141  virtual IDFNTemplate* findTemplateWithID(quint64 id) = 0;
143  virtual const IDFNTemplate * findTemplateWithName(const QString& name) const = 0;
145  virtual IDFNTemplate* findTemplateWithName(const QString& name) = 0;
146 
148  virtual const IFracture * findFractureClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
150  virtual IFracture * findFractureClosestTo(const DVect &v,const double &radius=limits<double>::max())=0;
152  virtual const IFracture * findAnyFractureClosestTo(const DVect &v,const double &radius=limits<double>::max(),const IRange *r=0) const=0;
154  virtual IFracture * findAnyFractureClosestTo(const DVect &v,const double &radius=limits<double>::max(),const IRange *r=0)=0;
156  //virtual const IFracture * findLDFractureClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
158  virtual IFracture * findLDFractureClosestTo(const DVect &v,IFracNetwork *fn=0,const double &radius=limits<double>::max())=0;
160  virtual IFracture * findLDFractureInBox(const DExtent &d,IFracNetwork *fn=0)=0;
162  virtual IFracture * findLDFractureIntSeg(const DVect &d1,const DVect &d2,IFracNetwork *fn=0)=0;
164  //virtual IFracture * findLDFracturePoly(const FArray<FArray<DVect,5>,8> &d1,IFracNetwork *fn=0)=0;
165 
167  //virtual const IVertexDFN * findVertexDFNClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
169  //virtual IVertexDFN * findVertexDFNClosestTo(const DVect &v,const double &radius=limits<double>::max())=0;
171  //virtual void removeIVertexDFN(IVertexDFN *fac) = 0;
172 
174  //virtual void getFracNetworkList(FArray<IFracNetwork *> *ret)=0;
176  virtual void eraseIFracNetwork(IFracNetwork *w) = 0;
177 
179  virtual void eraseIInterSet(IIntersectionSet *is) = 0;
180 
182  virtual void eraseICluster(IDFNCluster *is) = 0;
183 
185  virtual IFracNetwork* createIFracNetwork(uint id=0,const QString &name = QString()) = 0;
186 
188  virtual IFracNetwork * getFirstIFracNetwork() const = 0;
189 
191  virtual void validate()=0;
192 
194  virtual void removeFracture(IFracture *frac) = 0;
195 
197  virtual void removeIntersectsWithFracture(IFracture * frac)=0;
198 
200  virtual void delineateIntersectionsDirty(IFracture * frac)=0;
201 
203  virtual void getIntersectList(FArray<IIntersect *> *ret,IFracNetwork *fn=0, IFracture *frac=0) =0;
204 
206  virtual void getIntersectList(FArray<const IIntersect *> *ret,IFracNetwork *fn=0, IFracture *frac=0) const = 0;
207 
209  virtual IDFNCluster* createIDFNCLuster(quint64 &id,QString &name) = 0;
210 
211  // Get the fractures of cluster
212  virtual void getFractureOfClusterList(FArray<IFracture *> *ret,IDFNCluster *cl=0, quint64 ind=0) const = 0;
213 
214  // get the shortest fracture path between two fractures
215  virtual void getPathClusterList(FArray<IFracture *> *ret,IDFNCluster *cl=0,IFracture* f1=0, IFracture* f2=0) const=0;
216 
217  // get the index of the largest cluster
218  virtual int getLargestCluster(IDFNCluster *cl=0) const = 0;
219 
220  // get the index of the largest cluster
221  virtual int getMaxIndCluster(IDFNCluster *cl=0) const = 0;
222 
224  virtual void getFractureInBoxList(const DExtent &d,FArray<IFracture *> *ret,const IRange *r=0,bool intersect=true)=0;
225 
227  virtual void getFractureInBoxList(const DExtent &d,FArray<const IFracture *> *ret,const IRange *r=0,bool intersect=true)=0;
228 
230  virtual double calcP10(const DVect&,const DVect&,const IRange *r=0) const =0;
231 
233  virtual double calcP10Geom(const IGeomSet *,const IRange *r=0) const =0;
234 
235 
236 #ifdef THREED
237 
239  virtual double calcAveTrace(const IGeomSet *,const IRange *r=0) const =0;
240 
242  virtual double calcP20(const IGeomSet *,const IRange *r=0) const =0;
243 
245  virtual double calcP21(const IGeomSet *,const IRange *r=0) const =0;
246 
248  virtual double calcP30(const DExtent &,const IRange *r=0) const =0;
249 
251  virtual double calcP32(const DExtent &,const IRange *r=0) const =0;
252 
254  virtual double calcPerc(const DExtent &,const IRange *r=0) const =0;
255 #else
256 
258  virtual double calcP20(const DExtent &,const IRange *r=0) const =0;
259 
261  virtual double calcP21(const DExtent &,const IRange *r=0) const =0;
262 
264  virtual double calcPerc(const DExtent &,const IRange *r=0) const =0;
265 
266 
267 #endif
268 
270  virtual void populateAttributeSets(QStringList *scalarAtts,QStringList *stringAtts,QStringList *vectorAtts)const=0;
272  virtual void populateAttributeInterSets(QStringList *scalarAtts,QStringList *stringAtts,QStringList *vectorAtts)const=0;
274  virtual void populatePropertySets(QStringList *scalarProps,QStringList *stringProps,QStringList *vectorProps)const=0;
275 
277  virtual prop_signal * getPropertySignal() const = 0;
278 
279  };
280 } // namespace dfn
281 // EoF
Definition: imoduledfn.h:31
Interface to a filter, used as the main method for filtering objects.
Definition: irange.h:31
namespace Itasca
Definition: basememory.cpp:9
Definition of a Signal2 object, holding a list of ISlot2 objects.
Definition: isignalbase.h:76
Definition: iintersect.h:20
Definition: idfntemplate.h:13
Definition: ivertexdfn.h:16
Interface for the small-granularity callback utility.
An array class that attempts to minimize unnecessary heap access.
Definition: idfncluster.h:16
Definition: ifracture.h:24
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
A container for a single "set" of geometric elements. A geometric set is a named collection of geomet...
Definition: igeomset.h:27
Definition: ifracnetwork.h:22
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
Definition: iintersectionset.h:22