Particle¶
- class halmd.mdsim.particle(args)¶
Construct particle instance.
- Parameters:
args (table) – keyword arguments
args.dimension (number) – dimension of space
args.particles (number) – number of particles
args.species (number) – number of species (default: 1)
args.memory (string) – device where the particle information is stored (optional)
args.precision (string) – floating point precision (optional)
args.label (string) – instance label (default:
all
)
The supported values for
memory
arehost
andgpu
. Ifmemory
is not specified, the memory location is selected according to the compute device.The supported values for
precision
aresingle
anddouble-single
ifmemory
equalsgpu
, anddouble
for host memory. Ifprecision
is not specified, the highest available precision is used.- nparticle¶
Number of particles.
- nspecies¶
Number of particle species.
- memory¶
Device where the particle memory resides.
- precision¶
Floating-point precision of the data stored.
- label¶
Instance label.
- data¶
Pseudo-table providing access to the particle data:
table = particle.data["position"] particle.data["position"] = table
or using the equivalent syntax:
table = particle.data.position particle.data.position = table
The following named arrays holding per-particle data are predefined:
scalar integer data:
id
: particle ID, unique within instance ofhalmd.mdsim.particle
reverse_id
: maps a particle ID to its current array index in memory
scalar floating-point data:
mass
: inertial mass (e.g., forhalmd.mdsim.integrators
)potential_energy
: potential energy felt by each particle, see alsohalmd.observables.thermodynamics
species
: atomic, chemical, or coarse-grained species (e.g., forhalmd.mdsim.potentials
)
vector integer data:
image
: periodic image of the simulation box that contains the given particle
vector floating-point data:
force
: force acting on each particleposition
: position reduced to the original periodic simulation boxvelocity
: velocity of each particle
other floating-point fields:
potential_stress_tensor
: contribution to the potential part of the stress tensor. In \(d\) dimensions, \(d\) diagonal entries of this symmetric tensor are followed by \(d(d-1)/2\) off-diagonal entries.
Warning
Accessing particle data using this table is equivalent to calling
get()
andset()
, respectively, and involves a full copy of the data to a lua table.Warning
During simulation, particle arrays may be reordered in memory according to a space-filling curve, see
halmd.mdsim.sorts
. To access particles in initial order, useget_reverse_id()
to retrieve a map from particle IDs to current particle indices in memory.- get(name)¶
Returns particle data identified by the name of the particle array.
- Parameters:
name (string) – identifier of the particle array
- set(name, data)¶
Set particle data identified by the name of the particle array.
- Parameters:
name (string) – identifier of the particle array
data (table) – table containing the data
- shift_velocity(vector)¶
Shift all velocities by
vector
.
- shift_velocity_group(group, vector)¶
Shift velocities of group by
vector
.
- rescale_velocity(scalar)¶
Rescale magnitude of all velocities by
scalar
.
- rescale_velocity_group(group, scalar)¶
Rescale magnitude of velocities of group by
scalar
.
- shift_rescale_velocity(vector, scalar)¶
First shift, then rescale all velocities.
- shift_rescale_velocity_group(group, vector, scalar)¶
First shift, then rescale velocities of group.
- aux_enable()¶
Enable the computation of auxliliary variables in the next on_force() step. These are:
stress_pot
andpotential_energy
and derived properties (such as the internal energy or the virial). The auxiliary variables should be activated like this:sampler:on_prepare(function() particle:aux_enable() end, every, start)
- on_prepend_force(slot)¶
Connect nullary slot to signal.
- Returns:
signal connection
- on_force(slot)¶
Connect nullary slot to signal.
- Returns:
signal connection
- on_append_force(slot)¶
Connect nullary slot to signal.
- Returns:
signal connection
- __eq(other)¶
- Parameters:
other – instance of
halmd.mdsim.particle
Implements the equality operator
a = b
and returns true if the otherparticle
instance is the same as this one.