new nongaussian-parameter fix

Hi. I have implemented a new fix that calculates the non-Gaussian diffusion parameter

NGP(t) = 3<(r(t)-r(0))^4>/(5*<(r(t)-r(0))^2>^2) - 1.

This quantity is very useful in studies of dynamical heterogeneity. The fix is based on some slight modifications of fix_msd, and similarly calculates a vector

<(r(t)-r(0))^2> <(r(t)-r(0))^4>

Hi. Sorry about the previous email, I hit send accidentally.

I have implemented a new fix that calculates the non-Gaussian diffusion parameter

NGP(t) = 3<(r(t)-r(0))^4>/(5*<(r(t)-r(0))^2>^2) - 1.

This quantity is very useful in studies of dynamical heterogeneity. The fix is based on some slight modifications of fix_msd, and similarly calculates a vector

<(r(t)-r(0))^2> <(r(t)-r(0))^4> NGP(t)

I call the fix “msd2” and attach the compute_msd2.cpp and compute_msd2.h files as well as an input script that calculates and outputs the above vector for LAMMPS’ “melt” example. I have verified that it works (including on restarts) and produces physically reasonable results.

Could you (Steve, or another of the developers) please integrate this into the stock version? It would be much appreciated :slight_smile:

Thanks,

Rob

compute_msd2.cpp (5.17 KB)

compute_msd2.h (1.32 KB)

in.melt.msd2 (706 Bytes)

Hi. To clarify, it’s a new compute, not a new “fix”. Sigh… too early in the morning.

Sounds good - I need a doc page, possibly just an
enhanced version of doc/compute_msd.txt.
With that formula in a LaTeX file for doc/Eqs, like
the others.

And we need a more descriptive name than msd2.
Maybe compute msd/nongauss ?

Steve

Hi, Steve. Thanks! I changed it to msd/nongaussian as you suggested, and made up the .doc page and latex file as well as a .jpg of the equation. Also attached are the new compute_msd_nongaussian.cpp and .h files, as well as an updated input script for LAMMPS’ “melt” example. I’ve verified these compile and give the same results as before. Please let me know if the new .doc page is adequate.

Looking forward to getting this integrated :slight_smile:

Thanks,
Rob

compute_msd_nongaussian.txt (4.19 KB)

compute_msd_nongaussian.cpp (5.24 KB)

compute_msd_nongaussian.h (1.39 KB)

in.melt.msdnongaussian (721 Bytes)

compute_msd_nongaussian.tex (123 Bytes)

compute_msd_nongaussian.jpg

Just added it as compute msd/nongauss, and made
it a derived class from ComputeMSD since several
methods are just duplicates.

Thanks,
Steve

Thanks a lot, Steve!

Rob