ampsci
High-precision calculations for one- and two-valence atomic systems
DiracOperator::PNCnsi_constfinal

ok

PNC nuclear-spin-independent operator with uniform (constant) nuclear density.

Same physics as PNCnsi but uses a uniform spherical density \(\rho = 3/(4\pi R_{\rm nuc}^3)\) inside the nucleus instead of a Fermi distribution. Output units and sign convention match PNCnsi.

Parameters
Rnuc_auNuclear radius in atomic units.

#include <PNC.hpp>

+ Inheritance diagram for DiracOperator::PNCnsi_const:

Public Member Functions

 PNCnsi_const (double Rnuc_au, double factor=1.0, const std::string &in_units="iQw*e-11")
 
std::string name () const override final
 Returns "name" of operator (e.g., 'E1')
 
std::string units () const override final
 Returns units of operator as a string (usually au, may be MHz, etc.)
 
- Public Member Functions inherited from DiracOperator::ScalarOperator
 ScalarOperator (Parity pi, double in_coef, const std::vector< double > &in_v={}, const std::array< int, 4 > &in_g={1, 0, 0, 1}, Realness rori=Realness::real)
 General scalar operator constructor. in_g = {C_ff, C_fg, C_gf, C_gg}.
 
 ScalarOperator (const std::vector< double > &in_v={}, double in_coef=1.0)
 Convenience constructor: even-parity, real, diagonal (C_ff=C_gg=1, C_fg=C_gf=0) scalar operator.
 
virtual double angularF (const int ka, const int kb) const override
 Angular factor A_ab linking the radial integral to the RME.
 
- Public Member Functions inherited from DiracOperator::TensorOperator
 TensorOperator (const TensorOperator &)=default
 
TensorOperatoroperator= (const TensorOperator &)=default
 
 TensorOperator (TensorOperator &&)=default
 
TensorOperatoroperator= (TensorOperator &&)=default
 
bool freqDependantQ () const
 Returns true if the operator is frequency-dependent (requires updateFrequency() calls).
 
bool isZero (int ka, int kb) const
 Returns true if <a|h|b> = 0 by rank/parity selection rules.
 
bool isZero (const DiracSpinor &Fa, const DiracSpinor &Fb) const
 Overload taking DiracSpinors; forwards to isZero(ka, kb).
 
bool selectrion_rule (int twoJA, int piA, int twoJB, int piB) const
 Returns true if the matrix element is non-zero by angular momentum and parity selection rules (arguments are 2j and pi as integers).
 
virtual void updateFrequency (const double)
 Updates the operator for a new frequency omega.
 
virtual void updateRank (int)
 
const std::vector< double > & getv () const
 Returns a const ref to the stored vector v.
 
double getc () const
 Returns the "overall" constant c.
 
bool imaginaryQ () const
 returns true if operator is imaginary (has imag MEs)
 
int rank () const
 Rank k of operator.
 
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 angularCxy (uint8_t x, uint8_t y, int kappa_a, int kappa_b) const
 Dispatches to angularCff/fg/gf/gg based on component indices x, y.
 
virtual std::unique_ptr< TensorOperatorclone () const
 Returns a polymorphic copy of the operator at its current state, or nullptr if cloning is not supported by the derived class.
 
virtual DiracSpinor radial_rhs (const int kappa_a, const DiracSpinor &Fb) const
 Computes the right-hand spinor dF_b for the radial integral.
 
virtual double radialIntegral (const DiracSpinor &Fa, const DiracSpinor &Fb) const
 Radial integral R_ab, defined by RME = angularF(a,b) * radialIntegral(a,b).
 
double rme3js (int twoja, int twojb, int two_mb=1, int two_q=0) const
 3j-symbol factor linking the full ME to the RME.
 
double rme3js (const DiracSpinor &Fa, const DiracSpinor &Fb, int two_mb=1, int two_q=0) const
 Overload of rme3js taking DiracSpinors.
 
DiracSpinor reduced_rhs (const int ka, const DiracSpinor &Fb) const
 Returns angularF(ka,kb) * radial_rhs(ka,Fb); spinor-valued RME action on Fb, used in perturbation theory/TDHF.
 
DiracSpinor reduced_lhs (const int ka, const DiracSpinor &Fb) const
 As reduced_rhs but for the conjugate direction; Fb * reduced_lhs(ka, Fb) = <b||h||a>.
 
double reducedME (const DiracSpinor &Fa, const DiracSpinor &Fb) const
 Returns the reduced matrix element <a||h||b> = A_ab * R_ab.
 
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)
 
double matel_factor (MatrixElementType type, int twoJa, int twoJb) const
 Returns the factor to convert a reduced ME to a different form (Reduced, Stretched, or HFConstant); see MatrixElementType.
 
double matel_factor (MatrixElementType type, const DiracSpinor &Fa, const DiracSpinor &Fb) const
 Overload of matel_factor taking DiracSpinors.
 

Additional Inherited Members

- Protected Member Functions inherited from DiracOperator::ScalarOperator
virtual double angularCff (int, int) const override
 Angular coefficient C_ff for the f_a*f_b term of the radial integral.
 
virtual double angularCgg (int, int) const override
 Angular coefficient C_gg for the g_a*g_b term of the radial integral.
 
virtual double angularCfg (int, int) const override
 Angular coefficient C_fg for the f_a*g_b term of the radial integral.
 
virtual double angularCgf (int, int) const override
 Angular coefficient C_gf for the g_a*f_b term of the radial integral.
 
- Protected Member Functions inherited from DiracOperator::TensorOperator
 TensorOperator (int rank_k, Parity pi, double constant=1.0, const std::vector< double > &vec={}, Realness RorI=Realness::real, bool freq_dep=false)
 Constructs a specific tensor operator. Called by derived classes.
 
- Protected Attributes inherited from DiracOperator::TensorOperator
int m_rank
 
Parity m_parity
 
Realness m_Realness
 
bool m_freqDependantQ {false}
 
double m_constant
 
std::vector< double > m_vec
 

Member Function Documentation

◆ name()

std::string DiracOperator::PNCnsi_const::name ( ) const
inlinefinaloverridevirtual

Returns "name" of operator (e.g., 'E1')

Reimplemented from DiracOperator::TensorOperator.

◆ units()

std::string DiracOperator::PNCnsi_const::units ( ) const
inlinefinaloverridevirtual

Returns units of operator as a string (usually au, may be MHz, etc.)

Reimplemented from DiracOperator::TensorOperator.


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