Example #1
0
    def test_empty_fault( self ):
        f = Fault(self.grid , "NAME")
        self.assertEqual("NAME" , f.getName())
        
        with self.assertRaises(KeyError):
            g = f["Key"]

        with self.assertRaises(KeyError):
            g = f[0]
Example #2
0
    def test_extend_to_polyline(self):
        grid = EclGrid.create_rectangular((3, 3, 1), (1, 1, 1))

        #  o   o   o   o
        #
        #  o---o---o---o
        #
        #  o===+   o   o
        #  |
        #  o   o   o   o

        fault1 = Fault(grid, "Fault")

        fault1.addRecord(0, 0, 0, 0, 0, 0, "X-")
        fault1.addRecord(0, 0, 0, 0, 0, 0, "Y")

        polyline = CPolyline(init_points=[(0, 2), (3, 2)])
        points = fault1.extendToPolyline(polyline, 0)
        self.assertEqual(points, [(1, 1), (2, 2)])

        end_join = fault1.endJoin(polyline, 0)
        self.assertEqual(end_join, [(1, 1), (0, 2)])

        polyline2 = CPolyline(init_points=[(0.8, 2), (0.8, 0.8)])
        end_join = fault1.endJoin(polyline2, 0)
        self.assertIsNone(end_join)
Example #3
0
    def test_extend_polyline_on(self):
        grid = EclGrid.createRectangular( (3,3,1) , (1 , 1 , 1))

        #  o   o   o   o
        #               
        #  o---o---o---o
        #  
        #  o===o===o===o
        #  
        #  o   o   o   o

        fault1 = Fault(grid , "Fault")
        fault1.addRecord(0 , 2 , 0 , 0 , 0 , 0 , "Y")

        polyline0 = CPolyline( init_points = [(0,2)])
        polyline1 = CPolyline( init_points = [(0,2) , (3,2)])
        polyline2 = CPolyline( init_points = [(1,3) , (1,2)])
        polyline3 = CPolyline( init_points = [(1,3) , (1,0)])

        with self.assertRaises(ValueError):
            fault1.extendPolylineOnto( polyline0 , 0 )
            
        points = fault1.extendPolylineOnto( polyline1 , 0 )
        self.assertIsNone( points )

        points = fault1.extendPolylineOnto( polyline2 , 0)
        self.assertEqual( points , [(1,2) , (1,1)])

        points = fault1.extendPolylineOnto( polyline3 , 0)
        self.assertIsNone( points )
Example #4
0
    def test_empty_fault(self):
        f = Fault(self.grid, "NAME")
        self.assertEqual("NAME", f.getName())

        with self.assertRaises(KeyError):
            g = f["Key"]

        with self.assertRaises(KeyError):
            g = f[0]

        self.assertEqual(len(f), 0)
Example #5
0
    def test_extend_to_polyline(self):
        grid = EclGrid.createRectangular( (3,3,1) , (1 , 1 , 1))

        #  o   o   o   o
        #               
        #  o---o---o---o
        #  
        #  o===+   o   o
        #  |   
        #  o   o   o   o

        fault1 = Fault(grid , "Fault")

        fault1.addRecord(0 , 0 , 0 , 0 , 0 , 0 , "X-")
        fault1.addRecord(0 , 0 , 0 , 0 , 0 , 0 , "Y")

        polyline = CPolyline( init_points = [(0,2) , (3,2)])
        points = fault1.extendToPolyline( polyline , 0 )
        self.assertEqual( points , [(1,1) , (2,2)])

        end_join = fault1.endJoin( polyline , 0 )
        self.assertEqual( end_join, [(1,1) , (0,2)] )
        
        polyline2 = CPolyline( init_points = [(0.8,2) , (0.8,0.8)])
        end_join = fault1.endJoin( polyline2 , 0 )
        self.assertIsNone( end_join )
Example #6
0
    def test_extend_polyline_on(self):
        grid = EclGrid.createRectangular( (3,3,1) , (1 , 1 , 1))

        #  o   o   o   o
        #               
        #  o---o---o---o
        #  
        #  o===o===o===o
        #  
        #  o   o   o   o

        fault1 = Fault(grid , "Fault")
        fault1.addRecord(0 , 2 , 0 , 0 , 0 , 0 , "Y")

        polyline0 = CPolyline( init_points = [(0,2)])
        polyline1 = CPolyline( init_points = [(0,2) , (3,2)])
        polyline2 = CPolyline( init_points = [(1,3) , (1,2)])
        polyline3 = CPolyline( init_points = [(1,3) , (1,0)])

        with self.assertRaises(ValueError):
            fault1.extendPolylineOnto( polyline0 , 0 )
            
        points = fault1.extendPolylineOnto( polyline1 , 0 )
        self.assertIsNone( points )

        points = fault1.extendPolylineOnto( polyline2 , 0)
        self.assertEqual( points , [(1,2) , (1,1)])

        points = fault1.extendPolylineOnto( polyline3 , 0)
        self.assertIsNone( points )
