![]() |
|
High-precision calculations for one- and two-valence atomic systems
|
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).
#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. | |
| 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.
| 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.
| Coulomb::meTable<double> CI::Sigma1Correction::S1 {} |
One-body Sigma_1 matrix elements (uncorrected), <a|Sigma_1|b>
| Coulomb::meTable<double> CI::Sigma1Correction::dS1 {} |
Energy derivative matrix elements, <a|dSigma_1/dE|b>
| std::map<int, double> CI::Sigma1Correction::e_sigma {} |
Energy Sigma_1 was evaluated at, for each kappa.
| std::map<DiracSpinor::Index, double> CI::Sigma1Correction::en {} |
Single-particle orbital energies, keyed by nk_index.
| 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.