Пример #1
0
 def test1(self):
     print "Testing HalogenInterface initialization"
     instance = HalogenInterface(**default_options)
     self.assertEquals(instance.initialize_code(), 0)
     self.assertEquals(instance.set_model_alpha(2.0), 0)
     self.assertEquals(instance.set_model_beta(5.0), 0)
     self.assertEquals(instance.set_model_gamma(0.0), 0)
     self.assertEquals(instance.set_target_number_of_particles(1000), 0)
     self.assertEquals(instance.commit_parameters(), 0)
     self.assertEquals(instance.cleanup_code(), 0)
     instance.stop()
Пример #2
0
    def test3(self):
        print "Testing HalogenInterface generate_particles"
        number_of_particles = 100000
        instance = HalogenInterface(**default_options)
        self.assertEquals(instance.initialize_code(), 0)
        self.assertEquals(instance.set_model_alpha(2.0), 0)
        self.assertEquals(instance.set_model_beta(5.0), 0)
        self.assertEquals(instance.set_model_gamma(0.0), 0)
        self.assertEquals(
            instance.set_target_number_of_particles(number_of_particles), 0)
        self.assertEquals(instance.set_random_seed(1), 0)
        self.assertEquals(
            instance.set_output_path(instance.get_output_directory()), 0)
        self.assertEquals(instance.commit_parameters(), 0)

        self.assertEquals(instance.get_number_of_particles_updated().values(),
                          [0, 0])
        self.assertEquals(instance.generate_particles(), 0)
        self.assertEquals(instance.get_number_of_particles_updated().values(),
                          [number_of_particles, 0])

        masses, errors = instance.get_mass(range(number_of_particles))
        self.assertEquals(errors, numpy.zeros(number_of_particles))
        self.assertEquals(
            masses,
            numpy.ones(number_of_particles) / number_of_particles)

        x_positions, y_positions, z_positions, errors = instance.get_position(
            range(number_of_particles))
        self.assertEquals(errors, numpy.zeros(number_of_particles))
        self.assertAlmostEquals(
            numpy.array([
                numpy.mean(x_positions),
                numpy.mean(y_positions),
                numpy.mean(z_positions)
            ]), numpy.array([0.0] * 3))
        self.assertAlmostEquals(
            numpy.array([
                numpy.mean(abs(x_positions)),
                numpy.mean(abs(y_positions)),
                numpy.mean(abs(z_positions))
            ]), numpy.array([1.0] * 3), 1)

        x_velocities, y_velocities, z_velocities, errors = instance.get_velocity(
            range(number_of_particles))
        self.assertEquals(errors, numpy.zeros(number_of_particles))
        self.assertAlmostEquals(
            numpy.array([
                numpy.mean(x_velocities),
                numpy.mean(y_velocities),
                numpy.mean(z_velocities)
            ]), numpy.array([0.0] * 3))
        self.assertAlmostEquals(
            numpy.array([
                numpy.mean(abs(x_velocities)),
                numpy.mean(abs(y_velocities)),
                numpy.mean(abs(z_velocities))
            ]), numpy.array([0.25] * 3), 1)

        self.assertEquals(instance.cleanup_code(), 0)
        instance.stop()
