Elektroner i et endelig (gaussisk) potensiale

Vennsligst ta høyde for typos :)

Vi ønsker å studere elektroner fanget i et endelig potensiale. Dette åpner muligheten for at vi har ubundne tilstander. I artikkelen: https://arxiv.org/abs/quant-ph/9911080?fbclid=IwAR0FSkltZJig9XzlSvquPNcHJ62kW7IsAGMOTnFHCKW_EGf4dBEsHwzEDFE, bruker de følgende Hamiltonian \begin{equation} \hat{H} = \sum_{i=1}^2 \left[ \frac{1}{2m^*}\left( \mathbf{p} + \frac{e}{c}\mathbf{A}(\mathbf{r}_i \right)^2 + V(\mathbf{r}_i) + g^* \mu_B \mathbf{B} \cdot \mathbf{S}_i \right] + \frac{e^2}{\epsilon r_{12}}, \ \ (1) \end{equation} "where $m^*$ is the conduction electron effective mass, $V (\mathbf{r}_i)$ is the quantum dot potential (which is to be parametrized in our work, but can in principle be calculated by self-consistent techniques if the details of the electrostatic confinement are known), $g^∗$ is the effective electron g- factor, $\mu_B$ is the Bohr magneton, $g^∗ \mu_B \mathbf{B} \cdot \mathbf{S}_i$ is the Zeeman splitting, $\epsilon$ is the static background (lattice) dielectric constant, and $r_{12}$ is the distance between the two electrons. The quantum well material we focus on in this work is GaAs, thus $g^∗ \approx −0.44, \epsilon \approx 13.1$, and $m^*\approx 0.067m_0$, where $m_0$ is the bare electron mass."

Til å begynne med er det sikkert fornuftig å sette $$\mathbf{B} = 0, \, \Rightarrow \, \mathbf{A} = 0. $$

Det "fangende" potensialet de bruker (likning (2) i artikkelen) er gitt ved,

\begin{equation} V(\mathbf{r}) = V_0 \left[\exp\left(-\frac{(x-a)^2}{l_x^2}\right) + \exp\left(-\frac{(x+a)^2}{l_x^2}\right)\right] \exp\left( -\frac{y^2}{l_y^2}\right) + V_b \exp\left(-\frac{x^2}{l_{bx}^2}\right)\exp\left(-\frac{y^2}{l_{by}^2}\right), \ \ (2) \end{equation}

Dette er ganske generelt og definerer et dobbel-brønn potensiale. Setter vi $V_b=0$ og $a=0$ får vi et endelig enkelt-brønn potensiale, hvilket er et fornuftig sted å starte.

De begrunner valget av dette potensialet:

"Here the first two Gaussians (with a strength of $V_0$ ) are for the individual dot potential wells and the third (with a strength of $V_b$) is for controlling the central barrier (so that we can adjust the barrier easily and independent of the locations of the other two Gaussians). Thus $V_0$ is the potential well depth while $V_b$ controls the central potential barrier height. We choose this form for the confinement potential mainly because of its simplicity and versatility, and no other particular significance should be attached to our choice. To find a realistic form for V requires a self-consistent calculation using the correct boundary conditions and heterostructure parameters, which is not warranted at the current level of QC modeling (and is well beyond the scope of this work). We only note here that the confinement potential defined by Eq. (2) is a reasonable potential for 2D double quantum dot structures defined electrostatically provided the confinement along the growth (z) direction is much tighter than the 2D confinement as discussed above. It is easy to fit a realistic confinement potential, if available, to this simple Gaussian form."

