Fesapi 2.9.0.1
This project provides C++ classes which allow an easy access in import and export to the Energistics standards.
Loading...
Searching...
No Matches
Public Member Functions | List of all members
resqml2::IjkGridLatticeRepresentation Class Referenceabstract

The main use case for this class is the representation of a seismic cubes. I is the fastest axis and K is the slowest axis. Notice that seismic domain will more likely use a vertical axis as the fastest one where a reservori domain will more likely use a vertical axis as the fastest one. More...

#include <IjkGridLatticeRepresentation.h>

Inheritance diagram for resqml2::IjkGridLatticeRepresentation:
resqml2::AbstractIjkGridRepresentation

Public Member Functions

virtual ~IjkGridLatticeRepresentation ()=default
 
bool isASeismicCube () const
 
bool isAFaciesCube () const
 
void getXyzPointsOfPatch (unsigned int patchIndex, double *xyzPoints) const final
 
virtual double getXOrigin () const =0
 
virtual double getYOrigin () const =0
 
virtual double getZOrigin () const =0
 
double getXOriginInGlobalCrs () const
 
double getYOriginInGlobalCrs () const
 
double getZOriginInGlobalCrs () const
 
virtual double getXIOffset () const =0
 
virtual double getYIOffset () const =0
 
virtual double getZIOffset () const =0
 
virtual double getXJOffset () const =0
 
virtual double getYJOffset () const =0
 
virtual double getZJOffset () const =0
 
virtual double getXKOffset () const =0
 
virtual double getYKOffset () const =0
 
virtual double getZKOffset () const =0
 
virtual double getISpacing () const =0
 
virtual double getJSpacing () const =0
 
virtual double getKSpacing () const =0
 
virtual int getOriginInline () const =0
 
virtual int getOriginCrossline () const =0
 
virtual int getInlineIOffset () const =0
 
virtual int getInlineJOffset () const =0
 
virtual int getInlineKOffset () const =0
 
virtual int getCrosslineIOffset () const =0
 
virtual int getCrosslineJOffset () const =0
 
virtual int getCrosslineKOffset () const =0
 
virtual void setGeometryAsCoordinateLineNodes (gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry, gsoap_resqml2_0_1::resqml20__KDirection kDirectionKind, bool isRightHanded, double originX, double originY, double originZ, double directionIX, double directionIY, double directionIZ, double spacingI, double directionJX, double directionJY, double directionJZ, double spacingJ, double directionKX, double directionKY, double directionKZ, double spacingK, resqml2 ::AbstractLocal3dCrs *localCrs=nullptr)=0
 
virtual void addSeismic3dCoordinatesToPatch (unsigned int patchIndex, double startInline, double incrInline, unsigned int countInline, double startCrossline, double incrCrossline, unsigned int countCrossline, unsigned int countSample, resqml2 ::AbstractRepresentation *seismicSupport)=0
 
geometryKind getGeometryKind () const final
 
- Public Member Functions inherited from resqml2::AbstractIjkGridRepresentation
 AbstractIjkGridRepresentation (common ::DataObjectRepository *repo, const std::string &guid, const std::string &title, unsigned int iCount, unsigned int jCount, unsigned int kCount, bool *kGaps=nullptr, eml2 ::AbstractHdfProxy *proxy=nullptr)
 
 AbstractIjkGridRepresentation (resqml2 ::AbstractFeatureInterpretation *interp, const std::string &guid, const std::string &title, unsigned int iCount, unsigned int jCount, unsigned int kCount, bool *kGaps=nullptr, eml2 ::AbstractHdfProxy *proxy=nullptr)
 
 AbstractIjkGridRepresentation (gsoap_resqml2_0_1::eml20__DataObjectReference *partialObject, bool withTruncatedPillars=false)
 
virtual ~AbstractIjkGridRepresentation ()
 
unsigned int getICellCount () const
 
void setICellCount (unsigned int iCount)
 
unsigned int getJCellCount () const
 
void setJCellCount (unsigned int jCount)
 Sets the count of cells in the J direction.
 
uint64_t getCellCount () const final
 
unsigned int getColumnCount () const
 
unsigned int getPillarCount () const
 
uint64_t getKGapsCount () const
 
void getKGaps (bool *kGaps) const
 
uint64_t getFaceCount () const
 
unsigned int getIPillarFromGlobalIndex (unsigned int globalIndex) const
 
unsigned int getJPillarFromGlobalIndex (unsigned int globalIndex) const
 
unsigned int getGlobalIndexPillarFromIjIndex (unsigned int iPillar, unsigned int jPillar) const
 
unsigned int getIColumnFromGlobalIndex (unsigned int globalIndex) const
 
unsigned int getJColumnFromGlobalIndex (unsigned int globalIndex) const
 
unsigned int getGlobalIndexColumnFromIjIndex (unsigned int iColumn, unsigned int jColumn) const
 
unsigned int getGlobalIndexCellFromIjkIndex (unsigned int iCell, unsigned int jCell, unsigned int kCell) const
 
bool isRightHanded () const
 
void getPillarsOfSplitCoordinateLines (unsigned int *pillarIndices, bool reverseIAxis=false, bool reverseJAxis=false) const
 
void getColumnsOfSplitCoordinateLines (unsigned int *columnIndices, bool reverseIAxis=false, bool reverseJAxis=false) const
 
void getColumnCountOfSplitCoordinateLines (unsigned int *columnIndexCountPerSplitCoordinateLine) const
 
uint64_t getSplitCoordinateLineCount () const
 
uint64_t getBlockSplitCoordinateLineCount () const
 
uint64_t getSplitNodeCount () const
 
void getPillarGeometryIsDefined (bool *pillarGeometryIsDefined, bool reverseIAxis=false, bool reverseJAxis=false) const
 
bool hasCellGeometryIsDefinedFlags () const
 
void getCellGeometryIsDefinedFlags (bool *cellGeometryIsDefinedFlags, bool reverseIAxis=false, bool reverseJAxis=false, bool reverseKAxis=false) const
 
void setCellGeometryIsDefinedFlags (uint8_t *cellGeometryIsDefinedFlags, eml2 ::AbstractHdfProxy *proxy=nullptr)
 
void setAllCellGeometryFlagsToDefined ()
 
void loadSplitInformation ()
 
void loadBlockInformation (unsigned int iInterfaceStart, unsigned int iInterfaceEnd, unsigned int jInterfaceStart, unsigned int jInterfaceEnd, unsigned int kInterfaceStart, unsigned int kInterfaceEnd)
 
void unloadSplitInformation ()
 
bool isColumnEdgeSplitted (unsigned int iColumn, unsigned int jColumn, unsigned int edge) const
 Checks either a given column edge is splitted or not. This method requires that you have already loaded the split information.
 
uint64_t getXyzPointIndexFromCellCorner (unsigned int iCell, unsigned int jCell, unsigned int kCell, unsigned int corner) const
 Gets the XYZ point index in the HDF dataset from the corner of a cell. This method requires that you have already loaded the split information.
 
void getXyzPointOfBlockFromCellCorner (unsigned int iCell, unsigned int jCell, unsigned int kCell, unsigned int corner, const double *xyzPoints, double &x, double &y, double &z) const
 Gets the x, y and z values of the corner of a cell of a given block. This method requires that you have already both loaded the block information and get the geometry of the block thanks to getXyzPointsOfBlock().
 
uint64_t getXyzPointCountOfKInterface () const
 
uint64_t getXyzPointCountOfBlock () const
 
void getXyzPointsOfKInterface (unsigned int kInterface, double *xyzPoints)
 
virtual void getXyzPointsOfKInterfaceSequence (unsigned int kInterfaceStart, unsigned int kInterfaceEnd, double *xyzPoints)
 Gets all the XYZ points of a particular sequence of K interfaces. XYZ points are given in the local CRS.
 
virtual void getXyzPointsOfBlock (double *xyzPoints)
 Gets all the XYZ points of the current block. XYZ points are given in the local CRS. Block information must be loaded.
 
virtual bool isNodeGeometryCompressed () const
 
gsoap_resqml2_0_1::resqml20__KDirection getKDirection () const override
 
virtual common::DataObjectReference getHdfProxyDor () const override
 
