ampsci
c++ program for high-precision atomic structure calculations of single-valence systems
Public Member Functions | List of all members
MBPT::StructureRad

Calculates Structure Radiation + Normalisation of states, using diagram method. More...

#include <StructureRad.hpp>

Public Member Functions

 StructureRad (const std::vector< DiracSpinor > &basis, double en_core, std::pair< int, int > nminmax={0, 999}, const std::string &Qk_fname="", const std::vector< double > &fk={}, const std::vector< double > &etak={})
 
const std::vector< DiracSpinor > & core () const
 
const std::vector< DiracSpinor > & excited () const
 
const Coulomb::YkTableYk () const
 
const std::optional< Coulomb::QkTable > & Qk () const
 
std::pair< double, double > srTB (const DiracOperator::TensorOperator *const h, const DiracSpinor &w, const DiracSpinor &v, double omega=0.0, const ExternalField::CorePolarisation *const dV=nullptr) const
 Returns sum of Top+Bottom (SR) diagrams, reduced ME: <w||T+B||v>. Returns a pair: {TB, TB+dV}: second includes RPA (if dV given)
 
std::pair< double, double > srC (const DiracOperator::TensorOperator *const h, const DiracSpinor &w, const DiracSpinor &v, const ExternalField::CorePolarisation *const dV=nullptr) const
 Returns Centre (SR) diagrams, reduced ME: <w||C||v>. Returns a pair: {C, C+dV}: second includes RPA (if dV given)
 
std::pair< double, double > norm (const DiracOperator::TensorOperator *const h, const DiracSpinor &w, const DiracSpinor &v, const ExternalField::CorePolarisation *const dV=nullptr) const
 Returns Normalisation of states, reduced ME: <w||h||v>_norm. Returns a pair: {N, N+dV}: second includes RPA (if dV given).
 
std::pair< double, double > srn (const DiracOperator::TensorOperator *const h, const DiracSpinor &w, const DiracSpinor &v, double omega=0.0, const ExternalField::CorePolarisation *const dV=nullptr) const
 Returns sum of SR+Norm diagrams, reduced ME: <w||T+B+C+N||v>. Returns a pair: {SRN, SRN+dV}: second includes RPA (if dV given)
 
double f_root_scr (int k) const
 Effective screening factor for Coulomb lines.
 
double eta_hp (int k) const
 Effective hole-particle factor for polarisation loops.
 
std::pair< double, double > BO (const DiracOperator::TensorOperator *const h, const DiracSpinor &w, const DiracSpinor &v, const ExternalField::CorePolarisation *const dV=nullptr, double fw=1.0, double fv=1.0) const
 Returns Brueckner orbital contribution to the, reduced ME: <w||h||v>_norm. Returns a pair: {N, N+dV}: second includes RPA (if dV given). More...
 
Coulomb::meTable< std::pair< double, double > > srn_table (const DiracOperator::TensorOperator *const h, const std::vector< DiracSpinor > &as, const std::vector< DiracSpinor > &tbs={}, double omega=0.0, const ExternalField::CorePolarisation *const dV=nullptr) const
 constructs an me table of {srn, srn+dv} for each pair or {a,b}
 

Detailed Description

Calculates Structure Radiation + Normalisation of states, using diagram method.

Three functions: srTB(), srC(), norm(). Structure radiation is sum of srTB()+srC(); norm() gives normalisation of states.

Constructor & Destructor Documentation

◆ StructureRad()

MBPT::StructureRad::StructureRad ( const std::vector< DiracSpinor > &  basis,
double  en_core,
std::pair< int, int >  nminmax = {0, 999},
const std::string &  Qk_fname = "",
const std::vector< double > &  fk = {},
const std::vector< double > &  etak = {} 
)

en_core: is defined such that states with e < en_core are in the core, while states with e > en_core are not. Typcially: en_core = max(e_core)-min(e_valence) = wf.FermiLevel(). nminmax is a pair{min, max}: we only used core states with n>=min, and only uses excited states with n<=nmax in the summations. Qk_fname is filename for QkTable - if given it will read/write QkTable to this file, and use QkTable to calculate SR. This ldeads to ~10x speedup in calculation, at cost of using much more memory

Member Function Documentation

◆ BO()

std::pair< double, double > MBPT::StructureRad::BO ( const DiracOperator::TensorOperator *const  h,
const DiracSpinor w,
const DiracSpinor v,
const ExternalField::CorePolarisation *const  dV = nullptr,
double  fw = 1.0,
double  fv = 1.0 
) const

Returns Brueckner orbital contribution to the, reduced ME: <w||h||v>_norm. Returns a pair: {N, N+dV}: second includes RPA (if dV given).

from 10.1006/adnd.1996.0024


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