Implementation of a new potential in LAMMPS (to make it available to the community)

Dear LAMMPS-community,

I need to implement a new potential in LAMMPS for a part of my project.

Since later on I want to make it available to the community I need your advice on how to do that properly.

The potential is the one described and deduced in the paper

Lazic I. and Thijsse B., Computational Materials Science 53, 483 (2012)
http://www.sciencedirect.com/science/article/pii/S0927025611004824

This is a potential for Al-O systems with:

  1. a MEAM but Reference Free

  2. a variable charge electrostatic potential (Charge Transfer Ionic Potential), that allows the atoms to determine their charge with a conjugate gradient algorithm on the basis of their local neighbourhood. Here the long range electrostatic potential is computed with a Particle-Particle Particle-Mesh method.

I guess that the problem of implementing this potential in LAMMPS can, therefore, be divided in first implementing the RF-MEAM and then insert the CTIP with all its details.

In the official release I have seen a MEAM potential, but from the documentation this is not reference free.

As for the CTIP, I couldn’t find anything with variable charges in the repository of LAMMPS, but I have heard that PPPM is already implemented.

My questions are:

  1. Has anyone already implemented this potential (by chance in a not-yet-public release) ?

  2. Is a version of the Reference-Free MEAM available somewhere (or is anybody developing it) ?

  3. Where can I find the documentation for the PPPM method ?

  4. Is anyone implementing a variable charge method similar to the one described in the paper above ?

  5. Where can I find a “guide to LAMMPS programming” where I can see the style and sinthax I should conform to
    (in view of making it available later, so not to rewrite it from scratch) ?

Or can somebody give me some advice on how to proceed ?

  1. In what file the conjugate gradient algorithm is implemented
    (so that I can use it and, in case, modify a copy of it for my purposes) ?

  2. Where can I find a flux diagram of LAMMPS source files so to understand what I need to modify ?
    Does it exist ?

Thank you very much in advance for your answers

Best regards,
Daniele Scopece

EMPA, the Swiss Federal Laboratories for Materials Science and Technology, Duebendorf, Switzerland

Daniele,

The Charge Transfer Ionic Potential you are referring to is originated
from the Streitz-Mintmire (SM) potential proposed in 1994. Zhou et al
added some modifications to the original SM potential and called it
CTIP.

I have a working implementation of the 1994 SM potential with variable
charge that is not yet released but will be soon. However, please
note the following:

1) It does not include the 2004 Zhou modifications, hence it is SM not CTIP, and

2) It is currently implemented in a way to work only with Ewald Sum
and Wolf Sum, not PPPM.

Once it is released, you may modify and extend it to suit your need.
More comments to your Q below.

[...]

My questions are:
1) Has anyone already implemented this potential (by chance in a
not-yet-public release) ?

There is no such thing as not-yet-public releases. What you see in
the doc page is what is released.

2) Is a version of the Reference-Free MEAM available somewhere (or is
anybody developing it) ?
3) Where can I find the documentation for the PPPM method ?

http://lammps.sandia.gov/doc/kspace_style.html

4) Is anyone implementing a variable charge method similar to the one
described in the paper above ?

Will be released with 1994 SM soon.

5) Where can I find a "guide to LAMMPS programming" where I can see the
style and sinthax I should conform to
    (in view of making it available later, so not to rewrite it from
scratch) ?

http://lammps.sandia.gov/doc/Section_modify.html

http://lammps.sandia.gov/doc/Developer.pdf

    Or can somebody give me some advice on how to proceed ?
6) In what file the conjugate gradient algorithm is implemented
    (so that I can use it and, in case, modify a copy of it for my purposes)

CG for minimizing forces and equilibrating charges are implemented
very differently. See min_cg.cpp (forces) and fix_qeq_reax.cpp
(charges) for examples.

?
7) Where can I find a flux diagram of LAMMPS source files so to understand
what I need to modify ?

Perhaps starting from the section_modify and developer.pdf

Dear Ray Shan and Mailing list,

A rapid question about variable charge in Lammps.

I have found a presentation dated 6th August, 2013 by Ray Shan.

Here it is written that a fix will be implemented for the variable charge:

fix qeq

My questions are:

Do you have an estimation of when (in what release and time) this fix will become available to Lammps ?

They will work also for any potential (not only comb or reax), right ?

In the current version just the qeq/comb is implemented. Am I right ?

Thank you very much for your answer.

Best regards,

Daniele Scopece

Dear Ray Shan and Mailing list,

A rapid question about variable charge in Lammps.

I have found a presentation dated 6th August, 2013 by Ray Shan.

Here it is written that a fix will be implemented for the variable charge:

fix qeq

Yes, this is under development.

My questions are:

Do you have an estimation of when (in what release and time) this fix will become available to Lammps ?

Soon, possibly within the next couple of months.

They will work also for any potential (not only comb or reax), right ?

Although different models and solvers (implemented as derived classes of the fix qeq class) will not work with any potential, the idea is that one of the derived class will work with any pair style with QEq parameters and charges defined.

In the current version just the qeq/comb is implemented. Am I right ?

The method used in fix qeq/comb is being implemented as a new derived class of fix qeq, but fix qeq/comb will not be a derived class.