phys_552.seq#
Tools for solving the radial Schrodinger equation to high precision,
Classes#
Helper to solve the radial Schrodinger equation with a Coulomb tail. |
Module Contents#
- class CoulombSEQ(**kw)#
Helper to solve the radial Schrodinger equation with a Coulomb tail.
Assumes that the potential behaves like V(r) = -alpha/r at long distances, and that V(r) is not more singular than the centrifugal term 1/r^2 at short distance.
- hbar, m
Physical constants
- Type:
- dimension = 3#
- hbar = 1.0#
- m = 1.0#
- alpha = 1.0#
- V(r)#
Potential. (Overload to change.)
The default is the pure Coulomb potential. Custom potentials must include this tail.
- compute_E(E, tol=1e-08, l=0, lam=0.999, **kw)#
Return the energy eigenvalue E by shooting.
- get_a(E)#
Return a, the length scale associated with the exponential decay.
- get_r_v(E)#
Return r_v, an approximate location of the turning point.
- compute_du_dr(r, udu, E, l=0)#
Return (du, ddu) for solve_ivp.
Integrates the radial equation at the specified energy and angular momentum.
- get_r_u_du_backwards(E, u0=None, R=None, R_max=None, tol=1e-08, max_step=None, l=0)#
Return (rs, us, dus) for the radial equation.
Solves the radial equation by integrating from R_max backwards to R in order to kill any exponentially growing solutions.
- Parameters:
u0 (float | None) – Initial size of the radial wavefunction u0 = u(R_max). If not provided, then we estimate by first performing a quick low-tolerance integration to r_v.
R (float | None) – Integrate from R_max down to R. If not provided, we estimate based on the length scales of the problem.
R_max (float | None) – Integrate from R_max down to R. If not provided, we estimate based on the length scales of the problem.
tol (float) – Tolerance for final integration. Assumes everything is roughly order unity, so this should be interpreted as a relative tolerance.
max_step (float | None) – Passed to solve_ivp. Estimated if not provided.
- Returns:
rs (array-like) – Radial points (abscissa) for solution.
us (array-like) – Radial wavefunction at these points u(r)
dus (array-like) – Derivative of the radial wavefunction at these points.
- objective(E, r0_a=None, R_max_a=None, N=10, deg=6, tol=1e-08, **kw)#
Short-distance objective function for finding E.
- Parameters:
tol (float) – Tolerance for final integration. Assumes everything is roughly order unity, so this should be interpreted as a relative tolerance.
r0_a (float | None) – Dimensionless quantity r0/a specifying how far down to integrate. If not provided, then estimate from tolerance and length scales.
R_max_a (float | None) – Dimensionless quantity R_max/a specifying R_max.
N (int) – How many points and the degree to use when extrapolating from r0 to 0. We use np.polyfit.
deg (int) – How many points and the degree to use when extrapolating from r0 to 0. We use np.polyfit.