committed by
GitHub
parent
a30de369f9
commit
0d8610ad04
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
34
tests/data/JFUNC.DATA
Normal 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 /
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user