virtual uint64_t getXyzPointCountOfPatch (unsigned int patchIndex) const override
 
std::string getXmlTag () const final
 
uint64_t getPatchCount () const override
 
virtual std::string getXmlNamespace () const override
 

Additional Inherited Members

- Public Types inherited from resqml2::AbstractIjkGridRepresentation
enum class  geometryKind {
  UNKNOWN = 0 , EXPLICIT = 1 , PARAMETRIC = 2 , LATTICE = 3 ,
  NO_GEOMETRY = 4
}
 
- Static Public Attributes inherited from resqml2::AbstractIjkGridRepresentation
static constexpr char const * XML_TAG = "IjkGridRepresentation"
 
static constexpr char const * XML_TAG_TRUNCATED = "TruncatedIjkGridRepresentation"
 

Detailed Description

The main use case for this class is the representation of a seismic cubes. I is the fastest axis and K is the slowest axis. Notice that seismic domain will more likely use a vertical axis as the fastest one where a reservori domain will more likely use a vertical axis as the fastest one.

Constructor & Destructor Documentation

◆ ~IjkGridLatticeRepresentation()

virtual resqml2::IjkGridLatticeRepresentation::~IjkGridLatticeRepresentation ( )
virtualdefault

Destructor does nothing since the memory is managed by the gSOAP context.

Member Function Documentation

◆ addSeismic3dCoordinatesToPatch()

virtual void resqml2::IjkGridLatticeRepresentation::addSeismic3dCoordinatesToPatch ( unsigned int patchIndex,
double startInline,
double incrInline,
unsigned int countInline,
double startCrossline,
double incrCrossline,
unsigned int countCrossline,
unsigned int countSample,
resqml2 ::AbstractRepresentation * seismicSupport )
pure virtual

Pushes back a patch of seismic 3D coordinates.

Exceptions
std::logic_errorIf this grid is partial.
std::invalid_argumentIf patchIndex does not identify a point geometry.
std:invalid_argumentIf seismicSupport is nullptr.
std::invalid_argumentIf it already exists some seismic 2d coordinates for this patch.
Parameters
patchIndexZero-based index of the patch to push. It must be consistent with the index of the geometry patch it is related to.
startInlineThe start inline.
incrInlineThe inline increment.
countInlineThe count of inlines.
startCrosslineThe start crossline.
incrCrosslineThe crossline increment.
countCrosslineThe count of crosslines.
countSampleThe count of samples.
[in]seismicSupportThe seismic support of the patch to push.

◆ getCrosslineIOffset()

virtual int resqml2::IjkGridLatticeRepresentation::getCrosslineIOffset ( ) const
pure virtual

Gets the crossline I offset value.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The crossline I offset value if successful, otherwise 0.

◆ getCrosslineJOffset()

virtual int resqml2::IjkGridLatticeRepresentation::getCrosslineJOffset ( ) const
pure virtual

Gets the crossline J offset value.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The crossline J offset value if successful, otherwise 0.

◆ getCrosslineKOffset()

virtual int resqml2::IjkGridLatticeRepresentation::getCrosslineKOffset ( ) const
pure virtual

Gets the crossline K offset value.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The crossline K offset value if successful, otherwise 0.

◆ getGeometryKind()

geometryKind resqml2::IjkGridLatticeRepresentation::getGeometryKind ( ) const
finalvirtual

Gets the geometry kind of this IJK grid.

Returns
The geometry kind of this IJK grid.

Reimplemented from resqml2::AbstractIjkGridRepresentation.

◆ getInlineIOffset()

virtual int resqml2::IjkGridLatticeRepresentation::getInlineIOffset ( ) const
pure virtual

Gets the inline I offset value.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The inline I offset value if successful, otherwise 0.

◆ getInlineJOffset()

virtual int resqml2::IjkGridLatticeRepresentation::getInlineJOffset ( ) const
pure virtual

Gets the inline J offset value.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The inline J offset value if successful, otherwise 0.

◆ getInlineKOffset()

virtual int resqml2::IjkGridLatticeRepresentation::getInlineKOffset ( ) const
pure virtual

Gets the inline K offset value.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The inline K offset value if successful, otherwise 0.

◆ getISpacing()

