def test_restart_days(self): rst_file = EclFile(self.test_file) self.assertAlmostEqual(0.0, rst_file.iget_restart_sim_days(0)) self.assertAlmostEqual(31.0, rst_file.iget_restart_sim_days(1)) self.assertAlmostEqual(274.0, rst_file.iget_restart_sim_days(10)) with self.assertRaises(KeyError): rst_file.restart_get_kw("Missing", dtime=datetime.date(2004, 1, 1)) with self.assertRaises(IndexError): rst_file.restart_get_kw("SWAT", dtime=datetime.date(1985, 1, 1))
def test_restart_days(self): rst_file = EclFile( self.test_file ) self.assertAlmostEqual( 0.0 , rst_file.iget_restart_sim_days(0) ) self.assertAlmostEqual( 31.0 , rst_file.iget_restart_sim_days(1) ) self.assertAlmostEqual( 274.0 , rst_file.iget_restart_sim_days(10) ) with self.assertRaises(KeyError): rst_file.restart_get_kw("Missing" , dtime = datetime.date( 2004,1,1)) with self.assertRaises(IndexError): rst_file.restart_get_kw("SWAT" , dtime = datetime.date( 1985 , 1 , 1))
def test_kw( self ): f = EclFile(self.u_file) kw1 = f["SWAT"][40] kw2 = f.restart_get_kw("SWAT", datetime.datetime(2003, 3, 1)) kw3 = f.restart_get_kw("SWAT", datetime.datetime(2003, 3, 1), copy=True) self.assertTrue(kw1.equal(kw2)) self.assertTrue(kw1.equal(kw3)) with self.assertRaises(IndexError): kw4 = f.restart_get_kw("SWAT", datetime.datetime(2009, 3, 17))
def test_kw(self): f = EclFile(self.u_file) kw1 = f["SWAT"][40] kw2 = f.restart_get_kw("SWAT", datetime.datetime(2003, 3, 1)) kw3 = f.restart_get_kw("SWAT", datetime.datetime(2003, 3, 1), copy=True) self.assertTrue(kw1.equal(kw2)) self.assertTrue(kw1.equal(kw3)) with self.assertRaises(IndexError): kw4 = f.restart_get_kw("SWAT", datetime.datetime(2009, 3, 17))
shale = np.any([shale, caprock, thick], axis=0) utsira = np.any([utsira, sand], axis=0) cumsum = layers.cumsum() layerTOP = cumsum[shale] layerBOT = cumsum[utsira] numLayers = sum(utsira) map = np.zeros(np.max(cumsum)) for i in range(1, numLayers): for j in range(layerTOP[i], layerBOT[i]): map[j] = i gridname = 'Sleipner_Reference_Model.grdecl' grid = EclGrid.load_from_grdecl(gridname) rst = EclFile(rstname) sgas2010 = rst.restart_get_kw("SGAS", datetime.datetime(2010, 12, 1)) doPlot = True feederpath = 'Sleipner_Plumes_Boundaries/data/' for layer in range(numLayers): legend = [] coords = [] xc = [] yc = [] val = [] for cell, sg in zip(grid.cells(), sgas2010): if (cell.k == layerTOP[layer]): xc.append(cell.coordinate[0]) yc.append(cell.coordinate[1]) val.append(sg)
from ecl.grid import EclGrid import datetime from layers import layers #Computes the areas of the top surface of the cells on the top of the sand layers with saturation above sgLimit the 1.9.2010 caseData = datetime.datetime(2010, 9, 1) outputFileName = "plume_areas_0.out" sgLimit = 0.1 caseName = sys.argv[1] layerShale, layerUtsira, mapShale, mapUtsira = layers() numLayers = len(layerUtsira) gridname = caseName + '.EGRID' grid = EclGrid(gridname) rstname = caseName + ".UNRST" rst = EclFile(rstname) sgass = rst.restart_get_kw("SGAS", caseData) areas = np.zeros(numLayers) for cell, sg in zip(grid.cells(), sgass): for layer in range(numLayers): # sum cell areas (volume/hight) of the first row of cells in the layer # with sg > sgLimit if (sg > sgLimit and cell.k == layerShale[layer]): areas[layer] += cell.volume / cell.dz f = open(outputFileName, "w") for area in areas: f.write(str(area) + "\n") f.close()