cálculo de estados eletrônicosem estruturas semicondutoras

45
RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014 Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 1 Relatório de Iniciação Científica Cálculo de Estados Eletrônicos em Estruturas Semicondutoras Período: 01/08/2013 a 30/06/2014 Instituição: Laboratório de Novos Materiais Semicondutores do Instituto de Física da USP Bolsista: Thiago Luiz Chaves de Melo Orientadora: Profa. Euzi Conceição Fernandes da Silva Resumo Neste trabalho foi apresentado o método Split-Step FFT que permite evoluir numericamente funções de onda submetidas a potenciais arbitrários. O método – através do que é chamado de propagação imaginária – permite a obtenção dos autoestados e autofunções soluções da Equação de Schrödinger para o potencial em questão. A técnica foi utilizada para calcular autoestados e autofunções em um potencial típico de estruturas semicondutoras compostas, levando-se em conta as dimensões proporcionais de sua composição. Isso foi possível devido ao fato de o método Split-Step FFT atribuir comportamento periódico a suas soluções, algo que se encaixa perfeitamente no contexto de cristais semicondutores cujo arranjo é conhecidamente periódico. No final é apresentado um método mais rápido de propagação para funções de onda baseado em programação paralela. Índice 1. Introdução .................................................................................................................. 2 1.1. A Mecânica Quântica e a Física do Estado Sólido ....................................... 2 1.1.1. Formalismo Quântico ................................................................................... 3 1.1.2. Brevíssima Introdução à Física do Estado Sólido ..................................... 5 2. Método Split-Step FFT ................................................................................................ 9 2.1. A Transformada Rápida de Fourier................................................................... 9

Upload: thiago-melo

Post on 23-Jan-2017

38 views

Category:

Science


0 download

TRANSCRIPT

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 1

Relatório de Iniciação Científica

Cálculo de Estados Eletrônicos

em Estruturas Semicondutoras

Período: 01/08/2013 a 30/06/2014

Instituição: Laboratório de Novos Materiais

Semicondutores do Instituto de Física da USP

Bolsista: Thiago Luiz Chaves de Melo

Orientadora: Profa. Euzi Conceição Fernandes da Silva

Resumo

Neste trabalho foi apresentado o método Split-Step FFT que

permite evoluir numericamente funções de onda submetidas a

potenciais arbitrários. O método – através do que é chamado de

propagação imaginária – permite a obtenção dos autoestados e

autofunções soluções da Equação de Schrödinger para o

potencial em questão.

A técnica foi utilizada para calcular autoestados e

autofunções em um potencial típico de estruturas semicondutoras

compostas, levando-se em conta as dimensões proporcionais de

sua composição. Isso foi possível devido ao fato de o método

Split-Step FFT atribuir comportamento periódico a suas soluções,

algo que se encaixa perfeitamente no contexto de cristais

semicondutores cujo arranjo é conhecidamente periódico.

No final é apresentado um método mais rápido de

propagação para funções de onda baseado em programação

paralela.

Índice

1. Introdução .................................................................................................................. 2

1.1. A Mecânica Quântica e a Física do Estado Sólido ....................................... 2

1.1.1. Formalismo Quântico ................................................................................... 3

1.1.2. Brevíssima Introdução à Física do Estado Sólido ..................................... 5

2. Método Split-Step FFT ................................................................................................ 9

2.1. A Transformada Rápida de Fourier ................................................................... 9

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 2

2.2. A solução numérica da Equação de Schrödinger ...................................... 16

2.3. Unidades atômicas ........................................................................................... 23

2.4. Implementação do algoritmo ........................................................................ 24

2.5. Aplicação do método a um potencial típico de uma estrutura

semicondutora ......................................................................................................... 30

2.6. Autofunções e autovalores em função da largura do poço .................... 30

3. Método das Diferenças Finitas com Programação Paralela ............................ 36

3.1. Equações diferenciais parciais ....................................................................... 36

3.2. Diferenças Finitas para Equações Parabólicas ............................................ 37

3.3. Programação paralela .................................................................................... 40

4. Conclusão ................................................................................................................. 44

5. Bibliografia ................................................................................................................ 45

1. Introdução

1.1. A Mecânica Quântica e a Física do Estado Sólido

A descoberta e posteriores desdobramentos da Mecânica Quântica

permitiu que o ser humano olhasse novamente para a natureza sob uma nova

óptica. Uma das áreas por onde esse novo olhar pairou foi a ciência dos

materiais.

Desde eras muito distantes no tempo pessoas já utilizavam materiais

diferentes para as mais diversas finalidades. Independente de quais eram suas

motivações, o fato é que novos materiais foram sempre sendo descobertos,

aperfeiçoados e até mesmo sintetizados.

Classificando os materiais como: cerâmicas, metais e plásticos. É

possível pensar em vasos de barro (cerâmicas), laminas (metais) e borrachas

(plásticos). É bastante razoável imaginar que esses utensílios eram encontrados

com facilidade em uma sociedade da virada século XIX para o XX.

Após o advento da Mecânica Quântica, pode-se dizer que a história foi

reescrita em termos de aperfeiçoamento e desenvolvimento de novos

materiais. A compreensão do universo na escala atômica permitiu que novos

materiais fossem estruturados desde essa escala, o que se traduziu em objetos

capazes de reagir ao ambiente na sua forma mais fundamental.

Materiais avançados concebidos através dessa nova compreensão da

natureza são inúmeros e estão tão assimilados a realidade que passam

desapercebidos de tão comuns.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 3

Muitos ramos da física estão intrinsecamente relacionados com a

ciência dos materiais. Em especial a Física do Estado Sólido exerce um papel

fundamental.

1.1.1. Formalismo Quântico

A grosso modo, toda a Mecânica Quântica parte da Equação de

Schrödinger, que assim como a segunda lei de Newton, é uma equação que

permite se obter todas as informações à respeito da dinâmica de um sistema.

A Equação de Schrödinger que pode ser vista na Eq. 1,

(

) ( )

( )

(1)

é extremamente genérica ao permitir que todo o sistema seja expresso em

termos de sua massa e de sua interação com o meio, ou seja, o potencial

. O asterisco no símbolo da massa se refere à massa efetiva, algo que será

discutido mais adiante.

Por mais que a Eq. 1 seja extremamente genérica, ela contém um

problema absolutamente não trivial, que é o cálculo de ( ). Chamada de

função de onda, a função ( ) é de onde será possível extrair todas as

informações a respeito do sistema.

Antes de entrar no mérito de como se obtem ( ), é interessante

saber como ela pode ser capaz de fornecer tantas informações.

A aplicação de operadores sobre ( ) permite a obtenção de

determinados valores. Por exemplo, em um sistema com conservação de

energia total em um determinado instante de tempo , o operador

hamiltoniano aplicado sobre a função de onda deve satisfazer a

seguinte condição,

( ) ( ) (2)

sendo a energia cinética e a energia potencial. Sendo assim, a aplicação

de sobre a função de onda precisa ser igual a multiplicação do valor de

pela função. A aplicação de um operador sobre um vetor resultando em um

número escalar multiplicado pelo proprópio vetor só ocorre quando esse vetor

for um dos chamados autovetores da função e os valores de escalares são os

autovalores. Sendo a função ( ) como um vetor de dimensão infinita, ela

pode ser chamada de autofunção.

O fato importante aqui é o seguinte: se o sistema realmente conservar

sua energia e ( ) for realmente a função de onda desse sistema, então a

Eq. 2 será verdadeira. Isso reflete o fato de a função de onda conter

informações sobre o sistema. Sendo assim, dado que ( ) é a função de

onda de um sistema conservativo, ela é automaticamente autofunção do

operador hamiltoniano com autovalor igual ao valor da energia do sistema.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 4

Ao invés de se aplicar o operador hamiltoniano , cujos autovalores

são os valores de energia, pode-se aplicar outros operadores, como por

exemplo os operadores de momento angular , cujos autovalores serão os

valores de momento angular ou , cujos autovalores serão os valores da

projeção do momento angular sobre o eixo . Esses são apenas exemplos

comuns.

Outro detalhe importantíssimo à respeito de ( ) é que seu módulo

ao quadrado | ( )| é uma distribuição de probabilidade, ou seja

( ) ∫| ( )|

(3)

é a probabilidade de que o sistem definido por ( ) se encontre dentro da

