(#397) (#398) Added globalGridCellIndex access to the ResultAccessors

To prepare for well log extraction
This commit is contained in:
Jacob Støren
2015-08-30 21:25:31 +02:00
parent 371902378e
commit 7794a66b04
10 changed files with 123 additions and 0 deletions

View File

@@ -57,3 +57,26 @@ double RigActiveCellsResultAccessor::cellFaceScalar(size_t gridLocalCellIndex, c
return cellScalar(gridLocalCellIndex); return cellScalar(gridLocalCellIndex);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigActiveCellsResultAccessor::cellScalarGlobIdx(size_t reservoirCellIndex) const
{
if (m_reservoirResultValues == NULL || m_reservoirResultValues->size() == 0) return HUGE_VAL;
size_t resultValueIndex = m_activeCellInfo->cellResultIndex(reservoirCellIndex);
if (resultValueIndex == cvf::UNDEFINED_SIZE_T) return HUGE_VAL;
CVF_TIGHT_ASSERT(resultValueIndex < m_reservoirResultValues->size());
return m_reservoirResultValues->at(resultValueIndex);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigActiveCellsResultAccessor::cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const
{
return cellScalarGlobIdx(globCellIndex);
}

View File

@@ -36,6 +36,9 @@ public:
virtual double cellScalar(size_t gridLocalCellIndex) const; virtual double cellScalar(size_t gridLocalCellIndex) const;
virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const; virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const;
virtual double cellScalarGlobIdx(size_t globCellIndex) const;
virtual double cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const;
private: private:
const RigActiveCellInfo* m_activeCellInfo; const RigActiveCellInfo* m_activeCellInfo;
const RigGridBase* m_grid; const RigGridBase* m_grid;

View File

@@ -64,3 +64,29 @@ double RigCellEdgeResultAccessor::cellFaceScalar(size_t gridLocalCellIndex, cvf:
return HUGE_VAL; return HUGE_VAL;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigCellEdgeResultAccessor::cellScalarGlobIdx(size_t globCellIndex) const
{
// TODO: How to handle when we get here?
CVF_ASSERT(false);
return cvf::UNDEFINED_DOUBLE;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigCellEdgeResultAccessor::cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const
{
const RigResultAccessor* resultAccessObj = m_resultAccessObjects[faceId].p();
if (resultAccessObj != NULL)
{
return resultAccessObj->cellFaceScalarGlobIdx(globCellIndex, faceId);
}
return HUGE_VAL;
}

View File

@@ -37,6 +37,9 @@ public:
virtual double cellScalar(size_t gridLocalCellIndex) const; virtual double cellScalar(size_t gridLocalCellIndex) const;
virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const; virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const;
virtual double cellScalarGlobIdx(size_t globCellIndex) const;
virtual double cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const;
private: private:
caf::FixedArray<cvf::ref<RigResultAccessor>, 6> m_resultAccessObjects; caf::FixedArray<cvf::ref<RigResultAccessor>, 6> m_resultAccessObjects;
}; };

View File

@@ -22,6 +22,8 @@
#include "RigGridBase.h" #include "RigGridBase.h"
#include <cmath> #include <cmath>
#include "RigCell.h"
#include "RigMainGrid.h"
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -147,3 +149,22 @@ double RigCombMultResultAccessor::nativeMultScalar(size_t gridLocalCellIndex, cv
return faceScalar; return faceScalar;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigCombMultResultAccessor::cellScalarGlobIdx(size_t globCellIndex) const
{
CVF_TIGHT_ASSERT(false);
return HUGE_VAL;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigCombMultResultAccessor::cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const
{
size_t gridLocalCellIndex = m_grid->mainGrid()->cell(globCellIndex).gridLocalCellIndex();
return this->cellFaceScalar(gridLocalCellIndex, faceId);
}

View File

@@ -44,6 +44,8 @@ public:
virtual double cellScalar(size_t gridLocalCellIndex) const; virtual double cellScalar(size_t gridLocalCellIndex) const;
virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const; virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const;
virtual double cellScalarGlobIdx(size_t globCellIndex) const;
virtual double cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const;
private: private:
double nativeMultScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const; double nativeMultScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const;

View File

@@ -22,6 +22,8 @@
#include "RigGridBase.h" #include "RigGridBase.h"
#include <cmath> #include <cmath>
#include "RigCell.h"
#include "RigMainGrid.h"
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -137,3 +139,22 @@ double RigCombTransResultAccessor::cellFaceScalar(size_t gridLocalCellIndex, cvf
return HUGE_VAL; return HUGE_VAL;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigCombTransResultAccessor::cellScalarGlobIdx(size_t globCellIndex) const
{
CVF_TIGHT_ASSERT(false);
return HUGE_VAL;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigCombTransResultAccessor::cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const
{
size_t gridLocalCellIndex = m_grid->mainGrid()->cell(globCellIndex).gridLocalCellIndex();
return this->cellFaceScalar(gridLocalCellIndex, faceId);
}

View File

@@ -40,9 +40,13 @@ public:
virtual double cellScalar(size_t gridLocalCellIndex) const; virtual double cellScalar(size_t gridLocalCellIndex) const;
virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const; virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const;
virtual double cellScalarGlobIdx(size_t globCellIndex) const;
virtual double cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const;
private: private:
double neighborCellTran(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId, const RigResultAccessor* transAccessor) const; double neighborCellTran(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId, const RigResultAccessor* transAccessor) const;
cvf::ref<RigResultAccessor> m_xTransAccessor; cvf::ref<RigResultAccessor> m_xTransAccessor;
cvf::ref<RigResultAccessor> m_yTransAccessor; cvf::ref<RigResultAccessor> m_yTransAccessor;
cvf::ref<RigResultAccessor> m_zTransAccessor; cvf::ref<RigResultAccessor> m_zTransAccessor;

View File

@@ -36,3 +36,19 @@ double RigHugeValResultAccessor::cellFaceScalar(size_t gridLocalCellIndex, cvf::
{ {
return cellScalar(gridLocalCellIndex); return cellScalar(gridLocalCellIndex);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigHugeValResultAccessor::cellScalarGlobIdx(size_t globCellIndex) const
{
return HUGE_VAL;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigHugeValResultAccessor::cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const
{
return HUGE_VAL;
}

View File

@@ -34,6 +34,8 @@ class RigResultAccessor : public cvf::Object
public: public:
virtual double cellScalar(size_t gridLocalCellIndex) const = 0; virtual double cellScalar(size_t gridLocalCellIndex) const = 0;
virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const = 0; virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const = 0;
virtual double cellScalarGlobIdx(size_t globCellIndex) const = 0;
virtual double cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const = 0;
}; };
//================================================================================================== //==================================================================================================
@@ -44,4 +46,6 @@ class RigHugeValResultAccessor : public RigResultAccessor
public: public:
virtual double cellScalar(size_t gridLocalCellIndex) const; virtual double cellScalar(size_t gridLocalCellIndex) const;
virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const; virtual double cellFaceScalar(size_t gridLocalCellIndex, cvf::StructGridInterface::FaceType faceId) const;
virtual double cellScalarGlobIdx(size_t globCellIndex) const;
virtual double cellFaceScalarGlobIdx(size_t globCellIndex, cvf::StructGridInterface::FaceType faceId) const;
}; };