2#include "CorePolarisation.hpp"
10class CorrelationPotential;
66 std::vector<std::vector<DiracSpinor>> m_X{};
67 std::vector<std::vector<DiracSpinor>> m_Y{};
68 std::vector<std::vector<DiracSpinor>> m_hFcore{};
69 std::vector<std::vector<DiracSpinor>> m_hFcore_minus{};
73 const std::vector<DiracSpinor> m_core;
78 bool m_eps_sqrt{
false};
81 bool m_use_anderson{
true};
85 bool m_use_anderson_ms{
true};
125 virtual void solve_core(
double omega,
int max_its = 100,
126 bool print =
true)
override;
159 virtual void clear()
override;
164 bool conj =
false)
const override;
167 bool conj =
false)
const override;
174 const int kappa_x)
const;
199 const int kappa_beta,
201 StateType st = StateType::ket,
bool incl_dV =
true)
const;
204 std::vector<DiracSpinor>
207 StateType st = StateType::ket,
bool incl_dV =
true)
const;
214 std::vector<std::vector<DiracSpinor>>
217 std::vector<std::vector<DiracSpinor>>
218 form_hFcore_minus(
const std::vector<std::vector<DiracSpinor>> &hFcore)
const;
225 const std::vector<std::vector<DiracSpinor>> &X,
226 const std::vector<std::vector<DiracSpinor>> &Y)
const;
229 void initialise_dPsi();
232 std::pair<double, std::string> tdhf_core_it(
double omega,
double eta_damp);
234 void solve_ms_core(std::vector<DiracSpinor> &dFb,
const DiracSpinor &Fb,
235 const std::vector<DiracSpinor> &hFbs,
const double omega,
236 dPsiType XorY,
double eps_ms = 1.0e-9)
const;
241 dPsiType XorY,
double eps_ms = 1.0e-9)
const;
246 std::pair<double, std::string>
247 eps_dPsi(
const std::vector<std::vector<DiracSpinor>> &Xnew,
248 bool relative)
const;
252 bool above_ionisation_threshold(
double omega)
const;
256 std::vector<double> dPsi_vector()
const;
257 void set_dPsi_vector(
const std::vector<double> &state);
260 TDHF &operator=(
const TDHF &) =
delete;
General tensor operator (virtual base class); all single-particle (one-body) tenosor operators derive...
Definition TensorOperator.hpp:198
Stores radial Dirac spinor: F_nk = (f, g)
Definition DiracSpinor.hpp:55
Virtual base class for core-polarisation (RPA); computes dV corrections.
Definition CorePolarisation.hpp:147
Uses TDHF to include core-polarisation (RPA) corrections to matrix elements of an external field oper...
Definition TDHF.hpp:58
virtual void clear() override
Clears the internal state back to pre solve_core()
Definition TDHF.cpp:80
void solve_core_damped(double omega, int max_its=128, bool print=true)
As solve_core(), by damped iteration only (no fallback).
Definition TDHF.cpp:397
const DiracSpinor & get_dPsi_x(const DiracSpinor &Fc, dPsiType XorY, const int kappa_x) const
Returns const ref to dPsi orbital of given kappa.
Definition TDHF.cpp:97
double dV(const DiracSpinor &Fa, const DiracSpinor &Fb, bool conj=false) const override
Returns reduced matrix element <a||dV||b>, or the conjugate <a||dV^dag||b> if conj=true.
Definition TDHF.cpp:610
void solve_core_anderson(double omega, int max_its=128, bool print=true)
As solve_core(), by Anderson mixing only (no fallback).
Definition TDHF.cpp:513
void set_anderson(bool andersonQ)
Method of solve_core(): Anderson mixing if true (default), damped iteration if false; the other is th...
Definition TDHF.hpp:155
std::vector< DiracSpinor > solve_dPsis(const DiracSpinor &Fv, const double omega, dPsiType XorY, const MBPT::CorrelationPotential *const Sigma=nullptr, StateType st=StateType::ket, bool incl_dV=true) const
Forms the mixed states phi^v_+- for all kappa channels; see solve_dPsi.
Definition TDHF.cpp:106
const std::vector< DiracSpinor > & get_dPsis(const DiracSpinor &Fc, dPsiType XorY) const
Returns const ref to dPsi orbitals for given core orbital Fc.
Definition TDHF.cpp:87
virtual void solve_core(double omega, int max_its=100, bool print=true) override
Solves TDHF equations self-consistently for core electrons at frequency omega.
Definition TDHF.cpp:357
virtual Method method() const override
Returns RPA method.
Definition TDHF.hpp:157
DiracSpinor dV_rhs(int kappa_n, const DiracSpinor &Fm, bool conj=false) const override
Returns [dV_pm * phi_m]_kappa: RHS of TDHF eq., projected onto kappa (see namespace doc)
Definition TDHF.cpp:616
DiracSpinor solve_dPsi(const DiracSpinor &Fv, const double omega, dPsiType XorY, const int kappa_beta, const MBPT::CorrelationPotential *const Sigma=nullptr, StateType st=StateType::ket, bool incl_dV=true) const
Forms the mixed states phi^v_+- for valence state Fv (including core pol.): single kappa channel.
Definition TDHF.cpp:119
Breit potentials for one- (Hartree-Fock Breit) and two-body Breit integrals.
Definition Breit.hpp:88
Solves relativistic Hartree-Fock equations for core and valence. Optionally includes Breit and QED ef...
Definition HartreeFock.hpp:114
Correlation potential, Sigma, for valence states.
Definition CorrelationPotential.hpp:108
Dirac operators: TensorOperator base class and derived implementations for single-particle (one-body)...
Definition SecondOrder.hpp:7
Core-polarisation (RPA) corrections to matrix elements of an external field.
Definition MatrixElements.hpp:9
StateType
Whether the state is a bra or ket.
Definition CorePolarisation.hpp:119
dPsiType
Selects the perturbed orbital: X = varphi_+, Y = varphi_-.
Definition CorePolarisation.hpp:117
Method
Available RPA/core-polarisation methods.
Definition CorePolarisation.hpp:87
Functions and classes for Hartree-Fock.
Definition CI_Integrals.hpp:16
Many-body perturbation theory.
Definition MatrixElements.hpp:12
void Breit(const IO::InputBlock &input, const Wavefunction &wf)
Breit corrections to HF energies.
Definition Breit.cpp:44