Example #7
0
 def joinFaults(self , fault1 , fault2):
     if not fault1.intersectsFault( fault2 , self.getK()):
         layer = self.getGeoLayer()
         try:
             layer.addIJBarrier( Fault.joinFaults( fault1 , fault2 , self.getK()) )
         except ValueError:
             print "Failed to join faults %s and %s" % (fault1.getName() , fault2.getName())
             raise ValueError("")
Example #8
0
 def joinFaults(self, fault1, fault2):
     if not fault1.intersectsFault(fault2, self.getK()):
         layer = self.getGeoLayer()
         try:
             layer.addIJBarrier(
                 Fault.joinFaults(fault1, fault2, self.getK()))
         except ValueError:
             print "Failed to join faults %s and %s" % (fault1.getName(),
                                                        fault2.getName())
             raise ValueError("")
Example #9
0
    def test_stepped(self):
        grid = EclGrid.createRectangular( (6,1,4) , (1,1,1))
        f = Fault(grid , "F")
        f.addRecord(4,4,0,0,0,1,"X")
        f.addRecord(2,2,0,0,1,1,"Z")
        f.addRecord(1,1,0,0,2,3,"X")
        
        block_kw = EclKW("FAULTBLK" , grid.getGlobalSize() , EclDataType.ECL_INT)
        block_kw.assign(1)
        block_kw[5] = 2
        block_kw[11] = 2
        block_kw[14:18] = 2
        block_kw[14:18] = 2
        block_kw[20:23] = 2
        
        layer0 = FaultBlockLayer( grid , 0 )
        layer0.scanKeyword( block_kw )
        layer0.addFaultBarrier( f )
        self.assertTrue( layer0.cellContact((0,0) , (1,0)))
        self.assertFalse( layer0.cellContact((4,0) , (5,0)))

        layer1 = FaultBlockLayer( grid , 1 )
        layer1.scanKeyword( block_kw )
        layer1.addFaultBarrier( f )
        self.assertTrue( layer1.cellContact((0,0) , (1,0)))
        self.assertFalse( layer1.cellContact((4,0) , (5,0)))

        layer2 = FaultBlockLayer( grid , 2 )
        layer2.scanKeyword( block_kw )
        layer2.addFaultBarrier( f )
        self.assertTrue( layer2.cellContact((0,0) , (1,0)))
        self.assertFalse( layer2.cellContact((1,0) , (2,0)))

        layer3 = FaultBlockLayer( grid , 3 )
        layer3.scanKeyword( block_kw )
        layer3.addFaultBarrier( f )
        self.assertTrue( layer3.cellContact((0,0) , (1,0)))
        self.assertFalse( layer3.cellContact((1,0) , (2,0)))
Example #10
0
 def test_PolylineIJ(self):
     nx = 10
     ny = 10
     nz = 10
     grid = EclGrid.create_rectangular( (nx,ny,nz) , (0.1,0.1,0.1))
     f = Fault(grid , "F")
     f.addRecord(0 , 1 , 0 , 0 , 0,0 , "Y-")
     f.addRecord(2 , 2 , 0 , 1 , 0,0 , "X-")
     f.addRecord(2 , 2 , 1 , 1 , 0,0 , "Y")
     
     pl = f.getIJPolyline( 0 )
     self.assertEqual(pl , [(0,0) , (2,0) , (2,2) , (3,2)])
Example #11
0
 def test_PolylineIJ(self):
     nx = 10
     ny = 10
     nz = 10
     grid = EclGrid.createRectangular( (nx,ny,nz) , (0.1,0.1,0.1))
     f = Fault(grid , "F")
     f.addRecord(0 , 1 , 0 , 0 , 0,0 , "Y-")
     f.addRecord(2 , 2 , 0 , 1 , 0,0 , "X-")
     f.addRecord(2 , 2 , 1 , 1 , 0,0 , "Y")
     
     pl = f.getIJPolyline( 0 )
     self.assertEqual(pl , [(0,0) , (2,0) , (2,2) , (3,2)])
Example #12
0
    def test_stepped(self):
        grid = EclGrid.create_rectangular((6, 1, 4), (1, 1, 1))
        f = Fault(grid, "F")
        f.addRecord(4, 4, 0, 0, 0, 1, "X")
        f.addRecord(2, 2, 0, 0, 1, 1, "Z")
        f.addRecord(1, 1, 0, 0, 2, 3, "X")

        block_kw = EclKW.create("FAULTBLK", grid.getGlobalSize(),
                                EclTypeEnum.ECL_INT_TYPE)
        block_kw.assign(1)
        block_kw[5] = 2
        block_kw[11] = 2
        block_kw[14:18] = 2
        block_kw[14:18] = 2
        block_kw[20:23] = 2

        layer0 = FaultBlockLayer(grid, 0)
        layer0.scanKeyword(block_kw)
        layer0.addFaultBarrier(f)
        self.assertTrue(layer0.cellContact((0, 0), (1, 0)))
        self.assertFalse(layer0.cellContact((4, 0), (5, 0)))

        layer1 = FaultBlockLayer(grid, 1)
        layer1.scanKeyword(block_kw)
        layer1.addFaultBarrier(f)
        self.assertTrue(layer1.cellContact((0, 0), (1, 0)))
        self.assertFalse(layer1.cellContact((4, 0), (5, 0)))

        layer2 = FaultBlockLayer(grid, 2)
        layer2.scanKeyword(block_kw)
        layer2.addFaultBarrier(f)
        self.assertTrue(layer2.cellContact((0, 0), (1, 0)))
        self.assertFalse(layer2.cellContact((1, 0), (2, 0)))

        layer3 = FaultBlockLayer(grid, 3)
        layer3.scanKeyword(block_kw)
        layer3.addFaultBarrier(f)
        self.assertTrue(layer3.cellContact((0, 0), (1, 0)))
        self.assertFalse(layer3.cellContact((1, 0), (2, 0)))
Example #13
0
 def test_fault(self):
     f = Fault(self.grid , "NAME")
 
     with self.assertRaises(ValueError):
         # Invalid face
         f.addRecord( 10 , 10 , 11 , 11 , 1 , 43 , "F")
         
 
     with self.assertRaises(ValueError):
         # Invalid coordinates
         f.addRecord( -1 , 10 , 11 , 11 , 1 , 43 , "X")
 
     with self.assertRaises(ValueError):
         # Invalid coordinates
         f.addRecord( 10000 , 10 , 11 , 11 , 1 , 43 , "X")
 
     with self.assertRaises(ValueError):
         # Invalid coordinates
         f.addRecord( 10 , 9 , 11 , 11 , 1 , 43 , "X")
 
 
     with self.assertRaises(ValueError):
         # Invalid coordinates
         f.addRecord( 10 , 9 , 11 , 11 , 1 , 43 , "X")
 
     with self.assertRaises(ValueError):
         # Invalid coordinates/face combination
         f.addRecord( 10 , 11 , 11 , 11 , 1 , 43 , "X")
 
     with self.assertRaises(ValueError):
         # Invalid coordinates/face combination
         f.addRecord( 10 , 11 , 11 , 12 , 1 , 43 , "Y")
 
     f.addRecord(10 , 10 , 0 , 10 , 1 , 10 , "X")
Example #14
0
    def test_contact(self):
        grid = EclGrid.createRectangular( (100,100,10) , (1,1,1))

        #    Fault1                    Fault4
        #      |                         |
        #      |                         |
        #      |                         |
        #      |   ----------------------+--  Fault2       
        #      |                         |
        #      |                         |
        #
        #          -------- Fault3
        #

        fault1 = Fault(grid , "Fault1")
        fault2 = Fault(grid , "Fault2")
        fault3 = Fault(grid , "Fault3")
        fault4 = Fault(grid , "Fault4")

        fault1.addRecord(1 , 1 , 10 , grid.getNY() - 1 , 0 , 0 , "X")
        fault2.addRecord(5 , 30 , 15 , 15 , 0 , 0 , "Y")
        fault3.addRecord(2 , 10 , 9 , 9 , 0 , 0 , "Y")
        fault4.addRecord(20 , 20 , 10 , grid.getNY() - 1 , 0 , 0 , "X")

        #self.assertFalse( fault1.intersectsFault(fault2 , 0) )
        #self.assertFalse( fault2.intersectsFault(fault1 , 0) )
        
        #self.assertTrue( fault2.intersectsFault(fault4 , 0) )        
        #self.assertTrue( fault4.intersectsFault(fault2 , 0) )

        self.assertTrue( fault1.intersectsFault(fault1 , 0) )        
Example #15
0
    def test_join_faults(self):
        grid = EclGrid.createRectangular( (100,100,10) , (1,1,1))

        #    Fault1                    Fault4
        #      |                         |
        #      |                         |
        #      |                         |
        #      |   -------  Fault2       |
        #      |                         |
        #      |                         |
        #
        #          -------- Fault3
        #

        fault1 = Fault(grid , "Fault1")
        fault2 = Fault(grid , "Fault2")
        fault3 = Fault(grid , "Fault3")
        fault4 = Fault(grid , "Fault4")

        fault1.addRecord(1 , 1 , 10 , grid.getNY() - 1 , 0 , 0 , "X")
        fault2.addRecord(5 , 10 , 15 , 15 , 0 , 0 , "Y")
        fault3.addRecord(5 , 10 , 5 , 5 , 0 , 0 , "Y")
        fault4.addRecord(20 , 20 , 10 , grid.getNY() - 1 , 0 , 0 , "X")

        rays = fault1.getEndRays(0)
        self.assertEqual( rays[0] , [(2,10) , (0,-1)])
        self.assertEqual( rays[1] , [(2,100) , (0,1)])
        
        extra = Fault.joinFaults( fault1 , fault3 , 0)
        self.assertEqual( extra , [(2,10) , (2,6) , (5,6)] )
