def test3(self): random.seed(1001) print "Third test: densest neighbors and groups." hop = HopInterface() hop.initialize_code() particles1 = new_plummer_model(10) particles2 = new_plummer_model(10) particles3 = new_plummer_model(10) particles2.position += (10, 0, 0) | nbody_system.length particles3.position += (0, 20, 0) | nbody_system.length ids1, errors = hop.new_particle( particles1.mass.value_in(nbody_system.mass), particles1.x.value_in(nbody_system.length), particles1.y.value_in(nbody_system.length), particles1.z.value_in(nbody_system.length)) ids2, errors = hop.new_particle( particles2.mass.value_in(nbody_system.mass), particles2.x.value_in(nbody_system.length), particles2.y.value_in(nbody_system.length), particles2.z.value_in(nbody_system.length)) ids3, errors = hop.new_particle( particles3.mass.value_in(nbody_system.mass), particles3.x.value_in(nbody_system.length), particles3.y.value_in(nbody_system.length), particles3.z.value_in(nbody_system.length)) hop.set_nDens(5) hop.calculate_densities() hop.do_hop() n, err = hop.get_group_id(ids1) self.assertEquals(n, 2) self.assertEquals(err, 0) n, err = hop.get_group_id(ids2) self.assertEquals(err, 0) n, err = hop.get_group_id(ids3) self.assertEquals(err, 0) n, err = hop.get_densest_particle_in_group(2) self.assertEquals(n, 7) for i in range(3): n, err = hop.get_number_of_particles_in_group(0) self.assertEquals(err, 0) self.assertEquals(n, 10) n, err = hop.get_number_of_groups() self.assertEquals(n, 3) n, err = hop.get_densest_neighbor(ids1) self.assertEquals(n, [7, 7, 12, 0, 7, 7, 7, 7, 12, 7]) hop.stop()
def test4(self): hop = HopInterface() hop.initialize_code() value, error = hop.get_nDens() self.assertEquals(error, 0) self.assertEquals(value, 64) error = hop.set_nDens(7) self.assertEquals(error, 0) value, error = hop.get_nDens() self.assertEquals(value, 7) value, error = hop.get_nHop() self.assertEquals(error, 0) self.assertEquals(value, -1) error = hop.set_nHop(7) self.assertEquals(error, 0) value, error = hop.get_nHop() self.assertEquals(value, 7) value, error = hop.get_nBucket() self.assertEquals(error, 0) self.assertEquals(value, 16) error = hop.set_nHop(7) self.assertEquals(error, 0) value, error = hop.get_nHop() self.assertEquals(value, 7) hop.stop()
def test2(self): random.seed(1001) hop = HopInterface() hop.initialize_code() particles = new_plummer_model(1000) ids, errors = hop.new_particle( particles.mass.value_in(nbody_system.mass), particles.x.value_in(nbody_system.length), particles.y.value_in(nbody_system.length), particles.z.value_in(nbody_system.length)) n, err = hop.get_number_of_particles() self.assertEquals(n, 1000) self.assertEquals(err, 0) #distance_to_center = (particles.position - particles.center_of_mass()).lengths() #print distance_to_center ds = {0: 0.482308834791, 1: 0.4885137677192688, 2: 0.27442726492881775} for method in [0, 1, 2]: hop.set_nDens(7) hop.set_density_method(method) hop.calculate_densities() d, err = hop.get_density(0) self.assertAlmostRelativeEquals(d, ds[method], 5) hop.stop()
def test1(self): print "First test: adding particles, setting and getting." hop = HopInterface() hop.initialize_code() n, err = hop.get_number_of_particles() self.assertEquals(n, 0) self.assertEquals(err, 0) for i in range(6): id, err = hop.new_particle(0, i * i, 0, 0) n, err = hop.get_number_of_particles() self.assertEquals(n, i + 1) self.assertEquals(err, 0) for i in range(6): x, y, z, err = hop.get_position(i) self.assertEquals(x, i * i) self.assertEquals(y, 0) self.assertEquals(z, 0) self.assertEquals(err, 0) hop.set_position(i, x, i * i, 0) for i in range(6): x, y, z, err = hop.get_position(i) self.assertEquals(x, y) self.assertEquals(z, 0) self.assertEquals(err, 0) hop.stop()