Documentation for module eri_mme_integrate

Minimax-Ewald (MME) method for calculating 2-center and 3-center electron repulsion integrals (ERI) of periodic systems using a Hermite Gaussian basis. The method relies on analytical Fourier transforms of Cartesian and Hermite Gaussian functions and Poisson summation formula to represent ERIs as a discrete sum over direct lattice vectors or reciprocal lattice vectors. The reciprocal space potential 1/G^2 is approximated by a linear combination of Gaussians employing minimax approximation. Not yet implemented: 3c ERIs for nonorthogonal cells.

source: eri_mme_integrate.F
Loading...

public Subroutines/Functions:

Low-level integration routine for 2-center ERIs.
Low-level integration routine for 3-center ERIs

SUBROUTINEeri_mme_2c_integrate(param, la_min, la_max, lb_min, lb_max, zeta, zetb, rab, hab, o1, o2, g_count, r_count, normalize, exact_method)

Low-level integration routine for 2-center ERIs.

Arguments:
INTENT(in)
:: param ...
INTEGER,
INTENT(in)
:: la_min ...
INTEGER,
INTENT(in)
:: la_max ...
INTEGER,
INTENT(in)
:: lb_min ...
INTEGER,
INTENT(in)
:: lb_max ...
REAL(dp),
INTENT(in)
:: zeta ...
REAL(dp),
INTENT(in)
:: zetb ...
REAL(dp),
INTENT(in)
:: rab(3) ...
REAL(dp),
INTENT(out)
:: hab(:,:) ...
INTEGER,
INTENT(in)
:: o1 ...
INTEGER,
INTENT(in)
:: o2 ...
INTEGER,
INTENT(inout),
OPTIONAL
:: g_count ...
INTEGER,
INTENT(inout),
OPTIONAL
:: r_count ...
LOGICAL,
INTENT(in),
OPTIONAL
:: normalize calculate integrals w.r.t. normalized Hermite-Gaussians
LOGICAL,
INTENT(in),
OPTIONAL
:: exact_method create reference values by exact method (no minimax approx. and sum is converged to much higher precision)

SUBROUTINEeri_mme_3c_integrate(param, la_min, la_max, lb_min, lb_max, lc_min, lc_max, zeta, zetb, zetc, ra, rb, rc, habc, o1, o2, o3, gg_count, gr_count, rr_count, transp)

Low-level integration routine for 3-center ERIs

Arguments:
INTENT(in)
:: param ...
INTEGER,
INTENT(in)
:: la_min ...
INTEGER,
INTENT(in)
:: la_max ...
INTEGER,
INTENT(in)
:: lb_min ...
INTEGER,
INTENT(in)
:: lb_max ...
INTEGER,
INTENT(in)
:: lc_min ...
INTEGER,
INTENT(in)
:: lc_max ...
REAL(dp),
INTENT(in)
:: zeta ...
REAL(dp),
INTENT(in)
:: zetb ...
REAL(dp),
INTENT(in)
:: zetc ...
REAL(dp),
INTENT(in)
:: ra(3) ...
REAL(dp),
INTENT(in)
:: rb(3) ...
REAL(dp),
INTENT(in)
:: rc(3) ...
REAL(dp),
INTENT(inout)
:: habc(:,:,:) ...
INTEGER,
INTENT(in)
:: o1 ...
INTEGER,
INTENT(in)
:: o2 ...
INTEGER,
INTENT(in)
:: o3 ...
INTEGER,
INTENT(inout),
OPTIONAL
:: gg_count ...
INTEGER,
INTENT(inout),
OPTIONAL
:: gr_count ...
INTEGER,
INTENT(inout),
OPTIONAL
:: rr_count ...
LOGICAL,
INTENT(in),
OPTIONAL
:: transp ...