virtual double resqml2::IjkGridLatticeRepresentation::getISpacing ( ) const
pure virtual

Gets the I spacing of this regular (seismic) grid. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The I spacing if successful, otherwise double.NAN.

◆ getJSpacing()

virtual double resqml2::IjkGridLatticeRepresentation::getJSpacing ( ) const
pure virtual

Gets the J spacing of this regular (seismic) grid. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The J spacing if successful, otherwise double.NAN.

◆ getKSpacing()

virtual double resqml2::IjkGridLatticeRepresentation::getKSpacing ( ) const
pure virtual

Gets the K spacing of this regular (seismic) grid. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The K spacing if successful, otherwise double.NAN.

◆ getOriginCrossline()

virtual int resqml2::IjkGridLatticeRepresentation::getOriginCrossline ( ) const
pure virtual

Gets the label of the first crossline.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The label of the first crossline if successful, otherwise 0.

◆ getOriginInline()

virtual int resqml2::IjkGridLatticeRepresentation::getOriginInline ( ) const
pure virtual

Gets the label of the first inline.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The label of the first inline if successful, otherwise 0.

◆ getXIOffset()

virtual double resqml2::IjkGridLatticeRepresentation::getXIOffset ( ) const
pure virtual

Gets the X coordinate of the I offset of this geometry. The X coordinate is given in the local CRS. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The X coordinate of the I offset if successful, otherwise double.NAN.

◆ getXJOffset()

virtual double resqml2::IjkGridLatticeRepresentation::getXJOffset ( ) const
pure virtual

Gets the X coordinate of the J offset of this geometry. The X coordinate is given in the local CRS. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The X coordinate of the J offset if successful, otherwise double.NAN.

◆ getXKOffset()

virtual double resqml2::IjkGridLatticeRepresentation::getXKOffset ( ) const
pure virtual

Gets the X coordinate of the K offset of this geometry. The X coordinate is given in the local CRS. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The X coordinate of the K offset if successful, otherwise double.NAN.

◆ getXOrigin()

virtual double resqml2::IjkGridLatticeRepresentation::getXOrigin ( ) const
pure virtual

Gets the X coordinate of the origin of this geometry. The X coordinate is given in the local CRS.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The X coordinate of the origin point if successful, otherwise double.NAN.

◆ getXOriginInGlobalCrs()

double resqml2::IjkGridLatticeRepresentation::getXOriginInGlobalCrs ( ) const

Gets the X coordinate origin of this geometry. The X coordinate is given in the global CRS.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The X coordinate of the origin point if successful, otherwise double.NAN.

◆ getXyzPointsOfPatch()

void resqml2::IjkGridLatticeRepresentation::getXyzPointsOfPatch ( unsigned int patchIndex,
double * xyzPoints ) const
finalvirtual

Please do note use: not implemented yet. Please use lattice information.

Reimplemented from resqml2::AbstractIjkGridRepresentation.

◆ getYIOffset()

virtual double resqml2::IjkGridLatticeRepresentation::getYIOffset ( ) const
pure virtual

Gets the Y coordinate of the I offset of this geometry. The Y coordinate is given in the local CRS. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Y coordinate of the I offset if successful, otherwise double.NAN.

◆ getYJOffset()

virtual double resqml2::IjkGridLatticeRepresentation::getYJOffset ( ) const
pure virtual

Gets the Y coordinate of the J offset of this geometry. The Y coordinate is given in the local CRS. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Y coordinate of the J offset if successful, otherwise double.NAN.

◆ getYKOffset()

virtual double resqml2::IjkGridLatticeRepresentation::getYKOffset ( ) const
pure virtual

Gets the Y coordinate of the K offset of this geometry. The Y coordinate is given in the local CRS. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Y coordinate of the K offset if successful, otherwise double.NAN.

◆ getYOrigin()

virtual double resqml2::IjkGridLatticeRepresentation::getYOrigin ( ) const
pure virtual

Gets the Y coordinate of the origin of this geometry. The Y coordinate is given in the local CRS.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Y coordinate of the origin point if successful, otherwise double.NAN.

◆ getYOriginInGlobalCrs()

double resqml2::IjkGridLatticeRepresentation::getYOriginInGlobalCrs ( ) const

