import yt import numpy as np from IPython.display import display def create_fake_dataset(px=0.2): grid_data = [ dict(left_edge=[0.0, 0.0, 0.0], right_edge=[1.0,1.0,1.0], level=0, dimensions = [8, 8, 8], number_of_particles=0), dict(left_edge=[0.25, 0.25, 0.25], right_edge=[0.75,0.75,0.75], level=1, dimensions = [8, 8, 8], number_of_particles=0), ] particle_position = [px, 0.5, 0.5] if particle_position[0] < 0.25 or particle_position[0] > 0.75: update_grid = 0 else: update_grid = 1 field_data = { 'particle_position_x': np.array([particle_position[0]]), 'particle_position_y': np.array([particle_position[1]]), 'particle_position_z': np.array([particle_position[2]]), 'particle_mass': np.array([1.0,]), 'number_of_particles': 1 } grid_data[update_grid].update(field_data) bbox = np.array([[0,1],[0,1],[0,1]]) ds = yt.load_amr_grids(grid_data, [8,8,8], bbox=bbox) return yt.SlicePlot(ds, 2, ('deposit', 'io_cic')).annotate_grids() for px in [0.24, 0.26]: display(create_fake_dataset(px))