コード例 #1
0
ファイル: test_simulation.py プロジェクト: fizmat/ef_python
 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]
コード例 #2
0
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()
コード例 #3
0
 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))
コード例 #4
0
ファイル: test_simulation.py プロジェクト: fizmat/ef_python
 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))