|
gstlearn
0.2.1
Geostatistics & Machine Learning toolbox
|
#include <FracList.hpp>
Public Member Functions | |
| FracList (int ndisc=1000, bool flag_check=true, double low0=EPSILON8, double low1=EPSILON6, double eps=EPSILON3) | |
| FracList (const FracList &r) | |
| FracList & | operator= (const FracList &r) |
| virtual | ~FracList () |
| virtual String | toString (const AStringFormat *strfmt=nullptr) const override |
| Interface for AStringable. More... | |
| int | getNFracs () const |
| int | simulate (const FracEnviron &envir, bool flag_sim_layer, bool flag_sim_fract, int seed, bool verbose, const VectorDouble &elevations=VectorDouble()) |
| void | addDescription (const FracDesc &description=FracDesc()) |
| MatrixRectangular | fractureExport () const |
| MatrixRectangular | layinfoExport () const |
| int | fractureToBlock (DbGrid *dbgrid, double xmax, VectorDouble &permtab, double perm_mat, double perm_bench, int ndisc=1000., const NamingConvention &namconv=NamingConvention("Fractures")) |
| VectorDouble | fractureToWell (int nval, const VectorDouble &well, double xmax, const VectorDouble &permtab, int *nint, int *ncol) |
| int | fractureWellToBlock (DbGrid *dbgrid, int col_perm, int col_fluid, int flag_fluid, double val_fluid, const VectorDouble &wellout, int nval, int ndisc=1000., bool verbose=false) |
| VectorDouble | fractureExtractLength (int ifam, double cote, double dcote) |
| VectorDouble | fractureExtractDist (int ifam, double cote, double dcote) |
| void | setFamily (int i, int ifam) |
| void | setOrient (int i, double orient) |
| void | addPoint (int i, double xx, double yy) |
Public Member Functions inherited from AStringable | |
| AStringable () | |
| AStringable (const AStringable &r) | |
| AStringable & | operator= (const AStringable &r) |
| virtual | ~AStringable () |
| virtual void | display (const AStringFormat *strfmt=nullptr) const final |
| virtual void | display (int level) const final |
Static Public Member Functions | |
| static FracList * | fractureImport (const VectorDouble &frac_segs, const VectorDouble &layinfo=VectorDouble(), int nfamilies=0) |
Private Member Functions | |
| int | _getRank (int ifam, int shift) const |
| void | _setMemLayer (int i, double value) |
| void | _setMemTheta1 (int i, int ifam, double value) |
| void | _setMemTheta2 (int i, int ifam, double value) |
| void | _setMemPropsur (int i, int ifam, double value) |
| void | _setMemFrac (int i, int ifam, double value) |
| void | _setMemTotal (int i, int ifam, double value) |
| double | _getMemLayer (int i) |
| VectorDouble | _layersManage (const FracEnviron &envir, double *y0) |
| VectorDouble | _layersRead (const VectorDouble &elevations, double *y0) |
| int | _fracAdd (int ifrac, int ifam, double xx, double cote, double thick, double orient, double *xp) |
| void | _checkFractureIntersect (double cote, int ifrac0) |
| bool | _belongToLayer (const FracDesc &desc, double cote, double *xd, double *yd, double *xe, double *ye) |
| double | _layerIntensity (const FracFamily &family, double thick) |
| void | _generateDensity (const FracEnviron &envir, const FracFamily &family, int ifam, double cote, VectorDouble &denstab) |
| void | _correctDensity (const FracFamily &family, int ifam, double cote, VectorDouble &denstab) |
| double | _deriveIntensity (double theta1, double thetap, double propsur) |
| double | _extendFractures (const FracFamily &family, int ifam, double cote, double thick, VectorDouble &denstab) |
| bool | _sameFaultSide (const FracEnviron &envir, int ifault0, double x0) |
| double | _densityUpdate (const FracFault &fault, int side, int ifam, double cote, double xx) |
| double | _densityCumulate (const VectorDouble &denstab) |
| bool | _noRoomForMoreFracture (const VectorDouble &denstab) const |
| void | _updateRepulsion (double x0, double range, VectorDouble &denstab) |
| bool | _fractureInterrupt (const FracFamily &family, const FracDesc &desc, double thick) |
| double | _faultAbscissae (const FracFault &fault, double cote) |
| double | _cubic (double h) |
| double | _fractureExtension (const FracDesc &desc, double cote, double dcote) |
| int | _simulateFractures (const FracEnviron &envir, const FracFamily &family, int ifam, double cote, double thick, double theta, VectorDouble &denstab) |
| int | _getDiscretizedRank (double cumdens, const VectorDouble &denstab) |
| int | _getEndPointCount () const |
| bool | _isValidDisc (int idisc) |
| void | _plungeSegment (DbGrid *dbgrid, int iptr, double delta, double value, double x1, double y1, double x2, double y2) |
| void | _welloutAdd (VectorDouble &wellout, double x, double y, int ifrac, int ip, int family, double perm) |
| void | _trajAdd (VectorDouble &traj, double x, double y) |
| void | _plungeSegmentGradual (DbGrid *dbgrid, int iptr, double delta, VectorDouble &traj, double perm1, double perm2, double range) |
Private Attributes | |
| std::vector< FracDesc > | _descs |
| MatrixRectangular | _layinfo |
| int | _nlayers |
| int | _ndisc |
| bool | _flagCheck |
| double | _low0 |
| double | _low1 |
| double | _xorigin |
| double | _step |
| double | _eps |
| bool | _verbose |
| FracList::FracList | ( | int | ndisc = 1000, |
| bool | flag_check = true, |
||
| double | low0 = EPSILON8, |
||
| double | low1 = EPSILON6, |
||
| double | eps = EPSILON3 |
||
| ) |
| FracList::FracList | ( | const FracList & | r | ) |
|
virtual |
|
private |
Search for the segment of a fracture belonging to the current layer
| [in] | desc | Description structure |
| [in] | cote | Ordinate of the fracture starting point |
| [in] | xd | Abscissae of the first end-point |
| [in] | yd | Ordinate of the first end-point |
| [in] | xe | Abscissae of the second end-point |
| [in] | ye | Ordinate of the second end-point |
|
private |
Check fracture against the other ones and possibly intersect the current one
| [in] | cote | Ordinate of the fracture starting point |
| [in] | ifrac0 | Rank of the current fracture |
|
private |
Correct density due to fractures of previous families (if any)
| [in] | family | Family structure |
| [in] | ifam | Rank of the family |
| [in] | cote | Ordinate of the fracture starting point |
| [in] | denstab | Discretization density array |
|
private |
Calculate the attenuation according to a cubic covariance shape
| [in] | h | Normalized distance |
|
private |
Calculate the cumulated density
| [in] | denstab | Discretized density array |
|
private |
Project the contribution of a density attached to a fault
| [in] | fault | Fault structure |
| [in] | side | -1 for left and +1 for right |
| [in] | ifam | Rank of the family |
| [in] | cote | Ordinate of the fracture starting point |
| [in] | xx | Discretization abscissae |
|
private |
Derive the intensity of the current layer given the survival
| [in] | theta1 | Apparent layer intensity |
| [in] | thetap | Intensity of the previous layer |
| [in] | propsur | Actual survival proportion |
|
private |
Extend already existing fractures
| [in] | family | Family structure |
| [in] | ifam | Rank of the family |
| [in] | cote | Ordinate of the fracture starting point |
| [in] | thick | Thickness of the layer |
| [in] | denstab | Discretization density array |
|
private |
Calculate the abscissae of a fault at a given elevation
| [in] | fault | Fault structure |
| [in] | cote | Ordinate of the fracture starting point |
|
private |
Add a fracture
| [in] | ifrac | Rank of the fracture (if old) or -1 for a new one |
| [in] | ifam | Rank of the family |
| [in] | xx | Abscissae of the starting point |
| [in] | cote | Ordinate of the fracture starting point |
| [in] | thick | Thickness of the layer |
| [in] | orient | Orientation |
| [out] | xp | Abscissae of the ending point |
|
private |
Calculate the fracture extension
| [in] | desc | Current fracture description |
| [in] | cote | Selected layer or TEST for all layers |
| [in] | dcote | Tolerance on the layer elevation |
|
private |
Check if the fracture must be interrupted
| [in] | family | Family structure |
| [in] | desc | Current fracture description |
| [in] | thick | Thickness of the current layer |
|
private |
Generate the density along the scene
| [in] | envir | Environ structure |
| [in] | family | Family structure |
| [in] | ifam | Rank of the family |
| [in] | cote | Ordinate of the fracture starting point |
| [out] | denstab | Discretization density array |
|
private |
Get the rank of the discretized cell
| [in] | cumdens | Target cumulated density |
| [in] | denstab | Discretized density array |
|
private |
|
inlineprivate |
|
inlineprivate |
|
private |
|
private |
Derive the intensity of the current layer
| [in] | family | Family structure |
| [in] | thick | Layer thickness |
|
private |
Generate the series of layers
| [in] | envir | Pointer to the Environ structure |
| [in] | y0 | Ordinate of the origin |
|
private |
Read the series of layers
| [in] | elevations | Array of elevations to be read |
| [out] | y0 | Ordinate of the origin |
|
private |
Calculate the cumulated density
| [in] | denstab | Discretized density array |
|
private |
Plunge a segment in a block Db
| [in] | dbgrid | Db structure |
| [in] | iptr | Pointer to the Perm variable |
| [in] | delta | Increment |
| [in] | value | Value assigned to the fracture segment |
| [in] | x1 | First coordinate of the first point |
| [in] | y1 | Second coordinate of the first point |
| [in] | x2 | First coordinate of the second point |
| [in] | y2 | Second coordinate of the second point |
|
private |
Plunge a segment painted with gradually changing permeability in a block Db
| [in] | dbgrid | Db structure |
| [in] | iptr | Pointer to the Perm variable |
| [in] | delta | Increment |
| [in] | traj | Vector describing the trajectory |
| [in] | perm1 | Permeability at origin of curvilinear distance |
| [in] | perm2 | Permeability at range of curvilinear distance |
| [in] | range | Range of the permeability change |
|
private |
Check that the current discretization point is not separated from the current fault by other main faults
| [in] | envir | Environ structure |
| [in] | ifault0 | Rank of the target fault |
| [in] | x0 | Location of the discretized point |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
private |
Simulate the fractures
| [in] | envir | Environ structure |
| [in] | family | Family structure |
| [in] | ifam | Rank of the family |
| [in] | cote | Ordinate of the fracture starting point |
| [in] | thick | Thickness of the layer |
| [in] | theta | Intensity of the layer |
| [in] | denstab | Discretized density array F |
|
private |
Add a sample to the trajectory
| [in] | traj | Array for storing the trajectory |
| [in] | x | First coordinate |
| [in] | y | Second coordinate |
|
private |
Update the discretized intensity array to account for repulsion
| [in] | x0 | Abscissae of the fracture |
| [in] | range | Range for the repulsion |
| [in,out] | denstab | Discretized density array |
|
private |
Add an end point to the wellout array
| [in] | wellout | Array provided as input |
| [in] | x | Ascissae of the intersection |
| [in] | y | Ordinate of the intersection |
| [in] | ifrac | Rank of the fracture (starting from 1) |
| [in] | ip | Rank of the segment (starting from 1) |
| [in] | family | Family to which the fracture belongs |
| [in] | perm | Assigned permeability or TEST |
|
inline |
| MatrixRectangular FracList::fractureExport | ( | ) | const |
Export the Fractures
| VectorDouble FracList::fractureExtractDist | ( | int | ifam, |
| double | cote, | ||
| double | dcote | ||
| ) |
Extract the fracture interdistances
| [in] | ifam | Rank of the family or ITEST for all |
| [in] | cote | Selected layer or TEST for all layers |
| [in] | dcote | Tolerance on the layer elevation |
| VectorDouble FracList::fractureExtractLength | ( | int | ifam, |
| double | cote, | ||
| double | dcote | ||
| ) |
Extract the array of fracture lengths
| [in] | ifam | Rank of the family or ITEST for all |
| [in] | cote | Selected layer or TEST for all layers |
| [in] | dcote | Tolerance on the layer elevation |
|
static |
| int FracList::fractureToBlock | ( | DbGrid * | dbgrid, |
| double | xmax, | ||
| VectorDouble & | permtab, | ||
| double | perm_mat, | ||
| double | perm_bench, | ||
| int | ndisc = 1000., |
||
| const NamingConvention & | namconv = NamingConvention("Fractures") |
||
| ) |
Plunge a subset of the simulated fractures into a block
| [in,out] | dbgrid | Db structure |
| [in] | xmax | Maximum extension along horizontal axis |
| [in] | permtab | Permabilities per family (starting from 0) |
| [in] | perm_mat | Permability for the matrix |
| [in] | perm_bench | Permability along the bench edge |
| [in] | ndisc | Number of discretization steps |
| [in] | namconv | Naming convention |
| VectorDouble FracList::fractureToWell | ( | int | nval, |
| const VectorDouble & | well, | ||
| double | xmax, | ||
| const VectorDouble & | permtab, | ||
| int * | nint, | ||
| int * | ncol | ||
| ) |
Plunge a well line in a set of fractures
| [in] | nval | Number of well information |
| [in] | well | Array giving the well trajectory |
| [in] | xmax | Maximum extension along horizontal axis |
| [in] | permtab | Permabilities per family (starting from 0) Optional |
| [out] | nint | Number of intersections |
| [out] | ncol | Number of attributes per intersection |
| int FracList::fractureWellToBlock | ( | DbGrid * | dbgrid, |
| int | col_perm, | ||
| int | col_fluid, | ||
| int | flag_fluid, | ||
| double | val_fluid, | ||
| const VectorDouble & | wellout, | ||
| int | nval, | ||
| int | ndisc = 1000., |
||
| bool | verbose = false |
||
| ) |
Plunge a line trajectory and the modified permeabilities within an existing block
| [in,out] | dbgrid | Db structure |
| [in] | col_perm | Existing attribute for permeability (or ITEST) |
| [in] | col_fluid | Existing attribute for fluid (or ITEST) |
| [in] | flag_fluid | 1 for performing the Fluid filling |
| [in] | val_fluid | Value assigned to the fluid |
| [in] | wellout | Pointer to the new wellout information |
| [in] | nval | Number of values for wellout informations |
| [in] | ndisc | Number of discretization steps |
| [in] | verbose | Verbose flag |
|
inline |
|
inline |
|
inline |
|
inline |
| int FracList::simulate | ( | const FracEnviron & | envir, |
| bool | flag_sim_layer, | ||
| bool | flag_sim_fract, | ||
| int | seed, | ||
| bool | verbose, | ||
| const VectorDouble & | elevations = VectorDouble() |
||
| ) |
Simulate a set of fractures
| [in] | envir | Environ structure |
| [in] | flag_sim_layer | TRUE for simulating layers FALSE if they are read |
| [in] | flag_sim_fract | TRUE for simulating the fractures FALSE establish the layers and the main faults |
| [in] | elevations | Array of elevations (used if flag_sim_layer=F) |
| [in] | seed | Seed for the random number generator |
| [in] | verbose | Verbose option |
|
overridevirtual |
Interface for AStringable.
Reimplemented from AStringable.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |