def __getitem__(self, index): return_arg = super(Ecl3DFile, self).__getitem__(index) if isinstance(return_arg, list): kw_list = return_arg else: kw_list = [return_arg] # Go through all the keywords and try inplace promotion to Ecl3DKW for kw in kw_list: try: Ecl3DKW.castFromKW(kw, self.grid) except ValueError: pass return return_arg
def __getitem__(self , index): return_arg = super(Ecl3DFile, self).__getitem__( index ) if isinstance(return_arg,list): kw_list = return_arg else: kw_list = [ return_arg ] # Go through all the keywords and try inplace promotion to Ecl3DKW for kw in kw_list: try: Ecl3DKW.castFromKW( kw , self.grid ) except ValueError: pass return return_arg
def test_cast(self): actnum = IntVector(default_value=1, initial_size=1000) for i in range(100): actnum[i] = 0 grid = EclGrid.createRectangular((10, 10, 10), (1, 1, 1), actnum=actnum) kw_wrong_size = EclKW("KW", 27, EclDataType.ECL_FLOAT) kw_global_size = EclKW("KW", grid.getGlobalSize(), EclDataType.ECL_FLOAT) kw_active_size = EclKW("KW", grid.getNumActive(), EclDataType.ECL_FLOAT) with self.assertRaises(ValueError): Ecl3DKW.castFromKW(kw_wrong_size, grid) Ecl3DKW.castFromKW(kw_global_size, grid) self.assertTrue(isinstance(kw_global_size, Ecl3DKW)) Ecl3DKW.castFromKW(kw_active_size, grid, default_value=66) self.assertTrue(isinstance(kw_active_size, Ecl3DKW)) self.assertEqual(kw_active_size[0, 0, 0], 66) with self.assertRaises(ValueError): kw_active_size[0, 0, 0] = 88
def test_cast(self): actnum = IntVector(default_value = 1 , initial_size = 1000) for i in range(100): actnum[i] = 0 grid = EclGrid.createRectangular( (10,10,10) , (1,1,1) , actnum = actnum) kw_wrong_size = EclKW.create( "KW" , 27 , EclTypeEnum.ECL_FLOAT_TYPE ) kw_global_size = EclKW.create( "KW" , grid.getGlobalSize() , EclTypeEnum.ECL_FLOAT_TYPE ) kw_active_size = EclKW.create( "KW" , grid.getNumActive() , EclTypeEnum.ECL_FLOAT_TYPE ) with self.assertRaises(ValueError): Ecl3DKW.castFromKW(kw_wrong_size , grid) Ecl3DKW.castFromKW(kw_global_size , grid) self.assertTrue( isinstance( kw_global_size , Ecl3DKW)) Ecl3DKW.castFromKW(kw_active_size , grid , default_value = 66) self.assertTrue( isinstance( kw_active_size , Ecl3DKW)) self.assertEqual( kw_active_size[0,0,0] , 66) with self.assertRaises(ValueError): kw_active_size[0,0,0] = 88
print('Using Norne location %s' % norne) rst = EclFile(join(norne, 'NORNE_ATW2013.UNRST')) grd = EclGrid(join(norne, 'NORNE_ATW2013.EGRID')) x = 10 # x in [0, grd.getNX()) y = 10 # y in [0, grd.getNY()) print(grd) print('Plotting SGAS, SOIL, SWAT for x,y pillar (%d, %d)' % (x, y)) swat = rst.iget_named_kw('SWAT', 0) sgas = rst.iget_named_kw('SGAS', 0) swat3d = Ecl3DKW.castFromKW(swat, grd, default_value=0) f_swat = lambda k: swat3d[x, y, k] sgas3d = Ecl3DKW.castFromKW(sgas, grd, default_value=0) f_sgas = lambda k: sgas3d[x, y, k] f_soil = lambda k: max(0, 1 - (f_sgas(k) + f_swat(k))) nz = grd.getNZ() sgas = [f_sgas(k) for k in range(nz)] soil = [f_soil(k) for k in range(nz)] swat = [f_swat(k) for k in range(nz)] import matplotlib.pyplot as plt plt.plot(sgas, color='r', label='SGAS')