Using MPQC LCAO and AO Factory Interfaces

Operators

Mapping of operator labels to operator types is described in the documentation for class mpqc::Operator .

User called functions

  • Return TiledArray array ao_integral.compute(std::wstring) mo_integral.compute(std::wstring)
  • Return TiledArray expression ao_integral(std::wstring) mo_integral(std::wstring)

Atomic Integral

Space labels

  • κ λ μ ν -> obs(primary orbital basis)
  • Α Β Γ Δ -> vbs(secondary orbital basis)
  • Κ Λ Μ Ν -> dfbs(density fitting basis)
  • ε -> min(minimal basis)
  • α β γ δ -> cabs(cabs basis)
  • ρ σ τ υ -> ribs(obs + cabs)
  • One Electron Integral
    cpp
    // Overlap
    ao_integral.compute(L"<κ|λ>");
    ao_integral.compute(L"<α|λ>");
    // Kinetic
    ao_integral.compute(L"<κ|T|λ>");
    // Nuclear
    ao_integral.compute(L"<κ|V|λ>");
    // H Core
    ao_integral.compute(L"<κ|H|λ>");
    // Inverse Square Root
    ao_integral.compute(L"<κ|λ>[inv_sqr]");
  • Two Electron Two Center Integral

only chemical notation allowed

// Coulomb
ao_integral.compute(L"(Κ|G|Λ)");
// Inverse
ao_integral.compute(L"(Κ|G|Λ)[inv]");
// Inverse Square Root
ao_integral.compute(L"(Κ|G|Λ)[inv_sqr]");
  • Two Electron Three Center Integral

only chemical notation allowed

density-fitting basis has to go the bra

// Coulomb
ao_integral.compute(L"(Κ|G| μ λ )");
// R12
ao_integral.compute(L"(Κ|R| μ λ )");
  • Two Electron Four Center Integral
    // convention
    ao_integral.compute(L"<μ1 λ1|G| μ2 λ2 >");
    // density fitting
    ao_integral.compute(L"<μ1 λ1|G| μ2 λ2 >[df]");
    // chemical notation
    ao_integral.compute(L"(μ1 λ1|G| μ2 λ2 )");
    ao_integral.compute(L"(μ1 λ1|G| μ2 λ2 )[df]");
  • J, K, and F
    // Fock
    ao_integral.compute(L"<κ|F|λ>");
    ao_integral.compute(L"<κ|F(α)|λ>");
    ao_integral.compute(L"<κ|F(β)|λ>");
    // Exchange
    ao_integral.compute(L"<κ|K|λ>");
    ao_integral.compute(L"<κ|K(α)|λ>");
    ao_integral.compute(L"<κ|K(β)|λ>");

LCAO Integral

Space labels:

  • m, n -> occ(occupied)
  • m', n' -> frozen_occ (inactive/core occupied)
  • i,j,k,l -> active_occ (correlated occupied)
  • x, y -> active (active orbital used in MR)
  • e,f -> uocc (unoccupied in obs, aka virtual)
  • e',f' -> frozen_uocc (frozen unoccupied in obs)
  • a,b,c,d -> uocc (active unoccupied in obs)
  • p,q,r,s -> any (orbital basis, obs)
  • a', b', c', d' -> other_uocc (cabs = complete basis - orbital basis)
  • A', B', C', D' -> complete_uocc (complete unoccupied = a + a')
  • P',Q',R',S' -> complete_any (complete basis, cbs)
  • One Electron Integral
    mo_integral.compute(L"<i|H|a>");
    mo_integral.compute(L"<i|F|a>");
    mo_integral.compute(L"<i|F(α)|a>");
  • Two Electron Four Center Integral
    mo_integral.compute(L"<i j|G|a b>");
    mo_integral.compute(L"(i a|G|j b)");
    mo_integral.compute(L"<i j|R|P' Q'>");
    // density fitting
    mo_integral.compute(L"<i j|G|a b>[df]");
  • Half Transformed Integral
    mo_integral.compute(L"(Κ|G|i a)");
    mo_integral.compute(L"<p q|G|μ ν>");
const Vector3d & L() const
Definition: group.cpp:74