ampsci
c++ program for high-precision atomic structure calculations of single-valence systems
|
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::YkTable & | Yk () 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} | |
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.
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
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