2#include "IO/InputBlock.hpp"
3#include "LinAlg/include.hpp"
11class CorrelationPotential;
50enum class SplineType { Derevianko, Johnson };
51inline auto parseSplineType(std::string_view type) {
52 return (type ==
"Johnson" || type ==
"johnson") ? SplineType::Johnson :
53 SplineType::Derevianko;
58 Parameters(std::string states, std::size_t n, std::size_t k,
double r0,
59 double reps,
double rmax,
bool positronQ,
60 SplineType itype = SplineType::Derevianko,
61 bool in_orthogonalise =
false);
66 double r0{}, reps{}, rmax{};
67 bool positronQ{
false};
68 SplineType type{SplineType::Derevianko};
69 bool orthogonalise{
false};
91std::vector<DiracSpinor>
form_basis(
const Parameters ¶ms,
93 const bool correlationsQ =
false);
95double check(
const std::vector<DiracSpinor> &basis,
96 const std::vector<DiracSpinor> &orbs,
bool print_warning =
true);
99std::pair<std::vector<DiracSpinor>, std::vector<DiracSpinor>>
101 const std::size_t k_spl,
const double r0_spl,
102 const double rmax_spl, std::shared_ptr<const Grid> rgrid,
104 SplineType itype = SplineType::Derevianko);
110 const std::vector<DiracSpinor> &d_basis,
112 const bool correlationsQ =
false,
113 SplineType itype = SplineType::Derevianko);
121 std::vector<DiracSpinor> *basis_positron,
122 const std::vector<DiracSpinor> &spl_basis,
123 const int kappa,
const int max_n,
129std::vector<double>
sumrule_TKR(
const std::vector<DiracSpinor> &basis,
130 const std::vector<double> &r,
134std::vector<double>
sumrule_DG(
int nDG,
const std::vector<DiracSpinor> &basis,
135 const Grid &gr,
double alpha,
bool print);
137std::pair<double, double> r_completeness(
const DiracSpinor &Fv,
138 const std::vector<DiracSpinor> &basis,
139 const Grid &gr,
bool print =
false);
Stores radial Dirac spinor: F_nk = (f, g)
Definition DiracSpinor.hpp:41
Holds grid, including type + Jacobian (dr/du)
Definition Grid.hpp:31
Matrix class; row-major.
Definition Matrix.hpp:35
Vector class (inherits from Matrix)
Definition Vector.hpp:9
Stores Wavefunction (set of valence orbitals, grid, HF etc.)
Definition Wavefunction.hpp:36
In-out (timers, profilers, and read/write data)
Definition ChronoTimer.hpp:9
Many-body perturbation theory.
Definition CI_Integrals.hpp:9
Constucts of spinor/orbital basis using B-splines (DKB/Reno/Derevianko-Beloy method)
Definition BSplineBasis.cpp:20
std::vector< double > sumrule_DG(int nDG, const std::vector< DiracSpinor > &basis, const Grid &gr, double alpha, bool print)
Drake-Gordon sum rule (basis test); should =0 (must incl -ve energy states)
Definition BSplineBasis.cpp:459
void expand_basis_orbitals(std::vector< DiracSpinor > *basis, std::vector< DiracSpinor > *basis_positron, const std::vector< DiracSpinor > &spl_basis, const int kappa, const int max_n, const LinAlg::Vector< double > &e_values, const LinAlg::Matrix< double > &e_vectors, const Wavefunction &wf)
Expands basis orbitals in terms of spline orbitals, by diagonalising Hamiltonian.
Definition BSplineBasis.cpp:357
std::pair< std::vector< DiracSpinor >, std::vector< DiracSpinor > > form_spline_basis(const int kappa, const std::size_t n_states, const std::size_t k_spl, const double r0_spl, const double rmax_spl, std::shared_ptr< const Grid > rgrid, const double alpha, SplineType type)
Forms the underlying spline basis (which is not kept)
Definition BSplineBasis.cpp:193
std::pair< LinAlg::Matrix< double >, LinAlg::Matrix< double > > fill_Hamiltonian_matrix(const std::vector< DiracSpinor > &spl_basis, const std::vector< DiracSpinor > &d_basis, const Wavefunction &wf, const bool correlationsQ, SplineType type)
Calculates + reyurns the Hamiltonian (and ) matrices.
Definition BSplineBasis.cpp:277
std::vector< double > sumrule_TKR(const std::vector< DiracSpinor > &basis, const std::vector< double > &r, bool print)
TKR sum rule (basis test); should =0 (must include -ve energy states)
Definition BSplineBasis.cpp:422
std::vector< DiracSpinor > form_basis(const Parameters ¶ms, const Wavefunction &wf, const bool correlationsQ)
Forms + returns the basis orbitals (expanded in terms of splines)
Definition BSplineBasis.cpp:53