From 584a93d9eb03c704e9d63a64de8c545abfca8cce Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 7 Aug 2014 14:48:38 +0200 Subject: [PATCH] Added RigResultModifier --- .../ReservoirDataModel/CMakeLists_files.cmake | 1 + .../ReservoirDataModel/RigResultModifier.h | 88 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 ApplicationCode/ReservoirDataModel/RigResultModifier.h diff --git a/ApplicationCode/ReservoirDataModel/CMakeLists_files.cmake b/ApplicationCode/ReservoirDataModel/CMakeLists_files.cmake index 53420405e8..1da15926a7 100644 --- a/ApplicationCode/ReservoirDataModel/CMakeLists_files.cmake +++ b/ApplicationCode/ReservoirDataModel/CMakeLists_files.cmake @@ -16,6 +16,7 @@ ${CEE_CURRENT_LIST_DIR}RigAllGridCellsResultAccessor.h ${CEE_CURRENT_LIST_DIR}RigActiveCellsResultAccessor.h ${CEE_CURRENT_LIST_DIR}RigCellEdgeResultAccessor.h ${CEE_CURRENT_LIST_DIR}RigCombTransResultAccessor.h +${CEE_CURRENT_LIST_DIR}RigResultModifier.h ${CEE_CURRENT_LIST_DIR}RigLocalGrid.h ${CEE_CURRENT_LIST_DIR}RigMainGrid.h ${CEE_CURRENT_LIST_DIR}RigReservoirBuilderMock.h diff --git a/ApplicationCode/ReservoirDataModel/RigResultModifier.h b/ApplicationCode/ReservoirDataModel/RigResultModifier.h new file mode 100644 index 0000000000..3ab82e3462 --- /dev/null +++ b/ApplicationCode/ReservoirDataModel/RigResultModifier.h @@ -0,0 +1,88 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) Statoil ASA, Ceetron Solutions AS +// +// ResInsight 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. +// +// ResInsight 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 at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#pragma once + + +//================================================================================================== +/// +//================================================================================================== +class RigResultModifier : public cvf::Object +{ +public: + virtual void setCellScalar(size_t gridLocalCellIndex, double scalarValue) = 0; +}; + + + +//================================================================================================== +/// +//================================================================================================== +class RigAllGridCellsResultModifier : public RigResultModifier +{ +public: + RigAllGridCellsResultModifier(const RigGridBase* grid, std::vector* reservoirResultValues) + : m_grid(grid), + m_reservoirResultValues(reservoirResultValues) + { + } + + virtual void setCellScalar(size_t gridLocalCellIndex, double scalarValue) + { + size_t globalGridCellIndex = m_grid->globalGridCellIndex(gridLocalCellIndex); + CVF_TIGHT_ASSERT(globalGridCellIndex < m_reservoirResultValues->size()); + + (*m_reservoirResultValues)[globalGridCellIndex] = scalarValue; + } + +private: + const RigGridBase* m_grid; + std::vector* m_reservoirResultValues; +}; + + +//================================================================================================== +/// +//================================================================================================== +class RigActiveCellsResultModifier : public RigResultModifier +{ +public: + RigActiveCellsResultModifier(const RigGridBase* grid, std::vector* reservoirResultValues, const RigActiveCellInfo* activeCellInfo) + : m_grid(grid), + m_reservoirResultValues(reservoirResultValues), + m_activeCellInfo(activeCellInfo) + { + } + + virtual void setCellScalar(size_t gridLocalCellIndex, double scalarValue) + { + size_t globalGridCellIndex = m_grid->globalGridCellIndex(gridLocalCellIndex); + size_t resultValueIndex = m_activeCellInfo->cellResultIndex(globalGridCellIndex); + + CVF_TIGHT_ASSERT(m_reservoirResultValues != NULL && resultValueIndex < m_reservoirResultValues->size()); + + (*m_reservoirResultValues)[resultValueIndex] = scalarValue; + } + + +private: + const RigActiveCellInfo* m_activeCellInfo; + const RigGridBase* m_grid; + std::vector* m_reservoirResultValues; +}; +