região , seja lá de quantas dimensões se esteja tratando.

Um último detalhe importante antes de mergulhar na obtenção de

( ) é que

⟨ ( )⟩ ∫ ( ) ( ) ( )

(4)

ou seja, a integral da Eq. 4 permite encontrar o valor médio do operador ( )

dentro da região . Se ( ) , então a Eq. 4 resultará no valor médio da

energia do sistema descrito por ( ) dentro da região .

A maneira mais comum de se resolver a Eq. 1 afim de se encontrar

( ) é supor um instante de tempo no qual a energia se conserve. Nesse

instante, as Eq. 1 e a Eq. 2 serão essencialmente a mesma. Isso acontece pois

( )

(5)

onde, em mecânica quântica, . Esses passos levam a

(

) ( ) ( ) (6)

onde tudo o mais fica em função do potencial , ou seja, a interação do

sistema com o meio. Para alguns potenciais existem soluções analíticas para

esse problema, mas a grande maioria dos casos, incluídos ai os de maior

interesse, não existem ou são muito complicadas de se obter.

Outra maneira de se chegar a Eq. 6 é supondo que ( ) pode ser

escrita como ( ) ( ) ( ), substituir isso na Eq. 1 e quebrá-la da seguinte

forma

(

) ( ) ( )

( ) ( )

(7)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 5

(

( ) ( ))

( )

( )

( )

(8)

( )

( ) ( )

( )

( )

(9)

Uma abordagem bastante comum é de se escrever a função ( )

como uma combinação linear de um conjunto ortogonormal de funções,

onde cada uma dessas componentes individualmente representa uma

possível autofunção do sistema correspondendo à uma possível autovalor. A

própria Eq. 9 se trabalhada levará a isso.

Como o instante de tempo poderia ser qualquer e as autofunções

instantâneas dependem apenas do potencial que nesse instante dependerá

apenas das coordenadas espaciais, a propria autofunção obtida para esse

instante de tempo não terá dependência temporal, sendo apenas ( )

( ). A decomposição de ( ) será

( ) ∑

( ) (10)

onde as funções ( ) apresetarão a propriedade de

∫ ( ) ( )

(11)

com sendo todo o espaço.

A partir da segunda parte da Eq. (9), é possível chegar a solução

chegal do problema incluindo sua dependência temporal

( ) ∑

( ) ( ) ∑

( )

(12)

Esta é apenas uma breve introdução não muito coerente, mas que

busca por expor alguns dos conceitos utilizados mais adiante.

1.1.2. Brevíssima Introdução à Física do Estado Sólido

Muitos materiais quando estão no estado sólido apresentam aquilo que

é chamado de estrutura cristalina. Os cristais possuem algumas propriedades

que facilitam em muito seu tratamento quântico. Entre essas propriedades, a

mais importante é o seu arranjo periódico.

Todo cristal possui um arranjo primário, chamado de célula unitária. Esse

arranjo primário se repete indefinidamente através do cristal. Por exemplo, a

Figura 1 mostra uma célula unitária e o cristal a que ela da origem.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 6

Figura 1 - Célula unitária e cristal resultante de sua repetição.

Existe uma série de propriedades a respeito das possíveis células

unitárias que um cristal pode apresentar. É interessante frisar que a repetição

do padrão, sob o ponto de vista da Mecânica Quântica, permite a resolução

do sistema para uma célula unitária e supor sua repetição indefinida, uma vez

que as dimensões dos materiais são, em boa aproximação, infinitas se

comparadas às dimensões dos sistemas quânticos que serão tratados.

É possível posicionar uma rede padronizado por sobre um cristal, tendo

como pontos da rede seus átomos, grupos de átomos ou mesmo posições

regularmente espaçadas entre átomos. Essa rede é chamada de rede

cristalina ou rede de Bravais.

Uma característica interessante a respeito da rede de Bravais é que

através de um conjunto de vetores (1 em uma dimensão, 2 em duas

dimensões e 3 em três dimensões) é possível ligar todos os pontos da rede.

Esses vetores e suas combinações são chamados de vetores da rede.

Um exemplo de rede de Bravais com seus vetores primitivos é mostrado

na Figura 2.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 7

Figura 2 - Exemplo de rede cristalina com seus vetores primitivos.

Para um conjunto de todos os possíveis vetores de uma rede de Bravais,

é possível encontrar um conjunto de vetores de onda (para ondas planas)

cuja periodicidade seja idêntica a da rede em questão. Esse conjunto de

vetores de onda recebe o nome de rede recíproca.

Matemáticamente, se forem os vetores primitivos da rede de

Bravais . Então qualquer vetor da rede pode ser escrito como

(13)

sendo as componentes do vetor na direção . O mesmo vale para os

vetores da rede recíproca :

(14)

que apresentam a seguinte propriedade conjunta

(15)

através da qual, conhecendo-se os vetores da rede de Bravais (ou direta) é

possível encontrar os vetores da rede recíproca e vice-versa.

Não existe uma única célula unitária para cada rede direta, sendo

possíveis algumas variações. Um tipo de célula que sempre é possível se

construir é a chamada célular primitiva de Wigner-Seitz, que pode ser

entendida a partir da Figura 3.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 8

Figura 3 - Célula Primitiva de Wigner-Seitz para uma rede cristalina.

Também existem células primitivas na rede recíproca. A célular primitiva

de Wigner-Seitz da rede recíproca recebe o nome de Primeira Zona de

Brillouin.

O teorema mais importante em Física do Estado Sólido é o Teorema de

Bloch. Sendo uma rede direta um arranjo periódico de átomos, ou algo do

tipo, é razoável de se esperar que o potencial também seja periódico

( ) ( ) (16)

para todos os vetores da rede. O teorema de Bloch diz que

( ) ( ) (17)

é a solução da equação de Schrödinger Eq. (1) para o potencial da Eq. (16).

Onde

( ) ( ) (18)

é uma função periódica para todo .

É interessante que,

( ) ( ) ( ) ( ) (19)

portanto:

( ) ( ) (20)

sendo as Eq. (17) e Eq. (20) as duas possíveis formas do teorema de de Bloch,

em conjunto com a Eq. (16) do potencial.

Esta brevíssima introdução tem apenas o objetivo de como a Mecânica

Quântica é introduzida na Física do Estado Sólido, basicamente através do

teorema de Bloch.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 9

2. Método Split-Step FFT

2.1. A Transformada Rápida de Fourier

É possível de se representar uma função qualquer em um intervalo

qualquer através de uma Série de Fourier.

( )

(21)

sendo

∫ ( )

∫ ( )

(22)

com sendo o intervalo onde essa representação da função ( ) é válida.

Fora desse intervalo, a representação se comportará como uma repetição

deslocada em , chamada de repetição de Fourier, que pode ser vista na

Figura 4.

Figura 4 - Representação de Fourier e extensões de Fourier

Modificando um pouco as Eq. (21) e Eq. (22), chega-se a:

( ) ∑

(23)

sendo,

( )

( )

(24)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 10

Uma Tranformada de Fourier consiste de se levar uma função ( ) do

espaço de para um outro espaço ( ) através de um núcleo de

transformação ( ). Isso se processa da seguinte forma:

( )

√ ∫ ( )

(25)

Sendo a transformada inversa:

( )

√ ∫ ( )

(26)

( )

∫ ( )

(27)

A Transformada de Fourier advem de alguma forma das Séries de

Fourier [1, pgs. 708-709]. A vantagem de se usar Transformadas de Fourier para

levar funções de um espaço para outro é que muitas equações diferenciais

tem sua solução facilitadas através desse processo. A Figura 5 [1, pg. 707],

ilustra essa ideia.

Figura 5 - Processo de resolução de problema difícil através de Transformada de Fourier [1, pg.

707].

A Eq. (1), a Equação de Schrödinger é uma equação diferencial. Utilizar

Transformadas de Fourier para resolvê-la é um caminho, mas o foco deste

trabalho é utilizar soluções computacionais para resolver o problema.

A Eq. (27) não pode ser tratada diretamente por um computador. Sua

alternativa é chamada de Transformada Discreta de Fourier (TDF). A TDF

consiste em algumas modificações na transformada original. Primeiramente é

necessário se definit um conjunto de pontos sobre os quais a transformada

será realizada. Em um intervalo com de comprimento, tem-se que:

