Commit c7a171eb authored by juandaanieel's avatar juandaanieel
Browse files

final text adiabatic and animations

parent ee1aef17
Pipeline #85394 passed with stage
in 3 minutes and 24 seconds
......@@ -219,12 +219,7 @@ $$
\gamma_n(t) = i \int_{\vec{R}(0)}^{\vec{R}(t)} \langle{ \psi_n | \vec{\nabla_R}\psi_n} \rangle
\cdot d\vec{R}.
$$
The Aharonov-Bohm effect arises as an extra phase due to the coupling of the wavefunction with the vector potential even in a region where there's no $\mathbf{B}$. The magnitude of this phase is proportional to the magnetic flux going through the solenoid. That is,
The Aharonov-Bohm effect arises as an extra phase due to the coupling of the wavefunction with the vector potential when traveling around a solenoid. The acquired phase is proportional to the magnetic flux going through the solenoid. That is,
$$
\gamma = \pm \frac{e \phi}{2\hbar}.
$$
The phase acquired moving around the solenoid can be described as a Berry phase by observing that,
$$
\langle \psi| \nabla_{\mathbf{R}} \psi \rangle = -\frac{ie}{\hbar} \mathbf{A}(\mathbf{R}).
$$
This relation holds when $\langle \mathbf{p} \rangle = 0$, i.e. for a particle in a box.
This diff is collapsed.
......@@ -61,7 +61,7 @@ $$
\Psi(t) = \sum_n c_n(t) \psi_n(t) e^{i \theta_n(t)}.
$$
where $\theta_n(t) = -\frac{1}{\hbar} \int_0^t E_n(t) dt$. What we do here is expand the wave function $\Psi(t)$ in a different basis for every value time $t$ (using the set of $\{\psi_n(t)\}$). This is allowed, for a given value of time $t$ the wave function $Psi(t)$ can be expanded in any arbitrary basis set.
where $\theta_n(t) = -\frac{1}{\hbar} \int_0^t E_n(t) dt$. What we do here is expand the wave function $\Psi(t)$ in a different basis for every value time $t$ (using the set of $\{\psi_n(t)\}$). This is allowed, for a given value of time $t$ the wave function $\Psi(t)$ can be expanded in any arbitrary basis set.
We could have absorbed the exponential factor involving $\theta$ into the $c_n(t)$, but as we will see it is convenient to include it explicitly. This term may look strange, but in fact it is a straightforward generalisation of the phase factor that an eigenstate picks up, which would be $\exp (-i E_n t/ \hbar)$,
when using a constant Hamiltonian.
......@@ -187,13 +187,13 @@ $$
c_n(T) = \frac{\overline{\langle \psi_m | \dot H |\psi_n\rangle}}{\overline{E_m - E_n}} \frac{i\hbar }{\overline{E_m - E_n}}\left( e^{-i \overline{E_m - E_n} T /\hbar } - 1 \right).
$$
The coefficients for $n \neq m$ have been neglected using the argument that they are small. This can be explicitly written by saying that they are much smaller than 1. That is,
We have found an expression for the coefficients where $n \neq m$. The addibatic approximation assumes that these coefficients are small. This criteria can be explicitly written as,
$$
|c_n(T)| \leq \frac{\hbar \overline{\langle \psi_m | \dot H |\psi_n\rangle} }{\overline{E_m - E_n}^2} << 1
$$
Observe that from the following result we recover what we first presented at this section.
We recover what we first presented at this section.
## Summary
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -214,17 +214,12 @@ $$
## Summary
The Berry phase can be expressed in terms of an arbitrary time-independent parameter $\mathbf{R}$ as,
The Berry phase can be expressed in terms of an arbitrary time-dependent parameter $\mathbf{R}(t)$ as,
$$
\gamma_n(t) = i \int_{\vec{R}(0)}^{\vec{R}(t)} \langle{ \psi_n | \vec{\nabla_R}\psi_n} \rangle
\cdot d\vec{R}.
$$
The Aharonov-Bohm effect arises as an extra phase due to the coupling of the wavefunction with the vector potential even in a region where there's no $\mathbf{B}$. The magnitude of this phase is proportional to the magnetic flux going through the solenoid. That is,
The Aharonov-Bohm effect arises as an extra phase due to the coupling of the wavefunction with the vector potential when traveling around a solenoid. The acquired phase is proportional to the magnetic flux going through the solenoid. That is,
$$
\gamma = \pm \frac{e \phi}{2\hbar}.
$$
The phase acquired moving around the solenoid can be described as a Berry phase by observing that,
$$
\langle \psi| \nabla_{\mathbf{R}} \psi \rangle = -\frac{ie}{\hbar} \mathbf{A}(\mathbf{R}).
$$
This relation holds when $\langle \mathbf{p} \rangle = 0$, i.e. for a particle in a box.
\ No newline at end of file
# The Landau-Zener effect
## Adiabatic evolution of a two level system
```python inline
import common
from IPython.display import HTML, display
common.configure_plotting()
```
The problem of two levels crossing is often encountered in quantum mechanics applications.
## Adiabatic evolution of a quantum system
### Slow evolution
The problem of two levels crossing is often encountered in quantum mechanics applications. The Landau and [Zener](https://www.jstor.org/stable/96038?origin=ads) effect describes how a two level system evolves under a time-dependent Hamiltonian. Consider a system described as
$$
H(t) |\Psi(t) \rangle = E(t) |\Psi(t) \rangle.
$$
The solution of this equation can be writen as,
$$
|\Psi(t) \rangle = \sum_n c_n(t) |\psi_n\rangle.
$$
From the adibatic theorem, we know that the system will remain in the $n-th$ eigenstate if it evolves adiabatically from $t=0$ to $t=T$, that is $|c_0(0)|=|c_0(T)|=1$. However, if the evolution is not sufficiently *slow*, the system will leak to high energy states as $c_{n\neq 0}(T) \neq 0$.
### Fast evolution
## Two level system
## Summary
\ No newline at end of file
For a two level system, i.e. a system spanned by $|0\rangle$ and $|1\rangle$, Landau and Zaner found an explicit expression that describes the probability of tuneling to a high energy state. It is
$$
P \sim e^{-\frac{\pi}{2v h} \frac{\Delta}{E_0-E_1}}.
$$
Here, $\Delta = \langle 0 | H |1 \rangle$, and $v=d(E_0(t)-E_1(t))/dt$ is the velocity at which the system changes. The dynamics of the system can be observed in the animation below for the adiabatic and non-adiabatic cases.
```python inline
import landau_zener as lz
times, ens, probs1 = lz.landau_zener_data(L=2, v=1)
_, _, probs2 = lz.landau_zener_data(L=2, v=0.001)
probs = [probs1, probs2]
anim = lz.animate_landau_zener_2plots(times=times, ens=ens, probs=probs, L=2);
display(HTML(common.to_svg_jshtml(anim)))
```
One can observe that in the non-adiabatic case, the system evolves to the excited state. On the other hand, for adiabatic evolution the system remains mostly in the ground state.
## More than two levels
The intuition from the two level system can be extended to describe larger systems. Whenever two levels come close in a non-adiabatic manner, the wavefunction will leak from the incoming state. In the following animation one can observe how a state leaks to the highest state by the interaction of multiple levels.
```python inline
import landau_zener as lz
times, ens, probs1 = lz.landau_zener_data(L=3, v=1)
_, _, probs2 = lz.landau_zener_data(L=3, v=0.001)
probs = [probs1, probs2]
anim = lz.animate_landau_zener_2plots(times=times, ens=ens, probs=probs, L=3)
display(HTML(common.to_svg_jshtml(anim)))
```
This behaviour is understood by looking at the coefficients $c_n(t)$ as shown below. One can observe how the wavefunction leaks at each anti-crossing for the non-adiabatic case. On the other hand, the adiabatic theorem remains valid if the system evolves *slow*.
```python inline
import matplotlib.pyplot as plt
_, _, probs1 = lz.landau_zener_data(v=1, L=3, npts=200)
_, _, probs2 = lz.landau_zener_data(v=0.001, L=3, npts=200)
labels=[r'$|c_0(t)|^2$', r'$|c_1(t)|^2$', r'$|c_2(t)|^2$']
colors=['darkblue', 'red', 'green']
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(10, 4))
i = 0
for level in probs1.T:
ax[0].plot(level**2, label=labels[i], c=colors[i])
i += 1
ax[0].set_ylim(0, 1.1)
i = 0
for level in probs2.T:
ax[1].plot(level**2, label=labels[i], c=colors[i])
i += 1
for axes in ax:
#axes.set_ylabel(r'$|c|_$', fontsize=15)
axes.set_xlabel(r'$t$', fontsize=15)
axes.legend(fontsize=12)
axes.set_xticks([]);
ax[0].set_title(r'non-adiabatic')
ax[1].set_title(r'adiabatic')
fig.show()
```
## Summary
If the evolution of a system is not adiabatic, the population of the ground state will leak towards high energy states depending on how the levels interact.
\ No newline at end of file
......@@ -61,7 +61,7 @@ $$
\Psi(t) = \sum_n c_n(t) \psi_n(t) e^{i \theta_n(t)}.
$$
where $\theta_n(t) = -\frac{1}{\hbar} \int_0^t E_n(t) dt$. What we do here is expand the wave function $\Psi(t)$ in a different basis for every value time $t$ (using the set of $\{\psi_n(t)\}$). This is allowed, for a given value of time $t$ the wave function $Psi(t)$ can be expanded in any arbitrary basis set.
where $\theta_n(t) = -\frac{1}{\hbar} \int_0^t E_n(t) dt$. What we do here is expand the wave function $\Psi(t)$ in a different basis for every value time $t$ (using the set of $\{\psi_n(t)\}$). This is allowed, for a given value of time $t$ the wave function $\Psi(t)$ can be expanded in any arbitrary basis set.
We could have absorbed the exponential factor involving $\theta$ into the $c_n(t)$, but as we will see it is convenient to include it explicitly. This term may look strange, but in fact it is a straightforward generalisation of the phase factor that an eigenstate picks up, which would be $\exp (-i E_n t/ \hbar)$,
when using a constant Hamiltonian.
......
......@@ -46,8 +46,8 @@ def animate_landau_zener(times, ens, probs, L):
colors=colors[:L]
size = 200
fig = plt.figure(figsize=(4, 6))
ax = plt.axes()
fig, ax = plt.subplots(figsize=(3, 5))
plt.close()
j = 0
for level in ens.T:
......@@ -61,9 +61,9 @@ def animate_landau_zener(times, ens, probs, L):
for i in range(len(labels)):
plt.scatter(0, 1000, s=size, label=labels[i], c=colors[i])
if len(labels) == 2:
ax.set_ylim(-8.5, 8.5)
ax.set_ylim(-8.5, 8.5);
else:
ax.set_ylim(-8.5, 13.5)
ax.set_ylim(-8.5, 13.5);
ax.set_xticks([]);
ax.set_yticks([]);
ax.legend(fontsize=12)
......@@ -93,7 +93,8 @@ def animate_landau_zener_2plots(times, ens, probs, L):
colors=colors[:L]
size = 200
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(8, 4))
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(7, 4))
plt.close()
scatter1 = axes[0].scatter(times[0]*np.ones(L), ens[0, :], s=size, c=colors)
scatter2 = axes[1].scatter(times[0]*np.ones(L), ens[0, :], s=size, c=colors)
......@@ -103,6 +104,9 @@ def animate_landau_zener_2plots(times, ens, probs, L):
j = 0
for ax in axes:
j = 0
for i in range(len(labels)):
ax.scatter(0, 1000, s=size, label=labels[i], c=colors[i]);
for level in ens.T:
ax.plot(times, level, c=colors[j])
j += 1
......@@ -111,15 +115,13 @@ def animate_landau_zener_2plots(times, ens, probs, L):
ax.set_ylabel('Energy')
if len(labels) == 2:
ax.set_ylim(-8.5, 8.5)
ax.set_ylim(-8.5, 8.5);
else:
ax.set_ylim(-8.5, 13.5)
ax.set_ylim(-8.5, 13.5);
for i in range(len(labels)):
ax.scatter(0, 1000, s=size, label=labels[i], c=colors[i])
ax.set_xticks([]);
ax.set_yticks([]);
ax.legend(fontsize=12)
ax.legend(fontsize=12);
def update(i):
ts = times[i]*np.ones(L)
......
This diff is collapsed.
This diff is collapsed.
......@@ -264,11 +264,11 @@ from wkb import make_wave_packet_animation
import math
def pot_gauss(x):
return -0.02*math.exp(-(x-1500.0)**2/200**2)
return 0.02*math.exp(-(x-1700.0)**2/600**2) - 0.01
anim = make_wave_packet_animation(L=3500, pot_func=pot_gauss,
zero_pos=750, width=100,
energy=0.01)
energy=0.03)
display(HTML(common.to_svg_jshtml(anim)))
```
......@@ -278,4 +278,4 @@ display(HTML(common.to_svg_jshtml(anim)))
The following two ideas are the take-home message from this section:
* The transmission probability in the long and high barrier limit is $T\approx e^{-2\gamma}$.
* The density of the wavefunction increases when it is closer to the potential due to current conservation.
\ No newline at end of file
* The density of the wavefunction increases when it is closer to the potential due to current conservation.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment