Example #1
0
 def test1(self):
     print "Test 1: initialization"
     instance = SimpleXInterface(**default_options)
     self.assertEqual(0, instance.set_simplex_output_directory(instance.output_directory))
     self.assertEqual(0, instance.initialize_code())
     self.assertEqual(0, instance.commit_parameters())
     self.assertEqual(0, instance.cleanup_code())
     instance.stop()
Example #2
0
 def test1(self):
     print "Test 1: initialization"
     instance = SimpleXInterface(**default_options)
     self.assertEqual(0, instance.set_simplex_output_directory(instance.output_directory))
     self.assertEqual(0, instance.initialize_code())
     self.assertEqual(0, instance.commit_parameters())
     self.assertEqual(0, instance.cleanup_code())
     instance.stop()
Example #3
0
    def test3(self):
        print("Test 3: evolve")
        instance = SimpleXInterface(**default_options)
        self.assertEqual(
            0,
            instance.set_simplex_output_directory(instance.output_directory))
        self.assertEqual(0, instance.initialize_code())
        self.assertEqual(0, instance.commit_parameters())

        input_file = os.path.join(os.path.dirname(__file__),
                                  "test_simplex_data.txt")
        x, y, z, n_H, flux, X_ion, u = read_input_file(input_file)

        number_of_particles = len(x)
        indices, errors = instance.new_particle(x, y, z, n_H, flux, X_ion, u)
        self.assertEqual(errors, [0] * number_of_particles)
        self.assertEqual(indices, list(range(number_of_particles)))

        self.assertEqual(0, instance.commit_particles())

        X_ion, errors = instance.get_ionisation(indices)
        self.assertEqual(errors, [0] * number_of_particles)
        self.assertAlmostEqual(X_ion.sum() / number_of_particles, 0.0)

        density, errors = instance.get_density(indices)
        self.assertEqual(errors, [0] * number_of_particles)
        self.assertAlmostEqual(density.sum(), 1.0, 6)

        self.assertEqual(0, instance.evolve_model(0.5))

        density, errors = instance.get_density(indices)
        self.assertEqual(errors, [0] * number_of_particles)
        self.assertAlmostEqual(density.sum(), 1.0, 6)

        flux, errors = instance.get_flux(indices)
        self.assertEqual(errors, [0] * number_of_particles)
        self.assertEqual(flux.sum(), 5.0)

        X_ion, errors = instance.get_ionisation(indices)
        self.assertEqual(errors, [0] * number_of_particles)
        self.assertAlmostEqual(X_ion.sum() / number_of_particles,
                               0.000845247683257)

        self.assertEqual(0, instance.cleanup_code())
        instance.stop()
Example #4
0
    def test2(self):
        print("Test 2: commit_particles, getters and setters")
        instance = SimpleXInterface(**default_options)
        self.assertEqual(
            0,
            instance.set_simplex_output_directory(instance.output_directory))
        self.assertEqual(0, instance.initialize_code())
        self.assertEqual(0, instance.commit_parameters())

        input_file = os.path.join(os.path.dirname(__file__),
                                  "test_simplex_data.txt")
        x, y, z, n_H, flux, X_ion, u = read_input_file(input_file)
        x = numpy.array(x)
        y = numpy.array(y)
        z = numpy.array(z)
        number_of_particles = len(x)
        indices, errors = instance.new_particle(x, y, z, n_H, flux, X_ion, u)
        self.assertEqual(errors, [0] * number_of_particles)
        self.assertEqual(indices, list(range(number_of_particles)))
        self.assertEqual(0, instance.commit_particles())
        x_out, y_out, z_out, n_H_out, flux_out, X_ion_out, u_out, metallicity_out, error = instance.get_state(
            indices)

        self.assertAlmostEqual((x - x_out) / 13200., numpy.zeros_like(x), 7)
        self.assertAlmostEqual((y - y_out) / 13200., numpy.zeros_like(x), 7)
        self.assertAlmostEqual((z - z_out) / 13200., numpy.zeros_like(x), 7)
        self.assertAlmostEqual(flux, flux_out, 7)
        self.assertAlmostEqual(n_H, n_H_out, 7)
        self.assertAlmostEqual(X_ion, X_ion_out, 7)
        self.assertAlmostRelativeEqual(u, u_out, 7)
        #self.assertAlmostRelativeEqual(metallicity,metallicity_out, 7)

        x, y, z, n_H, flux, X_ion, u, metallicity, error = instance.get_state(
            0)
        for expected, received in zip(
            [0, 0, 0, 0.001, 5.0, 0.0, 831447247704, 0],
            [x, y, z, n_H, flux, X_ion, u, error]):
            self.assertAlmostRelativeEqual(expected, received, 6)
        x, y, z, error1 = instance.get_position(0)
        n_H, error2 = instance.get_density(0)
        flux, error3 = instance.get_flux(0)
        X_ion, error4 = instance.get_ionisation(0)
        for expected, received in zip(
            [0., 0., 0., 0.001, 5.0, 0.0, 0, 0, 0, 0],
            [x, y, z, n_H, flux, X_ion, error1, error2, error3, error4]):
            self.assertAlmostRelativeEqual(expected, received, 5)

        self.assertEqual(
            0, instance.set_state(3, 1.0, 2.0, 3.0, 4.0, 5.0, 0.6, 77.0))
        x, y, z, n_H, flux, X_ion, u, metallicity, error = instance.get_state(
            3)
        for expected, received in zip([1.0, 2.0, 3.0, 4.0, 5.0, 0.6, 77, 0],
                                      [x, y, z, n_H, flux, X_ion, u, error]):
            self.assertAlmostRelativeEqual(expected, received, 5)
        self.assertEqual(0, instance.set_position(4, 3.0, 2.0, 1.0))
        self.assertEqual(0, instance.set_density(4, 0.6))
        self.assertEqual(0, instance.set_flux(4, 0.5))
        self.assertEqual(0, instance.set_ionisation(4, 0.4))
        self.assertEqual(0, instance.set_internal_energy(4, 1234.))
        x, y, z, n_H, flux, X_ion, u, metallicity, error = instance.get_state(
            4)
        for expected, received in zip([3.0, 2.0, 1.0, 0.6, 0.5, 0.4, 1234., 0],
                                      [x, y, z, n_H, flux, X_ion, u, error]):
            self.assertAlmostRelativeEqual(expected, received, 5)

        self.assertEqual(0, instance.set_dinternal_energy_dt(4, 12345.))
        du_dt, err = instance.get_dinternal_energy_dt(4)
        self.assertEqual(12345, du_dt)

        self.assertEqual(0, instance.cleanup_code())
        instance.stop()
Example #5
0
    def test5(self):
        print("Test 2: delete particles")
        instance = SimpleXInterface(**default_options)
        self.assertEqual(
            0,
            instance.set_simplex_output_directory(instance.output_directory))
        self.assertEqual(0, instance.initialize_code())
        self.assertEqual(0, instance.commit_parameters())

        input_file = os.path.join(os.path.dirname(__file__),
                                  "test_simplex_data.txt")
        x, y, z, n_H, flux, X_ion, u = read_input_file(input_file)
        x = numpy.array(x)
        y = numpy.array(y)
        z = numpy.array(z)
        number_of_particles = len(x)
        indices, errors = instance.new_particle(x, y, z, n_H, flux, X_ion, u)
        self.assertEqual(errors, [0] * number_of_particles)
        self.assertEqual(indices, list(range(number_of_particles)))
        error = instance.delete_particle(indices[0])
        self.assertEqual(error, -1)
        instance.commit_particles()
        error = instance.delete_particle(indices[0])
        # this one I don't understand:
        self.assertEqual(error, -1)
        self.assertEqual(0, instance.evolve_model(0.125))
        error = instance.delete_particle(indices[0])
        self.assertEqual(error, 0)
Example #6
0
    def test4(self):
        print("Test 4: set boxsize, hilbert_order, timestep")
        instance = SimpleXInterface(**default_options)
        self.assertEqual(
            0,
            instance.set_simplex_output_directory(instance.output_directory))
        self.assertEqual(0, instance.initialize_code())

        instance.set_box_size(16384.)
        instance.set_hilbert_order(1)
        instance.set_timestep(0.5)

        self.assertEqual(0, instance.commit_parameters())

        self.assertEqual(16384., instance.get_box_size()['box_size'])
        self.assertEqual(1, instance.get_hilbert_order()['hilbert_order'])
        self.assertEqual(0.5, instance.get_timestep()['timestep'])

        input_file = os.path.join(os.path.dirname(__file__),
                                  "test_simplex_data.txt")
        x, y, z, n_H, flux, X_ion, u = read_input_file(input_file)
        number_of_particles = len(x)
        indices, errors = instance.new_particle(x, y, z, n_H, flux, X_ion, u)
        instance.commit_particles()

        self.assertEqual(16384., instance.get_box_size()['box_size'])
        self.assertEqual(1, instance.get_hilbert_order()['hilbert_order'])
        self.assertEqual(0.5, instance.get_timestep()['timestep'])

        self.assertEqual(0, instance.cleanup_code())
        instance.stop()
