3333def test_FirstDerivative (par ):
3434 """Dot-test and comparison with Pylops for FirstDerivative operator
3535 """
36- np .random .seed (10 )
36+ np .random .seed (0 )
3737
3838 # 1d
3939 dD1op = dFirstDerivative (par ['nx' ], sampling = par ['dx' ],
@@ -116,14 +116,14 @@ def test_FirstDerivative(par):
116116 par ['nx' ] // 2 + 1 ))
117117 dy = dD1op * x .ravel ()
118118 y = D1op * x .compute ().ravel ()
119- assert_array_almost_equal (y .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 :- 1 , 1 : - 1 ],
120- dy .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 :- 1 , 1 : - 1 ],
119+ assert_array_almost_equal (y .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 :- 1 , :, : ],
120+ dy .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 :- 1 , :, : ],
121121 decimal = 1 )
122122
123123 # 3d - derivative on 2nd direction
124124 dD1op = dFirstDerivative (par ['nz' ] * par ['ny' ] * par ['nx' ],
125125 dims = (par ['nz' ], par ['ny' ], par ['nx' ]),
126- dir = 1 , sampling = par ['dz ' ], compute = (True , True ),
126+ dir = 1 , sampling = par ['dy ' ], compute = (True , True ),
127127 dtype = 'float32' )
128128 D1op = FirstDerivative (par ['nz' ] * par ['ny' ] * par ['nx' ],
129129 dims = (par ['nz' ], par ['ny' ], par ['nx' ]),
@@ -138,29 +138,57 @@ def test_FirstDerivative(par):
138138 (par ['ny' ] // 2 + 1 ) *
139139 (par ['nx' ] // 2 + 1 )), tol = 1e-3 )
140140
141- x = np .outer ((par ['dz' ] * np .arange (par ['nz' ])) ** 2 ,
142- np .ones ((par ['ny' ], par ['nx' ]))).reshape (par ['nz' ],
143- par ['ny' ],
144- par ['nx' ])
141+ x = np .outer (np .outer (np .ones (par ['nz' ]),
142+ par ['dy' ] * np .arange (par ['ny' ]) ** 2 ),
143+ np .ones (par ['nx' ])).reshape (par ['nz' ], par ['ny' ], par ['nx' ])
145144 x = da .from_array (x , chunks = (par ['nz' ] // 2 + 1 ,
146145 par ['ny' ] // 2 + 1 ,
147146 par ['nx' ] // 2 + 1 ))
148147 dy = dD1op * x .ravel ()
149148 y = D1op * x .compute ().ravel ()
150- assert_array_almost_equal (y .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 : - 1 , 1 :- 1 ],
151- dy .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 : - 1 , 1 :- 1 ],
149+ assert_array_almost_equal (y .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[: , 1 :- 1 , : ],
150+ dy .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[: , 1 :- 1 , : ],
152151 decimal = 1 )
153152
154153 # 3d - derivative on 3rd direction
155- # to do...
154+ dD1op = dFirstDerivative (par ['nz' ] * par ['ny' ] * par ['nx' ],
155+ dims = (par ['nz' ], par ['ny' ], par ['nx' ]),
156+ dir = 2 , sampling = par ['dx' ], compute = (True , True ),
157+ dtype = 'float32' )
158+ D1op = FirstDerivative (par ['nz' ] * par ['ny' ] * par ['nx' ],
159+ dims = (par ['nz' ], par ['ny' ], par ['nx' ]),
160+ dir = 2 , sampling = par ['dx' ], edge = False ,
161+ dtype = 'float32' )
162+ assert dottest (dD1op , par ['nz' ] * par ['ny' ] * par ['nx' ],
163+ par ['nz' ] * par ['ny' ] * par ['nx' ],
164+ chunks = ((par ['nz' ] // 2 + 1 ) *
165+ (par ['ny' ] // 2 + 1 ) *
166+ (par ['nx' ] // 2 + 1 ),
167+ (par ['nz' ] // 2 + 1 ) *
168+ (par ['ny' ] // 2 + 1 ) *
169+ (par ['nx' ] // 2 + 1 )), tol = 1e-3 )
170+
171+ x = np .outer (np .ones ((par ['nz' ], par ['ny' ])),
172+ (par ['dx' ] * np .arange (par ['nx' ])) ** 2 ).reshape (par ['nz' ],
173+ par ['ny' ],
174+ par ['nx' ])
175+ x = da .from_array (x , chunks = (par ['nz' ] // 2 + 1 ,
176+ par ['ny' ] // 2 + 1 ,
177+ par ['nx' ] // 2 + 1 ))
178+ dy = dD1op * x .ravel ()
179+ y = D1op * x .compute ().ravel ()
180+ assert_array_almost_equal (
181+ y .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[:, :, 1 :- 1 ],
182+ dy .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[:, :, 1 :- 1 ],
183+ decimal = 1 )
156184
157185
158186@pytest .mark .parametrize ("par" , [(par1 ), (par2 ), (par3 ), (par4 ),
159187 (par1e ), (par2e ), (par3e ), (par4e )])
160188def test_SecondDerivative (par ):
161189 """Dot-test and comparison with Pylops for SecondDerivative operator
162190 """
163- np .random .seed (10 )
191+ np .random .seed (0 )
164192
165193 x = par ['dx' ] * np .arange (par ['nx' ])
166194 y = par ['dy' ] * np .arange (par ['ny' ])
@@ -182,7 +210,6 @@ def test_SecondDerivative(par):
182210 y = D2op * x .compute ()
183211 assert_array_almost_equal (y [1 :- 1 ], dy [1 :- 1 ], decimal = 1 )
184212
185-
186213 # 2d - derivative on 1st direction
187214 dD2op = dSecondDerivative (par ['ny' ] * par ['nx' ],
188215 dims = (par ['ny' ], par ['nx' ]),
@@ -250,41 +277,6 @@ def test_SecondDerivative(par):
250277 par ['nx' ] // 2 + 1 ))
251278 dy = dD2op * xxx .ravel ()
252279 y = D2op * xxx .compute ().ravel ()
253- assert_array_almost_equal (y .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 :- 1 , 1 : - 1 , 1 : - 1 ],
254- dy .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 :- 1 , 1 : - 1 , 1 : - 1 ],
280+ assert_array_almost_equal (y .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 :- 1 ],
281+ dy .reshape (par ['nz' ], par ['ny' ], par ['nx' ])[1 :- 1 ],
255282 decimal = 1 )
256- """
257- # 3d - derivative on 2nd direction
258- D2op = SecondDerivative(par['nz'] * par['ny'] * par['nx'],
259- dims=(par['ny'], par['nx'], par['nz']),
260- dir=1, sampling=par['dx'],
261- edge=par['edge'], dtype='float32')
262-
263- assert dottest(D2op, par['nz'] * par['ny'] * par['nx'],
264- par['nz'] * par['ny'] * par['nx'], tol=1e-3)
265-
266- # polynomial f(x,y,z) = x^3, f_{xx}(x,y,z) = 6x
267- f = xxx**3
268- dfana = 6*xxx
269- df = D2op * f.flatten()
270- df = df.reshape(par['ny'], par['nx'], par['nz'])
271-
272- assert_array_almost_equal(df[:,1:-1,:], dfana[:,1:-1,:], decimal=1)
273-
274- # 3d - derivative on 3rd direction
275- D2op = SecondDerivative(par['nz'] * par['ny'] * par['nx'],
276- dims=(par['ny'], par['nx'], par['nz']),
277- dir=2, sampling=par['dz'],
278- edge=par['edge'], dtype='float32')
279-
280- assert dottest(D2op, par['nz'] * par['ny'] * par['nx'],
281- par['ny'] * par['nx'] * par['nz'], tol=1e-3)
282-
283- # polynomial f(x,y,z) = z^3, f_{zz}(x,y,z) = 6z
284- f = zzz**3
285- dfana = 6*zzz
286- df = D2op * f.flatten()
287- df = df.reshape(par['ny'], par['nx'], par['nz'])
288-
289- assert_array_almost_equal(df[:,:,1:-1], dfana[:,:,1:-1], decimal=1)
290- """
0 commit comments