Пример #3
0
    def test2(self):
        print "Testing HalogenInterface parameters"
        instance = HalogenInterface(**default_options)
        self.assertEquals(instance.initialize_code(), 0)

        self.assertEquals(instance.set_model_alpha(2.0), 0)
        self.assertEquals(instance.set_model_beta(5.0), 0)
        self.assertEquals(instance.set_model_gamma(0.0), 0)
        self.assertEquals(instance.set_target_number_of_particles(100), 0)
        self.assertEquals(instance.set_random_seed(1), 0)
        self.assertEquals(instance.set_total_mass(9.0), 0)
        self.assertEquals(instance.set_scale_radius(9.0), 0)
        self.assertEquals(instance.set_cutoff_radius(9.0), 0)
        self.assertEquals(instance.set_black_hole_mass(9.0), 0)
        self.assertEquals(instance.set_do_exact_virial_radius_flag(1.0), 0)

        self.assertEquals([2.0, 0], instance.get_model_alpha().values())
        self.assertEquals([5.0, 0], instance.get_model_beta().values())
        self.assertEquals([0.0, 0], instance.get_model_gamma().values())
        self.assertEquals([100, 0],
                          instance.get_target_number_of_particles().values())
        self.assertEquals([1, 0], instance.get_random_seed().values())
        self.assertEquals([9.0, 0], instance.get_total_mass().values())
        self.assertEquals([9.0, 0], instance.get_scale_radius().values())
        self.assertEquals([9.0, 0], instance.get_cutoff_radius().values())
        self.assertEquals([9.0, 0], instance.get_black_hole_mass().values())
        self.assertEquals([1.0, 0],
                          instance.get_do_exact_virial_radius_flag().values())

        self.assertEquals(instance.cleanup_code(), 0)
        instance.stop()
Пример #4
0
 def test1(self):
     print "Testing HalogenInterface initialization"
     instance = HalogenInterface(**default_options)
     self.assertEquals(instance.initialize_code(), 0)
     self.assertEquals(instance.set_model_alpha(2.0), 0)
     self.assertEquals(instance.set_model_beta(5.0), 0)
     self.assertEquals(instance.set_model_gamma(0.0), 0)
     self.assertEquals(instance.set_target_number_of_particles(1000), 0)
     self.assertEquals(instance.commit_parameters(), 0)
     self.assertEquals(instance.cleanup_code(), 0)
     instance.stop()
Пример #5
0
    def test4(self):
        print "Testing HalogenInterface output file name and directory"
        instance = HalogenInterface(**default_options)
        self.assertEquals(instance.initialize_code(), 0)

        self.assertEquals(instance.set_model_alpha(2.0), 0)
        self.assertEquals(instance.set_model_beta(5.0), 0)
        self.assertEquals(instance.set_model_gamma(0.0), 0)
        self.assertEquals(instance.set_target_number_of_particles(1000), 0)
        self.assertEquals(instance.set_random_seed(1), 0)
        self.assertEquals(instance.set_write_output_flag(1.0), 0)

        self.assertEquals(instance.get_output_basename().values(),
                          ["halogen", 0])
        self.assertEquals(instance.get_output_path().values(), ["./", 0])

        self.assertEquals(
            instance.set_output_basename(
                "oops_this_output_basename_is_way_too_long" * 2), -1)
        self.assertEquals(instance.get_output_basename().values(),
                          ["halogen", 0])
        self.assertEquals(
            instance.set_output_path(
                "/oops/this/output/path/has/way/too/many/subdirs" * 6), -1)
        self.assertEquals(instance.get_output_path().values(), ["./", 0])

        self.assertEquals(instance.set_output_basename("test"), 0)
        self.assertEquals(
            instance.set_output_path(instance.get_output_directory()), 0)

        self.assertEquals(instance.get_output_basename().values(), ["test", 0])
        self.assertEquals(
            instance.get_output_path().values(),
            [os.path.join(instance.get_output_directory(), ""), 0])

        self.assertEquals(instance.commit_parameters(), 0)
        outputfile = os.path.join(instance.get_output_directory(),
                                  "test.IC.ascii")
        if os.path.exists(outputfile):
            os.remove(outputfile)
        self.assertEquals(instance.generate_particles(), 0)
        self.assertTrue(os.path.exists(outputfile))

        halogen4muse_path = os.path.join(
            os.path.dirname(amuse.community.halogen.__file__), 'src',
            'halogen4muse')

        if not os.path.exists(halogen4muse_path) or not os.access(
                halogen4muse_path, os.X_OK):
            return

        process = subprocess.Popen([
            halogen4muse_path, '-a', '2', '-b', '5', '-c', '0', '-N', '1000',
            '-name', 'test_stand_alone', '-randomseed', '1'
        ],
                                   cwd=instance.get_output_directory(),
                                   stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE)
        process.communicate()

        self.compare_files(
            os.path.join(instance.get_output_directory(), "test.IC.ascii"),
            os.path.join(instance.get_output_directory(),
                         "test_stand_alone.IC.ascii"))
        stdoutput = subprocess.Popen(
            ["diff", "test.out", "test_stand_alone.out"],
            cwd=instance.get_output_directory(),
            stdout=subprocess.PIPE).communicate()[0]
        self.assertTrue("< N/A (executed by AMUSE)" in stdoutput)
        self.assertTrue(
            "halogen4muse -a 2 -b 5 -c 0 -N 1000 -name test_stand_alone -randomseed 1"
            in stdoutput)

        self.assertEquals(instance.cleanup_code(), 0)
        instance.stop()
