|
ampsci
High-precision calculations for one- and two-valence atomic systems
|
Derivative matrix for the radial Dirac equation, dF/du = D(u)*F(u) + S(u).
Implements AdamsMoulton::DerivativeMatrix<std::size_t, double>, using the grid index i as the argument type (T = std::size_t). The ODE is solved in terms of the grid parameter u (where r = r(u)), so all matrix elements include a dr/du Jacobian factor.
The radial Dirac equation for a central potential v(r) is:
\[ \frac{d}{du}\begin{pmatrix}f\\g\end{pmatrix} = \frac{dr}{du} \begin{pmatrix} -\kappa/r + \alpha H_\text{mag} & \alpha(\varepsilon - v) + 2mc \\ \alpha(v - \varepsilon) & \kappa/r - \alpha H_\text{mag} \end{pmatrix} \begin{pmatrix}f\\g\end{pmatrix} + S \]
where \( c = 1/\alpha \) is the speed of light in atomic units. The optional inhomogeneous source S encodes the exchange interaction:
\[ S_f = -\alpha \, [V_x F_a]_g \, \frac{dr}{du}, \quad S_g = +\alpha \, [V_x F_a]_f \, \frac{dr}{du}. \]
#include <BoundState.hpp>
Inheritance diagram for DiracODE::Internal::DiracDerivative:Public Member Functions | |
| DiracDerivative (const Grid &in_grid, const std::vector< double > &in_v, const int in_k, const double in_en, const double in_alpha, const std::vector< double > &V_off_diag={}, const DiracSpinor *const VxFa=nullptr, const DiracSpinor *const iFa0=nullptr, double zion=1, double in_mass=1.0) | |
| Constructs the Dirac derivative matrix for a given orbital and potential. | |
| double | a (std::size_t i) const final |
| D matrix elements (see DiracDerivative for definitions); index i is grid point. | |
| double | b (std::size_t i) const final |
| double | c (std::size_t i) const final |
| double | d (std::size_t i) const final |
| double | Sf (std::size_t i) const final |
| Inhomogeneous source terms from exchange potential VxFa. | |
| double | Sg (std::size_t i) const final |
| DiracDerivative (const DiracDerivative &)=delete | |
| void | operator= (const DiracDerivative &)=delete |
Public Attributes | |
| const Grid *const | pgr |
| const std::vector< double > *const | v |
| const std::vector< double > *const | Hmag |
| const DiracSpinor *const | VxFa |
| const DiracSpinor *const | Fa0 |
| const double | zion = 1.0 |
| const int | k |
| const double | en |
| const double | alpha |
| const double | cc |
| double | mass |
| DiracODE::Internal::DiracDerivative::DiracDerivative | ( | const Grid & | in_grid, |
| const std::vector< double > & | in_v, | ||
| const int | in_k, | ||
| const double | in_en, | ||
| const double | in_alpha, | ||
| const std::vector< double > & | V_off_diag = {}, |
||
| const DiracSpinor *const | VxFa = nullptr, |
||
| const DiracSpinor *const | iFa0 = nullptr, |
||
| double | zion = 1, |
||
| double | in_mass = 1.0 |
||
| ) |
Constructs the Dirac derivative matrix for a given orbital and potential.
| in_grid | Radial grid. |
| in_v | Local potential v(r). |
| in_k | Orbital kappa quantum number. |
| in_en | Orbital energy. |
| in_alpha | Fine-structure constant (alpha). |
| V_off_diag | Optional off-diagonal (magnetic) potential H_mag(r). If empty, treated as zero. |
| VxFa | Optional exchange potential VxFa. If nullptr, ignored. |
| iFa0 | Optional inhomogeneous source spinor. If nullptr, ignored. |
| zion | Effective ionic charge (used for boundary conditions). |
| in_mass | Effective particle mass in atomic units (default 1). |
|
finalvirtual |
D matrix elements (see DiracDerivative for definitions); index i is grid point.
Implements AdamsMoulton::DerivativeMatrix< std::size_t, double >.
|
finalvirtual |
|
finalvirtual |
|
finalvirtual |
|
finalvirtual |
Inhomogeneous source terms from exchange potential VxFa.
Reimplemented from AdamsMoulton::DerivativeMatrix< std::size_t, double >.
|
finalvirtual |
Reimplemented from AdamsMoulton::DerivativeMatrix< std::size_t, double >.