(28)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 11

(29)

e também se define:

(30)

(31)

que substituindo na Eq. (25) e trocando a integral por uma somatória:

( )

√ ∑ ( )

(32)

( )

∑ ( )

(33)

unindo as Eq. (28) e Eq. (30), tem-se que:

(34)

modificando isso na Eq. (33):

( )

∑ ( ) ( )

( )

∑ ( )

(35)

( )

∑ ( )

(36)

A Transformada Discreta de Fourier fica, então:

( )

∑ ( )

(37)

e a transformada inversa:

( ) ∑ ( )

(38)

sendo:

(39)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 12

É importante notar o seguinte: para o cálculo de cada um dos

valores de ( ) é necessário realizar operações. A transformada discreta

consome ( ) operações e o mesmo para a transformada inversa.

Computacionalmente a TDF é muito cara. Um computador com clock

de , implicando em um tempo de máquina

, que levar em

média ciclos de máquina para fazer cada operação, levará:

( ) para realizar a transformada de 10.000 pontos.

Além do tempo que o computador levará para resolver o problema estando

no espaço inverso, ele levará outros para realizar a transformada inversa.

Se o programa precisar realizar essa tarefa muitas vezes, como é o caso do

método que será discutido nas próximas seções, poderá consumir um tempo

muito grande.

Uma forma de se resolver esse problema é utilizando a Transformada

Rápida de Fourier. Todo o método a seguir está descrito em [2, pgs. 392-409].

Esse método permite um aumento na velocidade da TDF através do

reaproveitamento de multiplicações. O termo chave é o seguinte:

(

) (40)

que subtituído na Eq. (37):

( )

∑ ( )

(41)

Agora vem algo muito importante: precisa ser uma potência de , isso

ficará claro a seguir. Os valores de ( ) serão:

( )

( ( )

( ) ( )

( ) ( )

)

( )

( ( )

( ) ( )

( ) ( )

)

( )

( ( )

( ) ( )

( ) ( )

)

( )

( ( )

( ) ( )

( ) ( )

)

( )

( ( )

( ) ( )

( )

( ) ( ) )

Pode-se representar isso da seguinte forma:

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 13

(

( ) )

(

( )

( )

( )

( )

( ))

(

( )

( )

( )

( )

( ))

(42)

Lembrando que da Eq. (40), é um número complexo. Para

complexos, é válido: ( ), já que: ( ) ( ) ( )

( ) ( ), pela lei dos cossenos. Desta forma, , ,

, , , . A matriz então pode ser

modificada para:

(

)

(

( )

( )

( )

( )

( ))

(

( )

( )

( )

( )

( ))

(43)

Agora só serão necessários os cálculos de até , todos os outros

são desnecessários. O próximo passo é separar o produto de matrizes acima

em pares:

(

)

(

( )

( )

( )

( )

( ))

(

( )

( )

( )

( )

( ) )

(44)

e ímpares:

(

)

(

( )

( )

( )

( )

( ))

(

( )

( )

( )

( )

( ) )

(45)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 14

A Eq. (44) apresenta apenas as colunas pares enquanto que a Eq. (45)

apresenta apenas as colunas ímpares. A soma das equações Eq. (44) e Eq.

(45) deve ser igual a Eq. (43).

Dado que a matriz da Eq. (44) possui linhas, a coluna da direita que

cai da seguinte forma: , , , , vai checar a zero novamente

na linha ⁄ , que é a primeira linha da segunda metade da matriz, de

cima para baixo. Outras regras semelhantes valem para as outras colunas. Dai

em diante a matriz se repete, sendo a metade superior igual a metade inferior.

A seguir isso é exemplificado para .

(

)

(

( )

( )

( )

( ))

(

( )

( )

( )

( )

( ) )

(46)

(

)

(

( )

( )

( )

( ))

(

( )

( )

( )

( )

( ) )

(47)

As equações a seguir representam as Eq. (44) e Eq.(45),

respectivamente:

( )

∑ ( )

(48)

( )

∑ ( ( ))

( )

(49)

Modificando a Eq. (41):

( ) ( )

( )

(50)

( )

( ∑ ( )

∑ ( ( )) ( )

) (51)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 15

( )

( ∑ ( )

∑ ( ( ))

) (52)

Definindo:

( ) ( ) ( ) ( )

(53)

( )

( ∑ ( )

∑ ( )

) (53)

Com essa alteração, o lado porção ímpar da Eq. (43) passa a

apresentar um comportamento semelhante ao visto na Eq. (46), ou seja, uma

repetição da metade superior na metade inferior, diferindo apenas do fato de

todos seus termos estarem multiplicados por .

Voltando agora para a Eq. (41) e comparando-a com as Eq. (53) e Eq.

(40). Mudando ⁄ a Eq. (40) fica:

( ⁄ )

(

) (54)

Defindindo:

(55)

Modifica-se a Eq. (53) para:

( )

( ∑ ( )

∑ ( ) ( )

∑ ( )

∑ ( ) ( )

)

(56)

Definindo novamente:

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

(57)

A Eq. (56) é conduzida a:

( )

( ∑ ( )

∑ ( )

( ∑ ( )

∑ ( )

))

(58)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 16

A Eq. (58) tem o poder de tranformar as Eq. (44) e Eq. (45) de modo que

as primeiras ⁄ linhas da matriz se repitam matriz abaixo, diminuindo mais uma

vez o número de valores de que precisam serem calculados. Esse

processo deve ser repetido até que a quantidade de linhas da matriz que se

repetem sejam apenas duas, está é a razão de precisar ser uma potência

de . Esse processo pode ser atingido por meio de um algoritmo recursivo, que

apesar de já existir, será um exercício interessante para o relatório final.

2.2. A solução numérica da Equação de Schrödinger

A forma utilizada aqui para se resolver a Equação de Schrödinger

numéricamente se encaixão no conjunto dos métodos conhecidos como

métodos espectrais. Esses métodos se apoiam fortemente na decomposição

da função de onda solução do problema como na Eq. (12).

O procedimento descrito a seguir é descrito em [5].

De forma semelhante a descrita na Eq. (12), a evolução temporal em

de uma função ( ) pode ser dada por

( ) ⁄ ( ) (59)

Separando como na Eq. (5),

( ) ( ( ) ) ⁄ ( ) (60)

onde a exponencial não pode ser separada de forma exata devido a não

comutabilidade entre ( ) e

[ ( ) ] ( ) ( ( ) ( )) ( )

( ) ( ) ( ) ( )

( )(

) ( ) (

) ( ) ( )

( ) ( ) (

) ( ) ( )

( ) ( ) (

) (( ( )) ( ) ( ) ( ))

(

)( ( ) ( ) ( ) ( )) [ ( )] ( )

(61)

Entretando, cada separação na exponencial da Eq. (60) adiciona um

erro da ordem de ( ). De modo que:

( )

⁄ ( )

⁄ ( ) ( ) (62)

e, ainda:

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 17

( ) ( )

( )

⁄ ( ) ( ) (63)

podendo ser aproximada por

( ) ( )

( )

⁄ ( ) (64)

se o intervalo for suficientemente pequeno.

Utilizando a Eq. (64) para evoluir em uma função ( )

( ) ( )

( )

⁄ ( ) (65)

esse processo pode ser repetido indefinidamente para evoluir uma função

inicial conhecida a partir de seus autoestados.

A grande dificuldade encontra-se no cálculo do fator

⁄ , já que ele

apresenta uma derivada segunda nas coordenadas espaciais.

A solução desse problema é um amontoado de todo o amontoado

que já foi dito até aqui.

O materiais semicondutores apresentam estrutura cristalina, como foi

dito na seção 1.1.2. Isso significa que a cada certa distância o sistema unitário

se repete. Esse é o tipo de problema ideal para ser resolvido através de

Transformadas de fourier.

Em [6], onde são discutidas técnicas a respeito de crescimento de

semiconditores utilizando um processo chamado Molecular Beam Epitaxy

(MBE) – uma técnica utilizada no Laboratório de Novos Materiais

Semicondutores do Instituto de Física da USP, será explicada em maiores

detalhes no relatório final – onde o material produzido apresenta simetria em

duas direções, só sofrendo alterações do ponto de vista quântico na terceira.

Isso é esboçado na Figura 6.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 18

Figura 6 - Esquema de material que pode ser crescido com MBE submetido a uma diferença de