Gets the Y coordinate origin of this geometry. The Y coordinate is given in the global CRS.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Y coordinate of the origin point if successful, otherwise double.NAN.

◆ getZIOffset()

virtual double resqml2::IjkGridLatticeRepresentation::getZIOffset ( ) const
pure virtual

Gets the Z coordinate of the I offset of this geometry. The Z coordinate is given in the local CRS. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Z coordinate of the I offset if successful, otherwise double.NAN.

◆ getZJOffset()

virtual double resqml2::IjkGridLatticeRepresentation::getZJOffset ( ) const
pure virtual

Gets the Z coordinate of the J offset of this geometry. The Z coordinate is given in the local CRS. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Z coordinate of the J offset if successful, otherwise double.NAN.

◆ getZKOffset()

virtual double resqml2::IjkGridLatticeRepresentation::getZKOffset ( ) const
pure virtual

Gets the Z coordinate of the K offset of this geometry. The Z coordinate is given in the local CRS. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Z coordinate of the K offset if successful, otherwise double.NAN.

◆ getZOrigin()

virtual double resqml2::IjkGridLatticeRepresentation::getZOrigin ( ) const
pure virtual

Gets the Z coordinate of the origin of this geometry. The Z coordinate is given in the local CRS.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Z coordinate of the origin point if successful, otherwise double.NAN.

◆ getZOriginInGlobalCrs()

double resqml2::IjkGridLatticeRepresentation::getZOriginInGlobalCrs ( ) const

Gets the Z coordinate origin of this geometry. The Z coordinate is given in the global CRS.

Exceptions
std::logic_errorIf this grid is partial.
Returns
The Z coordinate of the origin point if successful, otherwise double.NAN.

◆ isAFaciesCube()

bool resqml2::IjkGridLatticeRepresentation::isAFaciesCube ( ) const

Indicates whether this instance corresponds to a facies cube or not.

Returns
True if it is a facies cube, false if not.

◆ isASeismicCube()

bool resqml2::IjkGridLatticeRepresentation::isASeismicCube ( ) const

Indicates whether this instance corresponds to a seismic cube or not.

Returns
True if it is a seismic cube, false if not.

◆ setGeometryAsCoordinateLineNodes()

virtual void resqml2::IjkGridLatticeRepresentation::setGeometryAsCoordinateLineNodes ( gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry,
gsoap_resqml2_0_1::resqml20__KDirection kDirectionKind,
bool isRightHanded,
double originX,
double originY,
double originZ,
double directionIX,
double directionIY,
double directionIZ,
double spacingI,
double directionJX,
double directionJY,
double directionJZ,
double spacingJ,
double directionKX,
double directionKY,
double directionKZ,
double spacingK,
resqml2 ::AbstractLocal3dCrs * localCrs = nullptr )
pure virtual

Sets the geometry of this IJK grid as a regular IJK grid. I axis is fastest one in memory, whatever its direction is. K axis is fastest one in memory, whatever its direction is.

Exceptions
std::invalid_argumentIf localCrs is nullptr and no default local 3d CRS is defined.
Parameters
mostComplexPillarGeometryThe most complex pillar shape which we can find on this IJK grid.
kDirectionKindThe K direction kind.
isRightHandedIndicates that the IJK grid is right handed, as determined by the triple product of tangent vectors in the I, J, and K directions.
originXThe X coordinate of the origin.
originYThe Y coordinate of the origin.
originZThe Z coordinate of the origin.
directionIXThe X coordinate of the I offset.
directionIYThe Y coordinate of the I offset.
directionIZThe Z coordinate of the I offset.
spacingIThe spacing in the I direction.
directionJXThe X coordinate of the J offset.
directionJYThe Y coordinate of the J offset.
directionJZThe Z coordinate of the J offset.
spacingJThe spacing in the J direction.
directionKXThe X coordinate of the K offset.
directionKYThe Y coordinate of the K offset.
directionKZThe Z coordinate of the K offset.
spacingKThe spacing in the K direction.
[in]localCrs(Optional) The local CRS where the points are given. If nullptr (default) then the default CRS of the repository will be used.

The documentation for this class was generated from the following file: