gstlearn
1.0.0
CCC
|
#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 |