potencial.

Na Figura 6, um sólido composto por dois semicondutores diferentes,

intercalados, que for submetido a uma difereça de potencial conforme

indicada, apresentara diferenças sob o ponto de vista de um tratamento

quântico apenas na direção .

Para sólidos como o da Figura 6 o problema precisa ser resolvido

apenas em 1 dimensão. Essa direção será chamada de por conveniência.

A partir da Eq. (65):

( ) ( ) ⁄ ( ) (66)

( ) ⁄ ( ) (67)

( ) ⁄ ( ) (68)

A exponencial da Eq. (68) carrega uma derivada segunda em . A

forma utilizada para se trabalhar esse termo é:

(69)

Se:

( )

∑ ( )

(70)

for a TDF de ( ) dada pela Eq. (37), então, pela Eq. (38):

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 19

( ) ∑ ( )

(71)

é uma forma de se representar ( ), de modo que:

( ) ⁄ ∑ ( )

(72)

( ) ∑

(

)

∑ ( )

(73)

( ) ∑

(

)

(

)

∑ ( )

(74)

( ) ∑

(

)

∑ ( ) (

)

(75)

Individualmente:

(

)

( ) (

)

((

) ) ( )

(

) (

)

(

) ( )

Sendo assim, por indução é possível mostrar que:

(

)

( )

(76)

( ) ∑

(

)

∑ ( )( )

(77)

Invertenco a ordem das somatórias:

( ) ∑ ∑

(

)

( )

(78)

( ) ∑

( )

(79)

Finalmente, multiplica-se ( ) pela parcela restante do potencial.

( ) ( ) ⁄ ( ) (80)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 20

Esse procedimento permite evoluir uma função ( ) em , entretanto

o que se busca são as autofunções e autovalores. Supondo conhecidas todas

as autofunções ( ), todos os autovalores e todos os pesos de cada

autofunção na composição de ( ), então:

( ) ∑ ( ) ⁄

(81)

O processo utilizando para se descobrir essas autofunções e autovalores

é chamado de propagação imaginária. O primeiro passo é substituir por

na Eq. (81).

( ) ∑ ( ) ⁄

(82)

O próximo passo é normalizar essa função:

( )

∑ ( ) ⁄

√ ( ) ( ) (83)

( )

∑ ( ) ⁄

√(∑ ( ) ⁄

)(∑ ( ) ⁄ )

(84)

( )

∑ ( ) ⁄

√∑ | | ⁄

(85)

Isso porque, por definição:

∮ ( ) ( )

(86)

Os autovalores de energia respeitam a seguinte ordem:

. Sabendo disso e reformulando a Eq. (85).

( )

∑ ( ) ⁄

√| | ⁄ ∑ | | ⁄

(87)

( )

∑ ( ) ⁄

⁄ √ ∑

| |

| | ( ) ⁄

(88)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 21

( ) ∑

( ) ( ) ⁄

√ ∑| |

| | ( ) ⁄

(89)

( ) ( ) ∑

( ) ( ) ⁄

√ ∑| |

| | ( ) ⁄

(90)

Sendo a menor de todas as energias, as exponenciais tanto do

numerador quando do denominador da Eq. (90) tendem a zero quando .

Isso porque: . Isso significa que:

( ) ( ) (91)

A evolução temporal de ( ) com permite a obtenção do

estado fundamental ( ). Os estados excitados são obtidos através do

método da Ortogonalização de Gram-Schmidt, bastante comum em algebra

linear para ortogonalização de um conjunto de votores não ortogonais

inicialmente, ou seja, se { } for um conjunto de vetores de dimensão

não ortogonais, então:

(92)

( )

( ) (93)

( )

( ) (94)

O novo conjunto de vetores { } é ortogonal. Da mesma forma,

supõem-se um conjunto inicial de funções { ( ) ( ) ( ) ( )}.

Com ( ) ( ). Se o primeiro estado excitado for:

( ) ∑ ⁄ ( )

(95)

Então o método diz que:

( )

( ) ⟨ ( )| ( )⟩ ( )

√⟨ ( )| ( )⟩ |⟨ ( )| ( )⟩| (96)

( )

( ) ⟨ ( )| ( )⟩ ( )

√∑ | | ⁄ |⟨ ( )| ( )⟩|

(97)

⟨ ( )| ( )⟩ ⁄ (98)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 22

( )

( ) ⟨ ( )| ( )⟩ ( )

√∑ | | ⁄ | |

(99)

( )

( ) ⟨ ( )| ( )⟩ ( )

√| | ⁄ | |

⁄ ∑ | | ⁄ | |

(100)

( )

( ) ⟨ ( )| ( )⟩ ( )

√| | ⁄ ∑ | | ⁄

(101)

( ) ∑

( ) ⁄ ( )

( ) ⁄ ( )

√ ∑| |

| | ( ) ⁄

(102)

( ) ( ) ∑

( ) ⁄ ( )

√ ∑| |

| | ( ) ⁄

(103)

Onde, novamente:

( ) ( ) (104)

Este processo pode ser generalizado da seguinte forma:

( ) ( ) ∑

( ) ⁄ ( )

√ ∑| |

| | ( ) ⁄

(105)

( ) ( ) (106)

Depois de todas as autofunções serem obtidas, é possível obter os

autovalores através da Equação de Schrödinger, Eq. (1).

[

( )] ( ) ( ) (107)

⟨ ( )| [

( )] | ( )⟩ ⟨ ( )| | ( )⟩ (108)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 23

⟨ ( )| [

( )] | ( )⟩

⟨ ( )| ( )⟩

(109)

Como o processo todo é realizado, na verdade, com uma função

discreta a valores discretos, é interessante introduzir um método de se calcular

a derivada segunda de uma função discreta:

( )

[ ( ) ( ) ( )

( ) ( )] (

)

(110)

Essa fórmula não é utilizada por [5]. Será interessante no relatório final

checar se ela realmente acrescenta precisa ao método ou se todas as

aproximações feitas até aqui já tornar ela irrelevante.

2.3. Unidades atômicas

A razão de se utilizar unidades atômicas é devido ao esforço

computacional gasto computando números da ordem de para

menores. Essa técnica consiste em se multiplicar as equações trabalhadas por

constantes que as tornem menos custosas ao processamente. Tomando como

exemplo a Equação de Schrödinger, Eq. (6):

(

) ( ) ( ) (111)

(

) ( ) ( ) (112)

Se a massa especícica for definida como:

(113)

sendo a massa do elétron e uma constante. Reformulando a Eq. (112):

(

) ( )

( ) (114)

(

) ( )

( ) (115)

(

) ( ) ( ) (116)

Se a Eq. (116) for resolvida para , que deve ser o potencial real

multiplicado por ⁄ , os autovalores obtidos serão , que precisarão serem

multiplicados por ⁄ para se chegar aos valores verdadeiros.

Só com essa pequena alteração o programa de computador já deixará

de processar diversas vezes as constantes:

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 24

(117)

(118)

2.4. Implementação do algoritmo

A seguir está o algoritmo desenvolvido utilizando a linguagem de

programação Python e que implementa o método explicado na seção 1.3.

Importante: toda vez que aparece o caracter “\” (barra invertida), significa

uma quebra de linha, ou seja, a linha de baixo é continuação da linha na qual

se encontra a “\” independente de qualquer coisa.

001.| #######################################################

002.| ## Iniciacao Cientifica ##

003.| ## Thiago Luiz Chaves de Melo, 6431429 - IF-USP 2013 ##

004.| ## Prof Dra. Euzi Conceicao Fernandes da Silva ##

005.| #######################################################

006.| import numpy as np

007.| import matplotlib.pyplot as plt

008.| import scipy.integrate as integrate

009.| import matplotlib.animation as animation

010.| import cmath

011.| import math

012.| import copy as cp

013.| import sys

014.|

015.| class Wpuap:

016.|

017.| def __init__(self):

018.| self.bohr_radius = 5.291772108e-11

019.| self.charge = 1.60217653e-19

020.| self.pot = 1.0e-16

021.| self.angstrom = 1e-10

022.| self.me = 9.1093826e-31

023.| self.h_bar = 6.58211915e-16

024.| self.dt = 5.73e-3

025.|

026.| self.system_length = 300 # (Ã…)

027.| #self.well_width = 100 # (Ã…)

