File 1DSchrodinger.c

Solve 1D Schrodinger equation.

Defines

Y_EPS

Starting point for ode solver. Default value = 0.1

ode

Use RK4 as the default ODE solver

Functions

inline double numerov(double step, numpyint N, double y0, double y1, double E, const double *V, const double *m, double *y)

An ODE solver using Numerov’s method for \( -\frac{d}{dx}(\frac{\hbar^2}{2m(x)} \frac{dy(x)}{dx}) + V(x) y(x) = E y(x) \) with starting \( x_0 \) and \( y_0 \), \( y_1 \), ends at \( x_0 + N \times step \). No normalization imposed.

Parameters:
  • step[in] \( \Delta x \), stepsize

  • N[in] number of steps

  • y0[in] value of y at \( x_0 \)

  • y1[in] value of y at \( x_0 + step \)

  • E[in] energy, unit eV

  • V[in] V[n] is the potential at \( x = x_0 + n \times step \)

  • m[in] m[n] is the effective mass at \( x = x_0 + n \times step \). m is in unit m0 (free electron mass)

  • y[out] value of y at \( x = x_0 + n \times step \).

Returns:

psiend the last element of y

inline double rk4(double step, numpyint N, double y0, double y1, double E, const double *V, const double *m, double *y)

An ODE solver using RK4 method for \( -\frac{d}{dx}(\frac{\hbar^2}{2m(x)} \frac{dy(x)}{dx}) + V(x) y(x) = E y(x) \) with starting \( x_0 \) and \( y_0 \), \( y_1 \), ends at \( x_0 + N \times step \). No normalization imposed. See numerov() for arguments explaination