Example #16
0
    def test_intersect_intRays(self):
        p1 = (0,0)
        dir1 = (1,0)
        p2 = (0,0)
        dir2 = (0,1)

        line = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual( line , [] )
        
        # Opposite direction
        p3 = (-1,0)
        dir3 = (-1,0)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p3,dir3))

        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p3,dir3),(p1,dir1))

        # Parallell with offset
        p4 = (0,1)
        dir4 = (1,0)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p4,dir4))

        p5 = (0,1)
        dir5 = (-1,0)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p5,dir5))

        p6 = (1,1)
        dir6 = (1,0)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p6,dir6))

        p2 = (-1,0)
        dir2 = (-1,0)
        join = Fault.intersectFaultRays(( p2,dir1),(p1,dir2))
        self.assertEqual( join , [p2 , p1])

        join = Fault.intersectFaultRays(( p1,dir3),(p3,dir1))
        self.assertEqual( join , [p1 , p3])
        
        p2 = (1,0)
        dir2 = (1,0)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2))
        self.assertEqual( join , [p1 , p2])

        # Orthogonal
        p2 = (1,1)
        dir2 = (0,1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
            
        p2 = (0,1)
        dir2 = (0,1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (-1,0)
        dir2 = (0,1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (-1,1)
        dir2 = (0,1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (-1,1)
        dir2 = (0,-1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (3,-1)
        dir2 = (0,-1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (1,-1)
        dir2 = (0,1)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual(join , [p1 , (1,0) , p2])

        p2 = (1,1)
        dir2 = (0,-1)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual(join , [p1 , (1,0) , p2])

        p2 = (0,3)
        dir2 = (0,-1)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual(join , [p1 , p2])

        p2 = (3,0)
        dir2 = (0,-1)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual(join , [p1 , p2])
Example #17
0
    def test_intersect_intRays(self):
        p1 = (0,0)
        dir1 = (1,0)
        p2 = (0,0)
        dir2 = (0,1)

        line = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual( line , [] )
        
        # Opposite direction
        p3 = (-1,0)
        dir3 = (-1,0)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p3,dir3))

        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p3,dir3),(p1,dir1))

        # Parallell with offset
        p4 = (0,1)
        dir4 = (1,0)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p4,dir4))

        p5 = (0,1)
        dir5 = (-1,0)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p5,dir5))

        p6 = (1,1)
        dir6 = (1,0)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p6,dir6))

        p2 = (-1,0)
        dir2 = (-1,0)
        join = Fault.intersectFaultRays(( p2,dir1),(p1,dir2))
        self.assertEqual( join , [p2 , p1])

        join = Fault.intersectFaultRays(( p1,dir3),(p3,dir1))
        self.assertEqual( join , [p1 , p3])
        
        p2 = (1,0)
        dir2 = (1,0)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2))
        self.assertEqual( join , [p1 , p2])

        # Orthogonal
        p2 = (1,1)
        dir2 = (0,1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
            
        p2 = (0,1)
        dir2 = (0,1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (-1,0)
        dir2 = (0,1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (-1,1)
        dir2 = (0,1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (-1,1)
        dir2 = (0,-1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (3,-1)
        dir2 = (0,-1)
        with self.assertRaises(ValueError):
            Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))

        p2 = (1,-1)
        dir2 = (0,1)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual(join , [p1 , (1,0) , p2])

        p2 = (1,1)
        dir2 = (0,-1)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual(join , [p1 , (1,0) , p2])

        p2 = (0,3)
        dir2 = (0,-1)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual(join , [p1 , p2])

        p2 = (3,0)
        dir2 = (0,-1)
        join = Fault.intersectFaultRays(( p1,dir1),(p2,dir2 ))
        self.assertEqual(join , [p1 , p2])
Example #18
0
    def test_connectWithPolyline(self):
        grid = EclGrid.create_rectangular( (4,4,1) , (1 , 1 , 1))

        
        #  o   o   o   o   o 
        #                   
        #  o   o   o   o   o
        #                   
        #  o---o---o---o---o
        #                   
        #  o   o   o   o   o
        #          |        
        #  o   o   o   o   o

        fault1 = Fault(grid , "Fault1")
        fault1.addRecord(0 , 3 , 1 , 1 , 0 , 0 , "Y")

        fault2 = Fault(grid , "Fault2")
        fault2.addRecord(1 , 1 , 0 , 0 , 0 , 0 , "X")

        fault3 = Fault(grid , "Fault3")
        fault3.addRecord(1 , 1 , 0 , 2 , 0 , 0 , "X")
        
        self.assertIsNone( fault3.connect( fault1 , 0 ))
        
        
        intersect = fault2.connect( fault1 , 0 )
        self.assertEqual( len(intersect) , 2 )
        p1 = intersect[0]
        p2 = intersect[1]
        
        self.assertEqual( p1 , (2,1))
        self.assertEqual( p2 , (2,2))
Example #19
0
    def test_splitLine2(self):
        grid = self.loadGrid()
        f = Fault(grid, "DF41_C")

        #                         179   180   181
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #                             |
        #  78                         |
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #                             |
        #  77                         |
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #                             |
        #  76                         |
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #                             |
        #  75                         |
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #
        #  74
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #
        #  73
        #           o     o     o     o-----o     o     o     o     o     o     o     o     o     o
        #                                   |
        #  72                               |
        #           o     o     o     o-----o     o     o     o     o     o     o     o     o     o
        #
        #  71
        #           o     o     o     o-----o     o     o     o     o     o     o     o     o     o
        #                                   |
        #  70                               |
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #                                   |
        #  69                               |
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #
        #  68
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #
        #  67
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #
        #  66
        #           o     o     o     o     o     o     o     o     o     o     o     o     o     o
        #                                   |
        #  65                               |
        #           o     o     o     o-----o     o     o     o     o     o     o     o     o     o

        f.addRecord(179, 179, 77, 78, 0, 42, 'X')
        f.addRecord(179, 179, 75, 76, 0, 41, 'X')
        f.addRecord(180, 180, 72, 72, 0, 41, 'X')
        f.addRecord(180, 180, 72, 72, 0, 41, 'Y')
        f.addRecord(180, 180, 72, 72, 0, 41, 'Y-')

        f.addRecord(180, 180, 70, 70, 0, 42, 'Y')
        f.addRecord(180, 180, 69, 70, 0, 42, 'X')
        f.addRecord(180, 180, 65, 65, 0, 42, 'X')
        f.addRecord(180, 180, 65, 65, 0, 42, 'Y-')

        ij_polyline = f.getIJPolyline(19)
        ij_list = [(180, 79), (180, 77), (180, 75), (180, 73), (181, 73),
                   (181, 72), (180, 72), (180, 71), (181, 71), (181, 69),
                   (181, 66), (181, 65), (180, 65)]

        self.assertEqual(ij_polyline, ij_list)
Example #20
0
    def test_connectWithPolyline(self):
        grid = EclGrid.createRectangular( (4,4,1) , (1 , 1 , 1))

        
        #  o   o   o   o   o 
        #                   
        #  o   o   o   o   o
        #                   
        #  o---o---o---o---o
        #                   
        #  o   o   o   o   o
        #          |        
        #  o   o   o   o   o

        fault1 = Fault(grid , "Fault1")
        fault1.addRecord(0 , 3 , 1 , 1 , 0 , 0 , "Y")

        fault2 = Fault(grid , "Fault2")
        fault2.addRecord(1 , 1 , 0 , 0 , 0 , 0 , "X")

        fault3 = Fault(grid , "Fault3")
        fault3.addRecord(1 , 1 , 0 , 2 , 0 , 0 , "X")
        
        self.assertIsNone( fault3.connect( fault1 , 0 ))
        
        
        intersect = fault2.connect( fault1 , 0 )
        self.assertEqual( len(intersect) , 2 )
        p1 = intersect[0]
        p2 = intersect[1]
        
        self.assertEqual( p1 , (2,1))
        self.assertEqual( p2 , (2,2))
Example #21
0
    def test_contact(self):
        grid = EclGrid.create_rectangular( (100,100,10) , (1,1,1))

        #    Fault1                    Fault4
        #      |                         |
        #      |                         |
        #      |                         |
        #      |   ----------------------+--  Fault2       
        #      |                         |
        #      |                         |
        #
        #          -------- Fault3
        #

        fault1 = Fault(grid , "Fault1")
        fault2 = Fault(grid , "Fault2")
        fault3 = Fault(grid , "Fault3")
        fault4 = Fault(grid , "Fault4")

        fault1.addRecord(1 , 1 , 10 , grid.getNY() - 1 , 0 , 0 , "X")
        fault2.addRecord(5 , 30 , 15 , 15 , 0 , 0 , "Y")
        fault3.addRecord(2 , 10 , 9 , 9 , 0 , 0 , "Y")
        fault4.addRecord(20 , 20 , 10 , grid.getNY() - 1 , 0 , 0 , "X")

        #self.assertFalse( fault1.intersectsFault(fault2 , 0) )
        #self.assertFalse( fault2.intersectsFault(fault1 , 0) )
        
        #self.assertTrue( fault2.intersectsFault(fault4 , 0) )        
        #self.assertTrue( fault4.intersectsFault(fault2 , 0) )

        self.assertTrue( fault1.intersectsFault(fault1 , 0) )        
Example #22
0
    def test_join_faults(self):
        grid = EclGrid.create_rectangular( (100,100,10) , (1,1,1))

        #    Fault1                    Fault4
        #      |                         |
        #      |                         |
        #      |                         |
        #      |   -------  Fault2       |
        #      |                         |
        #      |                         |
        #
        #          -------- Fault3
        #

        fault1 = Fault(grid , "Fault1")
        fault2 = Fault(grid , "Fault2")
        fault3 = Fault(grid , "Fault3")
        fault4 = Fault(grid , "Fault4")

        fault1.addRecord(1 , 1 , 10 , grid.getNY() - 1 , 0 , 0 , "X")
        fault2.addRecord(5 , 10 , 15 , 15 , 0 , 0 , "Y")
        fault3.addRecord(5 , 10 , 5 , 5 , 0 , 0 , "Y")
        fault4.addRecord(20 , 20 , 10 , grid.getNY() - 1 , 0 , 0 , "X")

        rays = fault1.getEndRays(0)
        self.assertEqual( rays[0] , [(2,10) , (0,-1)])
        self.assertEqual( rays[1] , [(2,100) , (0,1)])
        
        extra = Fault.joinFaults( fault1 , fault3 , 0)
        self.assertEqual( extra , [(2,10) , (2,6) , (5,6)] )
Example #23
0
    def test_polyline_intersection(self):
        grid = EclGrid.createRectangular( (100,100,10) , (0.25 , 0.25 , 1))

        #    Fault1                    Fault4
        #      |                         |
        #      |                         |
        #      |                         |
        #      |   -------  Fault2       |
        #      |                         |
        #      |                         |
        #                              (5 , 2.50) 
        #          -------- Fault3
        #

        fault1 = Fault(grid , "Fault1")
        fault2 = Fault(grid , "Fault2")
        fault3 = Fault(grid , "Fault3")
        fault4 = Fault(grid , "Fault4")

        fault1.addRecord(1 , 1 , 10 , grid.getNY() - 1 , 0 , 0 , "X")
        fault2.addRecord(5 , 10 , 15 , 15 , 0 , 0 , "Y")
        fault3.addRecord(5 , 10 , 5 , 5 , 0 , 0 , "Y")
        fault4.addRecord(20 , 20 , 10 , grid.getNY() - 1 , 0 , 0 , "X")

        
        polyline = Polyline( init_points = [(4 , 4) , (8,4)])
        self.assertTrue( fault4.intersectsPolyline( polyline , 0))

        cpolyline = CPolyline( init_points = [(4 , 4) , (8,4)])
        self.assertTrue( fault4.intersectsPolyline( cpolyline , 0))
        
        polyline = Polyline( init_points = [(8 , 4) , (16,4)])
        self.assertFalse( fault4.intersectsPolyline( polyline , 0))

        cpolyline = CPolyline( init_points = [(8 , 4) , (16,4)])
        self.assertFalse( fault4.intersectsPolyline( cpolyline , 0))
Example #24
0
 def test_empty_fault( self ):
     f = Fault(self.grid , "NAME")
     self.assertEqual("NAME" , f.getName())
     
     with self.assertRaises(Exception):
         g = f["Key"]
Example #25
0
    def test_splitLine2(self):
        grid = self.loadGrid( )
        f = Fault(grid , "DF41_C")

#                         179   180   181
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#                             |                                                            
#  78                         |                                                   
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#                             | 
#  77                         |
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#                             | 
#  76                         |
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#                             |
#  75                         |
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#            
#  74        
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#            
#  73        
#           o     o     o     o-----o     o     o     o     o     o     o     o     o     o
#                                   |
#  72                               |
#           o     o     o     o-----o     o     o     o     o     o     o     o     o     o
#            
#  71        
#           o     o     o     o-----o     o     o     o     o     o     o     o     o     o
#                                   |
#  70                               |
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#                                   |
#  69                               |
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#            
#  68        
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#                                   
#  67        
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#            
#  66        
#           o     o     o     o     o     o     o     o     o     o     o     o     o     o
#                                   |   
#  65                               |
#           o     o     o     o-----o     o     o     o     o     o     o     o     o     o


        f.addRecord( 179,  179 ,    77  ,  78  ,     0  , 42 ,   'X'  )
        f.addRecord( 179,  179 ,    75  ,  76  ,     0  , 41 ,   'X'  )
        f.addRecord( 180,  180 ,    72  ,  72  ,     0  , 41 ,   'X'  )
        f.addRecord( 180,  180 ,    72  ,  72  ,     0  , 41 ,   'Y'  )
        f.addRecord( 180,  180 ,    72  ,  72  ,     0  , 41 ,   'Y-' )
                                                     
        f.addRecord( 180,  180 ,    70  ,  70  ,     0  , 42 ,   'Y'  )
        f.addRecord( 180,  180 ,    69  ,  70  ,     0  , 42 ,   'X'  )
        f.addRecord( 180,  180 ,    65  ,  65  ,     0  , 42 ,   'X'  )
        f.addRecord( 180,  180 ,    65  ,  65  ,     0  , 42 ,   'Y-' )
        
        
        ij_polyline = f.getIJPolyline( 19 )
        ij_list = [(180, 79), (180, 77), (180, 75),
                   (180, 73), (181, 73), (181, 72), (180, 72),
                   (180, 71), (181, 71), (181, 69),
                   (181, 66), (181, 65), (180, 65)]

        self.assertEqual(ij_polyline , ij_list)
Example #26
0
    def test_connect_faults(self):
        grid = EclGrid.createRectangular( (100,100,10) , (1,1,1))

        #    Fault1                    Fault4
        #      |                         |
        #      |                         |
        #      |                         |
        #      |   -------  Fault2       |
        #      |                         |
        #      |                         |
        #
        #          -------- Fault3
        #

        fault1 = Fault(grid , "Fault1")
        fault2 = Fault(grid , "Fault2")
        fault3 = Fault(grid , "Fault3")
        fault4 = Fault(grid , "Fault4")

        fault1.addRecord(1 , 1 , 10 , grid.getNY() - 1 , 0 , 0 , "X")
        fault2.addRecord(5 , 10 , 15 , 15 , 0 , 0 , "Y")
        fault3.addRecord(5 , 10 , 5 , 5 , 0 , 0 , "Y")
        fault4.addRecord(20 , 20 , 10 , grid.getNY() - 1 , 0 , 0 , "X")

        
        for other_fault in [fault2 , fault3,fault4]:
            with self.assertRaises(ValueError):
                fault1.extendToFault( other_fault ,0)

        with self.assertRaises(ValueError):
            fault2.extendToFault( fault3 , 0)

        for other_fault in [fault1 , fault2,fault4]:
            with self.assertRaises(ValueError):
                fault3.extendToFault( other_fault ,0 )

        for other_fault in [fault1 , fault2,fault3]:
            with self.assertRaises(ValueError):
                fault4.extendToFault( other_fault , 0)

        ext21 = fault2.extendToFault( fault1 , 0)
        self.assertEqual(len(ext21) , 2)
        p0 = ext21[0]
        p1 = ext21[1]
        self.assertEqual(p0 , (5 , 16))
        self.assertEqual(p1 , (2 , 16))
        
    
        ext24 = fault2.extendToFault( fault4,0 )
        self.assertEqual(len(ext24) , 2)
        p0 = ext24[0]
        p1 = ext24[1]
        self.assertEqual(p0 , (11 , 16))
        self.assertEqual(p1 , (21 , 16))
Example #27
0
 def test_fault(self):
     f = Fault(self.grid , "NAME")
 
     with self.assertRaises(ValueError):
         # Invalid face
         f.addRecord( 10 , 10 , 11 , 11 , 1 , 43 , "F")
         
 
     with self.assertRaises(ValueError):
         # Invalid coordinates
         f.addRecord( -1 , 10 , 11 , 11 , 1 , 43 , "X")
 
     with self.assertRaises(ValueError):
         # Invalid coordinates
         f.addRecord( 10000 , 10 , 11 , 11 , 1 , 43 , "X")
 
     with self.assertRaises(ValueError):
         # Invalid coordinates
         f.addRecord( 10 , 9 , 11 , 11 , 1 , 43 , "X")
 
 
     with self.assertRaises(ValueError):
         # Invalid coordinates
         f.addRecord( 10 , 9 , 11 , 11 , 1 , 43 , "X")
 
     with self.assertRaises(ValueError):
         # Invalid coordinates/face combination
         f.addRecord( 10 , 11 , 11 , 11 , 1 , 43 , "X")
 
     with self.assertRaises(ValueError):
         # Invalid coordinates/face combination
         f.addRecord( 10 , 11 , 11 , 12 , 1 , 43 , "Y")
 
     f.addRecord(10 , 10 , 0 , 10 , 1 , 10 , "X")
Example #28
0
    def test_connect_faults(self):
        grid = EclGrid.create_rectangular( (100,100,10) , (1,1,1))

        #    Fault1                    Fault4
        #      |                         |
        #      |                         |
        #      |                         |
        #      |   -------  Fault2       |
        #      |                         |
        #      |                         |
        #
        #          -------- Fault3
        #

        fault1 = Fault(grid , "Fault1")
        fault2 = Fault(grid , "Fault2")
        fault3 = Fault(grid , "Fault3")
        fault4 = Fault(grid , "Fault4")

        fault1.addRecord(1 , 1 , 10 , grid.getNY() - 1 , 0 , 0 , "X")
        fault2.addRecord(5 , 10 , 15 , 15 , 0 , 0 , "Y")
        fault3.addRecord(5 , 10 , 5 , 5 , 0 , 0 , "Y")
        fault4.addRecord(20 , 20 , 10 , grid.getNY() - 1 , 0 , 0 , "X")

        
        for other_fault in [fault2 , fault3,fault4]:
            with self.assertRaises(ValueError):
                fault1.extendToFault( other_fault ,0)

        with self.assertRaises(ValueError):
            fault2.extendToFault( fault3 , 0)

        for other_fault in [fault1 , fault2,fault4]:
            with self.assertRaises(ValueError):
                fault3.extendToFault( other_fault ,0 )

        for other_fault in [fault1 , fault2,fault3]:
            with self.assertRaises(ValueError):
                fault4.extendToFault( other_fault , 0)

        ext21 = fault2.extendToFault( fault1 , 0)
        self.assertEqual(len(ext21) , 2)
        p0 = ext21[0]
        p1 = ext21[1]
        self.assertEqual(p0 , (5 , 16))
        self.assertEqual(p1 , (2 , 16))
        
    
        ext24 = fault2.extendToFault( fault4,0 )
        self.assertEqual(len(ext24) , 2)
        p0 = ext24[0]
        p1 = ext24[1]
        self.assertEqual(p0 , (11 , 16))
        self.assertEqual(p1 , (21 , 16))
Example #29
0
 def test_empty_fault( self ):
     f = Fault(self.grid , "NAME")
     self.assertEqual("NAME" , f.getName())
     
     with self.assertRaises(Exception):
         g = f["Key"]
Example #30
0
    def test_polyline_intersection(self):
        grid = EclGrid.create_rectangular( (100,100,10) , (0.25 , 0.25 , 1))

        #    Fault1                    Fault4
        #      |                         |
        #      |                         |
        #      |                         |
        #      |   -------  Fault2       |
        #      |                         |
        #      |                         |
        #                              (5 , 2.50) 
        #          -------- Fault3
        #

        fault1 = Fault(grid , "Fault1")
        fault2 = Fault(grid , "Fault2")
        fault3 = Fault(grid , "Fault3")
        fault4 = Fault(grid , "Fault4")

        fault1.addRecord(1 , 1 , 10 , grid.getNY() - 1 , 0 , 0 , "X")
        fault2.addRecord(5 , 10 , 15 , 15 , 0 , 0 , "Y")
        fault3.addRecord(5 , 10 , 5 , 5 , 0 , 0 , "Y")
        fault4.addRecord(20 , 20 , 10 , grid.getNY() - 1 , 0 , 0 , "X")

        
        polyline = Polyline( init_points = [(4 , 4) , (8,4)])
        self.assertTrue( fault4.intersectsPolyline( polyline , 0))

        cpolyline = CPolyline( init_points = [(4 , 4) , (8,4)])
        self.assertTrue( fault4.intersectsPolyline( cpolyline , 0))
        
        polyline = Polyline( init_points = [(8 , 4) , (16,4)])
        self.assertFalse( fault4.intersectsPolyline( polyline , 0))

        cpolyline = CPolyline( init_points = [(8 , 4) , (16,4)])
        self.assertFalse( fault4.intersectsPolyline( cpolyline , 0))