028.| self.well_height = 0.3 # (eV)

029.| self.well_width = np.arange(5, 105, 5) # (Ã…)

030.|

031.| self.system_size = self.system_length / \

032.| (self.bohr_radius / self.angstrom)

033.| self.number_of_points = 1024

034.| self.autovalue_adjust = ((self.h_bar)**2) / self.me

035.| self.time_ajust = self.me*((self.bohr_radius)**2) / \

036.| self.h_bar

037.| self.orbitals = 12

038.| self.sub_propagate = 100

039.| self.imaginary = True

040.| self.error = 100.0

041.| self.maxError = 1e-8

042.| self.cw = 7

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 25

043.| self.initialize()

044.|

045.| def initialize(self):

046.| self.total_time = 0

047.| self.wave_max_value = 0

048.| self.co = 0

049.| self.max_pot = 0.0

050.| self.min_pot = 0.0

051.| self.pot_graph_rate = 20.0

052.| self.potential = []

053.| self.m_ef = []

054.| self.autovalue_adjust_r = []

055.| self.potential2show = []

056.| self.wave = []

057.| self.wave2 = []

058.| self.wave2_4_visualization = []

059.| self.wave2_last_iteration = []

060.| self.axis = []

061.| self.autoValues = []

062.| self.last_auto_value = 1e30

063.| for n in range(0, self.orbitals):

064.| self.wave.append([])

065.| self.wave2.append([])

066.| self.wave2_4_visualization.append([])

067.| self.wave2_last_iteration.append([])

068.| self.autoValues.append([])

069.| self.generatePotential()

070.| self.initializeWave()

071.| self.generateWave2(1)

072.| self.wave2_last_iteration[0] = cp.copy(self.wave2[0])

073.|

074.| def printStates(self):

075.| f = open("saidas/autovalores_e_autofuncoes_" + ("%d" % \

076.| self.cw) + ".txt", "w")

077.| #f.write("\n\n\n%d" % self.cw)

078.| for n in range(0, self.co + 1):

079.| f.write("\n\n%.10f\n" % self.getAutoValue(n))

080.| for m in range(0, self.number_of_points):

081.| f.write("%.10f\t" % (self.wave[n][m] * \

082.| self.wave[n][m].conjugate()).real)

083.| f.close()

084.|

085.| def propagateOnce(self):

086.| if self.error < self.maxError:

087.| if self.getAutoValue(self.co) > self.well_height \

088.| or self.co >= self.orbitals - 1:

089.| self.printStates()

090.| self.cw += 1

091.| if self.cw < len(self.well_width):

092.| self.initialize()

093.| else:

094.| sys.exit()

095.| else:

096.| self.co += 1

097.| self.last_auto_value = 1e30

098.| for n in range(0, self.sub_propagate):

099.| self.multiplyByHalfPotential()

100.| self.multiplyByKinetic()

101.| self.multiplyByHalfPotential()

102.| self.orthonormalize()

103.| self.generateAutoValues()

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 26

104.| #self.generateWave2(1)

105.| self.calculateError()

106.| self.total_time = self.total_time + self.dt

107.|

108.| def gaussian(self, x, u, sigma):

109.| return (np.exp(-((x-u)**2)/(2*(sigma**2)))+ \

110.| np.exp(-((x+u)**2)/(2*(sigma**2))))

111.|

112.| def calculateError(self):

113.| self.error = np.fabs((self.last_auto_value - \

114.| self.autoValues[self.co]) / self.last_auto_value)

115.| self.last_auto_value = self.autoValues[self.co]

116.|

117.| def generatePotential(self):

118.| self.min_pot = 0

119.| for n in range(0, self.number_of_points):

120.| x = -self.system_size/2.0+n*(self.system_size / \

121.| float(self.number_of_points))

122.| if n < int(self.number_of_points * \

123.| (self.system_length

124.| -self.well_width[self.cw]) / \

125.| (2.0 * self.system_length)) or n > int(\

126.| self.number_of_points * (self.system_length\

127.| +self.well_width[self.cw]) / (2.0 * \

128.| self.system_length)):

129.| self.potential.append(self.well_height / \

130.| 2.1026038911)

131.| self.m_ef.append(1.0)

132.| else:

133.| self.potential.append(0.0)

134.| self.m_ef.append(0.067)

135.| self.potential2show.append(self.potential[n])

136.| self.axis.append(x)

137.| for n in range(0, self.number_of_points):

138.| self.min_pot = min(self.min_pot, self.potential[n])

139.| self.max_pot = max(self.max_pot, self.potential[n])

140.| for n in range(0, self.number_of_points):

141.| self.potential2show[n] = (self.potential2show[n] - \

142.| self.min_pot) * self.pot_graph_rate / \

143.| (self.max_pot-self.min_pot)

144.|

145.| def transformToDirect(self):

146.| self.wave[self.co] = np.fft.ifft(self.wave[self.co])

147.|

148.| def transformToReciprocal(self):

149.| self.wave[self.co] = np.fft.fft(self.wave[self.co])

150.|

151.| def multiplyByHalfPotential(self):

152.| img = 1j if not self.imaginary else 1.0

153.| for n in range(0, self.number_of_points):

154.| self.wave[self.co][n] = self.wave[self.co][n] * \

155.| np.exp(-img*self.dt*self.potential[n]/(2.0))

156.|

157.| def multiplyByKinetic(self):

158.| self.transformToReciprocal()

159.| k = 2.0*np.pi/(self.system_size)

160.| img = 1j if not self.imaginary else 1.0

161.| for n in range(0, self.number_of_points):

162.| km = k*float(n) if n < self.number_of_points/2 \

163.| else k*float(n-self.number_of_points)

164.| self.wave[self.co][n] = self.wave[self.co][n] \

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 27

165.| * np.exp(-img*self.dt*((km)**2) / \

166.| (2.0*self.m_ef[n]))

167.| self.transformToDirect()

168.|

169.| def orthonormalize(self):

170.| dx = self.system_size/float(self.number_of_points)

171.| i = self.co

172.| total_dot = 0.0

173.| for n in range(0, self.number_of_points):

174.| total_dot += self.wave[i][n].conjugate() * \

175.| self.wave[i][n]

176.| total_dot *= dx

177.| for n in range(0, i):

178.| value = 0.0

179.| for m in range(0, self.number_of_points):

180.| value += self.wave[n][m].conjugate() * \

181.| self.wave[i][m]

182.| value *= dx

183.| total_dot -= (value*value.conjugate()).real

184.| for n in range(0, i):

185.| dot_prod = 0.0

186.| for m in range(0, self.number_of_points):

187.| dot_prod += self.wave[n][m].conjugate() * \

188.| self.wave[i][m]

189.| dot_prod *= dx

190.| for m in range(0, self.number_of_points):

191.| self.wave[i][m] -= dot_prod*self.wave[n][m]

192.| for n in range(0, self.number_of_points):

193.| self.wave[i][n] = self.wave[i][n]/(total_dot**0.5)

194.|

195.| def initializeWave(self):

196.| dx = self.system_size/float(self.number_of_points)

197.| sigma = 0.87

198.| a = 1.9

199.| for i in range(0, self.orbitals):

200.| legendre = self.legendrePolynomials(i, \

201.| -self.system_size/2.0, \

202.| self.system_size/2.0)

203.| for n in range(0, self.number_of_points):

204.| self.wave[i].append(legendre(self.axis[n]) * \

205.| complex(self.gaussian(self.axis[n], a, \

206.| sigma),0.0))

207.| total_dot = 0.0

208.| for n in range(0, self.number_of_points):

209.| total_dot += self.wave[i][n].conjugate() * \

210.| self.wave[i][n]

211.| total_dot *= dx

212.| for n in range(0, i):

213.| value = 0.0

214.| for m in range(0, self.number_of_points):

215.| value += self.wave[n][m].conjugate() * \

216.| self.wave[i][m]

217.| value *= dx

218.| total_dot -= (value*value.conjugate()).real

219.| for n in range(0, i):

220.| dot_prod = 0.0

221.| for m in range(0, self.number_of_points):

222.| dot_prod += self.wave[n][m].conjugate() * \

223.| self.wave[i][m]

224.| dot_prod *= dx

225.| for m in range(0, self.number_of_points):

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 28

226.| self.wave[i][m] -= dot_prod*self.wave[n][m]