Example #7
0
    def test3(self):
        print "Test 3: evolve"
        instance = SimpleXInterface(**default_options)
        self.assertEqual(0, instance.set_simplex_output_directory(instance.output_directory))
        self.assertEqual(0, instance.initialize_code())
        self.assertEqual(0, instance.commit_parameters())
        
        input_file = os.path.join(os.path.dirname(__file__), "test_simplex_data.txt")
        x, y, z, n_H, flux, X_ion,u = read_input_file(input_file)

        number_of_particles = len(x)
        indices, errors = instance.new_particle(x, y, z, n_H, flux, X_ion,u)
        self.assertEqual(errors, [0]*number_of_particles)
        self.assertEqual(indices, range(number_of_particles))
        
        self.assertEqual(0, instance.commit_particles())
        
        X_ion, errors = instance.get_ionisation(indices)
        self.assertEqual(errors, [0]*number_of_particles)
        self.assertAlmostEqual(X_ion.sum()/number_of_particles, 0.0)
        
        density, errors = instance.get_density(indices)
        self.assertEqual(errors, [0]*number_of_particles)
        self.assertAlmostEqual(density.sum(), 1.0,6)
        
        self.assertEqual(0, instance.evolve_model(0.5))

        density, errors = instance.get_density(indices)
        self.assertEqual(errors, [0]*number_of_particles)
        self.assertAlmostEqual(density.sum(), 1.0,6)
        
        flux, errors = instance.get_flux(indices)
        self.assertEqual(errors, [0]*number_of_particles)
        self.assertEqual(flux.sum(), 5.0)
        
        X_ion, errors = instance.get_ionisation(indices)
        self.assertEqual(errors, [0]*number_of_particles)
        self.assertAlmostEqual(X_ion.sum()/number_of_particles, 0.000845247683257)
        
        self.assertEqual(0, instance.cleanup_code())
        instance.stop()
Example #8
0
    def test2(self):
        print "Test 2: commit_particles, getters and setters"
        instance = SimpleXInterface(**default_options)
        self.assertEqual(0, instance.set_simplex_output_directory(instance.output_directory))
        self.assertEqual(0, instance.initialize_code())
        self.assertEqual(0, instance.commit_parameters())
        
        input_file = os.path.join(os.path.dirname(__file__), "test_simplex_data.txt")
        x, y, z, n_H, flux, X_ion,u = read_input_file(input_file)
        x=numpy.array(x)
        y=numpy.array(y)
        z=numpy.array(z)
        number_of_particles = len(x)
        indices, errors = instance.new_particle(x, y, z, n_H, flux, X_ion,u)
        self.assertEqual(errors, [0]*number_of_particles)
        self.assertEqual(indices, range(number_of_particles))
        self.assertEqual(0, instance.commit_particles())
        x_out, y_out, z_out, n_H_out, flux_out, X_ion_out,u_out, metallicity_out, error = instance.get_state(indices)

        self.assertAlmostEqual((x-x_out)/13200., numpy.zeros_like(x), 7)
        self.assertAlmostEqual((y-y_out)/13200., numpy.zeros_like(x), 7)
        self.assertAlmostEqual((z-z_out)/13200., numpy.zeros_like(x), 7)
        self.assertAlmostEqual(flux,flux_out, 7)
        self.assertAlmostEqual(n_H,n_H_out, 7)
        self.assertAlmostEqual(X_ion,X_ion_out, 7)
        self.assertAlmostRelativeEqual(u,u_out, 7)
        #self.assertAlmostRelativeEqual(metallicity,metallicity_out, 7)
        
        
        
        x, y, z, n_H, flux, X_ion,u,metallicity, error = instance.get_state(0)
        for expected, received in zip([0, 0, 0, 0.001, 5.0, 0.0, 831447247704,0], 
                [x, y, z, n_H, flux, X_ion, u,error]):
            self.assertAlmostRelativeEqual(expected, received,6)
        x, y, z, error1 = instance.get_position(0)
        n_H, error2     = instance.get_density(0)
        flux, error3    = instance.get_flux(0)
        X_ion, error4   = instance.get_ionisation(0)
        for expected, received in zip([0.,0.,0., 0.001, 5.0, 0.0, 0, 0, 0, 0], 
                [x, y, z, n_H, flux, X_ion, error1, error2, error3, error4]):
            self.assertAlmostRelativeEqual(expected, received, 5)
        
        self.assertEqual(0, instance.set_state(3, 1.0, 2.0, 3.0, 4.0, 5.0, 0.6,77.0))
        x, y, z, n_H, flux, X_ion, u,metallicity,error = instance.get_state(3)
        for expected, received in zip([1.0, 2.0, 3.0, 4.0, 5.0, 0.6, 77,0], 
                [x, y, z, n_H, flux, X_ion,u, error]):
            self.assertAlmostRelativeEqual(expected, received, 5)
        self.assertEqual(0, instance.set_position(4, 3.0, 2.0, 1.0))
        self.assertEqual(0, instance.set_density(4, 0.6))
        self.assertEqual(0, instance.set_flux(4, 0.5))
        self.assertEqual(0, instance.set_ionisation(4, 0.4))
        self.assertEqual(0, instance.set_internal_energy(4, 1234.))
        x, y, z, n_H, flux, X_ion,u,metallicity, error = instance.get_state(4)
        for expected, received in zip([3.0, 2.0, 1.0, 0.6, 0.5, 0.4,1234., 0], 
                [x, y, z, n_H, flux, X_ion,u, error]):
            self.assertAlmostRelativeEqual(expected, received, 5)


        self.assertEqual(0, instance.set_dinternal_energy_dt(4, 12345.))
        du_dt,err=instance.get_dinternal_energy_dt(4)
        self.assertEqual(12345, du_dt)
        
        self.assertEqual(0, instance.cleanup_code())
        instance.stop()