Пример #6
0
 def test4(self):
     print "Testing HalogenInterface output file name and directory"
     instance = HalogenInterface(**default_options)
     self.assertEquals(instance.initialize_code(), 0)
     
     self.assertEquals(instance.set_model_alpha(2.0), 0)
     self.assertEquals(instance.set_model_beta(5.0), 0)
     self.assertEquals(instance.set_model_gamma(0.0), 0)
     self.assertEquals(instance.set_target_number_of_particles(1000), 0)
     self.assertEquals(instance.set_random_seed(1), 0)
     self.assertEquals(instance.set_write_output_flag(1.0), 0)
     
     self.assertEquals(instance.get_output_basename().values(), ["halogen", 0])
     self.assertEquals(instance.get_output_path().values(), ["./", 0])
     
     self.assertEquals(instance.set_output_basename("oops_this_output_basename_is_way_too_long"*2), -1)
     self.assertEquals(instance.get_output_basename().values(), ["halogen", 0])
     self.assertEquals(instance.set_output_path("/oops/this/output/path/has/way/too/many/subdirs"*6), -1)
     self.assertEquals(instance.get_output_path().values(), ["./", 0])
     
     self.assertEquals(instance.set_output_basename("test"), 0)
     self.assertEquals(instance.set_output_path(instance.get_output_directory()), 0)
     
     self.assertEquals(instance.get_output_basename().values(), ["test", 0])
     self.assertEquals(instance.get_output_path().values(), 
         [os.path.join(instance.get_output_directory(), ""), 0])
     
     self.assertEquals(instance.commit_parameters(), 0)
     outputfile = os.path.join(instance.get_output_directory(), "test.IC.ascii")
     if os.path.exists(outputfile):
         os.remove(outputfile)
     self.assertEquals(instance.generate_particles(), 0)
     self.assertTrue(os.path.exists(outputfile))
     
     
     halogen4muse_path = os.path.join(os.path.dirname(amuse.community.halogen.__file__), 'src', 'halogen4muse')
     
     if not os.path.exists(halogen4muse_path) or not os.access(halogen4muse_path, os.X_OK):
         return
         
     process = subprocess.Popen([
         halogen4muse_path, 
         '-a', '2', 
         '-b', '5', 
         '-c', '0', 
         '-N', '1000', 
         '-name', 'test_stand_alone', 
         '-randomseed', '1'
         ]
         , cwd = instance.get_output_directory()
         , stdout = subprocess.PIPE
         , stderr = subprocess.PIPE
     )
     process.communicate()
     
     self.compare_files(
         os.path.join(instance.get_output_directory(), "test.IC.ascii"),
         os.path.join(instance.get_output_directory(), "test_stand_alone.IC.ascii")
     )
     stdoutput = subprocess.Popen(["diff", "test.out", "test_stand_alone.out"], 
         cwd = instance.get_output_directory(), stdout = subprocess.PIPE).communicate()[0]
     self.assertTrue("< N/A (executed by AMUSE)" in stdoutput)
     self.assertTrue("halogen4muse -a 2 -b 5 -c 0 -N 1000 -name test_stand_alone -randomseed 1" in stdoutput)
     
     self.assertEquals(instance.cleanup_code(), 0)
     instance.stop()
