High-precision calculations for one- and two-valence atomic systems
MBPT::Goldstone

ok

Second-order correlation potential, Sigma, from Goldstone diagrams.

Forms the second-order correlation potential for a valence state, as a non-local matrix on a radial sub-grid (every stride-th point of the full grid), by direct summation over a finite basis of internal core (hole) and excited states. Direct and exchange diagrams, with optional effective screening (fk) and hole-particle (etak) factors, and the two-body Breit correction.

Used by CorrelationPotential: for all diagrams (Goldstone method), or for the exchange and Breit diagrams only (Feynman method).

#include <Goldstone.hpp>

Public Member Functions

 Goldstone (const std::vector< DiracSpinor > &basis, const std::vector< DiracSpinor > &core, std::size_t i0, std::size_t stride, std::size_t size, int n_min_core=1, bool include_G=false, const HF::Breit *Br=nullptr)
 Splits basis into internal holes and excited states; forms Yk table.
 
GMatrix Sigma_direct (int kappa_v, double en_v, const std::vector< double > &fk={}, const std::vector< double > &etak={}, int n_max_core=99) const
 Calculate Direct part of correlation potential.
 
GMatrix Sigma_exchange (int kappa_v, double en_v, const std::vector< double > &fk={}, bool fk_both_lines=false) const
 Calculate Exchange part of correlation potential.
 
GMatrix Sigma_both (int kappa_v, double en_v, const std::vector< double > &fk={}, const std::vector< double > &etak={}, int n_max_core=99, bool fk_both_lines=false) const
 Calculate both parts (direct + exchange) of correlation potential.
 
GMatrix dSigma_Breit2 (int kappa_v, double en_v, const std::vector< double > &fk={}, const std::vector< double > &etak={}, int n_max_core=99, int max_n_breit=-1) const
 Calculates 2-body Breit correction to correlation potential.
 
const std::pair< Basis, Basis > & basis () const
 Internal {holes, excited} states (holes: core states with n >= n_min)
 
const Coulomb::YkTable & Yeh () const
 Yk table for each excited-hole pair.
 
std::size_t stride () const
 Sub-grid stride: every stride-th point of the full grid.
 
int n_min () const
 Minimum n of core states included as internal holes.
 
int lmax () const
 Maximum l of the internal excited states.
 

Constructor & Destructor Documentation

◆ Goldstone()

MBPT::Goldstone::Goldstone ( const std::vector< DiracSpinor > &  basis,
const std::vector< DiracSpinor > &  core,
std::size_t  i0,
std::size_t  stride,
std::size_t  size,
int  n_min_core = 1,
bool  include_G = false,
const HF::Breit *  Br = nullptr 
)

Splits basis into internal holes and excited states; forms Yk table.

Basis states found in core with n >= n_min_core are the internal holes; basis states not in core are the excited states. Calculates the Yk integrals for each excited-hole pair.

Parameters
basisBasis for internal lines (core and excited states); must not be empty
coreCore states: used to split basis into holes and excited states
i0Full-grid index of the first sub-grid point
strideSub-grid stride: every stride-th point of the full grid
sizeNumber of sub-grid points
n_min_coreMinimum n of core states included as internal holes (lower core states are frozen)
include_GInclude small-component (fg, gf, gg) parts of Sigma
BrBreit operator, for dSigma_Breit2 (copied; nullptr: none)

Member Function Documentation

◆ Sigma_direct()

GMatrix MBPT::Goldstone::Sigma_direct ( int  kappa_v,
double  en_v,
const std::vector< double > &  fk = {},
const std::vector< double > &  etak = {},
int  n_max_core = 99 
) const

Calculate Direct part of correlation potential.

Direct diagrams, summed over internal holes and excited states, at energy en_v. Each multipolarity k is scaled by fk[k] * etak[k].

Parameters
kappa_vDirac quantum number of the valence state
en_vEnergy at which Sigma is formed
fkEffective screening factors, for each multipole k (missing: 1)
etakEffective hole-particle factors, for each k (missing: 1)
n_max_coreMaximum n of internal hole states (<= 0: all)
Returns
Direct part of Sigma, on the sub-grid.

◆ Sigma_exchange()

GMatrix MBPT::Goldstone::Sigma_exchange ( int  kappa_v,
double  en_v,
const std::vector< double > &  fk = {},
bool  fk_both_lines = false 
) const

Calculate Exchange part of correlation potential.

fk are effective screening factors, applied to the multipole k of the outer Coulomb line; with fk_both_lines, also to the multipole of the inner line (inside \( P^k \)), i.e., \( f_k f_l \).

Returns
Exchange part of Sigma, on the sub-grid.

◆ Sigma_both()

GMatrix MBPT::Goldstone::Sigma_both ( int  kappa_v,
double  en_v,
const std::vector< double > &  fk = {},
const std::vector< double > &  etak = {},
int  n_max_core = 99,
bool  fk_both_lines = false 
) const

Calculate both parts (direct + exchange) of correlation potential.

Direct and exchange diagrams formed together, in a single sum. Parameters as for Sigma_direct() and Sigma_exchange(); here, n_max_core applies to both the direct and exchange diagrams.

Returns
Direct plus exchange parts of Sigma, on the sub-grid.

◆ dSigma_Breit2()

GMatrix MBPT::Goldstone::dSigma_Breit2 ( int  kappa_v,
double  en_v,
const std::vector< double > &  fk = {},
const std::vector< double > &  etak = {},
int  n_max_core = 99,
int  max_n_breit = -1 
) const

Calculates 2-body Breit correction to correlation potential.

Second-order diagrams with one Coulomb line replaced by the two-body Breit interaction (factor of 2: either line), including direct and exchange parts. Each multipolarity k is scaled by fk[k]; etak[k] scales the direct part only.

Parameters
kappa_vDirac quantum number of the valence state
en_vEnergy at which Sigma is formed
fkEffective screening factors, for each multipole k
etakEffective hole-particle factors, for each k (direct part only)
n_max_coreMaximum n of internal hole states (<= 0: all)
max_n_breitMaximum n of internal excited states (<= 0: all)
Returns
Breit correction to Sigma, on the sub-grid.
Note
Must have Breit: returns zero if no Breit operator was given to the constructor.

◆ basis()

const std::pair< Basis, Basis > & MBPT::Goldstone::basis ( ) const
inline

Internal {holes, excited} states (holes: core states with n >= n_min)

◆ Yeh()

const Coulomb::YkTable & MBPT::Goldstone::Yeh ( ) const
inline

Yk table for each excited-hole pair.

◆ stride()

std::size_t MBPT::Goldstone::stride ( ) const
inline

Sub-grid stride: every stride-th point of the full grid.

◆ n_min()

int MBPT::Goldstone::n_min ( ) const
inline

Minimum n of core states included as internal holes.

◆ lmax()

int MBPT::Goldstone::lmax ( ) const
inline

Maximum l of the internal excited states.


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