Only active cells (#1298)
Use FieldProps implementation for 3D properties
This commit is contained in:
parent
13b3d1e17b
commit
ecb5fce19b
@ -98,7 +98,6 @@ namespace Opm {
|
|||||||
bool hasInputEDITNNC() const;
|
bool hasInputEDITNNC() const;
|
||||||
|
|
||||||
const FieldPropsManager& fieldProps() const;
|
const FieldPropsManager& fieldProps() const;
|
||||||
const Eclipse3DProperties& get3DProperties() const;
|
|
||||||
const TableManager& getTableManager() const;
|
const TableManager& getTableManager() const;
|
||||||
const EclipseConfig& getEclipseConfig() const;
|
const EclipseConfig& getEclipseConfig() const;
|
||||||
const EclipseConfig& cfg() const;
|
const EclipseConfig& cfg() const;
|
||||||
@ -132,7 +131,6 @@ namespace Opm {
|
|||||||
NNC m_inputNnc;
|
NNC m_inputNnc;
|
||||||
EDITNNC m_inputEditNnc;
|
EDITNNC m_inputEditNnc;
|
||||||
EclipseGrid m_inputGrid;
|
EclipseGrid m_inputGrid;
|
||||||
Eclipse3DProperties m_eclipseProperties;
|
|
||||||
FieldPropsManager field_props;
|
FieldPropsManager field_props;
|
||||||
const SimulationConfig m_simulationConfig;
|
const SimulationConfig m_simulationConfig;
|
||||||
TransMult m_transMult;
|
TransMult m_transMult;
|
||||||
|
@ -213,6 +213,18 @@ public:
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
std::vector<std::string> keys() const;
|
std::vector<std::string> keys() const;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Don't understand why - but these are needed to work with opm-simulators heavily templated code?!
|
||||||
|
*/
|
||||||
|
const std::vector<int>& get_int(const std::string& keyword) const { return this->get<int>(keyword); }
|
||||||
|
std::vector<int> get_global_int(const std::string& keyword) const { return this->get_global<int>(keyword); }
|
||||||
|
|
||||||
|
const std::vector<double>& get_double(const std::string& keyword) const { return this->get<double>(keyword); }
|
||||||
|
std::vector<double> get_global_double(const std::string& keyword) const { return this->get_global<double>(keyword); }
|
||||||
|
|
||||||
|
bool has_int(const std::string& keyword) const { return this->has<int>(keyword); }
|
||||||
|
bool has_double(const std::string& keyword) const { return this->has<double>(keyword); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<FieldProps> fp;
|
std::shared_ptr<FieldProps> fp;
|
||||||
};
|
};
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
#define OPM_PARSER_MULTREGTSCANNER_HPP
|
#define OPM_PARSER_MULTREGTSCANNER_HPP
|
||||||
|
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/FieldPropsManager.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/FieldPropsManager.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Eclipse3DProperties.hpp>
|
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/FaceDir.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/FaceDir.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Util/Value.hpp>
|
#include <opm/parser/eclipse/EclipseState/Util/Value.hpp>
|
||||||
|
|
||||||
@ -70,7 +69,6 @@ namespace Opm {
|
|||||||
public:
|
public:
|
||||||
MULTREGTScanner(const GridDims& grid,
|
MULTREGTScanner(const GridDims& grid,
|
||||||
const FieldPropsManager& fp_arg,
|
const FieldPropsManager& fp_arg,
|
||||||
const Eclipse3DProperties& e3DProps,
|
|
||||||
const std::vector< const DeckKeyword* >& keywords);
|
const std::vector< const DeckKeyword* >& keywords);
|
||||||
double getRegionMultiplier(size_t globalCellIdx1, size_t globalCellIdx2, FaceDir::DirEnum faceDir) const;
|
double getRegionMultiplier(size_t globalCellIdx1, size_t globalCellIdx2, FaceDir::DirEnum faceDir) const;
|
||||||
|
|
||||||
@ -79,7 +77,6 @@ namespace Opm {
|
|||||||
void assertKeywordSupported(const DeckKeyword& deckKeyword);
|
void assertKeywordSupported(const DeckKeyword& deckKeyword);
|
||||||
std::size_t nx,ny,nz;
|
std::size_t nx,ny,nz;
|
||||||
const FieldPropsManager& fp;
|
const FieldPropsManager& fp;
|
||||||
const Eclipse3DProperties& m_e3DProps;
|
|
||||||
std::vector< MULTREGTRecord > m_records;
|
std::vector< MULTREGTRecord > m_records;
|
||||||
std::map<std::string , MULTREGTSearchMap> m_searchMap;
|
std::map<std::string , MULTREGTSearchMap> m_searchMap;
|
||||||
std::map<std::string, std::vector<int>> regions;
|
std::map<std::string, std::vector<int>> regions;
|
||||||
|
@ -41,14 +41,13 @@ namespace Opm {
|
|||||||
template< typename > class GridProperty;
|
template< typename > class GridProperty;
|
||||||
class Fault;
|
class Fault;
|
||||||
class FaultCollection;
|
class FaultCollection;
|
||||||
class Eclipse3DProperties;
|
|
||||||
class DeckKeyword;
|
class DeckKeyword;
|
||||||
class FieldPropsManager;
|
class FieldPropsManager;
|
||||||
|
|
||||||
class TransMult {
|
class TransMult {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TransMult(const GridDims& dims, const Deck& deck, const FieldPropsManager& fp, const Eclipse3DProperties& props);
|
TransMult(const GridDims& dims, const Deck& deck, const FieldPropsManager& fp);
|
||||||
double getMultiplier(size_t globalIndex, FaceDir::DirEnum faceDir) const;
|
double getMultiplier(size_t globalIndex, FaceDir::DirEnum faceDir) const;
|
||||||
double getMultiplier(size_t i , size_t j , size_t k, FaceDir::DirEnum faceDir) const;
|
double getMultiplier(size_t i , size_t j , size_t k, FaceDir::DirEnum faceDir) const;
|
||||||
double getRegionMultiplier( size_t globalCellIndex1, size_t globalCellIndex2, FaceDir::DirEnum faceDir) const;
|
double getRegionMultiplier( size_t globalCellIndex1, size_t globalCellIndex2, FaceDir::DirEnum faceDir) const;
|
||||||
|
@ -95,7 +95,6 @@ namespace Opm
|
|||||||
class DeckKeyword;
|
class DeckKeyword;
|
||||||
class DeckRecord;
|
class DeckRecord;
|
||||||
class EclipseGrid;
|
class EclipseGrid;
|
||||||
class Eclipse3DProperties;
|
|
||||||
class EclipseState;
|
class EclipseState;
|
||||||
class FieldPropsManager;
|
class FieldPropsManager;
|
||||||
class Runspec;
|
class Runspec;
|
||||||
@ -119,7 +118,6 @@ namespace Opm
|
|||||||
Schedule(const Deck& deck,
|
Schedule(const Deck& deck,
|
||||||
const EclipseGrid& grid,
|
const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp,
|
||||||
const Eclipse3DProperties& eclipseProperties,
|
|
||||||
const Runspec &runspec,
|
const Runspec &runspec,
|
||||||
const ParseContext& parseContext,
|
const ParseContext& parseContext,
|
||||||
ErrorGuard& errors);
|
ErrorGuard& errors);
|
||||||
@ -128,7 +126,6 @@ namespace Opm
|
|||||||
Schedule(const Deck& deck,
|
Schedule(const Deck& deck,
|
||||||
const EclipseGrid& grid,
|
const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp,
|
||||||
const Eclipse3DProperties& eclipseProperties,
|
|
||||||
const Runspec &runspec,
|
const Runspec &runspec,
|
||||||
const ParseContext& parseContext,
|
const ParseContext& parseContext,
|
||||||
T&& errors);
|
T&& errors);
|
||||||
@ -136,7 +133,6 @@ namespace Opm
|
|||||||
Schedule(const Deck& deck,
|
Schedule(const Deck& deck,
|
||||||
const EclipseGrid& grid,
|
const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp,
|
||||||
const Eclipse3DProperties& eclipseProperties,
|
|
||||||
const Runspec &runspec);
|
const Runspec &runspec);
|
||||||
|
|
||||||
Schedule(const Deck& deck,
|
Schedule(const Deck& deck,
|
||||||
@ -316,8 +312,7 @@ namespace Opm
|
|||||||
bool updateWellStatus( const std::string& well, size_t reportStep , Well::Status status, bool update_connections);
|
bool updateWellStatus( const std::string& well, size_t reportStep , Well::Status status, bool update_connections);
|
||||||
void addWellToGroup( const std::string& group_name, const std::string& well_name , size_t timeStep);
|
void addWellToGroup( const std::string& group_name, const std::string& well_name , size_t timeStep);
|
||||||
void iterateScheduleSection(const ParseContext& parseContext , ErrorGuard& errors, const SCHEDULESection& , const EclipseGrid& grid,
|
void iterateScheduleSection(const ParseContext& parseContext , ErrorGuard& errors, const SCHEDULESection& , const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp);
|
||||||
const Eclipse3DProperties& eclipseProperties);
|
|
||||||
void addACTIONX(const Action::ActionX& action, std::size_t currentStep);
|
void addACTIONX(const Action::ActionX& action, std::size_t currentStep);
|
||||||
void addGroupToGroup( const std::string& parent_group, const std::string& child_group, size_t timeStep);
|
void addGroupToGroup( const std::string& parent_group, const std::string& child_group, size_t timeStep);
|
||||||
void addGroupToGroup( const std::string& parent_group, const Group& child_group, size_t timeStep);
|
void addGroupToGroup( const std::string& parent_group, const Group& child_group, size_t timeStep);
|
||||||
@ -330,7 +325,7 @@ namespace Opm
|
|||||||
void handleWCONHIST( const DeckKeyword& keyword, size_t currentStep, const ParseContext& parseContext, ErrorGuard& errors);
|
void handleWCONHIST( const DeckKeyword& keyword, size_t currentStep, const ParseContext& parseContext, ErrorGuard& errors);
|
||||||
void handleWCONPROD( const DeckKeyword& keyword, size_t currentStep, const ParseContext& parseContext, ErrorGuard& errors);
|
void handleWCONPROD( const DeckKeyword& keyword, size_t currentStep, const ParseContext& parseContext, ErrorGuard& errors);
|
||||||
void handleWGRUPCON( const DeckKeyword& keyword, size_t currentStep);
|
void handleWGRUPCON( const DeckKeyword& keyword, size_t currentStep);
|
||||||
void handleCOMPDAT( const DeckKeyword& keyword, size_t currentStep, const EclipseGrid& grid, const FieldPropsManager& fp, const Eclipse3DProperties& eclipseProperties, const ParseContext& parseContext, ErrorGuard& errors);
|
void handleCOMPDAT( const DeckKeyword& keyword, size_t currentStep, const EclipseGrid& grid, const FieldPropsManager& fp, const ParseContext& parseContext, ErrorGuard& errors);
|
||||||
void handleCOMPLUMP( const DeckKeyword& keyword, size_t currentStep );
|
void handleCOMPLUMP( const DeckKeyword& keyword, size_t currentStep );
|
||||||
void handleWELSEGS( const DeckKeyword& keyword, size_t currentStep);
|
void handleWELSEGS( const DeckKeyword& keyword, size_t currentStep);
|
||||||
void handleCOMPSEGS( const DeckKeyword& keyword, size_t currentStep, const EclipseGrid& grid, const ParseContext& parseContext, ErrorGuard& errors);
|
void handleCOMPSEGS( const DeckKeyword& keyword, size_t currentStep, const EclipseGrid& grid, const ParseContext& parseContext, ErrorGuard& errors);
|
||||||
@ -387,7 +382,6 @@ namespace Opm
|
|||||||
const ParseContext& parseContext, ErrorGuard& errors,
|
const ParseContext& parseContext, ErrorGuard& errors,
|
||||||
const EclipseGrid& grid,
|
const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp,
|
||||||
const Eclipse3DProperties& eclipseProperties,
|
|
||||||
const UnitSystem& unit_system,
|
const UnitSystem& unit_system,
|
||||||
std::vector<std::pair<const DeckKeyword*, size_t > >& rftProperties);
|
std::vector<std::pair<const DeckKeyword*, size_t > >& rftProperties);
|
||||||
void addWellGroupEvent(const std::string& wellGroup, ScheduleEvents::Events event, size_t reportStep);
|
void addWellGroupEvent(const std::string& wellGroup, ScheduleEvents::Events event, size_t reportStep);
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
namespace Opm {
|
namespace Opm {
|
||||||
|
|
||||||
class Deck;
|
class Deck;
|
||||||
class Eclipse3DProperties;
|
|
||||||
class FieldPropsManager;
|
class FieldPropsManager;
|
||||||
|
|
||||||
class SimulationConfig {
|
class SimulationConfig {
|
||||||
@ -35,8 +34,7 @@ namespace Opm {
|
|||||||
SimulationConfig();
|
SimulationConfig();
|
||||||
SimulationConfig(bool restart,
|
SimulationConfig(bool restart,
|
||||||
const Deck& deck,
|
const Deck& deck,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp);
|
||||||
const Eclipse3DProperties& gridProperties);
|
|
||||||
SimulationConfig(const ThresholdPressure& thresholdPressure,
|
SimulationConfig(const ThresholdPressure& thresholdPressure,
|
||||||
bool useCPR, bool DISGAS, bool VAPOIL, bool isThermal);
|
bool useCPR, bool DISGAS, bool VAPOIL, bool isThermal);
|
||||||
|
|
||||||
|
@ -27,7 +27,6 @@ namespace Opm {
|
|||||||
|
|
||||||
|
|
||||||
class Deck;
|
class Deck;
|
||||||
class Eclipse3DProperties;
|
|
||||||
class FieldPropsManager;
|
class FieldPropsManager;
|
||||||
|
|
||||||
class ThresholdPressure {
|
class ThresholdPressure {
|
||||||
@ -38,8 +37,7 @@ namespace Opm {
|
|||||||
|
|
||||||
ThresholdPressure(bool restart,
|
ThresholdPressure(bool restart,
|
||||||
const Deck& deck,
|
const Deck& deck,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp);
|
||||||
const Eclipse3DProperties& eclipseProperties);
|
|
||||||
|
|
||||||
ThresholdPressure(bool active, bool restart,
|
ThresholdPressure(bool active, bool restart,
|
||||||
const ThresholdPressureTable& thpTable,
|
const ThresholdPressureTable& thpTable,
|
||||||
|
@ -86,22 +86,16 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const FieldPropsManager& get_field_props(const EclipseState& state) {
|
const FieldPropsManager& get_field_props(const EclipseState& state) {
|
||||||
if (enable3DPropsTesting())
|
return state.fieldProps();
|
||||||
return state.fieldProps();
|
|
||||||
else
|
|
||||||
throw std::logic_error("Field properties not implemented for this compilation.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void python::common::export_EclipseState(py::module& module) {
|
void python::common::export_EclipseState(py::module& module) {
|
||||||
|
|
||||||
module.def("test_field_props", &enable3DPropsTesting);
|
|
||||||
|
|
||||||
py::class_< EclipseState >( module, "EclipseState" )
|
py::class_< EclipseState >( module, "EclipseState" )
|
||||||
.def(py::init<const Deck&>())
|
.def(py::init<const Deck&>())
|
||||||
.def_property_readonly( "title", &EclipseState::getTitle )
|
.def_property_readonly( "title", &EclipseState::getTitle )
|
||||||
.def( "ecl3d_props", &EclipseState::get3DProperties, ref_internal)
|
|
||||||
.def( "field_props", &get_field_props, ref_internal)
|
.def( "field_props", &get_field_props, ref_internal)
|
||||||
.def( "grid", &EclipseState::getInputGrid, ref_internal)
|
.def( "grid", &EclipseState::getInputGrid, ref_internal)
|
||||||
.def( "config", &EclipseState::cfg, ref_internal)
|
.def( "config", &EclipseState::cfg, ref_internal)
|
||||||
|
@ -13,7 +13,7 @@ namespace {
|
|||||||
if (manager.has<int>(kw))
|
if (manager.has<int>(kw))
|
||||||
return true;
|
return true;
|
||||||
if (manager.has<double>(kw))
|
if (manager.has<double>(kw))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -32,13 +32,26 @@ namespace {
|
|||||||
throw std::invalid_argument("Keyword '" + kw + "'is not of type int.");
|
throw std::invalid_argument("Keyword '" + kw + "'is not of type int.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
py::array get_array(const FieldPropsManager& m, const std::string& kw) {
|
||||||
|
if (m.has<double>(kw))
|
||||||
|
return convert::numpy_array(m.get<double>(kw));
|
||||||
|
|
||||||
|
if (m.has<int>(kw))
|
||||||
|
return convert::numpy_array(m.get<int>(kw));
|
||||||
|
|
||||||
|
throw std::invalid_argument("No such keyword: " + kw);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void python::common::export_FieldProperties(py::module& module) {
|
void python::common::export_FieldProperties(py::module& module) {
|
||||||
|
|
||||||
py::class_< FieldPropsManager >( module, "FieldProperties")
|
py::class_< FieldPropsManager >( module, "FieldProperties")
|
||||||
.def( "__contains__", &contains )
|
.def( "__contains__", &contains )
|
||||||
|
.def("__getitem__", &get_array)
|
||||||
.def( "get_double_array", &get_double_array )
|
.def( "get_double_array", &get_double_array )
|
||||||
.def( "get_int_array", &get_int_array )
|
.def( "get_int_array", &get_int_array )
|
||||||
;
|
;
|
||||||
|
@ -15,7 +15,6 @@ from .libopmcommon_python import Parser, ParseContext
|
|||||||
from .libopmcommon_python import DeckKeyword
|
from .libopmcommon_python import DeckKeyword
|
||||||
|
|
||||||
from .libopmcommon_python import EclipseState
|
from .libopmcommon_python import EclipseState
|
||||||
from .libopmcommon_python import test_field_props
|
|
||||||
from .libopmcommon_python import FieldProperties
|
from .libopmcommon_python import FieldProperties
|
||||||
from .libopmcommon_python import Schedule
|
from .libopmcommon_python import Schedule
|
||||||
from .libopmcommon_python import OpmLog
|
from .libopmcommon_python import OpmLog
|
||||||
|
@ -1 +1 @@
|
|||||||
from opm._common import EclipseState, test_field_props
|
from opm._common import EclipseState
|
||||||
|
@ -5,78 +5,76 @@ import numpy as np
|
|||||||
|
|
||||||
from opm.io.parser import Parser
|
from opm.io.parser import Parser
|
||||||
from opm.io.deck import DeckKeyword
|
from opm.io.deck import DeckKeyword
|
||||||
from opm.io.ecl_state import EclipseState, test_field_props
|
from opm.io.ecl_state import EclipseState
|
||||||
try:
|
try:
|
||||||
from tests.utils import test_path
|
from tests.utils import test_path
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from utils import test_path
|
from utils import test_path
|
||||||
|
|
||||||
|
|
||||||
if (test_field_props()):
|
class TestFieldProps(unittest.TestCase):
|
||||||
|
|
||||||
class TestFieldProps(unittest.TestCase):
|
def assertClose(self, expected, observed, epsilon=1e-08):
|
||||||
|
diff = abs(expected - observed)
|
||||||
|
err_msg = '|%g - %g| = %g > %g' % (expected, observed, diff, epsilon)
|
||||||
|
self.assertTrue(diff <= epsilon, msg=err_msg)
|
||||||
|
|
||||||
def assertClose(self, expected, observed, epsilon=1e-08):
|
def setUp(self):
|
||||||
diff = abs(expected - observed)
|
parser = Parser()
|
||||||
err_msg = '|%g - %g| = %g > %g' % (expected, observed, diff, epsilon)
|
deck = parser.parse(test_path('spe3/SPE3CASE1.DATA'))
|
||||||
self.assertTrue(diff <= epsilon, msg=err_msg)
|
int_array = np.ones(324)
|
||||||
|
actnum_kw = DeckKeyword( parser["ACTNUM"], int_array)
|
||||||
|
deck.add(actnum_kw)
|
||||||
|
self.spe3 = EclipseState(deck)
|
||||||
|
self.props = self.spe3.field_props()
|
||||||
|
|
||||||
def setUp(self):
|
def test_contains(self):
|
||||||
parser = Parser()
|
p = self.props
|
||||||
deck = parser.parse(test_path('spe3/SPE3CASE1.DATA'))
|
self.assertTrue('PORO' in p)
|
||||||
int_array = np.ones(324)
|
self.assertFalse('NONO' in p)
|
||||||
actnum_kw = DeckKeyword( parser["ACTNUM"], int_array)
|
self.assertTrue('PORV' in p)
|
||||||
deck.add(actnum_kw)
|
self.assertTrue('ACTNUM' in p)
|
||||||
self.spe3 = EclipseState(deck)
|
|
||||||
self.props = self.spe3.field_props()
|
|
||||||
|
|
||||||
def test_contains(self):
|
|
||||||
p = self.props
|
|
||||||
self.assertTrue('PORO' in p)
|
|
||||||
self.assertFalse('NONO' in p)
|
|
||||||
self.assertTrue('PORV' in p)
|
|
||||||
self.assertTrue('ACTNUM' in p)
|
|
||||||
|
|
||||||
|
|
||||||
def test_getitem(self):
|
def test_getitem(self):
|
||||||
p = self.props
|
p = self.props
|
||||||
poro = p.get_double_array('PORO')
|
poro = p.get_double_array('PORO')
|
||||||
self.assertEqual(324, len(poro))
|
self.assertEqual(324, len(poro))
|
||||||
self.assertEqual(0.13, poro[0])
|
self.assertEqual(0.13, poro[0])
|
||||||
self.assertTrue( 'PERMX' in p )
|
self.assertTrue( 'PERMX' in p )
|
||||||
px = p.get_double_array('PERMX')
|
px = p.get_double_array('PERMX')
|
||||||
print(len(px))
|
print(len(px))
|
||||||
self.assertEqual(324, len(px))
|
self.assertEqual(324, len(px))
|
||||||
self.assertEqual(324, len(p.get_int_array('ACTNUM')))
|
self.assertEqual(324, len(p.get_int_array('ACTNUM')))
|
||||||
|
|
||||||
def test_permx_values(self):
|
def test_permx_values(self):
|
||||||
def md2si(md):
|
def md2si(md):
|
||||||
#millidarcy->SI
|
#millidarcy->SI
|
||||||
return md * 1e-3 * 9.869233e-13
|
return md * 1e-3 * 9.869233e-13
|
||||||
field_props = self.props
|
field_props = self.props
|
||||||
|
|
||||||
grid = self.spe3.grid()
|
grid = self.spe3.grid()
|
||||||
permx = field_props.get_double_array('PERMX')
|
permx = field_props.get_double_array('PERMX')
|
||||||
print('set(PERMX) = %s' % set(permx))
|
print('set(PERMX) = %s' % set(permx))
|
||||||
# 130mD, 40mD, 20mD, and 150mD, respectively, top to bottom
|
# 130mD, 40mD, 20mD, and 150mD, respectively, top to bottom
|
||||||
darcys = {0:md2si(130), 1:md2si(40), 2:md2si(20), 3:md2si(150)}
|
darcys = {0:md2si(130), 1:md2si(40), 2:md2si(20), 3:md2si(150)}
|
||||||
for i in range(grid.nx):
|
for i in range(grid.nx):
|
||||||
for j in range(grid.ny):
|
for j in range(grid.ny):
|
||||||
for k in range(grid.nz):
|
for k in range(grid.nz):
|
||||||
g_idx = grid.globalIndex(i,j,k)
|
g_idx = grid.globalIndex(i,j,k)
|
||||||
perm = permx[g_idx]
|
perm = permx[g_idx]
|
||||||
darcy = darcys[k]
|
darcy = darcys[k]
|
||||||
self.assertClose(darcy, perm)
|
self.assertClose(darcy, perm)
|
||||||
|
|
||||||
def test_volume(self):
|
def test_volume(self):
|
||||||
grid = self.spe3.grid()
|
grid = self.spe3.grid()
|
||||||
for i in range(grid.nx):
|
for i in range(grid.nx):
|
||||||
for j in range(grid.ny):
|
for j in range(grid.ny):
|
||||||
for k in range(grid.nz):
|
for k in range(grid.nz):
|
||||||
g_idx = grid.globalIndex(i,j,k)
|
g_idx = grid.globalIndex(i,j,k)
|
||||||
exp = 293.3 * 293.3 * 30 # cubicfeet = 73 078.6084 cubic meter
|
exp = 293.3 * 293.3 * 30 # cubicfeet = 73 078.6084 cubic meter
|
||||||
exp *= (12*0.0254)**3 # cubic feet to cubic meter
|
exp *= (12*0.0254)**3 # cubic feet to cubic meter
|
||||||
if k == 0:
|
if k == 0:
|
||||||
self.assertClose(exp, grid.getCellVolume(g_idx))
|
self.assertClose(exp, grid.getCellVolume(g_idx))
|
||||||
self.assertEqual(grid.getCellVolume(g_idx), grid.getCellVolume(i, j, k))
|
self.assertEqual(grid.getCellVolume(g_idx), grid.getCellVolume(i, j, k))
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import opm.io
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from opm.io.parser import Parser
|
from opm.io.parser import Parser
|
||||||
from opm.io.ecl_state import EclipseState, test_field_props
|
from opm.io.ecl_state import EclipseState
|
||||||
try:
|
try:
|
||||||
from tests.utils import test_path
|
from tests.utils import test_path
|
||||||
except ImportError:
|
except ImportError:
|
||||||
@ -21,10 +21,7 @@ class TestProps(unittest.TestCase):
|
|||||||
parser = Parser()
|
parser = Parser()
|
||||||
deck = parser.parse(test_path('spe3/SPE3CASE1.DATA'))
|
deck = parser.parse(test_path('spe3/SPE3CASE1.DATA'))
|
||||||
self.spe3 = EclipseState(deck)
|
self.spe3 = EclipseState(deck)
|
||||||
self.props = self.spe3.ecl3d_props()
|
self.props = self.spe3.field_props()
|
||||||
if (not test_field_props()):
|
|
||||||
with self.assertRaises(RuntimeError):
|
|
||||||
self.field = self.spe3.field_props()
|
|
||||||
|
|
||||||
def test_contains(self):
|
def test_contains(self):
|
||||||
p = self.props
|
p = self.props
|
||||||
|
@ -2074,11 +2074,7 @@ SummaryImplementation(const EclipseState& es,
|
|||||||
const Schedule& sched,
|
const Schedule& sched,
|
||||||
const std::string& basename)
|
const std::string& basename)
|
||||||
: grid_ (std::cref(grid))
|
: grid_ (std::cref(grid))
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
, regCache_ (es.fieldProps().get<int>("FIPNUM"), grid, sched)
|
, regCache_ (es.fieldProps().get<int>("FIPNUM"), grid, sched)
|
||||||
#else
|
|
||||||
, regCache_ (es.get3DProperties().getIntGridProperty("FIPNUM").compressedCopy(grid), grid, sched)
|
|
||||||
#endif
|
|
||||||
, deferredSMSpec_(makeDeferredSMSpecCreation(es, grid, sched))
|
, deferredSMSpec_(makeDeferredSMSpecCreation(es, grid, sched))
|
||||||
, rset_ (makeResultSet(es.cfg().io(), basename))
|
, rset_ (makeResultSet(es.cfg().io(), basename))
|
||||||
, fmt_ { es.cfg().io().getFMTOUT() }
|
, fmt_ { es.cfg().io().getFMTOUT() }
|
||||||
|
@ -313,7 +313,6 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
|
|
||||||
void writePoreVolume(const ::Opm::EclipseState& es,
|
void writePoreVolume(const ::Opm::EclipseState& es,
|
||||||
const ::Opm::UnitSystem& units,
|
const ::Opm::UnitSystem& units,
|
||||||
@ -344,53 +343,6 @@ namespace {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
void writePoreVolume(const ::Opm::EclipseState& es,
|
|
||||||
const ::Opm::EclipseGrid& grid,
|
|
||||||
const ::Opm::UnitSystem& units,
|
|
||||||
::Opm::EclIO::OutputStream::Init& initFile)
|
|
||||||
{
|
|
||||||
auto porv = es.get3DProperties()
|
|
||||||
.getDoubleGridProperty("PORV").getData();
|
|
||||||
for (auto nGlob = porv.size(),
|
|
||||||
globCell = 0*nGlob; globCell < nGlob; ++globCell)
|
|
||||||
{
|
|
||||||
if (! grid.cellActive(globCell)) {
|
|
||||||
porv[globCell] = 0.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
units.from_si(::Opm::UnitSystem::measure::volume, porv);
|
|
||||||
initFile.write("PORV", singlePrecision(porv));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void writeIntegerCellProperties(const ::Opm::EclipseState& es,
|
|
||||||
const ::Opm::EclipseGrid& grid,
|
|
||||||
::Opm::EclIO::OutputStream::Init& initFile)
|
|
||||||
{
|
|
||||||
|
|
||||||
// The INIT file should always contain PVT, saturation function,
|
|
||||||
// equilibration, and fluid-in-place region vectors. Call
|
|
||||||
// assertKeyword() here--on a 'const' GridProperties object--to
|
|
||||||
// invoke the autocreation property, and ensure that the keywords
|
|
||||||
// exist in the properties container.
|
|
||||||
const auto& properties = es.get3DProperties().getIntProperties();
|
|
||||||
properties.assertKeyword("PVTNUM");
|
|
||||||
properties.assertKeyword("SATNUM");
|
|
||||||
properties.assertKeyword("EQLNUM");
|
|
||||||
properties.assertKeyword("FIPNUM");
|
|
||||||
|
|
||||||
for (const auto& property : properties) {
|
|
||||||
if (property.getKeywordName() == "ACTNUM")
|
|
||||||
continue;
|
|
||||||
|
|
||||||
auto ecl_data = property.compressedCopy(grid);
|
|
||||||
initFile.write(property.getKeywordName(), ecl_data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void writeGridGeometry(const ::Opm::EclipseGrid& grid,
|
void writeGridGeometry(const ::Opm::EclipseGrid& grid,
|
||||||
@ -423,79 +375,41 @@ namespace {
|
|||||||
|
|
||||||
template <typename T, class WriteVector>
|
template <typename T, class WriteVector>
|
||||||
void writeCellPropertiesWithDefaultFlag(const Properties& propList,
|
void writeCellPropertiesWithDefaultFlag(const Properties& propList,
|
||||||
const ::Opm::GridProperties<T>&
|
const ::Opm::FieldPropsManager& fp,
|
||||||
#ifndef ENABLE_3DPROPS_TESTING
|
WriteVector&& write)
|
||||||
propValues
|
|
||||||
#endif
|
|
||||||
, const ::Opm::FieldPropsManager& fp,
|
|
||||||
const ::Opm::EclipseGrid&
|
|
||||||
#ifndef ENABLE_3DPROPS_TESTING
|
|
||||||
grid
|
|
||||||
#endif
|
|
||||||
, WriteVector&& write)
|
|
||||||
{
|
{
|
||||||
for (const auto& prop : propList) {
|
for (const auto& prop : propList) {
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
if (! fp.has<T>(prop.name))
|
if (! fp.has<T>(prop.name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
auto data = fp.get<T>(prop.name);
|
auto data = fp.get<T>(prop.name);
|
||||||
auto defaulted = fp.defaulted<T>(prop.name);
|
auto defaulted = fp.defaulted<T>(prop.name);
|
||||||
write(prop, std::move(defaulted), std::move(data));
|
write(prop, std::move(defaulted), std::move(data));
|
||||||
#else
|
|
||||||
if (! propValues.hasKeyword(prop.name)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const auto& opm_property = propValues.getKeyword(prop.name);
|
|
||||||
const auto& dflt = opm_property.wasDefaulted();
|
|
||||||
|
|
||||||
write(prop, grid.compressedVector(dflt),
|
|
||||||
opm_property.compressedCopy(grid));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, class WriteVector>
|
template <class WriteVector>
|
||||||
void writeCellPropertiesValuesOnly(const Properties& propList,
|
void writeCellPropertiesValuesOnly(const Properties& propList,
|
||||||
const ::Opm::GridProperties<T>&
|
const ::Opm::FieldPropsManager& fp,
|
||||||
#ifndef ENABLE_3DPROPS_TESTING
|
WriteVector&& write)
|
||||||
propValues
|
|
||||||
#endif
|
|
||||||
, const ::Opm::FieldPropsManager& fp,
|
|
||||||
const ::Opm::EclipseGrid&
|
|
||||||
#ifndef ENABLE_3DPROPS_TESTING
|
|
||||||
grid
|
|
||||||
#endif
|
|
||||||
, WriteVector&& write)
|
|
||||||
{
|
{
|
||||||
for (const auto& prop : propList) {
|
for (const auto& prop : propList) {
|
||||||
|
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
if (!fp.has<double>(prop.name))
|
||||||
if (!fp.has<T>(prop.name))
|
|
||||||
continue;
|
continue;
|
||||||
auto data = fp.get<T>(prop.name);
|
auto data = fp.get<double>(prop.name);
|
||||||
write(prop, std::move(data));
|
write(prop, std::move(data));
|
||||||
#else
|
|
||||||
if (! propValues.hasKeyword(prop.name)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const auto& opm_property = propValues.getKeyword(prop.name);
|
|
||||||
write(prop, opm_property.compressedCopy(grid));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeDoubleCellProperties(const Properties& propList,
|
void writeDoubleCellProperties(const Properties& propList,
|
||||||
const ::Opm::GridProperties<double>& propValues,
|
|
||||||
const ::Opm::FieldPropsManager& fp,
|
const ::Opm::FieldPropsManager& fp,
|
||||||
const ::Opm::EclipseGrid& grid,
|
|
||||||
const ::Opm::UnitSystem& units,
|
const ::Opm::UnitSystem& units,
|
||||||
const bool needDflt,
|
const bool needDflt,
|
||||||
::Opm::EclIO::OutputStream::Init& initFile)
|
::Opm::EclIO::OutputStream::Init& initFile)
|
||||||
{
|
{
|
||||||
if (needDflt) {
|
if (needDflt) {
|
||||||
writeCellPropertiesWithDefaultFlag(propList, propValues, fp, grid,
|
writeCellPropertiesWithDefaultFlag<double>(propList, fp,
|
||||||
[&units, &initFile](const CellProperty& prop,
|
[&units, &initFile](const CellProperty& prop,
|
||||||
std::vector<bool>&& dflt,
|
std::vector<bool>&& dflt,
|
||||||
std::vector<double>&& value)
|
std::vector<double>&& value)
|
||||||
@ -517,7 +431,7 @@ namespace {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
writeCellPropertiesValuesOnly(propList, propValues, fp, grid,
|
writeCellPropertiesValuesOnly(propList, fp,
|
||||||
[&units, &initFile](const CellProperty& prop,
|
[&units, &initFile](const CellProperty& prop,
|
||||||
std::vector<double>&& value)
|
std::vector<double>&& value)
|
||||||
{
|
{
|
||||||
@ -528,7 +442,6 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void writeDoubleCellProperties(const ::Opm::EclipseState& es,
|
void writeDoubleCellProperties(const ::Opm::EclipseState& es,
|
||||||
const ::Opm::EclipseGrid& grid,
|
|
||||||
const ::Opm::UnitSystem& units,
|
const ::Opm::UnitSystem& units,
|
||||||
::Opm::EclIO::OutputStream::Init& initFile)
|
::Opm::EclIO::OutputStream::Init& initFile)
|
||||||
{
|
{
|
||||||
@ -543,15 +456,10 @@ namespace {
|
|||||||
// The INIT file should always contain the NTG property, we
|
// The INIT file should always contain the NTG property, we
|
||||||
// therefore invoke the auto create functionality to ensure
|
// therefore invoke the auto create functionality to ensure
|
||||||
// that "NTG" is included in the properties container.
|
// that "NTG" is included in the properties container.
|
||||||
const auto& properties = es.get3DProperties().getDoubleProperties();
|
|
||||||
const auto& fp = es.fieldProps();
|
const auto& fp = es.fieldProps();
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
es.fieldProps().get<double>("NTG");
|
es.fieldProps().get<double>("NTG");
|
||||||
#else
|
writeDoubleCellProperties(doubleKeywords, fp,
|
||||||
properties.assertKeyword("NTG");
|
units, false, initFile);
|
||||||
#endif
|
|
||||||
writeDoubleCellProperties(doubleKeywords, properties, fp,
|
|
||||||
grid, units, false, initFile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeSimulatorProperties(const ::Opm::EclipseGrid& grid,
|
void writeSimulatorProperties(const ::Opm::EclipseGrid& grid,
|
||||||
@ -596,27 +504,19 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void writeFilledSatFuncScaling(const Properties& propList,
|
void writeFilledSatFuncScaling(const Properties& propList,
|
||||||
::Opm::GridProperties<double>&& propValues,
|
|
||||||
::Opm::FieldPropsManager&& fp,
|
::Opm::FieldPropsManager&& fp,
|
||||||
const ::Opm::EclipseGrid& grid,
|
|
||||||
const ::Opm::UnitSystem& units,
|
const ::Opm::UnitSystem& units,
|
||||||
::Opm::EclIO::OutputStream::Init& initFile)
|
::Opm::EclIO::OutputStream::Init& initFile)
|
||||||
{
|
{
|
||||||
for (const auto& prop : propList) {
|
for (const auto& prop : propList)
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
fp.get<double>(prop.name);
|
fp.get<double>(prop.name);
|
||||||
#else
|
|
||||||
propValues.assertKeyword(prop.name);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Don't write sentinel value if input defaulted.
|
// Don't write sentinel value if input defaulted.
|
||||||
writeDoubleCellProperties(propList, propValues, fp, grid,
|
writeDoubleCellProperties(propList, fp,
|
||||||
units, false, initFile);
|
units, false, initFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeSatFuncScaling(const ::Opm::EclipseState& es,
|
void writeSatFuncScaling(const ::Opm::EclipseState& es,
|
||||||
const ::Opm::EclipseGrid& grid,
|
|
||||||
const ::Opm::UnitSystem& units,
|
const ::Opm::UnitSystem& units,
|
||||||
::Opm::EclIO::OutputStream::Init& initFile)
|
::Opm::EclIO::OutputStream::Init& initFile)
|
||||||
{
|
{
|
||||||
@ -630,7 +530,6 @@ namespace {
|
|||||||
+ ph.active(Opm::Phase::OIL)
|
+ ph.active(Opm::Phase::OIL)
|
||||||
+ ph.active(Opm::Phase::GAS);
|
+ ph.active(Opm::Phase::GAS);
|
||||||
|
|
||||||
const auto& props = es.get3DProperties().getDoubleProperties();
|
|
||||||
const auto& fp = es.fieldProps();
|
const auto& fp = es.fieldProps();
|
||||||
if (! es.cfg().init().filleps() || (nactph < 3)) {
|
if (! es.cfg().init().filleps() || (nactph < 3)) {
|
||||||
if (nactph < 3) {
|
if (nactph < 3) {
|
||||||
@ -648,8 +547,8 @@ namespace {
|
|||||||
//
|
//
|
||||||
// Output only those endpoint arrays that exist in the input
|
// Output only those endpoint arrays that exist in the input
|
||||||
// deck. Write sentinel value if input defaulted.
|
// deck. Write sentinel value if input defaulted.
|
||||||
writeDoubleCellProperties(epsVectors.getVectors(), props, fp,
|
writeDoubleCellProperties(epsVectors.getVectors(), fp,
|
||||||
grid, units, true, initFile);
|
units, true, initFile);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Input deck specified FILLEPS so we should output all endpoint
|
// Input deck specified FILLEPS so we should output all endpoint
|
||||||
@ -659,12 +558,10 @@ namespace {
|
|||||||
// make a copy of the properties object and modify that copy in
|
// make a copy of the properties object and modify that copy in
|
||||||
// order to leave the original intact. Don't write sentinel
|
// order to leave the original intact. Don't write sentinel
|
||||||
// value if input defaulted.
|
// value if input defaulted.
|
||||||
auto propsCopy = props;
|
|
||||||
auto fp_copy = fp;
|
auto fp_copy = fp;
|
||||||
writeFilledSatFuncScaling(epsVectors.getVectors(),
|
writeFilledSatFuncScaling(epsVectors.getVectors(),
|
||||||
std::move(propsCopy),
|
|
||||||
std::move(fp_copy),
|
std::move(fp_copy),
|
||||||
grid, units, initFile);
|
units, initFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -702,29 +599,14 @@ void Opm::InitIO::write(const ::Opm::EclipseState& es,
|
|||||||
// set to zero for inactive cells. This treatment implies that the
|
// set to zero for inactive cells. This treatment implies that the
|
||||||
// active/inactive cell mapping can be inferred by reading the PORV
|
// active/inactive cell mapping can be inferred by reading the PORV
|
||||||
// vector from the result set.
|
// vector from the result set.
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
writePoreVolume(es, units, initFile);
|
writePoreVolume(es, units, initFile);
|
||||||
#else
|
|
||||||
writePoreVolume(es, grid, units, initFile);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
writeGridGeometry(grid, units, initFile);
|
writeGridGeometry(grid, units, initFile);
|
||||||
|
writeDoubleCellProperties(es, units, initFile);
|
||||||
writeDoubleCellProperties(es, grid, units, initFile);
|
|
||||||
|
|
||||||
writeSimulatorProperties(grid, simProps, initFile);
|
writeSimulatorProperties(grid, simProps, initFile);
|
||||||
|
|
||||||
writeTableData(es, units, initFile);
|
writeTableData(es, units, initFile);
|
||||||
|
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
writeIntegerCellProperties(es, initFile);
|
writeIntegerCellProperties(es, initFile);
|
||||||
#else
|
|
||||||
writeIntegerCellProperties(es, grid, initFile);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
writeIntegerMaps(std::move(int_data), initFile);
|
writeIntegerMaps(std::move(int_data), initFile);
|
||||||
|
writeSatFuncScaling(es, units, initFile);
|
||||||
writeSatFuncScaling(es, grid, units, initFile);
|
|
||||||
|
|
||||||
if (nnc.numNNC() > std::size_t{0}) {
|
if (nnc.numNNC() > std::size_t{0}) {
|
||||||
writeNonNeighbourConnections(nnc, units, initFile);
|
writeNonNeighbourConnections(nnc, units, initFile);
|
||||||
|
@ -62,82 +62,6 @@ bool enable3DPropsTesting() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
void assert_field_properties(const EclipseGrid& grid, const FieldPropsManager& fp, const Eclipse3DProperties& ep) {
|
|
||||||
std::vector<std::string> int_keywords = {"FLUXNUM",
|
|
||||||
"MULTNUM",
|
|
||||||
"OPERNUM",
|
|
||||||
"ROCKNUM",
|
|
||||||
//"ENDNUM",
|
|
||||||
"EQLNUM",
|
|
||||||
"FIPNUM",
|
|
||||||
"IMBNUM",
|
|
||||||
"MISCNUM",
|
|
||||||
"OPERNUM",
|
|
||||||
"PVTNUM",
|
|
||||||
"SATNUM"};
|
|
||||||
|
|
||||||
std::vector<std::string> double_keywords = {//"MULTPV",
|
|
||||||
//"NTG",
|
|
||||||
"PORO",
|
|
||||||
"PERMX",
|
|
||||||
"PERMY",
|
|
||||||
"PERMZ",
|
|
||||||
"SWATINIT",
|
|
||||||
"TEMPI",
|
|
||||||
"THCONR"};
|
|
||||||
|
|
||||||
for (const auto& kw : double_keywords) {
|
|
||||||
if (fp.has<double>(kw) != ep.hasDeckDoubleGridProperty(kw)) {
|
|
||||||
std::cerr << "FieldPropsManager: " << fp.has<double>(kw) << std::endl;
|
|
||||||
std::cerr << "Eclipse3dProperties: " << ep.hasDeckDoubleGridProperty(kw) << std::endl;
|
|
||||||
throw std::logic_error("Exist Error for: " + kw);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fp.has<double>(kw)) {
|
|
||||||
const auto& fp_data = fp.get<double>(kw);
|
|
||||||
const auto& ep_data = ep.getDoubleGridProperty(kw).compressedCopy(grid);
|
|
||||||
if (fp_data != ep_data) {
|
|
||||||
printf("size: %ld %ld \n", fp_data.size(), ep_data.size());
|
|
||||||
for (std::size_t i=0; i< fp_data.size(); i++) {
|
|
||||||
if (fp_data[i] == ep_data[i])
|
|
||||||
printf("fp[%ld]: %lg ep[%ld]: %lg \n", i, fp_data[i], i, ep_data[i]);
|
|
||||||
else
|
|
||||||
printf("fp[%ld]: %lg ep[%ld]: %lg ** \n", i, fp_data[i], i, ep_data[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
throw std::logic_error("Data error for: " + kw);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const auto& kw : int_keywords) {
|
|
||||||
if (fp.has<int>(kw) != ep.hasDeckIntGridProperty(kw)) {
|
|
||||||
std::cerr << "FieldPropsManager: " << fp.has<int>(kw) << std::endl;
|
|
||||||
std::cerr << "Eclipse3dProperties: " << ep.hasDeckIntGridProperty(kw) << std::endl;
|
|
||||||
throw std::logic_error("Exists error for: " + kw);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fp.has<int>(kw)) {
|
|
||||||
const auto& fp_data = fp.get<int>(kw);
|
|
||||||
const auto& ep_data = ep.getIntGridProperty(kw).compressedCopy(grid);
|
|
||||||
if (fp_data != ep_data) {
|
|
||||||
printf("size: %ld %ld \n", fp_data.size(), ep_data.size());
|
|
||||||
for (std::size_t i=0; i< fp_data.size(); i++)
|
|
||||||
printf("fp[%ld]: %d ep[%ld]: %d \n", i, fp_data[i], i, ep_data[i]);
|
|
||||||
|
|
||||||
throw std::logic_error("Data error for: " + kw);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -150,19 +74,11 @@ void assert_field_properties(const EclipseGrid& grid, const FieldPropsManager& f
|
|||||||
m_inputNnc( deck ),
|
m_inputNnc( deck ),
|
||||||
m_inputEditNnc( deck ),
|
m_inputEditNnc( deck ),
|
||||||
m_inputGrid( deck, nullptr ),
|
m_inputGrid( deck, nullptr ),
|
||||||
m_eclipseProperties( deck, m_tables, m_inputGrid ),
|
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
field_props( deck, m_inputGrid, m_tables),
|
field_props( deck, m_inputGrid, m_tables),
|
||||||
#endif
|
m_simulationConfig( m_eclipseConfig.getInitConfig().restartRequested(), deck, field_props),
|
||||||
m_simulationConfig( m_eclipseConfig.getInitConfig().restartRequested(), deck, field_props, m_eclipseProperties ),
|
m_transMult( GridDims(deck), deck, field_props)
|
||||||
m_transMult( GridDims(deck), deck, field_props, m_eclipseProperties )
|
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
m_eclipseProperties.getIntGridProperty("ACTNUM").getData();
|
|
||||||
m_inputGrid.resetACTNUM(this->field_props.actnum());
|
m_inputGrid.resetACTNUM(this->field_props.actnum());
|
||||||
#else
|
|
||||||
m_inputGrid.resetACTNUM(m_eclipseProperties.getIntGridProperty("ACTNUM").getData());
|
|
||||||
#endif
|
|
||||||
if( this->runspec().phases().size() < 3 )
|
if( this->runspec().phases().size() < 3 )
|
||||||
OpmLog::info("Only " + std::to_string( this->runspec().phases().size() )
|
OpmLog::info("Only " + std::to_string( this->runspec().phases().size() )
|
||||||
+ " fluid phases are enabled" );
|
+ " fluid phases are enabled" );
|
||||||
@ -176,10 +92,7 @@ void assert_field_properties(const EclipseGrid& grid, const FieldPropsManager& f
|
|||||||
|
|
||||||
initTransMult();
|
initTransMult();
|
||||||
initFaults(deck);
|
initFaults(deck);
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
this->field_props.reset_actnum( this->m_inputGrid.getACTNUM() );
|
this->field_props.reset_actnum( this->m_inputGrid.getACTNUM() );
|
||||||
assert_field_properties(this->m_inputGrid, this->field_props, this->m_eclipseProperties);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -219,10 +132,6 @@ void assert_field_properties(const EclipseGrid& grid, const FieldPropsManager& f
|
|||||||
return const_cast< RestartConfig& >( m_eclipseConfig.getRestartConfig() );
|
return const_cast< RestartConfig& >( m_eclipseConfig.getRestartConfig() );
|
||||||
}
|
}
|
||||||
|
|
||||||
const Eclipse3DProperties& EclipseState::get3DProperties() const {
|
|
||||||
return m_eclipseProperties;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const FieldPropsManager& EclipseState::fieldProps() const {
|
const FieldPropsManager& EclipseState::fieldProps() const {
|
||||||
return this->field_props;
|
return this->field_props;
|
||||||
@ -290,7 +199,6 @@ void assert_field_properties(const EclipseGrid& grid, const FieldPropsManager& f
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EclipseState::initTransMult() {
|
void EclipseState::initTransMult() {
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
const auto& fp = this->field_props;
|
const auto& fp = this->field_props;
|
||||||
if (fp.has<double>("MULTX")) this->m_transMult.applyMULT(fp.get_global<double>("MULTX") , FaceDir::XPlus);
|
if (fp.has<double>("MULTX")) this->m_transMult.applyMULT(fp.get_global<double>("MULTX") , FaceDir::XPlus);
|
||||||
if (fp.has<double>("MULTX-")) this->m_transMult.applyMULT(fp.get_global<double>("MULTX-"), FaceDir::XMinus);
|
if (fp.has<double>("MULTX-")) this->m_transMult.applyMULT(fp.get_global<double>("MULTX-"), FaceDir::XMinus);
|
||||||
@ -300,23 +208,6 @@ void assert_field_properties(const EclipseGrid& grid, const FieldPropsManager& f
|
|||||||
|
|
||||||
if (fp.has<double>("MULTZ")) this->m_transMult.applyMULT(fp.get_global<double>("MULTZ") , FaceDir::ZPlus);
|
if (fp.has<double>("MULTZ")) this->m_transMult.applyMULT(fp.get_global<double>("MULTZ") , FaceDir::ZPlus);
|
||||||
if (fp.has<double>("MULTZ-")) this->m_transMult.applyMULT(fp.get_global<double>("MULTZ-"), FaceDir::ZMinus);
|
if (fp.has<double>("MULTZ-")) this->m_transMult.applyMULT(fp.get_global<double>("MULTZ-"), FaceDir::ZMinus);
|
||||||
#else
|
|
||||||
const auto& p = m_eclipseProperties;
|
|
||||||
if (m_eclipseProperties.hasDeckDoubleGridProperty("MULTX"))
|
|
||||||
m_transMult.applyMULT(p.getDoubleGridProperty("MULTX").getData(), FaceDir::XPlus);
|
|
||||||
if (m_eclipseProperties.hasDeckDoubleGridProperty("MULTX-"))
|
|
||||||
m_transMult.applyMULT(p.getDoubleGridProperty("MULTX-").getData(), FaceDir::XMinus);
|
|
||||||
|
|
||||||
if (m_eclipseProperties.hasDeckDoubleGridProperty("MULTY"))
|
|
||||||
m_transMult.applyMULT(p.getDoubleGridProperty("MULTY").getData(), FaceDir::YPlus);
|
|
||||||
if (m_eclipseProperties.hasDeckDoubleGridProperty("MULTY-"))
|
|
||||||
m_transMult.applyMULT(p.getDoubleGridProperty("MULTY-").getData(), FaceDir::YMinus);
|
|
||||||
|
|
||||||
if (m_eclipseProperties.hasDeckDoubleGridProperty("MULTZ"))
|
|
||||||
m_transMult.applyMULT(p.getDoubleGridProperty("MULTZ").getData(), FaceDir::ZPlus);
|
|
||||||
if (m_eclipseProperties.hasDeckDoubleGridProperty("MULTZ-"))
|
|
||||||
m_transMult.applyMULT(p.getDoubleGridProperty("MULTZ-").getData(), FaceDir::ZMinus);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EclipseState::initFaults(const Deck& deck) {
|
void EclipseState::initFaults(const Deck& deck) {
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
#include <opm/parser/eclipse/Deck/DeckItem.hpp>
|
#include <opm/parser/eclipse/Deck/DeckItem.hpp>
|
||||||
#include <opm/parser/eclipse/Deck/DeckKeyword.hpp>
|
#include <opm/parser/eclipse/Deck/DeckKeyword.hpp>
|
||||||
#include <opm/parser/eclipse/Deck/DeckRecord.hpp>
|
#include <opm/parser/eclipse/Deck/DeckRecord.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Eclipse3DProperties.hpp>
|
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/FaceDir.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/FaceDir.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/GridProperties.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/GridProperties.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/MULTREGTScanner.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/MULTREGTScanner.hpp>
|
||||||
@ -108,31 +107,20 @@ std::vector<int> unique(const std::vector<int> data) {
|
|||||||
*/
|
*/
|
||||||
MULTREGTScanner::MULTREGTScanner(const GridDims& grid,
|
MULTREGTScanner::MULTREGTScanner(const GridDims& grid,
|
||||||
const FieldPropsManager& fp_arg,
|
const FieldPropsManager& fp_arg,
|
||||||
const Eclipse3DProperties& e3DProps,
|
|
||||||
const std::vector< const DeckKeyword* >& keywords) :
|
const std::vector< const DeckKeyword* >& keywords) :
|
||||||
nx(grid.getNX()),
|
nx(grid.getNX()),
|
||||||
ny(grid.getNY()),
|
ny(grid.getNY()),
|
||||||
nz(grid.getNZ()),
|
nz(grid.getNZ()),
|
||||||
fp(fp_arg),
|
fp(fp_arg) {
|
||||||
m_e3DProps(e3DProps) {
|
|
||||||
|
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
this->default_region = this->fp.default_region();
|
|
||||||
#else
|
|
||||||
this->default_region = this->m_e3DProps.getDefaultRegionKeyword();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
this->default_region = this->fp.default_region();
|
||||||
for (size_t idx = 0; idx < keywords.size(); idx++)
|
for (size_t idx = 0; idx < keywords.size(); idx++)
|
||||||
this->addKeyword(*keywords[idx] , this->default_region);
|
this->addKeyword(*keywords[idx] , this->default_region);
|
||||||
|
|
||||||
MULTREGTSearchMap searchPairs;
|
MULTREGTSearchMap searchPairs;
|
||||||
for (std::vector<MULTREGTRecord>::const_iterator record = m_records.begin(); record != m_records.end(); ++record) {
|
for (std::vector<MULTREGTRecord>::const_iterator record = m_records.begin(); record != m_records.end(); ++record) {
|
||||||
const std::string& region_name = record->region_name;
|
const std::string& region_name = record->region_name;
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
if (this->fp.has<int>( region_name)) {
|
if (this->fp.has<int>( region_name)) {
|
||||||
#else
|
|
||||||
if (this->m_e3DProps.hasDeckIntGridProperty( region_name)) {
|
|
||||||
#endif
|
|
||||||
int srcRegion = record->src_value;
|
int srcRegion = record->src_value;
|
||||||
int targetRegion = record->target_value;
|
int targetRegion = record->target_value;
|
||||||
|
|
||||||
@ -151,13 +139,8 @@ std::vector<int> unique(const std::vector<int> data) {
|
|||||||
+ region_name
|
+ region_name
|
||||||
+ " which is not in the deck");
|
+ " which is not in the deck");
|
||||||
|
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
if (this->regions.count(region_name) == 0)
|
if (this->regions.count(region_name) == 0)
|
||||||
this->regions[region_name] = this->fp.get_global<int>(region_name);
|
this->regions[region_name] = this->fp.get_global<int>(region_name);
|
||||||
#else
|
|
||||||
if (this->regions.count(region_name) == 0)
|
|
||||||
this->regions[region_name] = this->m_e3DProps.getIntGridProperty(region_name).getData();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto iter = searchPairs.begin(); iter != searchPairs.end(); ++iter) {
|
for (auto iter = searchPairs.begin(); iter != searchPairs.end(); ++iter) {
|
||||||
@ -212,20 +195,12 @@ std::vector<int> unique(const std::vector<int> data) {
|
|||||||
region_name = MULTREGT::RegionNameFromDeckValue( regionItem.get<std::string>(0) );
|
region_name = MULTREGT::RegionNameFromDeckValue( regionItem.get<std::string>(0) );
|
||||||
|
|
||||||
if (srcItem.defaultApplied(0) || srcItem.get<int>(0) < 0)
|
if (srcItem.defaultApplied(0) || srcItem.get<int>(0) < 0)
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
src_regions = unique(this->fp.get<int>(region_name));
|
src_regions = unique(this->fp.get<int>(region_name));
|
||||||
#else
|
|
||||||
src_regions = unique(this->m_e3DProps.getIntGridProperty( region_name ).getData());
|
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
src_regions.push_back(srcItem.get<int>(0));
|
src_regions.push_back(srcItem.get<int>(0));
|
||||||
|
|
||||||
if (targetItem.defaultApplied(0) || targetItem.get<int>(0) < 0)
|
if (targetItem.defaultApplied(0) || targetItem.get<int>(0) < 0)
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
target_regions = unique(fp.get<int>(region_name));
|
target_regions = unique(fp.get<int>(region_name));
|
||||||
#else
|
|
||||||
target_regions = unique(this->m_e3DProps.getIntGridProperty(region_name).getData());
|
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
target_regions.push_back(targetItem.get<int>(0));
|
target_regions.push_back(targetItem.get<int>(0));
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
|
|
||||||
#include <opm/common/OpmLog/OpmLog.hpp>
|
#include <opm/common/OpmLog/OpmLog.hpp>
|
||||||
#include <opm/parser/eclipse/Deck/DeckKeyword.hpp>
|
#include <opm/parser/eclipse/Deck/DeckKeyword.hpp>
|
||||||
|
#include <opm/parser/eclipse/Deck/DeckSection.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/FieldPropsManager.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/FieldPropsManager.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Eclipse3DProperties.hpp>
|
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/Fault.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/Fault.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/FaultFace.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/FaultFace.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/FaultCollection.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/FaultCollection.hpp>
|
||||||
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
|
|
||||||
TransMult::TransMult(const GridDims& dims, const Deck& deck, const FieldPropsManager& fp, const Eclipse3DProperties& props) :
|
TransMult::TransMult(const GridDims& dims, const Deck& deck, const FieldPropsManager& fp) :
|
||||||
m_nx( dims.getNX()),
|
m_nx( dims.getNX()),
|
||||||
m_ny( dims.getNY()),
|
m_ny( dims.getNY()),
|
||||||
m_nz( dims.getNZ()),
|
m_nz( dims.getNZ()),
|
||||||
@ -44,7 +44,7 @@ namespace Opm {
|
|||||||
{ FaceDir::XMinus, "MULTX-" },
|
{ FaceDir::XMinus, "MULTX-" },
|
||||||
{ FaceDir::YMinus, "MULTY-" },
|
{ FaceDir::YMinus, "MULTY-" },
|
||||||
{ FaceDir::ZMinus, "MULTZ-" }}),
|
{ FaceDir::ZMinus, "MULTZ-" }}),
|
||||||
m_multregtScanner( dims, fp, props, deck.getKeywordList( "MULTREGT" ))
|
m_multregtScanner( dims, fp, deck.getKeywordList( "MULTREGT" ))
|
||||||
{
|
{
|
||||||
EDITSection edit_section(deck);
|
EDITSection edit_section(deck);
|
||||||
if (edit_section.hasKeyword("MULTREGT")) {
|
if (edit_section.hasKeyword("MULTREGT")) {
|
||||||
|
@ -112,7 +112,6 @@ namespace {
|
|||||||
Schedule::Schedule( const Deck& deck,
|
Schedule::Schedule( const Deck& deck,
|
||||||
const EclipseGrid& grid,
|
const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp,
|
||||||
const Eclipse3DProperties& eclipseProperties,
|
|
||||||
const Runspec &runspec,
|
const Runspec &runspec,
|
||||||
const ParseContext& parseContext,
|
const ParseContext& parseContext,
|
||||||
ErrorGuard& errors) :
|
ErrorGuard& errors) :
|
||||||
@ -152,7 +151,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (DeckSection::hasSCHEDULE(deck))
|
if (DeckSection::hasSCHEDULE(deck))
|
||||||
iterateScheduleSection( parseContext, errors, SCHEDULESection( deck ), grid, fp, eclipseProperties );
|
iterateScheduleSection( parseContext, errors, SCHEDULESection( deck ), grid, fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -160,20 +159,18 @@ namespace {
|
|||||||
Schedule::Schedule( const Deck& deck,
|
Schedule::Schedule( const Deck& deck,
|
||||||
const EclipseGrid& grid,
|
const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp,
|
||||||
const Eclipse3DProperties& eclipseProperties,
|
|
||||||
const Runspec &runspec,
|
const Runspec &runspec,
|
||||||
const ParseContext& parseContext,
|
const ParseContext& parseContext,
|
||||||
T&& errors) :
|
T&& errors) :
|
||||||
Schedule(deck, grid, fp, eclipseProperties, runspec, parseContext, errors)
|
Schedule(deck, grid, fp, runspec, parseContext, errors)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
Schedule::Schedule( const Deck& deck,
|
Schedule::Schedule( const Deck& deck,
|
||||||
const EclipseGrid& grid,
|
const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp,
|
||||||
const Eclipse3DProperties& eclipseProperties,
|
|
||||||
const Runspec &runspec) :
|
const Runspec &runspec) :
|
||||||
Schedule(deck, grid, fp, eclipseProperties, runspec, ParseContext(), ErrorGuard())
|
Schedule(deck, grid, fp, runspec, ParseContext(), ErrorGuard())
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -181,7 +178,6 @@ namespace {
|
|||||||
Schedule(deck,
|
Schedule(deck,
|
||||||
es.getInputGrid(),
|
es.getInputGrid(),
|
||||||
es.fieldProps(),
|
es.fieldProps(),
|
||||||
es.get3DProperties(),
|
|
||||||
es.runspec(),
|
es.runspec(),
|
||||||
parse_context,
|
parse_context,
|
||||||
errors)
|
errors)
|
||||||
@ -194,7 +190,6 @@ namespace {
|
|||||||
Schedule(deck,
|
Schedule(deck,
|
||||||
es.getInputGrid(),
|
es.getInputGrid(),
|
||||||
es.fieldProps(),
|
es.fieldProps(),
|
||||||
es.get3DProperties(),
|
|
||||||
es.runspec(),
|
es.runspec(),
|
||||||
parse_context,
|
parse_context,
|
||||||
errors)
|
errors)
|
||||||
@ -278,7 +273,6 @@ namespace {
|
|||||||
ErrorGuard& errors,
|
ErrorGuard& errors,
|
||||||
const EclipseGrid& grid,
|
const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp,
|
||||||
const Eclipse3DProperties& eclipseProperties,
|
|
||||||
const UnitSystem& unit_system,
|
const UnitSystem& unit_system,
|
||||||
std::vector<std::pair<const DeckKeyword*, size_t > >& rftProperties) {
|
std::vector<std::pair<const DeckKeyword*, size_t > >& rftProperties) {
|
||||||
/*
|
/*
|
||||||
@ -373,7 +367,7 @@ namespace {
|
|||||||
handleWGRUPCON(keyword, currentStep);
|
handleWGRUPCON(keyword, currentStep);
|
||||||
|
|
||||||
else if (keyword.name() == "COMPDAT")
|
else if (keyword.name() == "COMPDAT")
|
||||||
handleCOMPDAT(keyword, currentStep, grid, fp, eclipseProperties, parseContext, errors);
|
handleCOMPDAT(keyword, currentStep, grid, fp, parseContext, errors);
|
||||||
|
|
||||||
else if (keyword.name() == "WELSEGS")
|
else if (keyword.name() == "WELSEGS")
|
||||||
handleWELSEGS(keyword, currentStep);
|
handleWELSEGS(keyword, currentStep);
|
||||||
@ -485,7 +479,7 @@ namespace {
|
|||||||
|
|
||||||
|
|
||||||
void Schedule::iterateScheduleSection(const ParseContext& parseContext , ErrorGuard& errors, const SCHEDULESection& section , const EclipseGrid& grid,
|
void Schedule::iterateScheduleSection(const ParseContext& parseContext , ErrorGuard& errors, const SCHEDULESection& section , const EclipseGrid& grid,
|
||||||
const FieldPropsManager& fp, const Eclipse3DProperties& eclipseProperties) {
|
const FieldPropsManager& fp) {
|
||||||
size_t currentStep = 0;
|
size_t currentStep = 0;
|
||||||
const auto& unit_system = section.unitSystem();
|
const auto& unit_system = section.unitSystem();
|
||||||
std::vector<std::pair< const DeckKeyword* , size_t> > rftProperties;
|
std::vector<std::pair< const DeckKeyword* , size_t> > rftProperties;
|
||||||
@ -513,7 +507,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
this->addACTIONX(action, currentStep);
|
this->addACTIONX(action, currentStep);
|
||||||
} else
|
} else
|
||||||
this->handleKeyword(currentStep, section, keywordIdx, keyword, parseContext, errors, grid, fp, eclipseProperties, unit_system, rftProperties);
|
this->handleKeyword(currentStep, section, keywordIdx, keyword, parseContext, errors, grid, fp, unit_system, rftProperties);
|
||||||
|
|
||||||
keywordIdx++;
|
keywordIdx++;
|
||||||
if (keywordIdx == section.size())
|
if (keywordIdx == section.size())
|
||||||
@ -579,7 +573,7 @@ namespace {
|
|||||||
if (prop->whistctl_cmode != controlMode) {
|
if (prop->whistctl_cmode != controlMode) {
|
||||||
prop->whistctl_cmode = controlMode;
|
prop->whistctl_cmode = controlMode;
|
||||||
well2->updateProduction(prop);
|
well2->updateProduction(prop);
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -591,7 +585,7 @@ namespace {
|
|||||||
if (prop->whistctl_cmode != controlMode) {
|
if (prop->whistctl_cmode != controlMode) {
|
||||||
prop->whistctl_cmode = controlMode;
|
prop->whistctl_cmode = controlMode;
|
||||||
well2->updateProduction(prop);
|
well2->updateProduction(prop);
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -603,7 +597,7 @@ namespace {
|
|||||||
if (prop->whistctl_cmode != controlMode) {
|
if (prop->whistctl_cmode != controlMode) {
|
||||||
prop->whistctl_cmode = controlMode;
|
prop->whistctl_cmode = controlMode;
|
||||||
well2->updateProduction(prop);
|
well2->updateProduction(prop);
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -725,8 +719,8 @@ namespace {
|
|||||||
update |= well2->updateDrainageRadius(drainageRadius);
|
update |= well2->updateDrainageRadius(drainageRadius);
|
||||||
|
|
||||||
if (update) {
|
if (update) {
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
this->addWellGroupEvent(well2->name(), ScheduleEvents::WELL_WELSPECS_UPDATE, currentStep);
|
this->addWellGroupEvent(wellName, ScheduleEvents::WELL_WELSPECS_UPDATE, currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -905,7 +899,7 @@ namespace {
|
|||||||
if (update_well) {
|
if (update_well) {
|
||||||
m_events.addEvent( ScheduleEvents::PRODUCTION_UPDATE , currentStep);
|
m_events.addEvent( ScheduleEvents::PRODUCTION_UPDATE , currentStep);
|
||||||
this->addWellGroupEvent( well2->name(), ScheduleEvents::PRODUCTION_UPDATE, currentStep);
|
this->addWellGroupEvent( well2->name(), ScheduleEvents::PRODUCTION_UPDATE, currentStep);
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto udq = std::make_shared<UDQActive>(this->udqActive(currentStep));
|
auto udq = std::make_shared<UDQActive>(this->udqActive(currentStep));
|
||||||
@ -931,7 +925,7 @@ namespace {
|
|||||||
|
|
||||||
void Schedule::updateWell(std::shared_ptr<Well> well, size_t reportStep) {
|
void Schedule::updateWell(std::shared_ptr<Well> well, size_t reportStep) {
|
||||||
auto& dynamic_state = this->wells_static.at(well->name());
|
auto& dynamic_state = this->wells_static.at(well->name());
|
||||||
dynamic_state.update(reportStep, well);
|
dynamic_state.update(reportStep, std::move(well));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -964,7 +958,7 @@ namespace {
|
|||||||
auto& dynamic_state = this->wells_static.at(wname);
|
auto& dynamic_state = this->wells_static.at(wname);
|
||||||
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
||||||
if (well_ptr->handleWPIMULT(record))
|
if (well_ptr->handleWPIMULT(record))
|
||||||
this->updateWell(well_ptr, currentStep);
|
this->updateWell(std::move(well_ptr), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1095,7 +1089,7 @@ namespace {
|
|||||||
auto foam_properties = std::make_shared<WellFoamProperties>(well2->getFoamProperties());
|
auto foam_properties = std::make_shared<WellFoamProperties>(well2->getFoamProperties());
|
||||||
foam_properties->handleWFOAM(record);
|
foam_properties->handleWFOAM(record);
|
||||||
if (well2->updateFoamProperties(foam_properties))
|
if (well2->updateFoamProperties(foam_properties))
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1115,7 +1109,7 @@ namespace {
|
|||||||
auto polymer_properties = std::make_shared<WellPolymerProperties>( well2->getPolymerProperties() );
|
auto polymer_properties = std::make_shared<WellPolymerProperties>( well2->getPolymerProperties() );
|
||||||
polymer_properties->handleWPOLYMER(record);
|
polymer_properties->handleWPOLYMER(record);
|
||||||
if (well2->updatePolymerProperties(polymer_properties))
|
if (well2->updatePolymerProperties(polymer_properties))
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1158,7 +1152,7 @@ namespace {
|
|||||||
auto polymer_properties = std::make_shared<WellPolymerProperties>( well2->getPolymerProperties() );
|
auto polymer_properties = std::make_shared<WellPolymerProperties>( well2->getPolymerProperties() );
|
||||||
polymer_properties->handleWPMITAB(record);
|
polymer_properties->handleWPMITAB(record);
|
||||||
if (well2->updatePolymerProperties(polymer_properties))
|
if (well2->updatePolymerProperties(polymer_properties))
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1182,7 +1176,7 @@ namespace {
|
|||||||
auto polymer_properties = std::make_shared<WellPolymerProperties>( well2->getPolymerProperties() );
|
auto polymer_properties = std::make_shared<WellPolymerProperties>( well2->getPolymerProperties() );
|
||||||
polymer_properties->handleWSKPTAB(record);
|
polymer_properties->handleWSKPTAB(record);
|
||||||
if (well2->updatePolymerProperties(polymer_properties))
|
if (well2->updatePolymerProperties(polymer_properties))
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1203,7 +1197,7 @@ namespace {
|
|||||||
auto well2 = std::make_shared<Well>(*dynamic_state[currentStep]);
|
auto well2 = std::make_shared<Well>(*dynamic_state[currentStep]);
|
||||||
auto econ_limits = std::make_shared<WellEconProductionLimits>( record );
|
auto econ_limits = std::make_shared<WellEconProductionLimits>( record );
|
||||||
if (well2->updateEconLimits(econ_limits))
|
if (well2->updateEconLimits(econ_limits))
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1223,7 +1217,7 @@ namespace {
|
|||||||
auto& dynamic_state = this->wells_static.at(well_name);
|
auto& dynamic_state = this->wells_static.at(well_name);
|
||||||
auto well2 = std::make_shared<Well>(*dynamic_state[currentStep]);
|
auto well2 = std::make_shared<Well>(*dynamic_state[currentStep]);
|
||||||
if (well2->updateEfficiencyFactor(efficiencyFactor))
|
if (well2->updateEfficiencyFactor(efficiencyFactor))
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1326,7 +1320,7 @@ namespace {
|
|||||||
if (well.getSolventFraction() != fraction) {
|
if (well.getSolventFraction() != fraction) {
|
||||||
auto new_well = std::make_shared<Well>(well);
|
auto new_well = std::make_shared<Well>(well);
|
||||||
new_well->updateSolventFraction(fraction);
|
new_well->updateSolventFraction(fraction);
|
||||||
this->updateWell(new_well, currentStep);
|
this->updateWell(std::move(new_well), currentStep);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
throw std::invalid_argument("The WSOLVENT keyword can only be applied to gas injectors");
|
throw std::invalid_argument("The WSOLVENT keyword can only be applied to gas injectors");
|
||||||
@ -1352,7 +1346,7 @@ namespace {
|
|||||||
auto wellTracerProperties = std::make_shared<WellTracerProperties>( well->getTracerProperties() );
|
auto wellTracerProperties = std::make_shared<WellTracerProperties>( well->getTracerProperties() );
|
||||||
wellTracerProperties->setConcentration(tracerName, tracerConcentration);
|
wellTracerProperties->setConcentration(tracerName, tracerConcentration);
|
||||||
if (well->updateTracer(wellTracerProperties))
|
if (well->updateTracer(wellTracerProperties))
|
||||||
this->updateWell(well, currentStep);
|
this->updateWell(std::move(well), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1382,7 +1376,7 @@ namespace {
|
|||||||
auto inj = std::make_shared<Well::WellInjectionProperties>(well_ptr->getInjectionProperties());
|
auto inj = std::make_shared<Well::WellInjectionProperties>(well_ptr->getInjectionProperties());
|
||||||
inj->temperature = temp;
|
inj->temperature = temp;
|
||||||
well_ptr->updateInjection(inj);
|
well_ptr->updateInjection(inj);
|
||||||
this->updateWell(well_ptr, currentStep);
|
this->updateWell(std::move(well_ptr), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1416,7 +1410,7 @@ namespace {
|
|||||||
auto inj = std::make_shared<Well::WellInjectionProperties>(well_ptr->getInjectionProperties());
|
auto inj = std::make_shared<Well::WellInjectionProperties>(well_ptr->getInjectionProperties());
|
||||||
inj->temperature = temp;
|
inj->temperature = temp;
|
||||||
well_ptr->updateInjection(inj);
|
well_ptr->updateInjection(inj);
|
||||||
this->updateWell(well_ptr, currentStep);
|
this->updateWell(std::move(well_ptr), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1434,7 +1428,7 @@ namespace {
|
|||||||
auto& dynamic_state = this->wells_static.at(wname);
|
auto& dynamic_state = this->wells_static.at(wname);
|
||||||
auto well_ptr = std::make_shared<Well>( *dynamic_state[timestep] );
|
auto well_ptr = std::make_shared<Well>( *dynamic_state[timestep] );
|
||||||
if (well_ptr->handleCOMPLUMP(record))
|
if (well_ptr->handleCOMPLUMP(record))
|
||||||
this->updateWell(well_ptr, timestep);
|
this->updateWell(std::move(well_ptr), timestep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1558,7 +1552,7 @@ namespace {
|
|||||||
update |= well2->updateWellGuideRate(newValue);
|
update |= well2->updateWellGuideRate(newValue);
|
||||||
}
|
}
|
||||||
if (update)
|
if (update)
|
||||||
this->updateWell(well2, currentStep);
|
this->updateWell(std::move(well2), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1969,11 +1963,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
void Schedule::handleCOMPDAT( const DeckKeyword& keyword, size_t currentStep, const EclipseGrid& grid, const FieldPropsManager& fp, const ParseContext& parseContext, ErrorGuard& errors) {
|
||||||
void Schedule::handleCOMPDAT( const DeckKeyword& keyword, size_t currentStep, const EclipseGrid& grid, const FieldPropsManager& fp, const Eclipse3DProperties&, const ParseContext& parseContext, ErrorGuard& errors) {
|
|
||||||
#else
|
|
||||||
void Schedule::handleCOMPDAT( const DeckKeyword& keyword, size_t currentStep, const EclipseGrid& grid, const FieldPropsManager& , const Eclipse3DProperties& eclipseProperties, const ParseContext& parseContext, ErrorGuard& errors) {
|
|
||||||
#endif
|
|
||||||
for (const auto& record : keyword) {
|
for (const auto& record : keyword) {
|
||||||
const std::string& wellNamePattern = record.getItem("WELL").getTrimmedString(0);
|
const std::string& wellNamePattern = record.getItem("WELL").getTrimmedString(0);
|
||||||
auto wellnames = this->wellNames(wellNamePattern, currentStep);
|
auto wellnames = this->wellNames(wellNamePattern, currentStep);
|
||||||
@ -1984,11 +1974,7 @@ namespace {
|
|||||||
{
|
{
|
||||||
auto well2 = std::shared_ptr<Well>(new Well( this->getWell(name, currentStep)));
|
auto well2 = std::shared_ptr<Well>(new Well( this->getWell(name, currentStep)));
|
||||||
auto connections = std::shared_ptr<WellConnections>( new WellConnections( well2->getConnections()));
|
auto connections = std::shared_ptr<WellConnections>( new WellConnections( well2->getConnections()));
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
connections->loadCOMPDAT(record, grid, fp);
|
connections->loadCOMPDAT(record, grid, fp);
|
||||||
#else
|
|
||||||
connections->loadCOMPDAT(record, grid, eclipseProperties);
|
|
||||||
#endif
|
|
||||||
/*
|
/*
|
||||||
This block implements the following dubious logic.
|
This block implements the following dubious logic.
|
||||||
|
|
||||||
@ -2038,7 +2024,7 @@ namespace {
|
|||||||
auto& dynamic_state = this->wells_static.at(wname);
|
auto& dynamic_state = this->wells_static.at(wname);
|
||||||
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
||||||
if (well_ptr->handleWELSEGS(keyword))
|
if (well_ptr->handleWELSEGS(keyword))
|
||||||
this->updateWell(well_ptr, currentStep);
|
this->updateWell(std::move(well_ptr), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2050,7 +2036,7 @@ namespace {
|
|||||||
auto& dynamic_state = this->wells_static.at(well_name);
|
auto& dynamic_state = this->wells_static.at(well_name);
|
||||||
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
||||||
if (well_ptr->handleCOMPSEGS(keyword, grid, parseContext, errors))
|
if (well_ptr->handleCOMPSEGS(keyword, grid, parseContext, errors))
|
||||||
this->updateWell(well_ptr, currentStep);
|
this->updateWell(std::move(well_ptr), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2068,7 +2054,7 @@ namespace {
|
|||||||
auto& dynamic_state = this->wells_static.at(well_name);
|
auto& dynamic_state = this->wells_static.at(well_name);
|
||||||
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
||||||
if (well_ptr -> updateWSEGSICD(sicd_pairs) )
|
if (well_ptr -> updateWSEGSICD(sicd_pairs) )
|
||||||
this->updateWell(well_ptr, currentStep);
|
this->updateWell(std::move(well_ptr), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2085,7 +2071,7 @@ namespace {
|
|||||||
auto& dynamic_state = this->wells_static.at(well_name);
|
auto& dynamic_state = this->wells_static.at(well_name);
|
||||||
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
||||||
if (well_ptr -> updateWSEGVALV(valve_pairs) )
|
if (well_ptr -> updateWSEGVALV(valve_pairs) )
|
||||||
this->updateWell(well_ptr, currentStep);
|
this->updateWell(std::move(well_ptr), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2107,11 +2093,11 @@ namespace {
|
|||||||
auto& dynamic_state = this->wells_static.at(well_name);
|
auto& dynamic_state = this->wells_static.at(well_name);
|
||||||
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
auto well_ptr = std::make_shared<Well>( *dynamic_state[currentStep] );
|
||||||
if (well_ptr->updateWellGuideRate(availableForGroupControl, guide_rate, phase, scaling_factor)) {
|
if (well_ptr->updateWellGuideRate(availableForGroupControl, guide_rate, phase, scaling_factor)) {
|
||||||
this->updateWell(well_ptr, currentStep);
|
|
||||||
|
|
||||||
auto new_config = std::make_shared<GuideRateConfig>( this->guideRateConfig(currentStep) );
|
auto new_config = std::make_shared<GuideRateConfig>( this->guideRateConfig(currentStep) );
|
||||||
new_config->update_well(*well_ptr);
|
new_config->update_well(*well_ptr);
|
||||||
this->guide_rate_config.update( currentStep, std::move(new_config) );
|
this->guide_rate_config.update( currentStep, std::move(new_config) );
|
||||||
|
|
||||||
|
this->updateWell(std::move(well_ptr), currentStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,9 +55,8 @@ namespace Opm {
|
|||||||
|
|
||||||
SimulationConfig::SimulationConfig(bool restart,
|
SimulationConfig::SimulationConfig(bool restart,
|
||||||
const Deck& deck,
|
const Deck& deck,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp) :
|
||||||
const Eclipse3DProperties& eclipseProperties) :
|
m_ThresholdPressure( restart, deck, fp),
|
||||||
m_ThresholdPressure( restart, deck, fp, eclipseProperties ),
|
|
||||||
m_useCPR(false),
|
m_useCPR(false),
|
||||||
m_DISGAS(false),
|
m_DISGAS(false),
|
||||||
m_VAPOIL(false),
|
m_VAPOIL(false),
|
||||||
|
@ -30,17 +30,9 @@
|
|||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
|
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
ThresholdPressure::ThresholdPressure(bool restart,
|
ThresholdPressure::ThresholdPressure(bool restart,
|
||||||
const Deck& deck,
|
const Deck& deck,
|
||||||
const FieldPropsManager& fp,
|
const FieldPropsManager& fp) :
|
||||||
const Eclipse3DProperties& ) :
|
|
||||||
#else
|
|
||||||
ThresholdPressure::ThresholdPressure(bool restart,
|
|
||||||
const Deck& deck,
|
|
||||||
const FieldPropsManager& ,
|
|
||||||
const Eclipse3DProperties& eclipseProperties) :
|
|
||||||
#endif
|
|
||||||
m_active(false),
|
m_active(false),
|
||||||
m_restart(restart)
|
m_restart(restart)
|
||||||
{
|
{
|
||||||
@ -97,18 +89,11 @@ namespace Opm {
|
|||||||
|
|
||||||
//Option is set and keyword is found
|
//Option is set and keyword is found
|
||||||
if( m_active && thpresKeyword ) {
|
if( m_active && thpresKeyword ) {
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
if (!fp.has<int>("EQLNUM"))
|
if (!fp.has<int>("EQLNUM"))
|
||||||
throw std::runtime_error("Error when internalizing THPRES: EQLNUM keyword not found in deck");
|
throw std::runtime_error("Error when internalizing THPRES: EQLNUM keyword not found in deck");
|
||||||
|
|
||||||
const auto& eqlnum = fp.get<int>("EQLNUM");
|
const auto& eqlnum = fp.get<int>("EQLNUM");
|
||||||
#else
|
|
||||||
if( !eclipseProperties.hasDeckIntGridProperty("EQLNUM"))
|
|
||||||
throw std::runtime_error("Error when internalizing THPRES: EQLNUM keyword not found in deck");
|
|
||||||
|
|
||||||
const auto& eqlnumKeyword = eclipseProperties.getIntGridProperty( "EQLNUM" );
|
|
||||||
const auto& eqlnum = eqlnumKeyword.getData();
|
|
||||||
#endif
|
|
||||||
//Find max of eqlnum
|
//Find max of eqlnum
|
||||||
int maxEqlnum = *std::max_element(eqlnum.begin(), eqlnum.end());
|
int maxEqlnum = *std::max_element(eqlnum.begin(), eqlnum.end());
|
||||||
|
|
||||||
|
@ -127,21 +127,20 @@ TSTEP
|
|||||||
auto deck3 = parser.parseString(WITH_GRID);
|
auto deck3 = parser.parseString(WITH_GRID);
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck1 );
|
TableManager table ( deck1 );
|
||||||
Eclipse3DProperties eclipseProperties ( deck1 , table, grid1);
|
|
||||||
FieldPropsManager fp( deck1 , grid1, table);
|
FieldPropsManager fp( deck1 , grid1, table);
|
||||||
Runspec runspec (deck1);
|
Runspec runspec (deck1);
|
||||||
|
|
||||||
// The ACTIONX keyword has no matching 'ENDACTIO' -> exception
|
// The ACTIONX keyword has no matching 'ENDACTIO' -> exception
|
||||||
BOOST_CHECK_THROW(Schedule(deck1, grid1, fp, eclipseProperties, runspec ), std::invalid_argument);
|
BOOST_CHECK_THROW(Schedule(deck1, grid1, fp, runspec ), std::invalid_argument);
|
||||||
|
|
||||||
Schedule sched(deck2, grid1, fp, eclipseProperties, runspec);
|
Schedule sched(deck2, grid1, fp, runspec);
|
||||||
BOOST_CHECK( !sched.hasWell("W1") );
|
BOOST_CHECK( !sched.hasWell("W1") );
|
||||||
BOOST_CHECK( sched.hasWell("W2"));
|
BOOST_CHECK( sched.hasWell("W2"));
|
||||||
|
|
||||||
// The deck3 contains the 'GRID' keyword in the ACTIONX block - that is not a whitelisted keyword.
|
// The deck3 contains the 'GRID' keyword in the ACTIONX block - that is not a whitelisted keyword.
|
||||||
ParseContext parseContext( {{ParseContext::ACTIONX_ILLEGAL_KEYWORD, InputError::THROW_EXCEPTION}} );
|
ParseContext parseContext( {{ParseContext::ACTIONX_ILLEGAL_KEYWORD, InputError::THROW_EXCEPTION}} );
|
||||||
ErrorGuard errors;
|
ErrorGuard errors;
|
||||||
BOOST_CHECK_THROW(Schedule(deck3, grid1, fp, eclipseProperties, runspec, parseContext, errors), std::invalid_argument);
|
BOOST_CHECK_THROW(Schedule(deck3, grid1, fp, runspec, parseContext, errors), std::invalid_argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -222,11 +221,10 @@ TSTEP
|
|||||||
auto deck = parser.parseString(deck_string);
|
auto deck = parser.parseString(deck_string);
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
Runspec runspec(deck);
|
Runspec runspec(deck);
|
||||||
|
|
||||||
return Schedule(deck, grid1, fp, eclipseProperties, runspec);
|
return Schedule(deck, grid1, fp, runspec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -693,11 +691,10 @@ TSTEP
|
|||||||
auto deck = parser.parseString(deck_string);
|
auto deck = parser.parseString(deck_string);
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
|
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid1, fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid1, fp, runspec);
|
||||||
const auto& actions0 = sched.actions(0);
|
const auto& actions0 = sched.actions(0);
|
||||||
BOOST_CHECK_EQUAL(actions0.size(), 0);
|
BOOST_CHECK_EQUAL(actions0.size(), 0);
|
||||||
|
|
||||||
|
@ -966,10 +966,10 @@ static Opm::Deck createActnumBoxDeck() {
|
|||||||
BOOST_AUTO_TEST_CASE(GridBoxActnum) {
|
BOOST_AUTO_TEST_CASE(GridBoxActnum) {
|
||||||
auto deck = createActnumBoxDeck();
|
auto deck = createActnumBoxDeck();
|
||||||
Opm::EclipseState es( deck);
|
Opm::EclipseState es( deck);
|
||||||
auto ep = es.get3DProperties();
|
const auto& fp = es.fieldProps();
|
||||||
const auto& grid = es.getInputGrid();
|
const auto& grid = es.getInputGrid();
|
||||||
|
|
||||||
BOOST_CHECK_NO_THROW(ep.getIntGridProperty("ACTNUM"));
|
BOOST_CHECK_NO_THROW(fp.get<int>("ACTNUM"));
|
||||||
|
|
||||||
size_t active = 10 * 10 * 10 // 1000
|
size_t active = 10 * 10 * 10 // 1000
|
||||||
- (10 * 10 * 1) // - top layer
|
- (10 * 10 * 1) // - top layer
|
||||||
@ -1017,14 +1017,14 @@ BOOST_AUTO_TEST_CASE(GridActnumVia3D) {
|
|||||||
auto deck = createActnumDeck();
|
auto deck = createActnumDeck();
|
||||||
|
|
||||||
Opm::EclipseState es( deck);
|
Opm::EclipseState es( deck);
|
||||||
auto ep = es.get3DProperties();
|
const auto& fp = es.fieldProps();
|
||||||
const auto& grid = es.getInputGrid();
|
const auto& grid = es.getInputGrid();
|
||||||
Opm::EclipseGrid grid2( grid );
|
Opm::EclipseGrid grid2( grid );
|
||||||
|
|
||||||
std::vector<int> actnum = {1, 1, 0, 1, 1, 0, 1, 1};
|
std::vector<int> actnum = {1, 1, 0, 1, 1, 0, 1, 1};
|
||||||
Opm::EclipseGrid grid3( grid , actnum);
|
Opm::EclipseGrid grid3( grid , actnum);
|
||||||
|
|
||||||
BOOST_CHECK_NO_THROW(ep.getIntGridProperty("ACTNUM"));
|
BOOST_CHECK_NO_THROW(fp.get<int>("ACTNUM"));
|
||||||
BOOST_CHECK_NO_THROW(grid.getNumActive());
|
BOOST_CHECK_NO_THROW(grid.getNumActive());
|
||||||
BOOST_CHECK_EQUAL(grid.getNumActive(), 2 * 2 * 2 - 1);
|
BOOST_CHECK_EQUAL(grid.getNumActive(), 2 * 2 * 2 - 1);
|
||||||
|
|
||||||
|
@ -100,18 +100,14 @@ static Deck createDeckTOP() {
|
|||||||
BOOST_AUTO_TEST_CASE(GetPOROTOPBased) {
|
BOOST_AUTO_TEST_CASE(GetPOROTOPBased) {
|
||||||
auto deck = createDeckTOP();
|
auto deck = createDeckTOP();
|
||||||
EclipseState state(deck );
|
EclipseState state(deck );
|
||||||
const Eclipse3DProperties& props = state.get3DProperties();
|
const auto& fp = state.fieldProps();
|
||||||
|
|
||||||
const GridProperty<double>& poro = props.getDoubleGridProperty( "PORO" );
|
const auto& poro = fp.get<double>( "PORO" );
|
||||||
const GridProperty<double>& permx = props.getDoubleGridProperty( "PERMX" );
|
const auto& permx = fp.get<double>( "PERMX" );
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(1000U , poro.getCartesianSize() );
|
for (size_t i=0; i < poro.size(); i++) {
|
||||||
BOOST_CHECK_EQUAL(1000U , permx.getCartesianSize() );
|
BOOST_CHECK_EQUAL( 0.10 , poro[i]);
|
||||||
const auto& poro_data = poro.getData();
|
BOOST_CHECK_EQUAL( 0.25 * Metric::Permeability , permx[i]);
|
||||||
const auto& permx_data = permx.getData();
|
|
||||||
for (size_t i=0; i < poro.getCartesianSize(); i++) {
|
|
||||||
BOOST_CHECK_EQUAL( 0.10 , poro_data[i]);
|
|
||||||
BOOST_CHECK_EQUAL( 0.25 * Metric::Permeability , permx_data[i]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,9 +274,9 @@ BOOST_AUTO_TEST_CASE(IntProperties) {
|
|||||||
auto deck = createDeck();
|
auto deck = createDeck();
|
||||||
EclipseState state( deck );
|
EclipseState state( deck );
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL( false, state.get3DProperties().supportsGridProperty( "NONO" ) );
|
BOOST_CHECK_EQUAL( false, state.fieldProps().supported<int>( "NONO" ) );
|
||||||
BOOST_CHECK_EQUAL( true, state.get3DProperties().supportsGridProperty( "SATNUM" ) );
|
BOOST_CHECK_EQUAL( true, state.fieldProps().supported<int>( "SATNUM" ) );
|
||||||
BOOST_CHECK_EQUAL( true, state.get3DProperties().hasDeckIntGridProperty( "SATNUM" ) );
|
BOOST_CHECK_EQUAL( true, state.fieldProps().has<int>( "SATNUM" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -288,11 +284,10 @@ BOOST_AUTO_TEST_CASE(GetProperty) {
|
|||||||
auto deck = createDeck();
|
auto deck = createDeck();
|
||||||
EclipseState state(deck);
|
EclipseState state(deck);
|
||||||
|
|
||||||
const auto& satNUM = state.get3DProperties().getIntGridProperty( "SATNUM" );
|
const auto& satnum = state.fieldProps().get_global<int>("SATNUM");
|
||||||
const auto& satnum_data = satNUM.getData();
|
BOOST_CHECK_EQUAL(1000U , satnum.size() );
|
||||||
BOOST_CHECK_EQUAL(1000U , satNUM.getCartesianSize() );
|
for (size_t i=0; i < satnum.size(); i++)
|
||||||
for (size_t i=0; i < satNUM.getCartesianSize(); i++)
|
BOOST_CHECK_EQUAL( 2 , satnum[i]);
|
||||||
BOOST_CHECK_EQUAL( 2 , satnum_data[i]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(GetTransMult) {
|
BOOST_AUTO_TEST_CASE(GetTransMult) {
|
||||||
@ -427,11 +422,11 @@ static Deck createDeckWithGridOpts() {
|
|||||||
BOOST_AUTO_TEST_CASE(NoGridOptsDefaultRegion) {
|
BOOST_AUTO_TEST_CASE(NoGridOptsDefaultRegion) {
|
||||||
auto deck = createDeckNoGridOpts();
|
auto deck = createDeckNoGridOpts();
|
||||||
EclipseState state(deck);
|
EclipseState state(deck);
|
||||||
const auto& props = state.get3DProperties();
|
const auto& fp = state.fieldProps();
|
||||||
const auto& multnum = props.getIntGridProperty("MULTNUM");
|
const auto& multnum = fp.get<int>("MULTNUM");
|
||||||
const auto& fluxnum = props.getIntGridProperty("FLUXNUM");
|
const auto& fluxnum = fp.get<int>("FLUXNUM");
|
||||||
const auto default_kw = props.getDefaultRegionKeyword();
|
const auto default_kw = fp.default_region();
|
||||||
const auto& def_pro = props.getIntGridProperty(default_kw);
|
const auto& def_pro = fp.get<int>(default_kw);
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL( &fluxnum , &def_pro );
|
BOOST_CHECK_EQUAL( &fluxnum , &def_pro );
|
||||||
BOOST_CHECK_NE( &fluxnum , &multnum );
|
BOOST_CHECK_NE( &fluxnum , &multnum );
|
||||||
@ -441,11 +436,11 @@ BOOST_AUTO_TEST_CASE(NoGridOptsDefaultRegion) {
|
|||||||
BOOST_AUTO_TEST_CASE(WithGridOptsDefaultRegion) {
|
BOOST_AUTO_TEST_CASE(WithGridOptsDefaultRegion) {
|
||||||
auto deck = createDeckWithGridOpts();
|
auto deck = createDeckWithGridOpts();
|
||||||
EclipseState state(deck);
|
EclipseState state(deck);
|
||||||
const auto& props = state.get3DProperties();
|
const auto& fp = state.fieldProps();
|
||||||
const auto& multnum = props.getIntGridProperty("MULTNUM");
|
const auto& multnum = fp.get<int>("MULTNUM");
|
||||||
const auto& fluxnum = props.getIntGridProperty("FLUXNUM");
|
const auto& fluxnum = fp.get<int>("FLUXNUM");
|
||||||
const auto default_kw = props.getDefaultRegionKeyword();
|
const auto default_kw = fp.default_region();
|
||||||
const auto& def_pro = props.getIntGridProperty(default_kw);
|
const auto& def_pro = fp.get<int>(default_kw);
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL( &multnum , &def_pro );
|
BOOST_CHECK_EQUAL( &multnum , &def_pro );
|
||||||
BOOST_CHECK_NE( &fluxnum , &multnum );
|
BOOST_CHECK_NE( &fluxnum , &multnum );
|
||||||
|
@ -76,13 +76,12 @@ BOOST_AUTO_TEST_CASE( CheckUnsoppertedInSCHEDULE ) {
|
|||||||
auto deck = parser.parseString( deckString, parseContext, errors);
|
auto deck = parser.parseString( deckString, parseContext, errors);
|
||||||
EclipseGrid grid( deck );
|
EclipseGrid grid( deck );
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
|
|
||||||
parseContext.update( ParseContext::UNSUPPORTED_SCHEDULE_GEO_MODIFIER , InputError::IGNORE );
|
parseContext.update( ParseContext::UNSUPPORTED_SCHEDULE_GEO_MODIFIER , InputError::IGNORE );
|
||||||
{
|
{
|
||||||
Runspec runspec ( deck );
|
Runspec runspec ( deck );
|
||||||
Schedule schedule( deck, grid , fp, eclipseProperties, runspec , parseContext, errors);
|
Schedule schedule( deck, grid , fp, runspec , parseContext, errors);
|
||||||
auto events = schedule.getEvents( );
|
auto events = schedule.getEvents( );
|
||||||
BOOST_CHECK_EQUAL( false , events.hasEvent( ScheduleEvents::GEO_MODIFIER , 1 ));
|
BOOST_CHECK_EQUAL( false , events.hasEvent( ScheduleEvents::GEO_MODIFIER , 1 ));
|
||||||
BOOST_CHECK_EQUAL( true , events.hasEvent( ScheduleEvents::GEO_MODIFIER , 2 ));
|
BOOST_CHECK_EQUAL( true , events.hasEvent( ScheduleEvents::GEO_MODIFIER , 2 ));
|
||||||
|
@ -128,10 +128,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithGEFAC) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
Runspec runspec (deck );
|
Runspec runspec (deck );
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Opm::Schedule schedule(deck, grid, fp, eclipseProperties, runspec);
|
Opm::Schedule schedule(deck, grid, fp, runspec);
|
||||||
|
|
||||||
auto group_names = schedule.groupNames("PRODUC");
|
auto group_names = schedule.groupNames("PRODUC");
|
||||||
BOOST_CHECK_EQUAL(group_names.size(), 1);
|
BOOST_CHECK_EQUAL(group_names.size(), 1);
|
||||||
@ -182,10 +181,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithWGRUPCONandWCONPROD) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck );
|
Runspec runspec (deck );
|
||||||
Opm::Schedule schedule(deck, grid, fp, eclipseProperties, runspec);
|
Opm::Schedule schedule(deck, grid, fp, runspec);
|
||||||
const auto& currentWell = schedule.getWell("B-37T2", 0);
|
const auto& currentWell = schedule.getWell("B-37T2", 0);
|
||||||
const Opm::Well::WellProductionProperties& wellProductionProperties = currentWell.getProductionProperties();
|
const Opm::Well::WellProductionProperties& wellProductionProperties = currentWell.getProductionProperties();
|
||||||
BOOST_CHECK(wellProductionProperties.controlMode == Opm::Well::ProducerCMode::GRUP);
|
BOOST_CHECK(wellProductionProperties.controlMode == Opm::Well::ProducerCMode::GRUP);
|
||||||
@ -227,10 +225,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithGRUPNET) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck );
|
Runspec runspec (deck );
|
||||||
Opm::Schedule schedule(deck, grid, fp, eclipseProperties, runspec);
|
Opm::Schedule schedule(deck, grid, fp, runspec);
|
||||||
|
|
||||||
const auto& group1 = schedule.getGroup("PROD", 0);
|
const auto& group1 = schedule.getGroup("PROD", 0);
|
||||||
const auto& group2 = schedule.getGroup("MANI-E2", 0);
|
const auto& group2 = schedule.getGroup("MANI-E2", 0);
|
||||||
@ -286,10 +283,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithGCONPROD) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck );
|
Runspec runspec (deck );
|
||||||
Opm::Schedule schedule(deck, grid, fp, eclipseProperties, runspec);
|
Opm::Schedule schedule(deck, grid, fp, runspec);
|
||||||
SummaryState st(std::chrono::system_clock::now());
|
SummaryState st(std::chrono::system_clock::now());
|
||||||
|
|
||||||
const auto& group1 = schedule.getGroup("G1", 0);
|
const auto& group1 = schedule.getGroup("G1", 0);
|
||||||
@ -340,12 +336,11 @@ BOOST_AUTO_TEST_CASE(TESTGuideRateLINCOM) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck );
|
Runspec runspec (deck );
|
||||||
|
|
||||||
/* The 'COMB' target mode is not supported */
|
/* The 'COMB' target mode is not supported */
|
||||||
BOOST_CHECK_THROW(Opm::Schedule schedule(deck, grid, fp, eclipseProperties, runspec), std::logic_error);
|
BOOST_CHECK_THROW(Opm::Schedule schedule(deck, grid, fp, runspec), std::logic_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(TESTGuideRate) {
|
BOOST_AUTO_TEST_CASE(TESTGuideRate) {
|
||||||
@ -378,10 +373,9 @@ BOOST_AUTO_TEST_CASE(TESTGuideRate) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck );
|
Runspec runspec (deck );
|
||||||
Schedule schedule(deck, grid, fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid, fp, runspec);
|
||||||
|
|
||||||
GuideRate gr(schedule);
|
GuideRate gr(schedule);
|
||||||
}
|
}
|
||||||
@ -412,10 +406,9 @@ BOOST_AUTO_TEST_CASE(TESTGCONSALE) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck );
|
Runspec runspec (deck );
|
||||||
Schedule schedule(deck, grid, fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid, fp, runspec);
|
||||||
|
|
||||||
double metric_to_si = 1.0 / (24.0 * 3600.0); //cubic meters / day
|
double metric_to_si = 1.0 / (24.0 * 3600.0); //cubic meters / day
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@
|
|||||||
#include <opm/parser/eclipse/Deck/Deck.hpp>
|
#include <opm/parser/eclipse/Deck/Deck.hpp>
|
||||||
#include <opm/parser/eclipse/Deck/DeckKeyword.hpp>
|
#include <opm/parser/eclipse/Deck/DeckKeyword.hpp>
|
||||||
|
|
||||||
#include <opm/parser/eclipse/EclipseState/Eclipse3DProperties.hpp>
|
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/MULTREGTScanner.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/MULTREGTScanner.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/EclipseGrid.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/EclipseGrid.hpp>
|
||||||
#include <opm/parser/eclipse/EclipseState/Grid/GridProperties.hpp>
|
#include <opm/parser/eclipse/EclipseState/Grid/GridProperties.hpp>
|
||||||
@ -110,26 +109,25 @@ BOOST_AUTO_TEST_CASE(InvalidInput) {
|
|||||||
Opm::EclipseGrid grid( deck );
|
Opm::EclipseGrid grid( deck );
|
||||||
Opm::TableManager tm(deck);
|
Opm::TableManager tm(deck);
|
||||||
Opm::EclipseGrid eg( deck );
|
Opm::EclipseGrid eg( deck );
|
||||||
Opm::Eclipse3DProperties props(deck, tm, eg);
|
|
||||||
Opm::FieldPropsManager fp(deck, eg, tm);
|
Opm::FieldPropsManager fp(deck, eg, tm);
|
||||||
|
|
||||||
// Invalid direction
|
// Invalid direction
|
||||||
std::vector<const Opm::DeckKeyword*> keywords0;
|
std::vector<const Opm::DeckKeyword*> keywords0;
|
||||||
const auto& multregtKeyword0 = deck.getKeyword( "MULTREGT", 0 );
|
const auto& multregtKeyword0 = deck.getKeyword( "MULTREGT", 0 );
|
||||||
keywords0.push_back( &multregtKeyword0 );
|
keywords0.push_back( &multregtKeyword0 );
|
||||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, props, keywords0 ); , std::invalid_argument );
|
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords0 ); , std::invalid_argument );
|
||||||
|
|
||||||
// Not supported region
|
// Not supported region
|
||||||
std::vector<const Opm::DeckKeyword*> keywords1;
|
std::vector<const Opm::DeckKeyword*> keywords1;
|
||||||
const auto& multregtKeyword1 = deck.getKeyword( "MULTREGT", 1 );
|
const auto& multregtKeyword1 = deck.getKeyword( "MULTREGT", 1 );
|
||||||
keywords1.push_back( &multregtKeyword1 );
|
keywords1.push_back( &multregtKeyword1 );
|
||||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, props, keywords1 ); , std::invalid_argument );
|
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords1 ); , std::invalid_argument );
|
||||||
|
|
||||||
// The keyword is ok; but it refers to a region which is not in the deck.
|
// The keyword is ok; but it refers to a region which is not in the deck.
|
||||||
std::vector<const Opm::DeckKeyword*> keywords2;
|
std::vector<const Opm::DeckKeyword*> keywords2;
|
||||||
const auto& multregtKeyword2 = deck.getKeyword( "MULTREGT", 2 );
|
const auto& multregtKeyword2 = deck.getKeyword( "MULTREGT", 2 );
|
||||||
keywords2.push_back( &multregtKeyword2 );
|
keywords2.push_back( &multregtKeyword2 );
|
||||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, props, keywords2 ); , std::logic_error );
|
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords2 ); , std::logic_error );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -177,7 +175,6 @@ BOOST_AUTO_TEST_CASE(NotSupported) {
|
|||||||
Opm::EclipseGrid grid( deck );
|
Opm::EclipseGrid grid( deck );
|
||||||
Opm::TableManager tm(deck);
|
Opm::TableManager tm(deck);
|
||||||
Opm::EclipseGrid eg( deck );
|
Opm::EclipseGrid eg( deck );
|
||||||
Opm::Eclipse3DProperties props(deck, tm, eg);
|
|
||||||
Opm::FieldPropsManager fp(deck, eg, tm);
|
Opm::FieldPropsManager fp(deck, eg, tm);
|
||||||
|
|
||||||
|
|
||||||
@ -185,13 +182,13 @@ BOOST_AUTO_TEST_CASE(NotSupported) {
|
|||||||
std::vector<const Opm::DeckKeyword*> keywords0;
|
std::vector<const Opm::DeckKeyword*> keywords0;
|
||||||
const auto& multregtKeyword0 = deck.getKeyword( "MULTREGT", 0 );
|
const auto& multregtKeyword0 = deck.getKeyword( "MULTREGT", 0 );
|
||||||
keywords0.push_back( &multregtKeyword0 );
|
keywords0.push_back( &multregtKeyword0 );
|
||||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, props, keywords0 ); , std::invalid_argument );
|
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords0 ); , std::invalid_argument );
|
||||||
|
|
||||||
// srcValue == targetValue - not supported
|
// srcValue == targetValue - not supported
|
||||||
std::vector<const Opm::DeckKeyword*> keywords1;
|
std::vector<const Opm::DeckKeyword*> keywords1;
|
||||||
const Opm::DeckKeyword& multregtKeyword1 = deck.getKeyword( "MULTREGT", 1 );
|
const Opm::DeckKeyword& multregtKeyword1 = deck.getKeyword( "MULTREGT", 1 );
|
||||||
keywords1.push_back( &multregtKeyword1 );
|
keywords1.push_back( &multregtKeyword1 );
|
||||||
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, props, keywords1 ); , std::invalid_argument );
|
BOOST_CHECK_THROW( Opm::MULTREGTScanner scanner( grid, fp, keywords1 ); , std::invalid_argument );
|
||||||
}
|
}
|
||||||
|
|
||||||
static Opm::Deck createDefaultedRegions() {
|
static Opm::Deck createDefaultedRegions() {
|
||||||
@ -239,14 +236,13 @@ BOOST_AUTO_TEST_CASE(DefaultedRegions) {
|
|||||||
Opm::EclipseGrid grid( deck );
|
Opm::EclipseGrid grid( deck );
|
||||||
Opm::TableManager tm(deck);
|
Opm::TableManager tm(deck);
|
||||||
Opm::EclipseGrid eg( deck );
|
Opm::EclipseGrid eg( deck );
|
||||||
Opm::Eclipse3DProperties props(deck, tm, eg);
|
|
||||||
Opm::FieldPropsManager fp(deck, eg, tm);
|
Opm::FieldPropsManager fp(deck, eg, tm);
|
||||||
|
|
||||||
|
|
||||||
std::vector<const Opm::DeckKeyword*> keywords0;
|
std::vector<const Opm::DeckKeyword*> keywords0;
|
||||||
const auto& multregtKeyword0 = deck.getKeyword( "MULTREGT", 0 );
|
const auto& multregtKeyword0 = deck.getKeyword( "MULTREGT", 0 );
|
||||||
keywords0.push_back( &multregtKeyword0 );
|
keywords0.push_back( &multregtKeyword0 );
|
||||||
Opm::MULTREGTScanner scanner0(grid, fp, props, keywords0);
|
Opm::MULTREGTScanner scanner0(grid, fp, keywords0);
|
||||||
BOOST_CHECK_EQUAL( scanner0.getRegionMultiplier(grid.getGlobalIndex(0,0,1), grid.getGlobalIndex(1,0,1), Opm::FaceDir::XPlus ), 1.25);
|
BOOST_CHECK_EQUAL( scanner0.getRegionMultiplier(grid.getGlobalIndex(0,0,1), grid.getGlobalIndex(1,0,1), Opm::FaceDir::XPlus ), 1.25);
|
||||||
BOOST_CHECK_EQUAL( scanner0.getRegionMultiplier(grid.getGlobalIndex(1,0,0), grid.getGlobalIndex(2,0,0), Opm::FaceDir::XPlus ), 1.0);
|
BOOST_CHECK_EQUAL( scanner0.getRegionMultiplier(grid.getGlobalIndex(1,0,0), grid.getGlobalIndex(2,0,0), Opm::FaceDir::XPlus ), 1.0);
|
||||||
BOOST_CHECK_EQUAL( scanner0.getRegionMultiplier(grid.getGlobalIndex(2,0,1), grid.getGlobalIndex(2,0,0), Opm::FaceDir::ZMinus ), 0.0);
|
BOOST_CHECK_EQUAL( scanner0.getRegionMultiplier(grid.getGlobalIndex(2,0,1), grid.getGlobalIndex(2,0,0), Opm::FaceDir::ZMinus ), 0.0);
|
||||||
@ -254,7 +250,7 @@ BOOST_AUTO_TEST_CASE(DefaultedRegions) {
|
|||||||
std::vector<const Opm::DeckKeyword*> keywords1;
|
std::vector<const Opm::DeckKeyword*> keywords1;
|
||||||
const Opm::DeckKeyword& multregtKeyword1 = deck.getKeyword( "MULTREGT", 1 );
|
const Opm::DeckKeyword& multregtKeyword1 = deck.getKeyword( "MULTREGT", 1 );
|
||||||
keywords1.push_back( &multregtKeyword1 );
|
keywords1.push_back( &multregtKeyword1 );
|
||||||
Opm::MULTREGTScanner scanner1(grid, fp, props, keywords1 );
|
Opm::MULTREGTScanner scanner1(grid, fp, keywords1 );
|
||||||
BOOST_CHECK_EQUAL( scanner1.getRegionMultiplier(grid.getGlobalIndex(2,0,0), grid.getGlobalIndex(1,0,0), Opm::FaceDir::XMinus ), 0.75);
|
BOOST_CHECK_EQUAL( scanner1.getRegionMultiplier(grid.getGlobalIndex(2,0,0), grid.getGlobalIndex(1,0,0), Opm::FaceDir::XMinus ), 0.75);
|
||||||
BOOST_CHECK_EQUAL( scanner1.getRegionMultiplier(grid.getGlobalIndex(2,0,0), grid.getGlobalIndex(2,0,1), Opm::FaceDir::ZPlus), 0.75);
|
BOOST_CHECK_EQUAL( scanner1.getRegionMultiplier(grid.getGlobalIndex(2,0,0), grid.getGlobalIndex(2,0,1), Opm::FaceDir::ZPlus), 0.75);
|
||||||
}
|
}
|
||||||
@ -300,13 +296,12 @@ BOOST_AUTO_TEST_CASE(MULTREGT_COPY_MULTNUM) {
|
|||||||
Opm::Deck deck = createCopyMULTNUMDeck();
|
Opm::Deck deck = createCopyMULTNUMDeck();
|
||||||
Opm::TableManager tm(deck);
|
Opm::TableManager tm(deck);
|
||||||
Opm::EclipseGrid eg(deck);
|
Opm::EclipseGrid eg(deck);
|
||||||
Opm::Eclipse3DProperties props(deck, tm, eg);
|
|
||||||
Opm::FieldPropsManager fp(deck, eg, tm);
|
Opm::FieldPropsManager fp(deck, eg, tm);
|
||||||
|
|
||||||
BOOST_CHECK_NO_THROW(props.hasDeckIntGridProperty("FLUXNUM"));
|
BOOST_CHECK_NO_THROW(fp.has<int>("FLUXNUM"));
|
||||||
BOOST_CHECK_NO_THROW(props.hasDeckIntGridProperty("MULTNUM"));
|
BOOST_CHECK_NO_THROW(fp.has<int>("MULTNUM"));
|
||||||
const auto& fdata = props.getIntGridProperty("FLUXNUM").getData();
|
const auto& fdata = fp.get_global<int>("FLUXNUM");
|
||||||
const auto& mdata = props.getIntGridProperty("MULTNUM").getData();
|
const auto& mdata = fp.get_global<int>("MULTNUM");
|
||||||
std::vector<int> data = { 1, 2, 1, 2, 3, 4, 3, 4 };
|
std::vector<int> data = { 1, 2, 1, 2, 3, 4, 3, 4 };
|
||||||
|
|
||||||
for (auto i = 0; i < 2 * 2 * 2; i++) {
|
for (auto i = 0; i < 2 * 2 * 2; i++) {
|
||||||
|
@ -78,10 +78,9 @@ BOOST_AUTO_TEST_CASE(MESSAGES) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid, fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid, fp, runspec);
|
||||||
const MessageLimits limits = schedule.getMessageLimits();
|
const MessageLimits limits = schedule.getMessageLimits();
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL( limits.getBugPrintLimit( 0 ) , 77 ); // The pre Schedule initialization
|
BOOST_CHECK_EQUAL( limits.getBugPrintLimit( 0 ) , 77 ); // The pre Schedule initialization
|
||||||
|
@ -332,17 +332,16 @@ BOOST_AUTO_TEST_CASE( CheckUnsupportedInSCHEDULE ) {
|
|||||||
auto deckUnSupported = parser.parseString( deckStringUnSupported , parseContext, errors );
|
auto deckUnSupported = parser.parseString( deckStringUnSupported , parseContext, errors );
|
||||||
EclipseGrid grid( deckSupported );
|
EclipseGrid grid( deckSupported );
|
||||||
TableManager table ( deckSupported );
|
TableManager table ( deckSupported );
|
||||||
Eclipse3DProperties eclipseProperties ( deckSupported , table, grid);
|
|
||||||
FieldPropsManager fp(deckSupported, grid, table);
|
FieldPropsManager fp(deckSupported, grid, table);
|
||||||
Runspec runspec(deckSupported);
|
Runspec runspec(deckSupported);
|
||||||
|
|
||||||
parseContext.update( ParseContext::UNSUPPORTED_SCHEDULE_GEO_MODIFIER , InputError::IGNORE );
|
parseContext.update( ParseContext::UNSUPPORTED_SCHEDULE_GEO_MODIFIER , InputError::IGNORE );
|
||||||
BOOST_CHECK_NO_THROW( Schedule( deckSupported , grid , fp, eclipseProperties, runspec, parseContext, errors ));
|
BOOST_CHECK_NO_THROW( Schedule( deckSupported , grid , fp, runspec, parseContext, errors ));
|
||||||
BOOST_CHECK_NO_THROW( Schedule( deckUnSupported, grid , fp, eclipseProperties, runspec, parseContext, errors ));
|
BOOST_CHECK_NO_THROW( Schedule( deckUnSupported, grid , fp, runspec, parseContext, errors ));
|
||||||
|
|
||||||
parseContext.update( ParseContext::UNSUPPORTED_SCHEDULE_GEO_MODIFIER , InputError::THROW_EXCEPTION );
|
parseContext.update( ParseContext::UNSUPPORTED_SCHEDULE_GEO_MODIFIER , InputError::THROW_EXCEPTION );
|
||||||
BOOST_CHECK_THROW( Schedule( deckUnSupported , grid , fp, eclipseProperties, runspec , parseContext , errors), std::invalid_argument );
|
BOOST_CHECK_THROW( Schedule( deckUnSupported , grid , fp, runspec , parseContext , errors), std::invalid_argument );
|
||||||
BOOST_CHECK_NO_THROW( Schedule( deckSupported , grid , fp, eclipseProperties, runspec , parseContext, errors));
|
BOOST_CHECK_NO_THROW( Schedule( deckSupported , grid , fp, runspec , parseContext, errors));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -411,15 +410,14 @@ BOOST_AUTO_TEST_CASE(TestCOMPORD) {
|
|||||||
|
|
||||||
EclipseGrid grid( deck );
|
EclipseGrid grid( deck );
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec(deck);
|
Runspec runspec(deck);
|
||||||
|
|
||||||
parseContext.update( ParseContext::UNSUPPORTED_COMPORD_TYPE , InputError::IGNORE);
|
parseContext.update( ParseContext::UNSUPPORTED_COMPORD_TYPE , InputError::IGNORE);
|
||||||
BOOST_CHECK_NO_THROW( Schedule( deck , grid , fp, eclipseProperties, runspec, parseContext, errors ));
|
BOOST_CHECK_NO_THROW( Schedule( deck , grid , fp, runspec, parseContext, errors ));
|
||||||
|
|
||||||
parseContext.update( ParseContext::UNSUPPORTED_COMPORD_TYPE , InputError::THROW_EXCEPTION);
|
parseContext.update( ParseContext::UNSUPPORTED_COMPORD_TYPE , InputError::THROW_EXCEPTION);
|
||||||
BOOST_CHECK_THROW( Schedule( deck, grid , fp, eclipseProperties, runspec , parseContext, errors), std::invalid_argument );
|
BOOST_CHECK_THROW( Schedule( deck, grid , fp, runspec , parseContext, errors), std::invalid_argument );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -762,11 +760,10 @@ BOOST_AUTO_TEST_CASE( test_invalid_wtemplate_config ) {
|
|||||||
|
|
||||||
EclipseGrid grid( deckUnSupported );
|
EclipseGrid grid( deckUnSupported );
|
||||||
TableManager table ( deckUnSupported );
|
TableManager table ( deckUnSupported );
|
||||||
Eclipse3DProperties eclipseProperties ( deckUnSupported , table, grid);
|
|
||||||
FieldPropsManager fp( deckUnSupported , grid, table);
|
FieldPropsManager fp( deckUnSupported , grid, table);
|
||||||
Runspec runspec( deckUnSupported);
|
Runspec runspec( deckUnSupported);
|
||||||
|
|
||||||
BOOST_CHECK_THROW( Schedule( deckUnSupported , grid , fp, eclipseProperties, runspec , parseContext, errors), std::invalid_argument );
|
BOOST_CHECK_THROW( Schedule( deckUnSupported , grid , fp, runspec , parseContext, errors), std::invalid_argument );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,10 +361,9 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckMissingReturnsDefaults) {
|
|||||||
deck.addKeyword( DeckKeyword( parser.getKeyword("SCHEDULE" )));
|
deck.addKeyword( DeckKeyword( parser.getKeyword("SCHEDULE" )));
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec );
|
Schedule schedule(deck, grid , fp, runspec );
|
||||||
BOOST_CHECK_EQUAL( schedule.getStartTime() , TimeMap::mkdate(1983, 1 , 1));
|
BOOST_CHECK_EQUAL( schedule.getStartTime() , TimeMap::mkdate(1983, 1 , 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,10 +371,9 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWellsOrdered) {
|
|||||||
auto deck = createDeckWithWellsOrdered();
|
auto deck = createDeckWithWellsOrdered();
|
||||||
EclipseGrid grid(100,100,100);
|
EclipseGrid grid(100,100,100);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
auto well_names = schedule.wellNames();
|
auto well_names = schedule.wellNames();
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL( "CW_1" , well_names[0]);
|
BOOST_CHECK_EQUAL( "CW_1" , well_names[0]);
|
||||||
@ -402,10 +400,9 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWellsOrderedGRUPTREE) {
|
|||||||
auto deck = createDeckWithWellsOrderedGRUPTREE();
|
auto deck = createDeckWithWellsOrderedGRUPTREE();
|
||||||
EclipseGrid grid(100,100,100);
|
EclipseGrid grid(100,100,100);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_THROW( schedule.getChildWells2( "NO_SUCH_GROUP" , 1 ), std::invalid_argument);
|
BOOST_CHECK_THROW( schedule.getChildWells2( "NO_SUCH_GROUP" , 1 ), std::invalid_argument);
|
||||||
{
|
{
|
||||||
@ -454,10 +451,9 @@ BOOST_AUTO_TEST_CASE(GroupTree2TEST) {
|
|||||||
auto deck = createDeckWithWellsOrderedGRUPTREE();
|
auto deck = createDeckWithWellsOrderedGRUPTREE();
|
||||||
EclipseGrid grid(100,100,100);
|
EclipseGrid grid(100,100,100);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_THROW( schedule.groupTree("NO_SUCH_GROUP", 0), std::invalid_argument);
|
BOOST_CHECK_THROW( schedule.groupTree("NO_SUCH_GROUP", 0), std::invalid_argument);
|
||||||
auto cg1 = schedule.getGroup("CG1", 0);
|
auto cg1 = schedule.getGroup("CG1", 0);
|
||||||
@ -485,11 +481,10 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithStart) {
|
|||||||
auto deck = createDeck();
|
auto deck = createDeck();
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
|
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
BOOST_CHECK_EQUAL( schedule.getStartTime() , TimeMap::mkdate(1998, 3 , 8 ));
|
BOOST_CHECK_EQUAL( schedule.getStartTime() , TimeMap::mkdate(1998, 3 , 8 ));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -498,22 +493,20 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithSCHEDULENoThrow) {
|
|||||||
Deck deck;
|
Deck deck;
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
deck.addKeyword( DeckKeyword( parser.getKeyword("SCHEDULE" )));
|
deck.addKeyword( DeckKeyword( parser.getKeyword("SCHEDULE" )));
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
|
|
||||||
BOOST_CHECK_NO_THROW( Schedule( deck, grid , fp, eclipseProperties, runspec));
|
BOOST_CHECK_NO_THROW( Schedule( deck, grid , fp, runspec));
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(EmptyScheduleHasNoWells) {
|
BOOST_AUTO_TEST_CASE(EmptyScheduleHasNoWells) {
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = createDeck();
|
auto deck = createDeck();
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);;
|
Runspec runspec (deck);;
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
BOOST_CHECK_EQUAL( 0U , schedule.numWells() );
|
BOOST_CHECK_EQUAL( 0U , schedule.numWells() );
|
||||||
BOOST_CHECK_EQUAL( false , schedule.hasWell("WELL1") );
|
BOOST_CHECK_EQUAL( false , schedule.hasWell("WELL1") );
|
||||||
BOOST_CHECK_THROW( schedule.getWell("WELL2", 0) , std::invalid_argument );
|
BOOST_CHECK_THROW( schedule.getWell("WELL2", 0) , std::invalid_argument );
|
||||||
@ -525,10 +518,9 @@ BOOST_AUTO_TEST_CASE(EmptyScheduleHasFIELDGroup) {
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = createDeck();
|
auto deck = createDeck();
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck , grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck , grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL( 1U , schedule.numGroups() );
|
BOOST_CHECK_EQUAL( 1U , schedule.numGroups() );
|
||||||
BOOST_CHECK_EQUAL( true , schedule.hasGroup("FIELD") );
|
BOOST_CHECK_EQUAL( true , schedule.hasGroup("FIELD") );
|
||||||
@ -621,10 +613,9 @@ BOOST_AUTO_TEST_CASE(WellsIterator_Empty_EmptyVectorReturned) {
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = createDeck();
|
auto deck = createDeck();
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck , grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck , grid , fp, runspec);
|
||||||
|
|
||||||
const auto wells_alltimesteps = schedule.getWellsatEnd();
|
const auto wells_alltimesteps = schedule.getWellsatEnd();
|
||||||
BOOST_CHECK_EQUAL(0U, wells_alltimesteps.size());
|
BOOST_CHECK_EQUAL(0U, wells_alltimesteps.size());
|
||||||
@ -640,10 +631,9 @@ BOOST_AUTO_TEST_CASE(WellsIterator_HasWells_WellsReturned) {
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = createDeckWithWells();
|
auto deck = createDeckWithWells();
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck , grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck , grid , fp, runspec);
|
||||||
size_t timeStep = 0;
|
size_t timeStep = 0;
|
||||||
|
|
||||||
const auto wells_alltimesteps = schedule.getWellsatEnd();
|
const auto wells_alltimesteps = schedule.getWellsatEnd();
|
||||||
@ -660,10 +650,9 @@ BOOST_AUTO_TEST_CASE(ReturnNumWellsTimestep) {
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = createDeckWithWells();
|
auto deck = createDeckWithWells();
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(schedule.numWells(0), 1);
|
BOOST_CHECK_EQUAL(schedule.numWells(0), 1);
|
||||||
BOOST_CHECK_EQUAL(schedule.numWells(1), 1);
|
BOOST_CHECK_EQUAL(schedule.numWells(1), 1);
|
||||||
@ -675,10 +664,9 @@ BOOST_AUTO_TEST_CASE(TestCrossFlowHandling) {
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = createDeckForTestingCrossFlow();
|
auto deck = createDeckForTestingCrossFlow();
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(schedule.getWell("BAN", 0).getAllowCrossFlow(), false);
|
BOOST_CHECK_EQUAL(schedule.getWell("BAN", 0).getAllowCrossFlow(), false);
|
||||||
BOOST_CHECK_EQUAL(schedule.getWell("ALLOW", 0).getAllowCrossFlow(), true);
|
BOOST_CHECK_EQUAL(schedule.getWell("ALLOW", 0).getAllowCrossFlow(), true);
|
||||||
@ -749,10 +737,9 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWellsAndConnectionDataWithWELOPEN) {
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = createDeckWithWellsAndConnectionDataWithWELOPEN();
|
auto deck = createDeckWithWellsAndConnectionDataWithWELOPEN();
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck ,grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck ,grid , fp, runspec);
|
||||||
{
|
{
|
||||||
constexpr auto well_shut = Well::Status::SHUT;
|
constexpr auto well_shut = Well::Status::SHUT;
|
||||||
constexpr auto well_open = Well::Status::OPEN;
|
constexpr auto well_open = Well::Status::OPEN;
|
||||||
@ -834,10 +821,9 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithWELOPEN_TryToOpenWellWithShutCompleti
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck , grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck , grid , fp, runspec);
|
||||||
const auto& well2_3 = schedule.getWell("OP_1",3);
|
const auto& well2_3 = schedule.getWell("OP_1",3);
|
||||||
const auto& well2_4 = schedule.getWell("OP_1",4);
|
const auto& well2_4 = schedule.getWell("OP_1",4);
|
||||||
BOOST_CHECK(Well::Status::SHUT == well2_3.getStatus());
|
BOOST_CHECK(Well::Status::SHUT == well2_3.getStatus());
|
||||||
@ -895,10 +881,9 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithWELOPEN_CombineShutCompletionsAndAddN
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
const auto& well_3 = schedule.getWell("OP_1", 3);
|
const auto& well_3 = schedule.getWell("OP_1", 3);
|
||||||
const auto& well_4 = schedule.getWell("OP_1", 4);
|
const auto& well_4 = schedule.getWell("OP_1", 4);
|
||||||
const auto& well_5 = schedule.getWell("OP_1", 5);
|
const auto& well_5 = schedule.getWell("OP_1", 5);
|
||||||
@ -954,10 +939,9 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithWRFT) {
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
const auto& rft_config = schedule.rftConfig();
|
const auto& rft_config = schedule.rftConfig();
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(2 , rft_config.firstRFTOutput());
|
BOOST_CHECK_EQUAL(2 , rft_config.firstRFTOutput());
|
||||||
@ -1013,10 +997,9 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithWRFTPLT) {
|
|||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
const auto& well = schedule.getWell("OP_1", 4);
|
const auto& well = schedule.getWell("OP_1", 4);
|
||||||
BOOST_CHECK(Well::Status::OPEN == well.getStatus());
|
BOOST_CHECK(Well::Status::OPEN == well.getStatus());
|
||||||
|
|
||||||
@ -1064,10 +1047,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithWeltArg) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
Opm::UnitSystem unitSystem = deck.getActiveUnitSystem();
|
Opm::UnitSystem unitSystem = deck.getActiveUnitSystem();
|
||||||
double siFactorL = unitSystem.parse("LiquidSurfaceVolume/Time").getSIScaling();
|
double siFactorL = unitSystem.parse("LiquidSurfaceVolume/Time").getSIScaling();
|
||||||
double siFactorG = unitSystem.parse("GasSurfaceVolume/Time").getSIScaling();
|
double siFactorG = unitSystem.parse("GasSurfaceVolume/Time").getSIScaling();
|
||||||
@ -1105,11 +1087,10 @@ BOOST_AUTO_TEST_CASE(createDeckWithWeltArgException) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
|
|
||||||
BOOST_CHECK_THROW(Schedule(deck, grid , fp, eclipseProperties, runspec),
|
BOOST_CHECK_THROW(Schedule(deck, grid , fp, runspec),
|
||||||
std::invalid_argument);
|
std::invalid_argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1125,10 +1106,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithWeltArgException2) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
BOOST_CHECK_THROW(Schedule(deck, grid , fp, eclipseProperties, runspec), std::invalid_argument);
|
BOOST_CHECK_THROW(Schedule(deck, grid , fp, runspec), std::invalid_argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(createDeckWithWPIMULT) {
|
BOOST_AUTO_TEST_CASE(createDeckWithWPIMULT) {
|
||||||
@ -1172,10 +1152,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithWPIMULT) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
const auto& cs2 = schedule.getWell("OP_1", 2).getConnections();
|
const auto& cs2 = schedule.getWell("OP_1", 2).getConnections();
|
||||||
const auto& cs3 = schedule.getWell("OP_1", 3).getConnections();
|
const auto& cs3 = schedule.getWell("OP_1", 3).getConnections();
|
||||||
@ -1244,17 +1223,16 @@ BOOST_AUTO_TEST_CASE(WELSPECS_WGNAME_SPACE) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid( deck );
|
EclipseGrid grid( deck );
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
ParseContext parseContext;
|
ParseContext parseContext;
|
||||||
ErrorGuard errors;
|
ErrorGuard errors;
|
||||||
|
|
||||||
parseContext.update(ParseContext::PARSE_WGNAME_SPACE, InputError::THROW_EXCEPTION);
|
parseContext.update(ParseContext::PARSE_WGNAME_SPACE, InputError::THROW_EXCEPTION);
|
||||||
BOOST_CHECK_THROW( Opm::Schedule(deck, grid, fp, eclipseProperties, runspec, parseContext, errors), std::invalid_argument);
|
BOOST_CHECK_THROW( Opm::Schedule(deck, grid, fp, runspec, parseContext, errors), std::invalid_argument);
|
||||||
|
|
||||||
parseContext.update(ParseContext::PARSE_WGNAME_SPACE, InputError::IGNORE);
|
parseContext.update(ParseContext::PARSE_WGNAME_SPACE, InputError::IGNORE);
|
||||||
BOOST_CHECK_NO_THROW( Opm::Schedule(deck, grid, fp, eclipseProperties, runspec, parseContext, errors));
|
BOOST_CHECK_NO_THROW( Opm::Schedule(deck, grid, fp, runspec, parseContext, errors));
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(createDeckModifyMultipleGCONPROD) {
|
BOOST_AUTO_TEST_CASE(createDeckModifyMultipleGCONPROD) {
|
||||||
@ -1297,10 +1275,9 @@ BOOST_AUTO_TEST_CASE(createDeckModifyMultipleGCONPROD) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid( deck );
|
EclipseGrid grid( deck );
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Opm::Schedule schedule(deck, grid, fp, eclipseProperties, runspec);
|
Opm::Schedule schedule(deck, grid, fp, runspec);
|
||||||
Opm::SummaryState st(std::chrono::system_clock::now());
|
Opm::SummaryState st(std::chrono::system_clock::now());
|
||||||
|
|
||||||
Opm::UnitSystem unitSystem = deck.getActiveUnitSystem();
|
Opm::UnitSystem unitSystem = deck.getActiveUnitSystem();
|
||||||
@ -1347,10 +1324,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithDRSDT) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
size_t currentStep = 1;
|
size_t currentStep = 1;
|
||||||
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), true);
|
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), true);
|
||||||
const auto& ovap = schedule.getOilVaporizationProperties(currentStep);
|
const auto& ovap = schedule.getOilVaporizationProperties(currentStep);
|
||||||
@ -1382,10 +1358,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithDRSDTR) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
size_t currentStep = 1;
|
size_t currentStep = 1;
|
||||||
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), true);
|
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), true);
|
||||||
const auto& ovap = schedule.getOilVaporizationProperties(currentStep);
|
const auto& ovap = schedule.getOilVaporizationProperties(currentStep);
|
||||||
@ -1430,10 +1405,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithDRSDTthenDRVDT) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), true);
|
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), true);
|
||||||
|
|
||||||
const OilVaporizationProperties& ovap1 = schedule.getOilVaporizationProperties(1);
|
const OilVaporizationProperties& ovap1 = schedule.getOilVaporizationProperties(1);
|
||||||
@ -1472,10 +1446,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithVAPPARS) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
size_t currentStep = 1;
|
size_t currentStep = 1;
|
||||||
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), true);
|
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), true);
|
||||||
const OilVaporizationProperties& ovap = schedule.getOilVaporizationProperties(currentStep);
|
const OilVaporizationProperties& ovap = schedule.getOilVaporizationProperties(currentStep);
|
||||||
@ -1504,10 +1477,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithOutOilVaporizationProperties) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), false);
|
BOOST_CHECK_EQUAL(schedule.hasOilVaporizationProperties(), false);
|
||||||
|
|
||||||
@ -1566,12 +1538,11 @@ BOOST_AUTO_TEST_CASE(changeBhpLimitInHistoryModeWithWeltarg) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
|
||||||
SummaryState st(std::chrono::system_clock::now());
|
SummaryState st(std::chrono::system_clock::now());
|
||||||
const auto& unit_system = deck.getActiveUnitSystem();
|
const auto& unit_system = deck.getActiveUnitSystem();
|
||||||
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
// The BHP limit should not be effected by WCONHIST
|
// The BHP limit should not be effected by WCONHIST
|
||||||
{
|
{
|
||||||
@ -1664,10 +1635,9 @@ BOOST_AUTO_TEST_CASE(changeModeWithWHISTCTL) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
//Start
|
//Start
|
||||||
BOOST_CHECK_THROW(schedule.getWell("P1", 0), std::invalid_argument);
|
BOOST_CHECK_THROW(schedule.getWell("P1", 0), std::invalid_argument);
|
||||||
@ -1771,10 +1741,9 @@ BOOST_AUTO_TEST_CASE(fromWCONHISTtoWCONPROD) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
//Start
|
//Start
|
||||||
BOOST_CHECK_THROW(schedule.getWell("P1", 0), std::invalid_argument);
|
BOOST_CHECK_THROW(schedule.getWell("P1", 0), std::invalid_argument);
|
||||||
@ -1860,10 +1829,9 @@ BOOST_AUTO_TEST_CASE(WHISTCTL_NEW_WELL) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
//10 OKT 2008
|
//10 OKT 2008
|
||||||
BOOST_CHECK(schedule.getWell("P1", 1).getProductionProperties().controlMode == Opm::Well::ProducerCMode::GRAT);
|
BOOST_CHECK(schedule.getWell("P1", 1).getProductionProperties().controlMode == Opm::Well::ProducerCMode::GRAT);
|
||||||
@ -1937,10 +1905,9 @@ BOOST_AUTO_TEST_CASE(unsupportedOptionWHISTCTL) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
BOOST_CHECK_THROW(Schedule(deck, grid, fp, eclipseProperties, runspec), std::invalid_argument);
|
BOOST_CHECK_THROW(Schedule(deck, grid, fp, runspec), std::invalid_argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(move_HEAD_I_location) {
|
BOOST_AUTO_TEST_CASE(move_HEAD_I_location) {
|
||||||
@ -1967,10 +1934,9 @@ BOOST_AUTO_TEST_CASE(move_HEAD_I_location) {
|
|||||||
auto deck = Parser().parseString(input);
|
auto deck = Parser().parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
BOOST_CHECK_EQUAL(2, schedule.getWell("W1", 1).getHeadI());
|
BOOST_CHECK_EQUAL(2, schedule.getWell("W1", 1).getHeadI());
|
||||||
BOOST_CHECK_EQUAL(3, schedule.getWell("W1", 2).getHeadI());
|
BOOST_CHECK_EQUAL(3, schedule.getWell("W1", 2).getHeadI());
|
||||||
}
|
}
|
||||||
@ -1999,10 +1965,9 @@ BOOST_AUTO_TEST_CASE(change_ref_depth) {
|
|||||||
auto deck = Parser().parseString(input);
|
auto deck = Parser().parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
BOOST_CHECK_CLOSE(2873.94, schedule.getWell("W1", 1).getRefDepth(), 1e-5);
|
BOOST_CHECK_CLOSE(2873.94, schedule.getWell("W1", 1).getRefDepth(), 1e-5);
|
||||||
BOOST_CHECK_EQUAL(12.0, schedule.getWell("W1", 2).getRefDepth());
|
BOOST_CHECK_EQUAL(12.0, schedule.getWell("W1", 2).getRefDepth());
|
||||||
}
|
}
|
||||||
@ -2039,10 +2004,9 @@ BOOST_AUTO_TEST_CASE(WTEMP_well_template) {
|
|||||||
auto deck = Parser().parseString(input);
|
auto deck = Parser().parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_CLOSE(288.71, schedule.getWell("W1", 1).getInjectionProperties().temperature, 1e-5);
|
BOOST_CHECK_CLOSE(288.71, schedule.getWell("W1", 1).getInjectionProperties().temperature, 1e-5);
|
||||||
BOOST_CHECK_CLOSE(288.71, schedule.getWell("W1", 2).getInjectionProperties().temperature, 1e-5);
|
BOOST_CHECK_CLOSE(288.71, schedule.getWell("W1", 2).getInjectionProperties().temperature, 1e-5);
|
||||||
@ -2086,10 +2050,9 @@ BOOST_AUTO_TEST_CASE(WTEMPINJ_well_template) {
|
|||||||
auto deck = Parser().parseString(input);
|
auto deck = Parser().parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
|
|
||||||
// Producerwell - currently setting temperature only acts on injectors.
|
// Producerwell - currently setting temperature only acts on injectors.
|
||||||
BOOST_CHECK_CLOSE(288.71, schedule.getWell("W1", 1).getInjectionProperties().temperature, 1e-5);
|
BOOST_CHECK_CLOSE(288.71, schedule.getWell("W1", 1).getInjectionProperties().temperature, 1e-5);
|
||||||
@ -2139,10 +2102,9 @@ BOOST_AUTO_TEST_CASE( COMPDAT_sets_automatic_complnum ) {
|
|||||||
auto deck = Parser().parseString(input);
|
auto deck = Parser().parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
const auto& cs1 = schedule.getWell( "W1", 1 ).getConnections( );
|
const auto& cs1 = schedule.getWell( "W1", 1 ).getConnections( );
|
||||||
BOOST_CHECK_EQUAL( 1, cs1.get( 0 ).complnum() );
|
BOOST_CHECK_EQUAL( 1, cs1.get( 0 ).complnum() );
|
||||||
BOOST_CHECK_EQUAL( 2, cs1.get( 1 ).complnum() );
|
BOOST_CHECK_EQUAL( 2, cs1.get( 1 ).complnum() );
|
||||||
@ -2190,10 +2152,9 @@ BOOST_AUTO_TEST_CASE( COMPDAT_multiple_wells ) {
|
|||||||
auto deck = Parser().parseString( input);
|
auto deck = Parser().parseString( input);
|
||||||
EclipseGrid grid( 10, 10, 10 );
|
EclipseGrid grid( 10, 10, 10 );
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
|
|
||||||
{
|
{
|
||||||
const auto& w1cs = schedule.getWell( "W1", 1 ).getConnections();
|
const auto& w1cs = schedule.getWell( "W1", 1 ).getConnections();
|
||||||
@ -2260,10 +2221,9 @@ BOOST_AUTO_TEST_CASE( COMPDAT_multiple_records_same_completion ) {
|
|||||||
auto deck = Parser().parseString(input);
|
auto deck = Parser().parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
const auto& cs = schedule.getWell( "W1", 1 ).getConnections();
|
const auto& cs = schedule.getWell( "W1", 1 ).getConnections();
|
||||||
BOOST_CHECK_EQUAL( 3U, cs.size() );
|
BOOST_CHECK_EQUAL( 3U, cs.size() );
|
||||||
BOOST_CHECK_EQUAL( 1, cs.get( 0 ).complnum() );
|
BOOST_CHECK_EQUAL( 1, cs.get( 0 ).complnum() );
|
||||||
@ -2301,10 +2261,9 @@ BOOST_AUTO_TEST_CASE( complump_less_than_1 ) {
|
|||||||
auto deck = Parser().parseString( input);
|
auto deck = Parser().parseString( input);
|
||||||
EclipseGrid grid( 10, 10, 10);
|
EclipseGrid grid( 10, 10, 10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
BOOST_CHECK_THROW( Schedule( deck , grid, fp, eclipseProperties, runspec), std::invalid_argument );
|
BOOST_CHECK_THROW( Schedule( deck , grid, fp, runspec), std::invalid_argument );
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE( complump ) {
|
BOOST_AUTO_TEST_CASE( complump ) {
|
||||||
@ -2354,10 +2313,9 @@ BOOST_AUTO_TEST_CASE( complump ) {
|
|||||||
auto deck = Parser().parseString(input);
|
auto deck = Parser().parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
|
|
||||||
const auto& sc0 = schedule.getWell("W1", 0).getConnections();
|
const auto& sc0 = schedule.getWell("W1", 0).getConnections();
|
||||||
/* complnum should be modified by COMPLNUM */
|
/* complnum should be modified by COMPLNUM */
|
||||||
@ -2445,10 +2403,9 @@ BOOST_AUTO_TEST_CASE( COMPLUMP_specific_coordinates ) {
|
|||||||
auto deck = Parser().parseString( input);
|
auto deck = Parser().parseString( input);
|
||||||
EclipseGrid grid( 10, 10, 10 );
|
EclipseGrid grid( 10, 10, 10 );
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
|
|
||||||
const auto& cs1 = schedule.getWell("W1", 1).getConnections();
|
const auto& cs1 = schedule.getWell("W1", 1).getConnections();
|
||||||
const auto& cs2 = schedule.getWell("W1", 2).getConnections();
|
const auto& cs2 = schedule.getWell("W1", 2).getConnections();
|
||||||
@ -2916,10 +2873,9 @@ BOOST_AUTO_TEST_CASE(handleWEFAC) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
//1
|
//1
|
||||||
BOOST_CHECK_EQUAL(schedule.getWell("P", 1).getEfficiencyFactor(), 0.5);
|
BOOST_CHECK_EQUAL(schedule.getWell("P", 1).getEfficiencyFactor(), 0.5);
|
||||||
@ -2962,10 +2918,9 @@ BOOST_AUTO_TEST_CASE(historic_BHP_and_THP) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
|
|
||||||
{
|
{
|
||||||
const auto& prod = schedule.getWell("P", 1).getProductionProperties();
|
const auto& prod = schedule.getWell("P", 1).getProductionProperties();
|
||||||
@ -2996,10 +2951,9 @@ BOOST_AUTO_TEST_CASE(FilterCompletions2) {
|
|||||||
std::vector<int> actnum(1000,1);
|
std::vector<int> actnum(1000,1);
|
||||||
auto deck = createDeckWithWellsAndCompletionData();
|
auto deck = createDeckWithWellsAndCompletionData();
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid1 , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid1 , fp, runspec);
|
||||||
{
|
{
|
||||||
const auto& c1_1 = schedule.getWell("OP_1", 1).getConnections();
|
const auto& c1_1 = schedule.getWell("OP_1", 1).getConnections();
|
||||||
const auto& c1_3 = schedule.getWell("OP_1", 3).getConnections();
|
const auto& c1_3 = schedule.getWell("OP_1", 3).getConnections();
|
||||||
@ -3090,10 +3044,9 @@ VFPINJ \n \
|
|||||||
auto deck = parser.parseString(deckData);
|
auto deck = parser.parseString(deckData);
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid1 , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid1 , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK( schedule.getEvents().hasEvent(ScheduleEvents::VFPINJ_UPDATE, 0));
|
BOOST_CHECK( schedule.getEvents().hasEvent(ScheduleEvents::VFPINJ_UPDATE, 0));
|
||||||
BOOST_CHECK( !schedule.getEvents().hasEvent(ScheduleEvents::VFPINJ_UPDATE, 1));
|
BOOST_CHECK( !schedule.getEvents().hasEvent(ScheduleEvents::VFPINJ_UPDATE, 1));
|
||||||
@ -3218,10 +3171,9 @@ BOOST_AUTO_TEST_CASE(POLYINJ_TEST) {
|
|||||||
auto deck = parser.parseString(deckData);
|
auto deck = parser.parseString(deckData);
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid1 , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid1 , fp, runspec);
|
||||||
|
|
||||||
const auto& poly0 = schedule.getWell("INJE01", 0).getPolymerProperties();
|
const auto& poly0 = schedule.getWell("INJE01", 0).getPolymerProperties();
|
||||||
const auto& poly1 = schedule.getWell("INJE01", 1).getPolymerProperties();
|
const auto& poly1 = schedule.getWell("INJE01", 1).getPolymerProperties();
|
||||||
@ -3279,10 +3231,9 @@ BOOST_AUTO_TEST_CASE(WFOAM_TEST) {
|
|||||||
auto deck = parser.parseString(deckData);
|
auto deck = parser.parseString(deckData);
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid1 , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid1 , fp, runspec);
|
||||||
|
|
||||||
const auto& f0 = schedule.getWell("INJE01", 0).getFoamProperties();
|
const auto& f0 = schedule.getWell("INJE01", 0).getFoamProperties();
|
||||||
const auto& f1 = schedule.getWell("INJE01", 1).getFoamProperties();
|
const auto& f1 = schedule.getWell("INJE01", 1).getFoamProperties();
|
||||||
@ -3298,10 +3249,9 @@ BOOST_AUTO_TEST_CASE(WTEST_CONFIG) {
|
|||||||
auto deck = createDeckWTEST();
|
auto deck = createDeckWTEST();
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid1 , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid1 , fp, runspec);
|
||||||
|
|
||||||
const auto& wtest_config1 = schedule.wtestConfig(0);
|
const auto& wtest_config1 = schedule.wtestConfig(0);
|
||||||
BOOST_CHECK_EQUAL(wtest_config1.size(), 2);
|
BOOST_CHECK_EQUAL(wtest_config1.size(), 2);
|
||||||
@ -3328,10 +3278,9 @@ BOOST_AUTO_TEST_CASE(WELL_STATIC) {
|
|||||||
auto deck = createDeckWithWells();
|
auto deck = createDeckWithWells();
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid1 , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid1 , fp, runspec);
|
||||||
BOOST_CHECK_THROW( schedule.getWell("NO_SUCH_WELL", 0), std::invalid_argument);
|
BOOST_CHECK_THROW( schedule.getWell("NO_SUCH_WELL", 0), std::invalid_argument);
|
||||||
BOOST_CHECK_THROW( schedule.getWell("W_3", 0), std::invalid_argument);
|
BOOST_CHECK_THROW( schedule.getWell("W_3", 0), std::invalid_argument);
|
||||||
|
|
||||||
@ -3377,10 +3326,9 @@ BOOST_AUTO_TEST_CASE(WellNames) {
|
|||||||
auto deck = createDeckWTEST();
|
auto deck = createDeckWTEST();
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid1 , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid1 , fp, runspec);
|
||||||
|
|
||||||
auto names = schedule.wellNames("NO_SUCH_WELL", 0);
|
auto names = schedule.wellNames("NO_SUCH_WELL", 0);
|
||||||
BOOST_CHECK_EQUAL(names.size(), 0);
|
BOOST_CHECK_EQUAL(names.size(), 0);
|
||||||
@ -3492,10 +3440,9 @@ BOOST_AUTO_TEST_CASE(RFT_CONFIG2) {
|
|||||||
auto deck = createDeckRFTConfig();
|
auto deck = createDeckRFTConfig();
|
||||||
EclipseGrid grid1(10,10,10);
|
EclipseGrid grid1(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid1);
|
|
||||||
FieldPropsManager fp( deck , grid1, table);
|
FieldPropsManager fp( deck , grid1, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid1 , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid1 , fp, runspec);
|
||||||
const auto& rft_config = schedule.rftConfig();
|
const auto& rft_config = schedule.rftConfig();
|
||||||
BOOST_CHECK_EQUAL(1, rft_config.firstRFTOutput());
|
BOOST_CHECK_EQUAL(1, rft_config.firstRFTOutput());
|
||||||
}
|
}
|
||||||
@ -3526,10 +3473,9 @@ BOOST_AUTO_TEST_CASE(nupcol) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
|
|
||||||
{
|
{
|
||||||
// Flow uses 12 as default
|
// Flow uses 12 as default
|
||||||
@ -3619,10 +3565,9 @@ DATES -- 4
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid, fp, eclipseProperties,runspec);
|
Schedule schedule( deck, grid, fp, runspec);
|
||||||
|
|
||||||
{
|
{
|
||||||
const auto& grc = schedule.guideRateConfig(0);
|
const auto& grc = schedule.guideRateConfig(0);
|
||||||
|
@ -139,9 +139,8 @@ BOOST_AUTO_TEST_CASE(SimulationConfigGetThresholdPressureTableTest) {
|
|||||||
auto deck = createDeck(inputStr);
|
auto deck = createDeck(inputStr);
|
||||||
TableManager tm(deck);
|
TableManager tm(deck);
|
||||||
EclipseGrid eg(10, 3, 4);
|
EclipseGrid eg(10, 3, 4);
|
||||||
Eclipse3DProperties ep(deck, tm, eg);
|
|
||||||
FieldPropsManager fp(deck, eg, tm);
|
FieldPropsManager fp(deck, eg, tm);
|
||||||
BOOST_CHECK_NO_THROW( SimulationConfig(false, deck, fp, ep ) );
|
BOOST_CHECK_NO_THROW( SimulationConfig(false, deck, fp) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -149,9 +148,8 @@ BOOST_AUTO_TEST_CASE(SimulationConfigNOTHPRES) {
|
|||||||
auto deck = createDeck(inputStr_noTHPRES);
|
auto deck = createDeck(inputStr_noTHPRES);
|
||||||
TableManager tm(deck);
|
TableManager tm(deck);
|
||||||
EclipseGrid eg(10, 3, 4);
|
EclipseGrid eg(10, 3, 4);
|
||||||
Eclipse3DProperties ep(deck, tm, eg);
|
|
||||||
FieldPropsManager fp(deck, eg, tm);
|
FieldPropsManager fp(deck, eg, tm);
|
||||||
SimulationConfig simulationConfig(false, deck, fp, ep);
|
SimulationConfig simulationConfig(false, deck, fp);
|
||||||
BOOST_CHECK( !simulationConfig.useThresholdPressure() );
|
BOOST_CHECK( !simulationConfig.useThresholdPressure() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,9 +157,8 @@ BOOST_AUTO_TEST_CASE(SimulationConfigCPRNotUsed) {
|
|||||||
auto deck = createDeck(inputStr_noTHPRES);
|
auto deck = createDeck(inputStr_noTHPRES);
|
||||||
TableManager tm(deck);
|
TableManager tm(deck);
|
||||||
EclipseGrid eg(10, 3, 4);
|
EclipseGrid eg(10, 3, 4);
|
||||||
Eclipse3DProperties ep(deck, tm, eg);
|
|
||||||
FieldPropsManager fp(deck, eg, tm);
|
FieldPropsManager fp(deck, eg, tm);
|
||||||
SimulationConfig simulationConfig(false, deck, fp, ep);
|
SimulationConfig simulationConfig(false, deck, fp);
|
||||||
BOOST_CHECK( ! simulationConfig.useCPR());
|
BOOST_CHECK( ! simulationConfig.useCPR());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,10 +166,9 @@ BOOST_AUTO_TEST_CASE(SimulationConfigCPRUsed) {
|
|||||||
auto deck = createDeck(inputStr_cpr);
|
auto deck = createDeck(inputStr_cpr);
|
||||||
TableManager tm(deck);
|
TableManager tm(deck);
|
||||||
EclipseGrid eg(10, 3, 4);
|
EclipseGrid eg(10, 3, 4);
|
||||||
Eclipse3DProperties ep(deck, tm, eg);
|
|
||||||
SUMMARYSection summary(deck);
|
SUMMARYSection summary(deck);
|
||||||
FieldPropsManager fp(deck, eg, tm);
|
FieldPropsManager fp(deck, eg, tm);
|
||||||
SimulationConfig simulationConfig(false, deck, fp, ep);
|
SimulationConfig simulationConfig(false, deck, fp);
|
||||||
BOOST_CHECK( simulationConfig.useCPR() );
|
BOOST_CHECK( simulationConfig.useCPR() );
|
||||||
BOOST_CHECK( ! summary.hasKeyword("CPR") );
|
BOOST_CHECK( ! summary.hasKeyword("CPR") );
|
||||||
}
|
}
|
||||||
@ -182,10 +178,9 @@ BOOST_AUTO_TEST_CASE(SimulationConfigCPRInSUMMARYSection) {
|
|||||||
auto deck = createDeck(inputStr_cpr_in_SUMMARY);
|
auto deck = createDeck(inputStr_cpr_in_SUMMARY);
|
||||||
TableManager tm(deck);
|
TableManager tm(deck);
|
||||||
EclipseGrid eg(10, 3, 4);
|
EclipseGrid eg(10, 3, 4);
|
||||||
Eclipse3DProperties ep(deck, tm, eg);
|
|
||||||
SUMMARYSection summary(deck);
|
SUMMARYSection summary(deck);
|
||||||
FieldPropsManager fp(deck, eg, tm);
|
FieldPropsManager fp(deck, eg, tm);
|
||||||
SimulationConfig simulationConfig(false, deck, fp, ep);
|
SimulationConfig simulationConfig(false, deck, fp);
|
||||||
BOOST_CHECK( ! simulationConfig.useCPR());
|
BOOST_CHECK( ! simulationConfig.useCPR());
|
||||||
BOOST_CHECK( summary.hasKeyword("CPR"));
|
BOOST_CHECK( summary.hasKeyword("CPR"));
|
||||||
}
|
}
|
||||||
@ -195,10 +190,9 @@ BOOST_AUTO_TEST_CASE(SimulationConfigCPRBoth) {
|
|||||||
auto deck = createDeck(inputStr_cpr_BOTH);
|
auto deck = createDeck(inputStr_cpr_BOTH);
|
||||||
TableManager tm(deck);
|
TableManager tm(deck);
|
||||||
EclipseGrid eg(10, 3, 4);
|
EclipseGrid eg(10, 3, 4);
|
||||||
Eclipse3DProperties ep(deck, tm, eg);
|
|
||||||
SUMMARYSection summary(deck);
|
SUMMARYSection summary(deck);
|
||||||
FieldPropsManager fp(deck, eg, tm);
|
FieldPropsManager fp(deck, eg, tm);
|
||||||
SimulationConfig simulationConfig(false, deck, fp, ep);
|
SimulationConfig simulationConfig(false, deck, fp);
|
||||||
BOOST_CHECK( simulationConfig.useCPR());
|
BOOST_CHECK( simulationConfig.useCPR());
|
||||||
BOOST_CHECK( summary.hasKeyword("CPR"));
|
BOOST_CHECK( summary.hasKeyword("CPR"));
|
||||||
|
|
||||||
@ -221,18 +215,16 @@ BOOST_AUTO_TEST_CASE(SimulationConfig_VAPOIL_DISGAS) {
|
|||||||
auto deck = createDeck(inputStr);
|
auto deck = createDeck(inputStr);
|
||||||
TableManager tm(deck);
|
TableManager tm(deck);
|
||||||
EclipseGrid eg(10, 3, 4);
|
EclipseGrid eg(10, 3, 4);
|
||||||
Eclipse3DProperties ep(deck, tm, eg);
|
|
||||||
FieldPropsManager fp(deck, eg, tm);
|
FieldPropsManager fp(deck, eg, tm);
|
||||||
SimulationConfig simulationConfig(false, deck, fp, ep);
|
SimulationConfig simulationConfig(false, deck, fp);
|
||||||
BOOST_CHECK_EQUAL( false , simulationConfig.hasDISGAS());
|
BOOST_CHECK_EQUAL( false , simulationConfig.hasDISGAS());
|
||||||
BOOST_CHECK_EQUAL( false , simulationConfig.hasVAPOIL());
|
BOOST_CHECK_EQUAL( false , simulationConfig.hasVAPOIL());
|
||||||
|
|
||||||
auto deck_vd = createDeck(inputStr_vap_dis);
|
auto deck_vd = createDeck(inputStr_vap_dis);
|
||||||
TableManager tm_vd(deck_vd);
|
TableManager tm_vd(deck_vd);
|
||||||
EclipseGrid eg_vd(10, 3, 4);
|
EclipseGrid eg_vd(10, 3, 4);
|
||||||
Eclipse3DProperties ep_vd(deck_vd, tm, eg);
|
|
||||||
FieldPropsManager fp_vd(deck_vd, eg, tm);
|
FieldPropsManager fp_vd(deck_vd, eg, tm);
|
||||||
SimulationConfig simulationConfig_vd(false, deck_vd, fp_vd, ep_vd);
|
SimulationConfig simulationConfig_vd(false, deck_vd, fp_vd);
|
||||||
BOOST_CHECK_EQUAL( true , simulationConfig_vd.hasDISGAS());
|
BOOST_CHECK_EQUAL( true , simulationConfig_vd.hasDISGAS());
|
||||||
BOOST_CHECK_EQUAL( true , simulationConfig_vd.hasVAPOIL());
|
BOOST_CHECK_EQUAL( true , simulationConfig_vd.hasVAPOIL());
|
||||||
}
|
}
|
||||||
@ -244,9 +236,8 @@ BOOST_AUTO_TEST_CASE(SimulationConfig_TEMP_THERMAL)
|
|||||||
const auto deck = createDeck(inputStr);
|
const auto deck = createDeck(inputStr);
|
||||||
const auto tm = TableManager(deck);
|
const auto tm = TableManager(deck);
|
||||||
const auto eg = EclipseGrid(10, 3, 4);
|
const auto eg = EclipseGrid(10, 3, 4);
|
||||||
const auto ep = Eclipse3DProperties(deck, tm, eg);
|
|
||||||
const auto fp = FieldPropsManager(deck, eg, tm);
|
const auto fp = FieldPropsManager(deck, eg, tm);
|
||||||
const auto simulationConfig = Opm::SimulationConfig(false, deck, fp, ep);
|
const auto simulationConfig = Opm::SimulationConfig(false, deck, fp);
|
||||||
|
|
||||||
BOOST_CHECK(! simulationConfig.isThermal());
|
BOOST_CHECK(! simulationConfig.isThermal());
|
||||||
}
|
}
|
||||||
@ -255,9 +246,8 @@ BOOST_AUTO_TEST_CASE(SimulationConfig_TEMP_THERMAL)
|
|||||||
const auto deck = createDeck(simDeckStringTEMP());
|
const auto deck = createDeck(simDeckStringTEMP());
|
||||||
const auto tm = TableManager(deck);
|
const auto tm = TableManager(deck);
|
||||||
const auto eg = EclipseGrid(10, 3, 4);
|
const auto eg = EclipseGrid(10, 3, 4);
|
||||||
const auto ep = Eclipse3DProperties(deck, tm, eg);
|
|
||||||
const auto fp = FieldPropsManager(deck, eg, tm);
|
const auto fp = FieldPropsManager(deck, eg, tm);
|
||||||
const auto simulationConfig = Opm::SimulationConfig(false, deck, fp, ep);
|
const auto simulationConfig = Opm::SimulationConfig(false, deck, fp);
|
||||||
|
|
||||||
BOOST_CHECK(simulationConfig.isThermal());
|
BOOST_CHECK(simulationConfig.isThermal());
|
||||||
}
|
}
|
||||||
@ -266,9 +256,8 @@ BOOST_AUTO_TEST_CASE(SimulationConfig_TEMP_THERMAL)
|
|||||||
const auto deck = createDeck(simDeckStringTHERMAL());
|
const auto deck = createDeck(simDeckStringTHERMAL());
|
||||||
const auto tm = TableManager(deck);
|
const auto tm = TableManager(deck);
|
||||||
const auto eg = EclipseGrid(10, 3, 4);
|
const auto eg = EclipseGrid(10, 3, 4);
|
||||||
const auto ep = Eclipse3DProperties(deck, tm, eg);
|
|
||||||
const auto fp = FieldPropsManager(deck, eg, tm);
|
const auto fp = FieldPropsManager(deck, eg, tm);
|
||||||
const auto simulationConfig = Opm::SimulationConfig(false, deck, fp, ep);
|
const auto simulationConfig = Opm::SimulationConfig(false, deck, fp);
|
||||||
|
|
||||||
BOOST_CHECK(simulationConfig.isThermal());
|
BOOST_CHECK(simulationConfig.isThermal());
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ static SummaryConfig createSummary( std::string input , const ParseContext& pars
|
|||||||
ErrorGuard errors;
|
ErrorGuard errors;
|
||||||
auto deck = createDeck( input );
|
auto deck = createDeck( input );
|
||||||
EclipseState state( deck, parseContext, errors );
|
EclipseState state( deck, parseContext, errors );
|
||||||
Schedule schedule(deck, state.getInputGrid(), state.fieldProps(), state.get3DProperties(), state.runspec(), parseContext, errors);
|
Schedule schedule(deck, state, parseContext, errors);
|
||||||
return SummaryConfig( deck, schedule, state.getTableManager( ), parseContext, errors );
|
return SummaryConfig( deck, schedule, state.getTableManager( ), parseContext, errors );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,7 +210,6 @@ struct Setup
|
|||||||
Deck deck;
|
Deck deck;
|
||||||
TableManager tablemanager;
|
TableManager tablemanager;
|
||||||
EclipseGrid grid;
|
EclipseGrid grid;
|
||||||
Eclipse3DProperties props;
|
|
||||||
FieldPropsManager fp;
|
FieldPropsManager fp;
|
||||||
InitConfig initConfig;
|
InitConfig initConfig;
|
||||||
ThresholdPressure threshPres;
|
ThresholdPressure threshPres;
|
||||||
@ -219,10 +218,9 @@ struct Setup
|
|||||||
deck(createDeck(ParseContext(), input)),
|
deck(createDeck(ParseContext(), input)),
|
||||||
tablemanager(deck),
|
tablemanager(deck),
|
||||||
grid(10, 3, 4),
|
grid(10, 3, 4),
|
||||||
props(deck, tablemanager, grid),
|
|
||||||
fp(deck, grid, tablemanager),
|
fp(deck, grid, tablemanager),
|
||||||
initConfig(deck),
|
initConfig(deck),
|
||||||
threshPres(initConfig.restartRequested(), deck, fp, props)
|
threshPres(initConfig.restartRequested(), deck, fp)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,10 +228,9 @@ struct Setup
|
|||||||
deck(createDeck(parseContextArg, input)),
|
deck(createDeck(parseContextArg, input)),
|
||||||
tablemanager(deck),
|
tablemanager(deck),
|
||||||
grid(10, 3, 4),
|
grid(10, 3, 4),
|
||||||
props(deck, tablemanager, grid),
|
|
||||||
fp(deck, grid, tablemanager),
|
fp(deck, grid, tablemanager),
|
||||||
initConfig(deck),
|
initConfig(deck),
|
||||||
threshPres(initConfig.restartRequested(), deck, fp, props)
|
threshPres(initConfig.restartRequested(), deck, fp)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,7 +239,7 @@ struct Setup
|
|||||||
BOOST_AUTO_TEST_CASE(ThresholdPressureDeckHasEqlnum) {
|
BOOST_AUTO_TEST_CASE(ThresholdPressureDeckHasEqlnum) {
|
||||||
Setup s(inputStrWithEqlNum);
|
Setup s(inputStrWithEqlNum);
|
||||||
|
|
||||||
BOOST_CHECK(s.props.hasDeckIntGridProperty("EQLNUM"));
|
BOOST_CHECK(s.fp.has<int>("EQLNUM"));
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(ThresholdPressureTest) {
|
BOOST_AUTO_TEST_CASE(ThresholdPressureTest) {
|
||||||
|
@ -39,7 +39,7 @@ BOOST_AUTO_TEST_CASE(Empty) {
|
|||||||
Opm::Eclipse3DProperties props;
|
Opm::Eclipse3DProperties props;
|
||||||
Opm::EclipseGrid grid(10,10,10);
|
Opm::EclipseGrid grid(10,10,10);
|
||||||
Opm::FieldPropsManager fp(Opm::Deck(), grid, Opm::TableManager());
|
Opm::FieldPropsManager fp(Opm::Deck(), grid, Opm::TableManager());
|
||||||
Opm::TransMult transMult(grid ,{} , fp, props);
|
Opm::TransMult transMult(grid ,{} , fp);
|
||||||
|
|
||||||
BOOST_CHECK_THROW( transMult.getMultiplier(12,10,10 , Opm::FaceDir::XPlus) , std::invalid_argument );
|
BOOST_CHECK_THROW( transMult.getMultiplier(12,10,10 , Opm::FaceDir::XPlus) , std::invalid_argument );
|
||||||
BOOST_CHECK_THROW( transMult.getMultiplier(1000 , Opm::FaceDir::XPlus) , std::invalid_argument );
|
BOOST_CHECK_THROW( transMult.getMultiplier(1000 , Opm::FaceDir::XPlus) , std::invalid_argument );
|
||||||
@ -72,10 +72,9 @@ MULTZ
|
|||||||
Opm::Deck deck = parser.parseString(deck_string);
|
Opm::Deck deck = parser.parseString(deck_string);
|
||||||
Opm::TableManager tables(deck);
|
Opm::TableManager tables(deck);
|
||||||
Opm::EclipseGrid grid(5,5,5);
|
Opm::EclipseGrid grid(5,5,5);
|
||||||
Opm::Eclipse3DProperties props(deck, tables, grid);
|
|
||||||
Opm::FieldPropsManager fp(deck, grid, tables);
|
Opm::FieldPropsManager fp(deck, grid, tables);
|
||||||
Opm::TransMult transMult(grid, deck, fp, props);
|
Opm::TransMult transMult(grid, deck, fp);
|
||||||
|
|
||||||
transMult.applyMULT(props.getDoubleGridProperty("MULTZ").getData(), Opm::FaceDir::ZPlus);
|
transMult.applyMULT(fp.get_global<double>("MULTZ"), Opm::FaceDir::ZPlus);
|
||||||
BOOST_CHECK_EQUAL( transMult.getMultiplier(0,0,0 , Opm::FaceDir::ZPlus) , 4.0 );
|
BOOST_CHECK_EQUAL( transMult.getMultiplier(0,0,0 , Opm::FaceDir::ZPlus) , 4.0 );
|
||||||
}
|
}
|
||||||
|
@ -71,10 +71,9 @@ BOOST_AUTO_TEST_CASE(TuningTest) {
|
|||||||
auto deck = createDeck(deckStr);
|
auto deck = createDeck(deckStr);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule( deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule( deck, grid , fp, runspec);
|
||||||
auto tuning = schedule.getTuning();
|
auto tuning = schedule.getTuning();
|
||||||
auto event = schedule.getEvents();
|
auto event = schedule.getEvents();
|
||||||
|
|
||||||
@ -331,10 +330,9 @@ BOOST_AUTO_TEST_CASE(TuningInitTest) {
|
|||||||
auto deck = createDeck(deckStr);
|
auto deck = createDeck(deckStr);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck , grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck , grid , fp, runspec);
|
||||||
auto tuning = schedule.getTuning();
|
auto tuning = schedule.getTuning();
|
||||||
|
|
||||||
|
|
||||||
@ -363,10 +361,9 @@ BOOST_AUTO_TEST_CASE(TuningResetTest) {
|
|||||||
auto deck = createDeck(deckStr);
|
auto deck = createDeck(deckStr);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
auto tuning = schedule.getTuning();
|
auto tuning = schedule.getTuning();
|
||||||
|
|
||||||
|
|
||||||
|
@ -144,10 +144,9 @@ Schedule make_schedule(const std::string& input) {
|
|||||||
} else {
|
} else {
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
return Schedule(deck, grid , fp, eclipseProperties, runspec);
|
return Schedule(deck, grid , fp, runspec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,10 +143,9 @@ static Opm::Schedule createSchedule(const std::string& schedule) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
return Schedule(deck, grid , fp, eclipseProperties, runspec );
|
return Schedule(deck, grid , fp, runspec );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -168,7 +167,7 @@ BOOST_AUTO_TEST_CASE(WlistInvalid) {
|
|||||||
std::string wlist_invalid_well = WELSPECS() +
|
std::string wlist_invalid_well = WELSPECS() +
|
||||||
"WLIST\n"
|
"WLIST\n"
|
||||||
" \'*LIST1\' \'NEW\' WELLX /\n"
|
" \'*LIST1\' \'NEW\' WELLX /\n"
|
||||||
"/\n"
|
"/\n"
|
||||||
"DATES\n"
|
"DATES\n"
|
||||||
"10 JLY 2007 /\n"
|
"10 JLY 2007 /\n"
|
||||||
"10 AUG 2007 /\n"
|
"10 AUG 2007 /\n"
|
||||||
|
@ -176,10 +176,9 @@ BOOST_AUTO_TEST_CASE(TestNoSolvent) {
|
|||||||
auto deck = createDeckWithOutSolvent();
|
auto deck = createDeckWithOutSolvent();
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec(deck);
|
Runspec runspec(deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
BOOST_CHECK(!deck.hasKeyword("WSOLVENT"));
|
BOOST_CHECK(!deck.hasKeyword("WSOLVENT"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,10 +186,9 @@ BOOST_AUTO_TEST_CASE(TestGasInjector) {
|
|||||||
auto deck = createDeckWithGasInjector();
|
auto deck = createDeckWithGasInjector();
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec(deck);
|
Runspec runspec(deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
BOOST_CHECK(deck.hasKeyword("WSOLVENT"));
|
BOOST_CHECK(deck.hasKeyword("WSOLVENT"));
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -199,10 +197,9 @@ BOOST_AUTO_TEST_CASE(TestDynamicWSOLVENT) {
|
|||||||
auto deck = createDeckWithDynamicWSOLVENT();
|
auto deck = createDeckWithDynamicWSOLVENT();
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec(deck);
|
Runspec runspec(deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
BOOST_CHECK(deck.hasKeyword("WSOLVENT"));
|
BOOST_CHECK(deck.hasKeyword("WSOLVENT"));
|
||||||
const auto& keyword = deck.getKeyword("WSOLVENT");
|
const auto& keyword = deck.getKeyword("WSOLVENT");
|
||||||
BOOST_CHECK_EQUAL(keyword.size(),1);
|
BOOST_CHECK_EQUAL(keyword.size(),1);
|
||||||
@ -219,18 +216,16 @@ BOOST_AUTO_TEST_CASE(TestOilInjector) {
|
|||||||
auto deck = createDeckWithOilInjector();
|
auto deck = createDeckWithOilInjector();
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec(deck);
|
Runspec runspec(deck);
|
||||||
BOOST_CHECK_THROW (Schedule(deck , grid , fp, eclipseProperties, runspec), std::invalid_argument);
|
BOOST_CHECK_THROW (Schedule(deck , grid , fp, runspec), std::invalid_argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(TestWaterInjector) {
|
BOOST_AUTO_TEST_CASE(TestWaterInjector) {
|
||||||
auto deck = createDeckWithWaterInjector();
|
auto deck = createDeckWithWaterInjector();
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec(deck);
|
Runspec runspec(deck);
|
||||||
BOOST_CHECK_THROW (Schedule(deck, grid , fp, eclipseProperties, runspec), std::invalid_argument);
|
BOOST_CHECK_THROW (Schedule(deck, grid , fp, runspec), std::invalid_argument);
|
||||||
}
|
}
|
||||||
|
@ -86,10 +86,9 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestTRACK) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
Opm::EclipseGrid grid(10,10,10);
|
Opm::EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Opm::Runspec runspec (deck);
|
Opm::Runspec runspec (deck);
|
||||||
Opm::Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Opm::Schedule schedule(deck, grid , fp, runspec);
|
||||||
const auto& op_1 = schedule.getWell("OP_1", 2);
|
const auto& op_1 = schedule.getWell("OP_1", 2);
|
||||||
|
|
||||||
const auto& completions = op_1.getConnections();
|
const auto& completions = op_1.getConnections();
|
||||||
@ -127,10 +126,9 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestDefaultTRACK) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
Opm::EclipseGrid grid(10,10,10);
|
Opm::EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Opm::Runspec runspec (deck);
|
Opm::Runspec runspec (deck);
|
||||||
Opm::Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Opm::Schedule schedule(deck, grid , fp, runspec);
|
||||||
const auto& op_1 = schedule.getWell("OP_1", 2);
|
const auto& op_1 = schedule.getWell("OP_1", 2);
|
||||||
|
|
||||||
const auto& completions = op_1.getConnections();
|
const auto& completions = op_1.getConnections();
|
||||||
@ -171,10 +169,9 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestINPUT) {
|
|||||||
Opm::EclipseGrid grid(10,10,10);
|
Opm::EclipseGrid grid(10,10,10);
|
||||||
Opm::ErrorGuard errors;
|
Opm::ErrorGuard errors;
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Opm::Runspec runspec (deck);
|
Opm::Runspec runspec (deck);
|
||||||
Opm::Schedule schedule(deck, grid , fp, eclipseProperties, runspec, Opm::ParseContext(), errors);
|
Opm::Schedule schedule(deck, grid , fp, runspec, Opm::ParseContext(), errors);
|
||||||
const auto& op_1 = schedule.getWell("OP_1", 2);
|
const auto& op_1 = schedule.getWell("OP_1", 2);
|
||||||
|
|
||||||
const auto& completions = op_1.getConnections();
|
const auto& completions = op_1.getConnections();
|
||||||
@ -847,10 +844,9 @@ BOOST_AUTO_TEST_CASE(WELOPEN) {
|
|||||||
auto deck = parser.parseString(input);
|
auto deck = parser.parseString(input);
|
||||||
Opm::EclipseGrid grid(10,10,10);
|
Opm::EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Opm::Runspec runspec (deck);
|
Opm::Runspec runspec (deck);
|
||||||
Opm::Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Opm::Schedule schedule(deck, grid , fp, runspec);
|
||||||
{
|
{
|
||||||
const auto& op_1 = schedule.getWell("OP_1", 1);
|
const auto& op_1 = schedule.getWell("OP_1", 1);
|
||||||
BOOST_CHECK(op_1.getStatus() == Well::Status::OPEN);
|
BOOST_CHECK(op_1.getStatus() == Well::Status::OPEN);
|
||||||
|
@ -133,10 +133,9 @@ BOOST_AUTO_TEST_CASE(TestNoTracer) {
|
|||||||
auto deck = createDeckWithOutTracer();
|
auto deck = createDeckWithOutTracer();
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec ( deck );
|
Runspec runspec ( deck );
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
BOOST_CHECK(!deck.hasKeyword("WTRACER"));
|
BOOST_CHECK(!deck.hasKeyword("WTRACER"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,10 +144,9 @@ BOOST_AUTO_TEST_CASE(TestDynamicWTRACER) {
|
|||||||
auto deck = createDeckWithDynamicWTRACER();
|
auto deck = createDeckWithDynamicWTRACER();
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec ( deck );
|
Runspec runspec ( deck );
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
BOOST_CHECK(deck.hasKeyword("WTRACER"));
|
BOOST_CHECK(deck.hasKeyword("WTRACER"));
|
||||||
const auto& keyword = deck.getKeyword("WTRACER");
|
const auto& keyword = deck.getKeyword("WTRACER");
|
||||||
BOOST_CHECK_EQUAL(keyword.size(),1);
|
BOOST_CHECK_EQUAL(keyword.size(),1);
|
||||||
@ -168,10 +166,9 @@ BOOST_AUTO_TEST_CASE(TestTracerInProducerTHROW) {
|
|||||||
auto deck = createDeckWithTracerInProducer();
|
auto deck = createDeckWithTracerInProducer();
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec ( deck );
|
Runspec runspec ( deck );
|
||||||
|
|
||||||
BOOST_CHECK_THROW(Schedule(deck, grid, fp, eclipseProperties, runspec), std::invalid_argument);
|
BOOST_CHECK_THROW(Schedule(deck, grid, fp, runspec), std::invalid_argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,9 +51,9 @@ inline EclipseState makeState(const std::string& fileName) {
|
|||||||
|
|
||||||
BOOST_AUTO_TEST_CASE( PERMX ) {
|
BOOST_AUTO_TEST_CASE( PERMX ) {
|
||||||
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
||||||
const auto& permx = state.get3DProperties().getDoubleGridProperty( "PERMX" ).getData();
|
const auto& permx = state.fieldProps().get_global<double>( "PERMX" );
|
||||||
const auto& permy = state.get3DProperties().getDoubleGridProperty( "PERMY" ).getData();
|
const auto& permy = state.fieldProps().get_global<double>( "PERMY" );
|
||||||
const auto& permz = state.get3DProperties().getDoubleGridProperty( "PERMZ" ).getData();
|
const auto& permz = state.fieldProps().get_global<double>( "PERMZ" );
|
||||||
size_t i, j, k;
|
size_t i, j, k;
|
||||||
const EclipseGrid& grid = state.getInputGrid();
|
const EclipseGrid& grid = state.getInputGrid();
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ BOOST_AUTO_TEST_CASE( PERMX ) {
|
|||||||
|
|
||||||
BOOST_AUTO_TEST_CASE( PARSE_BOX_OK ) {
|
BOOST_AUTO_TEST_CASE( PARSE_BOX_OK ) {
|
||||||
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
||||||
const auto& satnum = state.get3DProperties().getIntGridProperty( "SATNUM" ).getData();
|
const auto& satnum = state.fieldProps().get_global<int>( "SATNUM" );
|
||||||
{
|
{
|
||||||
size_t i, j, k;
|
size_t i, j, k;
|
||||||
const EclipseGrid& grid = state.getInputGrid();
|
const EclipseGrid& grid = state.getInputGrid();
|
||||||
@ -96,8 +96,8 @@ BOOST_AUTO_TEST_CASE( PARSE_BOX_OK ) {
|
|||||||
|
|
||||||
BOOST_AUTO_TEST_CASE( PARSE_MULTIPLY_COPY ) {
|
BOOST_AUTO_TEST_CASE( PARSE_MULTIPLY_COPY ) {
|
||||||
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
||||||
const auto& satnum = state.get3DProperties().getIntGridProperty( "SATNUM" ).getData();
|
const auto& satnum = state.fieldProps().get_global<int>( "SATNUM" );
|
||||||
const auto& fipnum = state.get3DProperties().getIntGridProperty( "FIPNUM" ).getData();
|
const auto& fipnum = state.fieldProps().get_global<int>( "FIPNUM" );
|
||||||
size_t i, j, k;
|
size_t i, j, k;
|
||||||
const EclipseGrid& grid = state.getInputGrid();
|
const EclipseGrid& grid = state.getInputGrid();
|
||||||
|
|
||||||
@ -121,9 +121,9 @@ BOOST_AUTO_TEST_CASE( PARSE_MULTIPLY_COPY ) {
|
|||||||
|
|
||||||
BOOST_AUTO_TEST_CASE( EQUALS ) {
|
BOOST_AUTO_TEST_CASE( EQUALS ) {
|
||||||
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
||||||
const auto& pvtnum = state.get3DProperties().getIntGridProperty( "PVTNUM" ).getData();
|
const auto& pvtnum = state.fieldProps().get_global<int>( "PVTNUM" );
|
||||||
const auto& eqlnum = state.get3DProperties().getIntGridProperty( "EQLNUM" ).getData();
|
const auto& eqlnum = state.fieldProps().get_global<int>( "EQLNUM" );
|
||||||
const auto& poro = state.get3DProperties().getDoubleGridProperty( "PORO" ).getData();
|
const auto& poro = state.fieldProps().get_global<double>( "PORO" );
|
||||||
size_t i, j, k;
|
size_t i, j, k;
|
||||||
const EclipseGrid& grid = state.getInputGrid();
|
const EclipseGrid& grid = state.getInputGrid();
|
||||||
|
|
||||||
@ -144,11 +144,7 @@ BOOST_AUTO_TEST_CASE( EQUALS ) {
|
|||||||
BOOST_AUTO_TEST_CASE( OPERATE ) {
|
BOOST_AUTO_TEST_CASE( OPERATE ) {
|
||||||
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
|
||||||
const EclipseGrid& grid = state.getInputGrid();
|
const EclipseGrid& grid = state.getInputGrid();
|
||||||
#ifdef ENABLE_3DPROPS_TESTING
|
|
||||||
const auto& ntg = state.fieldProps().get_global<double>("NTG");
|
const auto& ntg = state.fieldProps().get_global<double>("NTG");
|
||||||
#else
|
|
||||||
const auto& ntg = state.get3DProperties().getDoubleGridProperty("NTG").getData();
|
|
||||||
#endif
|
|
||||||
BOOST_CHECK_EQUAL( ntg[grid.getGlobalIndex(0,0,0)], 8.50 ); // MULTA
|
BOOST_CHECK_EQUAL( ntg[grid.getGlobalIndex(0,0,0)], 8.50 ); // MULTA
|
||||||
BOOST_CHECK_EQUAL( ntg[grid.getGlobalIndex(0,5,0)], 5.00 ); // POLY
|
BOOST_CHECK_EQUAL( ntg[grid.getGlobalIndex(0,5,0)], 5.00 ); // POLY
|
||||||
BOOST_CHECK_EQUAL( ntg[grid.getGlobalIndex(0,0,1)], 4.0 ); // COPY
|
BOOST_CHECK_EQUAL( ntg[grid.getGlobalIndex(0,0,1)], 4.0 ); // COPY
|
||||||
|
@ -591,9 +591,7 @@ BOOST_AUTO_TEST_CASE( MULTISEGMENT_ABS ) {
|
|||||||
|
|
||||||
|
|
||||||
const EclipseState state(deck);
|
const EclipseState state(deck);
|
||||||
const auto& grid = state.getInputGrid();
|
|
||||||
const TableManager table ( deck );
|
const TableManager table ( deck );
|
||||||
const Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
const Schedule sched(deck, state);
|
const Schedule sched(deck, state);
|
||||||
|
|
||||||
@ -1368,10 +1366,9 @@ BOOST_AUTO_TEST_CASE( WCONPROD ) {
|
|||||||
auto deck = parser.parseFile(wconprodFile);
|
auto deck = parser.parseFile(wconprodFile);
|
||||||
EclipseGrid grid(30,30,30);
|
EclipseGrid grid(30,30,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp( deck , grid, table);
|
FieldPropsManager fp( deck , grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid, fp, eclipseProperties, runspec );
|
Schedule sched(deck, grid, fp, runspec );
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(5U, sched.numWells());
|
BOOST_CHECK_EQUAL(5U, sched.numWells());
|
||||||
BOOST_CHECK(sched.hasWell("INJE1"));
|
BOOST_CHECK(sched.hasWell("INJE1"));
|
||||||
@ -1415,10 +1412,9 @@ BOOST_AUTO_TEST_CASE( WCONINJE ) {
|
|||||||
auto deck = parser.parseFile(wconprodFile);
|
auto deck = parser.parseFile(wconprodFile);
|
||||||
EclipseGrid grid(30,30,30);
|
EclipseGrid grid(30,30,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties( deck , table, grid );
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched( deck, grid, fp, eclipseProperties, runspec);
|
Schedule sched( deck, grid, fp, runspec);
|
||||||
SummaryState st(std::chrono::system_clock::now());
|
SummaryState st(std::chrono::system_clock::now());
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(5U, sched.numWells());
|
BOOST_CHECK_EQUAL(5U, sched.numWells());
|
||||||
|
@ -53,10 +53,9 @@ BOOST_AUTO_TEST_CASE(CreateSchedule) {
|
|||||||
auto deck2 = parser.parseString( ss.str());
|
auto deck2 = parser.parseString( ss.str());
|
||||||
for (const auto& deck : {deck1 , deck2}) {
|
for (const auto& deck : {deck1 , deck2}) {
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
const auto& timeMap = sched.getTimeMap();
|
const auto& timeMap = sched.getTimeMap();
|
||||||
BOOST_CHECK_EQUAL(TimeMap::mkdate(2007 , 5 , 10), sched.getStartTime());
|
BOOST_CHECK_EQUAL(TimeMap::mkdate(2007 , 5 , 10), sched.getStartTime());
|
||||||
BOOST_CHECK_EQUAL(9U, timeMap.size());
|
BOOST_CHECK_EQUAL(9U, timeMap.size());
|
||||||
@ -71,10 +70,9 @@ BOOST_AUTO_TEST_CASE(CreateSchedule_Comments_After_Keywords) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
const auto& timeMap = sched.getTimeMap();
|
const auto& timeMap = sched.getTimeMap();
|
||||||
BOOST_CHECK_EQUAL(TimeMap::mkdate(2007, 5 , 10) , sched.getStartTime());
|
BOOST_CHECK_EQUAL(TimeMap::mkdate(2007, 5 , 10) , sched.getStartTime());
|
||||||
BOOST_CHECK_EQUAL(9U, timeMap.size());
|
BOOST_CHECK_EQUAL(9U, timeMap.size());
|
||||||
@ -87,10 +85,9 @@ BOOST_AUTO_TEST_CASE(WCONPROD_MissingCmode) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,3);
|
EclipseGrid grid(10,10,3);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
BOOST_CHECK_NO_THROW( Schedule(deck, grid , fp, eclipseProperties, runspec) );
|
BOOST_CHECK_NO_THROW( Schedule(deck, grid , fp, runspec) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -100,10 +97,9 @@ BOOST_AUTO_TEST_CASE(WCONPROD_Missing_DATA) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,3);
|
EclipseGrid grid(10,10,3);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
BOOST_CHECK_THROW( Schedule(deck, grid , fp, eclipseProperties, runspec) , std::invalid_argument );
|
BOOST_CHECK_THROW( Schedule(deck, grid , fp, runspec) , std::invalid_argument );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -113,10 +109,9 @@ BOOST_AUTO_TEST_CASE(WellTestRefDepth) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(40,60,30);
|
EclipseGrid grid(40,60,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck , grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck , grid , fp, runspec);
|
||||||
|
|
||||||
const auto& well1 = sched.getWellatEnd("W_1");
|
const auto& well1 = sched.getWellatEnd("W_1");
|
||||||
const auto& well2 = sched.getWellatEnd("W_2");
|
const auto& well2 = sched.getWellatEnd("W_2");
|
||||||
@ -136,10 +131,9 @@ BOOST_AUTO_TEST_CASE(WellTesting) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(40,60,30);
|
EclipseGrid grid(40,60,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(4U, sched.numWells());
|
BOOST_CHECK_EQUAL(4U, sched.numWells());
|
||||||
BOOST_CHECK(sched.hasWell("W_1"));
|
BOOST_CHECK(sched.hasWell("W_1"));
|
||||||
@ -282,10 +276,9 @@ BOOST_AUTO_TEST_CASE(WellTestCOMPDAT_DEFAULTED_ITEMS) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -295,10 +288,9 @@ BOOST_AUTO_TEST_CASE(WellTestCOMPDAT) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(40,60,30);
|
EclipseGrid grid(40,60,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(4U, sched.numWells());
|
BOOST_CHECK_EQUAL(4U, sched.numWells());
|
||||||
BOOST_CHECK(sched.hasWell("W_1"));
|
BOOST_CHECK(sched.hasWell("W_1"));
|
||||||
@ -331,10 +323,9 @@ BOOST_AUTO_TEST_CASE(GroupTreeTest_GRUPTREE_correct) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,3);
|
EclipseGrid grid(10,10,3);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
|
Schedule schedule(deck, grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK( schedule.hasGroup( "FIELD" ));
|
BOOST_CHECK( schedule.hasGroup( "FIELD" ));
|
||||||
BOOST_CHECK( schedule.hasGroup( "PROD" ));
|
BOOST_CHECK( schedule.hasGroup( "PROD" ));
|
||||||
@ -354,10 +345,9 @@ BOOST_AUTO_TEST_CASE(GroupTreeTest_GRUPTREE_WITH_REPARENT_correct_tree) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,3);
|
EclipseGrid grid(10,10,3);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
const auto& field_group = sched.getGroup("FIELD", 1);
|
const auto& field_group = sched.getGroup("FIELD", 1);
|
||||||
const auto& new_group = sched.getGroup("GROUP_NEW", 1);
|
const auto& new_group = sched.getGroup("GROUP_NEW", 1);
|
||||||
@ -376,10 +366,9 @@ BOOST_AUTO_TEST_CASE( WellTestGroups ) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,3);
|
EclipseGrid grid(10,10,3);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
SummaryState st(std::chrono::system_clock::now());
|
SummaryState st(std::chrono::system_clock::now());
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL( 3U , sched.numGroups() );
|
BOOST_CHECK_EQUAL( 3U , sched.numGroups() );
|
||||||
@ -428,10 +417,9 @@ BOOST_AUTO_TEST_CASE( WellTestGroupAndWellRelation ) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,3);
|
EclipseGrid grid(10,10,3);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
{
|
{
|
||||||
auto& group1 = sched.getGroup("GROUP1", 0);
|
auto& group1 = sched.getGroup("GROUP1", 0);
|
||||||
@ -491,10 +479,9 @@ BOOST_AUTO_TEST_CASE(WellTestWGRUPCONWellPropertiesSet) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,10);
|
EclipseGrid grid(10,10,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
const auto& well1 = sched.getWell("W_1", 0);
|
const auto& well1 = sched.getWell("W_1", 0);
|
||||||
BOOST_CHECK(well1.isAvailableForGroupControl( ));
|
BOOST_CHECK(well1.isAvailableForGroupControl( ));
|
||||||
@ -540,10 +527,9 @@ COMPDAT \n\
|
|||||||
auto deck = parser.parseString(deckString);
|
auto deck = parser.parseString(deckString);
|
||||||
EclipseGrid grid(30,30,10);
|
EclipseGrid grid(30,30,10);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
const auto& connections = sched.getWell("W1", 0).getConnections();
|
const auto& connections = sched.getWell("W1", 0).getConnections();
|
||||||
BOOST_CHECK_EQUAL( 10 , connections.get(0).getI() );
|
BOOST_CHECK_EQUAL( 10 , connections.get(0).getI() );
|
||||||
BOOST_CHECK_EQUAL( 20 , connections.get(0).getJ() );
|
BOOST_CHECK_EQUAL( 20 , connections.get(0).getJ() );
|
||||||
@ -560,10 +546,9 @@ BOOST_AUTO_TEST_CASE(OpmCode) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(10,10,5);
|
EclipseGrid grid(10,10,5);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
BOOST_CHECK_NO_THROW( Schedule(deck , grid , fp, eclipseProperties, runspec) );
|
BOOST_CHECK_NO_THROW( Schedule(deck , grid , fp, runspec) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -574,10 +559,9 @@ BOOST_AUTO_TEST_CASE(WELLS_SHUT) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(20,40,1);
|
EclipseGrid grid(20,40,1);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -605,10 +589,9 @@ BOOST_AUTO_TEST_CASE(WellTestWPOLYMER) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(30,30,30);
|
EclipseGrid grid(30,30,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(4U, sched.numWells());
|
BOOST_CHECK_EQUAL(4U, sched.numWells());
|
||||||
@ -673,10 +656,9 @@ BOOST_AUTO_TEST_CASE(WellTestWFOAM) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(30,30,30);
|
EclipseGrid grid(30,30,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(4U, sched.numWells());
|
BOOST_CHECK_EQUAL(4U, sched.numWells());
|
||||||
@ -741,10 +723,9 @@ BOOST_AUTO_TEST_CASE(WellTestWECON) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(30,30,30);
|
EclipseGrid grid(30,30,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck, grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK_EQUAL(3U, sched.numWells());
|
BOOST_CHECK_EQUAL(3U, sched.numWells());
|
||||||
BOOST_CHECK(sched.hasWell("INJE01"));
|
BOOST_CHECK(sched.hasWell("INJE01"));
|
||||||
@ -852,10 +833,9 @@ BOOST_AUTO_TEST_CASE(TestEvents) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(40,40,30);
|
EclipseGrid grid(40,40,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec (deck);
|
Runspec runspec (deck);
|
||||||
Schedule sched(deck , grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck , grid , fp, runspec);
|
||||||
const Events& events = sched.getEvents();
|
const Events& events = sched.getEvents();
|
||||||
|
|
||||||
BOOST_CHECK( events.hasEvent(ScheduleEvents::NEW_WELL , 0 ) );
|
BOOST_CHECK( events.hasEvent(ScheduleEvents::NEW_WELL , 0 ) );
|
||||||
@ -887,10 +867,9 @@ BOOST_AUTO_TEST_CASE(TestWellEvents) {
|
|||||||
auto deck = parser.parseFile(scheduleFile);
|
auto deck = parser.parseFile(scheduleFile);
|
||||||
EclipseGrid grid(40,40,30);
|
EclipseGrid grid(40,40,30);
|
||||||
TableManager table ( deck );
|
TableManager table ( deck );
|
||||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
|
||||||
FieldPropsManager fp(deck, grid, table);
|
FieldPropsManager fp(deck, grid, table);
|
||||||
Runspec runspec(deck);
|
Runspec runspec(deck);
|
||||||
Schedule sched(deck , grid , fp, eclipseProperties, runspec);
|
Schedule sched(deck , grid , fp, runspec);
|
||||||
|
|
||||||
BOOST_CHECK( sched.hasWellGroupEvent( "W_1", ScheduleEvents::NEW_WELL , 0 ));
|
BOOST_CHECK( sched.hasWellGroupEvent( "W_1", ScheduleEvents::NEW_WELL , 0 ));
|
||||||
BOOST_CHECK( sched.hasWellGroupEvent( "W_2", ScheduleEvents::NEW_WELL , 2 ));
|
BOOST_CHECK( sched.hasWellGroupEvent( "W_2", ScheduleEvents::NEW_WELL , 2 ));
|
||||||
|
@ -30,7 +30,7 @@ inline void loadDeck( const char * deck_file) {
|
|||||||
|
|
||||||
auto deck = parser.parseFile(deck_file);
|
auto deck = parser.parseFile(deck_file);
|
||||||
Opm::EclipseState state( deck);
|
Opm::EclipseState state( deck);
|
||||||
Opm::Schedule schedule( deck, state.getInputGrid(), state.fieldProps(), state.get3DProperties(), state.runspec());
|
Opm::Schedule schedule( deck, state);
|
||||||
Opm::SummaryConfig summary( deck, schedule, state.getTableManager( ));
|
Opm::SummaryConfig summary( deck, schedule, state.getTableManager( ));
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
|
@ -44,8 +44,7 @@ BOOST_AUTO_TEST_CASE(create) {
|
|||||||
EclipseState es(deck);
|
EclipseState es(deck);
|
||||||
const EclipseGrid& grid = es.getInputGrid();
|
const EclipseGrid& grid = es.getInputGrid();
|
||||||
Schedule schedule( deck, es);
|
Schedule schedule( deck, es);
|
||||||
out::RegionCache rc(es.get3DProperties().getIntGridProperty("FIPNUM").compressedCopy(grid) , grid, schedule);
|
out::RegionCache rc(es.fieldProps().get<int>("FIPNUM"), grid, schedule);
|
||||||
|
|
||||||
{
|
{
|
||||||
const auto& empty = rc.connections( 4 );
|
const auto& empty = rc.connections( 4 );
|
||||||
BOOST_CHECK_EQUAL( empty.size() , 0 );
|
BOOST_CHECK_EQUAL( empty.size() , 0 );
|
||||||
|
Loading…
Reference in New Issue
Block a user