Example #9
0
    def test5(self):
        print "Test 2: delete particles"
        instance = SimpleXInterface(**default_options)
        self.assertEqual(0, instance.set_simplex_output_directory(instance.output_directory))
        self.assertEqual(0, instance.initialize_code())
        self.assertEqual(0, instance.commit_parameters())
        
        input_file = os.path.join(os.path.dirname(__file__), "test_simplex_data.txt")
        x, y, z, n_H, flux, X_ion,u = read_input_file(input_file)
        x=numpy.array(x)
        y=numpy.array(y)
        z=numpy.array(z)
        number_of_particles = len(x)
        indices, errors = instance.new_particle(x, y, z, n_H, flux, X_ion,u)
        self.assertEqual(errors, [0]*number_of_particles)
        self.assertEqual(indices, range(number_of_particles))
        error=instance.delete_particle(indices[0])
        self.assertEqual(error, -1)
        instance.commit_particles()
        error=instance.delete_particle(indices[0])
# this one I don't understand:
        self.assertEqual(error, -1)
        self.assertEqual(0, instance.evolve_model(0.125))
        error=instance.delete_particle(indices[0])
        self.assertEqual(error, 0)
Example #10
0
    def test4(self):
        print "Test 4: set boxsize, hilbert_order, timestep"
        instance = SimpleXInterface(**default_options)
        self.assertEqual(0, instance.set_simplex_output_directory(instance.output_directory))
        self.assertEqual(0, instance.initialize_code())
        
        instance.set_box_size(16384.)
        instance.set_hilbert_order(1)
        instance.set_timestep(0.5)
                
        self.assertEqual(0, instance.commit_parameters())
        
        self.assertEqual(16384.,instance.get_box_size()['box_size'])
        self.assertEqual(1,instance.get_hilbert_order()['hilbert_order'])
        self.assertEqual(0.5,instance.get_timestep()['timestep'])

        input_file = os.path.join(os.path.dirname(__file__), "test_simplex_data.txt")
        x, y, z, n_H, flux, X_ion,u = read_input_file(input_file)
        number_of_particles = len(x)
        indices, errors = instance.new_particle(x, y, z, n_H, flux, X_ion,u)
        instance.commit_particles()

        self.assertEqual(16384.,instance.get_box_size()['box_size'])
        self.assertEqual(1,instance.get_hilbert_order()['hilbert_order'])
        self.assertEqual(0.5,instance.get_timestep()['timestep'])

        self.assertEqual(0, instance.cleanup_code())
        instance.stop()