From 37f62d4b0f51833c948eee9b74629dc1cc357307 Mon Sep 17 00:00:00 2001 From: Vegard Kippe Date: Wed, 13 Sep 2023 13:56:14 +0200 Subject: [PATCH 1/5] Ensure numerical aquifer cells get the correct depth --- opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp | 4 ++++ .../input/eclipse/EclipseState/Grid/EclipseGrid.cpp | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp b/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp index 744c858e1..f952ed8c0 100644 --- a/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp +++ b/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp @@ -31,6 +31,7 @@ #include #include #include +#include namespace Opm { @@ -255,12 +256,15 @@ namespace Opm { std::vector m_global_to_active; // Numerical aquifer cells, needs to be active std::unordered_set m_aquifer_cells; + // Keep track of aquifer cell depths + std::map m_aquifer_cell_depths; // Radial grids need this for volume calculations. std::optional> m_thetav; std::optional> m_rv; void updateNumericalAquiferCells(const Deck&); + double computeCellDepth(size_t globalIndex) const; void initGridFromEGridFile(Opm::EclIO::EclFile& egridfile, std::string fileName); void resetACTNUM( const int* actnum); diff --git a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp index e1dcdd3d2..9b6d42588 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp @@ -1678,6 +1678,12 @@ std::vector EclipseGrid::createDVector(const std::array& dims, st double EclipseGrid::getCellDepth(size_t globalIndex) const { assertGlobalIndex( globalIndex ); + + auto it = this->m_aquifer_cell_depths.find(globalIndex); + return it != this->m_aquifer_cell_depths.end() ? it->second : computeCellDepth(globalIndex); + } + + double EclipseGrid::computeCellDepth(size_t globalIndex) const { std::array X; std::array Y; std::array Z; @@ -1891,6 +1897,10 @@ std::vector EclipseGrid::createDVector(const std::array& dims, st const size_t k = record.getItem().get(0) - 1; const size_t global_index = this->getGlobalIndex(i, j, k); this->m_aquifer_cells.insert(global_index); + + const double depth = record.getItem().defaultApplied(0) ? + this->computeCellDepth(global_index) : record.getItem().getSIDouble(0); + this->m_aquifer_cell_depths.insert_or_assign(global_index, depth); } } } From 74d77cfcc4ad57cceb77567b55e597479f2d323b Mon Sep 17 00:00:00 2001 From: Vegard Kippe Date: Wed, 13 Sep 2023 15:13:58 +0200 Subject: [PATCH 2/5] Renaming as suggested by reviewer --- opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp | 4 +--- src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp b/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp index f952ed8c0..ea67d5b0f 100644 --- a/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp +++ b/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp @@ -30,8 +30,6 @@ #include #include #include -#include -#include namespace Opm { @@ -264,7 +262,7 @@ namespace Opm { std::optional> m_rv; void updateNumericalAquiferCells(const Deck&); - double computeCellDepth(size_t globalIndex) const; + double computeCellGeometricDepth(size_t globalIndex) const; void initGridFromEGridFile(Opm::EclIO::EclFile& egridfile, std::string fileName); void resetACTNUM( const int* actnum); diff --git a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp index 9b6d42588..4b6c2eb70 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp @@ -1680,10 +1680,10 @@ std::vector EclipseGrid::createDVector(const std::array& dims, st assertGlobalIndex( globalIndex ); auto it = this->m_aquifer_cell_depths.find(globalIndex); - return it != this->m_aquifer_cell_depths.end() ? it->second : computeCellDepth(globalIndex); + return it != this->m_aquifer_cell_depths.end() ? it->second : computeCellGeometricDepth(globalIndex); } - double EclipseGrid::computeCellDepth(size_t globalIndex) const { + double EclipseGrid::computeCellGeometricDepth(size_t globalIndex) const { std::array X; std::array Y; std::array Z; From 90b9f30f679ddc4e8afdd00bf09d63eddf7133ce Mon Sep 17 00:00:00 2001 From: Vegard Kippe Date: Wed, 13 Sep 2023 15:34:42 +0200 Subject: [PATCH 3/5] Re-introducing line that somehow was deleted --- opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp b/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp index ea67d5b0f..bfaedfe25 100644 --- a/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp +++ b/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp @@ -30,6 +30,7 @@ #include #include #include +#include namespace Opm { From e23e69d32878e9747a1560e001954f4a87a15e07 Mon Sep 17 00:00:00 2001 From: Vegard Kippe Date: Wed, 13 Sep 2023 15:40:43 +0200 Subject: [PATCH 4/5] Re-introducing another line that somehow was deleted --- opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp b/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp index bfaedfe25..5a12349c3 100644 --- a/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp +++ b/opm/input/eclipse/EclipseState/Grid/EclipseGrid.hpp @@ -30,6 +30,7 @@ #include #include #include +#include #include namespace Opm { From 68f6c5f5af6e7102d768efa886634190191a8238 Mon Sep 17 00:00:00 2001 From: Vegard Kippe Date: Wed, 13 Sep 2023 15:49:29 +0200 Subject: [PATCH 5/5] .. and renaming the last call to computeCellDepth.. --- src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp index 4b6c2eb70..c4ca5269d 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp @@ -1899,7 +1899,7 @@ std::vector EclipseGrid::createDVector(const std::array& dims, st this->m_aquifer_cells.insert(global_index); const double depth = record.getItem().defaultApplied(0) ? - this->computeCellDepth(global_index) : record.getItem().getSIDouble(0); + this->computeCellGeometricDepth(global_index) : record.getItem().getSIDouble(0); this->m_aquifer_cell_depths.insert_or_assign(global_index, depth); } }