JFunc now returns dict (#25)

made jfunc return dict
This commit is contained in:
Pål Grønås Drange
2017-02-05 10:41:28 +01:00
committed by GitHub
parent a30de369f9
commit 0d8610ad04
4 changed files with 93 additions and 5 deletions

View File

@@ -39,10 +39,10 @@ py::list faultNames( const EclipseState& state ) {
}
return l;
}
py::tuple jfunc( const EclipseState& s) {
py::dict jfunc( const EclipseState& s) {
const auto& tm = s.getTableManager();
if (!tm.useJFunc())
return py::make_tuple();
return py::dict();
const auto& j = tm.getJFunc();
std::string flag = "BOTH";
std::string dir = "XY";
@@ -58,9 +58,16 @@ py::tuple jfunc( const EclipseState& s) {
else if (j.direction() == JFunc::Direction::Z)
dir = "Z";
return py::make_tuple(flag, dir,
j.alphaFactor(), j.betaFactor(),
j.goSurfaceTension(), j.owSurfaceTension());
py::dict ret;
ret["FLAG"] = flag;
ret["DIRECTION"] = dir;
ret["ALPHA_FACTOR"] = j.alphaFactor();
ret["BETA_FACTOR"] = j.betaFactor();
if (j.flag() == JFunc::Flag::WATER || j.flag() == JFunc::Flag::BOTH)
ret["OIL_WATER"] = j.owSurfaceTension();
if (j.flag() == JFunc::Flag::GAS || j.flag() == JFunc::Flag::BOTH)
ret["GAS_OIL"] = j.goSurfaceTension();
return ret;
}

View File

@@ -1,4 +1,5 @@
configure_file(spe3/SPE3CASE1.DATA spe3/SPE3CASE1.DATA COPYONLY)
configure_file(data/JFUNC.DATA data/JFUNC.DATA COPYONLY)
foreach(prog parse state props schedule wells)
add_python_test(${prog} ${prog}.py)

34
tests/data/JFUNC.DATA Normal file
View File

@@ -0,0 +1,34 @@
RUNSPEC
TITLE
JFUNC TEST
DIMENS
10 10 10 /
GRID
DX
1000*0.25 /
DY
1000*0.25 /
DZ
1000*0.25 /
TOPS
100*0.25 /
FAULTS
'F1' 1 1 1 4 1 4 'X' /
'F2' 5 5 1 4 1 4 'X-' /
/
MULTFLT
'F1' 0.50 /
'F2' 0.50 /
/
JFUNC
WATER 21.0 /
PROPS
REGIONS
SWAT
1000*1 /
SATNUM
1000*2 /

View File

@@ -105,3 +105,49 @@ SATNUM
f2 = faultdeck.faultFaces('F2')
self.assertTrue((4,0,0,'X-') in f2)
self.assertFalse((3,0,0,'X-') in f2)
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
js = sunbeam.parse('data/JFUNC.DATA')
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 = """RUNSPEC
DIMENS
10 10 10 /
GRID
DX
1000*0.25 /
DY
1000*0.25 /
DZ
1000*0.25 /
TOPS
100*0.25 /
JFUNC
GAS * 13.0 0.6 0.7 Z /
PROPS\nREGIONS
"""
js_gas = sunbeam.parse(jfunc_gas)
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