|
ampsci
High-precision calculations for one- and two-valence atomic systems
|
Auxiliary functions for hyperfine operators; F(r) [nuclear distribution] and similar.
See DiracOperator::hfs for operator
Typedefs | |
| using | RadialFunction = std::function< double(double r, double r_Nuc)> |
| Type for radial function F(r, r_Nuc) – nuclear magnetisation/charge distribution. | |
Functions | |
| std::vector< double > | tk_radial (int k, double rN, const std::vector< double > &r, const RadialFunction &hfs_F) |
| Forms the hyperfine radial operator: F(r, r_N) / r^{k+1}. | |
| RadialFunction | sphericalBall_F (int k) |
| Spherical ball model for F(r, r_N) [default]. Uniformly distributed point k-poles. | |
| RadialFunction | sphericalShell_F () |
| Spherical shell F(r, r_N): 0 for r < r_N, 1 for r > r_N. | |
| RadialFunction | pointlike_F () |
| Pointlike F(r): F = 1 everywhere. | |
| RadialFunction | VolotkaSP_F (double mu, double I_nuc, double l_pn, int gl, bool print=true) |
| Volotka single-particle nuclear model: F(r, rN) | |
| RadialFunction | uSP (double mu, double I_nuc, double l_pn, int gl, double n, double R, bool u_option, bool print=true) |
| Elizarov single-particle magnetisation model [extended Volotka]. | |
| RadialFunction | doublyOddSP_F (double mut, double It, double mu1, double I1, double l1, int gl1, double I2, double l2, bool print=true) |
| Volotka single-particle model for doubly-odd nuclei. | |
| RadialFunction | generic_F (const Grid &grid, const std::vector< double > &rho, int k) |
| Constructs F(r) from a numerical density rho(r) given on the radial grid. | |
| double | convert_RME_to_HFSconstant_2J (int k, int tja, int tjb) |
| Converts reduced matrix element to A/B coeficients (takes k, 2J, 2J) | |
| double | convert_RME_to_HFSconstant (int k, int ka, int kb) |
| Converts reduced matrix element to A/B coeficients (takes k, kappa, kappa) | |
| using DiracOperator::Hyperfine::RadialFunction = typedef std::function<double(double r, double r_Nuc)> |
Type for radial function F(r, r_Nuc) – nuclear magnetisation/charge distribution.
The full HFS radial operator is t^k(r) = F(r, r_N) / r^{k+1}, formed by tk_radial. F(r) itself is defined by the chosen nuclear model; see sphericalBall_F, VolotkaSP_F, uSP, doublyOddSP_F, generic_F.
| std::vector< double > DiracOperator::Hyperfine::tk_radial | ( | int | k, |
| double | rN, | ||
| const std::vector< double > & | r, | ||
| const RadialFunction & | hfs_F | ||
| ) |
Forms the hyperfine radial operator: F(r, r_N) / r^{k+1}.
\[ t^k_{\rm radial}[r_i] = \frac{F(r_i, r_N)}{r_i^{k+1}} \]
See RadialFunction for the contract on F(r, r_N). Angular factors and signs are handled elsewhere.
| k | Multipole rank (1 = M1, 2 = E2, ...) |
| rN | Nuclear radius (a.u.); passed to hfs_F as r_N |
| r | Radial grid points (a.u.) |
| hfs_F | Nuclear magnetisation/charge distribution F(r, r_N); see RadialFunction and sphericalBall_F |
| RadialFunction DiracOperator::Hyperfine::sphericalBall_F | ( | int | k | ) |
Spherical ball model for F(r, r_N) [default]. Uniformly distributed point k-poles.
Based on a simple multipole expansion, assuming the nucleus is composed of uniformly distributed point k-poles. Note: not everyone defines this the same way.
\[ F(r, r_N) = \begin{cases} (r/r_N)^{2k+1} & r < r_N \\ 1 & r > r_N \end{cases} \]
| RadialFunction DiracOperator::Hyperfine::sphericalShell_F | ( | ) |
Spherical shell F(r, r_N): 0 for r < r_N, 1 for r > r_N.
| RadialFunction DiracOperator::Hyperfine::pointlike_F | ( | ) |
Pointlike F(r): F = 1 everywhere.
| RadialFunction DiracOperator::Hyperfine::VolotkaSP_F | ( | double | mu, |
| double | I_nuc, | ||
| double | l_pn, | ||
| int | gl, | ||
| bool | print = true |
||
| ) |
Volotka single-particle nuclear model: F(r, rN)
Calculates the Bohr-Weisskopf magnetisation distribution using the Volotka single-particle model of Phys. Rev. Lett. 125, 063002 (2020). Assumes radial nuclear density is a step function. F goes to 1 as r_N -> 0. See RadialFunction for F(r) contract.
| mu | Nuclear magnetic moment (in nuclear magnetons) |
| I_nuc | Nuclear spin |
| l_pn | Orbital angular momentum of valence nucleon |
| gl | Orbital g-factor (1 = proton, 0 = neutron) |
| Print model details |
| RadialFunction DiracOperator::Hyperfine::uSP | ( | double | mu, |
| double | I_nuc, | ||
| double | l_pn, | ||
| int | gl, | ||
| double | n, | ||
| double | R, | ||
| bool | u_option, | ||
| bool | print = true |
||
| ) |
Elizarov single-particle magnetisation model [extended Volotka].
Returns the radial magnetisation function F(r, r_N) for the model of Elizarov, A. A. et al., Opt. Spectrosc. 100, 361 (2006). Uses nuclear radial density u(r), with:
\[ u(r) = \begin{cases} u_0 (R-r)^n & \text{u1(r)} \\ u_0 r^n & \text{u2(r)} \end{cases} \]
n=0 should correspond to the Volotka model (see VolotkaSP_F). See RadialFunction for F(r) contract.
| mu | Nuclear magnetic moment (in nuclear magnetons) |
| I_nuc | Nuclear spin |
| l_pn | Orbital angular momentum of valence nucleon |
| gl | Orbital g-factor (1 = proton, 0 = neutron) |
| n | Power; usually 0, 1, or 2. 0 => Volotka |
| R | Nuclear radius |
| u_option | Selects radial form: true for u1(r), false for u2(r) |
| Print model details |
| RadialFunction DiracOperator::Hyperfine::doublyOddSP_F | ( | double | mut, |
| double | It, | ||
| double | mu1, | ||
| double | I1, | ||
| double | l1, | ||
| int | gl1, | ||
| double | I2, | ||
| double | l2, | ||
| bool | print = true |
||
| ) |
Volotka single-particle model for doubly-odd nuclei.
From: Phys. Rev. Lett. 125, 063002 (2020).
Total magnetisation:
\[ g F(r) = 0.5 \left[ g_1 F_1(r) + g_2 F_2(r) + (g_1 F_1(r) - g_2 F_2(r)) K \right] \]
with
\[ K = \frac{[ I_1(I_1+1) - I_2(I_2+1) ]}{[ I(I+1) ]} \]
Returns F(r) (i.e., divided by total g).
g2 is obtained from g = 0.5 [ g1 + g2 + (g1 - g2) K ].
| mut | Total nuclear magnetic moment (in nuclear magnetons) |
| It | Total nuclear spin |
| mu1 | Magnetic moment of nucleon 1 |
| I1 | Spin of nucleon 1 |
| l1 | Orbital angular momentum of nucleon 1 |
| gl1 | Orbital g-factor of nucleon 1 (1 = proton, 0 = neutron) |
| I2 | Spin of nucleon 2 |
| l2 | Orbital angular momentum of nucleon 2 |
| Print model details |
| RadialFunction DiracOperator::Hyperfine::generic_F | ( | const Grid & | grid, |
| const std::vector< double > & | rho, | ||
| int | k | ||
| ) |
Constructs F(r) from a numerical density rho(r) given on the radial grid.
Computes the cumulative radial integral with rank-k weighting:
\[ F(r) = N \int_0^r x^{2k} \rho(x)\, \d x, \qquad N = \frac{1}{\int_0^\infty x^{2k} \rho(x)\, \d x} \]
so that \( F(r) \to 1 \) as \( r \to \infty \).
The x^{2k} weighting matches the radial scaling of the multipole operator of rank k (consistent with sphericalBall_F, where F ~ r^{2k+1} inside the nucleus).
The density rho need not be pre-normalised. The returned function ignores its second argument (r_Nuc), since the distribution is already encoded in rho. Assumes r is always a grid point (no interpolation).
| grid | Radial grid on which rho is defined. |
| rho | Nuclear density values on the grid points. |
| k | Multipole rank (1 = M1, 2 = E2, ...) |
| double DiracOperator::Hyperfine::convert_RME_to_HFSconstant_2J | ( | int | k, |
| int | tja, | ||
| int | tjb | ||
| ) |
Converts reduced matrix element to A/B coeficients (takes k, 2J, 2J)
| double DiracOperator::Hyperfine::convert_RME_to_HFSconstant | ( | int | k, |
| int | ka, | ||
| int | kb | ||
| ) |
Converts reduced matrix element to A/B coeficients (takes k, kappa, kappa)