Free functions on Well for filtering purposes

This commit is contained in:
Jørgen Kvalsvik
2016-12-10 21:22:16 +01:00
parent f82990404f
commit b2b5c471c1
4 changed files with 35 additions and 0 deletions

View File

@@ -1,4 +1,5 @@
from .sunbeam import parse
from .sunbeam import Well
from .libsunbeam import action
__version__ = '0.0.1'

View File

@@ -54,6 +54,9 @@ py::class_< Well >( "Well", py::no_init )
.def( "J", headJts )
.def( "ref", refD )
.def( "ref", refDts )
.def( "isdefined", &Well::hasBeenDefined )
.def( "isinjector", &Well::isInjector )
.def( "isproducer", &Well::isProducer )
;
py::class_< std::vector< Well > >( "WellList", py::no_init )

View File

@@ -46,6 +46,24 @@ class EclipseState(object):
def schedule(self):
return self._schedule()
@delegate(lib.Well)
class Well(object):
@staticmethod
def defined(timestep):
def fn(well): return well.isdefined(timestep)
return fn
@staticmethod
def injector(timestep):
def fn(well): return well.isinjector(timestep)
return fn
@staticmethod
def producer(timestep):
def fn(well): return well.isproducer(timestep)
return fn
def _parse_context(actions):
ctx = lib.ParseContext()

View File

@@ -22,3 +22,16 @@ class TestWells(unittest.TestCase):
self.assertEqual(6, i)
self.assertEqual(6, j)
self.assertEqual(2247.9, refdepth)
def testWellDefinedFilter(self):
defined0 = filter(sunbeam.Well.defined(0), self.wells)
defined1 = filter(sunbeam.Well.defined(1), self.wells)
self.assertEqual(len(list(defined0)), 2)
self.assertEqual(len(list(defined1)), 2)
def testWellProdInjeFilter(self):
inje = filter(sunbeam.Well.injector(0), self.wells)
prod = filter(sunbeam.Well.producer(0), self.wells)
self.assertEqual(len(list(inje)), 1)
self.assertEqual(len(list(prod)), 1)