227.| for n in range(0, self.number_of_points):

228.| self.wave[i][n] = self.wave[i][n]/ \

229.| (total_dot**0.5)

230.|

231.| def generateAutoValues(self):

232.| dx = self.system_size/float(self.number_of_points)

233.| dx2 = dx**2

234.| value = 0.0

235.| for n in range(0, self.number_of_points):

236.| derived = -30.0*self.wave[self.co][n]

237.| if n > 1:

238.| derived += -self.wave[self.co][n-2]+16.0* \

239.| self.wave[self.co][n-1]

240.| elif n == 1:

241.| derived += 16.0*self.wave[self.co][n-1]

242.| if n < self.number_of_points-2:

243.| derived += 16.0*self.wave[self.co][n+1]-\

244.| self.wave[self.co][n+2]

245.| elif n == self.number_of_points-2:

246.| derived += 16.0*self.wave[self.co][n+1]

247.| derived /= 12.0*dx2

248.|

249.| value += (self.wave[self.co][n].conjugate())*(-(1/\

250.| (2.0*self.m_ef[n]))*derived+self.potential[n] * \

251.| self.wave[self.co][n])

252.| self.autoValues[self.co] = dx*value.real

253.|

254.| def getAutoValue(self, n):

255.| if n < len(self.autoValues):

256.| return self.autoValues[n]*self.autovalue_adjust

257.| return 0.0

258.|

259.| def getTime(self):

260.| return self.total_time*self.time_ajust

261.|

262.| def getWave2(self, n):

263.| return (self.axis, self.wave2_4_visualization[n])

264.|

265.| def getPotential(self):

266.| return (self.axis, self.potential2show)

267.|

268.| def energy(self):

269.| return 0.0

270.|

271.| def getError(self):

272.| return self.error

273.|

274.| def getMaxPot(self):

275.| return self.max_pot/self.autovalue_adjust

276.|

277.| def getMinPot(self):

278.| return self.min_pot/self.autovalue_adjust

279.|

280.| def getCurrentWidth(self):

281.| return self.cw

282.|

283.| def generateWave2(self, forVisualization):

284.| adj = 1.0

285.| self.wave_max_value = 0.0

286.| if forVisualization:

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 29

287.| max_pot = max(self.potential2show)

288.| for i in range(0, self.orbitals):

289.| for n in range(0, self.number_of_points):

290.| self.wave_max_value = max( \

291.| self.wave_max_value, (\

292.| self.wave[i][n] * \

293.| self.wave[i][n].conjugate()).real)

294.| #max_pot = 1.0

295.| adj = max_pot/self.wave_max_value

296.| firstTime = not len(self.wave2[0])

297.| for i in range(0, self.orbitals):

298.| for n in range(0, self.number_of_points):

299.| value = (self.wave[i][n] * \

300.| self.wave[i][n].conjugate()).real

301.| if firstTime:

302.| self.wave2_4_visualization[i].append(adj * \

303.| value)

304.| self.wave2[i].append(value)

305.| else:

306.| self.wave2_4_visualization[i][n] = adj*value

307.| self.wave2[i][n] = value

308.|

309.| def areaUnderTheCurve(self):

310.| return self.simpson(self.wave2[self.co])

311.|

312.| def simpson(self, array):

313.| h = self.system_size/float(self.number_of_points)

314.| n = 0

315.| I = array[0]

316.| for n in range(1, self.number_of_points-2):

317.| if (n % 2 != 0):

318.| I = I+4.0*array[n]

319.| elif (n % 2 == 0):

320.| I = I+2.0*array[n]

321.| I = I+array[self.number_of_points-1]

322.| I = (h/3.0)*I;

323.| return I

324.|

325.| def legendrePolynomials(self, n, a, b):

326.| return eval('lambda x: '+ self.legendreStr(n, a, b))

327.|

328.| def legendreStr(self, n, a, b):

329.| if n == 0:

330.| return '(1.0)'

331.| elif n == 1:

332.| return '(('+str(b)+'-'+str(a)+')*x/2.0+('+str(b) + \

333.| '+'+str(a)+')/2.0)'

334.| else:

335.| return '((2.0*float('+str(n)+')+1.0)/(float(' + \

336.| str(n)+')+1.0))*(('+str(b)+'-'+str(a) + \

337.| ')*x/2.0+('+str(b)+'+'+str(a)+')/2.0)*(' \

338.| +self.legendreStr(n-1,a,b)+')-(float('+\

339.| str(n)+')/(float('+str(n)+')+1.0))*('+\

340.| self.legendreStr(n-2,a,b)+')'

341.|

342.|

343.| evolution = Wpuap()

344.| while True:

345.| evolution.propagateOnce()

346.|

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 30

2.5. Aplicação do método a um potencial típico de uma

estrutura semicondutora

O algoritmo da seção anterior foi aplicado a um sistema semelhante ao

da Figura 6. O tamanho do sistema foi fixado em e um posso de potencial

central teve sua largura variada, como é sugerido na Figura 7.

Figura 7 - Potencial semelhante ao sentido por um elétron dentro de uma estrutura

semicondutora composta.

O fato de uma estrutura semicondutora como a da Figura 6 poder ser

representada através do potencial da Figura 7 é que por ser composta de dois

materias diferentes intercalados, o primeiro impõe uma barreira de potencial

de uma determinada altura. Se o material no centro impor uma barreira um

tanto menor e depois disso vier novamente uma parcela do primeiro material,

o resultado vai ser um potencial como o mostrado na Figura 7, sendo o

gap de energia entre os dois materiais.

2.6. Autofunções e autovalores em função da largura do

poço

Como já foi explicado anteriormente, apenas reforçando, foi utilizado o

método Split-Step FFT com propagação imaginária a fim de se obter os

autovalores e as autofunções de um potencial como o da Figura 7.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 31

O potencial utilizado teve sua altura mantida em , enquanto que a

largura do poço foi aumentando a partir de de em .

A dinâmica utilizada foi a seguinte:

Figura 8 - Dinâmica utilizada para cálculo dos autoestados e autofunções.

Utilizando esse processo da Figura 8, conforme a largura do poço

aumenta, mais autoestados “cabem” dentro desse posso.

Tabela 1 - Autoestados em função da largura do poço.

Energia (eV)

E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

Larg

ura

)

5 0,173 0,510 -- -- -- -- -- -- -- -- --

10 0,064 0,246 0,498 -- -- -- -- -- -- -- --

15 0,033 0,130 0,283 0,477 -- -- -- -- -- -- --

20 0,020 0,079 0,175 0,305 -- -- -- -- -- -- --

25 0,013 0,053 0,118 0,207 0,319 -- -- -- -- -- --

30 0,009 0,037 0,083 0,147 0,228 0,324 -- -- -- -- --

35 0,007 0,028 0,064 0,113 0,175 0,251 0,338 -- -- -- --

40 0,005 0,022 0,049 0,087 0,135 0,193 0,262 0,340 -- -- --

45 0,004 0,018 0,040 0,070 0,110 0,157 0,214 0,278 0,349 -- --

50 0,004 0,014 0,032 0,057 0,089 0,128 0,173 0,226 0,285 0,350 --

55 0,003 0,012 0,027 0,048 0,075 0,108 0,146 0,191 0,241 0,296 0,357

A Tabela 1 mostra os autoestados até o primeiro que possui energia

maior do que a altura da barreira para diversos valores de largura do poço.

Quanto maior a largura, mais autovalores “cabem” dentro do poço.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 32

Figura 9 - Gráfico de energia em função da largura do poço.

O gráfico da Figura 9 mostra mais claramente o comportamento

presente na Tabela 1, ou seja, quanto maior a largura do poço, menor é a

energia de cada autoestado e, consequentemente, mais autoestados

possuirão valor inferior ao da barreira de potencial em ambos os lados do

poço.

Isso é um resultado surpreendente pois reflete a capacidade

impressionante de o método representar um possível fenômeno físico: quanto

menor o espaço disponível, mais difícil é de se colocar mais elétrons (de

mesmo spin) nesse espaço, isso se traduz através dos valores elevados dos

autoestados iniciais.

É interessante notar na Tabela 1 que o autoestado fundamental para

um poço de largura possui um valor quase igual ao de um estado para

um poço de largura .

0

0.1

0.2

0.3

0.4

0.5

0.6

