This page was generated from the Jupyter notebook
compare_model_potentials.ipynb.
Compare different effective model potentials
[1]:
import matplotlib.pyplot as plt
from ryd_numerov.rydberg import RydbergState
Check Rubidium with large n
For Rubidium and large quantum numbers n we expect the effective model potentials to be very similar.
[2]:
state = RydbergState("Rb", n=40, l=0, j_tot=0.5)
states: dict[str, RydbergState] = {}
states["model_potential_marinescu_1993"] = RydbergState(state.species, n=state.n, l=state.l, j_tot=state.j_tot)
states["model_potential_marinescu_1993"].create_model(potential_type="model_potential_marinescu_1993")
states["model_potential_fei_2009"] = RydbergState(state.species, n=state.n, l=state.l, j_tot=state.j_tot)
states["model_potential_fei_2009"].create_model(potential_type="model_potential_fei_2009")
for label, state in states.items():
print(f"Creating wavefunction for {label}")
state.create_wavefunction()
Creating wavefunction for model_potential_marinescu_1993
Creating wavefunction for model_potential_fei_2009
[3]:
fig, axs = plt.subplots(1, 2, figsize=(12, 6))
for ax in axs:
linestyles = ["-", "--", "-.", ":"]
for label, state in states.items():
ax.plot(state.grid.z_list, state.wavefunction.w_list, label=label, lw=2, ls=linestyles.pop(0))
ax.legend()
ax.set_xlabel("$z$")
ax.set_ylabel("$w(z)$")
axs[1].set_xlim(0, 5)
plt.show()

Big differences for Strontium with small n
[4]:
state = RydbergState("Sr88", n=8, l=0, j_tot=0, s_tot=0)
states: dict[str, RydbergState] = {}
states["model_potential_marinescu_1993"] = RydbergState(
state.species, n=state.n, l=state.l, j_tot=state.j_tot, s_tot=state.s_tot
)
states["model_potential_marinescu_1993"].create_model(potential_type="model_potential_marinescu_1993")
states["model_potential_fei_2009"] = RydbergState(
state.species, n=state.n, l=state.l, j_tot=state.j_tot, s_tot=state.s_tot
)
states["model_potential_fei_2009"].create_model(potential_type="model_potential_fei_2009")
for label, state in states.items():
print(f"Creating wavefunction for {label}")
state.create_wavefunction()
The wavefunction for the state |Sr88:8,S_0⟩ has some issues:
The wavefunction is not close to zero at the inner boundary (inner_weight_scaled_to_whole_grid=5.99e-01)
The wavefunction has 3.0 nodes, but should have 7 nodes.
The integration for l=0 did stop at 1.69 (should be close to zero).
Creating wavefunction for model_potential_marinescu_1993
Creating wavefunction for model_potential_fei_2009
[5]:
fig, axs = plt.subplots(1, 2, figsize=(12, 6))
for ax in axs:
linestyles = ["-", "--", "-.", ":"]
for label, state in states.items():
ax.plot(state.grid.z_list, state.wavefunction.w_list, label=label, lw=2, ls=linestyles.pop(0))
ax.legend()
ax.set_xlabel("$z$")
ax.set_ylabel("$w(z)$")
axs[1].set_xlim(0, 5)
plt.show()
