def test_save_load_octree(): np.random.seed(int(0x4d3d3d3)) pos = np.random.normal(0.5, scale=0.05, size=(NPART, 3)) * (DRE - DLE) + DLE octree = ParticleOctreeContainer((1, 1, 1), DLE, DRE) octree.n_ref = 32 for i in range(3): np.clip(pos[:, i], DLE[i], DRE[i], pos[:, i]) # Convert to integers pos = np.floor((pos - DLE) / dx).astype("uint64") morton = get_morton_indices(pos) morton.sort() octree.add(morton) octree.finalize() saved = octree.save_octree() loaded = OctreeContainer.load_octree(saved) always = AlwaysSelector(None) ir1 = octree.ires(always) ir2 = loaded.ires(always) yield assert_equal, ir1, ir2 fc1 = octree.fcoords(always) fc2 = loaded.fcoords(always) yield assert_equal, fc1, fc2 fw1 = octree.fwidth(always) fw2 = loaded.fwidth(always) yield assert_equal, fw1, fw2
def test_save_load_octree(): np.random.seed(int(0x4d3d3d3)) pos = np.random.normal(0.5, scale=0.05, size=(NPART,3)) * (DRE-DLE) + DLE octree = ParticleOctreeContainer((1, 1, 1), DLE, DRE) octree.n_ref = 32 for i in range(3): np.clip(pos[:,i], DLE[i], DRE[i], pos[:,i]) # Convert to integers pos = np.floor((pos - DLE)/dx).astype("uint64") morton = get_morton_indices(pos) morton.sort() octree.add(morton) octree.finalize() saved = octree.save_octree() loaded = OctreeContainer.load_octree(saved) always = AlwaysSelector(None) ir1 = octree.ires(always) ir2 = loaded.ires(always) yield assert_equal, ir1, ir2 fc1 = octree.fcoords(always) fc2 = loaded.fcoords(always) yield assert_equal, fc1, fc2 fw1 = octree.fwidth(always) fw2 = loaded.fwidth(always) yield assert_equal, fw1, fw2
def _initialize_oct_handler(self): header = dict( dims=[1, 1, 1], left_edge=self.ds.domain_left_edge, right_edge=self.ds.domain_right_edge, octree=self.ds.octree_mask, over_refine=self.ds.over_refine_factor, partial_coverage=self.ds.partial_coverage, ) self.oct_handler = OctreeContainer.load_octree(header)