/[escript]/trunk/downunder/test/python/run_seismic.py
ViewVC logotype

Diff of /trunk/downunder/test/python/run_seismic.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4777 by jfenwick, Thu Feb 6 06:12:20 2014 UTC revision 4778 by sshaw, Thu Mar 20 00:41:58 2014 UTC
# Line 48  except KeyError: Line 48  except KeyError:
48    
49    
50  class TestSeismicTools(unittest.TestCase):  class TestSeismicTools(unittest.TestCase):
51       def test_segy_writer1(self):      def test_segy_writer1(self):
52          sw= SimpleSEGYWriter(receiver_group=[0.,1.,2.], source=1., sampling_interval=10*U.msec, text="testing")          sw= SimpleSEGYWriter(receiver_group=[0.,1.,2.], source=1., sampling_interval=10*U.msec, text="testing")
53          self.assertRaises(ValueError, sw.addRecord, [1])          self.assertRaises(ValueError, sw.addRecord, [1])
54          for i in range(713):          for i in range(713):
55             # Create some random data.             # Create some random data.
56             data = np.random.ranf(3)             data = np.random.ranf(3)
57             sw.addRecord(data)             sw.addRecord(data)
58          sw.write(os.path.join(WORKDIR,"test1.sgy"))          try:
59                sw.write(os.path.join(WORKDIR,"test1.sgy"))
60            except Exception:
61                raise unittest.SkipTest("obspy may not be installed")
62                    
63       def test_segy_writer2(self):      def test_segy_writer2(self):
64          sw= SimpleSEGYWriter(receiver_group=[(0.,0.),(1.,-1.),(2.,-2)], source=(3,3), sampling_interval=10*U.msec, text="testing")          sw= SimpleSEGYWriter(receiver_group=[(0.,0.),(1.,-1.),(2.,-2)], source=(3,3), sampling_interval=10*U.msec, text="testing")
65          self.assertRaises(ValueError, sw.addRecord, [1])          self.assertRaises(ValueError, sw.addRecord, [1])
66          for i in range(411):          for i in range(411):
67             # Create some random data.             # Create some random data.
68             data = np.random.ranf(3)             data = np.random.ranf(3)
69             sw.addRecord(data)             sw.addRecord(data)
70          sw.write(os.path.join(WORKDIR,"test2.sgy"))          try:
71                sw.write(os.path.join(WORKDIR,"test2.sgy"))
72            except Exception:
73                raise unittest.SkipTest("obspy may not be installed")
74                    
75       def test_ricker(self):      def test_ricker(self):
76             rw=Ricker(f_dom=40, t_dom=None)          rw=Ricker(f_dom=40, t_dom=None)
             
            self.assertTrue(abs(rw.getValue(0)) < 1e-6)  
            self.assertAlmostEquals(rw.getValue(rw.getCenter()), 1. )  
            self.assertTrue(abs(rw.getAcceleration(0.)) < 1.)  
      def test_wavebase(self):  
           class TestWave(WaveBase):  
                 def _getAcceleration(self, t, u):  
                      return -sin(t)  
           tw=TestWave(dt=0.001, u0=0., v0=1., t0=0.)  
           self.assertAlmostEquals(0.001, tw.getTimeStepSize())  
             
           t_ref=0.005  
           t, u=tw.update(t_ref)  
           self.assertTrue(abs(t-t_ref) < 1e-9)  
           self.assertTrue(abs(u-sin(t_ref)) < 1e-6)  
             
           t_ref=0.007  
           t, u=tw.update(t_ref)  
           self.assertTrue(abs(t-t_ref) < 1e-9)  
           self.assertTrue(abs(u-sin(t_ref)) < 1e-6)  
             
           t_ref=0.0071  
           t, u=tw.update(t_ref)  
           self.assertTrue(abs(t-t_ref) < 1e-9)  
           self.assertTrue(abs(u-sin(t_ref)) < 1e-6)  
             
           t_ref=0.01  
           t, u=tw.update(t_ref)  
           self.assertTrue(abs(t-t_ref) < 1e-9)  
           self.assertTrue(abs(u-sin(t_ref)) < 1e-6)  
             
           t_ref=0.02  
           t, u=tw.update(t_ref)  
           self.assertTrue(abs(t-t_ref) < 1e-9)  
           self.assertTrue(abs(u-sin(t_ref)) < 1e-6)  
   
           t_ref=0.5  
           t, u=tw.update(t_ref)  
           self.assertTrue(abs(t-t_ref) < 1e-9)  
           self.assertTrue(abs(u-sin(t_ref)) < 1e-6)  
