| 
    ampsci
    
   c++ program for high-precision atomic structure calculations of single-valence systems 
   | 
 
General operator (virtual base class); operators derive from this. More...
#include <TensorOperator.hpp>
Inherited by DiracOperator::E1v, DiracOperator::Ek, DiracOperator::Ek_omega, DiracOperator::Ekv_omega, DiracOperator::M1, DiracOperator::M1nr, DiracOperator::MLVP, DiracOperator::Mk_omega, DiracOperator::ScalarOperator, DiracOperator::VertexQED, DiracOperator::hfs, DiracOperator::j, DiracOperator::jL, DiracOperator::l, DiracOperator::p, and DiracOperator::s.
Public Member Functions | |
| 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 std::string | name () const | 
| Returns "name" of operator (e.g., 'E1')   | |
| virtual std::string | units () const | 
| Returns units of operator (usually au, may be MHz, etc.)   | |
| virtual double | angularCff (int, int) const | 
| virtual double | angularCgg (int, int) const | 
| virtual double | angularCfg (int, int) const | 
| virtual double | angularCgf (int, int) const | 
| virtual double | angularF (const int, const int) const =0 | 
| angularF: links radiation integral to RME. RME = <a||h||b> = angularF(a,b) * radial_int(a,b)   | |
| 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)  | |
Protected Member Functions | |
| 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 | |
| int | m_rank | 
| Parity | m_parity | 
| int | m_diff_order | 
| Realness | opC | 
| bool | m_freqDependantQ {false} | 
| double | m_constant | 
| std::vector< double > | m_vec | 
General operator (virtual base class); operators derive from this.
k is rank, c is multiplicative constant, d_order is derivative order, pi is parity, may be Parity::even or odd. RorI may be Realness::real or Realness::imaginary. Note: You may not construct a TensorOperator. Instead, you must construct one of the derived 'operators' (there are some general ones); see operators.hpp for list of operators. Operators work by overrideing the angularCxx() functions and angularF(). c, v, and Cxx are included in radial integral.
      
  | 
  pure virtual | 
angularF: links radiation integral to RME. RME = <a||h||b> = angularF(a,b) * radial_int(a,b)
Implemented in DiracOperator::jL, DiracOperator::ig0g5jL, DiracOperator::ScalarOperator, DiracOperator::Ek, DiracOperator::Ek_omega, DiracOperator::Ekv_omega, DiracOperator::Mk_omega, DiracOperator::hfs, DiracOperator::ig5jL, DiracOperator::j, DiracOperator::l, DiracOperator::s, DiracOperator::M1, DiracOperator::VertexQED, DiracOperator::MLVP, DiracOperator::E1v, and DiracOperator::M1nr.
      
  | 
  inlinevirtual | 
Returns "name" of operator (e.g., 'E1')
Reimplemented in DiracOperator::Ek, DiracOperator::fieldshift, DiracOperator::jL, DiracOperator::j, DiracOperator::l, DiracOperator::s, DiracOperator::E1v, DiracOperator::Ek_omega, DiracOperator::Ekv_omega, DiracOperator::Mk_omega, DiracOperator::hfs, DiracOperator::g0jL, DiracOperator::ig5jL, DiracOperator::ig0g5jL, DiracOperator::M1, DiracOperator::M1nr, DiracOperator::PNCnsi, DiracOperator::Vrad, DiracOperator::VertexQED, DiracOperator::MLVP, DiracOperator::RadialF, and DiracOperator::dr.
      
  | 
  virtual | 
radial_int = Fa * radial_rhs(a, Fb) (a needed for angular factor)
Reimplemented in DiracOperator::jL, DiracOperator::Ek_omega, DiracOperator::Ekv_omega, DiracOperator::Mk_omega, DiracOperator::M1nr, and DiracOperator::Vrad.
      
  | 
  virtual | 
Defined via <a||h||b> = angularF(a,b) * radialIntegral(a,b) (Note: if radial_rhs is overridden, then radialIntegral must also be_.
Reimplemented in DiracOperator::Ek_omega, DiracOperator::Ekv_omega, DiracOperator::Mk_omega, DiracOperator::jL, DiracOperator::M1nr, and DiracOperator::Vrad.
      
  | 
  inlinevirtual | 
Returns units of operator (usually au, may be MHz, etc.)
Reimplemented in DiracOperator::Ek, DiracOperator::fieldshift, DiracOperator::j, DiracOperator::l, DiracOperator::s, DiracOperator::E1v, DiracOperator::Ek_omega, DiracOperator::Ekv_omega, DiracOperator::Mk_omega, DiracOperator::hfs, DiracOperator::jL, DiracOperator::M1, DiracOperator::M1nr, DiracOperator::PNCnsi, DiracOperator::Vrad, DiracOperator::VertexQED, DiracOperator::MLVP, DiracOperator::RadialF, and DiracOperator::dr.
      
  | 
  inlinevirtual | 
Update frequency for frequency-dependant operators.
Reimplemented in DiracOperator::E1v, DiracOperator::Ek_omega, DiracOperator::Ekv_omega, DiracOperator::Mk_omega, and DiracOperator::M1.