def test_ecl_kw_numeric_property(self): kw = EclKW("PORO" , 1000 , EclTypeEnum.ECL_FLOAT_TYPE) with self.assertRaises(DeprecationWarning): kw.numeric
def test_block_view(self): with TestAreaContext("python/ecl_file/view"): with openFortIO("TEST" , mode = FortIO.WRITE_MODE) as f: for i in range(5): header = EclKW("HEADER" , 1 , EclTypeEnum.ECL_INT_TYPE ) header[0] = i data1 = EclKW("DATA1" , 100 , EclTypeEnum.ECL_INT_TYPE ) data1.assign( i ) data2 = EclKW("DATA2" , 100 , EclTypeEnum.ECL_INT_TYPE ) data2.assign( i*10 ) header.fwrite( f ) data1.fwrite( f ) data2.fwrite( f ) ecl_file = EclFile("TEST") pfx = 'EclFile(' self.assertEqual(pfx, repr(ecl_file)[:len(pfx)]) with self.assertRaises(KeyError): ecl_file.blockView("NO" , 1) with self.assertRaises(IndexError): ecl_file.blockView("HEADER" , 100) with self.assertRaises(IndexError): ecl_file.blockView("HEADER" , 1000) bv = ecl_file.blockView("HEADER" , -1) for i in range(5): view = ecl_file.blockView("HEADER" , i) self.assertEqual( len(view) , 3) header = view["HEADER"][0] data1 = view["DATA1"][0] data2 = view["DATA2"][0] self.assertEqual( header[0] , i ) self.assertEqual( data1[99] , i ) self.assertEqual( data2[99] , i*10 ) for i in range(5): view = ecl_file.blockView2("HEADER" , "DATA2", i ) self.assertEqual( len(view) , 2) header = view["HEADER"][0] data1 = view["DATA1"][0] self.assertEqual( header[0] , i ) self.assertEqual( data1[99] , i ) self.assertFalse( "DATA2" in view ) view = ecl_file.blockView2("HEADER" , None, 0 ) self.assertEqual( len(view) , len(ecl_file)) view = ecl_file.blockView2(None , "DATA2", 0 )
def test_ecl_kw_iget(self): kw = EclKW("PORO" , 1000 , EclTypeEnum.ECL_FLOAT_TYPE) with self.assertRaises(DeprecationWarning): value = kw.iget( 100 )
def test_create(self): with self.assertRaises(ValueError): EclKW("ToGodDamnLong", 100, EclTypeEnum.ECL_CHAR_TYPE)
def create_init(grid, case): poro = EclKW("PORO", grid.getNumActive(), EclTypeEnum.ECL_FLOAT_TYPE) porv = poro.copy() porv.setName("PORV") for g in range(grid.getGlobalSize()): porv[g] *= grid.cell_volume(global_index=g) with openFortIO("%s.INIT" % case, mode=FortIO.WRITE_MODE) as f: poro.fwrite(f) porv.fwrite(f) def create_restart(grid, case, p1, p2=None): with openFortIO("%s.UNRST" % case, mode=FortIO.WRITE_MODE) as f: seq_hdr = EclKW("SEQNUM", 1, EclTypeEnum.ECL_FLOAT_TYPE) seq_hdr[0] = 10 p = EclKW("PRESSURE", grid.getNumActive(), EclTypeEnum.ECL_FLOAT_TYPE) for i in range(len(p1)): p[i] = p1[i] header = EclKW("INTEHEAD", 67, EclTypeEnum.ECL_INT_TYPE) header[64] = 1 header[65] = 1 header[66] = 2000 seq_hdr.fwrite(f) header.fwrite(f) p.fwrite(f) if p2:
def copy_offset(): src = EclKW("NAME", 100, EclTypeEnum.ECL_FLOAT_TYPE) copy = src.sub_copy(200, 100)
def copy_long(): src = EclKW("NAME", 100, EclTypeEnum.ECL_FLOAT_TYPE) copy = src.sub_copy(0, 2000)
def test_fault_block_layer(self): with self.assertRaises(ValueError): layer = FaultBlockLayer(self.grid, -1) with self.assertRaises(ValueError): layer = FaultBlockLayer(self.grid, self.grid.getGlobalSize()) layer = FaultBlockLayer(self.grid, 1) self.assertEqual(1, layer.getK()) kw = EclKW("FAULTBLK", self.grid.getGlobalSize(), EclTypeEnum.ECL_FLOAT_TYPE) with self.assertRaises(ValueError): layer.scanKeyword(kw) layer.scanKeyword(self.kw) self.assertEqual(2, len(layer)) with self.assertRaises(TypeError): ls = layer["JJ"] l = [] for blk in layer: l.append(blk) self.assertEqual(len(l), 2) l0 = layer[0] l1 = layer[1] self.assertTrue(isinstance(l1, FaultBlock)) l0.getCentroid() l1.getBlockID() with self.assertRaises(IndexError): l2 = layer[2] self.assertEqual(True, 1 in layer) self.assertEqual(True, 2 in layer) self.assertEqual(False, 77 in layer) self.assertEqual(False, 177 in layer) l1 = layer.getBlock(1) self.assertTrue(isinstance(l1, FaultBlock)) with self.assertRaises(KeyError): l = layer.getBlock(66) with self.assertRaises(KeyError): layer.deleteBlock(66) layer.deleteBlock(2) self.assertEqual(1, len(layer)) blk = layer[0] self.assertEqual(blk.getBlockID(), 1) with self.assertRaises(KeyError): layer.addBlock(1) blk2 = layer.addBlock(2) self.assertEqual(len(layer), 2) blk3 = layer.addBlock() self.assertEqual(len(layer), 3) layer.addBlock(100) layer.addBlock(101) layer.addBlock(102) layer.addBlock(103) layer.deleteBlock(2) blk1 = layer.getBlock(103) blk2 = layer[-1] self.assertEqual(blk1.getBlockID(), blk2.getBlockID()) fault_block = layer[0] fault_block.assignToRegion(2) self.assertEqual([2], list(fault_block.getRegionList())) fault_block.assignToRegion(2) self.assertEqual([2], list(fault_block.getRegionList())) fault_block.assignToRegion(3) self.assertEqual([2, 3], list(fault_block.getRegionList())) fault_block.assignToRegion(1) self.assertEqual([1, 2, 3], list(fault_block.getRegionList())) fault_block.assignToRegion(2) self.assertEqual([1, 2, 3], list(fault_block.getRegionList()))
def create_init(grid, case): poro = EclKW("PORO", grid.getNumActive(), EclDataType.ECL_FLOAT) porv = poro.copy() porv.setName("PORV") for g in range(grid.getGlobalSize()): porv[g] *= grid.cell_volume(global_index=g) with openFortIO("%s.INIT" % case, mode=FortIO.WRITE_MODE) as f: poro.fwrite(f) porv.fwrite(f) def create_restart(grid, case, p1, p2=None): with openFortIO("%s.UNRST" % case, mode=FortIO.WRITE_MODE) as f: seq_hdr = EclKW("SEQNUM", 1, EclDataType.ECL_FLOAT) seq_hdr[0] = 10 p = EclKW("PRESSURE", grid.getNumActive(), EclDataType.ECL_FLOAT) for i in range(len(p1)): p[i] = p1[i] header = EclKW("INTEHEAD", 67, EclDataType.ECL_INT) header[64] = 1 header[65] = 1 header[66] = 2000 seq_hdr.fwrite(f) header.fwrite(f) p.fwrite(f) if p2:
def exportACTNUMKw(self): actnum = EclKW("ACTNUM", self.getGlobalSize(), EclDataType.ECL_INT) self._init_actnum(actnum.getDataPtr()) return actnum