Equação de Dirac: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
Partícula Livre: comentário sobre o Princípio da Incerteza
 
(46 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 2: Linha 2:


=Introdução=
=Introdução=
A equação de Dirac descreve uma partícula relativística de spin <math>\frac{1}{2}</math>, como o elétron, com estrutura análoga a da equação de Schrödinger. Ela surgiu inicialmente como tentativa de explicar discrepâncias entre experimentos e teoria para o espectro do átomo de hidrogênio, possibilitando correções para o cálculo da energia do elétron em diferentes níveis (as chamadas correções de ''estrutura fina''). Além disso, por meio dela foi possível prever a existência de antimatéria: descrevendo o elétron, ela também descreve o pósitron.
A equação de Dirac descreve uma partícula relativística de spin <math>\frac{1}{2}</math>, como o elétron, com estrutura análoga à da equação de Schrödinger. Ela surgiu inicialmente como tentativa de explicar discrepâncias entre experimentos e teoria para o espectro do átomo de hidrogênio, possibilitando correções para o cálculo da energia do elétron em diferentes níveis (as chamadas correções de ''estrutura fina''). Além disso, por meio dela foi possível prever a existência de antimatéria: descrevendo o elétron, ela também descreve o pósitron.


A fim de compatibilizar a Mecânica Quântica com a Relatividade Especial, a equação diferencial parcial é de ''primeira'' ordem tanto no tempo quanto no espaço (diferentemente da equação de Schrödinger, que é de ''segunda'' ordem no espaço). A equação de Dirac pode ser escrita de diversas formas; aqui, apresentamo-la explicitamente como um sistema de EDPs acopladas, mais conveniente para os propósitos do trabalho.
A fim de compatibilizar a Mecânica Quântica com a Relatividade Especial, a equação diferencial parcial é de ''primeira'' ordem tanto no tempo quanto no espaço (diferentemente da equação de Schrödinger, que é de ''segunda'' ordem no espaço). A equação de Dirac pode ser escrita de diversas formas; aqui, apresentamo-la explicitamente como um sistema de EDPs acopladas, mais conveniente para os propósitos do trabalho.
Linha 37: Linha 37:


=Dedução da equação de Dirac em uma e duas dimensões=
=Dedução da equação de Dirac em uma e duas dimensões=
Consideraremos neste trabalho a equação de Dirac em uma e duas dimensões, <math>x</math> e <math>y</math>. A escolha dessas coordenadas se dá pela conveniência do acoplamento das EDPs: nesse caso, as quatro equações acopladas passam a ser acopladas duas a duas, facilitando o estudo do sistema.
Consideraremos neste trabalho a equação de Dirac em uma e duas dimensões, <math>x</math> e <math>y</math>. A escolha dessas coordenadas se dá pela conveniência do acoplamento das EDPs: nesse caso, as quatro equações acopladas passam a ser acopladas duas a duas, facilitando o estudo do sistema. A dedução aqui apresentada é baseada em [[Equação_de_Dirac#Referências|(1)]] e [[Equação_de_Dirac#Referências|(2)]].


==Construção do Hamiltoniano completo==
==Construção do Hamiltoniano completo==
Linha 178: Linha 178:
</math>
</math>
</center>
</center>
Neste trabalho, serão considerados principalmente problemas apenas com o potencial <math>V</math>; assim, caso indicado o contrário, será assumido <math>V_{sc}=0</math>.


=Discretização=
=Discretização=
Linha 251: Linha 253:
</center>
</center>


Neste trabalho, foram utilizados dois métodos de integração numérica diferentes: o de Crank-Nicolson, para a equação de Dirac em uma dimensão, e o de Leap-Frog, para a equação em duas dimensões.
Neste trabalho, foram utilizados dois métodos de integração numérica diferentes: o de Crank-Nicolson, para a equação de Dirac em uma dimensão, e o de Leap-Frog, para a equação em duas dimensões. Deixamos [[Equação_de_Dirac#Referências|(3)]] como referência para estes e outros métodos numéricos aplicados ao problema.


==Método de Crank-Nicolson==
==Método de Crank-Nicolson==
Linha 518: Linha 520:


Mostra-se, portanto, que a razão entre os coeficientes da série de Fourier nunca diverge, ou seja, o método é incondicionalmente estável.
Mostra-se, portanto, que a razão entre os coeficientes da série de Fourier nunca diverge, ou seja, o método é incondicionalmente estável.
==Método Leap-frog==
O método de Leap-frog (LF) é um método explícito, contendo apenas termos em um mesmo instante do tempo no cálculo das derivadas espaciais. Na simulação realizada, utilizou-se a equação de Dirac em duas dimensões com potencial magnético nulo:
<center>
<math>
i \partial_t \mathbf{\Phi} = \left[-\frac{i}{\varepsilon}(\sigma_1\partial_x+\sigma_2\partial_y) + \frac{1}{\varepsilon^2}\sigma_3 \right] \mathbf{\Phi} + [V(t,x)I_2] \mathbf{\Phi} 
</math>
</center>
onde se utiliza um parâmetro de escala <math>\varepsilon \in (0,1]</math>, conforme [[Equação_de_Dirac#Referências|(3)]]. Esse parâmetro está relacionado com a escolha de unidades do problema, e determina o comportamento relativístico do sistema estudado: quando <math>\varepsilon \to 0</math>, estamos no limite não relativístico; quando <math>\varepsilon \to 1</math>, estamos no limite relativístico com a velocidade da onda <math>v \to c</math>.
Enuncia-se o método LF como:
<center>
<math>
i \partial_t \mathbf{\Phi}_{i,j}^{n} = \left[-\frac{i}{\varepsilon}(\sigma_1\partial_x+\sigma_2\partial_y) + \frac{1}{\varepsilon^2}\sigma_3 \right] \mathbf{\Phi}_{i,j}^{n} + [V(t,x)I_2] \mathbf{\Phi}_{i,j}^{n} 
</math>
</center>
De forma análoga ao caso de uma dimensão, é feita a discretização temporal e espacial. Utiliza-se a discretização temporal como <math>t_n=t0+n\Delta t</math> na dimensão <math>y</math> na forma <math>y_j=y_0+jh</math> e na dimensão <math>x</math> como <math>x_i=x_0+ih</math>, onde <math>j</math> e <math>i</math> são números inteiros. Em adição, discretiza-se as derivadas espaciais e temporal da seguinte forma:
<center>
<math>
\delta_t\mathbf{\Phi^n _{i,j}} = \frac{\mathbf{\Phi^{n+1} _{i,j}} - \mathbf{\Phi^{n-1} _{i,j}}}{2\Delta t}
</math>
</center>
<center>
<math>
\delta_x\mathbf{\Phi^n _{i,j}} = \frac{\mathbf{\Phi^{n} _{i+1,j}} - \mathbf{\Phi^{n} _{i-1,j}}}{2h}
</math>
</center>
<center>
<math>
\delta_y\mathbf{\Phi^n _{i,j}} = \frac{\mathbf{\Phi^{n} _{i,j+1}} - \mathbf{\Phi^{n} _{i,j-1}}}{2h}
</math>
</center>
Primeiramente, reescreve-se o método na forma escalar como:
<center>
<math>
i \partial_t {\Phi_1}_{i,j}^{ n} = -\frac{i}{\varepsilon}(\partial_x-i\partial_y) {\Phi_4}_{i,j}^{n} + \frac{1}{\varepsilon^2}{\Phi_1}_{i,j}^{n} + V(t,x){\Phi_1}_{i,j}^{n}
</math>
</center>
<center>
<math>
i \partial_t {\Phi_4}_{i,j}^{n} = -\frac{i}{\varepsilon}(\partial_x+i\partial_y) {\Phi_1}_{i,j}^{n} - \frac{1}{\varepsilon^2}{\Phi_4}_{i,j}^{n} + V(t,x){\Phi_4}_{i,j}^{n}
</math>
</center>
Ao substituir as derivadas pela forma discreta, e isolar o termo do passo termoral posterior, obtêm-se a forma final como:
<center>
<math>
{\Phi_1}_{i,j}^{n+1}=-\frac{\Delta t}{h\varepsilon} \left[({\Phi_4}_{i+1,j}^{n}-{\Phi_4}_{i-1,j}^{n})-i({\Phi_4}_{i,j+1}^{n}-{\Phi_4}_{i,j-1}^{n}) \right]-2i\Delta t \left[\frac{1}{\varepsilon^2}+V_{i,j}^{n} \right]{\Phi_1}_{i,j}^{n}+{\Phi_1}_{i,j}^{n-1}
</math>
</center>
<center>
<math>
{\Phi_4}_{i,j}^{n+1}=-\frac{\Delta t}{h\varepsilon} \left[({\Phi_1}_{i+1,j}^{n}-{\Phi_1}_{i-1,j}^{n})+i({\Phi_1}_{i,j+1}^{n}-{\Phi_1}_{i,j-1}^{n}) \right]+2i\Delta t \left[\frac{1}{\varepsilon^2}+V_{i,j}^{n} \right]{\Phi_4}_{i,j}^{n}+{\Phi_4}_{i,j}^{n-1}
</math>
</center>
===Estabilidade do Método Leap-frog===
Assumindo que o potencial <math>V</math> é independente do tempo, pode-se provar via método de von Neumann que o método de Leap-frog é estável sob as condições:
<center>
<math>
    0 < \Delta t \leq \frac{\varepsilon^2 h}{|V|\varepsilon^2h+\sqrt{h^2+\varepsilon^2}}
</math>
</center>
Para <math> h>0 </math> e <math> 0<\varepsilon \leq 1. </math> [[Equação_de_Dirac#Referências|(3)]]


=Simulações em Julia=
=Simulações em Julia=
Linha 697: Linha 784:
===Poço Infinito===
===Poço Infinito===


Realizou-se-o o colocando dois potenciais muito grandes em <math>x=18, x=32</math>.
O poço infinito foi simulado colocando dois potenciais muito grandes em <math>x=18</math> e <math>x=32</math>. Abaixo está reproduzida a animação.


[[Arquivo:Diracpoco.gif]]
[[Arquivo:Diracpoco.gif]]


Nota-se que a função simulada é a soma dos quadrados dos módulos de cada função de onda (elétron e pósitron), esta área deve sempre ser unitária, o que concorda com o obtido. Na animação é possível perceber um comportamento semelhante ao de uma onda estacionária, onde tem-se vários "harmônicos" associadas ao pacote de ondas.  
Nota-se que a função simulada é a soma dos quadrados dos módulos de cada função de onda (elétron e pósitron); é a integral de <math>|\Phi|^2 = |\phi_1|^2+|\phi_4|^2</math> que deve sempre ser unitária, o que concorda com o obtido. Na animação é possível perceber um comportamento semelhante ao de uma onda estacionária, onde tem-se vários "harmônicos" associados ao pacote de ondas: como esperado, a função de onda é uma combinação linear dos autoestados do poço infinito.


Segue trecho do código utilizado para gerar a animação:
Segue trecho do código utilizado para gerar a animação:
Linha 779: Linha 866:
===Oscilador Harmônico Simples===
===Oscilador Harmônico Simples===


Realizou-se a simulação deslocando o pacote gaussiano para a posição <math>x=18</math> com a finalidade de obter um comportamento análogo ao caso clássico. Testou-se a simulação com diferentes k's, escolheu-se o mostrado pois facilita visualização do comportamento oscilatório.  
Inicialmente, realizou-se a simulação deslocando o pacote gaussiano para a posição inicial <math>x=18</math>, com a finalidade de observar a oscilação. Testou-se a simulação com diferentes <math>k</math>'s; escolheu-se o que está mostrado abaixo pois facilita a visualização do comportamento oscilatório.  


[[Arquivo:DiracOHS.gif]]
[[Arquivo:DiracOHS.gif]]


Nota-se um comportamento análogo ao caso clássico, porém em algumas momentos é possível observar certos harmônicos do pacote de onda. Especialmente nas extremidades nota-se um valor máximo para <math>|\mathbf{\Phi}|^2</math>.
Nota-se um comportamento análogo ao caso clássico; porém, em alguns momentos é possível observar certos harmônicos do pacote de onda. Além disso, nota-se nas extremidades um valor máximo para <math>|\mathbf{\Phi}|^2</math>, também condizente com o caso clássico.


Durante testes nas simulações, notou-se que a área sob a curva possui variações quando se utiliza um passo <math>\Delta t</math> muito alto. Nesse caso, a convergência do método de Crank-Nicolson para os valores teóricos depende da malha utilizada, embora a estabilidade dele seja incondicional. A diferença pode ser vista comparando-se a animação abaixo com a anterior:


[[Arquivo:DiracOHSdtalto.gif]]
[[Arquivo:DiracOHSdtalto.gif]]


Durante testes nas simulações, notou-se que a área sob a curva possui variações consideráveis quando utiliza-se um passo <math>\Delta t</math> muito alto, conforme observado na animação. O que demonstra que a convergência do método de Crank-Nicholson nesse cenário, depende da malha utilizada, embora a estabilidade seja incondicional.
Em seguida, passou-se para uma condição inicial com um pacote gaussiano centralizado:


[[Arquivo:DiracOHScentral.gif]]
[[Arquivo:DiracOHScentral.gif]]


Colocou-se, como condição inicial, um pacote centralizado. Fazendo que haja pequenas oscilações em torno do ponto de equilíbrio, devido ao fato da posição não estar bem definida.  
Mesmo que a posição inicial esteja no centro, devido ao fato da posição não estar bem definida ocorrem pequenas oscilações em torno do ponto de equilíbrio.


Segue código utilizado para o oscilador harmônico simples (a diferença entre cada caso é só as constantes e a condição inicial).
Por fim, segue o código utilizado para o oscilador harmônico simples (a diferença entre cada caso é só as constantes e a condição inicial).


<br />
<br />
Linha 867: Linha 955:
</source><br />
</source><br />


==Equação 1D com potencial "escalar"==
Consideraremos agora o problema com o potencial "escalar" <math>V_{sc}</math>. Dentro do formalismo da relatividade, os potenciais podem ser classificados de acordo com o seu comportamento frente a uma transformação de Poincaré: o potencial <math>V</math> se transforma como um vetor (por isso chamado de potencial "vetor"), e o potencial <math>V_{sc}</math>, como um escalar (potencial "escalar"). Como exemplo de potencial do tipo vetor, temos os potenciais eletromagnéticos; e de potencial do tipo escalar, pode-se citar modelos de confinamento. Na prática, pode-se dizer que o potencial <math>V_{sc}</math> altera a massa de repouso "efetiva" da partícula. Para este assunto, deixamos [[Equação_de_Dirac#Referências|(4)]] e [[Equação_de_Dirac#Referências|(5)]] como referências.
Por ser um tópico bastante especializado, será considerado aqui apenas o caso do poço infinito. O problema é apenas uma extensão do que foi exposto [[Equação_de_Dirac#Poço Infinito|nessa seção]]; a [[Equação_de_Dirac#Método_de_Crank-Nicolson|discretização]] e a estabilidade do método de Crank-Nicolson são análogas, bastando apenas fazer <math>\alpha^n = 1 + \frac{i \Delta t}{2}(V^n _j + V_{{sc}_j}^n + 1)</math> e <math>\beta^n = 1 + \frac{i \Delta t}{2}(V^n _j - V_{{sc}_j}^n -1)</math>.
===Poço Infinito===
Fez-se uma simulação completamente análoga à anterior, mas usando <math>V=0</math> e definindo o poço infinito em <math>V_{sc}</math>. A animação está reproduzida abaixo.
[[Arquivo:DiracVscPoco.gif]]
Não há diferença notável com relação ao poço infinito em <math>V</math>: o confinamento da partícula não muda, mesmo que a sua massa de repouso "efetiva" sim. No entanto, ressalta-se que esse é o comportamento conjunto das duas componentes <math>\phi_1</math> e <math>\phi_4</math>; o comportamento individual de cada uma pode ser diferente.
Em seguida, foi feita uma simulação colocando o poço infinito nos dois potenciais, ou seja, fazendo <math>V=V_{sc}</math>, conforme animação abaixo.
[[Arquivo:DiracVscVPoco.gif]]
Dessa vez, o comportamento é bastante diferente: a partícula fica apenas parcialmente confinada no poço, sendo parte da função de onda transmitida. Assim, observa-se um fenômeno que não ocorre na formulação não relativística da Mecânica Quântica: o de tunelamento em uma barreira infinita.
Segue abaixo o código utilizado para produzir as animações, adaptado do código utilizado [[Equação_de_Dirac#Poço Infinito|aqui]]. A diferença entre as duas animações é de apenas uma linha, definindo <math>V=0</math> ou <math>V=V_{sc}</math>.
<br />
<source lang="julia">
using Plots
using LaTeXStrings
using LinearAlgebra
using Integrals
function init(x, sigma)
    arg1 = @. ((-(x-25)^2)/(2*sigma^2))
    arg2 = 1/sqrt(sqrt(pi)*sigma)
    return arg2*exp.(arg1) ##Inicializo com um pacote gaussiano
end
function poco(V, h)
   
    #Quero colocar nas posições 18 e 32
    V[round(Int64, 18/h)] = 100000
    V[round(Int64, 32/h)] = 100000
   
    return V
end
##Matrizes do método de Crank-Nicholson
function matriz(dt,h,L, V, Sc)
    A = Diagonal(ones(L).*(1 .+ im*dt*0.5.*(V+Sc.+1))) 
    B = LinearAlgebra.Tridiagonal(ones(L-1).*(-dt/(4*h)), zeros(L), ones(L-1).*(dt/(4*h)))
    C = Diagonal(ones(L).*(1 .+ im*dt*0.5.*(V-Sc.-1)))
   
    A = Array(A)
    B = Array(B)
    C = Array(C)
   
    A_i = inv(A)
    B_i = inv(B)
    C_i = inv(C)
    AiB = A_i*B
    CiB = C_i*B
   
   
    D = B_i*conj(A) + CiB
    E = I(L) + C_i*conj(C)
    F = B_i*A -CiB
    G = A_i*conj(A) + I(L)
    H = AiB + B_i*conj(C)
    J = AiB - B_i*conj(C)
   
    F_i = inv(F)
    J_i = inv(J)
   
    K = F_i*D
    L = F_i*E
   
    M = J_i*G
    N = J_i*H
   
    return K, L, M, N
end
function CN(size, h, tsize, V, Sc, dt, ci)
    f = zeros(Complex, tsize, size) #Cada linha representa vetor posição em um tempo diferente. ## phi 1
    g = zeros(Complex, tsize, size) ##phi 4
   
    A, B, C, D = matriz(dt, h, size, V, Sc) #Matrizes do método Crank-Nicholson
   
    f[1, :] = ci ##Condição Inicial
    g[1, :] = zeros(size)
   
    ##Condições de Contorno
    f[:, 1] = zeros(tsize)
    f[:, end] = zeros(tsize)
   
    g[:, 1] = zeros(tsize)
    g[:, end] = zeros(tsize)
   
    i=2 #Não interfiro nos contornos
    while i<tsize
       
        f[i, :] = A*f[i-1, :] - B*g[i-1, :]
        g[i, :] = C*f[i-1, :] - D*g[i-1, :]
        i+=1
       
    end
    return f, g
end
function main()
   
    L = 50 #Dimensão espacial matriz
    sigma = 1 #Largura do pacote gaussiano
    dt = 0.02
    size= 10*L
    h = L/size ##Passo espacial
    tmax = 50
    tsize = round(Int64, tmax/dt) #Tamanho do vetor tempo
   
    t = LinRange(0, tmax, tsize)
    x = LinRange(0, L, size)
    V = zeros(size)
    Sc = copy(V)
    xi = init(LinRange(0, L, size), sigma) #Condição inicial pacote gaussiano
    Sc = poco(Sc,h) ##potencial "escalar"
    V = copy(Sc) ##potencial "vetor"
    f,g = CN(size,h,tsize,V,Sc,dt,xi)
    i=1
    #Faz o gif
    anim = @animate while i<=tsize
   
        f_real = real(f[i, :])
        f_imag = imag(f[i, :])
        g_real = real(g[i, :])
        g_imag = imag(g[i, :])
        probf = abs2.(f[i, :])
        probg = abs2.(g[i, :])
        prob = probf + probg
       
       
        problem = SampledIntegralProblem(prob, x) ##Calcula a área sob a curva
        method = TrapezoidalRule()
        integral = solve(problem, method)
        integral = round(integral[1]; digits=3)
        integral = string(integral)
       
        p = plot(x, prob,label=L"$|\Phi|^2$", legendfont=font(15), fill=true, fillalpha=0.2)
       
        titulo = "Poço"*", "*L"$\sigma=$"*string(sigma)*", "* L"$dt=$"*string(dt)* ", " *L"$t=$" * string(round(t[i], digits=3))*", Área="*integral
        plot!(x,Sc, label=L"$V=V_{sc}$", legendfont=font(15))
        plot!(title=titulo,
        xlabel = "x",
        xlim=(0,50),
        xticksfont = font(13),
        ticksfontsize = 10,
        ylim=(0,1),
        yticksfont=font(13),
        )
        i+=5 ##Feito de 5 em 5 para deixar .gif mais leve
    end
   
    arquivo = "diracVscVPoco.gif"
    gif(anim, arquivo, fps=30)
end
main()
</source><br />
==Equação 2D==
Passamos agora para o estudo da equação de Dirac em duas dimensões. Para tanto, a equação foi integrada utilizando-se o método de Leap-Frog, tanto com um potencial coulombiano central como com um potencial cossenoide. Em ambos casos, o potencial não depende do tempo e a condição inicial constituiu-se de um pacote gaussiano, centralizado em <math>(0,0)</math> para <math>\Phi_1</math> e em <math>(1,1)</math> para <math>\Phi_4</math>.
O procedimento adotado segue o utilizado em [[Equação_de_Dirac#Referências|(3)]]. De forma aproximada, atribuiu-se para o passo temporal <math>n=1</math>:
<center>
<math>
\mathbf{\Phi}_{i,j}^{1}=\mathbf{\Phi}_{i,j}^{0} -\sin \left(\frac{\Delta t }{\varepsilon} \right)\sigma_1(\delta_x+\delta_y)\mathbf{\Phi}_{i,j}^{0}-i \left(\sin\left(\frac{\Delta t }{\varepsilon^2}\right)\sigma_3+\Delta t V_{i,j}^{0} I_2\right)\mathbf{\Phi}_{i,j}^{0}
</math>
</center>
Segue abaixo o código utilizado para ambos potenciais, onde seu uso difere apenas em qual potencial foi comentado. A escolha do parâmetro de escala foi <math>\varepsilon = 0.8</math>.
<br />
<source lang="julia">
using Plots
using LinearAlgebra
using LaTeXStrings
using Printf
function initial_values()
L=10 #Malha de 4*(L/h)² de -L a L nas duas dimensões
h=1/16 #dx,dy=h
dt=0.01
ep=0.8 #0<ep<=1 -> := v/c
tmax=8.
x=LinRange(-L,L,2*Int(L/h))
y=LinRange(-L,L,2*Int(L/h))
#Potencial Coulombiano
V= zeros(ComplexF64,2*Int(L/h),2*Int(L/h))
Qe=1.
K=1 #K=9*10^9
V = [ -K*Qe/sqrt((x[i]^2 + y[j]^2)) for i in 1:2*Int(L/h), j in 1:2*Int(L/h) ]
#Potencial Cossenoide
#V = [ cos((-4*pi/sqrt(3))*x[i])+cos((2*pi/sqrt(3))*x[i]+2*pi*y[j])+cos((2*pi/sqrt(3))*x[i]-2*pi*y[j]) for i in 1:2*Int(L/h), j in 1:2*Int(L/h) ]
#psi 1 inicial (t=0)
psi1 =zeros(ComplexF64,2*Int(L/h),2*Int(L/h))
psi1 = [ (exp(-((x[i])^2+(y[j])^2)/2)) for i in 1:2*Int(L/h), j in 1:2*Int(L/h) ]
#psi4 iniciall (t=0)
psi4 =zeros(ComplexF64,2*Int(L/h),2*Int(L/h))
psi4 = [ exp(-((x[i] -1 )^2+(y[j] -1)^2)/2) for i in 1:2*Int(L/h), j in 1:2*Int(L/h) ]
#próximo psi1 (t=0+dt)
nextpsi1 =zeros(ComplexF64,2*Int(L/h),2*Int(L/h))
j=2
while j < 2*Int(L/h)
i=2
while i < 2*Int(L/h)
nextpsi1[i,j] = psi1[i,j]-sin(dt/ep)*((psi4[i+1,j]-psi4[i-1,j]) + (psi4[i,j+1]-psi4[i,j-1]))/(2*h)-im*(-im*sin(dt/(ep^2))*psi4[i,j]+h*V[i,j]*psi1[i,j])
i+=1
end
j+=1
end
#próximo psi4 (t=0+dt)
nextpsi4 =zeros(ComplexF64,2*Int(L/h),2*Int(L/h))
j=2
while j < 2*Int(L/h)
i=2
while i < 2*Int(L/h)
nextpsi4[i,j]= psi4[i,j]-sin(dt/ep)*((psi1[i+1,j]-psi1[i-1,j]) + (psi1[i,j+1]-psi1[i,j-1]))/(2*h)-im*(im*sin(dt/(ep^2))*psi1[i,j]+h*V[i,j]*psi4[i,j])
i+=1
end
j+=1
end
return L,h,dt,ep,tmax,x,y,V,psi1,psi4,nextpsi1,nextpsi4
end
L,h,dt,ep,tmax,x,y,V,psi1,psi4,nextpsi1,nextpsi4=initial_values()
#listas para salvar os frames do gif
anim_psi1=[]
anim_psi4=[]
#cópia para manipulação
uu=deepcopy(psi1)
vv=deepcopy(psi4)
t=0;
while t < tmax
global j
global uu; global vv;
global u; global v;
u=deepcopy(nextpsi1)
v=deepcopy(nextpsi4)
j=2
while j < 2*Int(L/h)
global i=2
while i < 2*Int(L/h)
global i
nextpsi1[i,j]= -(dt/(ep*h))*(v[i+1,j]-v[i-1,j])+((im*dt)/(ep*h))*(v[i,j+1]-v[i,j-1])-((2*im*dt)/(ep^2))*u[i,j]-(2*dt*im)*V[i,j]*u[i,j]+uu[i,j]
nextpsi4[i,j]= -(dt/(ep*h))*(u[i+1,j]-u[i-1,j])-((im*dt)/(ep*h))*(u[i,j+1]-u[i,j-1])+((2*im*dt)/(ep^2))*v[i,j]+(2*dt*im)*V[i,j]*v[i,j]+vv[i,j]
i+=1
end
j+=1
end
uu=deepcopy(u)
vv=deepcopy(v)
global t+=dt
push!(anim_psi1,deepcopy(nextpsi1))
push!(anim_psi4,deepcopy(nextpsi4))
end
#montagem do gif
function psi_anim(x,y,psi1,psi4,tmax)
i=1
anim = @animate while i<=length(psi1)
prob = abs2.(psi1[i])+abs2.(psi4[i])
    t=0.01*i
    titulo="Potencial Coulombiano, "*L"| \Phi |^{2}"*@sprintf("em t=%0.2f",t)
    #titulo=@sprintf("| \Phi |^{2}em t = %f",
    u=2*L/h #exibe a malha de forma reduzida
p = surface(x[Int(u/4):Int(3*u/4)],y[Int(u/4):Int(3*u/4)],prob[Int(u/4):Int(3*u/4),Int(u/4):Int(3*u/4)],title=titulo, xlabel = "x",ylabel="y",zlabel="Densidade de Probabilidade" ,zlim=(-0.5,1.75),clim=(0, maximum(prob)))
i+=5
end
arquivo = "psi_coulomb.gif"
gif(anim, arquivo, fps=15)
end
psi_anim(x,y,anim_psi1,anim_psi4,tmax)
</source><br />
===Potencial Coulombiano===
Na animação gerada, nota-se a dispersão para o infinito no momento inicial e o movimento semelhante a uma órbita que a curva de densidade de probabilidade <math>|\mathbf{\Phi}|^2</math> realiza em torno do centro do sistema de coordenadas, pois o potencial escolhido varia radialmente de forma positiva. Observa-se um padrão de ruído na parte central, o qual não foi estudado a fundo, mas, nesse caso, é exclusivo de pontos próximos ao ponto de divergência da função potencial.
[[Arquivo:Psi_coulomb.gif]]
===Potencial Cossenoide===
Reproduziu-se o potencial estudado em [[Equação_de_Dirac#Referências|(3)]], onde recebe o nome de "honeycomb potential". Observa-se, no período de tempo exibido, o espalhamento da função potencial no plano cartesiano e que a função densidade de probabilidade <math>|\mathbf{\Phi}|^2</math> forma um contorno de curva que se assemelha um favo de mel.


[[Arquivo:Psi_cosin.gif]]


=Referências=
=Referências=
# The quantum theory of the electron. Proceedings of the Royal Society of London A, v. 117, n. 778, p. 610–624, fev. 1928.
# DIRAC, P. A. M. The quantum theory of the electron. Proceedings of the Royal Society of London A, v. 117, n. 778, p. 610–624, fev. 1928.
# SAKURAI, J. J. Mecânica quântica moderna. 2. ed. Porto Alegre: Bookman, 2012.
# SAKURAI, J. J. Mecânica quântica moderna. 2. ed. Porto Alegre: Bookman, 2012.
# BAO, W. et al. Numerical Methods and Comparison for the Dirac Equation in the Nonrelativistic Limit Regime. Journal of Scientific Computing, v. 71, n. 3, p. 1094–1134, jun. 2017.
# BAO, W. et al. Numerical Methods and Comparison for the Dirac Equation in the Nonrelativistic Limit Regime. Journal of Scientific Computing, v. 71, n. 3, p. 1094–1134, jun. 2017.
# SOFF, G. et al. Solution of the Dirac Equation for Scalar Potentials and its Implications in Atomic Physics. Zeitschrift für Naturforschung A, v. 28, n. 9, p. 1389–1396, 1 set. 1973.  
# SOFF, G. et al. Solution of the Dirac Equation for Scalar Potentials and its Implications in Atomic Physics. Zeitschrift für Naturforschung A, v. 28, n. 9, p. 1389–1396, 1 set. 1973.  
# THALLER, B. The Dirac equation. Berlin: Springer, 2010.
# THALLER, B. The Dirac equation. Berlin: Springer, 2010.

Edição atual tal como às 18h25min de 27 de agosto de 2024

Grupo: André Luis Della Valentina, Lucas dos Santos Assmann, Vinícius Bayne Müller

Introdução

A equação de Dirac descreve uma partícula relativística de spin 12, como o elétron, com estrutura análoga à da equação de Schrödinger. Ela surgiu inicialmente como tentativa de explicar discrepâncias entre experimentos e teoria para o espectro do átomo de hidrogênio, possibilitando correções para o cálculo da energia do elétron em diferentes níveis (as chamadas correções de estrutura fina). Além disso, por meio dela foi possível prever a existência de antimatéria: descrevendo o elétron, ela também descreve o pósitron.

A fim de compatibilizar a Mecânica Quântica com a Relatividade Especial, a equação diferencial parcial é de primeira ordem tanto no tempo quanto no espaço (diferentemente da equação de Schrödinger, que é de segunda ordem no espaço). A equação de Dirac pode ser escrita de diversas formas; aqui, apresentamo-la explicitamente como um sistema de EDPs acopladas, mais conveniente para os propósitos do trabalho.

Assim como a equação de Schrödinger, a construção da equação de Dirac vem a partir do operador Hamiltoniano, que descreve a evolução temporal do estado quântico em questão:

itΨ(x,t)=HΨ(x,t)

onde, como anteriormente, os autovalores de H correspondem aos valores possíveis de energia que o sistema pode assumir.

A mudança com relação à Mecânica Quântica não relativística acontece quando consideramos a energia relativística da partícula:

E2=p2c2+m2c4

Assim, o Hamiltoniano é modificado para representar a medida da energia relativística total.

Diferentemente da equação de Schrödinger, aqui Ψ(x,t) não representa apenas uma função de onda, mas sim um conjunto de quatro delas. Usando a notação

Ψ=[Φ1Φ2Φ3Φ4],

as componentes de Ψ representam as funções de onda associadas ao elétron e ao pósitron: Φ1 (Φ2) representa a função de onda do elétron com spin up (down), e Φ3 (Φ4) representa a função de onda do pósitron com spin up (down). O objeto Ψ(x,t) é chamado de spinor.

Dedução da equação de Dirac em uma e duas dimensões

Consideraremos neste trabalho a equação de Dirac em uma e duas dimensões, x e y. A escolha dessas coordenadas se dá pela conveniência do acoplamento das EDPs: nesse caso, as quatro equações acopladas passam a ser acopladas duas a duas, facilitando o estudo do sistema. A dedução aqui apresentada é baseada em (1) e (2).

Construção do Hamiltoniano completo

Consideremos uma partícula sob ação de um potencial V(x;t) (onde x=(x,y,z)T), que afeta a energia potencial da partícula, e de um potencial "escalar" Vsc(x;t), que afeta a massa de repouso da mesma. Seguindo uma das propostas possíveis para o Hamiltoniano, temos

H=cαp+β(mc2+Vsc)+VI4

onde α=αxi^+αyj^+αzk^; αi e β são matrizes 4x4 adimensionais e p é o vetor momento linear da partícula.

Pode-se mostrar que α e β devem satisfazer certos vínculos, limitando as escolhas possíveis para essas matrizes. A escolha mais simples e usualmente adotada consiste em tomar

β=(I200I2)=(1000010000100001)

αx=(0σxσx0)=(0001001001001000)

αy=(0σyσy0)=(000i00i00i00i000)

αz=(0σzσz0)=(0010000110000100)

Sendo p=i, podemos escrever o produto escalar αp como

αp=i(αxx+αyy+αzz)

Portanto, em notação matricial o Hamiltoniano H pode ser escrito como

H=ic(00zxiy00x+iyzzxiy00x+iyz00)+(V+mc2+Vsc0000V+mc2+Vsc0000Vmc2Vsc0000Vmc2Vsc) H=(V+mc2+Vsc0iczicxcy0V+mc2+Vscicx+cyicziczicxcyVmc2Vsc0icx+cyicz0Vmc2Vsc)

Unidades naturais e redução para duas dimensões

A fim de simplificar o formalismo, adotamos as chamadas "unidades naturais", onde =c=m=1. Note que isso equivale a reescalar as quantidades físicas do problema por um fator adequado. Ao fazer c=1, também assumimos que a partícula está no limite relativístico.

Além disso, queremos estudar o problema em duas dimensões. Observamos que Ψ(x,y,z)=Ψ(x,y); logo, Ψz=0. Portanto, temos o Hamiltoniano simplificado

H=(V+1+Vsc00ixy0V+1+Vscix+y00ixyV1Vsc0ix+y00V1Vsc)

Forma explícita final

Retornando ao problema original, queremos resolver

itΨ=HΨ[iI4tH]Ψ=0

Novamente utilizando a notação matricial, obtemos

(itVVsc100ix+y0itVVsc1ixy00ix+yitV+Vsc+10ixy00itV+Vsc+1)(Φ1Φ2Φ3Φ4)=0

Realizando a multiplicação matricial, pode-se ver que se obtém dois sistemas acoplados: Φ1 com Φ4 e Φ2 com Φ3. Escolhendo o sistema de Φ1 com Φ4:


{(itVVsc1)Φ1+(ix+y)Φ4=0(ixy)Φ1+(itV+Vsc+1)Φ4=0

Simplificando e isolando a derivada temporal, obtemos por fim

{Φ1t=i(V+Vsc+1)Φ1Φ4x+iΦ4yΦ4t=i(VVsc1)Φ4Φ1xiΦ1y

Por fim, a equação em uma dimensão (x) é facilmente obtida: basta fazer Φ1y=Φ4y=0

{Φ1t=i(V+Vsc+1)Φ1Φ4xΦ4t=i(VVsc1)Φ4Φ1x

Neste trabalho, serão considerados principalmente problemas apenas com o potencial V; assim, caso indicado o contrário, será assumido Vsc=0.

Discretização

A equação de Dirac 1D pode ser escrita, na forma matricial, como

itΦ=[iσ1x+σ3]Φ+[V(t,x)I2]Φ

onde Φ=(ϕ1,ϕ4)T e I2 é matriz identidade de dimensão 2. As matrizes de Pauli σ são escritas, aqui, como σ1=σx e σ3=σz.

Para discretizar uma equação diferencial parcial como essa, é necessário discretizar o espaço e o tempo. Convenciona-se Δt como um passo finito de tempo e h como um passo finito no espaço, de tal forma que xj=x0+jh,tn=t0+nΔt, onde j,n são números inteiros. Define-se a notação Φ(tn,xj)=Φjn e também V(tn,xn)=Vjn. Discretiza-se as derivadas parciais explicitamente com uma expansão em série de taylor da própria função:

Φ𝐣𝐧+𝟏=Φ𝐣𝐧+tΦ𝐣𝐧Δt+𝒪(Δt2)

Considerando uma derivada discretizada δtt e truncando na primeira ordem:

δtΦ𝐣𝐧=Φ𝐣𝐧+𝟏Φ𝐣𝐧Δt

O processo é completamente análogo para a derivada espacial, porém para facilitar a aplicação do método mantém-se o espaço centrado em xj, em outras palavras faz-se uma expansão em torno de xj1, obtendo:

δxΦ𝐣𝐧=Φ𝐣+𝟏𝐧Φ𝐣𝟏𝐧2h

Com isso, obtém-se uma equação para um método explícito no tempo da equação de Dirac 1D.

iδtΦ𝐣𝐧=[iσ1δx+σ3]Φ𝐣𝐧+[VjnI2]Φ𝐣𝐧

iΦ𝐣𝐧+𝟏Φ𝐣𝐧Δt=[iσ1δx+σ3]Φ𝐣𝐧+[VjnI2]Φ𝐣𝐧

iΦ𝐣𝐧+𝟏=Φ𝐣𝐧+Δt[iσ1δx+σ3]Φ𝐣𝐧+Δt[VjnI2]Φ𝐣𝐧

Pode-se também desenvolver um método implícito no tempo fazendo a expansão de Φ𝐣𝐧𝟏 em torno de tn, obtendo:

δtΦ𝐣𝐧=Φ𝐣𝐧Φ𝐣𝐧𝟏Δt

Ao aplicar esta aproximação na equação discretizada basta dar um passo a frente em todos os elementos, obtendo um método implícito no tempo, já que há dependência com tn+1.

iΦ𝐣𝐧+𝟏=Φ𝐣𝐧+Δt[iσ1δx+σ3]Φ𝐣𝐧+𝟏+Δt[Vjn+1I2]Φ𝐣𝐧+𝟏

Neste trabalho, foram utilizados dois métodos de integração numérica diferentes: o de Crank-Nicolson, para a equação de Dirac em uma dimensão, e o de Leap-Frog, para a equação em duas dimensões. Deixamos (3) como referência para estes e outros métodos numéricos aplicados ao problema.

Método de Crank-Nicolson

O método de Crank-Nicolson (CN) consiste em uma média entre um método explícito e outro implícito no espaço. Utilizar-se-á a notação Φ𝐣𝐧+𝟏/𝟐 para representar justamente a média entre ambos os métodos, ou seja:

Φ𝐣𝐧+𝟏/𝟐=Φ𝐣𝐧+𝟏+Φ𝐣𝐧2

Define-se a notação:

Vjn+1/2Φ𝐣𝐧+𝟏/𝟐=Vjn+1Φ𝐣𝐧+𝟏+VjnΦ𝐣𝐧2

Dessa maneira, enuncia-se o método CN para a equação de Dirac 1D como:

iδtΦ𝐣𝐧=[iσ1δx+σ3]Φ𝐣𝐧+𝟏/𝟐+[Vjn+1/2I2]Φ𝐣𝐧+𝟏/𝟐,

onde δt,δx são as discretizações explícitas das derivadas.


Para que seja possível aplicar e estudar o método, é necessário passar da notação matricial para escalar:

iδtΦ𝐣𝐧=iσ1δx(Φ𝐣𝐧+𝟏+Φ𝐣𝐧2)+σ3(Φ𝐣𝐧+𝟏+Φ𝐣𝐧2)+I2(Vjn+1Φ𝐣𝐧+𝟏+VjnΦ𝐣𝐧2)

iΦ𝐣𝐧+𝟏Φ𝐣𝐧Δt=i2σ1[Φ𝐣+𝟏𝐧+𝟏Φ𝐣𝟏𝐧+𝟏2h+Φ𝐣+𝟏𝐧Φ𝐣𝟏𝐧2h]+σ3(Φ𝐣𝐧+𝟏+Φ𝐣𝐧2)+I2(Vjn+1Φ𝐣𝐧+𝟏+VjnΦ𝐣𝐧2)


Isolando cada tempo em um lado da igualdade:

[I2+i2Δtσ3+i2ΔtVjn+1I2]Φ𝐣𝐧+𝟏+Δt4hσ1[Φ𝐣+𝟏𝐧+𝟏Φ𝐣𝟏𝐧+𝟏]= [I2i2Δtσ3i2ΔtVjnI2]Φ𝐣𝐧Δt4hσ1[Φ𝐣+𝟏𝐧Φ𝐣𝟏𝐧]


Abrindo as matrizes σ1,σ3 e I2 e operando-as sobre o vetor Φ na equação, tem-se:

([1001]+iΔt2[1001]+i2ΔtVjn+1[1001])[ψ1,jn+1ψ4,jn+1]+Δt4h[0110][ψ1,j+1n+1ψ1,j1n+1ψ4,j+1n+1ψ4,j1n+1]=([1001]iΔt2[1001]i2ΔtVjn[1001])[ψ1,jnψ4,jn]Δt4h[0110][ψ1,j+1nψ1,j1nψ4,j+1nψ4,j1n]


Pode-se realizar as operações matriciais e escrever duas equações escalares. Para facilitar a notação, utiliza-se fjn=ψ1,jn e gjn=ψ4,jn:

{[1+iΔt2(Vjn+1+1)]fjn+1+Δt4h(gj+1n+1gj1n+1)=[1iΔt2(Vjn+1)]fjnΔt4h(gj+1ngj1n)[1+iΔt2(Vjn+11)]gjn+1+Δt4h(fj+1n+1fj1n+1)=[1iΔt2(Vjn1)]gjnΔt4h(fj+1nfj1n)


Tem-se então um número n de equações onde n é o número de elementos do espaço discretizado. Portanto o primeiro termo das duas equações gera uma matriz diagonal, pois multiplica os termos espaciais dependentes de xj; já o segundo termo gera uma matriz tridiagonal com diagonal principal nula. Nota-se que os primeiros termos dos dois lados da igualdade são o conjugado um do outro: define-se, portanto, αn=1+iΔt2(Vjn+1+1) e β=1+iΔt2(Vjn+11).

{αn+1fjn+1+Δt4h(gj+1n+1gj1n+1)=αn*fjnΔt4h(gj+1ngj1n)βn+1gjn+1+Δt4h(fj+1n+1fj1n+1)=βn*gjnΔt4h(fj+1nfj1n)


Considerando que o potencial V é só função da posição, escreve-se o método como:

{Afn+1+Bgn+1=A*fnBgnCgn+1+Bfn+1=C*gnBfn,

onde

A=[α0000α0000α00α];B=[0Δt4h00Δt4h0Δt4h00Δt4h000Δt4h0];C=[β0000β0000β00β].


Por fim, pode-se escrever o método resolvendo o sistema

{fn+1=F1DfnF1Egngn+1=J1GfnJ1Hgn,

onde D=(B1A*+C1B), E=(I+C1C*), F=(B1AC1B), G=(A1A*+I), H=(A1B+B1C*) e J=(A1BB1C).


Com isso, e com condições iniciais e de contorno bem estabelecidas, já é possível aplicar o método, dado que todas essas matrizes dependem somente dos parâmetros do sistema.

Estabilidade Crank-Nicolson

Utilizar-se-á o método de von Neumann para analisar a estabilidade do método de Crank-Nicolson para a equação de Dirac unidimensional. Para tanto, supõe-se que a função Φ𝐣𝐧 pode ser dada pela série de Fourier

Φ𝐣𝐧=k=0inf𝐀neikqjh

Devido à independência linear de cada termo do somatório, ao substituir na equação do método haverá uma equação para cada ente do somatório. Se |𝐀n+1𝐀n|1, então pode-se dizer que o método estável, já que dessa forma garante-se uma não divergência.

Aplica-se um termo geral da série de índice k no método CN para a equação de Dirac 1D:

[I2+i2Δtσ3+i2ΔtVjn+1I2]𝐀n+1eikqjh+Δt4hσ1𝐀n+1[eikq(j+1)heikq(j1)h]=[I2i2Δtσ3i2ΔtVjnI2]𝐀neikqjhΔt4hσ1𝐀n[eikq(j+1)heikq(j1)h]

Divide-se tudo por eikqjh e isola-se 𝐀:

[I2+i2Δtσ3+i2ΔtVjn+1I2+Δt4hσ1(eikqheikqh)]𝐀n+1=[I2i2Δtσ3i2ΔtVjnI2Δt4hσ1(eikqheikqh)]𝐀n

[I2+i2Δtσ3+i2ΔtVjn+1I2+Δt4hσ1(sin(kqh)2i)]𝐀n+1=[I2i2Δtσ3i2ΔtVjnI2Δt4hσ1(sin(kqh)2i)]𝐀n

[I2+i2Δtσ3+i2ΔtVjn+1I2iΔt4hσ1(sin(kqh)2)]𝐀n+1=[I2i2Δtσ3i2ΔtVjnI2+iΔt4hσ1(sin(kqh)2)]𝐀n

Nota-se que os termos que multiplicam o fator 𝐀 são o conjugado um do outro. Define-se zl como a componente l escalarda multiplicação da matriz I2+i2Δtσ3+i2ΔtVjn+1I2iΔt4hσ1(sin(kqh)2) pelo vetor A:

Aln+1Aln=z*z

|Aln+1Aln|=|z*z|=|z*||z|=1,

onde z é sempre diferente de zero, visto que a parte real é dada por uma matriz identidade constante.

Mostra-se, portanto, que a razão entre os coeficientes da série de Fourier nunca diverge, ou seja, o método é incondicionalmente estável.

Método Leap-frog

O método de Leap-frog (LF) é um método explícito, contendo apenas termos em um mesmo instante do tempo no cálculo das derivadas espaciais. Na simulação realizada, utilizou-se a equação de Dirac em duas dimensões com potencial magnético nulo:

itΦ=[iε(σ1x+σ2y)+1ε2σ3]Φ+[V(t,x)I2]Φ

onde se utiliza um parâmetro de escala ε(0,1], conforme (3). Esse parâmetro está relacionado com a escolha de unidades do problema, e determina o comportamento relativístico do sistema estudado: quando ε0, estamos no limite não relativístico; quando ε1, estamos no limite relativístico com a velocidade da onda vc.

Enuncia-se o método LF como:

itΦi,jn=[iε(σ1x+σ2y)+1ε2σ3]Φi,jn+[V(t,x)I2]Φi,jn

De forma análoga ao caso de uma dimensão, é feita a discretização temporal e espacial. Utiliza-se a discretização temporal como tn=t0+nΔt na dimensão y na forma yj=y0+jh e na dimensão x como xi=x0+ih, onde j e i são números inteiros. Em adição, discretiza-se as derivadas espaciais e temporal da seguinte forma:

δtΦ𝐢,𝐣𝐧=Φ𝐢,𝐣𝐧+𝟏Φ𝐢,𝐣𝐧𝟏2Δt

δxΦ𝐢,𝐣𝐧=Φ𝐢+𝟏,𝐣𝐧Φ𝐢𝟏,𝐣𝐧2h


δyΦ𝐢,𝐣𝐧=Φ𝐢,𝐣+𝟏𝐧Φ𝐢,𝐣𝟏𝐧2h


Primeiramente, reescreve-se o método na forma escalar como:


itΦ1i,jn=iε(xiy)Φ4i,jn+1ε2Φ1i,jn+V(t,x)Φ1i,jn

itΦ4i,jn=iε(x+iy)Φ1i,jn1ε2Φ4i,jn+V(t,x)Φ4i,jn

Ao substituir as derivadas pela forma discreta, e isolar o termo do passo termoral posterior, obtêm-se a forma final como:

Φ1i,jn+1=Δthε[(Φ4i+1,jnΦ4i1,jn)i(Φ4i,j+1nΦ4i,j1n)]2iΔt[1ε2+Vi,jn]Φ1i,jn+Φ1i,jn1

Φ4i,jn+1=Δthε[(Φ1i+1,jnΦ1i1,jn)+i(Φ1i,j+1nΦ1i,j1n)]+2iΔt[1ε2+Vi,jn]Φ4i,jn+Φ4i,jn1


Estabilidade do Método Leap-frog

Assumindo que o potencial V é independente do tempo, pode-se provar via método de von Neumann que o método de Leap-frog é estável sob as condições:

0<Δtε2h|V|ε2h+h2+ε2

Para h>0 e 0<ε1. (3)

Simulações em Julia

Equação 1D

Fez-se simulações do método de Crank-Nicolson para a equação de Dirac unidimensional em três configurações de potenciais diferentes: Nulo (Partícula Livre), Poço Infinito e Oscilador Harmônico Simples. Para todos os casos utilizou-se uma condição inicial de um pacote gaussiano de desvio padrão σ para uma das componentes de Φ, sendo a outra componente nula. O módulo quadrado do pacote gaussiano deve ter área unitária dentro da malha utilizada (de x=0 até x=50), por isso a constante de normalização deve ser 1σπ.

Segue trecho do código comum a todos as simulações realizadas; a única diferença é que em um caso do OHS o pacote gaussiano é deslocado do meio da malha para a posição x=18.


using Plots
using LaTeXStrings
using LinearAlgebra
using Integrals

function init(x, sigma)
	arg1 = @. ((-(x-25)^2)/(2*sigma^2))
	arg2 = 1/sqrt(sqrt(pi)*sigma)
	return arg2*exp.(arg1) ##Inicializo com um pacote gaussiano
end

function OHS(V,x, k)
	V = @. 0.5*k*(x-25)^2
	return V

end

function poco(V, h)
	
	#Quero colocar nas posições 18 e 32
	V[round(Int64, 18/h)] = 100000
	V[round(Int64, 32/h)] = 100000
	
	return V
end

##Matrizes do método de Crank-Nicholson

function matriz(dt,h,L, V)

	A = Diagonal(ones(L).*(1 .+ im*dt*0.5.*(V.+1)))  
	B = LinearAlgebra.Tridiagonal(ones(L-1).*(-dt/(4*h)), zeros(L), ones(L-1).*(dt/(4*h)))
	C = Diagonal(ones(L).*(1 .+ im*dt*0.5.*(V.-1)))
	
	A = Array(A)
	B = Array(B)
	C = Array(C)
	
	A_i = inv(A) 
	B_i = inv(B)
	C_i = inv(C)
	AiB = A_i*B
	CiB = C_i*B
	
	
	D = B_i*conj(A) + CiB
	E = I(L) + C_i*conj(C)
	F = B_i*A -CiB
	G = A_i*conj(A) + I(L)
	H = AiB + B_i*conj(C)
	J = AiB - B_i*conj(C)
	
	F_i = inv(F)
	J_i = inv(J)
	
	K = F_i*D
	L = F_i*E
	
	M = J_i*G
	N = J_i*H
	
	return K, L, M, N

end

function CN(size, h, tsize, V, dt, ci)

	f = zeros(Complex, tsize, size) #Cada linha representa vetor posição em um tempo diferente. ## phi 1
	g = zeros(Complex, tsize, size) ##phi 4
	
	A, B, C, D = matriz(dt, h, size, V) #Matrizes do método Crank-Nicholson
	
	f[1, :] = ci ##Condição Inicial
	g[1, :] = zeros(size)
	
	##Condições de Contorno
	f[:, 1] = zeros(tsize)
	f[:, end] = zeros(tsize)
	
	g[:, 1] = zeros(tsize)
	g[:, end] = zeros(tsize)
	
	i=2 #Não interfiro nos contornos
	while i<tsize
		
		f[i, :] = A*f[i-1, :] - B*g[i-1, :]
		g[i, :] = C*f[i-1, :] - D*g[i-1, :]
		i+=1
		
	end
	return f, g
end


Partícula Livre

Aplicou-se o código demonstrado com potencial nulo para simular o caso da partícula livre. Segue abaixo código utilizado para gerar a animação:

Nota-se que mesmo que ϕ4 seja nula no início, a existência da partícula ϕ1 (neste caso, o elétron com spin up) gera a outra (pósitron com spin down). O comportamento é de dispersão, ou seja, a tendência é que a posição fique cada vez menos definida: a partícula livre, por estar fora da ação de um potencial, apresenta momento bem definido; pelo Princípio da Incerteza, a posição torna-se incerta. Nota-se também que as bordas estão longe o suficiente na escala de tempo utilizada, de maneira que as condições de contorno não afetam a simulação.


function main()

	
	L = 50 #Dimensão espacial matriz
	k=0.1 #"Constante Elástica" do oscilador harmônico
	sigma = 1 #Largura do pacote gaussiano
	dt = 0.02
	size= 10*L
	h = L/size ##Passo espacial
	tmax = 15
	tsize = round(Int64, tmax/dt) #Tamanho do vetor tempo
	
	t = LinRange(0, tmax, tsize)
	x = LinRange(0, L, size)
	V = zeros(size)

	xi = init(LinRange(0, L, size), sigma) #Condição inicial pacote gaussiano


	f,g =CN(size,h,tsize, V, dt,xi)

	
	i=1
	anim = @animate while i<=tsize
		f_real = real(f[i, :])
		f_imag = imag(f[i, :])
		g_real = real(g[i, :])
		g_imag = imag(g[i, :])
		probf = abs2.(f[i, :])
		probg = abs2.(g[i, :])
		prob = probf + probg
		

		p=plot(x, probf, label=L"$|\phi_1|^2$", legendfont=font(15))
		plot!(x, probg, label=L"$|\phi_4|^2$", legendfont=font(15))
		titulo = "Partícula Livre"*", "*L"$\sigma=$"*string(sigma)*", "* L"$dt=$"*string(dt)* ", " *L"$t=$" * string(round(t[i], digits=3))
		plot!(title=titulo, 
		xlabel = "x", 
		xlim=(0,50),
		xticksfont = font(13),
		ticksfontsize = 10,
		ylim=(0,1),
		yticksfont=font(13),
		)

		i+=1
	end
	
	arquivo = "diracfree.gif"
	gif(anim, arquivo, fps=30)

end

main()


Poço Infinito

O poço infinito foi simulado colocando dois potenciais muito grandes em x=18 e x=32. Abaixo está reproduzida a animação.

Nota-se que a função simulada é a soma dos quadrados dos módulos de cada função de onda (elétron e pósitron); é a integral de |Φ|2=|ϕ1|2+|ϕ4|2 que deve sempre ser unitária, o que concorda com o obtido. Na animação é possível perceber um comportamento semelhante ao de uma onda estacionária, onde tem-se vários "harmônicos" associados ao pacote de ondas: como esperado, a função de onda é uma combinação linear dos autoestados do poço infinito.

Segue trecho do código utilizado para gerar a animação:



function main()

	
	L = 50 #Dimensão espacial matriz
	sigma = 1 #Largura do pacote gaussiano
	dt = 0.05 #Passo temporal
	size= 30*L #Utilizado para definir o passo espacial
	h = L/size #Passo espacial
	tmax = 30 #
	tsize = round(Int64, tmax/dt) tamanho do vetor tempo.
	
	t = LinRange(0, tmax, tsize)
	x = LinRange(0, L, size)
	V = zeros(size) 

	xi = init(LinRange(0, L, size), sigma) #Condição inicial de pacote gaussiano centralizado em x=25
	#V = OHS(V,x,k)
	V = poco(V, h) #Inicializa o potencial



	f,g =CN(size,h,tsize, V, dt,xi) #Obtém as funções de onda e sua respectiva evolução temporal

		

	
	
	##Produz-se a animação
	i=1
	anim = @animate while i<=tsize
		f_real = real(f[i, :])
		f_imag = imag(f[i, :])
		g_real = real(g[i, :])
		g_imag = imag(g[i, :])
		probf = abs2.(f[i, :])
		probg = abs2.(g[i, :])
		prob = probf + probg
		
		
		problem = SampledIntegralProblem(prob, x) #Resolve a integral em cada tempo, calculando a área e mostrando na animação
		method = TrapezoidalRule()
		integral = solve(problem, method)
		
		integral = round(integral[1]; digits=3) #Arredonda.
		integral = string(integral)
		
		p = plot(x, prob,label=L"$|\Phi|^2$", legendfont=font(15), fill=true, fillalpha=0.2)
		titulo = "Poço Infinito"*", "*", "*L"$\sigma=$"*string(sigma)*", "* L"$dt=$"*string(dt)* ", " *L"$t=$" * string(round(t[i], digits=3))*", Área="*integral
		plot!(x,V, label="Potencial", legendfont=font(15))
		plot!(title=titulo, 
		xlabel = "x", 
		xlim=(15,35),
		xticksfont = font(13),
		ticksfontsize = 10,
		ylim=(0,0.6),
		yticksfont=font(13),
		)

		i+=2 ##O passo é dado de 2 em 2 para deixar gif mais leve.
	end
	
	arquivo = "diracpoco.gif"
	gif(anim, arquivo, fps=30)

end

main()


Oscilador Harmônico Simples

Inicialmente, realizou-se a simulação deslocando o pacote gaussiano para a posição inicial x=18, com a finalidade de observar a oscilação. Testou-se a simulação com diferentes k's; escolheu-se o que está mostrado abaixo pois facilita a visualização do comportamento oscilatório.

Nota-se um comportamento análogo ao caso clássico; porém, em alguns momentos é possível observar certos harmônicos do pacote de onda. Além disso, nota-se nas extremidades um valor máximo para |Φ|2, também condizente com o caso clássico.

Durante testes nas simulações, notou-se que a área sob a curva possui variações quando se utiliza um passo Δt muito alto. Nesse caso, a convergência do método de Crank-Nicolson para os valores teóricos depende da malha utilizada, embora a estabilidade dele seja incondicional. A diferença pode ser vista comparando-se a animação abaixo com a anterior:

Em seguida, passou-se para uma condição inicial com um pacote gaussiano centralizado:

Mesmo que a posição inicial esteja no centro, devido ao fato da posição não estar bem definida ocorrem pequenas oscilações em torno do ponto de equilíbrio.

Por fim, segue o código utilizado para o oscilador harmônico simples (a diferença entre cada caso é só as constantes e a condição inicial).


function main()

	
	L = 50 #Dimensão espacial matriz
	k=0.1 #"Constante Elástica" do oscilador harmônico
	sigma = 1 #Largura do pacote gaussiano
	dt = 0.02
	size= 10*L
	h = L/size ##Passo espacial
	tmax = 50
	tsize = round(Int64, tmax/dt) #Tamanho do vetor tempo
	
	t = LinRange(0, tmax, tsize)
	x = LinRange(0, L, size)
	V = zeros(size)

	xi = init(LinRange(0, L, size), sigma) #Condição inicial pacote gaussiano
	V = OHS(V,x,k) ##inicializa o potencial

	f,g =CN(size,h,tsize, V, dt,xi)

	i=1
	#Faz o gif
	anim = @animate while i<=tsize
	
		f_real = real(f[i, :])
		f_imag = imag(f[i, :])
		g_real = real(g[i, :])
		g_imag = imag(g[i, :])
		probf = abs2.(f[i, :])
		probg = abs2.(g[i, :])
		prob = probf + probg
		
		
		problem = SampledIntegralProblem(prob, x) ##Calcula a área sob a curva
		method = TrapezoidalRule()
		integral = solve(problem, method)
		integral = round(integral[1]; digits=3)
		integral = string(integral)
		
		p = plot(x, prob,label=L"$|\Phi|^2$", legendfont=font(15), fill=true, fillalpha=0.2)
		
		#=
		p=plot(x, probf, label=L"$|\phi_1|^2$", legendfont=font(15))
		plot!(x, probg, label=L"$|\phi_4|^2$", legendfont=font(15))
		=#
		
		titulo = "OHS"*", "*L"$k=$"*string(k)*", "*L"$\sigma=$"*string(sigma)*", "* L"$dt=$"*string(dt)* ", " *L"$t=$" * string(round(t[i], digits=3))*", Área="*integral
		plot!(x,V, label="Potencial", legendfont=font(15))
		plot!(title=titulo, 
		xlabel = "x", 
		xlim=(0,50),
		xticksfont = font(13),
		ticksfontsize = 10,
		ylim=(0,1),
		yticksfont=font(13),
		)
		i+=5 ##Feito de 5 em 5 para deixar .gif mais leve
	end
	
	arquivo = "diracOHS.gif"
	gif(anim, arquivo, fps=30)

end

main()


Equação 1D com potencial "escalar"

Consideraremos agora o problema com o potencial "escalar" Vsc. Dentro do formalismo da relatividade, os potenciais podem ser classificados de acordo com o seu comportamento frente a uma transformação de Poincaré: o potencial V se transforma como um vetor (por isso chamado de potencial "vetor"), e o potencial Vsc, como um escalar (potencial "escalar"). Como exemplo de potencial do tipo vetor, temos os potenciais eletromagnéticos; e de potencial do tipo escalar, pode-se citar modelos de confinamento. Na prática, pode-se dizer que o potencial Vsc altera a massa de repouso "efetiva" da partícula. Para este assunto, deixamos (4) e (5) como referências.

Por ser um tópico bastante especializado, será considerado aqui apenas o caso do poço infinito. O problema é apenas uma extensão do que foi exposto nessa seção; a discretização e a estabilidade do método de Crank-Nicolson são análogas, bastando apenas fazer αn=1+iΔt2(Vjn+Vscjn+1) e βn=1+iΔt2(VjnVscjn1).

Poço Infinito

Fez-se uma simulação completamente análoga à anterior, mas usando V=0 e definindo o poço infinito em Vsc. A animação está reproduzida abaixo.

Não há diferença notável com relação ao poço infinito em V: o confinamento da partícula não muda, mesmo que a sua massa de repouso "efetiva" sim. No entanto, ressalta-se que esse é o comportamento conjunto das duas componentes ϕ1 e ϕ4; o comportamento individual de cada uma pode ser diferente.


Em seguida, foi feita uma simulação colocando o poço infinito nos dois potenciais, ou seja, fazendo V=Vsc, conforme animação abaixo.

Dessa vez, o comportamento é bastante diferente: a partícula fica apenas parcialmente confinada no poço, sendo parte da função de onda transmitida. Assim, observa-se um fenômeno que não ocorre na formulação não relativística da Mecânica Quântica: o de tunelamento em uma barreira infinita.

Segue abaixo o código utilizado para produzir as animações, adaptado do código utilizado aqui. A diferença entre as duas animações é de apenas uma linha, definindo V=0 ou V=Vsc.


using Plots
using LaTeXStrings
using LinearAlgebra
using Integrals

function init(x, sigma)
    arg1 = @. ((-(x-25)^2)/(2*sigma^2))
    arg2 = 1/sqrt(sqrt(pi)*sigma)
    return arg2*exp.(arg1) ##Inicializo com um pacote gaussiano
end


function poco(V, h)
    
    #Quero colocar nas posições 18 e 32
    V[round(Int64, 18/h)] = 100000
    V[round(Int64, 32/h)] = 100000
    
    return V
end

##Matrizes do método de Crank-Nicholson

function matriz(dt,h,L, V, Sc)

    A = Diagonal(ones(L).*(1 .+ im*dt*0.5.*(V+Sc.+1)))  
    B = LinearAlgebra.Tridiagonal(ones(L-1).*(-dt/(4*h)), zeros(L), ones(L-1).*(dt/(4*h)))
    C = Diagonal(ones(L).*(1 .+ im*dt*0.5.*(V-Sc.-1)))
    
    A = Array(A)
    B = Array(B)
    C = Array(C)
    
    A_i = inv(A) 
    B_i = inv(B)
    C_i = inv(C)
    AiB = A_i*B
    CiB = C_i*B
    
    
    D = B_i*conj(A) + CiB
    E = I(L) + C_i*conj(C)
    F = B_i*A -CiB
    G = A_i*conj(A) + I(L)
    H = AiB + B_i*conj(C)
    J = AiB - B_i*conj(C)
    
    F_i = inv(F)
    J_i = inv(J)
    
    K = F_i*D
    L = F_i*E
    
    M = J_i*G
    N = J_i*H
    
    return K, L, M, N

end

function CN(size, h, tsize, V, Sc, dt, ci)

    f = zeros(Complex, tsize, size) #Cada linha representa vetor posição em um tempo diferente. ## phi 1
    g = zeros(Complex, tsize, size) ##phi 4
    
    A, B, C, D = matriz(dt, h, size, V, Sc) #Matrizes do método Crank-Nicholson
    
    f[1, :] = ci ##Condição Inicial
    g[1, :] = zeros(size)
    
    ##Condições de Contorno
    f[:, 1] = zeros(tsize)
    f[:, end] = zeros(tsize)
    
    g[:, 1] = zeros(tsize)
    g[:, end] = zeros(tsize)
    
    i=2 #Não interfiro nos contornos
    while i<tsize
        
        f[i, :] = A*f[i-1, :] - B*g[i-1, :]
        g[i, :] = C*f[i-1, :] - D*g[i-1, :]
        i+=1
        
    end
    return f, g
end


function main()

    
    L = 50 #Dimensão espacial matriz
    sigma = 1 #Largura do pacote gaussiano
    dt = 0.02
    size= 10*L
    h = L/size ##Passo espacial
    tmax = 50
    tsize = round(Int64, tmax/dt) #Tamanho do vetor tempo
    
    t = LinRange(0, tmax, tsize)
    x = LinRange(0, L, size)
    V = zeros(size)
    Sc = copy(V)

    xi = init(LinRange(0, L, size), sigma) #Condição inicial pacote gaussiano
    Sc = poco(Sc,h) ##potencial "escalar"
    V = copy(Sc) ##potencial "vetor"

    f,g = CN(size,h,tsize,V,Sc,dt,xi)

    i=1
    #Faz o gif
    anim = @animate while i<=tsize
    
        f_real = real(f[i, :])
        f_imag = imag(f[i, :])
        g_real = real(g[i, :])
        g_imag = imag(g[i, :])
        probf = abs2.(f[i, :])
        probg = abs2.(g[i, :])
        prob = probf + probg
        
        
        problem = SampledIntegralProblem(prob, x) ##Calcula a área sob a curva
        method = TrapezoidalRule()
        integral = solve(problem, method)
        integral = round(integral[1]; digits=3)
        integral = string(integral)
        
        p = plot(x, prob,label=L"$|\Phi|^2$", legendfont=font(15), fill=true, fillalpha=0.2)
        
        titulo = "Poço"*", "*L"$\sigma=$"*string(sigma)*", "* L"$dt=$"*string(dt)* ", " *L"$t=$" * string(round(t[i], digits=3))*", Área="*integral
        plot!(x,Sc, label=L"$V=V_{sc}$", legendfont=font(15))
        plot!(title=titulo, 
        xlabel = "x", 
        xlim=(0,50),
        xticksfont = font(13),
        ticksfontsize = 10,
        ylim=(0,1),
        yticksfont=font(13),
        )
        i+=5 ##Feito de 5 em 5 para deixar .gif mais leve
    end
    
    arquivo = "diracVscVPoco.gif"
    gif(anim, arquivo, fps=30)

end

main()


Equação 2D

Passamos agora para o estudo da equação de Dirac em duas dimensões. Para tanto, a equação foi integrada utilizando-se o método de Leap-Frog, tanto com um potencial coulombiano central como com um potencial cossenoide. Em ambos casos, o potencial não depende do tempo e a condição inicial constituiu-se de um pacote gaussiano, centralizado em (0,0) para Φ1 e em (1,1) para Φ4.

O procedimento adotado segue o utilizado em (3). De forma aproximada, atribuiu-se para o passo temporal n=1:

Φi,j1=Φi,j0sin(Δtε)σ1(δx+δy)Φi,j0i(sin(Δtε2)σ3+ΔtVi,j0I2)Φi,j0

Segue abaixo o código utilizado para ambos potenciais, onde seu uso difere apenas em qual potencial foi comentado. A escolha do parâmetro de escala foi ε=0.8.



using Plots
using LinearAlgebra
using LaTeXStrings
using Printf

function initial_values()

L=10 #Malha de 4*(L/h)² de -L a L nas duas dimensões
h=1/16 #dx,dy=h
dt=0.01
ep=0.8 #0<ep<=1 -> := v/c
tmax=8.

x=LinRange(-L,L,2*Int(L/h))
y=LinRange(-L,L,2*Int(L/h))

#Potencial Coulombiano
V= zeros(ComplexF64,2*Int(L/h),2*Int(L/h))
Qe=1.
K=1 #K=9*10^9
V = [ -K*Qe/sqrt((x[i]^2 + y[j]^2)) for i in 1:2*Int(L/h), j in 1:2*Int(L/h) ]

#Potencial Cossenoide
#V = [ cos((-4*pi/sqrt(3))*x[i])+cos((2*pi/sqrt(3))*x[i]+2*pi*y[j])+cos((2*pi/sqrt(3))*x[i]-2*pi*y[j]) for i in 1:2*Int(L/h), j in 1:2*Int(L/h) ]


#psi 1 inicial (t=0)
psi1 =zeros(ComplexF64,2*Int(L/h),2*Int(L/h))
psi1 = [ (exp(-((x[i])^2+(y[j])^2)/2)) for i in 1:2*Int(L/h), j in 1:2*Int(L/h) ]

#psi4 iniciall (t=0)
psi4 =zeros(ComplexF64,2*Int(L/h),2*Int(L/h))
psi4 = [ exp(-((x[i] -1 )^2+(y[j] -1)^2)/2) for i in 1:2*Int(L/h), j in 1:2*Int(L/h) ]

#próximo psi1 (t=0+dt)
nextpsi1 =zeros(ComplexF64,2*Int(L/h),2*Int(L/h))

j=2
while j < 2*Int(L/h)
	i=2
	while i < 2*Int(L/h)
		nextpsi1[i,j] = psi1[i,j]-sin(dt/ep)*((psi4[i+1,j]-psi4[i-1,j]) + (psi4[i,j+1]-psi4[i,j-1]))/(2*h)-im*(-im*sin(dt/(ep^2))*psi4[i,j]+h*V[i,j]*psi1[i,j])
		i+=1
		end
	j+=1
	end

#próximo psi4 (t=0+dt)
nextpsi4 =zeros(ComplexF64,2*Int(L/h),2*Int(L/h))

j=2
while j < 2*Int(L/h)
	i=2
	while i < 2*Int(L/h)
		nextpsi4[i,j]= psi4[i,j]-sin(dt/ep)*((psi1[i+1,j]-psi1[i-1,j]) + (psi1[i,j+1]-psi1[i,j-1]))/(2*h)-im*(im*sin(dt/(ep^2))*psi1[i,j]+h*V[i,j]*psi4[i,j])
		i+=1
		end
	j+=1
	end

return L,h,dt,ep,tmax,x,y,V,psi1,psi4,nextpsi1,nextpsi4
end




L,h,dt,ep,tmax,x,y,V,psi1,psi4,nextpsi1,nextpsi4=initial_values()

#listas para salvar os frames do gif
anim_psi1=[]
anim_psi4=[]

#cópia para manipulação
uu=deepcopy(psi1)
vv=deepcopy(psi4)

t=0;
while t < tmax

global j
global uu; global vv;
global u; global v;
u=deepcopy(nextpsi1)
v=deepcopy(nextpsi4)

j=2
	while j < 2*Int(L/h)
		global i=2

		while i < 2*Int(L/h)
			global i

			nextpsi1[i,j]= -(dt/(ep*h))*(v[i+1,j]-v[i-1,j])+((im*dt)/(ep*h))*(v[i,j+1]-v[i,j-1])-((2*im*dt)/(ep^2))*u[i,j]-(2*dt*im)*V[i,j]*u[i,j]+uu[i,j]
			nextpsi4[i,j]= -(dt/(ep*h))*(u[i+1,j]-u[i-1,j])-((im*dt)/(ep*h))*(u[i,j+1]-u[i,j-1])+((2*im*dt)/(ep^2))*v[i,j]+(2*dt*im)*V[i,j]*v[i,j]+vv[i,j]
			i+=1
		end
	j+=1
	end

uu=deepcopy(u)
vv=deepcopy(v)



global t+=dt

push!(anim_psi1,deepcopy(nextpsi1))
push!(anim_psi4,deepcopy(nextpsi4))

end


#montagem do gif
function psi_anim(x,y,psi1,psi4,tmax)
	i=1
	anim = @animate while i<=length(psi1)
		prob = abs2.(psi1[i])+abs2.(psi4[i])

    t=0.01*i
    titulo="Potencial Coulombiano, "*L"| \Phi |^{2}"*@sprintf("em t=%0.2f",t)
    #titulo=@sprintf("| \Phi |^{2}em t = %f",
    u=2*L/h #exibe a malha de forma reduzida
		p = surface(x[Int(u/4):Int(3*u/4)],y[Int(u/4):Int(3*u/4)],prob[Int(u/4):Int(3*u/4),Int(u/4):Int(3*u/4)],title=titulo, xlabel = "x",ylabel="y",zlabel="Densidade de Probabilidade" ,zlim=(-0.5,1.75),clim=(0, maximum(prob)))
		i+=5
	end
	arquivo = "psi_coulomb.gif"
	gif(anim, arquivo, fps=15)
end


psi_anim(x,y,anim_psi1,anim_psi4,tmax)



Potencial Coulombiano

Na animação gerada, nota-se a dispersão para o infinito no momento inicial e o movimento semelhante a uma órbita que a curva de densidade de probabilidade |Φ|2 realiza em torno do centro do sistema de coordenadas, pois o potencial escolhido varia radialmente de forma positiva. Observa-se um padrão de ruído na parte central, o qual não foi estudado a fundo, mas, nesse caso, é exclusivo de pontos próximos ao ponto de divergência da função potencial.


Potencial Cossenoide

Reproduziu-se o potencial estudado em (3), onde recebe o nome de "honeycomb potential". Observa-se, no período de tempo exibido, o espalhamento da função potencial no plano cartesiano e que a função densidade de probabilidade |Φ|2 forma um contorno de curva que se assemelha um favo de mel.

Referências

  1. DIRAC, P. A. M. The quantum theory of the electron. Proceedings of the Royal Society of London A, v. 117, n. 778, p. 610–624, fev. 1928.
  2. SAKURAI, J. J. Mecânica quântica moderna. 2. ed. Porto Alegre: Bookman, 2012.
  3. BAO, W. et al. Numerical Methods and Comparison for the Dirac Equation in the Nonrelativistic Limit Regime. Journal of Scientific Computing, v. 71, n. 3, p. 1094–1134, jun. 2017.
  4. SOFF, G. et al. Solution of the Dirac Equation for Scalar Potentials and its Implications in Atomic Physics. Zeitschrift für Naturforschung A, v. 28, n. 9, p. 1389–1396, 1 set. 1973.
  5. THALLER, B. The Dirac equation. Berlin: Springer, 2010.