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

Effective VertexQED operator. More...

#include <QED.hpp>

Inherits DiracOperator::TensorOperator.

Public Member Functions

 VertexQED (const TensorOperator *const h0, const Grid &rgrid, double a=1.0, double b=1.0)
 
std::string name () const override final
 Returns "name" of operator (e.g., 'E1')
 
std::string units () const override final
 Returns units of operator (usually au, may be MHz, etc.)
 
double angularF (const int ka, const int kb) const override final
 angularF: links radiation integral to RME. RME = <a||h||b> = angularF(a,b) * radial_int(a,b)
 
double angularCff (int ka, int kb) const override final
 
double angularCgg (int ka, int kb) const override final
 
double angularCfg (int ka, int kb) const override final
 
double angularCgf (int ka, int kb) const override final
 
 VertexQED (const DiracOperator::VertexQED &)=delete
 
VertexQEDoperator= (const DiracOperator::VertexQED &)=delete
 
- Public Member Functions inherited from DiracOperator::TensorOperator
bool freqDependantQ () const
 
bool isZero (const int ka, int kb) const
 If matrix element <a|h|b> is zero, returns true.
 
bool isZero (const DiracSpinor &Fa, const DiracSpinor &Fb) const
 
bool selectrion_rule (int twoJA, int piA, int twoJB, int piB) const
 
virtual void updateFrequency (const double)
 Update frequency for frequency-dependant operators.
 
void scale (double lambda)
 Permanently re-scales the operator by constant, lambda.
 
const std::vector< double > & getv () const
 Returns a const ref to vector v.
 
double getc () const
 Returns a const ref to constant c.
 
int get_d_order () const
 
bool imaginaryQ () const
 returns true if operator is imaginary (has imag MEs)
 
int rank () const
 
int parity () const
 returns parity, as integer (+1 or -1)
 
int symm_sign (const DiracSpinor &Fa, const DiracSpinor &Fb) const
 returns relative sign between <a||x||b> and <b||x||a>
 
virtual DiracSpinor radial_rhs (const int kappa_a, const DiracSpinor &Fb) const
 radial_int = Fa * radial_rhs(a, Fb) (a needed for angular factor)
 
virtual double radialIntegral (const DiracSpinor &Fa, const DiracSpinor &Fb) const
 Defined via <a||h||b> = angularF(a,b) * radialIntegral(a,b) (Note: if radial_rhs is overridden, then radialIntegral must also be_.
 
double rme3js (const int twoja, const int twojb, int two_mb=1, int two_q=0) const
 ME = rme3js * RME.
 
DiracSpinor reduced_rhs (const int ka, const DiracSpinor &Fb) const
 <a||h||b> = Fa * reduced_rhs(a, Fb) (a needed for angular factor)
 
DiracSpinor reduced_lhs (const int ka, const DiracSpinor &Fb) const
 <b||h||a> = Fa * reduced_lhs(a, Fb) (a needed for angular factor)
 
double reducedME (const DiracSpinor &Fa, const DiracSpinor &Fb) const
 The reduced matrix element.
 
double fullME (const DiracSpinor &Fa, const DiracSpinor &Fb, std::optional< int > two_ma=std::nullopt, std::optional< int > two_mb=std::nullopt, std::optional< int > two_q=std::nullopt) const
 Returns "full" matrix element, for optional (ma, mb, q) [taken as int 2*]. If not specified, returns z-component (q=0), with ma=mb=min(ja,jb)
 

Static Public Member Functions

static double a (double z)
 Fitting factor for hyperfine. Default a(Z)
 
static std::vector< double > vertex_func (const Grid &rgrid, double a, double b, std::vector< double > v={})
 Takes existing radial vector, multiplies by: More...
 

Additional Inherited Members

- Protected Member Functions inherited from DiracOperator::TensorOperator
 TensorOperator (int rank_k, Parity pi, double constant=1.0, const std::vector< double > &inv={}, int diff_order=0, Realness RorI=Realness::real, bool freq_dep=false)
 
- Protected Attributes inherited from DiracOperator::TensorOperator
int m_rank
 
Parity m_parity
 
int m_diff_order
 
Realness opC
 
bool m_freqDependantQ {false}
 
double m_constant
 
std::vector< double > m_vec
 

Detailed Description

Effective VertexQED operator.

Takes in any TensorOperator (DiracOperator) h, and forms the corresponding effective QED vertex operator, defined:

\[ \hat h_{\rm vertex} = A \alpha \exp(-b r / \lambda_c) \]

where

\[ \lambda_c = 1/ \alpha \approx 137 \]

A and b are fitting factors; typically b=1

Member Function Documentation

◆ vertex_func()

static std::vector<double> DiracOperator::VertexQED::vertex_func ( const Grid rgrid,
double  a,
double  b,
std::vector< double >  v = {} 
)
inlinestatic

Takes existing radial vector, multiplies by:

a(Z) * a0 * exp( - b * r / a0). a0 = alpha = 1/137. b=1 by default. A should be fitted. a(Z) = 1.0 + 28.5/Z nb: can give it an empty vector, to just get the exponential function


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