Thermodynamics¶
This module calculates the instantaneous values of thermodynamic state variables for the particles of a given group.
-
class
halmd.observables.
thermodynamics
(args)¶ Construct thermodynamics module.
Parameters: - args (table) – keyword arguments
- args.group – instance of
halmd.mdsim.particle_groups
- args.box – instance of
halmd.mdsim.box
- args.volume – a number or a nullary function yielding the reference volume (default:
box.volume
)
The argument
volume
expects a callablefunction()
, which is used to query the reference volume of the particle group; the volume may change in the course of the simulation. Ifgroup
refers to the whole simulation domainbox.volume
is passed, which is the default:volume = function() return box.volume end -- convert box.volume into a callable, thereby capturing box
For a sub-domain, e.g., if
group
is an instance ofregion
, returning a constant value may be appropriate.-
particle_number
()¶ Returns the number of particles selected by
args.group
.
-
volume
()¶ Returns the volume as obtained from the function passed upon construction.
-
density
()¶ Returns the number density .
-
kinetic_energy
()¶ Returns the mean kinetic energy per particle: .
-
potential_energy
()¶ Returns the mean potential energy per particle: , where denotes the sum of external and pair potentials.
-
internal_energy
()¶ Returns the mean internal energy per particle: .
-
pressure
()¶ Returns the pressure computed from the virial: .
-
temperature
()¶ Returns the instantaneous temperature as given by the kinetic energy: .
-
total_force
()¶ Returns the total force: .
-
center_of_mass_velocity
()¶ Returns the centre-of-mass velocity: .
-
center_of_mass
()¶ Returns the centre of mass: , where refers to absolute particle positions, i.e., extended by their image vectors for periodic boundary conditions.
-
mean_mass
()¶ Returns the mean particle mass: .
-
virial
()¶ Returns mean virial per particle as computed from the trace of the potential part of the stress tensor:
-
stress_tensor
()¶ Returns the elements of the stress tensor as a vector. The first (= dimension) elements contain the diagonal followed by off-diagonal elements The stress tensor is computed as
where in nearest image convention.
-
dimension
¶ Space dimension of the simulation box as a number.
-
group
¶ Instance of
halmd.mdsim.particle_groups
used to construct the module.
-
writer
(args)¶ Write state variables to a file.
Parameters: - args (table) – keyword arguments
- args.file – instance of file writer
- args.every (number) – sampling interval
- args.location (string table) – location within file (optional)
- args.fields (table) – data fields to be written (optional)
Returns: instance of group writer
The optional argument
location
specifies a path in a structured file format like H5MD given as a table of strings. It defaults to{"observables", group.global and nil or group.label}
.The optional table
fields
specifies which data fields are written. It may either be passed as an indexed table, e.g.{"pressure"}
, or as a dictionary, e.g.,{p = "pressure"}
; the table form is interpreted as{pressure = "pressure", …}
. The keys denote the field names in the file and are appended tolocation
. The values specify the data methods of thethermodynamics
module, i.e., all methods described above except fordimension
andgroup
. The default is{"potential_energy", "pressure", "temperature", "center_of_mass_velocity"}
.-
disconnect
()¶ Disconnect thermodynamics writer from observables sampler.