espressopp.interaction.CoulombRSpace

Coulomb potential and interaction Objects (R space part)

\[\sum^{N}_{i=1} \sum_{j>i \atop r_{ij}<k_{max}} \frac{q_{i}q_{j}}{r_{ij}} erfc(\alpha r_{ij}) - \frac{\alpha}{\sqrt{\pi}} \sum^{N}_{i=1} q_{i}^2\]

This is the R space part of potential of Coulomb long range interaction according to the Ewald summation technique. Good explanation of Ewald summation could be found here [Allen89], [Deserno98].

Example:

>>> vl = espressopp.VerletList(system, rspacecutoff+skin)
>>> coulombR_pot = espressopp.interaction.CoulombRSpace(coulomb_prefactor, alpha, rspacecutoff)
>>> coulombR_int = espressopp.interaction.VerletListCoulombRSpace(vl)
>>> coulombR_int.setPotential(type1=0, type2=0, potential = coulombR_pot)
>>> system.addInteraction(coulombR_int)

!IMPORTANT Coulomb interaction needs k-space part as well EwaldKSpace.

Definition:

It provides potential object CoulombRSpace and interaction object VerletListCoulombRSpace

The potential is based on parameters: Coulomb prefactor (coulomb_prefactor), Ewald parameter (alpha), and the cutoff in R space (rspacecutoff).

>>> coulombR_pot = espressopp.interaction.CoulombRSpace(coulomb_prefactor, alpha, rspacecutoff)

Potential Properties:

  • coulombR_pot.prefactor

    The property ‘prefactor’ defines the Coulomb prefactor.

  • coulombR_pot.alpha

    The property ‘alpha’ defines the Ewald parameter \(\\alpha\).

  • coulombR_pot.cutoff

    The property ‘cutoff’ defines the cutoff in R space.

The interaction is based on the Verlet list (VerletList)

>>> vl = espressopp.VerletList(system, rspacecutoff+skin)
>>> coulombR_int = espressopp.interaction.VerletListCoulombRSpace(vl)

It should include at least one potential

>>> coulombR_int.setPotential(type1=0, type2=0, potential = coulombR_pot)

Interaction Methods:

  • setPotential(type1, type2, potential)

    This method sets the potential for the particles of type1 and type2. It could be a bunch of potentials for the different particle types.

  • getVerletListLocal()

    Access to the local Verlet list.

Adding the interaction to the system:

>>> system.addInteraction(coulombR_int)
espressopp.interaction.CoulombRSpace(prefactor, alpha, cutoff)
Parameters:
  • prefactor (real) – (default: 1.0)
  • alpha (real) – (default: 1.0)
  • cutoff – (default: infinity)
espressopp.interaction.VerletListCoulombRSpace(vl)
Parameters:vl
espressopp.interaction.VerletListCoulombRSpace.getPotential(type1, type2)
Parameters:
  • type1
  • type2
Return type:

espressopp.interaction.VerletListCoulombRSpace.getVerletList()
Return type:A Python list of lists.
espressopp.interaction.VerletListCoulombRSpace.setPotential(type1, type2, potential)
Parameters:
  • type1
  • type2
  • potential