77    
78            self.assertRaises(ValueError, tw.update, t_ref-1)          self.assertTrue(abs(rw.getValue(0)) < 1e-6)
79       def test_sonicwave2D(self):          self.assertAlmostEquals(rw.getValue(rw.getCenter()), 1. )
80                    self.assertTrue(abs(rw.getAcceleration(0.)) < 1.)
81           from esys.finley import Rectangle  
82                def test_wavebase(self):
83           domain=Rectangle(5,5, diracPoints=[(0.5,1.)], diracTags=['sss'])          class TestWave(WaveBase):
84           v_p=1.              def _getAcceleration(self, t, u):
85                            return -sin(t)
86           sw=SonicWave( domain, v_p, Ricker(0.5), source_tag='sss')          tw=TestWave(dt=0.001, u0=0., v0=1., t0=0.)
87           u=sw.update(1.)[1]          self.assertAlmostEquals(0.001, tw.getTimeStepSize())
88           self.assertTrue(isinstance(u,Data))  
89           self.assertEquals(u.getShape(), ())          t_ref=0.005
90           self.assertEquals(u.getFunctionSpace(), Solution(domain))          t, u=tw.update(t_ref)
91                    self.assertTrue(abs(t-t_ref) < 1e-9)
92       def test_sonicwave3D(self):          self.assertTrue(abs(u-sin(t_ref)) < 1e-6)
93            
94           from esys.finley import Brick          t_ref=0.007
95                    t, u=tw.update(t_ref)
96           domain=Brick(5,5,5, diracPoints=[(0.5,0.5,1.)], diracTags=['sss'])          self.assertTrue(abs(t-t_ref) < 1e-9)
97           v_p=1.          self.assertTrue(abs(u-sin(t_ref)) < 1e-6)
98    
99            t_ref=0.0071
100            t, u=tw.update(t_ref)
101            self.assertTrue(abs(t-t_ref) < 1e-9)
102            self.assertTrue(abs(u-sin(t_ref)) < 1e-6)
103    
104            t_ref=0.01
105            t, u=tw.update(t_ref)
106            self.assertTrue(abs(t-t_ref) < 1e-9)
107            self.assertTrue(abs(u-sin(t_ref)) < 1e-6)
108    
109            t_ref=0.02
110            t, u=tw.update(t_ref)
111            self.assertTrue(abs(t-t_ref) < 1e-9)
112            self.assertTrue(abs(u-sin(t_ref)) < 1e-6)
113    
114            t_ref=0.5
115            t, u=tw.update(t_ref)
116            self.assertTrue(abs(t-t_ref) < 1e-9)
117            self.assertTrue(abs(u-sin(t_ref)) < 1e-6)
118    
119            self.assertRaises(ValueError, tw.update, t_ref-1)
120    
121        def test_sonicwave2D(self):
122            from esys.finley import Rectangle
123    
124            domain=Rectangle(5,5, diracPoints=[(0.5,1.)], diracTags=['sss'])
125            v_p=1.
126    
127            sw=SonicWave( domain, v_p, Ricker(0.5), source_tag='sss')
128            u=sw.update(1.)[1]
129            self.assertTrue(isinstance(u,Data))
130            self.assertEqual(u.getShape(), ())
131            self.assertEqual(u.getFunctionSpace(), Solution(domain))
132    
133            from esys.ripley import Rectangle
134    
135            domain=Rectangle(5,5, diracPoints=[(0.5,1.)], diracTags=['sss'])
136            v_p=1.
137    
138            sw=SonicWave( domain, v_p, Ricker(0.5), source_tag='sss')
139            u=sw.update(1.)[1]
140            self.assertTrue(isinstance(u,Data))
141            self.assertEqual(u.getShape(), ())
142            self.assertEqual(u.getFunctionSpace(), Solution(domain))
143                    
144           sw=SonicWave( domain, v_p, Ricker(0.5), source_tag='sss')      def test_sonicwave3D(self):
145           u=sw.update(1.)[1]          from esys.finley import Brick
146           self.assertTrue(isinstance(u,Data))  
147           self.assertEquals(u.getShape(), ())          domain=Brick(5,5,5, diracPoints=[(0.5,0.5,1.)], diracTags=['sss'])
148           self.assertEquals(u.getFunctionSpace(), Solution(domain))          v_p=1.
149    
150            sw=SonicWave( domain, v_p, Ricker(0.5), source_tag='sss')
151            u=sw.update(1.)[1]
152            self.assertTrue(isinstance(u,Data))
153            self.assertEqual(u.getShape(), ())
154            self.assertEqual(u.getFunctionSpace(), Solution(domain))
155            
156            from esys.ripley import Brick
157    
158            domain=Brick(5,5,5, diracPoints=[(0.5,0.5,1.)], diracTags=['sss'])
159            v_p=1.
160    
161            sw=SonicWave( domain, v_p, Ricker(0.5), source_tag='sss')
162            u=sw.update(1.)[1]
163            self.assertTrue(isinstance(u,Data))
164            self.assertEqual(u.getShape(), ())
165            self.assertEqual(u.getFunctionSpace(), Solution(domain))
166                                    
167                                                                        
168  if __name__ == "__main__":  if __name__ == "__main__":

Legend:
Removed from v.4777  
changed lines
  Added in v.4778

  ViewVC Help
Powered by ViewVC 1.1.26