def test_particle_generation(self, monkeypatch, tmpdir, backend_and_solver): monkeypatch.chdir(tmpdir) conf = Config( TimeGridConf(2, 1, 1), SpatialMeshConf((5, 5, 5), (.1, .1, .1)), sources=[ ParticleSourceConf('a', Box((2, 2, 2), (0, 0, 0)), 2, 1, (0, 0, 0), 0, charge=0), ParticleSourceConf('b', Box((1, 1, 1), (0, 0, 0)), 7, 5, (0, 0, 0), 0, charge=0) ], inner_regions=[InnerRegionConf('1', Box((.5, .5, .5), (1, 1, 1)))], output_file=OutputFileConf(), boundary_conditions=BoundaryConditionsConf(), particle_interaction_model=ParticleInteractionModelConf( 'noninteracting'), external_fields=[]) sim = conf.make() Runner(sim).start() assert [len(a.ids) for a in sim.particle_arrays] == [4]
def test_large_grid(solver_, backend_): try: configure_application(solver_, backend_) c = Config(TimeGridConf(1, 1, 1), SpatialMeshConf(100, 1), inner_regions=[InnerRegionConf('tube', Tube((50, 50, 10), (50, 50, 12), 10, 90), 10)]) r = Runner(c.make()) r.eval_and_write_fields_without_particles() assert r.simulation.potential.data.mean() >= 0 assert r.simulation.potential.data.mean() <= 10 assert abs(r.simulation.potential.data.max() - 10) < 0.01 assert abs(r.simulation.potential.data.min()) < 0.01 finally: inject.clear()
def test_id_generation(self, monkeypatch, tmpdir): monkeypatch.chdir(tmpdir) conf = Config(TimeGridConf(0.001, save_step=.0005, step=0.0001), SpatialMeshConf((10, 10, 10), (1, 1, 1)), sources=[ParticleSourceConf('gas', Box((4, 4, 4), size=(1, 1, 1)), 50, 0, np.zeros(3), 0.00), ParticleSourceConf('gas2', Box((5, 5, 5), size=(1, 1, 1)), 50, 0, np.zeros(3), 0.00)], particle_interaction_model=ParticleInteractionModelConf('noninteracting') ) assert len(conf.sources) == 2 sim = conf.make() assert len(sim.particle_sources) == 2 assert len(sim.particle_arrays) == 0 sim.start_pic_simulation() assert len(sim.particle_sources) == 2 assert len(sim.particle_arrays) == 2 assert_array_equal(sim.particle_arrays[0].ids, range(50)) assert_array_equal(sim.particle_arrays[1].ids, range(50, 100))
def test_id_generation(self, backend_and_solver): conf = Config(TimeGridConf(0.001, save_step=.0005, step=0.0001), SpatialMeshConf((10, 10, 10), (1, 1, 1)), sources=[ ParticleSourceConf('gas', Box((4, 4, 4), size=(1, 1, 1)), 50, 0, np.zeros(3), 0.00), ParticleSourceConf('gas2', Box((5, 5, 5), size=(1, 1, 1)), 50, 0, np.zeros(3), 0.00) ], particle_interaction_model=ParticleInteractionModelConf( 'noninteracting')) assert len(conf.sources) == 2 sim = conf.make() assert len(sim.particle_sources) == 2 assert len(sim.particle_arrays) == 0 Runner(sim).start() assert len(sim.particle_sources) == 2 assert len(sim.particle_arrays) == 1 sim.particle_arrays[0].xp.testing.assert_array_equal( sim.particle_arrays[0].ids, range(100))