5 10 15 20 25 30 35 40 45 50 55

Ener

gia

(eV

)

Largura (Å)

Energia x Largura do Poço

E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 E10

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 33

Os gráficos a seguir mostram alguns poços do mais estreito e o mais

largo, exemplificando os comportamentos explicados até aqui.

Figura 10 - Potencial V (x) e autofunções para L = 5Å, funções de onda posicionadas na altura

dos autoestados, mas amplitude fora de escala.

Figura 11 - Potencial V (x) e autofunções para L = 20Å, funções de onda posicionadas na altura

dos autoestados, mas amplitude fora de escala.

0

0.1

0.2

0.3

0.4

0.5

0.6

-60 -40 -20 0 20 40 60

V (

x) (

eV

) /

|ψn(x

)|2

x (Å)

Densidade de Probabilidade |ψn(x)|2 e Potencial V (x)

|ψ0(x)|2 |ψ1(x)|2 V(x)

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

-60 -40 -20 0 20 40 60

V (

x) (

eV

) /

|ψn(x

)|2

x (Å)

Densidade de Probabilidade |ψn(x)|2 e Potencial V (x)

|ψ0(x)|2 |ψ1(x)|2 |ψ2(x)|2 |ψ3(x)|2 V(x)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 34

Figura 12 - Potencial V (x) e autofunções para L = 35Å, funções de onda posicionadas na altura

dos autoestados, mas amplitude fora de escala.

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

-60 -40 -20 0 20 40 60

V (

x) (

eV

) /

|ψn(x

)|2

x (Å)

Densidade de Probabilidade |ψn(x)|2 e Potencial V (x)

|ψ0(x)|2 |ψ1(x)|2 |ψ2(x)|2 |ψ3(x)|2

|ψ4(x)|2 |ψ5(x)|2 |ψ6(x)|2 V(x)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 35

Figura 13 - Potencial V (x) e autofunções para L = 55Å, funções de onda posicionadas na altura

dos autoestados, mas amplitude fora de escala.

É interessante notar que quanto maior a largura do poço, mais

“liberdade” (ou espaço) o elétron possui, não sendo “forçado” a ficar próximo

as bordas do poço.

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

-60 -40 -20 0 20 40 60

V (

x) (

eV

) /

|ψn(x

)|2

x (Å)

Densidade de Probabilidade |ψn(x)|2 e Potencial V (x)

|ψ0(x)|2 |ψ1(x)|2 |ψ2(x)|2 |ψ3(x)|2

|ψ4(x)|2 |ψ5(x)|2 |ψ6(x)|2 |ψ7(x)|2

|ψ8(x)|2 |ψ9(x)|2 |ψ10(x)|2 V(x)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 36

3. Método das Diferenças Finitas com Programação

Paralela

3.1. Equações diferenciais parciais

De grande interesse em numerosas áreas da física teórica, as equações

diferenciais parciais, ou EDPs, são equações do tipo:

(

) (119)

Em que ( ) é a função solução de . As derivadas podem ser de

qualquer ordem e inclusive serem mistas, ou seja:

A ordem da maior derivada presente na Eq. (119) determina a ordem

da EDP.

Existem muitas classes de EDPs, e a procura por suas soluções constitui

um grande ramo da matemática de grande interesse para a física teórica.

Uma classe muito importante de EDPs são as equações parciais de

segunda ordem da forma:

( )

( )

( )

(

) (120)

Sendo ( ) , , e funções contínuas em , respeitando

ainda ( ) .

Utilizando uma analogia com cônicas, essa classe de EDP pode ser

subidividida em três tipos:

Hiberbólico: na região em que ;

Elíptico: na região em que ;

Parabólico: na região em que ;

Para cada um dos tipos acima convem uma abordagem especifica a

fim de facilitar o seu tratamento e encontrar suas soluções. A Equação de

Schrödinger, Eq (1) é uma equação do tipo parabólica. Rearranjando a Eq. (1)

é possível obter:

( )

( ) ( ) ( ) (121)

Identificando os termois:

( )

( ) ( ) (122)

De modo que , ou seja, parabólica.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 37

Tratamentos adequados para os demais tipos (hiperbólico e parabólico)

podem ser encontrados na referência [3], aqui será dado enfoque para o

tratamento de EDPs do tipo parabólico.

3.2. Diferenças Finitas para Equações Parabólicas

A ideia é aproximar as derivadas parciais da seguinte forma:

( )

( ) ( )

(123)

Essa aproximação é chamada de diferenças finitas progressivas. As

derivadas parciais também podem ser aproximadas por diferenças finitas

regressivas:

( )

( ) ( )

(124)

Existe ainda uma terceira forma, chamada de diferenças finitas centrais:

( ) ( )

( ) ( )

(125)

Utilizando as Eq. (123) e Eq. (124), calcula-se as derivadas parciais de

segunda ordem.

( ) ( )

( ) ( )

( ) ( )

( ) ( )

( ) ( ) ( )

( ) (126)

Retornando à equação de Schrödinger, em uma dimensão:

(

( )) ( )

( )

(127)

É possível rearranjá-la da seguinte forma:

( )

( )

( ) ( ) (128)

Se ( ) estiver definida em um intervalo [ ] (sem perda de

generalidade), é conveniente discretizar este intervalo em partes da seguinte

forma:

(

) (129)

É conveniente, ainda, definir ( ) ( ). Utilizando essa notação e

substituindo as Eq. (125) e Eq. (126) na Eq. (127):

( )

( ) ( ) ( )

( )

( ) ( ) (130)

A substituição de ( ) por ( ) e as demais, indica cada ponto .

A Eq. (130) pode ser reescrita na forma:

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 38

( )

( ) ( ) (

( )

( )) ( )

( ) ( )

(131)

A Eq. (131) é uma equação matricial:

( ) ( ) ( ) ( ) (132)

Isto pode ser entendido da seguinte forma:

( )

