High-precision calculations for one- and two-valence atomic systems
Parametric_potentials.hpp
1#pragma once
2#include <vector>
3
4//! Set of two-parameter parametric electron potentials
5namespace Parametric {
6
7/*!
8 @brief Parametric potential type.
9
10 @details
11 - Green : Green potential, parameters H, d (see green)
12 - Tietz : Tietz potential, parameters g, t (see tietz)
13*/
14enum class Type { Green, Tietz };
15
16/*!
17 @brief Green parametric potential at r; electron part only (no nuclear).
18
19 @details
20 \f[
21 V(r) = \frac{Z}{r} - \frac{1}{r}
22 \left[ 1 + \frac{Z-1}{H\,(e^{r/d} - 1) + 1} \right].
23 \f]
24
25 The total potential is V(r) - Z/r.
26 Returns 0 at r = 0, and for Z = 1 (no screening electrons).
27*/
28double green(int Z, double r, double H, double d);
29
30/*!
31 @brief Tietz parametric potential at r; electron part only (no nuclear).
32
33 @details
34 \f[
35 V(r) = \frac{Z}{r} - \frac{1}{r}
36 \left[ 1 + \frac{(Z-1)\,e^{-g r}}{(1 + t r)^2} \right].
37 \f]
38 The total potential is V(r) - Z/r. Returns 0 at r = 0.
39*/
40double tietz(int Z, double r, double g, double t);
41
42/*!
43 @brief Default Green parameters H and d for given Z, tuned to match HF core.
44
45 @details
46 Tabulated for selected Z, linearly interpolated in between. For Z > 113,
47 H = 5.0, d = 0.75.
48
49 @return Always 0; H and d are set by reference.
50
51 @note For Z = 1, H = d = 0: unused, since there is no screening.
52*/
53int defaultGreenCore(int z, double &H, double &d);
54
55/*!
56 @brief Default Green parameters H and d for given Z, tuned to experiment.
57
58 @details
59 Fitted to the lowest valence J=1/2 states for selected Z; crude quadratic
60 fit in Z otherwise.
61
62 @return Always 0; H and d are set by reference.
63*/
64int defaultGreen(int z, double &H, double &d);
65
66/*!
67 @brief Default Tietz parameters g and t for given Z, tuned to experiment.
68
69 @details
70 Fitted to the lowest valence J=1/2 states for selected Z; crude quadratic
71 fit in Z otherwise.
72
73 @return Always 0; g and t are set by reference.
74*/
75int defaultTietz(int z, double &g, double &t);
76
77/*!
78 @brief Green parametric potential (electron part) on given radial points.
79
80 @details
81 See green(). If H*d is (near) zero, the core-tuned defaults are used
82 (defaultGreenCore).
83
84 @param z Nuclear charge
85 @param r_array Radial points
86 @param H Green parameter H (0: default)
87 @param d Green parameter d (0: default)
88
89 @return V(r) at each point of @p r_array; excludes nuclear potential.
90*/
91std::vector<double> GreenPotential(int z, const std::vector<double> &r_array,
92 double H = 0, double d = 0);
93
94/*!
95 @brief Tietz parametric potential (electron part) on given radial points.
96
97 @details
98 See tietz(). If g*t is (near) zero, the experiment-tuned defaults are used
99 (defaultTietz).
100
101 @param z Nuclear charge
102 @param r_array Radial points
103 @param g Tietz parameter g (0: default)
104 @param t Tietz parameter t (0: default)
105
106 @return V(r) at each point of @p r_array; excludes nuclear potential.
107*/
108std::vector<double> TietzPotential(int z, const std::vector<double> &r_array,
109 double g = 0, double t = 0);
110} // namespace Parametric
Set of two-parameter parametric electron potentials.
Definition Parametric_potentials.cpp:6
double green(int Z, double r, double H, double d)
Green parametric potential at r; electron part only (no nuclear).
Definition Parametric_potentials.cpp:9
int defaultGreen(int z, double &H, double &d)
Default Green parameters H and d for given Z, tuned to experiment.
Definition Parametric_potentials.cpp:76
int defaultGreenCore(int z, double &H, double &d)
Default Green parameters H and d for given Z, tuned to match HF core.
Definition Parametric_potentials.cpp:32
Type
Parametric potential type.
Definition Parametric_potentials.hpp:14
int defaultTietz(int z, double &g, double &t)
Default Tietz parameters g and t for given Z, tuned to experiment.
Definition Parametric_potentials.cpp:136
std::vector< double > TietzPotential(int z, const std::vector< double > &r_array, double g, double t)
Tietz parametric potential (electron part) on given radial points.
Definition Parametric_potentials.cpp:220
double tietz(int Z, double r, double g, double t)
Tietz parametric potential at r; electron part only (no nuclear).
Definition Parametric_potentials.cpp:21
std::vector< double > GreenPotential(int z, const std::vector< double > &r_array, double h, double d)
Green parametric potential (electron part) on given radial points.
Definition Parametric_potentials.cpp:206