Wavefunction

Class Methods

__init__(grid, model_potential, quantum_defect)

Create a Wavefunction object.

get_x_min()

Implement a few special cases for the x_min point of the integration.

integrate([run_backward, w0, _use_njit])

Run the Numerov integration of the radial Schrödinger equation.

sanity_check(z_stop, run_backward)

Do some sanity checks on the wavefunction.

Class Attributes and Properties

r_list

The radial wavefunction R(r) in atomic units.

u_list

The dimensionless wavefunction tilde{u}(x) = sqrt(a_0) r R(r).

w_list

The dimensionless scaled wavefunction w(z) = z^{-1/2} tilde{u}(x=z^2) = (r/a_0)^{-1/4} sqrt(a_0) r R(r).

class ryd_numerov.radial.Wavefunction(grid, model_potential, quantum_defect)[source]

Create a Wavefunction object.

Parameters:
  • grid (Grid) – The grid object.

  • model_potential (ModelPotential) – The model potential object.

  • quantum_defect (QuantumDefect) – The quantum defect object.

property w_list: ndarray[tuple[int, ...], dtype[Any]]

The dimensionless scaled wavefunction w(z) = z^{-1/2} tilde{u}(x=z^2) = (r/a_0)^{-1/4} sqrt(a_0) r R(r).

property u_list: ndarray[tuple[int, ...], dtype[Any]]

The dimensionless wavefunction tilde{u}(x) = sqrt(a_0) r R(r).

property r_list: ndarray[tuple[int, ...], dtype[Any]]

The radial wavefunction R(r) in atomic units.

integrate(run_backward=True, w0=1e-10, _use_njit=True)[source]

Run the Numerov integration of the radial Schrödinger equation.

The resulting radial wavefunctions are then stored as attributes, where - w_list is the dimensionless and scaled wavefunction w(z) - u_list is the dimensionless wavefunction tilde{u}(x) - r_list is the radial wavefunction R(r) in atomic units

The radial wavefunction are related as follows:

\[\tilde{u}(x) = \sqrt(a_0) r R(r)\]
\[w(z) = z^{-1/2} \tilde{u}(x=z^2) = (r/a_0)^{-1/4} \sqrt(a_0) r R(r)\]

where z = sqrt(r/a_0) is the dimensionless scaled coordinate.

The resulting radial wavefunction is normalized such that

\[\int_{0}^{\infty} r^2 |R(x)|^2 dr = \int_{0}^{\infty} |\tilde{u}(x)|^2 dx = \int_{0}^{\infty} 2 z^2 |w(z)|^2 dz = 1\]
Parameters:
  • (default (_use_njit) – True): Wheter to integrate the radial Schrödinger equation “backward” of “forward”.

  • (default – 1e-10): The initial magnitude of the radial wavefunction at the outer boundary. For forward integration we set w[0] = 0 and w[1] = w0, for backward integration we set w[-1] = 0 and w[-2] = (-1)^{(n - l - 1) % 2} * w0.

  • (default – True): Whether to use the fast njit version of the Numerov integration.

  • run_backward (bool)

  • w0 (float)

  • _use_njit (bool)

Return type:

ndarray[tuple[int, ...], dtype[Any]]

get_x_min()[source]

Implement a few special cases for the x_min point of the integration.

Return type:

float

sanity_check(z_stop, run_backward)[source]

Do some sanity checks on the wavefunction.

Check if the wavefuntion fulfills the following conditions: - The wavefunction is positive (or zero) at the inner boundary. - The wavefunction is close to zero at the inner boundary. - The wavefunction is close to zero at the outer boundary. - The wavefunction has exactly (n - l - 1) nodes. - The integration stopped before z_stop (for l>0)

Return type:

bool

Parameters:
  • z_stop (float)

  • run_backward (bool)