def test_parser_section_deckItems(self): all_spe1case1 = [ "RUNSPEC", "TITLE", "DIMENS", "EQLDIMS", "TABDIMS", "REGDIMS", "OIL", "GAS", "WATER", "DISGAS", "FIELD", "START", "WELLDIMS", "UNIFOUT", "UDQDIMS", "UDADIMS", "GRID", "INIT", "NOECHO", "DX", "DY", "DZ", "TOPS", "PORO", "PERMX", "PERMY", "PERMZ", "ECHO", "PROPS", "PVTW", "ROCK", "SWOF", "SGOF", "DENSITY", "PVDG", "PVTO", "REGIONS", "EQLNUM", "FIPNUM", "SOLUTION", "EQUIL", "RSVD", "SUMMARY", "FOPR", "WGOR", "FGOR", "BPR", "BGSAT", "WBHP", "WGIR", "WGIT", "WGPR", "WGPT", "WOIR", "WOIT", "WOPR", "WOPT", "WWIR", "WWIT", "WWPR", "WWPT", "WUOPRL", "SCHEDULE", "UDQ", "RPTSCHED", "RPTRST", "DRSDT", "WELSPECS", "COMPDAT", "WCONPROD", "WCONINJE", "TSTEP" ] # notice that RUNSPEC keywords will always be parsed since these properties from these keyword # are needed to parse following sections. props_spe1case1 = [ "RUNSPEC", "TITLE", "DIMENS", "EQLDIMS", "TABDIMS", "REGDIMS", "OIL", "GAS", "WATER", "DISGAS", "FIELD", "START", "WELLDIMS", "UNIFOUT", "UDQDIMS", "UDADIMS", "GRID", "PVTW", "ROCK", "SWOF", "SGOF", "DENSITY", "PVDG", "PVTO" ] parser = Parser() error_recovery = [("PARSE_RANDOM_SLASH", opm.io.action.ignore), ("PARSE_EXTRA_RECORDS", opm.io.action.ignore)] context = ParseContext(error_recovery) deck1 = parser.parse(test_path("data/SPE1CASE1.DATA"), context) self.assertEqual(len(deck1), len(all_spe1case1)) test_1 = [dkw.name for dkw in deck1] for test, ref in zip(test_1, all_spe1case1): self.assertEqual(test, ref) section_list = [eclSectionType.PROPS] deck2 = parser.parse(test_path("data/SPE1CASE1.DATA"), context, section_list) self.assertEqual(len(deck2), len(props_spe1case1)) test_2 = [dkw.name for dkw in deck2] for test, ref in zip(test_2, props_spe1case1): self.assertEqual(test, ref) # props section keyword located in include file for this deck (SPE1CASE1B.DATA) # not possible to parse individual sections with self.assertRaises(RuntimeError): parser.parse(test_path("data/SPE1CASE1B.DATA"), context, section_list)
def setUpClass(cls): parser = Parser() cls.deck_cpa = parser.parse(test_path('data/CORNERPOINT_ACTNUM.DATA')) cls.cp_state = EclipseState(cls.deck_cpa) cls.deck_spe3 = parser.parse(test_path('spe3/SPE3CASE1.DATA')) cls.state = EclipseState(cls.deck_spe3) cls.schedule = Schedule(cls.deck_spe3, cls.state) cls.summary_config = SummaryConfig(cls.deck_spe3, cls.state, cls.schedule)
def test_create(self): parser = Parser() deck = parser.parse(self.spe3fn) context = ParseContext() deck = parser.parse(self.spe3fn, context) with open(self.spe3fn) as f: string = f.read() deck = parser.parse_string(string) deck = parser.parse_string(string, context)
def test_create(self): parser = Parser() deck = parser.parse(self.spe3fn) active_unit_system = deck.active_unit_system() default_unit_system = deck.default_unit_system() self.assertEqual(active_unit_system.name, "Field") context = ParseContext() deck = parser.parse(self.spe3fn, context) with open(self.spe3fn) as f: string = f.read() deck = parser.parse_string(string) deck = parser.parse_string(string, context)
def setUp(self): parser = Parser() deck = parser.parse(test_path('spe3/SPE3CASE1.DATA')) 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 test_parser_deckItems(self): parser = Parser() error_recovery = [("PARSE_RANDOM_SLASH", opm.io.action.ignore), ("PARSE_EXTRA_RECORDS", opm.io.action.ignore)] context = ParseContext(error_recovery) self.deck_spe1case1 = parser.parse(test_path("data/SPE1CASE1.DATA"), context) dkw_compdate = self.deck_spe1case1["COMPDAT"] self.assertTrue(dkw_compdate[0][0].is_string()) self.assertFalse(dkw_compdate[0][1].is_string()) self.assertTrue(dkw_compdate[0][1].is_int()) self.assertFalse(dkw_compdate[0][1].is_double()) self.assertTrue(dkw_compdate[0][8].is_double()) self.assertTrue(dkw_compdate[0][0].value == "PROD") conI = dkw_compdate[0][1].value conJ = dkw_compdate[0][2].value conK = dkw_compdate[0][3].value self.assertEqual(dkw_compdate[0][5].value, "OPEN") self.assertTrue((conI, conJ, conK) == (10, 10, 3)) self.assertFalse(dkw_compdate[0][7].valid) self.assertTrue(dkw_compdate[0][7].defaulted) self.assertEqual(dkw_compdate[0][6].value, 0) self.assertEqual(dkw_compdate[0][8].value, 0.5) dkw_wconprod = self.deck_spe1case1["WCONPROD"] welln = dkw_wconprod[0][0].value self.assertEqual(dkw_wconprod[0][2].value, "ORAT") self.assertEqual(dkw_wconprod[0][3].value, "WUOPRL") self.assertEqual(dkw_wconprod[0][5].value, 1.5e5) dkw_permx = self.deck_spe1case1["PERMX"] permx = dkw_permx.get_raw_array() self.assertEqual(len(permx), 300) self.assertTrue(isinstance(permx, np.ndarray)) self.assertEqual(permx.dtype, "float64") dkw_eqlnum = self.deck_spe1case1["EQLNUM"] eqlnum = dkw_eqlnum.get_int_array() self.assertEqual(len(eqlnum), 300) self.assertTrue(isinstance(eqlnum, np.ndarray)) self.assertEqual(eqlnum.dtype, "int32")
def test_jfunc(self): # jf["FLAG"] = WATER; # set in deck # jf["DIRECTION"] = XY; # default # jf["ALPHA_FACTOR"] = 0.5 # default # jf["BETA_FACTOR"] = 0.5 # default # jf["OIL_WATER"] = 21.0 # set in deck # jf["GAS_OIL"] = -1.0 # N/A parser = Parser() deck = parser.parse(test_path('data/JFUNC.DATA')) js = EclipseState(deck) self.assertEqual('JFUNC TEST', js.title) jf = js.jfunc() print(jf) self.assertEqual(jf['FLAG'], 'WATER') self.assertEqual(jf['DIRECTION'], 'XY') self.assertFalse('GAS_OIL' in jf) self.assertTrue('OIL_WATER' in jf) self.assertEqual(jf['OIL_WATER'], 21.0) self.assertEqual(jf["ALPHA_FACTOR"], 0.5) # default self.assertEqual(jf["BETA_FACTOR"], 0.5) # default jfunc_gas = """ DIMENS 10 10 10 / ENDSCALE / GRID DX 1000*0.25 / DY 1000*0.25 / DZ 1000*0.25 / TOPS 100*0.25 / PORO 1000*0.15 / JFUNC GAS * 13.0 0.6 0.7 Z / PROPS\nREGIONS """ deck2 = parser.parse_string(jfunc_gas) js_gas = EclipseState(deck2) jf = js_gas.jfunc() self.assertEqual(jf['FLAG'], 'GAS') self.assertEqual(jf['DIRECTION'], 'Z') self.assertTrue('GAS_OIL' in jf) self.assertFalse('OIL_WATER' in jf) self.assertEqual(jf['GAS_OIL'], 13.0) self.assertEqual(jf["ALPHA_FACTOR"], 0.6) # default self.assertEqual(jf["BETA_FACTOR"], 0.7) # default
def setUp(self): parser = Parser() deck = parser.parse(test_path('spe3/SPE3CASE1.DATA')) self.spe3 = EclipseState(deck) self.props = self.spe3.props()