Correlation Function¶
This module permits the implementation of a user-defined time correlation function within the Lua simulation script.
The following example shows the use of this module together with
halmd.observables.dynamics.blocking_scheme
to determine the
mean-square displacement of the centre of mass of a certain particle group.
From this, the collective self-diffusion constant may be obtained. The
centre of mass is computed efficiently by
halmd.observables.thermodynamics.center_of_mass()
, the squared
displacement is then computed by the script function passed as
correlate
.
local msv = observables.thermodynamics({box = box, group = group, force = force})
local collective_msd = dynamics.correlation({
-- acquire centre of mass
acquire = function()
return msv:center_of_mass()
end
-- correlate centre of mass at first and second point in time
, correlate = function(first, second)
local result = 0
for i = 1, #first do
result = result + math.pow(second[i] - first[i], 2)
end
return result
end
-- module description
, desc = "collective mean-square displacement of AA particles"
})
local blocking_scheme = dynamics.blocking_scheme({
max_lag = max_lag
, every = 100
, size = 10
, separation = separation
})
blocking_scheme:correlation({
tcf = collective_msd, file = file
, location = {"dynamics", "AA", "collective_mean_square_displacement"}
})
-
class
halmd.observables.dynamics.
correlation
(args)¶ Construct user-defined correlation function.
Parameters: - args – keyword arguments
- args.acquire – callable(s) that return a (multi-dimensional) value
- args.correlate – callable that accepts two values and returns a
number
or a numerictable
- args.shape (number table) – array shape of the result (optional)
- args.location (string table) – default location within file
- args.desc (string) – module description
The argument
acquire
is a callable or a table of up to 2 callables that yield the samples to be correlated.The argument
shape
specifies the array shape of the outcomes ofcorrelate
. It is only required if the result is atable
. Currently, only 1-dimensional arrays are supported, for whichshape = { size }
.The argument
location
defines the default value ofwriter()
. For H5MD files, it obeys the structure {"dynamics"
, particle group, name of correlation function}.-
acquire
()¶ Acquire sample(s).
Returns: sample
-
correlate
(first, second)¶ Correlate two samples.
Parameters: - first – first sample
- second – second sample
Returns: value
-
desc
¶ Module description.
-
class
writer
(args)¶ Construct file writer.
Parameters: - args (table) – keyword arguments
- args.file – instance of file writer
- args.location (string table) – location within file
Returns: file writer as returned by
file:writer()
.The argument
location
specifies a path in a structured file format like H5MD given as a table of strings. It defaults toargs.location
passed upon construction of the correlation module.