コード例 #1
0
ファイル: System.py プロジェクト: daveb-dev/ParticleModule
def get_system_from_options(options_file=None,
                            boundary_grid=None,
                            block=None,
                            velocity_name='Velocity',
                            dist=None):
    """Derive particle system from options file."""

    reader = Options.OptionsReader(options_file)

    if boundary_grid is None:

        mesh = IO.GmshMesh()
        mesh.read(reader.get_mesh_filename())

        boundary_grid = IO.make_boundary_from_msh(mesh)

    boundary = IO.BoundaryData(bnd=boundary_grid,
                               outlet_ids=reader.get_outlet_ids(),
                               inlets=reader.get_inlets(),
                               dist=dist)

    if block is None:
        system = System(boundary,
                        base_name=reader.get_name(),
                        gravity=reader.get_gravity(),
                        omega=reader.get_rotation()[0],
                        velocity_name=velocity_name)
    else:
        system = System(boundary,
                        block=block,
                        gravity=reader.get_gravity(),
                        omega=reader.get_rotation()[0],
                        velocity_name=velocity_name)

    return system
コード例 #2
0
def test_gyre_collision():
    """Regression test for Mclaury coefficient"""

    bndg = IO.BoundaryData('particle_model/tests/data/gyre_boundary.vtu')
    system = System.System(bndg, coeff=1.0,
                           temporal_cache=temp_cache('gyre_0.vtu'))

    from math import pi

    pos = numpy.array((0.8, 0.45, 0.0))
    vel = numpy.array((2.0 * pi, 0.0, 0.0))

    part = Particles.Particle((pos, vel), delta_t=0.001, parameters=PAR1,
                              system=system)

    for i in range(100):
        del i
        part.update(method="AdamsBashforth2")

    assert part.pos[0] < 1.0
    assert part.pos[1] < 1.0
    assert part.pos[0] > 0.0
    assert part.pos[1] > 0.0

    assert len(part.collisions) == 1
    assert part.collisions[0].pos[0] == 1.0
    assert abs(Collision.mclaury_mass_coeff(part.collisions[0]) - 16.444037345317486) < 1.0e-8
コード例 #3
0
def test_stokes_terminal_velocity():
    """Test stokes terminal"""

    bndc = IO.BoundaryData('particle_model/tests/data/boundary_circle.vtu')
    system = System.System(bndc, base_name='particle_model/tests/data/circle',
                           gravity=numpy.array((0.0, -1.0, 0.0)),
                           rho=0.0, viscosity=1.0)
    diameter = 1e-3
    delta_t = 1.0e-8

    par = ParticleBase.PhysicalParticle(diameter=diameter,
                                     drag=DragModels.stokes_drag,
                                     rho=1.0)

    pos = numpy.zeros((1, 3))
    vel = numpy.zeros((1, 3))

    bucket = Particles.ParticleBucket(pos, vel, 0.0, delta_t=delta_t,
                                      parameters=par,
                                      system=system)

    bucket.run(100*delta_t, write=False, method="RungeKutta4")
    assert abs(bucket.time - 100*delta_t) < 1.0e-8
    assert all(abs(bucket.particles[0].vel
                   - numpy.array((0,
                                  -1.0/18./system.viscosity*par.diameter**2,
                                  0))) < 1.e-8)
コード例 #4
0
ファイル: System.py プロジェクト: daveb-dev/ParticleModule
def get_system_from_reader(reader, boundary_grid=None):
    """Derive system from options reader."""

    if boundary_grid is None:

        mesh = IO.GmshMesh()
        mesh.read(reader.get_mesh_filename())

        boundary_grid = IO.make_boundary_from_msh(mesh)

    boundary = IO.BoundaryData(bnd=boundary_grid)
    system = System(boundary,
                    base_name=reader.get_name(),
                    gravity=reader.get_gravity(),
                    omega=reader.get_rotation()[0])

    return system
コード例 #5
0
def test_particle_bucket_step_do_nothing():
    """ Test initializing a full particle bucket."""
    from numpy import zeros

    bndc = IO.BoundaryData('particle_model/tests/data/boundary_circle.vtu')
    system = System.System(bndc, base_name='particle_model/tests/data/circle')

    num = 1

    pres = zeros((num, 3))
    vel = zeros((num, 3))

    bucket = Particles.ParticleBucket(pres, vel, 0.0, delta_t=0.5,
                                      system=system)

    bucket.run(5.0, write=False)

    assert bucket.time == 5.0
    assert all(bucket.particles[0].pos == 0.0)
    assert all(bucket.particles[0].vel == 0.0)
コード例 #6
0
        """Factory function to mock a temporal cache."""
        del time
        reader = vtk.vtkXMLUnstructuredGridReader()
        reader.SetFileName(self.ldir+'/'+self.fname)
        reader.Update()

        locator = vtk.vtkCellLocator()
        locator.SetDataSet(reader.GetOutput())
        locator.BuildLocator()

        return ([[0.0, self.fname, reader.GetOutput(), locator],
                 [1.0, self.fname, reader.GetOutput(), locator]], 0.0,
                [['Velocity', 'Pressure'], ['Velocity', 'Pressure']])


BOUNDARY = IO.BoundaryData('particle_model/tests/data/rightward_boundary.vtu')
BOUNDARY3D = IO.BoundaryData('particle_model/tests/data/cube_boundary.vtu')
SYSTEM = System.System(BOUNDARY, coeff=1.0, temporal_cache=temp_cache(),
                       rho=1.0e3, )
SYSTEM3D = System.System(BOUNDARY3D, coeff=1.0,
                         temporal_cache=temp_cache('cube_0.vtu'))

MESH = IO.GmshMesh()
MESH.read('particle_model/tests/data/Structured.msh')
MESH3D = IO.GmshMesh()
MESH3D.read('particle_model/tests/data/Structured_cube.msh')

PAR0 = ParticleBase.PhysicalParticle(diameter=1.0e32,rho=1.0)
PAR1 = ParticleBase.PhysicalParticle(diameter=100.0e-4,rho=1.0e3)

def test_tests():