pycbg.preprocessing.Particles

class pycbg.preprocessing.Particles(mesh, npart_perdim_percell=1, directory='', check_duplicates=True)

Create and write to a file particles from a Mesh object.

Parameters
  • mesh (Mesh object) – Mesh in which the particles will be generated.

  • npart_perdim_percell (int, optional) – Number of particles for each dimensions in one cell. All cells will contain npart_perdim_percell**3 equally spaced particles. Note that particles are equally spaced within a cell, not between cells. Default is 1 .

  • directory (str, optional) – Directory in which the particles file will be saved. If the directory doesn’t already exist, it will be created. It is set by default to the current working directory.

  • check_duplicates (bool, optional) – See CB-Geo MPM documentation for informations on this parameter. Default is True.

particles

Positions of all particles written into the particles file. The id of a particle is the index of its line in this array. Noting npart the number of particles, the shape of particles is (npart,3).

Type

numpy array

npart_perdim_percell

Number of particles for each dimensions in one cell.

Type

int

directory

Directory in which the particles file will be saved.

Type

str

check_duplicates

See CB-Geo MPM documentation.

Type

bool

Notes

  • The particles file is written upon creating the object.

  • One can manually generate the particles by directly setting the particles attribute. It is then necessary to rewrite the particles file using the write_file method.

Examples

Generating 8 particles in a one cell mesh :

>>> mesh = Mesh((1.,1.,1.), (1,1,1))
>>> particles = Particles(mesh, 2)
>>> particles.particles
array([[0.33333333, 0.33333333, 0.33333333],
       [0.33333333, 0.33333333, 0.66666667],
       [0.33333333, 0.66666667, 0.33333333],
       [0.33333333, 0.66666667, 0.66666667],
       [0.66666667, 0.33333333, 0.33333333],
       [0.66666667, 0.33333333, 0.66666667],
       [0.66666667, 0.66666667, 0.33333333],
       [0.66666667, 0.66666667, 0.66666667]])

Manually generating four particles :

>>> mesh = Mesh((1.,1.,1.), (1,1,1))
>>> particles = Particles(mesh)
>>> particles.particles = np.array([[.02, .02, .02],
...                                 [.05, .02, .02],
...                                 [.02, .05, .02],
...                                 [.02, .02, .05]])
>>> particles.write_file()

Note that a mesh has to be specified even if it isn’t used.

__init__(mesh, npart_perdim_percell=1, directory='', check_duplicates=True)

Methods

__init__

create_particles

Create the particles using the given mesh.

write_file

Write the particles file formatted for CB-Geo MPM.

create_particles(mesh, npart_perdim_percell=1)

Create the particles using the given mesh.

Parameters
  • mesh (Mesh object) – Mesh in which the particles will be generated.

  • npart_perdim_percell (int, optional) – Number of particles for each dimensions in one cell. All cells will contain npart_perdim_percell**3 equally spaced particles. Note that particles are equally spaced within a cell, not between cells. Default is 1 .

write_file(filename='particles')

Write the particles file formatted for CB-Geo MPM.

Parameters

filename (str, optional) – Name of the particles file, the extension ‘.txt’ is automatically added. Default is ‘particles’.