ewald

ewald#

Ewald summation for periodic systems.

jrystal.ewald.ewald_coulomb_repulsion(positions: Float[Array, 'atom d'], charges: Float[Array, 'atom'], g_vector_grid: Float[Array, 'x y z 3'], vol: Float, ewald_eta: Float, ewald_grid: Float[Array, 'x y z 3']) Float[source]#

Calculate the nuclei repulsion energy using Ewald summation method.

This function computes the nuclei repulsion energy for a periodic system using the Ewald summation technique, which splits the calculation into real and reciprocal space contributions. The method provides an efficient way to handle long-range Coulomb interactions in periodic systems.

Note

Further reading:

  • Textbook: Martin, R. M. (2020). Electronic structure: basic theory and practical methods. Cambridge university press. (Appendix F.2)

  • Our tutorial: Ewald Summation

Parameters:
  • positions (Float[Array, 'atom d']) – Array of shape (atom, d) containing atomic positions in d-dimensional space.

  • charges (Float[Array, 'atom']) – Array of shape (atom,) containing the charges of each atom.

  • g_vector_grid (Float[Array, 'x y z 3']) – Array of shape (x, y, z, 3) containing the reciprocal lattice vectors.

  • vol (Float) – Float representing the volume of the unit cell.

  • ewald_eta (Float) – Float controlling the split between real and reciprocal space contributions. Also known as the Ewald convergence parameter.

  • ewald_grid (Float[Array, 'x y z 3']) – Array of shape (x, y, z, 3) containing real-space translation vectors for the Ewald sum. Can be generated using jrystal.grid.translation_vectors().

Returns:

The total Coulomb repulsion energy computed using Ewald summation. Includes both real-space and reciprocal-space contributions, as well as self-interaction corrections.

Return type:

Float