Fesapi 2.13.0.0
This project provides C++ classes which allow an easy access in import and export to the Energistics standards.
Loading...
Searching...
No Matches
AbstractGridRepresentation.h
1/*-----------------------------------------------------------------------
2Licensed to the Apache Software Foundation (ASF) under one
3or more contributor license agreements. See the NOTICE file
4distributed with this work for additional information
5regarding copyright ownership. The ASF licenses this file
6to you under the Apache License, Version 2.0 (the
7"License"; you may not use this file except in compliance
8with the License. You may obtain a copy of the License at
9
10 http://www.apache.org/licenses/LICENSE-2.0
11
12Unless required by applicable law or agreed to in writing,
13software distributed under the License is distributed on an
14"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15KIND, either express or implied. See the License for the
16specific language governing permissions and limitations
17under the License.
18-----------------------------------------------------------------------*/
19#pragma once
20
21#include "AbstractRepresentation.h"
22
23namespace RESQML2_NS
24{
26 class AbstractGridRepresentation : public AbstractRepresentation
27 {
28 public:
29
31 virtual ~AbstractGridRepresentation() = default;
32
38 DLL_IMPORT_OR_EXPORT virtual uint64_t getCellCount() const = 0;
39
40 //************************************************************
41 //****************** GRID CONNECTION SET *********************
42 //************************************************************
43
49 DLL_IMPORT_OR_EXPORT std::vector<class GridConnectionSetRepresentation*> getGridConnectionSetRepresentationSet() const;
50
56 DLL_IMPORT_OR_EXPORT uint64_t getGridConnectionSetRepresentationCount() const; // It is mainly used in SWIG context for parsing the vector from a non C++ language.
57
67 DLL_IMPORT_OR_EXPORT class GridConnectionSetRepresentation * getGridConnectionSetRepresentation(uint64_t index) const; // It is mainly used in SWIG context for parsing the vector from a non C++ language.
68
69
70 //************************************************************
71 //******************** GRID PARENTAGE ************************
72 //************************************************************
73
83 DLL_IMPORT_OR_EXPORT AbstractGridRepresentation* getParentGrid() const;
84
95 COMMON_NS::DataObjectReference getParentGridDor() const;
96
102 DLL_IMPORT_OR_EXPORT std::vector<RESQML2_NS::AbstractGridRepresentation *> getChildGridSet() const;
103
109 DLL_IMPORT_OR_EXPORT uint64_t getChildGridCount() const;
110
120 DLL_IMPORT_OR_EXPORT AbstractGridRepresentation * getChildGrid(uint64_t index) const;
121
142 DLL_IMPORT_OR_EXPORT void setParentWindow(uint64_t* cellIndices, uint64_t cellIndexCount, class UnstructuredGridRepresentation* parentGrid, EML2_NS::AbstractHdfProxy* proxy = nullptr);
143
187 DLL_IMPORT_OR_EXPORT void setParentWindow(unsigned int * columnIndices, uint64_t columnIndexCount,
188 unsigned int kLayerIndexRegridStart,
189 unsigned int * childCellCountPerInterval, unsigned int * parentCellCountPerInterval, uint64_t intervalCount,
191 EML2_NS::AbstractHdfProxy * proxy = nullptr, double * childCellWeights = nullptr);
192
267 DLL_IMPORT_OR_EXPORT void setParentWindow(
268 unsigned int iCellIndexRegridStart, unsigned int * childCellCountPerIInterval, unsigned int * parentCellCountPerIInterval, uint64_t iIntervalCount,
269 unsigned int jCellIndexRegridStart, unsigned int * childCellCountPerJInterval, unsigned int * parentCellCountPerJInterval, uint64_t jIntervalCount,
270 unsigned int kCellIndexRegridStart, unsigned int * childCellCountPerKInterval, unsigned int * parentCellCountPerKInterval, uint64_t kIntervalCount,
271 class AbstractIjkGridRepresentation* parentGrid, EML2_NS::AbstractHdfProxy * proxy = nullptr, double * iChildCellWeights = nullptr, double * jChildCellWeights = nullptr, double * kChildCellWeights = nullptr);
272
363 DLL_IMPORT_OR_EXPORT void setParentWindow(
364 unsigned int iCellIndexRegridStart, unsigned int constantChildCellCountPerIInterval, unsigned int constantParentCellCountPerIInterval, uint64_t iIntervalCount,
365 unsigned int jCellIndexRegridStart, unsigned int constantChildCellCountPerJInterval, unsigned int constantParentCellCountPerJInterval, uint64_t jIntervalCount,
366 unsigned int kCellIndexRegridStart, unsigned int constantChildCellCountPerKInterval, unsigned int constantParentCellCountPerKInterval, uint64_t kIntervalCount,
367 class AbstractIjkGridRepresentation* parentGrid, EML2_NS::AbstractHdfProxy * proxy = nullptr, double * iChildCellWeights = nullptr, double * jChildCellWeights = nullptr, double * kChildCellWeights = nullptr);
368
425 DLL_IMPORT_OR_EXPORT void setParentWindow(
426 unsigned int iCellIndexRegridStart, unsigned int iChildCellCount, unsigned int iParentCellCount,
427 unsigned int jCellIndexRegridStart, unsigned int jChildCellCount, unsigned int jParentCellCount,
428 unsigned int kCellIndexRegridStart, unsigned int kChildCellCount, unsigned int kParentCellCount,
429 class AbstractIjkGridRepresentation* parentGrid, EML2_NS::AbstractHdfProxy * proxy = nullptr, double * iChildCellWeights = nullptr, double * jChildCellWeights = nullptr, double * kChildCellWeights = nullptr);
430
447 DLL_IMPORT_OR_EXPORT void setForcedNonRegridedParentCell(uint64_t* cellIndices, uint64_t cellIndexCount);
448
474 DLL_IMPORT_OR_EXPORT void setCellOverlap(uint64_t parentChildCellPairCount, uint64_t* parentChildCellPair,
475 const std::string& volumeUom, double* overlapVolumes = nullptr);
476
489 DLL_IMPORT_OR_EXPORT uint64_t getParentCellIndexCount() const;
490
505 DLL_IMPORT_OR_EXPORT void getParentCellIndices(uint64_t * parentCellIndices) const;
506
519 DLL_IMPORT_OR_EXPORT uint64_t getParentColumnIndexCount() const;
520
535 DLL_IMPORT_OR_EXPORT void getParentColumnIndices(uint64_t * parentColumnIndices) const;
536
556 DLL_IMPORT_OR_EXPORT uint64_t getRegridStartIndexOnParentGrid(char dimension) const;
557
578 DLL_IMPORT_OR_EXPORT uint64_t getRegridIntervalCount(char dimension) const;
579
607 DLL_IMPORT_OR_EXPORT bool isRegridCellCountPerIntervalConstant(char dimension, bool childVsParentCellCount) const;
608
637 DLL_IMPORT_OR_EXPORT uint64_t getRegridConstantCellCountPerInterval(char dimension, bool childVsParentCellCount) const;
638
669 DLL_IMPORT_OR_EXPORT void getRegridCellCountPerInterval(char dimension, uint64_t* childCellCountPerInterval, bool childVsParentCellCount) const;
670
693 DLL_IMPORT_OR_EXPORT bool hasRegridChildCellWeights(char dimension) const;
694
721 DLL_IMPORT_OR_EXPORT void getRegridChildCellWeights(char dimension, double* childCellWeights) const;
722
733 DLL_IMPORT_OR_EXPORT bool hasForcedNonRegridedParentCell() const;
734
735 //************************************************************
736 //**************** LINK WITH STRATIGRAPHY ********************
737 //************************************************************
738
754 DLL_IMPORT_OR_EXPORT void setCellAssociationWithStratigraphicOrganizationInterpretation(int64_t* stratiUnitIndices, int64_t nullValue, class AbstractStratigraphicOrganizationInterpretation* stratiOrgInterp);
755
766
777 DLL_IMPORT_OR_EXPORT virtual COMMON_NS::DataObjectReference getStratigraphicOrganizationInterpretationDor() const;
778
788 DLL_IMPORT_OR_EXPORT bool hasCellStratigraphicUnitIndices() const;
789
808 DLL_IMPORT_OR_EXPORT int64_t getCellStratigraphicUnitIndices(int64_t * stratiUnitIndices);
809
810 //************************************************************
811 //**************** LINK WITH ROCKFLUID ********************
812 //************************************************************
813
829 DLL_IMPORT_OR_EXPORT void setCellAssociationWithRockFluidOrganizationInterpretation(int64_t* rockFluidUnitIndices, int64_t nullValue, class RockFluidOrganizationInterpretation* rockFluidOrgInterp);
830
841
852 DLL_IMPORT_OR_EXPORT virtual COMMON_NS::DataObjectReference getRockFluidOrganizationInterpretationDor() const;
853
863 DLL_IMPORT_OR_EXPORT bool hasCellFluidPhaseUnitIndices() const;
864
884 DLL_IMPORT_OR_EXPORT int64_t getCellFluidPhaseUnitIndices(int64_t * rockfluidUnitIndices);
885
886
887 //************************************************************
888 //********************** TRUNCATION **************************
889 //************************************************************
890
896 DLL_IMPORT_OR_EXPORT bool isTruncated() const;
897
907 DLL_IMPORT_OR_EXPORT uint64_t getTruncatedFaceCount() const;
908
921 DLL_IMPORT_OR_EXPORT void getNodeIndicesOfTruncatedFaces(uint64_t * nodeIndices) const;
922
940 DLL_IMPORT_OR_EXPORT void getCumulativeNodeCountPerTruncatedFace(uint64_t * nodeCountPerFace) const;
941
956 DLL_IMPORT_OR_EXPORT void getNodeCountPerTruncatedFace(uint64_t * nodeCountPerFace) const;
957
966 DLL_IMPORT_OR_EXPORT uint64_t getTruncatedCellCount() const;
967
979 DLL_IMPORT_OR_EXPORT void getTruncatedCellIndices(uint64_t* cellIndices) const;
980
996 DLL_IMPORT_OR_EXPORT void getTruncatedFaceIndicesOfTruncatedCells(uint64_t * faceIndices) const;
997
1016 DLL_IMPORT_OR_EXPORT void getCumulativeTruncatedFaceCountPerTruncatedCell(uint64_t * cumulativeFaceCountPerCell) const;
1017
1032 DLL_IMPORT_OR_EXPORT void getTruncatedFaceCountPerTruncatedCell(uint64_t * faceCountPerCell) const;
1033
1049 DLL_IMPORT_OR_EXPORT void getNonTruncatedFaceIndicesOfTruncatedCells(uint64_t * faceIndices) const;
1050
1069 DLL_IMPORT_OR_EXPORT void getCumulativeNonTruncatedFaceCountPerTruncatedCell(uint64_t * cumulativeFaceCountPerCell) const;
1070
1086 DLL_IMPORT_OR_EXPORT void getNonTruncatedFaceCountPerTruncatedCell(uint64_t * faceCountPerCell) const;
1087
1103 DLL_IMPORT_OR_EXPORT void getTruncatedFaceIsRightHanded(uint8_t* cellFaceIsRightHanded) const;
1104
1106 DLL_IMPORT_OR_EXPORT static constexpr char const* XML_TAG = "AbstractGridRepresentation";
1107
1110
1111 protected:
1112
1119 AbstractGridRepresentation(gsoap_resqml2_0_1::eml20__DataObjectReference* partialObject, bool withTruncatedPillars) :AbstractRepresentation(partialObject), withTruncatedPillars(withTruncatedPillars) {}
1120
1126 AbstractGridRepresentation(bool withTruncatedPillars) : withTruncatedPillars(withTruncatedPillars) {}
1127
1134 AbstractGridRepresentation(gsoap_resqml2_0_1::resqml20__AbstractGridRepresentation* fromGsoap, bool withTruncatedPillars) : AbstractRepresentation(fromGsoap), withTruncatedPillars(withTruncatedPillars) {}
1135 AbstractGridRepresentation(gsoap_eml2_3::resqml22__AbstractGridRepresentation* fromGsoap, bool withTruncatedPillars) : AbstractRepresentation(fromGsoap), withTruncatedPillars(withTruncatedPillars) {}
1136
1138 bool withTruncatedPillars;
1139
1140 private:
1141
1146 gsoap_resqml2_0_1::resqml20__Regrid* createRegrid2_0_1(uint32_t indexRegridStart, uint32_t* childCellCountPerInterval, uint32_t* parentCellCountPerInterval, uint64_t intervalCount, double* childCellWeights,
1147 const std::string& dimension, EML2_NS::AbstractHdfProxy* proxy, bool forceConstantCellCountPerInterval = false);
1148 gsoap_eml2_3::resqml22__Regrid* createRegrid2_2(uint32_t indexRegridStart, uint32_t* childCellCountPerInterval, uint32_t* parentCellCountPerInterval, uint64_t intervalCount, double* childCellWeights,
1149 const std::string& dimension, EML2_NS::AbstractHdfProxy* proxy, bool forceConstantCellCountPerInterval = false);
1150
1151 /*
1152 * @param dimension It must be either 'i', 'j' ou 'k' (upper or lower case) for an ijk parent grid. 'k' for a strict column layer parent grid.
1153 * @param childVsParentCellCount If true return the child cell count per interval. If false return the parent cell count per interval.
1154 */
1155 gsoap_resqml2_0_1::resqml20__AbstractIntegerArray* getCellCountPerInterval2_0_1(char dimension, bool childVsParentCellCount) const;
1156 gsoap_eml2_3::eml23__AbstractIntegerArray* getCellCountPerInterval2_2(char dimension, bool childVsParentCellCount) const;
1157
1163 gsoap_resqml2_0_1::resqml20__AbstractParentWindow* getParentWindow2_0_1() const;
1164 gsoap_eml2_3::resqml22__AbstractParentWindow* getParentWindow2_2() const;
1165 };
1166}
Proxy class for an abstract column layer grid representation.
Definition AbstractColumnLayerGridRepresentation.h:27
Proxy class for an abstract grid representation.
Definition AbstractGridRepresentation.h:27
std::vector< resqml2::AbstractGridRepresentation * > getChildGridSet() const
uint64_t getRegridStartIndexOnParentGrid(char dimension) const
void getNonTruncatedFaceCountPerTruncatedCell(uint64_t *faceCountPerCell) const
common::DataObjectReference getParentGridDor() const
AbstractGridRepresentation * getChildGrid(uint64_t index) const
void setParentWindow(unsigned int iCellIndexRegridStart, unsigned int constantChildCellCountPerIInterval, unsigned int constantParentCellCountPerIInterval, uint64_t iIntervalCount, unsigned int jCellIndexRegridStart, unsigned int constantChildCellCountPerJInterval, unsigned int constantParentCellCountPerJInterval, uint64_t jIntervalCount, unsigned int kCellIndexRegridStart, unsigned int constantChildCellCountPerKInterval, unsigned int constantParentCellCountPerKInterval, uint64_t kIntervalCount, class AbstractIjkGridRepresentation *parentGrid, eml2::AbstractHdfProxy *proxy=nullptr, double *iChildCellWeights=nullptr, double *jChildCellWeights=nullptr, double *kChildCellWeights=nullptr)
Indicates that this grid takes place into another IJK parent grid. This method assumes that the count...
void setParentWindow(unsigned int *columnIndices, uint64_t columnIndexCount, unsigned int kLayerIndexRegridStart, unsigned int *childCellCountPerInterval, unsigned int *parentCellCountPerInterval, uint64_t intervalCount, class AbstractColumnLayerGridRepresentation *parentGrid, eml2::AbstractHdfProxy *proxy=nullptr, double *childCellWeights=nullptr)
int64_t getCellStratigraphicUnitIndices(int64_t *stratiUnitIndices)
void getTruncatedFaceIsRightHanded(uint8_t *cellFaceIsRightHanded) const
static constexpr char const * XML_TAG
Definition AbstractGridRepresentation.h:1106
virtual common::DataObjectReference getStratigraphicOrganizationInterpretationDor() const
void getCumulativeTruncatedFaceCountPerTruncatedCell(uint64_t *cumulativeFaceCountPerCell) const
virtual common::DataObjectReference getRockFluidOrganizationInterpretationDor() const
void getNonTruncatedFaceIndicesOfTruncatedCells(uint64_t *faceIndices) const
void getParentColumnIndices(uint64_t *parentColumnIndices) const
virtual ~AbstractGridRepresentation()=default
bool hasRegridChildCellWeights(char dimension) const
AbstractGridRepresentation * getParentGrid() const
void getRegridCellCountPerInterval(char dimension, uint64_t *childCellCountPerInterval, bool childVsParentCellCount) const
uint64_t getRegridConstantCellCountPerInterval(char dimension, bool childVsParentCellCount) const
void setParentWindow(uint64_t *cellIndices, uint64_t cellIndexCount, class UnstructuredGridRepresentation *parentGrid, eml2::AbstractHdfProxy *proxy=nullptr)
void setCellOverlap(uint64_t parentChildCellPairCount, uint64_t *parentChildCellPair, const std::string &volumeUom, double *overlapVolumes=nullptr)
virtual uint64_t getCellCount() const =0
void setParentWindow(unsigned int iCellIndexRegridStart, unsigned int *childCellCountPerIInterval, unsigned int *parentCellCountPerIInterval, uint64_t iIntervalCount, unsigned int jCellIndexRegridStart, unsigned int *childCellCountPerJInterval, unsigned int *parentCellCountPerJInterval, uint64_t jIntervalCount, unsigned int kCellIndexRegridStart, unsigned int *childCellCountPerKInterval, unsigned int *parentCellCountPerKInterval, uint64_t kIntervalCount, class AbstractIjkGridRepresentation *parentGrid, eml2::AbstractHdfProxy *proxy=nullptr, double *iChildCellWeights=nullptr, double *jChildCellWeights=nullptr, double *kChildCellWeights=nullptr)
uint64_t getRegridIntervalCount(char dimension) const
uint64_t getParentCellIndexCount() const
uint64_t getGridConnectionSetRepresentationCount() const
void getParentCellIndices(uint64_t *parentCellIndices) const
class GridConnectionSetRepresentation * getGridConnectionSetRepresentation(uint64_t index) const
void setParentWindow(unsigned int iCellIndexRegridStart, unsigned int iChildCellCount, unsigned int iParentCellCount, unsigned int jCellIndexRegridStart, unsigned int jChildCellCount, unsigned int jParentCellCount, unsigned int kCellIndexRegridStart, unsigned int kChildCellCount, unsigned int kParentCellCount, class AbstractIjkGridRepresentation *parentGrid, eml2::AbstractHdfProxy *proxy=nullptr, double *iChildCellWeights=nullptr, double *jChildCellWeights=nullptr, double *kChildCellWeights=nullptr)
void getCumulativeNodeCountPerTruncatedFace(uint64_t *nodeCountPerFace) const
void getNodeCountPerTruncatedFace(uint64_t *nodeCountPerFace) const
void getRegridChildCellWeights(char dimension, double *childCellWeights) const
int64_t getCellFluidPhaseUnitIndices(int64_t *rockfluidUnitIndices)
void setCellAssociationWithStratigraphicOrganizationInterpretation(int64_t *stratiUnitIndices, int64_t nullValue, class AbstractStratigraphicOrganizationInterpretation *stratiOrgInterp)
bool isRegridCellCountPerIntervalConstant(char dimension, bool childVsParentCellCount) const
void setCellAssociationWithRockFluidOrganizationInterpretation(int64_t *rockFluidUnitIndices, int64_t nullValue, class RockFluidOrganizationInterpretation *rockFluidOrgInterp)
void getCumulativeNonTruncatedFaceCountPerTruncatedCell(uint64_t *cumulativeFaceCountPerCell) const
void setForcedNonRegridedParentCell(uint64_t *cellIndices, uint64_t cellIndexCount)
void getTruncatedFaceCountPerTruncatedCell(uint64_t *faceCountPerCell) const
void getTruncatedFaceIndicesOfTruncatedCells(uint64_t *faceIndices) const
class AbstractStratigraphicOrganizationInterpretation * getStratigraphicOrganizationInterpretation() const
void getNodeIndicesOfTruncatedFaces(uint64_t *nodeIndices) const
class RockFluidOrganizationInterpretation * getRockFluidOrganizationInterpretation() const
std::vector< class GridConnectionSetRepresentation * > getGridConnectionSetRepresentationSet() const
uint64_t getParentColumnIndexCount() const
void getTruncatedCellIndices(uint64_t *cellIndices) const
Proxy class for an abstract IJK grid representation. This class is semantically abstract....
Definition AbstractIjkGridRepresentation.h:34
An abstract stratigraphic organization interpretation is the main class that defines the relationship...
Definition AbstractStratigraphicOrganizationInterpretation.h:37
Proxy class for a grid connection set representation. This representation consists of a list of conne...
Definition GridConnectionSetRepresentation.h:51
This class describes the organization of geological reservoir, i.e., of an interconnected network of ...
Definition RockFluidOrganizationInterpretation.h:34
Unstructured grid representation characterized by a cell count, and potentially nothing else....
Definition UnstructuredGridRepresentation.h:30