OPM-188: Added EclipseReader class for read of Restart wellstate data
This commit is contained in:
parent
80dd0ef570
commit
6283a8621b
@ -41,6 +41,7 @@ list (APPEND MAIN_SOURCE_FILES
|
|||||||
opm/core/grid/cpgpreprocess/uniquepoints.c
|
opm/core/grid/cpgpreprocess/uniquepoints.c
|
||||||
opm/core/io/eclipse/EclipseGridInspector.cpp
|
opm/core/io/eclipse/EclipseGridInspector.cpp
|
||||||
opm/core/io/eclipse/EclipseWriter.cpp
|
opm/core/io/eclipse/EclipseWriter.cpp
|
||||||
|
opm/core/io/eclipse/EclipseReader.cpp
|
||||||
opm/core/io/eclipse/EclipseWriteRFTHandler.cpp
|
opm/core/io/eclipse/EclipseWriteRFTHandler.cpp
|
||||||
opm/core/io/eclipse/writeECLData.cpp
|
opm/core/io/eclipse/writeECLData.cpp
|
||||||
opm/core/io/OutputWriter.cpp
|
opm/core/io/OutputWriter.cpp
|
||||||
@ -289,6 +290,7 @@ list (APPEND PUBLIC_HEADER_FILES
|
|||||||
opm/core/io/eclipse/EclipseGridInspector.hpp
|
opm/core/io/eclipse/EclipseGridInspector.hpp
|
||||||
opm/core/io/eclipse/EclipseUnits.hpp
|
opm/core/io/eclipse/EclipseUnits.hpp
|
||||||
opm/core/io/eclipse/EclipseWriter.hpp
|
opm/core/io/eclipse/EclipseWriter.hpp
|
||||||
|
opm/core/io/eclipse/EclipseReader.hpp
|
||||||
opm/core/io/eclipse/EclipseWriteRFTHandler.hpp
|
opm/core/io/eclipse/EclipseWriteRFTHandler.hpp
|
||||||
opm/core/io/eclipse/writeECLData.hpp
|
opm/core/io/eclipse/writeECLData.hpp
|
||||||
opm/core/io/OutputWriter.hpp
|
opm/core/io/OutputWriter.hpp
|
||||||
|
62
opm/core/io/eclipse/EclipseReader.cpp
Normal file
62
opm/core/io/eclipse/EclipseReader.cpp
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 Statoil ASA.
|
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "EclipseReader.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <opm/core/simulator/WellState.hpp>
|
||||||
|
|
||||||
|
#include <ert/ecl/ecl_file.h>
|
||||||
|
|
||||||
|
namespace Opm
|
||||||
|
{
|
||||||
|
void restoreOPM_XWELKeyword(const std::string restart_filename, int reportstep, WellState& wellstate)
|
||||||
|
{
|
||||||
|
const char * keyword = "OPM_XWEL";
|
||||||
|
const char* filename = restart_filename.c_str();
|
||||||
|
|
||||||
|
ecl_file_type* file_type = ecl_file_open(filename, 0);
|
||||||
|
bool block_selected = ecl_file_select_rstblock_report_step(file_type , reportstep);
|
||||||
|
|
||||||
|
if (block_selected) {
|
||||||
|
ecl_kw_type* xwel = ecl_file_iget_named_kw(file_type , keyword, 0);
|
||||||
|
const double* xwel_data = ecl_kw_get_double_ptr(xwel);
|
||||||
|
size_t offset = 0;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < wellstate.bhp().size(); ++i) {
|
||||||
|
wellstate.bhp()[i] = xwel_data[offset++];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < wellstate.perfPress().size(); ++i) {
|
||||||
|
wellstate.perfPress()[i] = xwel_data[offset++];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < wellstate.perfRates().size(); ++i) {
|
||||||
|
wellstate.perfRates()[i] = xwel_data[offset++];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < wellstate.temperature().size(); ++i) {
|
||||||
|
wellstate.temperature()[i] = xwel_data[offset++];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < wellstate.wellRates().size(); ++i) {
|
||||||
|
wellstate.wellRates()[i] = xwel_data[offset++];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // namespace Opm
|
23
opm/core/io/eclipse/EclipseReader.hpp
Normal file
23
opm/core/io/eclipse/EclipseReader.hpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#ifndef ECLIPSEREADER_HPP
|
||||||
|
#define ECLIPSEREADER_HPP
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <opm/core/simulator/WellState.hpp>
|
||||||
|
|
||||||
|
namespace Opm
|
||||||
|
{
|
||||||
|
///
|
||||||
|
/// \brief restoreOPM_XWELKeyword
|
||||||
|
/// Reading from the restart file, information stored under the OPM_XWEL keyword is in this method filled into
|
||||||
|
/// an instance of a wellstate object.
|
||||||
|
/// \param restart_filename
|
||||||
|
/// The filename of the restart file.
|
||||||
|
/// \param reportstep
|
||||||
|
/// The report step to restart from.
|
||||||
|
/// \param wellstate
|
||||||
|
/// An instance of a WellState object, with correct size for each of the 5 contained std::vector<double> objects.
|
||||||
|
///
|
||||||
|
void restoreOPM_XWELKeyword(const std::string restart_filename, int report_step, WellState& wellState);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // ECLIPSEREADER_HPP
|
Loading…
Reference in New Issue
Block a user