def generate_shotdata_i(src_coordinates, rec_coordinates, param, true_model): """ Inversion crime alert! Here the worker is creating the 'observed' data using the real model. For a real case the worker would be reading seismic data from disk. """ # Geometry geometry = AcquisitionGeometry(true_model, rec_coordinates, src_coordinates, param['t0'], param['tn'], src_type='Ricker', f0=param['f0']) geometry.resample(param['dt']) # Set up solver. solver = AcousticWaveSolver(true_model, geometry, space_order=param['space_order']) # Generate synthetic receiver data from true model. true_d, _, _ = solver.forward(m=true_model.m) return true_d.data
def my_task(part, param, dobs, src_coor, rec_coor): error = 0. model_part = get_true_model(part * (1 / 1000.), param) tstart = time.time() # Geometry source_locations = numpy.empty((1, 2)) geometry = AcquisitionGeometry(model_part, rec_coordinates, source_locations, param['t0'], param['tn'], src_type='Ricker', f0=param['f0']) geometry.resample(param['dt']) #print(geometry.nt) # Set up solver. solver = AcousticWaveSolver(model_part, geometry, space_order=param['space_order']) #print("{:>30}: {:>8}".format('solver',sizeof_fmt(sys.getsizeof(solver)))) tracemalloc.start() start = tracemalloc.take_snapshot() prev = start for i in range(len(dobs[0][0])): dcalc = generate_shotdata_i(numpy.array([src_coor[i]]), geometry, solver, model_part) res = get_value(dcalc, dobs[:, :, i]) error += res trace_leak(start, prev) #print("{:>30}: {:>8}".format('dcalc',sizeof_fmt(sys.getsizeof(dcalc)))) #print("{:>30}: {:>8}".format('res',sizeof_fmt(sys.getsizeof(res)))) #print("{:>30}: {:>8}".format('error',sizeof_fmt(sys.getsizeof(error)))) clear_cache() dcalc = None del dcalc print("Forward modeling took {}".format(time.time() - tstart)) return (error, )
time_range = TimeAxis(start=t0, stop=tn, step=dt) label0=0 # the first source src_coordinates = np.empty((1, 2)) src_coordinates.data[0,0] = geo['src_coordinates'][label0,0] src_coordinates.data[0,1] = 500-geo['src_coordinates'][label0,1] rec_coordinates = np.empty((nreceivers, 2)) rec_coordinates[:, 0] = geo['rec_coordinates'][label_left[edge_num]:label_right[edge_num],0] # can be replaced as [:,51:102]... rec_coordinates[:, 1] = 500-geo['rec_coordinates'][label_left[edge_num]:label_right[edge_num],1] # for the origin point is at top left # Geometry geometry = AcquisitionGeometry(model, rec_coordinates, src_coordinates, t0, tn, f0=f0, src_type='Ricker') geometry.resample(dt) #print(geometry.time_axis.num) # all source locations source_locations = np.empty((nshots, 2), dtype=np.float32) source_locations[:, 0] = geo['src_coordinates'][:,0] source_locations[:, 1] = 500 - geo['src_coordinates'][:,1] # for the origin point is at top left from examples.seismic.acoustic import AcousticWaveSolver solver = AcousticWaveSolver(model, geometry, space_order=4) from devito import Function, TimeFunction from examples.seismic import Receiver