mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1041 - pre-proto - Adding new functions transformMatrix (for calculating transform Matrix for fracture) and getPotentiallyFracturedCells (finding all cells in bounding box for fracture geometry) in RimFracture. Relevant code is updated to use these functions.
This commit is contained in:
@@ -109,11 +109,11 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, co
|
|||||||
if (!mainGrid) return false;
|
if (!mainGrid) return false;
|
||||||
|
|
||||||
size_t i, j, k;
|
size_t i, j, k;
|
||||||
mainGrid->ijkFromCellIndex(fracData.cellindex, &i, &j, &k);
|
mainGrid->ijkFromCellIndex(fracData.reservoirCellIndex, &i, &j, &k);
|
||||||
out << i; // 2. I location grid block
|
out << i+1; // 2. I location grid block, adding 1 to go to eclipse 1-based grid definition
|
||||||
out << j; // 3. J location grid block
|
out << j+1; // 3. J location grid block, adding 1 to go to eclipse 1-based grid definition
|
||||||
out << k; // 4. K location of upper connecting grid block
|
out << k+1; // 4. K location of upper connecting grid block, adding 1 to go to eclipse 1-based grid definition
|
||||||
out << k; // 5. K location of lower connecting grid block
|
out << k+1; // 5. K location of lower connecting grid block, adding 1 to go to eclipse 1-based grid definition
|
||||||
|
|
||||||
out << "OPEN"; // 6. Open / Shut flag of connection
|
out << "OPEN"; // 6. Open / Shut flag of connection
|
||||||
out << "1* "; // 7. Saturation table number for connection rel perm. Default value
|
out << "1* "; // 7. Saturation table number for connection rel perm. Default value
|
||||||
|
|||||||
@@ -28,6 +28,10 @@
|
|||||||
|
|
||||||
#include "cvfMath.h"
|
#include "cvfMath.h"
|
||||||
#include "cvfMatrix4.h"
|
#include "cvfMatrix4.h"
|
||||||
|
#include "RiaApplication.h"
|
||||||
|
#include "RigMainGrid.h"
|
||||||
|
#include "RimEclipseView.h"
|
||||||
|
#include "cvfBoundingBox.h"
|
||||||
|
|
||||||
|
|
||||||
CAF_PDM_XML_ABSTRACT_SOURCE_INIT(RimFracture, "Fracture");
|
CAF_PDM_XML_ABSTRACT_SOURCE_INIT(RimFracture, "Fracture");
|
||||||
@@ -69,6 +73,35 @@ const std::vector<cvf::Vec3f>& RimFracture::nodeCoords() const
|
|||||||
return m_rigFracture->nodeCoords();
|
return m_rigFracture->nodeCoords();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::vector<size_t> RimFracture::getPotentiallyFracturedCells()
|
||||||
|
{
|
||||||
|
std::vector<size_t> cellindecies;
|
||||||
|
|
||||||
|
RiaApplication* app = RiaApplication::instance();
|
||||||
|
RimView* activeView = RiaApplication::instance()->activeReservoirView();
|
||||||
|
if (!activeView) return cellindecies;
|
||||||
|
|
||||||
|
RimEclipseView* activeRiv = dynamic_cast<RimEclipseView*>(activeView);
|
||||||
|
if (!activeRiv) return cellindecies;
|
||||||
|
|
||||||
|
const RigMainGrid* mainGrid = activeRiv->mainGrid();
|
||||||
|
if (!mainGrid) return cellindecies;
|
||||||
|
|
||||||
|
const std::vector<cvf::Vec3f>& nodeCoordVec = nodeCoords();
|
||||||
|
|
||||||
|
if (!hasValidGeometry()) computeGeometry();
|
||||||
|
|
||||||
|
cvf::BoundingBox polygonBBox;
|
||||||
|
for (cvf::Vec3f nodeCoord : nodeCoordVec) polygonBBox.add(nodeCoord);
|
||||||
|
|
||||||
|
mainGrid->findIntersectingCells(polygonBBox, &cellindecies);
|
||||||
|
|
||||||
|
return cellindecies;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -147,15 +180,12 @@ void RimFracture::computeTransmissibility()
|
|||||||
{
|
{
|
||||||
std::vector<RigFractureData> fracDataVec;
|
std::vector<RigFractureData> fracDataVec;
|
||||||
|
|
||||||
//TODO: Use global cell index instead of pair of grid, cell index
|
std::vector<size_t> fracCells = getPotentiallyFracturedCells();
|
||||||
//TODO: use RigMainGrid - findIntersectingCells / boundingbox
|
|
||||||
std::vector<std::pair<size_t, size_t>> fracCells = getFracturedCells();
|
|
||||||
|
|
||||||
for (auto fracCell : fracCells)
|
for (auto fracCell : fracCells)
|
||||||
{
|
{
|
||||||
RigFractureData fracData;
|
RigFractureData fracData;
|
||||||
fracData.cellindex = fracCell.first;
|
fracData.reservoirCellIndex = fracCell;
|
||||||
fracData.gridIndex = fracCell.second;
|
|
||||||
|
|
||||||
//TODO: get correct input values...
|
//TODO: get correct input values...
|
||||||
double area = 2.468;
|
double area = 2.468;
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public:
|
|||||||
const std::vector<cvf::Vec3f>& nodeCoords() const;
|
const std::vector<cvf::Vec3f>& nodeCoords() const;
|
||||||
|
|
||||||
|
|
||||||
virtual std::vector<std::pair<size_t, size_t>> getFracturedCells() = 0;
|
virtual std::vector<size_t> getPotentiallyFracturedCells();
|
||||||
void computeTransmissibility();
|
void computeTransmissibility();
|
||||||
|
|
||||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||||
|
|||||||
@@ -160,32 +160,32 @@ void RimSimWellFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedFiel
|
|||||||
if (proj) proj->createDisplayModelAndRedrawAllViews();
|
if (proj) proj->createDisplayModelAndRedrawAllViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------------------
|
||||||
///
|
// /
|
||||||
//--------------------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------------------
|
||||||
std::vector<std::pair<size_t, size_t>> RimSimWellFracture::getFracturedCells()
|
// std::vector<std::pair<size_t, size_t>> RimSimWellFracture::getFracturedCells()
|
||||||
{
|
// {
|
||||||
std::vector<std::pair<size_t, size_t>> cells;
|
// std::vector<std::pair<size_t, size_t>> cells;
|
||||||
|
//
|
||||||
size_t gridindex = 0; //TODO! For now assuming only one grid
|
// size_t gridindex = 0; //TODO! For now assuming only one grid
|
||||||
|
//
|
||||||
|
//
|
||||||
caf::PdmObjectHandle* objHandle = dynamic_cast<caf::PdmObjectHandle*>(this);
|
// caf::PdmObjectHandle* objHandle = dynamic_cast<caf::PdmObjectHandle*>(this);
|
||||||
if (!objHandle) return cells;
|
// if (!objHandle) return cells;
|
||||||
|
//
|
||||||
RimEclipseView* mainView = nullptr;
|
// RimEclipseView* mainView = nullptr;
|
||||||
objHandle->firstAncestorOrThisOfType(mainView);
|
// objHandle->firstAncestorOrThisOfType(mainView);
|
||||||
if (!mainView) return cells;
|
// if (!mainView) return cells;
|
||||||
|
//
|
||||||
const RigMainGrid* mainGrid = mainView->mainGrid();
|
// const RigMainGrid* mainGrid = mainView->mainGrid();
|
||||||
if (!mainGrid) return cells;
|
// if (!mainGrid) return cells;
|
||||||
|
//
|
||||||
size_t cellIndex = mainGrid->cellIndexFromIJK(m_i - 1, m_j - 1, m_k - 1); // cellIndexFromIJK uses 0-based indexing
|
// size_t cellIndex = mainGrid->cellIndexFromIJK(m_i - 1, m_j - 1, m_k - 1); // cellIndexFromIJK uses 0-based indexing
|
||||||
|
//
|
||||||
cells.push_back(std::make_pair(cellIndex, gridindex));
|
// cells.push_back(std::make_pair(cellIndex, gridindex));
|
||||||
|
//
|
||||||
return cells;
|
// return cells;
|
||||||
}
|
// }
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ public:
|
|||||||
// Overrides from RimFracture
|
// Overrides from RimFracture
|
||||||
virtual cvf::Vec3d centerPointForFracture() override;
|
virtual cvf::Vec3d centerPointForFracture() override;
|
||||||
virtual RimFractureEllipseDefinition* attachedFractureDefinition() override;
|
virtual RimFractureEllipseDefinition* attachedFractureDefinition() override;
|
||||||
virtual std::vector<std::pair<size_t, size_t>> getFracturedCells() override;
|
|
||||||
|
|
||||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||||
|
|
||||||
|
|||||||
@@ -123,20 +123,6 @@ RimFractureEllipseDefinition* RimWellPathFracture::attachedFractureDefinition()
|
|||||||
return fractureDefinition();
|
return fractureDefinition();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
std::vector<std::pair<size_t, size_t>> RimWellPathFracture::getFracturedCells()
|
|
||||||
{
|
|
||||||
std::vector<std::pair<size_t, size_t>> cells;
|
|
||||||
size_t cellindex = 123; //TODO! For now just retunrning a dummy value!
|
|
||||||
size_t gridindex = 0;
|
|
||||||
cells.push_back(std::make_pair(cellindex, gridindex));
|
|
||||||
|
|
||||||
return cells;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -66,9 +66,6 @@ public:
|
|||||||
virtual RimFractureEllipseDefinition* attachedFractureDefinition() override;
|
virtual RimFractureEllipseDefinition* attachedFractureDefinition() override;
|
||||||
|
|
||||||
|
|
||||||
virtual std::vector<std::pair<size_t, size_t>> getFracturedCells() override;
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
|
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
|
||||||
cvf::Vec3d fracturePositionForUi() const;
|
cvf::Vec3d fracturePositionForUi() const;
|
||||||
|
|||||||
@@ -31,8 +31,7 @@ class RigFractureData
|
|||||||
public:
|
public:
|
||||||
RigFractureData();
|
RigFractureData();
|
||||||
|
|
||||||
size_t gridIndex;
|
size_t reservoirCellIndex;
|
||||||
size_t cellindex;
|
|
||||||
double transmissibility;
|
double transmissibility;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user