pycbg.preprocessing.EntitySets

class pycbg.preprocessing.EntitySets(mesh, particles, directory='')

Create and write to a file entity sets for nodes and particles.

Parameters
  • mesh (Mesh object) – Simulation’s mesh. Has to be specified even if only particles sets are defined.

  • particles (Particles object) – Simulation’s particles. Has to be specified even if only nodes sets are defined.

  • directory (str, optional) – Directory in which the entity sets 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.

nsets

Each element is a list of nodes’ ids belonging to the same set. Its index is the id of the node set.

Type

list of lists of ints

psets

Each element is a list of particles’ ids belonging to the same set. Its index is the id of the particle set.

Type

list of lists of ints

mesh

Simulation’s mesh.

Type

Mesh object

particles

Simulation’s particles.

Type

Particles object

Notes

  • The entity sets file is not written upon creating the object. It is thus necessary to run the write_file method once all entity sets are created.

  • The user has to define a function for each entity set that indicates which particle or node should be included. See create_set method’s documention for more informations.

Examples

Creating a node and a particle set in a one cell mesh :

>>> mesh = Mesh((1.,1.,1.), (1,1,1))
>>> particles = Particles(mesh, 2)
>>> entity_sets = EntitySets(mesh, particles)
>>> node_set_id = entity_sets.create_set(lambda x,y,z: x==0, typ="node")
>>> particle_set_id = entity_sets.create_set(lambda x,y,z: x<.5, typ="particle")

Note that this example uses lambda functions to create sets with only one line. One could also use :

>>> def x_wall(x, y, z): return x==0
>>> node_set_id = entity_sets.create_set(x_wall, typ="node")
__init__(mesh, particles, directory='')

Methods

__init__

create_set

Create a set of nodes or particles and add it to the corresponding list.

write_file

Write the entity sets file formatted for CB-Geo MPM.

create_set(condition_function, typ='particle', kwargs={})

Create a set of nodes or particles and add it to the corresponding list. Nodes and particles are selected using condition_function.

Parameters
  • condition_function (function) – Select particles or nodes using their positions. The inputs should be at least 3 parameters x, y and z that correspond to the position of a node or particle, additional keyword parameters can be passed through kwargs. Should return True if the node or particle belongs to the set, False otherwise.

  • typ ({"node", "particle"}, optional) – Type of set to be created. Default is “particle”.

  • kwargs (dictionary) – Contains the keyword arguments to be passed to condition_function

Returns

Id of the set just appended.

Return type

int

Examples

Creating a node set using a mesh mesh and the particles particles previously defined :

>>> mesh = Mesh((1.,1.,1.), (1,1,1))
>>> particles = Particles(mesh, 2)
>>> entity_sets = EntitySets(mesh, particles)
>>> node_set_id = entity_sets.create_set(lambda x,y,z: x==0, typ="node")
>>> particle_set_id = entity_sets.create_set(lambda x,y,z: x<.5, typ="particle")
write_file(filename='entity_sets')

Write the entity sets file formatted for CB-Geo MPM.

Parameters

filename (str, optional) – Name of the entity set file, the extension ‘.json’ is automatically added. Default is ‘entity_sets’.