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()
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()
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()
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()