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

Matrix element of tensor operator: J_L(qr)*C^L. More...

#include <jL.hpp>

Inherits DiracOperator::TensorOperator.

Inherited by DiracOperator::g0jL, DiracOperator::ig0g5jL, and DiracOperator::ig5jL.

Public Member Functions

 jL (const Grid &r_grid, const Grid &q_grid, std::size_t max_l, bool subtract_one=false)
 Contruction takes radial grid, a q grid, and a maximum L. Fills lookup table.
 
 jL (const jL &other)
 Constructing from existing operator: copies JL table - faster. Can copy from a jL of different type (g0,g5 etc)
 
jLoperator= (const jL &)=delete
 
std::size_t L () const
 Current value of L (should = rank)
 
std::size_t max_L () const
 Maximum L value in table.
 
const auto & q_grid () const
 
const auto & r_grid () const
 
virtual void set_L_q (std::size_t L, double q)
 Sets the current L and q values for use. Note: NOT thread safe!
 
DiracSpinor radial_rhs (const int kappa_a, const DiracSpinor &Fb) const override
 radial_int = Fa * radial_rhs(a, Fb) (a needed for angular factor)
 
virtual double radialIntegral (const DiracSpinor &Fa, const DiracSpinor &Fb) const override final
 Defined via <a||h||b> = angularF(a,b) * radialIntegral(a,b) (Note: if radial_rhs is overridden, then radialIntegral must also be_.
 
double rme (const DiracSpinor &a, const DiracSpinor &b, std::size_t L, double q) const
 Directly calculate reduced matrix element without needing to call set_L_q - this is thread safe.
 
bool is_zero (const DiracSpinor &a, const DiracSpinor &b, std::size_t L) const
 Checks if specific ME is zero (when not useing set_L_q)
 
virtual double angularF (const int ka, const int kb) const override
 angularF: links radiation integral to RME. RME = <a||h||b> = angularF(a,b) * radial_int(a,b)
 
virtual double angularCff (int, int) const override
 
virtual double angularCgg (int, int) const override
 
virtual double angularCfg (int, int) const override
 
virtual double angularCgf (int, int) const override
 
virtual std::string name () const override
 Returns "name" of operator (e.g., 'E1')
 
std::string units () const override final
 Returns units of operator (usually au, may be MHz, etc.)
 
- 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>
 
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)
 

Protected Attributes

std::size_t m_max_l
 
LinAlg::Matrix< std::vector< double > > m_j_lq_r
 
const Gridm_r_grid
 
const Gridm_q_grid
 
bool m_subtract_one
 
- 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
 

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)
 

Detailed Description

Matrix element of tensor operator: J_L(qr)*C^L.

Common matrix element for scattering problems. Defined as matrix element of J_L(qr)*C^L. Note: Does NOT include the Sqrt(2L+1) term (or 4pi). JL is spherical bessel function. Uses a look-up table for jL, faster than calculating on-the-fly. Note: different to other operators: rank (rank=L) and q are variable. Must use set_L_q (which sets L and q value) prior to use. Note: this is not thread-safe, so cannot parallelise over L or q.


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