mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 15:10:22 -05:00
#12957 Sector Model Export: unified refinement abstraction via effectiveRefinement()
Add effectiveRefinement() to RicRefinementSettings, RicExportSectorModelUi, and RigSimulationInputSettings, always returning RigNonUniformRefinement regardless of whether uniform, non-uniform, or no refinement is active. Merge the dual RigGridExportAdapter constructors into a single one taking RigNonUniformRefinement, and unify transformIjkToSectorCoordinates to a single overload. Eliminate all hasNonUniformRefinement() branching patterns in RigSimulationInputTool.cpp in favour of effectiveRefinement().
This commit is contained in:
1 parent
e8a1431c36
commit
5d6aba0f70
19 files changed
+367
-452
No files matched your search
@@ -237,27 +237,28 @@ std::pair<std::vector<int>, int> generateOperNumResult( RimEclipseCase*
|
||||
auto mainGrid = eclipseCase->eclipseCaseData()->mainGrid();
|
||||
if ( mainGrid )
|
||||
{
|
||||
cvf::Vec3st originalMin = gridAdapter.originalMin();
|
||||
cvf::Vec3st refinement = gridAdapter.refinement();
|
||||
cvf::Vec3st originalMin = gridAdapter.originalMin();
|
||||
const RigNonUniformRefinement& ref = gridAdapter.nonUniformRefinement();
|
||||
|
||||
// Refine the OPERNUM data to match the refined grid
|
||||
// Each original cell is subdivided into refinement.x * refinement.y * refinement.z subcells
|
||||
size_t refinedNI = gridAdapter.cellCountI();
|
||||
size_t refinedNJ = gridAdapter.cellCountJ();
|
||||
size_t refinedNK = gridAdapter.cellCountK();
|
||||
|
||||
for ( size_t rk = 0; rk < refinedNK; ++rk )
|
||||
{
|
||||
auto [sectorK, subK] = ref.mapRefinedToOriginal( RigNonUniformRefinement::DimK, rk );
|
||||
for ( size_t rj = 0; rj < refinedNJ; ++rj )
|
||||
{
|
||||
auto [sectorJ, subJ] = ref.mapRefinedToOriginal( RigNonUniformRefinement::DimJ, rj );
|
||||
for ( size_t ri = 0; ri < refinedNI; ++ri )
|
||||
{
|
||||
// Calculate which original cell this refined cell belongs to
|
||||
size_t origI = originalMin.x() + ri / refinement.x();
|
||||
size_t origJ = originalMin.y() + rj / refinement.y();
|
||||
size_t origK = originalMin.z() + rk / refinement.z();
|
||||
auto [sectorI, subI] = ref.mapRefinedToOriginal( RigNonUniformRefinement::DimI, ri );
|
||||
|
||||
// Get the OPERNUM value from the original grid
|
||||
size_t origI = originalMin.x() + sectorI;
|
||||
size_t origJ = originalMin.y() + sectorJ;
|
||||
size_t origK = originalMin.z() + sectorK;
|
||||
size_t origCellIdx = mainGrid->cellIndexFromIJK( origI, origJ, origK );
|
||||
|
||||
if ( origCellIdx < resultValues.size() )
|
||||
|
||||
Reference in new issue
Block a user