From 7712f4369caca4dfebdb7ddd0e0e29eb18e0ea87 Mon Sep 17 00:00:00 2001 From: Francesco Picetti Date: Thu, 7 Apr 2022 18:00:15 -0700 Subject: [PATCH] Cleaned devitoseismic --- .../acoustic/acoustic_example.py | 6 +- .../devitoseismic/acoustic/wavesolver.py | 2 +- tutorials/devitoseismic/model.py | 4 +- tutorials/devitoseismic/plotting.py | 4 +- tutorials/devitoseismic/source.py | 2 +- tutorials/devitoseismic/test_seismic_utils.py | 97 ------------------- tutorials/devitoseismic/utils.py | 2 +- 7 files changed, 10 insertions(+), 107 deletions(-) delete mode 100644 tutorials/devitoseismic/test_seismic_utils.py diff --git a/tutorials/devitoseismic/acoustic/acoustic_example.py b/tutorials/devitoseismic/acoustic/acoustic_example.py index a9eaa7e..33fb55b 100644 --- a/tutorials/devitoseismic/acoustic/acoustic_example.py +++ b/tutorials/devitoseismic/acoustic/acoustic_example.py @@ -47,12 +47,12 @@ def run(shape=(50, 50, 50), spacing=(20.0, 20.0, 20.0), tn=1000.0, solver.forward(save=save, vp=2.0) if not full_run: - return summary.gflopss, summary.oi, summary.timings, [rec, u.csg_nonlinear] + return summary.gflopss, summary.oi, summary.timings, [rec, u.data] # Smooth velocity initial_vp = Function(name='v0', grid=solver.model.grid, space_order=space_order) smooth(initial_vp, solver.model.vp) - dm = np.float32(initial_vp.data ** (-2) - solver.model.vp.csg_nonlinear ** (-2)) + dm = np.float32(initial_vp.data ** (-2) - solver.model.vp.data ** (-2)) info("Applying Adjoint") solver.adjoint(rec, autotune=autotune) @@ -60,7 +60,7 @@ def run(shape=(50, 50, 50), spacing=(20.0, 20.0, 20.0), tn=1000.0, solver.jacobian(dm, autotune=autotune) info("Applying Gradient") solver.jacobian_adjoint(rec, u, autotune=autotune, checkpointing=checkpointing) - return summary.gflopss, summary.oi, summary.timings, [rec, u.csg_nonlinear] + return summary.gflopss, summary.oi, summary.timings, [rec, u.data] @pytest.mark.parametrize('shape', [(101,), (51, 51), (16, 16, 16)]) diff --git a/tutorials/devitoseismic/acoustic/wavesolver.py b/tutorials/devitoseismic/acoustic/wavesolver.py index 9b1d72c..82eb5a6 100644 --- a/tutorials/devitoseismic/acoustic/wavesolver.py +++ b/tutorials/devitoseismic/acoustic/wavesolver.py @@ -206,7 +206,7 @@ def jacobian_adjoint(self, rec, u, src=None, v=None, grad=None, model=None, rec=rec, dt=dt, grad=grad, **kwargs) # Run forward - wrp = Revolver(cp, wrap_fw, wrap_rev, n_checkpoints, rec.csg_nonlinear.shape[0] - 2) + wrp = Revolver(cp, wrap_fw, wrap_rev, n_checkpoints, rec.data.shape[0] - 2) wrp.apply_forward() summary = wrp.apply_reverse() else: diff --git a/tutorials/devitoseismic/model.py b/tutorials/devitoseismic/model.py index 72359e5..6fdb3db 100644 --- a/tutorials/devitoseismic/model.py +++ b/tutorials/devitoseismic/model.py @@ -380,7 +380,7 @@ def update(self, name, value): # Update the square slowness according to new value if isinstance(value, np.ndarray): if value.shape == param.shape: - param.csg_nonlinear[:] = value[:] + param.data[:] = value[:] elif value.shape == self.shape: initialize_function(param, value, self.nbl) else: @@ -388,7 +388,7 @@ def update(self, name, value): " %s without or %s with padding" % (self.shape, param.shape)) else: - param.csg_nonlinear = value + param.data = value @property def m(self): diff --git a/tutorials/devitoseismic/plotting.py b/tutorials/devitoseismic/plotting.py index 5003008..ead990a 100644 --- a/tutorials/devitoseismic/plotting.py +++ b/tutorials/devitoseismic/plotting.py @@ -69,9 +69,9 @@ def plot_velocity(model, source=None, receiver=None, colorbar=True, cmap="jet"): slices = tuple(slice(model.nbl, -model.nbl) for _ in range(2)) if getattr(model, 'vp', None) is not None: - field = model.vp.csg_nonlinear[slices] + field = model.vp.data[slices] else: - field = model.lam.csg_nonlinear[slices] + field = model.lam.data[slices] plot = plt.imshow(np.transpose(field), animated=True, cmap=cmap, vmin=np.min(field), vmax=np.max(field), extent=extent) diff --git a/tutorials/devitoseismic/source.py b/tutorials/devitoseismic/source.py index 6b30f11..785d3f8 100644 --- a/tutorials/devitoseismic/source.py +++ b/tutorials/devitoseismic/source.py @@ -167,7 +167,7 @@ def resample(self, dt=None, num=None, rtol=1e-5, order=3): # Return new object return PointSource(name=self.name, grid=self.grid, data=new_traces, - time_range=new_time_range, coordinates=self.coordinates.csg_nonlinear) + time_range=new_time_range, coordinates=self.coordinates.data) # Pickling support _pickle_kwargs = SparseTimeFunction._pickle_kwargs + ['time_range'] diff --git a/tutorials/devitoseismic/test_seismic_utils.py b/tutorials/devitoseismic/test_seismic_utils.py deleted file mode 100644 index c38d421..0000000 --- a/tutorials/devitoseismic/test_seismic_utils.py +++ /dev/null @@ -1,97 +0,0 @@ -import pytest -import numpy as np - -from devito import norm -from examples.seismic import Model, setup_geometry, AcquisitionGeometry - - -def not_bcs(bc): - return ("mask", 1) if bc == "damp" else ("damp", 0) - - -@pytest.mark.parametrize('nbl, bcs', [ - (20, ("mask", 1)), (0, ("mask", 1)), - (20, ("damp", 0)), (0, ("damp", 0)) - -]) -def test_damp(nbl, bcs): - shape = (21, 21) - vp = np.ones(shape) - model = Model((0, 0), (10, 10), shape, 4, vp, nbl=nbl, bcs=bcs[0]) - - try: - center = model.damp.csg_nonlinear[tuple(s // 2 for s in model.damp.shape)] - except AttributeError: - center = model.damp - - assert all([s == s0 + 2 * nbl for s, s0 in zip(model.vp.shape, shape)]) - assert center == bcs[1] - - switch_bcs = not_bcs(bcs[0]) - model._initialize_bcs(bcs=switch_bcs[0]) - try: - center = model.damp.csg_nonlinear[tuple(s // 2 for s in model.damp.shape)] - except AttributeError: - center = model.damp - assert center == switch_bcs[1] - - -@pytest.mark.parametrize('shape', [(41,), (21, 21), (11, 11, 11)]) -def test_default_geom(shape): - vp = np.ones(shape) - o = tuple([0]*len(shape)) - d = tuple([10]*len(shape)) - model = Model(o, d, shape, 4, vp, nbl=20, dt=1) - assert model.critical_dt == 1 - - geometry = setup_geometry(model, 250) - nrec = shape[0] * (shape[1] if len(shape) > 2 else 1) - assert geometry.grid == model.grid - assert geometry.nrec == nrec - assert geometry.nsrc == 1 - assert geometry.src_type == "Ricker" - - assert geometry.rec.shape == (251, nrec) - assert norm(geometry.rec) == 0 - assert geometry.src.shape == (251, 1) - assert norm(geometry.new_src(src_type=None)) == 0 - - rec2 = geometry.rec.resample(num=501) - assert rec2.shape == (501, nrec) - assert rec2.grid == model.grid - - assert geometry.new_rec(name="bonjour").name == "bonjour" - assert geometry.new_src(name="bonjour").name == "bonjour" - - -@pytest.mark.parametrize('shape', [(41,), (21, 21), (11, 11, 11)]) -def test_geom(shape): - vp = np.ones(shape) - o = tuple([0]*len(shape)) - d = tuple([10]*len(shape)) - model = Model(o, d, shape, 4, vp, nbl=20, dt=1) - assert model.critical_dt == 1 - - nrec = 31 - nsrc = 4 - rec_coordinates = np.ones((nrec, len(shape))) - src_coordinates = np.ones((nsrc, len(shape))) - geometry = AcquisitionGeometry(model, rec_coordinates, src_coordinates, - t0=0.0, tn=250) - assert geometry.grid == model.grid - assert geometry.nrec == nrec - assert geometry.nsrc == nsrc - assert geometry.src_type is None - - assert geometry.rec.shape == (251, nrec) - assert norm(geometry.rec) == 0 - assert geometry.src.shape == (251, nsrc) - assert norm(geometry.new_src(src_type=None)) == 0 - assert norm(geometry.src) == 0 - - rec2 = geometry.rec.resample(num=501) - assert rec2.shape == (501, nrec) - assert rec2.grid == model.grid - - assert geometry.new_rec(name="bonjour").name == "bonjour" - assert geometry.new_src(name="bonjour").name == "bonjour" diff --git a/tutorials/devitoseismic/utils.py b/tutorials/devitoseismic/utils.py index 957d3b0..d9ff7e9 100644 --- a/tutorials/devitoseismic/utils.py +++ b/tutorials/devitoseismic/utils.py @@ -157,7 +157,7 @@ def adj_src(self): t0=self._t0w, a=self._a) # Revert time axis to have a proper shot record and not compute on zeros for i in range(self.nrec): - adj_src.csg_nonlinear[:, i] = adj_src.wavelet[::-1] + adj_src.data[:, i] = adj_src.wavelet[::-1] return adj_src @property