Jeg får ikke umiddelbart grep på hvilke parametere de bruker, men i masteren til Sigve (https://www.duo.uio.no/handle/10852/37170), hvor jeg fant referansen til artikkelen skriver at parameterene de har brukt er \begin{align} a &= 30 \text{ nm}, \\ V_b &= [20,25,30] \text{ meV} \\ V_0 &= 60 \text{ meV} \end{align} som kan gjøres dimensjonsløst med $V_0$ som skaleringsparameter. Hvilke valg som er gjort for parameterene $l_x, l_y, l_{bx}$ og $l_{by}$ finner jeg ikke helt uten videre. Jeg har lagt ved kode for å visualisere potensialet nedenfor.

For å gjøre en mange-partikkel regning må vi alltid først spesifisere en (endelig) singel-partikkel basis $\{ |\phi_p \rangle \}$. For å være helt konkret, trenger vi matriseelementene \begin{align} h^p_q &= \langle \phi_p | \hat{h} | \phi_q \rangle \\ u^{pq}_{rs} &= \langle \phi_p \phi_q | \hat{V} | \phi_r \phi_s \rangle \end{align} I tillegg, når vi legger på et laserfelt (i dipol-approksimasjon), vil vi trenge integralene \begin{equation} d^p_q = \langle \phi_p | \hat{r} | \phi_q \rangle. \end{equation}

Vanligvis har vi pleid å velge singel-partikkel funksjonene slik at de er egenfunksjoner singel-partikkel delen av Hamilton operatoren, \begin{equation} \hat{h} | \phi_p \rangle = \epsilon_p |\phi_p \rangle \end{equation} der (i atomiske enheter) \begin{equation} \hat{h} = -\frac{1}{2}\nabla^2 + V(\mathbf{r}). \end{equation} Dersom vi ikke kan løse singel-partikkel problemet analytisk vil vanligvis ekspandere $|\phi_p \rangle$ i en annen kjent basis $|\chi_\alpha \rangle_{\alpha=1}^{N_b}$ (f. eks harmonisk-oscillator funksjoner), \begin{equation} |\phi_p \rangle = \sum_{\alpha=1}^{N_b} C_{\alpha p} |\chi_\alpha \rangle. \end{equation} Dersom vi kjenner $\langle \chi_\alpha | \hat{h} | \chi_\beta \rangle$ kan vi regne ut egenfunksjonene $| \phi_p \rangle$ uttrykt i den kjente basisen på følgende måte, \begin{equation} \langle \chi_\alpha| \sum_\beta \hat{h} C_{\beta p} |\chi_\beta \rangle = \epsilon_p \sum_\beta C_{\beta p} \langle \chi_\alpha|\chi_\beta\rangle, \end{equation} som gir egenverdiproblemet \begin{equation} h C = S C \epsilon \end{equation} der $$h_{\alpha \beta} = \langle\chi_\alpha| \hat{h} |\chi_\beta \rangle,$$ $$S_{\alpha \beta} = \langle \chi_\alpha|\chi_\beta \rangle$$ og $$\epsilon = \text{diag}(\epsilon_1,\cdots,\epsilon_{N_b}).$$ Når vi har funnet egenfunksjonene, kan vi så gjøre en Hartree-Fock regning.

Alternativt, så kan vi gå direkte til en Hartree-Fock regning for å definere en singel-partikkel basis, \begin{equation} fC = SC\epsilon \end{equation} der $$f_{\alpha \beta} = \langle \chi_\alpha | \hat{f} | \chi_\beta \rangle . $$

Med et endelig potensiale som det beskrevet av likning (2), vil utfordringen, uansett hvordan vi vrir og vender på det, være hvordan vi skal velge basisen $\{ |\chi_\alpha \rangle \}$ slik at vi får en god beskrivelse av de ubundne tilstandene. De to første tilnærmingene jeg kan tenke meg er å bruke HO-funksjoner, med integralene definert i (https://iopscience.iop.org/article/10.1088/0953-8984/10/3/013). Dette er de samme integralene vi kjenner fra 2d quantum-dot systemene i Fys4411. Det andre alternativet, som potensielt er noe mer fleksibelt er å bruke de integralene Alocias utledet i masteroppgaven sin, som bruker generelle Gauss-funksjoner i 2d.

I begge tilfeller må vi regne ut \begin{equation} h^p_q = \langle \chi_\alpha| (-\frac{1}{2} \nabla^2 + V(\mathbf{r})|\chi_\beta \rangle \end{equation} der $V(\mathbf{r})$ er potensialet gitt av likning (2). En måte å sjekke at disse integralene er gjort vil være å gjøre diagonaliseringsprosedyren for egenfunksjonene til $\hat{h}$ beskrevet over, og sjekke med løsningen for de bundne tilstandene vi får ved å løse problemet direkte på et grid (se kode under).

Risikoen med begge disse fremgangsmåtene er at vi trenger et stort antall basisfunksjoner for å få en god beskrivelse av de ubundne tilstandene.

Et tredje alternativ er å gå for den metoden som er beskrevet i seksjon III i (https://arxiv.org/abs/1410.2138). Dette er helt klart mer teknisk utfordrende, men det er jo noe av moroa også da (mulig det bare er jeg som er klin sprø, åpen for det).

Følger vi den første artikkelen har vi i enden muligheten for å legge på et B-felt til slutt også. Dette vil naturligvis være en slags rosin i pølsen, men på ingen måte noen nødvendighet. Det er ikke noe i den kodebasen som Øyvind og jeg har utviklet som antar noe som helst om spinn, vi har ikke brukt spin-reduksjon, så i prinsippet er dette mulig.

En annen utfordring vil være å se på hvilke tidsavhengige observable som er interessante for å tolke fysikken. Her har jeg lite erfaring, men dette er utvilsomt også et viktig aspekt.

Uansett, jeg tror det er en hel del å ta tak i her, uavhengig av hva man ønsker å fokusere på som vil gi en interessant oppgave.


In [59]:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

"""
Jeg har lagt på et fortegn, hvis ikke får jeg ikke et fangende potensial. Så langt jeg forstår må 
det være sånn...
"""
harmonic_oscillator = lambda x,y,omega=1: 0.5*omega**2*(x**2+y**2)
finite_gaussian_single_well = lambda x,y,V0=2,Vb=1,a=1,lx=1,ly=1,lbx=1,lby=1: -V0*(
    np.exp(-(x-a)**2/lx**2) + np.exp(-(x+a)**2/lx**2))*np.exp(-y**2/ly**2) - Vb*np.exp(-x**2/lbx**2)*np.exp(-y**2/lby**2)

#Define grid parameters
N  = 100
Lx = 5
Ly = 5
x  = np.linspace(-Lx,Lx,N+2)
y  = np.linspace(-Ly,Ly,N+2)
V  = np.zeros((N,N))

X,Y = np.meshgrid(x[1:N+1],y[1:N+1])
V_double_well = finite_gaussian_single_well(X,Y)
V_single_well = finite_gaussian_single_well(X,Y,V0=0.5,Vb=0,a=0)
V_HO = harmonic_oscillator(X,Y)

fig = plt.figure(1)
ax = fig.add_subplot(111, projection='3d')
# Plot the potential
ax.plot_surface(X, Y, V_double_well, color='b')

fig = plt.figure(2)
ax = fig.add_subplot(111, projection='3d')
# Plot the potential
ax.plot_surface(X, Y, V_single_well, color='b')

fig = plt.figure(3)
ax = fig.add_subplot(111, projection='3d')
# Plot the potential
ax.plot_surface(X, Y, V_HO, color='b')

plt.show()



In [63]:
import numpy as np
import scipy.linalg
import scipy.sparse
import scipy.sparse.linalg
import matplotlib.pyplot as plt
import time
from scipy.integrate import simps, trapz
from mpl_toolkits.mplot3d import Axes3D

#Exact
"""
This program solves a two-dimensional eigenproblem (the Schrodinger equation)

(-1/2 nabla^2 + V(x,y)) phi(x,y) = e phi(x,y) (*)
using a uniform rectangular grid, [-Lx, Lx] x [-Ly, Ly], Lx = Ly, where we use N grid points in each dimension resulting in a total of 
M = N^2 grid points. 

@nabla^2 = d^2/dx^2 + d^2/dy^2
@V(x,y) is a confining potential, such as the Harmonic oscillator potential
@phi(x,y) is the unknown eigenfunctions 
@e is the unknown eigenvalues

The differentiation operator is discretized by a finite difference approximation and (*) can be written on matrix form 

H*Phi = Phi*E 

@H is know the matrix representation of the operator h = (-1/2 nabla^2 + V(x,y)) and has only 5 non-zero diagonals 
(see chapter9: http://www.uio.no/studier/emner/matnat/math/MAT-INF4130/h17/book2017.pdf for the exact form of H)
@Phi is a matrix containing the eigenfunctions in its columns 
@E = diag(e1,...,eN)

The sparse structure of H enables us to take advantage of sparse library in scipy and we can use Lanczos algorithm (scipy.sparse.linalg.eigs(h, k, which=order)) to diagonalize 
H. 
@h is the matrix to be diagonalized
@k is the number of desired eigenvalues
@which='SM' gives the eigenvalues in ascending order (smallest magnitude)
@which='LM' --- "" ---- descending order (largest magnitude)
"""

"""
Some potentials
The parameters for the double well are the same as in Jørgen Høgbergets thesis
For the finite gaussian single well I have just choosed some random paramters which seems non-crazy.
"""

harmonic_oscillator = lambda x,y,w=1: 0.5*w**2*(x**2+y**2)
infinite_double_well = lambda x,y,w=1,R=2: 0.5*w**2*(x**2+y**2)+  0.5*w**2*(0.25*R**2 - R*abs(x))
finite_gaussian_well = lambda x,y,V0=2,Vb=1,a=1,lx=1,ly=1,lbx=1,lby=1: -V0*(
    np.exp(-(x-a)**2/lx**2) + np.exp(-(x+a)**2/lx**2))*np.exp(-y**2/ly**2) - Vb*np.exp(-x**2/lbx**2)*np.exp(-y**2/lby**2)

#Define grid parameters
N  = 80
Lx = 10
x  = np.linspace(-Lx,Lx,N+2)
y  = np.linspace(-Lx,Lx,N+2)
V  = np.zeros((N,N))
delta_x = x[1]-x[0]
w  = 1
R  = 2

X,Y = np.meshgrid(x[1:N+1],y[1:N+1])
V = finite_gaussian_well(X,Y)
V = V.T
#V = harmonic_oscillator(X,Y)

#For some reason the vectorized version is the transpose of the for-loop version below
"""
for i in range(0,N):
    for j in range(0,N):
        V[i,j] = 0.5*w**2*(x[i+1]**2 + y[j+1]**2) +  0.5*w**2*(0.25*R**2 - R*abs(x[i+1]))
"""

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Plot the potential
ax.plot_surface(X, Y, V, color='b')

plt.show()

#Setup 2-dimensional second derivative matrix
n = N**2
a = 0.5

h_diag    =  a*4*np.ones(n)/(delta_x**2) + V.flatten("F")
h_off     = -a*np.ones(n-1)/(delta_x**2)
h_off_off = -a*np.ones(n-N)/(delta_x**2) 

k = 1
for i in range(1,n-1):
    if(i%N == 0):
        h_off[i-1] = 0

h = scipy.sparse.diags([h_diag, h_off, h_off,h_off_off,h_off_off], offsets=[0, -1, 1,-N,N])
h = h.todense()
#Diagonaliser faenskapen
epsilon, phi = np.linalg.eigh(h)
n_eig_vals = 10
print("n first eigenvalues ",epsilon[0:n_eig_vals])


"""
Sparse diagonalisering ser ut til å være ustabil for endelig gauss brønn. Vet ikke hvorfor.
#Diagonalize the devil
t0 = time.time()
epsilon, phi = scipy.sparse.linalg.eigsh(h, k=3, which="SM",tol=1e-4)
t1 = time.time()
print( np.sort(epsilon).real )
"""

phi = np.array(phi)
#Plot some eigenstates
phi0 = phi[:,0].real
phi1 = phi[:,1].real
phi2 = phi[:,2].real
phi3 = phi[:,3].real

phi0 = phi0.reshape(N,N)
phi1 = phi1.reshape(N,N)
phi2 = phi2.reshape(N,N)
phi3 = phi3.reshape(N,N)

print(phi0.shape)
print(X.shape)
print(Y.shape)

#X,Y = np.meshgrid(x[1:N+1],y[1:N+1])
plt.figure(1)
plt.pcolor(X,Y,abs(phi0)**2)
plt.colorbar()

plt.figure(2)
plt.pcolor(X,Y,abs(phi1)**2)
plt.colorbar()

plt.figure(3)
plt.pcolor(X,Y,abs(phi2)**2)
plt.colorbar()

plt.figure(4)
plt.pcolor(X,Y,abs(phi3)**2)
plt.colorbar()

plt.show()


n first eigenvalues  [-1.28480032 -0.54030818 -0.03397769  0.02845895  0.07091058  0.08865521
  0.09692877  0.11143131  0.14076893  0.16508738]
(80, 80)
(80, 80)
(80, 80)

In [ ]:
"""
[-1.28464947 -0.5397044  -0.01941644  0.12019719  0.32129114  0.35215514
  0.35896735  0.45494504  0.64377807  0.66191719] Ngrid=40, Lx=5

[-1.30296832 -0.57005133 -0.05214825  0.02256737  0.06988632  0.08495039
  0.09670002  0.10626127  0.13486487  0.16413907] Ngrid=40, Lx=10

[-1.28480032 -0.54030818 -0.03397769  0.02845895  0.07091058  0.08865521
  0.09692877  0.11143131  0.14076893  0.16508738] Ngrid=80, Lx=10
"""