Hi all,
I attach a modified fix ave/correlate that can work with per-atom quantities (to take velocity autocorrelation functions, for example). It can auto- and cross-correlate the per-atom quantities, and also cross-correlate them with scalars. I've also included an example VACF script and appropriate modifications to the documentation.
There was also a little bug in the way the lower and auto/lower modes were handled (a < instead of a <=).
Cheers,
Niall
fix_ave_correlate.txt (15.1 KB)
test.in (489 Bytes)
fix_ave_correlate.cpp (31.3 KB)
fix_ave_correlate.h (3.49 KB)
I’ve thought about this before, and have been skeptical
it’s a good idea, because users can easily shoot
themselves in the foot. Am I correct that you have
to store ncol*nrepeat values for every atom?
Where ncol is the number of input values. And
carry that around as atoms migrate? So if
someone uses 1 1000 1000 as their time
windows for vx vy vz, they will end up with
3000 extra values stored and communicated
with every atom?
If so, I think this command could give the
illusion that this is a good way to compute per-atom
correlations, when in some cases it’s not. I.e.
you’d be better off post-processing from a dump file.
So I guess I’d like some feedback from users
as to typical use cases for this and how useful
vs dangerous they think it is ?? E.g. what do
people typically want to do for a VACF?
Also, I am confused by the code whether you
expect to handle a mixture of global and per-atom
quantities and whether you handle the “running”
keyword (more data to store/communicate) or
file output.
In the meantime I will patch the </<= bug - thanks
Steve