High-precision calculations for one- and two-valence atomic systems
CI::Sigma1Correction

ok

Derivative (dSigma/dE) correction data for the one-body Sigma_1 matrix elements.

Restores the state dependence of Sigma_1, which is otherwise evaluated at a fixed energy for each kappa. Each one-body matrix element entering a CI matrix element is corrected via corrected_Sigma, with

\[ \delta E = E_0 - E_\Sigma(\kappa) - \epsilon_{\rm spectator}, \]

where \( E_0 \) is the reference total two-electron valence energy, \( E_\Sigma(\kappa) \) is the energy Sigma_1 was evaluated at, and \( \epsilon_{\rm spectator} \) is the orbital energy of the spectator electron in the determinant.

Fill with calculate_dSdE_correction; applied by Hab() (as a correction on top of an h1 table that already includes Sigma_1).

Note
The tables are agnostic to how Sigma_1 is calculated: to use the Feynman (all-orders) Sigma, fill S1 and dS1 from the CorrelationPotential (formSigma at two energies) instead of MBPT::Sigma_vw / MBPT::dSigma_dE_vw.

#include <CI_Integrals.hpp>

Public Member Functions

bool empty () const
 
double delta_h1 (DiracSpinor::Index a, DiracSpinor::Index b, DiracSpinor::Index spectator) const
 Correction to the one-body matrix element <a|h1|b>, given the spectator orbital.
 
bool read_write (const std::string &fname, IO::FRW::RoW rw)
 Reads or writes the correction tables to/from a binary file.
 

Public Attributes

Coulomb::meTable< double > S1 {}
 One-body Sigma_1 matrix elements (uncorrected), <a|Sigma_1|b>
 
Coulomb::meTable< double > dS1 {}
 Energy derivative matrix elements, <a|dSigma_1/dE|b>
 
std::map< int, double > e_sigma {}
 Energy Sigma_1 was evaluated at, for each kappa.
 
std::map< DiracSpinor::Index, double > en {}
 Single-particle orbital energies, keyed by nk_index.
 
double E0 {0.0}
 Reference total two-electron valence energy. 0.0 means "not set": it belongs to a single (J, parity), and is found by iterate_E0.
 

Member Function Documentation

◆ delta_h1()

double CI::Sigma1Correction::delta_h1 ( DiracSpinor::Index  a,
DiracSpinor::Index  b,
DiracSpinor::Index  spectator 
) const

Correction to the one-body matrix element <a|h1|b>, given the spectator orbital.

Returns \( \Sigma_{\rm corrected} - \Sigma \), i.e., the amount to add to an h1 matrix element that already includes (uncorrected) Sigma_1. Returns zero for orbitals not in the tables.

◆ read_write()

bool CI::Sigma1Correction::read_write ( const std::string &  fname,
IO::FRW::RoW  rw 
)

Reads or writes the correction tables to/from a binary file.

Stores S1, dS1, e_sigma, and en. E0 is not stored: it belongs to a single (J, parity) and is set at solve time (see iterate_E0). On read, the existing tables are replaced.

Note
No settings are stored in the file: the filename identifies the calculation (cf. PsiJPi::read_write).
Returns
True on success; false if the file does not exist or cannot be opened (read), or holds no tables.

Member Data Documentation

◆ S1

Coulomb::meTable<double> CI::Sigma1Correction::S1 {}

One-body Sigma_1 matrix elements (uncorrected), <a|Sigma_1|b>

◆ dS1

Coulomb::meTable<double> CI::Sigma1Correction::dS1 {}

Energy derivative matrix elements, <a|dSigma_1/dE|b>

◆ e_sigma

std::map<int, double> CI::Sigma1Correction::e_sigma {}

Energy Sigma_1 was evaluated at, for each kappa.

◆ en

std::map<DiracSpinor::Index, double> CI::Sigma1Correction::en {}

Single-particle orbital energies, keyed by nk_index.

◆ E0

double CI::Sigma1Correction::E0 {0.0}

Reference total two-electron valence energy. 0.0 means "not set": it belongs to a single (J, parity), and is found by iterate_E0.


The documentation for this struct was generated from the following files: