From 22c5965fb5a6abe046dd06540cf152e3677ac2df Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Wed, 19 Apr 2023 18:12:27 +0200 Subject: [PATCH 01/13] add carfin collection --- CMakeLists_files.cmake | 2 + .../eclipse/EclipseState/EclipseState.hpp | 5 + .../EclipseState/Grid/LgrCollection.hpp | 64 ++++++++++ .../eclipse/EclipseState/EclipseState.cpp | 1 + .../EclipseState/Grid/LgrCollection.cpp | 118 ++++++++++++++++++ 5 files changed, 190 insertions(+) create mode 100644 opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp create mode 100644 src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake index c91c3cfac..dd5c8965b 100644 --- a/CMakeLists_files.cmake +++ b/CMakeLists_files.cmake @@ -119,6 +119,7 @@ if(ENABLE_ECL_INPUT) src/opm/input/eclipse/EclipseState/Grid/BoxManager.cpp src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp src/opm/input/eclipse/EclipseState/Grid/CarfinManager.cpp + src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp src/opm/input/eclipse/EclipseState/Grid/FieldProps.cpp src/opm/input/eclipse/EclipseState/Grid/FieldPropsManager.cpp @@ -1084,6 +1085,7 @@ if(ENABLE_ECL_INPUT) opm/input/eclipse/EclipseState/Grid/Fault.hpp opm/input/eclipse/EclipseState/Grid/Box.hpp opm/input/eclipse/EclipseState/Grid/Carfin.hpp + opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp opm/input/eclipse/EclipseState/Grid/FieldProps.hpp opm/input/eclipse/EclipseState/Grid/FieldPropsManager.hpp opm/input/eclipse/EclipseState/Grid/FaultFace.hpp diff --git a/opm/input/eclipse/EclipseState/EclipseState.hpp b/opm/input/eclipse/EclipseState/EclipseState.hpp index 9e90e89f5..bfcd0e1a3 100644 --- a/opm/input/eclipse/EclipseState/EclipseState.hpp +++ b/opm/input/eclipse/EclipseState/EclipseState.hpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -95,6 +96,9 @@ namespace Opm { const EclipseConfig& cfg() const; const GridDims& gridDims() const; + virtual const CarfinManager& getInputGLgr() const; + bool hasInputLGR() const; + // the unit system used by the deck. note that it is rarely needed // to convert units because internally to opm-parser everything is // represented by SI units. @@ -166,6 +170,7 @@ namespace Opm { EclipseGrid m_inputGrid; NNC m_inputNnc; GridDims m_gridDims; + LgrCollection m_inputLgr; FieldPropsManager field_props; SimulationConfig m_simulationConfig; AquiferConfig aquifer_config; diff --git a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp new file mode 100644 index 000000000..611123677 --- /dev/null +++ b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp @@ -0,0 +1,64 @@ +/* + Copyright (C) 2023 Equinor + This file is part of the Open Porous Media project (OPM). + OPM is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + OPM is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with OPM. If not, see . + */ + +#ifndef OPM_PARSER_LGR_COLLECTION_HPP +#define OPM_PARSER_LGR_COLLECTION_HPP + +#include +#include + +#include +#include +#include + +namespace Opm { + + class DeckRecord; + class GridDims; + class GRIDSection; + + +class LgrCollection { +public: + LgrCollection(); + LgrCollection(const GRIDSection& gridSection, const GridDims& grid); + + static LgrCollection serializationTestObject(); + + size_t size() const; + bool hasLgr(const std::string& lgrName) const; + Carfin& getLgr(const std::string& lgrName); + const Carfin& getLgr(const std::string& lgrName) const; + Carfin& getLgr(size_t lgrIndex); + const Carfin& getLgr(size_t lgrIndex) const; + + + void addLgr(const std::string& lgrName); + + bool operator==(const LgrCollection& data) const; + + template + void serializeOp(Serializer& serializer) + { + serializer(m_lgrs); + } + +private: + +OrderedMap m_lgrs; +}; +} + +#endif // OPM_PARSER_LGR_COLLECTION_HPP diff --git a/src/opm/input/eclipse/EclipseState/EclipseState.cpp b/src/opm/input/eclipse/EclipseState/EclipseState.cpp index c65f013e7..05721b398 100644 --- a/src/opm/input/eclipse/EclipseState/EclipseState.cpp +++ b/src/opm/input/eclipse/EclipseState/EclipseState.cpp @@ -127,6 +127,7 @@ namespace Opm { , m_inputNnc( m_inputGrid, deck) , m_gridDims( deck ) , field_props( deck, m_runspec.phases(), m_inputGrid, m_tables) + , m_inputLgrs( deck) , m_simulationConfig( m_eclipseConfig.init().restartRequested(), deck, field_props) , aquifer_config( m_tables, m_inputGrid, deck, field_props) , m_transMult( GridDims(deck), deck, field_props) diff --git a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp new file mode 100644 index 000000000..8b9dd5f48 --- /dev/null +++ b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp @@ -0,0 +1,118 @@ +/* + Copyright (C) 2023 Equinor + This file is part of the Open Porous Media project (OPM). + OPM is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + OPM is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with OPM. If not, see . + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Opm { + + + LgrCollection::LgrCollection() + {} + + LgrCollection::LgrCollection(const GRIDSection& gridSection, + const GridDims& grid) { + const auto& lgrKeywords = gridSection.getKeywordList(); + + for (auto keyword_iter = lgrKeywords.begin(); keyword_iter != lgrKeywords.end(); ++keyword_iter) { + const auto& lgrsKeyword = *keyword_iter; + OpmLog::info(OpmInputError::format("\nLoading faults from {keyword} in {file} line {line}", lgrsKeyword->location())); + + for (auto iter = lgrsKeyword->begin(); iter != lgrsKeyword->end(); ++iter) { + const auto& lgrRecord = *iter; + const std::string& lgrName = lgrRecord.getItem(0).get< std::string >(0); + + addLgr(grid, lgrRecord, lgrName); + } + } + } + + LgrCollection LgrCollection::serializationTestObject() + { + LgrCollection result; + result.m_lgrs.insert({"test", Carfin::serializationTestObject()}); + + return result; + } + + void LgrCollection::addFaultFaces(const GridDims& grid, + const DeckRecord& lgrRecord, + const std::string& lgrName) + { + int I1 = faultRecord.getItem(1).get(0) - 1; + int I2 = faultRecord.getItem(2).get(0) - 1; + int J1 = faultRecord.getItem(3).get(0) - 1; + int J2 = faultRecord.getItem(4).get(0) - 1; + int K1 = faultRecord.getItem(5).get(0) - 1; + int K2 = faultRecord.getItem(6).get(0) - 1; + FaceDir::DirEnum faceDir = FaceDir::FromString(faultRecord.getItem(7).get(0)); + FaultFace face { grid.getNX(), grid.getNY(), grid.getNZ(), + size_t(I1), size_t(I2), + size_t(J1), size_t(J2), + size_t(K1), size_t(K2), + faceDir }; + + if (!hasFault(faultName)) + addFault(faultName); + + getFault( faultName ).addFace( face ); + } + + size_t LgrCollection::size() const { + return m_lgrs.size(); + } + + bool LgrCollection::hasFault(const std::string& faultName) const { + return m_flgrs.count( faultName ) > 0; + } + + const Fault& FaultCollection::getFault(const std::string& faultName) const { + return m_lgrs.get( faultName ); + } + + Fault& LgrCollection::getFault(const std::string& faultName) { + return m_lgrs.get( faultName ); + } + + Fault& LgrCollection::getFault(size_t faultIndex) { + return m_lgrs.iget( faultIndex ); + } + + const Fault& LgrCollection::getFault(size_t faultIndex) const { + return m_lgrs.iget( faultIndex ); + } + + void LgrCollection::addLgr(const std::string& lgrName) { + Carfin lgr(lgrName); + m_lgrs.insert(std::make_pair(lgr.getName() , lgr)); + } + + bool LgrCollection::operator==(const LgrCollection& data) const { + return this->m_lgrs == data.m_lgrs; + } +} From 4e7fde0c6413178f0952ad1f3cb44b236d6af8dc Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Thu, 15 Jun 2023 18:15:26 +0200 Subject: [PATCH 02/13] simplify collection --- .../eclipse/EclipseState/EclipseState.hpp | 4 +- .../EclipseState/Grid/LgrCollection.hpp | 15 +--- .../eclipse/EclipseState/EclipseState.cpp | 6 +- .../EclipseState/Grid/LgrCollection.cpp | 76 +++---------------- 4 files changed, 20 insertions(+), 81 deletions(-) diff --git a/opm/input/eclipse/EclipseState/EclipseState.hpp b/opm/input/eclipse/EclipseState/EclipseState.hpp index bfcd0e1a3..b7d7873d3 100644 --- a/opm/input/eclipse/EclipseState/EclipseState.hpp +++ b/opm/input/eclipse/EclipseState/EclipseState.hpp @@ -96,7 +96,7 @@ namespace Opm { const EclipseConfig& cfg() const; const GridDims& gridDims() const; - virtual const CarfinManager& getInputGLgr() const; + const LgrCollection& getLgrs() const; bool hasInputLGR() const; // the unit system used by the deck. note that it is rarely needed @@ -170,7 +170,7 @@ namespace Opm { EclipseGrid m_inputGrid; NNC m_inputNnc; GridDims m_gridDims; - LgrCollection m_inputLgr; + LgrCollection m_lgrs; FieldPropsManager field_props; SimulationConfig m_simulationConfig; AquiferConfig aquifer_config; diff --git a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp index 611123677..b195e10c6 100644 --- a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp +++ b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp @@ -16,12 +16,11 @@ #ifndef OPM_PARSER_LGR_COLLECTION_HPP #define OPM_PARSER_LGR_COLLECTION_HPP -#include #include #include -#include #include +#include namespace Opm { @@ -33,21 +32,13 @@ namespace Opm { class LgrCollection { public: LgrCollection(); - LgrCollection(const GRIDSection& gridSection, const GridDims& grid); + LgrCollection(const GRIDSection& gridSection, const GridDims& gridDims); - static LgrCollection serializationTestObject(); size_t size() const; bool hasLgr(const std::string& lgrName) const; Carfin& getLgr(const std::string& lgrName); const Carfin& getLgr(const std::string& lgrName) const; - Carfin& getLgr(size_t lgrIndex); - const Carfin& getLgr(size_t lgrIndex) const; - - - void addLgr(const std::string& lgrName); - - bool operator==(const LgrCollection& data) const; template void serializeOp(Serializer& serializer) @@ -56,8 +47,8 @@ public: } private: + OrderedMap m_lgrs; -OrderedMap m_lgrs; }; } diff --git a/src/opm/input/eclipse/EclipseState/EclipseState.cpp b/src/opm/input/eclipse/EclipseState/EclipseState.cpp index 05721b398..c56e1d4a2 100644 --- a/src/opm/input/eclipse/EclipseState/EclipseState.cpp +++ b/src/opm/input/eclipse/EclipseState/EclipseState.cpp @@ -127,7 +127,7 @@ namespace Opm { , m_inputNnc( m_inputGrid, deck) , m_gridDims( deck ) , field_props( deck, m_runspec.phases(), m_inputGrid, m_tables) - , m_inputLgrs( deck) + , m_lgrs( deck) , m_simulationConfig( m_eclipseConfig.init().restartRequested(), deck, field_props) , aquifer_config( m_tables, m_inputGrid, deck, field_props) , m_transMult( GridDims(deck), deck, field_props) @@ -236,6 +236,10 @@ namespace Opm { return m_faults; } + const LgrCollection& EclipseState::getLgrs() const { + return m_lgrs; + } + const MICPpara& EclipseState::getMICPpara() const { return m_micppara; } diff --git a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp index 8b9dd5f48..2d586082d 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp @@ -13,21 +13,15 @@ along with OPM. If not, see . */ -#include -#include -#include -#include - #include #include #include #include #include #include -#include #include #include -#include + namespace Opm { @@ -35,84 +29,34 @@ namespace Opm { LgrCollection::LgrCollection() {} + /* + This class stores all LGR's. At this moment we only support lgr's input from CARFIN blocks + TODO: Collect also lgrs from RADFIN blocks... + */ + LgrCollection::LgrCollection(const GRIDSection& gridSection, const GridDims& grid) { const auto& lgrKeywords = gridSection.getKeywordList(); for (auto keyword_iter = lgrKeywords.begin(); keyword_iter != lgrKeywords.end(); ++keyword_iter) { const auto& lgrsKeyword = *keyword_iter; - OpmLog::info(OpmInputError::format("\nLoading faults from {keyword} in {file} line {line}", lgrsKeyword->location())); + OpmLog::info(OpmInputError::format("\nLoading lgrs from {keyword} in {file} line {line}", lgrsKeyword->location())); for (auto iter = lgrsKeyword->begin(); iter != lgrsKeyword->end(); ++iter) { const auto& lgrRecord = *iter; const std::string& lgrName = lgrRecord.getItem(0).get< std::string >(0); - addLgr(grid, lgrRecord, lgrName); + //addLgr(lgrName); } } } - LgrCollection LgrCollection::serializationTestObject() - { - LgrCollection result; - result.m_lgrs.insert({"test", Carfin::serializationTestObject()}); - - return result; - } - - void LgrCollection::addFaultFaces(const GridDims& grid, - const DeckRecord& lgrRecord, - const std::string& lgrName) - { - int I1 = faultRecord.getItem(1).get(0) - 1; - int I2 = faultRecord.getItem(2).get(0) - 1; - int J1 = faultRecord.getItem(3).get(0) - 1; - int J2 = faultRecord.getItem(4).get(0) - 1; - int K1 = faultRecord.getItem(5).get(0) - 1; - int K2 = faultRecord.getItem(6).get(0) - 1; - FaceDir::DirEnum faceDir = FaceDir::FromString(faultRecord.getItem(7).get(0)); - FaultFace face { grid.getNX(), grid.getNY(), grid.getNZ(), - size_t(I1), size_t(I2), - size_t(J1), size_t(J2), - size_t(K1), size_t(K2), - faceDir }; - - if (!hasFault(faultName)) - addFault(faultName); - - getFault( faultName ).addFace( face ); - } - size_t LgrCollection::size() const { return m_lgrs.size(); } - bool LgrCollection::hasFault(const std::string& faultName) const { - return m_flgrs.count( faultName ) > 0; + bool LgrCollection::hasLgr(const std::string& lgrName) const { + return m_lgrs.count( lgrName ) > 0; } - const Fault& FaultCollection::getFault(const std::string& faultName) const { - return m_lgrs.get( faultName ); - } - - Fault& LgrCollection::getFault(const std::string& faultName) { - return m_lgrs.get( faultName ); - } - - Fault& LgrCollection::getFault(size_t faultIndex) { - return m_lgrs.iget( faultIndex ); - } - - const Fault& LgrCollection::getFault(size_t faultIndex) const { - return m_lgrs.iget( faultIndex ); - } - - void LgrCollection::addLgr(const std::string& lgrName) { - Carfin lgr(lgrName); - m_lgrs.insert(std::make_pair(lgr.getName() , lgr)); - } - - bool LgrCollection::operator==(const LgrCollection& data) const { - return this->m_lgrs == data.m_lgrs; - } } From 94e9900d396a13a30ca615672ec4e60c8d9d3402 Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Thu, 6 Jul 2023 10:35:18 +0200 Subject: [PATCH 03/13] small fix class --- opm/input/eclipse/EclipseState/EclipseState.hpp | 3 ++- opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp | 3 +++ src/opm/input/eclipse/EclipseState/EclipseState.cpp | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/opm/input/eclipse/EclipseState/EclipseState.hpp b/opm/input/eclipse/EclipseState/EclipseState.hpp index b7d7873d3..91c6a8c22 100644 --- a/opm/input/eclipse/EclipseState/EclipseState.hpp +++ b/opm/input/eclipse/EclipseState/EclipseState.hpp @@ -135,6 +135,7 @@ namespace Opm { serializer(m_deckUnitSystem); serializer(m_inputNnc); serializer(m_gridDims); + serializer(m_lgrs); serializer(m_simulationConfig); serializer(aquifer_config); serializer(m_transMult); @@ -170,8 +171,8 @@ namespace Opm { EclipseGrid m_inputGrid; NNC m_inputNnc; GridDims m_gridDims; - LgrCollection m_lgrs; FieldPropsManager field_props; + LgrCollection m_lgrs; SimulationConfig m_simulationConfig; AquiferConfig aquifer_config; TransMult m_transMult; diff --git a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp index b195e10c6..f8a8fd0c0 100644 --- a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp +++ b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp @@ -34,6 +34,9 @@ public: LgrCollection(); LgrCollection(const GRIDSection& gridSection, const GridDims& gridDims); + static LgrCollection serializationTestObject(); + + explicit LgrCollection(const Deck& deck); size_t size() const; bool hasLgr(const std::string& lgrName) const; diff --git a/src/opm/input/eclipse/EclipseState/EclipseState.cpp b/src/opm/input/eclipse/EclipseState/EclipseState.cpp index c56e1d4a2..d5f30fd0e 100644 --- a/src/opm/input/eclipse/EclipseState/EclipseState.cpp +++ b/src/opm/input/eclipse/EclipseState/EclipseState.cpp @@ -127,7 +127,7 @@ namespace Opm { , m_inputNnc( m_inputGrid, deck) , m_gridDims( deck ) , field_props( deck, m_runspec.phases(), m_inputGrid, m_tables) - , m_lgrs( deck) + , m_lgrs( deck) , m_simulationConfig( m_eclipseConfig.init().restartRequested(), deck, field_props) , aquifer_config( m_tables, m_inputGrid, deck, field_props) , m_transMult( GridDims(deck), deck, field_props) From 0aa29411501332754c50b274105a2566e9816b2e Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Thu, 6 Jul 2023 13:04:58 +0200 Subject: [PATCH 04/13] start for unit tests --- CMakeLists_files.cmake | 1 + .../EclipseState/Grid/LgrCollection.cpp | 9 +++++++ tests/parser/LgrTests.cpp | 27 +++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 tests/parser/LgrTests.cpp diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake index dd5c8965b..1ea5bad5c 100644 --- a/CMakeLists_files.cmake +++ b/CMakeLists_files.cmake @@ -504,6 +504,7 @@ if(ENABLE_ECL_INPUT) tests/parser/ImportTests.cpp tests/parser/InitConfigTest.cpp tests/parser/IOConfigTests.cpp + tests/parser/LgrTests.cpp tests/parser/MICPTests.cpp tests/parser/MessageLimitTests.cpp tests/parser/MultiRegTests.cpp diff --git a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp index 2d586082d..26aed247b 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include @@ -59,4 +60,12 @@ namespace Opm { return m_lgrs.count( lgrName ) > 0; } + const Carfin& LgrCollection::getLgr(const std::string& lgrName) const { + return m_lgrs.get( lgrName ); + } + + Carfin& LgrCollection::getLgr(const std::string& lgrName) { + return m_lgrs.get( lgrName ); + } + } diff --git a/tests/parser/LgrTests.cpp b/tests/parser/LgrTests.cpp new file mode 100644 index 000000000..b269fd071 --- /dev/null +++ b/tests/parser/LgrTests.cpp @@ -0,0 +1,27 @@ +/* + Copyright (C) 2023 Equinor + This file is part of the Open Porous Media project (OPM). + OPM is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + OPM is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with OPM. If not, see . + */ + +#define BOOST_TEST_MODULE CarfinManagerTests + +#include + +#include + +BOOST_AUTO_TEST_CASE(CreateLgrCollection) { + Opm::LgrCollection lgrs; + BOOST_CHECK_EQUAL( lgrs.size() , 0U ); + BOOST_CHECK(! lgrs.hasLgr("NO-NotThisOne")); + BOOST_CHECK_THROW( lgrs.getLgr("NO") , std::invalid_argument ); +} From ca6f23248680d782bc913240c4ccd0e75fc12f59 Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Tue, 11 Jul 2023 11:27:45 +0200 Subject: [PATCH 05/13] expand methods --- .../EclipseState/Grid/LgrCollection.hpp | 2 ++ .../EclipseState/Grid/LgrCollection.cpp | 6 ++++++ tests/parser/LgrTests.cpp | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp index f8a8fd0c0..4de5ab97e 100644 --- a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp +++ b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp @@ -43,6 +43,8 @@ public: Carfin& getLgr(const std::string& lgrName); const Carfin& getLgr(const std::string& lgrName) const; + void addLgr(const std::string& lgrName); + template void serializeOp(Serializer& serializer) { diff --git a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp index 26aed247b..168ca6885 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp @@ -68,4 +68,10 @@ namespace Opm { return m_lgrs.get( lgrName ); } + void LgrCollection::addLgr(const std::string& lgrName) { + Carfin lgr(lgrName); + m_lgrs.insert(std::make_pair(lgr.NAME(), lgr)); + } + + } diff --git a/tests/parser/LgrTests.cpp b/tests/parser/LgrTests.cpp index b269fd071..8f1b7ee4b 100644 --- a/tests/parser/LgrTests.cpp +++ b/tests/parser/LgrTests.cpp @@ -25,3 +25,22 @@ BOOST_AUTO_TEST_CASE(CreateLgrCollection) { BOOST_CHECK(! lgrs.hasLgr("NO-NotThisOne")); BOOST_CHECK_THROW( lgrs.getLgr("NO") , std::invalid_argument ); } + +BOOST_AUTO_TEST_CASE(AddLgrsToCollection) { + Opm::LgrCollection lgrs; + + lgrs.addLgr("LGR1"); + BOOST_CHECK_EQUAL( lgrs.size() , 1U ); + BOOST_CHECK(lgrs.hasLGR("LGR1")); + + const auto& lgr1 = lgrs.getLgr("LGR1"); + const auto& lgr12 = lgrs.getLgr(0); + BOOST_CHECK_EQUAL(lgr1.getName(), lgr12.getName()); + BOOST_CHECK_EQUAL(lgr1.getName(), "LGR1"); + + lgrs.addLgr("LGR2"); + const auto& lgr2 = lgrs.getFault("LGR2"); + BOOST_CHECK_EQUAL( lgrs.size() , 2U ); + BOOST_CHECK(lgrs.hasLgr("LGR2")); + BOOST_CHECK_EQUAL( lgr2.getName() , lgrs.getLgr(1).getName()); +} \ No newline at end of file From c5f664650e900708b611db9c3b57759602d26d99 Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Mon, 17 Jul 2023 15:55:38 +0200 Subject: [PATCH 06/13] collectLGRinEclState --- .../eclipse/EclipseState/EclipseState.hpp | 1 + .../EclipseState/Grid/LgrCollection.hpp | 5 ++-- .../eclipse/EclipseState/EclipseState.cpp | 13 +++++++++- .../EclipseState/Grid/LgrCollection.cpp | 26 ++++++++++++------- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/opm/input/eclipse/EclipseState/EclipseState.hpp b/opm/input/eclipse/EclipseState/EclipseState.hpp index 91c6a8c22..c6c6d883e 100644 --- a/opm/input/eclipse/EclipseState/EclipseState.hpp +++ b/opm/input/eclipse/EclipseState/EclipseState.hpp @@ -153,6 +153,7 @@ namespace Opm { void initIOConfigPostSchedule(const Deck& deck); void assignRunTitle(const Deck& deck); void reportNumberOfActivePhases() const; + void initLgrs(const Deck& deck); void conveyNumericalAquiferEffects(); void applyMULTXYZ(); void initFaults(const Deck& deck); diff --git a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp index 4de5ab97e..45cca1187 100644 --- a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp +++ b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp @@ -21,6 +21,7 @@ #include #include #include +#include namespace Opm { @@ -32,7 +33,7 @@ namespace Opm { class LgrCollection { public: LgrCollection(); - LgrCollection(const GRIDSection& gridSection, const GridDims& gridDims); + LgrCollection(const GRIDSection& gridSection, const EclipseGrid& grid); static LgrCollection serializationTestObject(); @@ -43,7 +44,7 @@ public: Carfin& getLgr(const std::string& lgrName); const Carfin& getLgr(const std::string& lgrName) const; - void addLgr(const std::string& lgrName); + void addLgr(const EclipseGrid& grid, const DeckRecord& lgrRecord); template void serializeOp(Serializer& serializer) diff --git a/src/opm/input/eclipse/EclipseState/EclipseState.cpp b/src/opm/input/eclipse/EclipseState/EclipseState.cpp index d5f30fd0e..c015548d7 100644 --- a/src/opm/input/eclipse/EclipseState/EclipseState.cpp +++ b/src/opm/input/eclipse/EclipseState/EclipseState.cpp @@ -127,7 +127,6 @@ namespace Opm { , m_inputNnc( m_inputGrid, deck) , m_gridDims( deck ) , field_props( deck, m_runspec.phases(), m_inputGrid, m_tables) - , m_lgrs( deck) , m_simulationConfig( m_eclipseConfig.init().restartRequested(), deck, field_props) , aquifer_config( m_tables, m_inputGrid, deck, field_props) , m_transMult( GridDims(deck), deck, field_props) @@ -141,6 +140,7 @@ namespace Opm { this->conveyNumericalAquiferEffects(); this->m_inputGrid.resetACTNUM(this->field_props.actnum()); this->field_props.reset_actnum(this->getInputGrid().getACTNUM()); + this->initLgrs(deck); this->aquifer_config.load_connections(deck, this->getInputGrid()); this->applyMULTXYZ(); @@ -274,6 +274,17 @@ namespace Opm { return !m_inputNnc.input().empty(); } + void EclipseState::initLgrs(const Deck& deck) { + if (!DeckSection::hasGRID(deck)) + return; + + const GRIDSection gridSection ( deck ); + + m_lgrs = LgrCollection(gridSection, m_inputGrid); + + } + + std::string EclipseState::getTitle() const { return m_title; } diff --git a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp index 168ca6885..08cce5e7d 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -35,8 +36,7 @@ namespace Opm { TODO: Collect also lgrs from RADFIN blocks... */ - LgrCollection::LgrCollection(const GRIDSection& gridSection, - const GridDims& grid) { + LgrCollection::LgrCollection(const GRIDSection& gridSection, const EclipseGrid& grid) { const auto& lgrKeywords = gridSection.getKeywordList(); for (auto keyword_iter = lgrKeywords.begin(); keyword_iter != lgrKeywords.end(); ++keyword_iter) { @@ -45,9 +45,8 @@ namespace Opm { for (auto iter = lgrsKeyword->begin(); iter != lgrsKeyword->end(); ++iter) { const auto& lgrRecord = *iter; - const std::string& lgrName = lgrRecord.getItem(0).get< std::string >(0); - - //addLgr(lgrName); + + addLgr(grid, lgrRecord); } } } @@ -68,10 +67,17 @@ namespace Opm { return m_lgrs.get( lgrName ); } - void LgrCollection::addLgr(const std::string& lgrName) { - Carfin lgr(lgrName); - m_lgrs.insert(std::make_pair(lgr.NAME(), lgr)); + void LgrCollection::addLgr(const EclipseGrid& grid, const DeckRecord& lgrRecord) { + Carfin lgr(grid, + [&grid](const std::size_t global_index) + { + return grid.cellActive(global_index); + }, + [&grid](const std::size_t global_index) + { + return grid.activeIndex(global_index); + }); + lgr.update(lgrRecord); + m_lgrs.insert(std::make_pair(lgr.NAME(), lgr)); } - - } From c0404e798e08087a4f4a555d33f7a22cb123c91f Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Mon, 17 Jul 2023 17:24:25 +0200 Subject: [PATCH 07/13] update tests --- tests/parser/LgrTests.cpp | 50 +++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/tests/parser/LgrTests.cpp b/tests/parser/LgrTests.cpp index 8f1b7ee4b..38b0c045e 100644 --- a/tests/parser/LgrTests.cpp +++ b/tests/parser/LgrTests.cpp @@ -13,11 +13,35 @@ along with OPM. If not, see . */ -#define BOOST_TEST_MODULE CarfinManagerTests +#define BOOST_TEST_MODULE LgrTests #include +#include +#include +#include +#include #include +#include +#include + +#include + +using namespace Opm; + +namespace { + +std::string prefix() { + return boost::unit_test::framework::master_test_suite().argv[1]; +} + +Deck makeDeck(const std::string& fileName) { + Parser parser; + std::filesystem::path boxFile(fileName); + return parser.parseFile(boxFile.string()); +} + +} BOOST_AUTO_TEST_CASE(CreateLgrCollection) { Opm::LgrCollection lgrs; @@ -26,21 +50,17 @@ BOOST_AUTO_TEST_CASE(CreateLgrCollection) { BOOST_CHECK_THROW( lgrs.getLgr("NO") , std::invalid_argument ); } -BOOST_AUTO_TEST_CASE(AddLgrsToCollection) { - Opm::LgrCollection lgrs; +BOOST_AUTO_TEST_CASE(ReadLgrCollection) { + auto deck = makeDeck( prefix() + "CARFIN/CARFINTEST1" ); + Opm::EclipseState state(deck); + Opm::LgrCollection lgrs = state.getLgrs(); - lgrs.addLgr("LGR1"); - BOOST_CHECK_EQUAL( lgrs.size() , 1U ); - BOOST_CHECK(lgrs.hasLGR("LGR1")); - - const auto& lgr1 = lgrs.getLgr("LGR1"); - const auto& lgr12 = lgrs.getLgr(0); - BOOST_CHECK_EQUAL(lgr1.getName(), lgr12.getName()); - BOOST_CHECK_EQUAL(lgr1.getName(), "LGR1"); - - lgrs.addLgr("LGR2"); - const auto& lgr2 = lgrs.getFault("LGR2"); BOOST_CHECK_EQUAL( lgrs.size() , 2U ); + BOOST_CHECK(lgrs.hasLgr("LGR1")); BOOST_CHECK(lgrs.hasLgr("LGR2")); - BOOST_CHECK_EQUAL( lgr2.getName() , lgrs.getLgr(1).getName()); + + const auto& lgr1 = state.getLgrs().getLgr("LGR1"); + BOOST_CHECK_EQUAL(lgr1.NAME(), "LGR1"); + const auto& lgr2 = lgrs.getLgr("LGR2"); + BOOST_CHECK_EQUAL( lgr2.NAME() , "LGR2"); } \ No newline at end of file From fb2290a07af954d492daa837480700406c52e663 Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Tue, 18 Jul 2023 09:27:05 +0200 Subject: [PATCH 08/13] extra line --- tests/parser/LgrTests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/parser/LgrTests.cpp b/tests/parser/LgrTests.cpp index 38b0c045e..08eaec345 100644 --- a/tests/parser/LgrTests.cpp +++ b/tests/parser/LgrTests.cpp @@ -63,4 +63,4 @@ BOOST_AUTO_TEST_CASE(ReadLgrCollection) { BOOST_CHECK_EQUAL(lgr1.NAME(), "LGR1"); const auto& lgr2 = lgrs.getLgr("LGR2"); BOOST_CHECK_EQUAL( lgr2.NAME() , "LGR2"); -} \ No newline at end of file +} From 0c897eb51dc28572eaad0d550e95a407e7094e1c Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Tue, 18 Jul 2023 11:15:23 +0200 Subject: [PATCH 09/13] update for loops --- src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp index 08cce5e7d..61ad58a80 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp @@ -39,13 +39,10 @@ namespace Opm { LgrCollection::LgrCollection(const GRIDSection& gridSection, const EclipseGrid& grid) { const auto& lgrKeywords = gridSection.getKeywordList(); - for (auto keyword_iter = lgrKeywords.begin(); keyword_iter != lgrKeywords.end(); ++keyword_iter) { - const auto& lgrsKeyword = *keyword_iter; + for (const auto& lgrsKeyword : lgrKeywords) { OpmLog::info(OpmInputError::format("\nLoading lgrs from {keyword} in {file} line {line}", lgrsKeyword->location())); - for (auto iter = lgrsKeyword->begin(); iter != lgrsKeyword->end(); ++iter) { - const auto& lgrRecord = *iter; - + for (const auto& lgrRecord : *lgrsKeyword) { addLgr(grid, lgrRecord); } } From 5df7a148e9d83925d63c6a055a8b2adf486bdc6d Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Tue, 18 Jul 2023 12:02:09 +0200 Subject: [PATCH 10/13] get lgr by index --- opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp | 2 ++ .../input/eclipse/EclipseState/Grid/LgrCollection.cpp | 9 +++++++++ tests/parser/LgrTests.cpp | 3 +++ 3 files changed, 14 insertions(+) diff --git a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp index 45cca1187..98236cdab 100644 --- a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp +++ b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp @@ -43,6 +43,8 @@ public: bool hasLgr(const std::string& lgrName) const; Carfin& getLgr(const std::string& lgrName); const Carfin& getLgr(const std::string& lgrName) const; + Carfin& getLgr(size_t lgrIndex); + const Carfin& getLgr(size_t lgrIndex) const; void addLgr(const EclipseGrid& grid, const DeckRecord& lgrRecord); diff --git a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp index 61ad58a80..bbb7c79cd 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp @@ -64,6 +64,15 @@ namespace Opm { return m_lgrs.get( lgrName ); } + const Carfin& LgrCollection::getLgr(size_t lgrIndex) const { + return m_lgrs.iget( lgrIndex ); + } + + Carfin& LgrCollection::getLgr(size_t lgrIndex) { + return m_lgrs.iget( lgrIndex ); + } + + void LgrCollection::addLgr(const EclipseGrid& grid, const DeckRecord& lgrRecord) { Carfin lgr(grid, [&grid](const std::size_t global_index) diff --git a/tests/parser/LgrTests.cpp b/tests/parser/LgrTests.cpp index 08eaec345..54db34afe 100644 --- a/tests/parser/LgrTests.cpp +++ b/tests/parser/LgrTests.cpp @@ -63,4 +63,7 @@ BOOST_AUTO_TEST_CASE(ReadLgrCollection) { BOOST_CHECK_EQUAL(lgr1.NAME(), "LGR1"); const auto& lgr2 = lgrs.getLgr("LGR2"); BOOST_CHECK_EQUAL( lgr2.NAME() , "LGR2"); + + const auto& lgr3 = state.getLgrs().getLgr(0); + BOOST_CHECK_EQUAL( lgr1.NAME() , lgr3.NAME()); } From 1c780e78f418c57c35c82d318e6974d174401810 Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Tue, 18 Jul 2023 16:42:11 +0200 Subject: [PATCH 11/13] towards serialization --- opm/input/eclipse/EclipseState/Grid/Carfin.hpp | 11 +++++++++++ opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp | 2 ++ src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp | 9 +++++++++ .../input/eclipse/EclipseState/Grid/LgrCollection.cpp | 5 ++++- 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/opm/input/eclipse/EclipseState/Grid/Carfin.hpp b/opm/input/eclipse/EclipseState/Grid/Carfin.hpp index 1751c766b..dde3b18c6 100644 --- a/opm/input/eclipse/EclipseState/Grid/Carfin.hpp +++ b/opm/input/eclipse/EclipseState/Grid/Carfin.hpp @@ -55,6 +55,8 @@ namespace Opm {} }; + Carfin() = default; + explicit Carfin(const std::string& lgrName); explicit Carfin(const GridDims& gridDims, IsActive isActive, @@ -93,6 +95,15 @@ namespace Opm int NY() const; int NZ() const; + template + void serializeOp(Serializer& serializer) + { + serializer(m_dims); + serializer(m_offset); + serializer(m_end_offset); + serializer(name_grid); + } + private: GridDims m_globalGridDims_{}; IsActive m_globalIsActive_{}; diff --git a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp index 98236cdab..b62a67172 100644 --- a/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp +++ b/opm/input/eclipse/EclipseState/Grid/LgrCollection.hpp @@ -48,6 +48,8 @@ public: void addLgr(const EclipseGrid& grid, const DeckRecord& lgrRecord); + bool operator==(const LgrCollection& data) const; + template void serializeOp(Serializer& serializer) { diff --git a/src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp b/src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp index 1fa74c749..59f4de049 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp @@ -75,6 +75,15 @@ namespace { namespace Opm { + + Carfin::Carfin(const std::string& lgrName) : + m_dims({2,2,2}), + m_offset({1,1,1}), + m_end_offset({2,2,2}), + name_grid(lgrName) + { + } + Carfin::Carfin(const GridDims& gridDims, IsActive isActive, ActiveIdx activeIdx) diff --git a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp index bbb7c79cd..09ace17fc 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/LgrCollection.cpp @@ -24,7 +24,6 @@ #include #include - namespace Opm { @@ -86,4 +85,8 @@ namespace Opm { lgr.update(lgrRecord); m_lgrs.insert(std::make_pair(lgr.NAME(), lgr)); } + + bool LgrCollection::operator==(const LgrCollection& data) const { + return this->m_lgrs == data.m_lgrs; + } } From d23b045905f0c995888b450aebe06cb08f5c149d Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Wed, 19 Jul 2023 11:18:15 +0200 Subject: [PATCH 12/13] delete prefix for testing --- tests/parser/LgrTests.cpp | 78 +++++++++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 16 deletions(-) diff --git a/tests/parser/LgrTests.cpp b/tests/parser/LgrTests.cpp index 54db34afe..731096b0b 100644 --- a/tests/parser/LgrTests.cpp +++ b/tests/parser/LgrTests.cpp @@ -29,20 +29,6 @@ using namespace Opm; -namespace { - -std::string prefix() { - return boost::unit_test::framework::master_test_suite().argv[1]; -} - -Deck makeDeck(const std::string& fileName) { - Parser parser; - std::filesystem::path boxFile(fileName); - return parser.parseFile(boxFile.string()); -} - -} - BOOST_AUTO_TEST_CASE(CreateLgrCollection) { Opm::LgrCollection lgrs; BOOST_CHECK_EQUAL( lgrs.size() , 0U ); @@ -50,8 +36,68 @@ BOOST_AUTO_TEST_CASE(CreateLgrCollection) { BOOST_CHECK_THROW( lgrs.getLgr("NO") , std::invalid_argument ); } -BOOST_AUTO_TEST_CASE(ReadLgrCollection) { - auto deck = makeDeck( prefix() + "CARFIN/CARFINTEST1" ); +BOOST_AUTO_TEST_CASE(ReadLgrCollection) { + const std::string deck_string = R"( +RUNSPEC + +DIMENS + 10 10 10 / + +GRID + +CARFIN +-- NAME I1-I2 J1-J2 K1-K2 NX NY NZ +'LGR1' 5 6 5 6 1 3 6 6 9 / +ENDFIN + +CARFIN +-- NAME I1-I2 J1-J2 K1-K2 NX NY NZ +'LGR2' 7 8 7 8 1 3 8 8 9 / +ENDFIN + + +DX +1000*1 / +DY +1000*1 / +DZ +1000*1 / +TOPS +100*1 / + +PORO + 1000*0.15 / + +PERMX + 1000*1 / + +COPY + PERMX PERMZ / + PERMX PERMY / +/ + +EDIT + +OIL +GAS + +TITLE +The title + +START +16 JUN 1988 / + +PROPS + +REGIONS + +SOLUTION + +SCHEDULE +)"; + + Opm::Parser parser; + Opm::Deck deck = parser.parseString(deck_string); Opm::EclipseState state(deck); Opm::LgrCollection lgrs = state.getLgrs(); From 946462e377892671274336c425859e027c8a2fb3 Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Thu, 20 Jul 2023 11:15:23 +0200 Subject: [PATCH 13/13] delete carfin from string --- opm/input/eclipse/EclipseState/Grid/Carfin.hpp | 1 - src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp | 8 -------- 2 files changed, 9 deletions(-) diff --git a/opm/input/eclipse/EclipseState/Grid/Carfin.hpp b/opm/input/eclipse/EclipseState/Grid/Carfin.hpp index dde3b18c6..0c7c1bad5 100644 --- a/opm/input/eclipse/EclipseState/Grid/Carfin.hpp +++ b/opm/input/eclipse/EclipseState/Grid/Carfin.hpp @@ -56,7 +56,6 @@ namespace Opm }; Carfin() = default; - explicit Carfin(const std::string& lgrName); explicit Carfin(const GridDims& gridDims, IsActive isActive, diff --git a/src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp b/src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp index 59f4de049..188b6ccad 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/Carfin.cpp @@ -76,14 +76,6 @@ namespace { namespace Opm { - Carfin::Carfin(const std::string& lgrName) : - m_dims({2,2,2}), - m_offset({1,1,1}), - m_end_offset({2,2,2}), - name_grid(lgrName) - { - } - Carfin::Carfin(const GridDims& gridDims, IsActive isActive, ActiveIdx activeIdx)