|
ampsci
c++ program for high-precision atomic structure calculations of single-valence systems
|
Solves relativistic Hartree-Fock equations for core and valence. Optionally includes Breit and QED effects. Can include Sigma (correlations) for valence states. Class stores nuc. and direct potentials, a set of yk integrals, and QED potential. Stores the core orbitals. More...
#include <HartreeFock.hpp>
Public Member Functions | |
| HartreeFock (std::shared_ptr< const Grid > rgrid, std::vector< double > vnuc, std::vector< DiracSpinor > core, std::optional< QED::RadPot > vrad=std::nullopt, double m_alpha=PhysConst::alpha, Method method=Method::HartreeFock, double x_Breit=0.0, double eps_HF=0.0, Parametric::Type potential=Parametric::Type::Green, double H_g=0.0, double d_t=0.0) | |
| Method is enum class, eps_HF is convergence goal. | |
| EpsIts | solve_core (bool print=true) |
| Solves HF equations self-consitantly for core orbs. Returns epsilon. | |
| void | solve_valence (std::vector< DiracSpinor > *valence, bool print=true, const MBPT::CorrelationPotential *const Sigma=nullptr) const |
| Solves HF for given valence list. They need not already be solutions. | |
| EpsIts | hf_valence (DiracSpinor &Fv, const MBPT::CorrelationPotential *const Sigma=nullptr, std::optional< double > eta=std::nullopt, std::optional< int > prev_its=std::nullopt) const |
| Solves HF equation (+ Sigma) for single valence state. | |
| double | calculateCoreEnergy () const |
| Calculates the HF core energy (not including Breit?) | |
| DiracSpinor | vexFa (const DiracSpinor &Fa) const |
| Calculates exchange term Vex*Fa. | |
| DiracSpinor | VBr (const DiracSpinor &Fv) const |
| Breit interaction V_Br*Fa. | |
| const Grid & | grid () const |
| Resturns a const reference to the radial grid. | |
| std::shared_ptr< const Grid > | grid_sptr () const |
| Resturns copy of shared_ptr to grid [shared resource] - used when we want to construct a new object that shares this grid. | |
| const std::vector< double > & | vdir () const |
| Returns reference to Vdir (direct HF potential) | |
| std::vector< double > & | vdir () |
| const std::vector< double > & | vnuc () const |
| Returns reference to Vnuc (nuclear potential) | |
| std::vector< double > & | vnuc () |
| std::vector< double > | Hrad_el (int l=0) const |
| Electric part of radiative potential. | |
| std::vector< double > | Hmag (int l=0) const |
| Magnetic (off-diagonal) part of radiative potential. Doesn't currently depend on l. | |
| std::vector< double > | vlocal (int l=0) const |
| vlocal = vnuc + vrad_el + vdir | |
| Method | method () const |
| Which method used to solve HF. | |
| double | zion () const |
| Effective charge at large Z : zion = Z - num_core_electrons. | |
| bool | excludeExchangeQ () const |
| Returns true if exchange not included. | |
| const std::vector< DiracSpinor > & | core () const |
| vector of core orbitals | |
| double | alpha () const |
| Value of fine-structure constant used. | |
| void | set_Vrad (QED::RadPot in_vrad) |
| Update the Vrad used inside HF (only used if we want QED into valence but. | |
| const QED::RadPot * | Vrad () const |
| Get (const) ptr to Vrad - may be null. | |
| QED::RadPot * | Vrad () |
| const HF::Breit * | vBreit () const |
| pointer to Breit - may be nullptr if no breit | |
| double | x_Breit () const |
| Breit scale factor (usualy 0 or 1) | |
| int | num_core_electrons () const |
| Number of electrons in the core. | |
Solves relativistic Hartree-Fock equations for core and valence. Optionally includes Breit and QED effects. Can include Sigma (correlations) for valence states. Class stores nuc. and direct potentials, a set of yk integrals, and QED potential. Stores the core orbitals.
| HF::HartreeFock::HartreeFock | ( | std::shared_ptr< const Grid > | rgrid, |
| std::vector< double > | vnuc, | ||
| std::vector< DiracSpinor > | core, | ||
| std::optional< QED::RadPot > | vrad = std::nullopt, |
||
| double | m_alpha = PhysConst::alpha, |
||
| Method | method = Method::HartreeFock, |
||
| double | x_Breit = 0.0, |
||
| double | eps_HF = 0.0, |
||
| Parametric::Type | potential = Parametric::Type::Green, |
||
| double | H_g = 0.0, |
||
| double | d_t = 0.0 |
||
| ) |
Method is enum class, eps_HF is convergence goal.
Required:
| void HF::HartreeFock::solve_valence | ( | std::vector< DiracSpinor > * | valence, |
| bool | print = true, |
||
| const MBPT::CorrelationPotential *const | Sigma = nullptr |
||
| ) | const |
Solves HF for given valence list. They need not already be solutions.
Note: If given energy is set to zero, states assumed to not be existing solutions; initial energy is guessed and solved from scratch. If initial energy is non-zero, that energy is used and states are assumed to already be (approximate) solutions.