Hello,
I am trying to understand what values are being input into e_coul and e_long. I understand that e_coul is the standard real space which can be found in pair_col_long.cpp, for example. What I am particularly confused about, and maybe my understanding of what lammps is doing is wrong, is how 1-2 1-3 1-3 interactions are handled, and in what variable these energies are included. In the OPLS forcefield, we scale 1-2 and 1-3 interactions by 0.0, and 1-4 interaction by 0.5. I believe the k_space.cpp code calculates interactions between all atoms, not excluding bonded pairs. In this reference,
Essmann, U., Perera, L., Berkowitz, M. L., Darden, T., Lee, H., & Pedersen, L. G. (1995). A smooth particle mesh Ewald method. The Journal of Chemical Physics, 103(19), 8577. doi:10.1063/1.470117
The author describes a sum over “masks pairs” where these 1-2, 1-3, 1-4 interactions calculated in the FFT portion of the algorithm are subtracted off. Does this energy term fall into e_coul or e_long? Could someone direct me to the portion of code in lammps that performs this subtraction? Am I correct in saying the self energy is included in the long range term?
Hello,
I am trying to understand what values are being input into e_coul and
e_long. I understand that e_coul is the standard real space which can be
found in pair_col_long.cpp, for example. What I am particularly confused
about, and maybe my understanding of what lammps is doing is wrong, is how
1-2 1-3 1-3 interactions are handled, and in what variable these energies
are included. In the OPLS forcefield, we scale 1-2 and 1-3 interactions by
0.0, and 1-4 interaction by 0.5. I believe the k_space.cpp code calculates
interactions between all atoms, not excluding bonded pairs. In this
reference,
Essmann, U., Perera, L., Berkowitz, M. L., Darden, T., Lee, H., & Pedersen,
L. G. (1995). A smooth particle mesh Ewald method. The Journal of Chemical
Physics, 103(19), 8577. doi:10.1063/1.470117
The author describes a sum over "masks pairs" where these 1-2, 1-3, 1-4
interactions calculated in the FFT portion of the algorithm are subtracted
off. Does this energy term fall into e_coul or e_long? Could someone direct
me to the portion of code in lammps that performs this subtraction? Am I
correct in saying the self energy is included in the long range term?
the way this is done in LAMMPS is the following:
- the kspace part doesn't need to care about anything and does the
long-range for all charges with all other charges.
- when computing the corresponding short range interactions, excluded
pairs are *not* removed from the neighbor list, but their *full* (not
screened) coulomb interaction is removed (from energy and force).
- self energy correction is included in the kspace part.
HTH,
axel.
Thank you very much, axel! So let me make sure I am fully understanding. If I look at pair_coul_long.cpp, the line
if(factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor
is where you are saying the full qi*qj/r interaction is being subtracted, correct? The subtracted terms therefore would fall in the e_coul variable. Why do we subtract the full interaction for 1-4 neighbors? Am I incorrect in thinking the 1-4 scaling factor of 0.5 for the vdw energy applies to the electrostatics, in the case of OPLS?
Thank you very much, axel! So let me make sure I am fully understanding. If
I look at pair_coul_long.cpp, the line
if(factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor
is where you are saying the full qi*qj/r interaction is being subtracted,
by "full" i mean unscreened. the special bond factors are properly
handled. hence the (1.0-factor_coul) term.
correct? The subtracted terms therefore would fall in the e_coul variable.
Why do we subtract the full interaction for 1-4 neighbors? Am I incorrect in
thinking the 1-4 scaling factor of 0.5 for the vdw energy applies to the
electrostatics, in the case of OPLS?
the exclusion scaling is correctly honored, but it is applied to the
unscreened (=full) coulomb. just look at the code. it is really
obvious when you write out each term in full on a piece of paper.
axel.