[ ( ) ( )

( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( )

( ) ( ) ]

(133)

( )

[ ( ) ( )

( ) ( )]

(134)

( )

[ ( ) ( ) ( )

( )]

(135)

Onde:

( )

( ) (136)

( ) (

( )

( )) (137)

( )

( ) (138)

Na Eq. (131) é possível adotar uma estratégia chamada de método de

Crank-Nicolson. A ideia é utilizar diferenças finitas progressivas no lado

esquerdo e realizar a média aritmética do tempo e no lado direito.

Antes disso, convém adotar uma notação adequada:

( ) (139)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 39

Onde denota os valores espaciais, enquanto que denota valores

temporais. Sendo assim: e . Procedendo com o

método de Crank-Nicolson e adotando essa notação:

( )

( ) ( )

(140)

( ) ( ) ( ) ( ) ( ) ( ) (141)

{[ ]

[ ]} (142)

Finalmente:

[

]

[

]

(143)

Que apesar de não parecer, é o resultado procurado. A Eq. (143), assim

como a Eq. (131) é uma equação matricial:

( ) ( ) ( ) ( ) ( ) ( ) (144)

Subtraindo ( ) e multiplicando ambos os lados pela matriz inversa

de ( ). Obtem-se:

( ) ( )[ ( ) ( ) ( ) ( )] (145)

As matrizes ( ) e ( ) dependem das condições de contorno e

são como a matriz ( ) da Eq. (134).

Para completar a notação, é conveniente adotar:

[ ] (146)

Explicitando um pouco as coisas:

[

]

(147)

( )

[

]

(148)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 40

[

]

(149)

( )

[

]

(150)

(151)

(152)

(153)

A Eq. (146) é uma alternativa à Eq. (64). A diferença entre elas é que

enquanto a Eq. (64) se utiliza de transformadas diretas e inversas de Fourier

para calcular ( ) a partir de ( ), a Eq. (146) faz uso de inversões e

multiplicações de matrizes.

Utilizando a Eq. (64), obteve-se resultados muito bons, entretanto o

tempo utilizado fui grande e existe a dificuldade de se introduzir um potencial

que dependa do tempo, indispensável para que se possa simular campos

elétricos e magnéticos.

As matrizes em questão são muito grandes, idealmente da ordem de

, mas espera-se que com a utilização de técnicas de programação

paralela descritas na próxima seção, seja possível realizar esse procedimento

de inversão e multiplicação de matrizes mais rápido do que as transformadas

diretas e inversas de Fourier.

3.3. Programação paralela

Devido aos limites físicos atingidos na indústria de processadores, tais

como a impossibilidade de aumento da frequência de clock e a própria

limitação da velocidade da luz, surgiu uma nova técnica para solução

problemas computacionais. Esta técnica se baseia na ideia de dividir o

problema em várias partes simples que possam ser resolvidas individualmente e

simultaneamente para serem unidas novamente no final, gerando a solução

do problema.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 41

A programação paralela é desenvolvida geralmente para operar em

um conjunto muito grande de processadores bastante simples

individualmente, mas que em conjunto são capazes de gerar muito mais

processamento do que um único processador mais complexo.

A NVIDIA® é uma empresa multinacional norte americana que

desenvolve placas de vídeo. Essas placas são bastante difundidas por serem

capazes de renderizar vídeos em alta definição, geralmente presentes em

jogos. Placas de vídeo são o ambiente perfeito para a programação paralela,

pois são compostas de centenas de processadores.

A própia NVIDIA® desenvolveu o CUDA™, uma plataforma capaz de

auxiliar no desenvolvimento de programas de alto desempenho através de

computação paralela.

Um processador comum é chamado de CPU (Central Processing Unit)

enquanto que uma placa de vídeo é chamada de GPU (Graphics Processing

Unit).

Um programa normal é processado serialmente, ou seja, o processador

processa em fila cada um dos conjuntos de dados que vão sendo enviados a

ele junto com as instruções. Já é comum que os computadores pessoais e

notebooks venham de fábrica com processadores compostos por mais de um

núcleo, geralmente conhecidos como Dual Core, Quad Core, etc. Nesses

casos, existem duas ou mais filas de processamento. Cada núcleo é capaz de

processar qualquer conjunto de dados, dependendo somente das instruções

que ele recebe.

Na figura a seguir está representado um modelo de como funciona o

processamente em uma CPU.

Figura 14 - Modo de processamento em uma CPU.

Ou seja, muitos tipos de dados podem ser processados serialmente

desde que contenham as instruções adequadas. Já em uma GPU, dados do

mesmo tipo, que podem ser tratados utilizando as mesmas instruções são

tratados paralelamente, como na figura a seguir.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 42

Figura 15 - Modo de processamento em uma GPU.

Como é possível ver na Figura 15, a GPU consegue processar muito mais

dados simultaneamente do que uma CPU, a unica limitação é que as

instruções para eles deve ser a mesma. Também é importante ressaltar que a

CPU é responsável por controlar o funcionamento da GPU, fornecenso-lhe as

instruções necessárias para o processamento dos dados.

3.4. Diferenças Finitas com Computação Paralela

A Eq. (146) permite a evolução de um sistema quântico dependente do

tempo. Após descobrir as eutofunções e autovalores pelo método Split-Step

FFT, é possível utilizar esse método para propagar uma onda que for uma

combinação desses estados.

Utilizando o método Split-Step FFT, obtem-se autoestados para um

potencial não tependende do tempo, mas se for utilizada propagação

imaginária para a Eq. (146), é possível descobrir autoestados de potenciais

dependentes do tempo. Entretanto, não é possível descobrir autoestados de

um potencial independente do tempo.

Para descobrir os autoestados de um potencial dependente do tempo

ou para propagar uma função de onda combinação de autoestados já

conhecidos pode-se utilizar programação paralela.

O processo por traz da Eq. (146) consiste basicamente em

multiplicações, somas e inversões de matrizes. Esse processo é repetido

arbitrariamente e pode ser muito bustoso.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 43

A multiplicação de duas matrizes de ordem é um processo que

envolve operações. A Eq. (146) envolve duas operações de multiplicação.

O processo de multiplicação de matrizes mais simples é o seguinte:

[

] [

]

[ ∑

]

(154)

Isso significa que as operações podem ser separadas em

operações de custo e essas operações são completamente

independentes entre si. Esse é um caso perfeito para aplicação de

programação paralela, essas operações podem ser processadas

paralelamente.

A inversão de matriz que precisa ser processada na Eq. (146) pode ser

resolvida através de decomposição LU. Nesse método, uma matriz (A) é

decomposta em duas outras (L e U), de modo que o produto dessas duas

resulte na própria matriz (A). Além disso, a matriz L é uma matriz triangular

inferior (Low) e a matriz U é uma matriz triangular superior (Up).

[

] [

] [

] (155)

As matrizes L e U podem ser obtidas por meio de eliminação gaussiana,

sendo a matriz U o resultado da eliminação e a matriz L composta pelos

multiplicadores e preenchida pelo valor na diagonal principal. O método da

eliminação gaussiana pode ser encontrado em [3, pg. 68].

De posse das matriz L e U, de acordo com [3, pg. 80]:

( ) (156)

Sendo , então:

{

(157)

Sendo , então:

(158)

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 44

4. Conclusão

É impressionante como o método utilizado (Split-Step FFT) é capaz de

representar os sistemas quânticos a que se aplica, mas como citado, ele possui

algumas limitações relacionadas a não abrangência de situações como, por

exemplo, aplicação de campos externos.

O método das diferenças finitas é mais abrangente, não só por se

adequar a potenciais dependentes do tempo, como os causados por campos

externos, mas também por ser passível de ser tratado com computação

paralela, que pode tornar o processo muito mais rápido. Como desvantagem,

esse método não possibilita a obtenção dos autoestados para um potencial

independente do tempo.

É interessante observar os gráficos da seção 2.6 e notar como “cabem”

mais estados quânticos dentro de um poço de acordo com sua largura. Esse é

o tipo de coisa da qual estudantes de física já esperam que terão que se

desapegar.

É importante ressaltar que o método das diferenças finitas é muito

flexível. Apesar de ter sido desenvolvido apenas para equações parabólicas,

que é a categoria na qual a Equação de Schrödinger dependente do tempo

se encaixa, é possível reformular o método para que ele se encaixe a outras

categorias de equações.

Apesar de este trabalho ser basicamente um exercício de mecânica

quântica, que utiliza a física do estado sólido apenas como pano de fundo.

Seu objetivo principal é ser subisídio para futuros trabalhos nessa área.

O próximo passo é buscar dados experimentais. Os dados experimentais

que mais se adequriam a esse trabalho seriam os valores de energia medidos

em estruturas semicondutoras compostas, pois sua composição ditaria o

potencial e as massas específicas a serem utilizadas e os valores de energia

seriam uma boa forma de se averiguar se a saída do sistema condiz com a

realidade.

Um outro passo seria buscar uma forma de se utilizar programação

paralela para calcular autoestados de um potencial independente do tempo,

pois mesmo para aplicações em potenciais dependentes do tempo (em razão

da presença de campos externos) é quase sempre necessário se conhecer os

autoestados do material (sem a aplicação dos campo).

O processo de cálculo de autoestados pelo método Split-Step FFT é

muito custoso. Levou 7 dias para que os dados da seção 2.6 fossem

calculados.

RELATÓRIO DE INICIAÇÃO CIENTÍFICA AO CNPQ IF – USP / 2014

Thiago L. C. Melo | Orientadora: Profa. Euzi Conceição Fernandes da Silva 45

5. Bibliografia

[1] Arfken, G. B; Weber, H. J. Título: Física Matemática – Métodos

Matemáticos para Engenharia e Física. Rio de Janeiro: Elsevier, 2007.

[2] Transational College of LEX. Título: Who is Fourier? A Mathematical

Adventure. Boston: Language Research Foundation, 2006.

[3] Sperandio, D.; Mendes, J. T.; Silva, L. H. M. Título: Cálculo Numérico –

Características Matemáticas e Computacionais dos Métodos Numéricos. São

Paulo: Pearson Prentice Hall, 2003.

[4] Ashcroft, N. W.; Mermin, N. D. Título: Física do Estado Sólido. São

Paulo: Cengage Learning, 2011.

[5] Degani, M. H.; Maialle, M. Z. Título: Numerical Calculations of the

Quantum States in Semiconductor Nanostructures. Journal of Computational

and Theorical Nanoscience, United States of America, Vol. 7, 454-473, 2010.

[6] Levin, A. Título: Propriedades óticas de estruturas semicondutoras

com dopagem planar do tipo n ou p. Tese (Doutorado em Física) – Instituto de

Física, Universidade de São Paulo, São Paulo, 1998.