 transport section

parent 047c3363
Pipeline #85827 passed with stage
in 3 minutes and 3 seconds
 ... ... @@ -12,7 +12,7 @@ nav: - WKB wave function: 'wkb_wf.md' - Connection formulas: 'wkb_connection.md' - Bound states: 'wkb_bound.md' - Tunneling: 'wkb_tunel.md' - Transport: 'wkb_tunel.md' - Adiabatic approximartion: - Adiabatic theorem: 'adiabatic_theorem.md' - Proof of the theorem: 'adiabatic_proof.md' ... ...
 ... ... @@ -137,3 +137,91 @@ def plot_patching_region(V, Erange, start, stop, m, wf_scaling_factor, y_range): fig.update_yaxes(range=y_range) py.iplot(fig) def _wkb_free(x, m, E, V): def p(x): return np.sqrt(2 * m * (E - V(x))) return 2/np.sqrt(p(x)) * np.sin(quad(p, 0, x) + np.pi/4) wkb_free = np.vectorize(_wkb_free) def pot_f(A): def V(x): return A*np.exp(-(x-1500.0)**2/400**2) return V def wkb_static_animation(x, E=1.5): fig, ax = plt.subplots() plt.close() mags = np.linspace(-1.4, 1.4, 50) V = pot_f(A=mags) pot, = ax.plot(x, V(x), label=r'$V(x)$', color='black') wkb, = ax.plot(x, np.real(wkb_free(x, m=0.01, E=E, V=V))/15+E, label=r'$\psi(x)$', color='red') ax.set_xticks([]); ax.set_yticks([]); def animate(i): V = pot_f(A=mags[i]) wkb.set_data(x, np.real(wkb_free(x, m=0.01, E=E, V=V))/15+E) pot.set_data(x, V(x)) ax.set_ylim(-E, E+1) ax.legend() return wkb, pot, anim = matplotlib.animation.FuncAnimation(fig, animate, frames=len(mags), interval=50) return anim def _make_hamiltonian_tunel(L=100, pot_func=None): t = 1 ham = np.zeros(shape=(L, L), dtype=complex) if pot_func is not None: pot = np.array([pot_func(i) for i in range(L)], dtype=float) else: pot = np.zeros(shape=(L,), dtype=float) np.fill_diagonal(ham, 2*t+pot) offdiag = np.zeros(shape=(L-1,), dtype=complex) offdiag[:] = -t np.fill_diagonal(ham[1:, :-1], offdiag) np.fill_diagonal(ham[:-1, 1:], offdiag) return scipy.sparse.csr_matrix(ham), pot def tunnel_animation(mags, potential_f): pots = [] wfs = [] for mag in mags: V = potential_f(mag) ham, pot = _make_hamiltonian_tunel(pot_func=V) evals, evec = scipy.sparse.linalg.eigsh(ham, which='SM') wfs.append(np.abs(evec.T**2)) pots.append(pot) fig, ax = plt.subplots() plt.close() x = np.linspace(0, 100, 100) pot, = ax.plot(x, pots*10, label=r'$V(x)$', color='black') wf, = ax.plot(x, wfs, label=r'$\psi(x)$', color='red') #ax.set_xticks([]); #ax.set_yticks([]); ax.set_ylim(min(wfs[-1]), max(wfs[-1])+0.01) def animate(i): pot.set_data(x, pots[i]) wf.set_data(x, wfs[i]) ax.legend() return wf, pot, anim = matplotlib.animation.FuncAnimation(fig, animate, frames=len(mags), interval=100) return anim \ No newline at end of file
