High-precision calculations for one- and two-valence atomic systems
MixedStatesContinuum.hpp
1#pragma once
2#include "ExternalField/Anderson.hpp"
3#include "Wavefunction/DiracSpinor.hpp"
4#include <vector>
5
6namespace ExternalField {
7
8/*!
9 @brief Continuum (en_+ > 0) mixed-state solve with the standing-wave
10 boundary condition and the non-local exchange iterated in the source: the
11 open channels of @ref TDHFcntm.
12 @details
13 Solves
14 \f[
15 (h_r^{(\kappa)} + V^{\rm nl} - \en_+)\,\varphi = -F_S ,
16 \qquad
17 \en_+ = \en_a + \omega > 0 ,
18 \f]
19 with \f$ \varphi \to K\,F_{\rm irr} \f$ at large r, by outward integration
20 plus F_reg subtraction (@ref DiracODE::solveContinuumForward) on the two
21 real homogeneous solutions at en_+: the regular, energy-normalised
22 continuum orbital F_reg and its irregular partner F_irr
23 (@ref DiracODE::solveContinuumIrregular), in the local potential
24 \f$ v = v_l + U_x \f$, with \f$ U_x \f$ the orbital-independent Kohn-Sham
25 exchange (@ref HF::vex_KS) for conditioning (cancelled in the source at the
26 fixed point). The non-local exchange remainder is iterated in the source
27 with Anderson mixing (@ref anderson_coefficients); K is linear in phi and
28 is mixed with the same coefficients. The iteration also ends when the
29 residual stops improving (the round-off floor of the solve, which can lie
30 above a tight @p eps_target): the best iterate is then returned, with its
31 residual in phi->eps(). After each solve, phi is
32 orthogonalised to Fa when the channel shares its kappa (norm conservation,
33 as the bound solver); other occupied components are kept, since their dV
34 contributions cancel pairwise across channels.
35
36 The hole-particle treatment is the caller's: pass @p vl already adjusted
37 (\f$ v_l - y^0_{aa} \f$) and the hole orbital as @p Fhole, so that the
38 iterated exchange is \f$ V^{\rm exch} - X_a \f$ (@ref HF::vexFa_1el);
39 together these put the ejected electron in the V^{N-1} Hamiltonian (do
40 both or neither).
41
42 If @p Freg already holds the pair at en_+ (Freg->en() == en_+, nonzero),
43 the homogeneous solutions are reused (they depend only on the channel and
44 omega); otherwise they are built and written.
45
46 @param phi In/out: the correction orbital (kappa = channel kappa, as
47 @p Fs). Used as the starting guess if nonzero.
48 @param Freg In/out: regular energy-normalised continuum orbital at en_+.
49 @param Firr In/out: irregular partner.
50 @param K Output (if non-null): standing-wave amplitude, phi -> K F_irr.
51 @param Fa Core orbital phi_a (energy and grid).
52 @param omega Frequency (en_+ = Fa.en() + omega must be > 0).
53 @param vl Local potential (including any hole-particle term).
54 @param alpha Fine-structure constant.
55 @param core Core orbitals (exchange).
56 @param Fs Source spinor F_S (sign as solveMixedState: +h phi_a).
57 @param eps_target Convergence goal of the exchange iteration.
58 @param Fhole Optional hole orbital (V^{N-1} exchange part).
59
60 @warning Requires en_+ > 0 and a grid dense enough at large r; a reused
61 pair must have been built in the same local potential (not
62 checked).
63*/
65 DiracSpinor *Firr, double *K,
66 const DiracSpinor &Fa, double omega,
67 const std::vector<double> &vl, double alpha,
68 const std::vector<DiracSpinor> &core,
69 const DiracSpinor &Fs, double eps_target = 1.0e-9,
70 const DiracSpinor *const Fhole = nullptr);
71
72} // namespace ExternalField
Stores radial Dirac spinor: F_nk = (f, g)
Definition DiracSpinor.hpp:55
Core-polarisation (RPA) corrections to matrix elements of an external field.
Definition MatrixElements.hpp:9
void solveContinuumMixedState(DiracSpinor *phi, DiracSpinor *Freg, DiracSpinor *Firr, double *K, const DiracSpinor &Fa, const double omega, const std::vector< double > &vl, const double alpha, const std::vector< DiracSpinor > &core, const DiracSpinor &Fs, const double eps_target, const DiracSpinor *const Fhole)
Continuum (en_+ > 0) mixed-state solve with the standing-wave boundary condition and the non-local ex...
Definition MixedStatesContinuum.cpp:15