Itasca C++ Interface
Loading...
Searching...
No Matches
imoduledfn.h
1#pragma once
2// imoduledfn.h
3// For DFN Module
4#include "base/src/farray.h"
5#include "base/src/property.h"
6
7#include "shared/interface/signal.h"
8
9namespace itasca {
10 class IContainer;
11}
12
13namespace itascaxd {
14 class IContact;
15 class ICellSpace;
16 class IContainerContact;
17 class IGeomSet;
18 class IRange;
19}
20
21namespace dfn {
22 using namespace itasca;
23 using namespace itascaxd;
24
25 class IVertexDFN;
26 class IFracture;
27 class IFracNetwork;
28 class IIntersect;
29 class IIntersectionSet;
30 class IDFNTemplate;
31 class IDFNCluster;
32
33 class IModuleDFN {
34 public:
35
36 using prop_signal = shared::Signal<const string &,const base::Property &>;
37
39 virtual TType getFracNetworkType() const=0;
41 virtual TType getInterSetType() const=0;
43 virtual TType getFractureType() const=0;
45 virtual TType getVertexDFNType() const=0;
47 virtual TType getIntersectType() const=0;
49 virtual TType getContactType() const=0;
51 virtual uint32 getFracNetworkGeometryNotice() const=0;
53 virtual uint32 getInterSetGeometryNotice() const=0;
55 virtual uint32 getFracNetworkIntersectNotice() const=0;
57 virtual uint32 getFracNetworkPropertyNotice() const=0;
59 virtual uint32 getFracNetworkExtraNotice() const=0;
61 virtual uint32 getFracNetworkGroupNotice() const=0;
63 virtual uint32 getInterSetExtraNotice() const=0;
65 virtual uint32 getInterSetGroupNotice() const=0;
67 virtual const IContainer * getIContainerFracNetwork() const=0;
71 virtual const IContainer * getIContainerIntersectionSet() const=0;
75 virtual const IContainer * getIContainerCluster() const=0;
81 virtual const IContainer * getIContainerFracture() const=0;
85 virtual const IContainer * getIContainerTemplate() const=0;
88
92 virtual const IContainer * getIContainerVertexDFN() const=0;
93
97 virtual const IContainer * getIContainerIntersects() const=0;
98
100 virtual const ICellSpace * getFractureCellSpace() const=0;
104 virtual const IFracNetwork * findFracNetworkWithID(uint64 id) const=0;
106 virtual IFracNetwork * findFracNetworkWithID(uint64 id) =0;
108 virtual const IFracNetwork * findFracNetworkWithName(const string &name) const=0;
110 virtual IFracNetwork * findFracNetworkWithName(const string &name) =0;
112 virtual const IFracture * findFractureWithID(uint64 id,IFracNetwork *fn=0) const=0;
114 virtual IFracture* findFractureWithID(uint64 id,IFracNetwork *fn=0) =0;
116 virtual const IVertexDFN * findVertexWithID(uint64 id) const=0;
118 virtual IVertexDFN* findVertexWithID(uint64 id) =0;
120 virtual const IIntersect * findIntersectWithID(uint64 id,IFracNetwork *fn=0) const=0;
122 virtual IIntersect * findIntersectWithID(uint64 id,IFracNetwork *fn=0) =0;
124 virtual const IIntersectionSet * findInterSetWithID(uint64 id) const=0;
126 virtual IIntersectionSet * findInterSetWithID(uint64 id) =0;
128 virtual const IDFNCluster * findClusterWithID(uint64 id) const=0;
130 virtual IDFNCluster * findClusterWithID(uint64 id) =0;
132 virtual const IDFNCluster * findClusterWithName(const string& name) const=0;
134 virtual IDFNCluster * findClusterWithName(const string& name) =0;
135
137 virtual const IDFNTemplate * getTemplateOfDFN(IFracNetwork*fn=0) const=0;
141 virtual const IDFNTemplate * findTemplateWithID(uint64 id) const = 0;
143 virtual IDFNTemplate* findTemplateWithID(uint64 id) = 0;
145 virtual const IDFNTemplate * findTemplateWithName(const string& name) const = 0;
147 virtual IDFNTemplate* findTemplateWithName(const string& name) = 0;
148
150 virtual const IFracture * findFractureClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
152 virtual IFracture * findFractureClosestTo(const DVect &v,const double &radius=limits<double>::max())=0;
154 virtual const IFracture * findAnyFractureClosestTo(const DVect &v,const double &radius=limits<double>::max(),const IRange *r=0) const=0;
156 virtual IFracture * findAnyFractureClosestTo(const DVect &v,const double &radius=limits<double>::max(),const IRange *r=0)=0;
158 //virtual const IFracture * findLDFractureClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
160 virtual IFracture * findLDFractureClosestTo(const DVect &v,IFracNetwork *fn=0,const double &radius=limits<double>::max())=0;
164 virtual IFracture * findLDFractureIntSeg(const DVect &d1,const DVect &d2,IFracNetwork *fn=0)=0;
166 //virtual IFracture * findLDFracturePoly(const FArray<FArray<DVect,5>,8> &d1,IFracNetwork *fn=0)=0;
167
169 //virtual const IVertexDFN * findVertexDFNClosestTo(const DVect &v,const double &radius=limits<double>::max()) const=0;
171 //virtual IVertexDFN * findVertexDFNClosestTo(const DVect &v,const double &radius=limits<double>::max())=0;
173 //virtual void removeIVertexDFN(IVertexDFN *fac) = 0;
174
176 //virtual void getFracNetworkList(FArray<IFracNetwork *> *ret)=0;
178 virtual void eraseIFracNetwork(IFracNetwork *w) = 0;
179
181 virtual void eraseIInterSet(IIntersectionSet *is) = 0;
182
184 virtual void eraseICluster(IDFNCluster *is) = 0;
185
187 virtual IFracNetwork* createIFracNetwork(uint32 id=0,const string &name = string()) = 0;
188
190 virtual IFracNetwork * getFirstIFracNetwork() const = 0;
191
193 virtual void validate()=0;
194
196 virtual void removeFracture(IFracture *frac) = 0;
197
200
203
205 virtual void getIntersectList(FArray<IIntersect *> *ret,IFracNetwork *fn=0, IFracture *frac=0) =0;
206
208 virtual void getIntersectList(FArray<const IIntersect *> *ret,IFracNetwork *fn=0, IFracture *frac=0) const = 0;
209
211 virtual IDFNCluster* createIDFNCLuster(uint64 &id,string &name) = 0;
212
213 // Get the fractures of cluster
214 virtual void getFractureOfClusterList(FArray<IFracture *> *ret,IDFNCluster *cl=0, uint64 ind=0) const = 0;
215
216 // get the shortest fracture path between two fractures
217 virtual void getPathClusterList(FArray<IFracture *> *ret,IDFNCluster *cl=0,IFracture* f1=0, IFracture* f2=0) const=0;
218
219 // get the index of the largest cluster
220 virtual int getLargestCluster(IDFNCluster *cl=0) const = 0;
221
222 // get the index of the largest cluster
223 virtual int getMaxIndCluster(IDFNCluster *cl=0) const = 0;
224
226 virtual void getFractureInBoxList(const DExtent &d,FArray<IFracture *> *ret,const IRange *r=0,bool intersect=true)=0;
227
229 virtual void getFractureInBoxList(const DExtent &d,FArray<const IFracture *> *ret,const IRange *r=0,bool intersect=true)=0;
230
232 virtual double calcP10(const DVect&,const DVect&,const IRange *r=0) const =0;
233
235 virtual double calcP10Geom(const IGeomSet *,const IRange *r=0) const =0;
236
237
238#ifdef THREED
239
241 virtual double calcAveTrace(const IGeomSet *,const IRange *r=0) const =0;
242
244 virtual double calcP20(const IGeomSet *,const IRange *r=0) const =0;
245
247 virtual double calcP21(const IGeomSet *,const IRange *r=0) const =0;
248
250 virtual double calcP30(const DExtent &,const IRange *r=0) const =0;
251
253 virtual double calcP32(const DExtent &,const IRange *r=0) const =0;
254
256 virtual double calcPerc(const DExtent &,const IRange *r=0, uint32 option = 0) const =0;
257#else
258
260 virtual double calcP20(const DExtent &,const IRange *r=0) const =0;
261
263 virtual double calcP21(const DExtent &,const IRange *r=0) const =0;
264
266 virtual double calcPerc(const DExtent &,const IRange *r=0) const =0;
267
268
269#endif
270
272 virtual void populateAttributeSets(StringList *scalarAtts,StringList *stringAtts,StringList *vectorAtts)const=0;
274 virtual void populateAttributeInterSets(StringList *scalarAtts,StringList *stringAtts,StringList *vectorAtts)const=0;
276 virtual void populatePropertySets(StringList *scalarProps,StringList *stringProps,StringList *vectorProps)const=0;
277
279 virtual prop_signal * getPropertySignal() const = 0;
280
281 };
282} // namespace dfn
283// EoF
An array class that attempts to minimize unnecessary heap access.
Definition farray.h:25
Definition basestring.h:71
Definition idfncluster.h:16
Definition idfntemplate.h:13
Definition ifracnetwork.h:21
Definition ifracture.h:25
Definition iintersect.h:20
Definition iintersectionset.h:22
Definition imoduledfn.h:33
virtual IContainer * getIContainerIntersectionSet()=0
Return the IContainer of the IntersectionSets.
virtual TType getVertexDFNType() const =0
Return the VertexDFN TType.
virtual const IContainer * getIContainerFracNetwork() const =0
Return the const IContainer of the FracNetworks.
virtual const IIntersect * findIntersectWithID(uint64 id, IFracNetwork *fn=0) const =0
Find the const IIntersect with ID id;.
virtual const IContainer * getIContainerVertexDFN() const =0
Return the const IContainer of the VertexDFNs.
virtual IDFNCluster * createIDFNCLuster(uint64 &id, string &name)=0
Create an empty cluster.
virtual const ICellSpace * getFractureCellSpace() const =0
Return a const ICellSpace pointer to the FracNetwork cell space.
virtual IFracture * findFractureClosestTo(const DVect &v, const double &radius=limits< double >::max())=0
Find the FracNetwork closest to v.
virtual TType getFracNetworkType() const =0
Return the FracNetwork TType.
virtual IDFNCluster * findClusterWithName(const string &name)=0
Find the DFNCluster with ID id.
virtual StringList findAllFracNetworks() const =0
Return the list of the names of all FracNetworks.
virtual IVertexDFN * findVertexWithID(uint64 id)=0
Find the IVertexDFN with ID id.
virtual IFracture * findLDFractureIntSeg(const DVect &d1, const DVect &d2, IFracNetwork *fn=0)=0
Find the fracture with lowest dominance that intersects a line segment. Can filter by the optional fr...
virtual uint32 getInterSetGroupNotice() const =0
Return the InterSet group notice.
virtual const IContainer * getIContainerIntersectionSet() const =0
Return the const IContainer of the IntersectionSets.
virtual uint32 getFracNetworkPropertyNotice() const =0
Return the FracNetwork property notice.
virtual double calcPerc(const DExtent &, const IRange *r=0) const =0
Calculate the p20 for all factures regardless of the fracture network.
virtual const IDFNCluster * findClusterWithID(uint64 id) const =0
Find the const DFNCLuster with ID id;.
virtual void populatePropertySets(StringList *scalarProps, StringList *stringProps, StringList *vectorProps) const =0
Populates sets of property names based on their type.
virtual const IFracture * findFractureWithID(uint64 id, IFracNetwork *fn=0) const =0
Find the const IFracture with ID id;.
virtual uint32 getFracNetworkGeometryNotice() const =0
Return the FracNetwork geometry notice.
virtual ICellSpace * getFractureCellSpace()=0
Return an ICellSpace pointer to the FracNetwork cell space.
virtual TType getIntersectType() const =0
Return the Intersection TType.
virtual void eraseICluster(IDFNCluster *is)=0
Erase the IDFNCluster - could be of any type.
virtual IFracture * findLDFractureInBox(const DExtent &d, IFracNetwork *fn=0)=0
Find the Fracture with lowest dominance that intersects the box d. Can filter by the optional fractur...
virtual void populateAttributeSets(StringList *scalarAtts, StringList *stringAtts, StringList *vectorAtts) const =0
Populates sets of property names based on their type.
virtual prop_signal * getPropertySignal() const =0
Return the signal associated with the addition of a new property.
virtual const IFracture * findFractureClosestTo(const DVect &v, const double &radius=limits< double >::max()) const =0
Find the const FracNetwork closest to v.
virtual const IDFNTemplate * findTemplateWithID(uint64 id) const =0
find the const Template with the given id
virtual uint32 getInterSetExtraNotice() const =0
Return the InterSet extra notice.
virtual void eraseIFracNetwork(IFracNetwork *w)=0
Find the fracture with lowest dominance that intersects a general polygon. Can filter by the optional...
virtual uint32 getFracNetworkGroupNotice() const =0
Return the FracNetwork group notice.
virtual IDFNCluster * findClusterWithID(uint64 id)=0
Find the DFNCluster with ID id.
virtual void delineateIntersectionsDirty(IFracture *frac)=0
Delineate all of the intersections with this fracture.
virtual const IVertexDFN * findVertexWithID(uint64 id) const =0
Find the const IVertexDFN with ID id;.
virtual uint32 getInterSetGeometryNotice() const =0
Return the InterSet geometry notice.
virtual const IContainer * getIContainerTemplate() const =0
Return the const IContainer of the templates.
virtual void getIntersectList(FArray< IIntersect * > *ret, IFracNetwork *fn=0, IFracture *frac=0)=0
Get the intersection list.
virtual IFracture * findLDFractureClosestTo(const DVect &v, IFracNetwork *fn=0, const double &radius=limits< double >::max())=0
Find the const Fracture closest to v with lowest dominance.
virtual void getFractureInBoxList(const DExtent &d, FArray< const IFracture * > *ret, const IRange *r=0, bool intersect=true)=0
Get the list of fractures within a box.
virtual TType getFractureType() const =0
Return the Fracture TType.
virtual const IFracNetwork * findFracNetworkWithID(uint64 id) const =0
Find the const IFracNetwork with ID id;.
virtual IDFNTemplate * getTemplateOfDFN(IFracNetwork *fn=0)=0
find the template associated to the dfn
virtual void eraseIInterSet(IIntersectionSet *is)=0
Erase the IIntersectionSet - could be of any type.
virtual IContainer * getIContainerFracture()=0
Return the IContainer of the Fracture.
virtual const IContainer * getIContainerIntersects() const =0
Return the const IContainer of the Intersects.
virtual double calcP21(const DExtent &, const IRange *r=0) const =0
Calculate the p21 for all factures regardless of the fracture network.
virtual IContainer * getIContainerVertexDFN()=0
Return the IContainer of the VertexDFNs.
virtual IDFNTemplate * findTemplateWithID(uint64 id)=0
find the Template with the given id
virtual TType getContactType() const =0
Return the Contact TType.
virtual IContainer * getIContainerIntersects()=0
Return the IContainer of the Intersects.
virtual IFracNetwork * findFracNetworkWithName(const string &name)=0
Find the IFracNetwork with name name.
virtual double calcP10(const DVect &, const DVect &, const IRange *r=0) const =0
Calculate the p10 - works in 2D and 3D. This calculates the P10 for all fractures regardless of the f...
virtual void removeFracture(IFracture *frac)=0
Remove the fracture.
virtual IFracture * findFractureWithID(uint64 id, IFracNetwork *fn=0)=0
Find the IFracture with ID id.
virtual uint32 getFracNetworkIntersectNotice() const =0
Return the FracNetwork geometry notice.
virtual const IContainer * getIContainerFracture() const =0
Return the const IContainer of the Fracture.
virtual const IIntersectionSet * findInterSetWithID(uint64 id) const =0
Find the const IIntersectionSet with ID id;.
virtual uint32 getFracNetworkExtraNotice() const =0
Return the FracNetwork extra notice.
virtual const IDFNCluster * findClusterWithName(const string &name) const =0
Find the const DFNCLuster with name id;.
virtual IDFNTemplate * findTemplateWithName(const string &name)=0
find the Template with the given id
virtual IContainer * getIContainerCluster()=0
Return the IContainer of the IntersectionSets.
virtual IFracNetwork * findFracNetworkWithID(uint64 id)=0
Find the IFracNetwork with ID id.
virtual void validate()=0
Validate the fracture cell space if there is no cell space.
virtual IFracNetwork * getFirstIFracNetwork() const =0
Get the first fracture network.
virtual const IContainer * getIContainerCluster() const =0
Return the const IContainer of the dfncluster.
virtual void populateAttributeInterSets(StringList *scalarAtts, StringList *stringAtts, StringList *vectorAtts) const =0
Populates sets of attribute for intersection sets.
virtual double calcP10Geom(const IGeomSet *, const IRange *r=0) const =0
Calculate the p10 using a geometry set.
virtual IFracNetwork * createIFracNetwork(uint32 id=0, const string &name=string())=0
Create an empty IFracNetwork.
virtual const IFracNetwork * findFracNetworkWithName(const string &name) const =0
Find the const IFracNetwork with name name.
virtual const IDFNTemplate * findTemplateWithName(const string &name) const =0
find the const Template with the given name
virtual const IFracture * findAnyFractureClosestTo(const DVect &v, const double &radius=limits< double >::max(), const IRange *r=0) const =0
Find the const Fracture closest to v.
virtual double calcP20(const DExtent &, const IRange *r=0) const =0
Calculate the p21 for all factures regardless of the fracture network.
virtual const IDFNTemplate * getTemplateOfDFN(IFracNetwork *fn=0) const =0
find the const template associated to the dfn
virtual IIntersect * findIntersectWithID(uint64 id, IFracNetwork *fn=0)=0
Find the IIntersect with ID id.
virtual IContainer * getIContainerFracNetwork()=0
Return the IContainer of the FracNetworks.
virtual void getIntersectList(FArray< const IIntersect * > *ret, IFracNetwork *fn=0, IFracture *frac=0) const =0
Get the intersection list.
virtual TType getInterSetType() const =0
Return the FracNetwork TType.
virtual IIntersectionSet * findInterSetWithID(uint64 id)=0
Find the IIntersect with ID id.
virtual IContainer * getIContainerTemplate()=0
Return the IContainer of the templates.
virtual IFracture * findAnyFractureClosestTo(const DVect &v, const double &radius=limits< double >::max(), const IRange *r=0)=0
Find the Fracture closest to v.
virtual void removeIntersectsWithFracture(IFracture *frac)=0
Remove all the intersections with this fracture.
virtual void getFractureInBoxList(const DExtent &d, FArray< IFracture * > *ret, const IRange *r=0, bool intersect=true)=0
Get the list of fractures within a box.
virtual void getPathClusterList(FArray< IFracture * > *ret, IDFNCluster *cl=0, IFracture *f1=0, IFracture *f2=0) const =0
returns the path between two fractures
Definition ivertexdfn.h:16
Interface for containers of IThings.
Definition icontainer.h:21
Interface to a "refining" cell space.
Definition icellspace.h:24
A container for a single "set" of geometric elements. A geometric set is a named collection of geomet...
Definition igeomset.h:27
Interface to a filter, used as the main method for filtering objects.
Definition irange.h:31
debug checked shorthand for std::numeric_limits<T>::
Definition limit.h:25
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
namespace Itasca
Definition basememory.cpp:14
Itasca Library standard namespace, specific to 2D or 3D.
Definition icontactmodule.h:6