This diff is collapsed.
 ... ... @@ -2,7 +2,7 @@ title: The WKB wave function --- # Tunneling # Transport python inline import common ... ... @@ -31,11 +31,9 @@ common.configure_plotting() ## Physical intuition ![Probability current](figures/wkb_current.svg) ![tunneling](figures/tunneling.svg) A tunneling problem describes the situation found in the picture above. That is, a particle approaching a barrier from the left side, and being transmitted to the right side. On the top plot we observe a potential profile. There are two energies indicated by dashed lines. On the lower two plots we show the probability currents associated to each energy. Note that the system is two-dimensional. For $E=E_1$, on the left side of the barrier there are reflected and incident components, while on the right side there is a transmitted wave that has been attenuated due to the potential barrier. On the lower plot, the one with $E=E_0$, we observe that a particle with lower energy does not propagate to the other side, but is completely reflected. Now, let us describe this problem from a mathematical perspective. Outside of a tunneling region, $0< x < L$, the particle propagates freely, i.e. $E>V(x)$. The solution in this region can be an incident, transmitted or reflected wave. That is, As discussed before, the WKB approximation allows us to study any smooth potential. Opposite to the potential wells discussion, one can consider the case where far away from from the potential, i.e. $x > x_2$ and $x < x_1$>, $E > V(x)$. Depending on the potential around $x_1 < x < x_2$, we describe a transport or a tunneling process. A tunneling process is depicted in the picture above. Such processes are determined by the coefficients of the incident, reflected and transmitted waves. The solution of the Schrodinger equation away from the potential is, $$\psi(x) = \left\{ \begin{array}{cc} A e^{ikx} + B e^{-ikx}, & x <0,\\ ... ... @@ -47,7 +45,53 @@ From quantum mechanics, recall that the tunneling probability is given as,$$ t = \left| \frac{T}{A} \right|^2 \frac{v_R}{v_L}. $$The factor involving the velocities comes the conservation of probability current. It does not appear if the energy at both sides is the same. To solve for the region 0 < x < L, we will use the WKB approximation. For a constant potential, there would be a exponential decaying factor proportional to the distance. However, to account for an arbitrary potential shape, the WKB wavefunction is, The factor involving the velocities comes the conservation of probability current. It does not appear if the energy at both sides is the same. ## Transport Let us start by considering the case E > V(x). In such case, the wave packet is always transmitted. Therefore, t=1. However, the wavefunction interacts with the potential. The amplitude changes as it moves along. This behaviour can be explained using current conservation. The probability current is,$$ \begin{split} j =& \frac{\hbar}{m}\text{Im} \left( \psi^* \frac{d \psi}{dx}\right),\\ \frac{d \psi}{dx} &= \frac{1}{\sqrt{p(x)}} e^{ -\frac{1}{\hbar} \int_{x_0}^x p(x') d x'}\left( \pm \frac{i}{\hbar}p(x) \right),\\ &\longrightarrow j = \pm\frac{1}{m}. \end{split} $$We have found that the current is constant. When the particle is closer to the potential, the density must increase. Similarly, when the particle is far from the potential, the density must decrease, which means that the particle is more spreaded. Such phenomena can be observed in the following animation. python inline from wkb import wkb_static_animation import numpy as np x = np.linspace(500, 2500, 1000) anim = wkb_static_animation(x, E=1.5) display(HTML(common.to_svg_jshtml(anim)))  ## Tunneling In a tunneling problem, the wavefunction decays exponentially across the barrier. The case of a rectangular barrier is shown in the animation below. One can observe how the magnitude of the transmitted wave decreases exponentially as the barrier height increases. python inline from wkb import tunnel_animation import numpy as np def pot_step(A=0.1): def V(x): if 40 < x < 60: return A else: return 0 return V mags = np.linspace(0.035, 0.1, 20) anim = tunnel_animation(mags=mags, potential_f=pot_step) display(HTML(common.to_svg_jshtml(anim)))  To solve for the wavefunction in the region x_1=0 < x < x_2=L, we can use the WKB approximation. To account for an arbitrary potential shape, recall that the WKB wavefunction is,$$ \psi_{WKB}(x) = \frac{1}{\sqrt{|p(x)|}} \left( C e^{ -\frac{1}{\hbar} \int_{0}^x |p(x')| d x'} + D e^{ \frac{1}{\hbar} \int_{0}^x |p(x')| d x'} \right). $$... ... @@ -60,9 +104,7 @@$$ t = \left| \frac{T}{A} \right|^2 \frac{v_R}{v_L} \sim e^{-2\gamma},\qquad \gamma = \frac{1}{\hbar}\int_0^L |p(x')|dx'. $$This result can be used to describe the plots on top of this section. Observe that |E_0 - V(x)| >> |E_1 - V(x)| . This means that the wave associated with E_0 will have a exponential factor that is much larger than the one with E_1. Therefore, the one with lower energy will have an exponentially smaller transmitted component than the one with higher energy. ## WKB for tunneling ### WKB formula for tunneling The tunneling amplitude can be found using the WKB approximation, and the result corresponds to the one derived above. In particular, we'll use the transfer matrix method. Let us recall that the WKB wavefunction for propagating waves is,$$ ... ... @@ -247,35 +289,10 @@ We have used the approximation for a wide and high tunnel barrier. In this way, $$T \approx e^{-2\gamma},\qquad \gamma = \frac{1}{\hbar}\int_{x_1}^{x_2} |p(x')|dx'.$$ ## WKB for transport Propagating waves do not reflect. However, the wavefunction amplitude changes as the move along the potential. This behaviour can be explained using current conservation. The probability current is, $$\begin{split} j =& \frac{\hbar}{m}\text{Im} \left( \psi^* \frac{d \psi}{dx}\right),\\ \frac{d \psi}{dx} &= \frac{1}{\sqrt{p(x)}} e^{ -\frac{1}{\hbar} \int_{x_0}^x p(x') d x'}\left( \pm \frac{i}{\hbar}p(x) \right),\\ &\longrightarrow j = \pm\frac{1}{m}. \end{split}$$ We have found that the current is constant. When the particle is closer to the potential, the density must increase. Similarly, when the particle is far from the potential, the density must decrease, which means that the particle is more spread. Such phenomena can be observed in the following animation. python inline from wkb import make_wave_packet_animation import math def pot_gauss(x): 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.03) display(HTML(common.to_svg_jshtml(anim))) ` ## Summary 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. * The density of the wavefunction increases when it is closer to the potential due to current conservation. \ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!