Пример #7
0
 def test3(self):
     print "Testing HalogenInterface generate_particles"
     number_of_particles = 100000
     instance = HalogenInterface(**default_options)
     self.assertEquals(instance.initialize_code(), 0)
     self.assertEquals(instance.set_model_alpha(2.0), 0)
     self.assertEquals(instance.set_model_beta(5.0), 0)
     self.assertEquals(instance.set_model_gamma(0.0), 0)
     self.assertEquals(instance.set_target_number_of_particles(number_of_particles), 0)
     self.assertEquals(instance.set_random_seed(1), 0)
     self.assertEquals(instance.set_output_path(instance.get_output_directory()), 0)
     self.assertEquals(instance.commit_parameters(), 0)
     
     self.assertEquals(instance.get_number_of_particles_updated().values(), [0, 0])
     self.assertEquals(instance.generate_particles(), 0)
     self.assertEquals(instance.get_number_of_particles_updated().values(), [number_of_particles, 0])
     
     masses, errors = instance.get_mass(range(number_of_particles))
     self.assertEquals(errors, numpy.zeros(number_of_particles))
     self.assertEquals(masses, numpy.ones(number_of_particles)/number_of_particles)
     
     x_positions, y_positions, z_positions, errors = instance.get_position(range(number_of_particles))
     self.assertEquals(errors, numpy.zeros(number_of_particles))
     self.assertAlmostEquals(numpy.array([numpy.mean(x_positions), numpy.mean(y_positions), 
         numpy.mean(z_positions)]), numpy.array([0.0]*3))
     self.assertAlmostEquals(numpy.array([numpy.mean(abs(x_positions)), numpy.mean(abs(y_positions)), 
         numpy.mean(abs(z_positions))]), numpy.array([1.0]*3), 1)
     
     x_velocities, y_velocities, z_velocities, errors = instance.get_velocity(range(number_of_particles))
     self.assertEquals(errors, numpy.zeros(number_of_particles))
     self.assertAlmostEquals(numpy.array([numpy.mean(x_velocities), numpy.mean(y_velocities), 
         numpy.mean(z_velocities)]), numpy.array([0.0]*3))
     self.assertAlmostEquals(numpy.array([numpy.mean(abs(x_velocities)), numpy.mean(abs(y_velocities)), 
         numpy.mean(abs(z_velocities))]), numpy.array([0.25]*3), 1)
     
     self.assertEquals(instance.cleanup_code(), 0)
     instance.stop()
Пример #8
0
 def test2(self):
     print "Testing HalogenInterface parameters"
     instance = HalogenInterface(**default_options)
     self.assertEquals(instance.initialize_code(), 0)
     
     self.assertEquals(instance.set_model_alpha(2.0), 0)
     self.assertEquals(instance.set_model_beta(5.0),  0)
     self.assertEquals(instance.set_model_gamma(0.0), 0)
     self.assertEquals(instance.set_target_number_of_particles(100), 0)
     self.assertEquals(instance.set_random_seed(1), 0)
     self.assertEquals(instance.set_total_mass(9.0),  0)
     self.assertEquals(instance.set_scale_radius(9.0), 0)
     self.assertEquals(instance.set_cutoff_radius(9.0), 0)
     self.assertEquals(instance.set_black_hole_mass(9.0), 0)
     self.assertEquals(instance.set_do_exact_virial_radius_flag(1.0), 0)
     
     self.assertEquals([2.0, 0], instance.get_model_alpha().values())
     self.assertEquals([5.0, 0], instance.get_model_beta().values())
     self.assertEquals([0.0, 0], instance.get_model_gamma().values())
     self.assertEquals([100, 0], instance.get_target_number_of_particles().values())
     self.assertEquals([1, 0], instance.get_random_seed().values())
     self.assertEquals([9.0, 0], instance.get_total_mass().values())
     self.assertEquals([9.0, 0], instance.get_scale_radius().values())
     self.assertEquals([9.0, 0], instance.get_cutoff_radius().values())
     self.assertEquals([9.0, 0], instance.get_black_hole_mass().values())
     self.assertEquals([1.0, 0], instance.get_do_exact_virial_radius_flag().values())
     
     self.assertEquals(instance.cleanup_code(), 0)
     instance.stop()