def test_Grid2Dfs(self): g = rg.Grid2d(self.x, self.z, method='FSM', cell_slowness=0) tt = g.raytrace(self.src, self.rcv, slowness=self.slowness) tt = g.get_grid_traveltimes() tt = tt.flatten() tt_ref = get_tt('fsm2d_d_p_gc_src2d_all_tt.vtr') self.assertLess( np.sum(np.abs(tt - tt_ref)) / tt.size, 0.01, 'FSM accuracy failed (slowness at nodes)')
def test_Grid2Dsp(self): g = rg.Grid2d(self.x, self.z, method='SPM', nsnx=5, nsnz=5) tt = g.raytrace(self.src, self.rcv, slowness=self.slowness) tt = g.get_grid_traveltimes() tt = tt.flatten() tt_ref = get_tt('spm2d_d_p_lc_05_src2d_all_tt.vtr') self.assertLess( np.sum(np.abs(tt - tt_ref)) / tt.size, 0.01, 'SPM accuracy failed (slowness in cells)')
# %% Construction de la grille pour le tracé de rais dx = 5.0 dz = 5.0 xmin = 0.0 zmin = 0.0 xmax = 150.0 zmax = 300.0 nx = int((xmax-xmin)/dx+0.001) nz = int((zmax-xmin)/dz+0.001) xg = np.linspace(xmin, xmax, nx+1) zg = np.linspace(zmin, zmax, nz+1) g = rg.Grid2d(xg, zg, method='SPM', nsnx=10, nsnz=10) # %% Lecture des données data = np.loadtxt('model1_tt.dat') Tx = data[:, :2].copy() Rx = data[:, 2:4].copy() dobs = data[:, -1] # %% # modèle initial, on prend la lenteur apparente moyenne Ldroit = rg.Grid2d.data_kernel_straight_rays(Tx, Rx, xg, zg) # matrice L pour des rais droits l_rai = # longueur des rais lent_app = dobs/l_rai # lenteurs apparentes m0 = np.mean(lent_app) + np.zeros((nx*nz,))