mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-24 22:27:55 -05:00
#12957 Sector Model Export: introduce RigRefinement interface hierarchy
Replace the monolithic RigNonUniformRefinement class with a proper polymorphic hierarchy: RigRefinement (abstract base), RigNoRefinement (identity), RigUniformRefinement (O(1) uniform), and RigNonUniformRefinement (per-cell custom fractions). Ownership uses std::unique_ptr<RigRefinement>, consumers receive const RigRefinement&. This eliminates the misleading class name, removes effectiveRefinement() indirection, and gives each refinement mode an appropriately optimized implementation.
This commit is contained in:
1 parent
4aa0910db3
commit
3067823e71
33 files changed
+922
-796
No files matched your search
@@ -18,7 +18,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RigNonUniformRefinement.h"
|
||||
#include "RigRefinement.h"
|
||||
|
||||
#include "cafVecIjk.h"
|
||||
#include "cvfArray.h"
|
||||
@@ -79,45 +79,29 @@ public:
|
||||
static std::expected<void, QString>
|
||||
exportSimulationInput( RimEclipseCase& eclipseCase, const RigSimulationInputSettings& settings, cvf::UByteArray* visibility );
|
||||
|
||||
static std::expected<Opm::DeckRecord, QString> processEqualsRecord( const Opm::DeckRecord& record,
|
||||
const caf::VecIjk0& min,
|
||||
const caf::VecIjk0& max,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::expected<Opm::DeckRecord, QString>
|
||||
processEqualsRecord( const Opm::DeckRecord& record, const caf::VecIjk0& min, const caf::VecIjk0& max, const RigRefinement& refinement );
|
||||
|
||||
static std::expected<Opm::DeckRecord, QString> processMultiplyRecord( const Opm::DeckRecord& record,
|
||||
const caf::VecIjk0& min,
|
||||
const caf::VecIjk0& max,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::expected<Opm::DeckRecord, QString>
|
||||
processMultiplyRecord( const Opm::DeckRecord& record, const caf::VecIjk0& min, const caf::VecIjk0& max, const RigRefinement& refinement );
|
||||
|
||||
static std::expected<Opm::DeckRecord, QString> processBoxRecord( const Opm::DeckRecord& record,
|
||||
const caf::VecIjk0& min,
|
||||
const caf::VecIjk0& max,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::expected<Opm::DeckRecord, QString>
|
||||
processBoxRecord( const Opm::DeckRecord& record, const caf::VecIjk0& min, const caf::VecIjk0& max, const RigRefinement& refinement );
|
||||
|
||||
static std::expected<Opm::DeckRecord, QString> processCopyRecord( const Opm::DeckRecord& record,
|
||||
const caf::VecIjk0& min,
|
||||
const caf::VecIjk0& max,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::expected<Opm::DeckRecord, QString>
|
||||
processCopyRecord( const Opm::DeckRecord& record, const caf::VecIjk0& min, const caf::VecIjk0& max, const RigRefinement& refinement );
|
||||
|
||||
static std::expected<Opm::DeckRecord, QString> processAddRecord( const Opm::DeckRecord& record,
|
||||
const caf::VecIjk0& min,
|
||||
const caf::VecIjk0& max,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::expected<Opm::DeckRecord, QString>
|
||||
processAddRecord( const Opm::DeckRecord& record, const caf::VecIjk0& min, const caf::VecIjk0& max, const RigRefinement& refinement );
|
||||
|
||||
static std::expected<Opm::DeckRecord, QString> processAquconRecord( const Opm::DeckRecord& record,
|
||||
const caf::VecIjk0& min,
|
||||
const caf::VecIjk0& max,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::expected<Opm::DeckRecord, QString>
|
||||
processAquconRecord( const Opm::DeckRecord& record, const caf::VecIjk0& min, const caf::VecIjk0& max, const RigRefinement& refinement );
|
||||
|
||||
static std::expected<Opm::DeckRecord, QString> processAquanconRecord( const Opm::DeckRecord& record,
|
||||
const caf::VecIjk0& min,
|
||||
const caf::VecIjk0& max,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::expected<Opm::DeckRecord, QString>
|
||||
processAquanconRecord( const Opm::DeckRecord& record, const caf::VecIjk0& min, const caf::VecIjk0& max, const RigRefinement& refinement );
|
||||
|
||||
static std::expected<Opm::DeckRecord, QString> processAqunumRecord( const Opm::DeckRecord& record,
|
||||
const caf::VecIjk0& min,
|
||||
const caf::VecIjk0& max,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::expected<Opm::DeckRecord, QString>
|
||||
processAqunumRecord( const Opm::DeckRecord& record, const caf::VecIjk0& min, const caf::VecIjk0& max, const RigRefinement& refinement );
|
||||
|
||||
static std::vector<int> createRefinedVisibility( const RigGridExportAdapter& gridAdapter );
|
||||
|
||||
@@ -130,18 +114,18 @@ public:
|
||||
const RigMainGrid& mainGrid,
|
||||
const caf::VecIjk0& min,
|
||||
const caf::VecIjk0& max );
|
||||
static std::expected<TransformedNNCConnection, QString> transformNNCToSectorCoordinates( const NNCConnection& connection,
|
||||
const RigMainGrid& mainGrid,
|
||||
const caf::VecIjk0& min,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::vector<TransformedNNCConnection> refineEditNncConnection( const NNCConnection& connection,
|
||||
const RigMainGrid& mainGrid,
|
||||
const caf::VecIjk0& min,
|
||||
const RigNonUniformRefinement& refinement );
|
||||
static std::expected<TransformedNNCConnection, QString> transformNNCToSectorCoordinates( const NNCConnection& connection,
|
||||
const RigMainGrid& mainGrid,
|
||||
const caf::VecIjk0& min,
|
||||
const RigRefinement& refinement );
|
||||
static std::vector<TransformedNNCConnection> refineEditNncConnection( const NNCConnection& connection,
|
||||
const RigMainGrid& mainGrid,
|
||||
const caf::VecIjk0& min,
|
||||
const RigRefinement& refinement );
|
||||
|
||||
// Generic helper for processing keywords with box indices
|
||||
using RecordProcessorFunc =
|
||||
std::function<std::expected<Opm::DeckRecord, QString>( const Opm::DeckRecord&, const caf::VecIjk0&, const caf::VecIjk0&, const RigNonUniformRefinement& )>;
|
||||
std::function<std::expected<Opm::DeckRecord, QString>( const Opm::DeckRecord&, const caf::VecIjk0&, const caf::VecIjk0&, const RigRefinement& )>;
|
||||
|
||||
private:
|
||||
static std::expected<void, QString> updateCornerPointGridInDeckFile( RimEclipseCase* eclipseCase,
|
||||
@@ -192,7 +176,7 @@ private:
|
||||
static std::expected<void, QString> applyModelPadding( RifOpmFlowDeckFile& deckFile, const RigModelPaddingSettings& paddingSettings );
|
||||
|
||||
// Utility: Transform global IJK to sector-relative coordinates with refinement
|
||||
static caf::VecIjk0 transformToSectorCoordinates( const caf::VecIjk0& globalIjk, const caf::VecIjk0& min, const RigNonUniformRefinement& refinement );
|
||||
static caf::VecIjk0 transformToSectorCoordinates( const caf::VecIjk0& globalIjk, const caf::VecIjk0& min, const RigRefinement& refinement );
|
||||
|
||||
static std::expected<void, QString> addOperNumRegionAndOperater( RifOpmFlowDeckFile& deckFile,
|
||||
const RigGridExportAdapter& gridAdapter,
|
||||
@@ -225,7 +209,7 @@ private:
|
||||
transformBoxToSectorCoordinates( const RigBoundingBoxIjk<caf::VecIjk0>& inputBox,
|
||||
const caf::VecIjk0& sectorMin,
|
||||
const caf::VecIjk0& sectorMax,
|
||||
const RigNonUniformRefinement& refinement,
|
||||
const RigRefinement& refinement,
|
||||
const QString& keywordName,
|
||||
const QString& recordIdentifier );
|
||||
|
||||
|
||||
Reference in new issue
Block a user