A velocity observable can be added to correlate atom velocities during simulation. These should be constructable from components and atom ranges. The velocity auto-correlation function (VAF) is $\langle v{i}\cdot v{i} \rangle$.
This opens a general point about observables that we may want to average over multiple atoms and or components.
To that end a general observable could be constructable as
Where the janus_core.helper.correlator.correlations could be extended to spawn correlators for zip'd components and atoms of a and b. Meaning e.g. a pair of observables both equal to Velocity(components=["x", "y", "z"], atoms=[1,2,3]) results in 9 total correlations (atom $1$ $x-x$, atom $1$ y-y, ..., atom $3$ z-z), which are then automatically averaged to a single set of data (the VAF). Sensible defaults leading to the full VAF.
A user could then fully control the atoms and components correlated.
Questions
Should the cases with multiple components and atoms output all correlations to disk? Or just the averaged result? This could be user controlled perhaps.
A velocity observable can be added to correlate atom velocities during simulation. These should be constructable from components and atom ranges. The velocity auto-correlation function (VAF) is $\langle v{i}\cdot v{i} \rangle$.
This opens a general point about observables that we may want to average over multiple atoms and or components.
To that end a general observable could be constructable as
So the vaf above might be something like,
Where the
janus_core.helper.correlator.correlations
could be extended to spawn correlators forzip
'd components and atoms of a and b. Meaning e.g. a pair of observables both equal toVelocity(components=["x", "y", "z"], atoms=[1,2,3])
results in 9 total correlations (atom $1$ $x-x$, atom $1$ y-y, ..., atom $3$ z-z), which are then automatically averaged to a single set of data (the VAF). Sensible defaults leading to the full VAF.A user could then fully control the atoms and components correlated.
Questions