UFJF - Universidade Federal de Juiz de Fora

Práticas

Você está em: Disciplinas e Tutoriais > Programa de nivelamento > Práticas

 

         O conjunto de práticas descrito nesta seção tem por objetivo formar usuários independentes do pacote Quantum-ESPRESSO (http://www.pwscf.org). Todas as práticas foram montadas a partir de tutoriais do Q-E recolhidos nas páginas dos grupos mantedores do pacote. Os programas PWgui e XCrysDen também são necessários para se realizar as práticas. É importante ressaltar que as práticas foram realizadas utilizando o pacote Quantum ESPRESSO v4.3.2.

 

1. Procedimentos Iniciais:

 

A) Inicialmente, deve-se criar um diretório praticas onde as simulações serão desenvolvidas.

B) Agora, baixe o arquivo praticas-gfqsi.zip e descompacte-o dentro da pasta criada. É importante notar que todas as vezes que a pasta criada com o procedimento de descompactação for citada daqui pra frente no texto ela será referida como “/praticas-gfqsi/”, porém o caminho completo desse diretório vai variar de acordo com cada usuário e esse deve fazer as alterções necessárias. 

 

   As práticas implementadas são as seguintes:

 

– Primeiros passos em semicondutores e isolantes: São apresentados os programas PWgui, XCysDen e variáveis básicas do programa PWscf.

– Primeiros passos em metais: São apresentadas variáveis básicas de ocupação de estados que são necessárias ao cálculo de estrutura eletrônica de sistemas metálicos.

– Estrutura de bandas do Si: É apresentada a sequência de operações para a obtenção de uma estrutura de bandas.

– Densidade de carga: É apresentada a sequência de operações para se calcular a densidade de carga em um plano dentro de um sistema cristalino.

– Densidade de estados (DOS): É mostrado como se obter a densidade de estados, incluindo a separação entre densidades de estados de spin alto e spin baixo.

 

2. Primeiros passos em semicondutores e isolantes

 

Testes iniciais com o Si

 

Aula prática: Primeiros passos para o cálculo de semicondutores e isolantes.

Alguns dados importantes sobre o Si: Simetria = FCC; parâmetro de rede = 5.43 Angstrom (1 Angstrom = 1.8897265 Bohr)

 

Diretório original: /praticas-gfqsi/semicondutores

 

1) Crie o diretório semicondutores dentro do seu diretório praticas. Copie os arquivos *.UPF do diretório original para o diretório semicondutores.

2) Dentro do pwgui, crie um arquivo para rodar um cálculo scf de Si.

2.1) executar dentro do diretório semicondutores

prompt> pwgui &

2.2) No menu principal selecione “Create new input file” e depois “Create new PW.X input file”

 

Na aba “Control” definir as variáveis:


title
: 'Modelo inicial - testes inicias' calculation: scf outdir: diretório atual (use o botão "Directory ..." à direita) wfcdir: diretório atual (use o botão "Directory ..." à direita) pseudo_dir: diretório atual (use o botão "Directory ..." à direita) prefix: 'si-modelo'

 

Na aba System:

 

ibrav: Free Lattice

celldm(1): 1.8897265

nat: 2

ntyp: 1

ecutwfc: 20

 

Na aba Lattice & Atomic data:

 

Enter Lattice Basis Vectors

0.0    2.715  2.715

2.715  0.0    2.715

2.715  2.715  0.0

 

Na seção Enter Atomic Types:

 

Defina Si em Atomic-label

Defina a massa do silício como 0.0 por enquanto.

Use o botão "Pseudopotential ..." para escolher o arquivo '''.UPF'''
com o pseudopotencial para este elemento.

 

Em Atomic Coordinate Unit:

Selecione: (crystal)

 

Defina em Atomic Coordinates:

Si 0.0 0.0 0.0

Si 0.25 0.25 0.25

 

Na aba K-point data, selecionar:

(automatic)

nk1: 8 nk2: 8 nk3: 8 sk1: 1 sk2: 1 sk3: 1

 

Selecione no menu principal o botão “Save the current input”, escreva como nome “si-modelo.pw.inp” e pressione o botão “Save” e depois “Yes”.

 

Energia de corte

Para estudar qual a melhor energia de corte para o sistema, deve-se fazer o cálculo de estrutura eletrônica com diferentes valores de ecut. O valor de ecut que será usado deve ser o menor valor no qual a energia total do sistema tenha convergido. Para realizar esta análise, deve criar um arquivo .dat com duas colunas, uma com os valores de ecut e outra com os valores de energia total e ao analisá-las escolhemos o menor valor de ecut que apresente o respectivo valor de energia total diferindo de um milésimo de Ry com o valor subsequente.

Para obter os valores de Energia de Corte de um sistema, os seguintes passos devem ser seguidos:

 

– Dentro do diretório semicondutores crie outro diretório teste-ecut. Para criar o arquivo sh, executar dentro do diretório teste-ecut:

 

prompt> vim silicio-ecut.sh

– O teste de convergência da energia de corte pode ser realizado colando o script abaixo:

 

#! /bin/sh
#Variaveis de ambiente
export OMP_NUM_THREADS=1
export CMD_PW="/opt/<diretorio do espresso>/bin/pw.x"
export CALC_DIR="/home/<seu usuário>/<seu diretório>"

for ecut in 10 20 30 40 50 60 70 80; 
do

cat>si-modelo-ecut-$ecut.pw.inp<<EOF
 &CONTROL
                       title = 'Silicio ecut $ecut' ,
                 calculation = 'scf' ,
                      outdir = '/home/<seu usuario>/<seu diretorio>/' ,
                      wfcdir = '/home/<seu usuario>/<seu diretorio>/' ,
                  pseudo_dir = '/home/<seu usuario>/<seu diretorio>/' ,
                      prefix = 'si-modelo-ecut-$ecut' ,
 /
 &SYSTEM
                       ibrav = 0 ,
                   celldm(1) = 1.8897265 ,
                         nat = 2 ,
                        ntyp = 1 ,
                     ecutwfc = $ecut ,
 /
 &ELECTRONS
 /
CELL_PARAMETERS cubic 
     0.000000000    2.715000000    2.715000000 
     2.715000000    0.000000000    2.715000000 
     2.715000000    2.715000000    0.000000000 
ATOMIC_SPECIES
   Si    28.0855  pseudo.UPF 
ATOMIC_POSITIONS crystal 
   Si      0.000000000    0.000000000    0.000000000    
   Si      0.250000000    0.250000000    0.250000000    
 K_POINTS automatic 
   8 8 8   1 1 1 
EOF

$CMD_PW < $CALC_DIR/si-modelo-ecut-$ecut.pw.inp > $CALC_DIR/si-modelo-ecut-$ecut.pw.out

done

– Observação: Caso haja erro no cálculo, ir no arquivo silicio-ecut.sh e deletar o espaço na frente de EOF.

– Note no script que você deve definir o diretório no qual o teste será realizado. Execute o arquivo silicio-ecut.sh:

 

prompt> sh silicio-ecut.sh &

– Para verificar as energias basta executar o seguinte comando:

 

prompt> grep ! si-modelo-ecut-*.pw.out

– Selecione os dados obtidos e execute o seguinte comando:

 

prompt> vim si-teste-ecut.dat

 

O arquivo deve conter duas colunas: ecut x energia total (Ry)

Utilize os valores da energia eletrônica total e os da energia de corte em cada um para reproduzir um gráfico que lhe fornece o valor da menor energia de corte.

 

Amostragem de pontos-k

 

O procedimento para a escolha dos pontos k é análogo ao procedimento de escolha da energia de corte, porém alterando a variável k-points na aba de mesmo nome em x, y e z e também no ponto gamma.

Dentro do diretório semicondutores crie outro diretório denominado de teste-kpts. Após a análise de convergência do teste ecut, escolha o valor adequado para a energia de corte, crie um novo arquivo sh (silicio-kpts.sh) e copie o script acima para realizar o teste de convergência para a amostragem de pontos k. No novo arquivo sh, altere os diretórios para a nova pasta e substitua as seguintes linhas:

 

for ecut in 10 20 30 40 50 60 70 80; do
cat>si-modelo-ecut-$ecut.pw.inp<<EOF
                       title = 'Silicio ecut $ecut' ,
                      prefix = 'si-modelo-ecut-$ecut' ,
                     ecutwfc = $ecut ,
  8 8 8   1 1 1 
$CMD_PW < $CALC_DIR/si-modelo-ecut-$ecut.pw.inp > $CALC_DIR/si-modelo-ecut-$ecut.pw.out

Por:

for kpts in 1 2 3 4 5 6 7 8 9 10; do
cat>si-modelo-kpts-$kpts.pw.inp<<EOF
                       title = 'Silicio kpts $kpts' ,
                      prefix = 'si-modelo-kpts-$kpts' ,
                     ecutwfc = <o valor que converge no teste de ecut>,
                     ecutrho = <(o valor de ecut)*8> 
  $kpts $kpts $kpts   1 1 1 
$CMD_PW < $CALC_DIR/si-modelo-kpts-$kpts.pw.inp > $CALC_DIR/si-modelo-kpts-$kpts.pw.out

Repita o mesmo procedimento para a análise do resultado do teste de convergência da energia de corte e construa o gráfico da convergência da energia eletrônica com a amostragem de pontos k.

 

 

 

Amostragem de pontos-gamma

 

 Calcule também o ponto gamma para comparar com os outros valores de amostragem. Execute o comando:

 

cp si-modelo-kpts-$kpts.pw.inp si-modelo-kpts-gamma.pw.inp

 

 

Abra o PWgui:

 

prompt> pwgui &

 

No menu principal selecione Open an existing input file e depois Open an existing PW.X input file e selecione o arquivo criado si-modelo-kpts-gamma.pw.inp:

 

Na aba K-point data, selecionar:

(gamma)

 

Selecione no menu principal o botão Save the current input, depois Yes. Execute o arquivo si-modelo-kpts-gamma.pw.inp.

 

prompt> /opt/'versão do espresso'/bin/pw.x < si-modelo-kpts-gamma.pw.inp > si-modelo-kpts-gamma.pw.out &

 

Verifique o arquivo de saída e complete o gráfico feito para os testes de amostragem de pontos k.

 

Otimização da geometria dos átomos no Si

 

Execute o pwgui dentro do seu diretório semicondutores

prompt> pwgui &

 

Abra o arquivo si-modelo.pw.inp usando o botão Open an existing input e o botão Open an existing PW.X file

 

Na aba Control, troque calculations de scf para relax e em prefix mudar para ‘si-opt’

 

Na aba Lattice & Atomic data adicionar 1 1 1 após as coordenadas dos átomos (permitirá a otimização de posição)

 

Salve o arquivo com o nome si-opt.pw.inp usando o o botão Save the current input under different name

 

Examine o arquivo de entrada e execute a simulação

 

prompt> vim si-opt.pw.inp

prompt> pw.x < si-opt.pw.inp > si-opt.pw.out &

 

Verifique o arquivo de saída

 

prompt> vi si-opt.pw.out

 

Otimização completa da geometria do Si

 

Execute o pwgui dentro do seu diretório semicondutores

prompt> pwgui &

 

Abra o arquivo si-modelo.pw.inp usando o botão Open an existing input e o botão Open an existing PW.X file

 

Na aba Control, troque calculations de scf para vc-relax e em prefix mudar para ‘si-fullopt’

 

Na aba Lattice & Atomic data adicionar 1 1 1 após as coordenadas dos átomos (permitirá a otimização de posição)

 

Na aba Variable Cell escreva:

 


cell_dynamics
= damp-w ,

wmass = 0.75 x massa total/ (π**2) , (para Wentzcovitch)

 

OBS: Calcule o valor do wmass utilizando a soma das massas de todos os átomos da célula unitária. Para isso , nesse caso a massa de cada átomo de Si = 28.09 e para todos os casos π = 3.14159265.

 

Salve o arquivo com o nome si-fullopt.pw.inp usando o o botão Save the current input under different name

 

Examine o arquivo de entrada e execute a simulação

prompt> vi si-fullopt.pw.inp
prompt> pw.x < si-fullopt.pw.inp > si-fullopt.pw.out &

Verifique o arquivo de saída

prompt> vi si-fullopt.pw.out

 

3. Primeiros passos em metais

 

Testes iniciais com o Al

 

Aula prática: primeiros passos para o cálculo de metais.

Alguns dados importantes sobre Al: Simetria = FCC; Parâmetro de rede = 4.05 Angstrom (1 Angstrom = 1.8897265 Bohr)

 

Diretório original: /praticas-gfqsi/metais

 

1) Crie o diretório metais dentro do seu diretório praticas. Copie os arquivos *.UPF do diretório original para o diretório metais.

2) Dentro do pwgui, crie um arquivo para rodar um cálculo scf de Al.

2.1) executar dentro do diretório metais

prompt> pwgui &

 

2.2) No menu principal selecione “Create new input file” e depois “Create new PW.X input file”

 

Na aba Control definir as variáveis:


title
: 'Modelo inicial - testes inicias' calculation: scf outdir: diretório atual (use o botão "Directory ..." à direita) wfcdir: diretório atual (use o botão "Directory ..." à direita) pseudo_dir: diretório atual (use o botão "Directory ..." à direita) prefix: 'al-modelo'

 

Na aba System:

 

Na seção Required variables :

ibrav: Free Lattice

celldm(1): 1.8897265

nat: 1

ntype: 1

ecutwfc: 20

 

Na seção Optional variables

 

occupations: smearing

degauss: 0.03

smearing: gaussian

 

Na aba Lattice & Atomic data:

 

Enter Lattice Basis Vectors

0.0 2.025 2.025

2.025 0.0 2.025

2.025 2.025 0.0

 

Na seção Enter Atomic Types:

 

Defina Al em Atomic-label

Defina a massa da Al como 0.0, por enquanto.

Use o botão "Pseudopotential ..." para escolher o arquivo '''.UPF'''com o pseudopotencial para este elemento.

 

Em Atomic Coordinate Unit:

 

Selecione: (crystal)

Defina em Atomic Coordinates:

 

Al 0.0 0.0 0.0

Na aba K-point data, selecionar:  (automatic)

nk1: 8  nk2: 8  nk3: 8

sk1: 1  sk2: 1  sk3: 1

 

Selecione no menu principal o botão “Save the current input”, escreva como nome “al-modelo.pw.inp” e pressione o botão “Save” e depois “Yes”.

As variáveis definidas na seção Optional Variables da aba System estão relacionadas à natureza metálica do sistema. Em metais, ocorre cruzamento entre as bandas de valência (BV) e condução (BC). Com isso, há uma probabilidade não-nula de ocupação de estados da BC mesmo a temperatura T=0K. Dessa forma, em sistemas metálicos, a distribuição dos elétrons nas bandas deve ser feita através de uma “função de smearing” (daí a opção ‘smearing’ na variável occupations), que pode assumir diversas formas. O PWscf oferece várias possibilidades para fazer essa distribuição, de acordo com a variável smearing. Todas elas acham correspondentes (e breves resumos) na definição da variável occopt do ABINIT (http://www.abinit.org/Infos_v5.5/input_variables/varbas.html#occopt).

 

Energia de corte

Realizar o procedimento descrito anteriormente com os seguintes valores de energia de corte 6,8,10,12,14,16,18,20,22,24,26,28,30.

 

Amostragem de pontos-k

Repetir o procedimento descrito anteriormente variando os valores de 1 a 10.

 

4. Estrutura de bandas do Si

Aula prática: obtenção de estrutura de bandas do Si. 

 

Diretório original: /praticas-gfqsi/Bandas

 

1) Crie um diretório “bandas” dentro do seu diretório “praticas”. A partir do diretório original copie os seguintes arquivos para o diretório “bandas”:

    1.1) si.scf.in: arquivo pronto para o cálculo scf no Si. (/praticas-gfqsi/Bandas/)

   1.2) Si.pw91-n-van.UPF: pseudopotencial para Si. (/praticas-gfqsi/semicondutores/)

   1.3) si-bands.in: arquivo de entrada o programa bands.x (/praticas-gfqsi/Bandas/)

   1.4) INPUT_BANDS: instruções para montagem do arquivo de entrada para o programa bands.x. (/praticas-gfqsi/Bandas)

 

2) Cálculo scf

   2.1) Examinar o arquivo de entrada

 

prompt>  vim si.scf.in

 

OBS: Modificar o arquivo para .inp, e fazer as devidas modificações em outdir, wfcdir e pseudo_dir.

 

    2.2) executar os comandos:

 

prompt> pw.x < si.scf.inp > si.scf.out &

prompt> vim si.scf.out

 

3) Cálculo de estrutura de bandas (nscf)

   3.1) Abra o Xcrysden (caso já não esteja aberto)

prompt> xcrysden &

Uma vez no XcrysDen, abra o arquivo si.scf.inp e vá em Tools no menu principal e em seguida clique em k-path Selection.      

Feito isso, será aberta um janela com a figura da primeira zona de Brillouin explicitando os pontos especiais. Escolha a seguinte seqüência de pontos:

L (centro do hexagono),

Γ (centro da figura),

X (centro do quadrado),

W (vértice desse quadrado),

Γ novamente.

 

Clique em OK. Selecione Total number of k-points along the path como 36 e clique em OK. Selecione e escreva si-kpt.pwscf em File name e clique em Save.

 

   3.2) Examine os novos arquivos criados

 

prompt> vim supportInfo.kpath

prompt> vim si-kpt.pwscf

 

   3.3) Crie o arquivo si.nscf.inp

 

prompt> cat si.scf.inp si-kpt.pwscf > si.nscf.inp

 

3.4) Edite o novo arquivo:

 

prompt> vim si.nscf.inp

 

Uma vez dentro do arquivo si.nscf.inp, apague as duas linhas:

 

K_POINTS automatic 8 8 8 1 1 1

Acrescente dentro da namelist &system a variável nbnd = 8, para que sejam calculadas 8 bandas. Os comandos devem sempre estar separados por vírgulas e deve haver uma vírgula depois do último comando em cada nemelist. Troque “scf” por nscf. Grave de novo o arquivo si.nscf.in. Observação Importante: “prefix” tem que ser o mesmo do cálculo scf porque a densidade e potencial deste serão usadas no cálculo nscf.

 

   3.5) Faça o cálculo da estrutura de bandas

 

prompt> pw.x < si.nscf.in > si.nscf.out &

 

   3.6) Examine o arquivo de sáida:

prompt> vim si.nscf.out

 

Tente responder as seguintes questões: Quantas iterações foram feitas? Que potencial foi usado na diagonalização? Que wfcs foram usadas como chute inicial (inital guess)? A densidade de carga e a energia total foram computadas?

 

   3.7) Gere o arquivo .out contendo apenas as bandas:

 

prompt> vim si-bands.in

prompt> bands.x < si-bands.inp > si-bands.out

OBS: Mude o arquivo si-bands.in para a extensão .inp e fazer as devidas modificações em outdir e filband.

 

   3.8) Verifique o arquivo si.nscf.bands

 

prompt> vim si.nscf.bands

 

4) Grafico de estrutura de bandas

 

Formate o arquivo contendo as bandas com os respectivos valores de energia para o formato .dat (apenas colunas com as variáveis desejadas) salvando-o com essa extensão e abra no xmgrace.

 

5. Densidade de carga

 

Aula prática: obtenção do densidade de carga no plano 110 do Si.

 

Diretório original: /praticas-gfqsi/Bandas

 

1) A obtenção da densidade de carga será feita a partir do cálculo SCF da prática anterior “obtenção da estrutura de bandas do Si”. Assim sendo, deverá ser usado o mesmo diretório.

2) Preparação do arquivo de entrada para pp.x

 

prompt>  pwgui &

 

Uma vez no pwgui, abra um novo arquivo de entrada para pp.x e especifique as variáveis:

 

Na aba Specify property to calculate:

 

prefix: ‘silicon’ outdir: “selecione o diretório onde estão os arquivos” filplot: ‘sicharge’ plot_num opção “charge density”

 

Na aba Specify Plot:

 

nfile: 1 filepp(1): ‘sicharge’ weight(1): 1.0 fileout: ‘si.rho.dat’ iflag: “2D plot” output_format: “format suitable for plotrho” e1(1): 1 e1(2): 1 e1(3): 0 e2(1): 0 e2(2): 0 e2(3): 1 nx: 56 ny: 40

Gravar o arquivo como si-rho.inp

 

 

3) Cálculo da densidade de carga no plano 110

 

prompt> pp.x < si-rho.inp > si-rho.out

4) Gerando a figura:

 

prompt> plotrho.x

 

O programa rodará interativamente:

 

Selecione entrada como si.rho.dat (enter).

Selecione o nome que preferir para o arquivo output si-rho.ps (enter)

O programa perguntará: Logarithmic scale (y/n)? responda: n (enter)

Para as váriáveis: min, max, # of levels; escreva, por exemplo 0.01 0.1 6 (enter)

Visualize o arquivo si-rho.ps

 

Rode de novo o plotrho.ps e troque as váriáveis: min, max, # of levels. Observe que min e max devem estar dentro do intervalo “Bandas”, apresentado na linha acima e que “# of levels” dará o número de faixas de cores da figura. Verifique suas novas figuras.

 

Densidade de carga 3D

 

Diretório original: /praticas-gfqsi/carga3D

 

Assim como é possível gerar a densidade de carga em um plano cristalográfico qualquer, também é possível obtê-la em três dimensões. Este resultado é particularmente útil para a análise da densidade de carga ligante (próxima prática).

Para gerar a densidade de carga em 3D, siga o seguinte procedimento:

 

– Copie os arquivos *.scf.inp do Diretório original para o seu diretório de práticas

OBS: a partir daqui, o arquivo agua.scf.inp será usado como exemplo.

– Edite os campos outdir e wfcdir como lhe for conveniente (sugestão: escolha o próprio diretório em que estiver fazendo as práticas)

– Rode o cálculo scf acima com o pw.x

– A seguir, use o PWGUI para criar um arquivo de entrada para o pp.x com as seguintes especificações:

 

Na aba Specify property to calculate:

 

prefix: agua.pw (o mesmo que foi utilizado no cálculo com o pw.x para a estrutura)                                                                                                  

outdir: “o diretório que contém o .save da estrutura” filplot: agua_charge plot_num: charge density                        

 

Na aba Specify Plot:

 

nfile: 1 filepp (1): (default: filepp = filplot)

weight (1): 1.0

fileout: agua.charge.xsf iflag: 3D plot output_format: XCRYSDEN’S XSF format (whole unit cell)

Salve o arquivo com o nome de agua.charge.pp.inp e rode o pp.x:

 

prompt> pp.x < agua.charge.pp.inp > agua.charge.pp.out

 

Visualize o arquivo .xsf gerado com o XCrySDen:

 

Na aba “Tools”, selecione “Data grid” e dê “ok”. Um bom valor para isovalue é 0.003.

 

– Sugestão: agora repita o procedimento para os arquivos lamela.scf.inp e tudo.scf.inp

 

Densidade de carga ligante

 

Quando se trabalha com adsorção de moléculas em superfícies, nem sempre é fácil afirmar se estamos lidando com um caso de fisissorção (apenas interação eletrostática) ou quimissorção (ligação química). Uma ferramenta que possibilita esse tipo de análise é a densidade de carga ligante, que nada mais é que a diferença de densidade de carga entre o sistema “superfície + adsorvato” e suas partes isoladas.

Para fazer esse cálculo, é preciso, primeiro, gerar a densidade de carga 3D do sistema “superfície + adsorvato”, da “superfície” isolada e do “adsorvato” isolado. Utilizando os exemplos da prática anterior, seriam, respectivamente, os arquivos tudo_charge, lamela_charge e agua_charge.

A seguir, basta construir um novo arquivo de entrada para o pp.x (ou editá-lo a partir do arquivo de entrada para o cálculo da densidade de carga do sistema completo):

 

Na aba Specify property to calculate:

prefix: tudo.pw outdir: “o diretório do .save” filplot: tudo_chargeDIFF plot_num: charge density

 

Na aba Specify Plot:

 

nfile: 3 (isso abrirá mais dois campos de filepp)

filepp (1): tudo_charge(é recomendável que o primeiro seja o do sistema completo)

filepp (2): lamela_charge filepp (3): agua_charge

 

Obs1: todos esses arquivos *_charge são gerados durante a obtenção da densidadede carga 3D.

 

weight (1): 1.0

weight (2): -1.0

weight (3): -1.0

 

Obs2: os pesos negativos são porque essas densidades serão subtraídas da densidade do sistema completo.

 

fileout: tudo.chargeDIFF.xsf

iflag: 3D plot

output_format: XCRYSDEN’S XSF format (whole unit cell)

 

 

Salve o arquivo com o nome de tudo.chargeDIFF.pp.inp e rode o pp.x:

prompt> pp.x < tudo.chargeDIFF.pp.inp > tudo.chargeDIFF.pp.out

 

Visualize o arquivo .xsf gerado com o XCrySDen. Na aba “Tools”, selecione “Data grid” e dê “ok”. Selecione a opção Render +/- isovalue. Um bom valor para isovalue é 0.003.

 

O código de cores “default” do XCrySDen indica com a cor vermelha as regiões onde a densidade de carga do sistema completo aumentou e com a cor azul as regiões onde a ela diminuiu. Ou seja, esse resultado mostra a migração da densidade de carga pelo sistema. Migrações de densidade no sentido de formação de novas ligações já apreciáveis com “isovalue” 0.003, em geral, podem ser consideradas como evidência de quimissorção. Fisissorções só vão apresentar migrações de carga apreciáveis em valores de “isovalue” da ordem de décimos de milésimos.

 

Função de onda quadrática – Avaliação de orbitais

 

Diretório original: /praticas-gfqsi/Orbitais

 

Para avaliar orbitais, tais como:

– Orbitais HOMO ou LUMO de uma molécula,

– Orbitais que contribuem majoritariamente para a banda de valência ou para a banda de condução num sólido,

deve-se preparar um cálculo do quadrado da densidade de carga. Este é um cálculo de pós-tratamento, por isto, deve-se utilizar uma geometria já otimizada, para posteriormente adotar os passos mostrados a seguir.

Para exemplificar serão apresentados os procedimentos para se obter os orbitais HOMO e LUMO da molécula de água.

 

1) Copie o diretório original para o seu diretório de praticas.

prompt> cp /home/deyse/bru/espresso/PP/agua*.inp .

 

2) Edite os arquivos, direcionando os arquivos temporários para o seu endereço.

 

3) Faça um cálculo “scf” utilizando a geometria já otimizada.

prompt> pw.x <agua.scf.inp> agua.scf.out &

 

4) Visualize o arquivo de saída.

prompt> vim agua.scf.out

 

Observe que no início do arquivo é apresentado o número de bandas ocupadas,


number of Kohn-Sham states= 4

 

Seja-se avaliar o orbital HOMO da molécula, então, deve-se investigar a 4° banda (a banda ocupada de maior energia). Além disso, deve-se incluir alguns orbitais virtuais para a avaliação do LUMO. Para isto, deve-se fazer um cálculo “nscf”.

 

5) Visualize o arquivo de entrada

prompt> vim agua.nscf.inp

 

Observe que a diferença deste arquivo para o anterior está na inclusão da variável nbnd = 6. Esta variável informa quantas bandas serão consideradas no cálculo “nscf”. Aqui, optou-se por acrescentar duas bandas virtuais, mas só a 5° (orbital desocupado de menor energia) será realmente investigada.

 

6) Faça o cálculo “nscf”

prompt>  pw.x <agua.nscf.inp> agua.nscf.out &

 

Para gerar o quadrado das densidades de carga, deve-se cálcular os arquivos de pós tratamento “agua-homo.pp.inp” e “agua-homo.pp.inp”. Antes, visualize estes arquivos.

prompt> vim agua-homo.pp.inp

 

Ao invés de ver o arquivo pelo terminal é possível abri-lo no “pwgui” para ter mais detalhes sobre as variáveis, neste caso, faça

prompt> pwgui &

 

Vá em file – Open – Open PP.X input – “agua-homo.pp.inp”

Atente para as seguintes variáveis: “prefix”, “plot_num”, “kpoint”, “kband” e “lsign”.

prefix – deve ser igual ao dos arquivos anteriores (Ex. todos os arquivos têm “prefix = agua”)

kpoint – deve indicar em que ponto k o quadrado da densidade de carga será calculado. Os pontos k são númerados (ver no arquivo de saída do cálculo “nscf”).

    number of k points= 1

          cart. coord. in units 2pi/a_0

      k(    1) = (   0.0000000   0.0000000   0.0000000), wk =   2.0000000

 

Aqui há somente um ponto k, pois o cálculo foi realizado no “ponto Gama”.

 

kband – deve indicar qual banda será investigada. Aqui, por motivos já discutidos anteriormente, será escolhido a 4° e 5° banda (a banda ocupada de maior energia e a banda desocupada de menor energia, respectivamente).

 

lsign – só pode ser incluída quando o cálculo é realizado no ponto Gama.

 

7) Rodar os arquivos de pós-processamento.

prompt> pp.x <agua-homo.pp.inp> agua-homo.pp.out &

prompt> pp.x <agua-lumo.pp.inp > agua-lumo.pp.out &

 

8) Visualizar as imagens do quadrado da densidade de carga.

prompt> xcrysden &

 

File – Open structure – Open XSF – “agua-homo.xsf” (depois, proceda de maneira analoga com o arquivo “agua-lumo.xsf”) Na aba “Tools”, selecione “Data grid” e dê “ok”. Selecione a opção Render +/- isovalue. Um bom valor para isovalue é 0.03 para o “agua-homo.xsf” e 0.003 para o “agua-lumo.xsf”.

O código de cores “default” do XCrySDen indica com a cor vermelha as regiões onde a densidade de carga do sistema aumentou e com a cor azul as regiões onde a ela diminuiu. Ou seja, esse resultado mostra a migração da densidade de carga pelo sistema.

 

6. Densidade de estados (DOS)

 

Aula prática: Densidade de Estados no Ni.

Nesta prática serão utilizados shell-scripts obtidos no site www.pwscf.org para a criação das entradas dos cálculos e execução dos mesmos em alguns casos.

 

Diretório original: /praticas-gfqsi/DOS

 

1) Crie um diretório DOS dentro do seu diretório praticas. A partir do diretório original copie os seguintes arquivos para o diretório DOS:

 

prompt> cd DOS

prompt> cp /praticas-gfqsi/DOS/*.UPF .

prompt> cp /praticas-gfqsi/DOS/run* .

prompt> cp /praticas-gfqsi/DOS/dos.gnu .

 

2) Visualize e execute o arquivo run-ni.scf:

 

prompt> vim run-ni.scf

prompt> ./run-ni.scf &

 

OBS: Ao visualizar o arquivo run-ni.scf alterar ni.scf.in para run-ni.scf.inp e ni.scf.out para run-ni.scf.out.

 

3) Visualise os arquivos criados:

 

prompt> vim run-ni.scf.inp

prompt> vim run-ni.scf.out

 

4) Efeito da magnetização.

4.1) Copie o arquivo de saída do cálculo:

 

prompt> cp run-ni.scf.out run-ni.scf.out-0mag

 

4.2) Edite o arquivo:

 

prompt> vim run-ni.scf

 

Em &System, acrescente as variáveis starting_magnetization(1)=0.7 e nspin=2.

4.3) Rode novamente o shell-script:

 

prompt> ./run-ni.scf &

 

Compare os arquivos run-ni.scf.out-0mag e run-ni.scf.out e, verifique as diferenças na energia e na magnetização obtidas ao final do cálculo.

 

5) Cálculo não-scf. Vizualize o arquivo run-ni.nscf:

 

prompt> vim run-ni.nscf

 

Observe os valores e labels para as variáveis calculation, nbnd, starting_magnetization(1) e K_POINTS.

 

prompt> ./run-ni.nscf &

 

6) Obtenção da densidade de estados:

 

prompt> vim run-ni.dos

 

OBS: Ao visualizar o arquivo run-ni.dos achar e alterar .in para .inp, comente a linha 5 e troque &inputpp para &DOS.

 

6.1) Observe a variável fildos e depois faça o cálculo:

 

prompt> ./run-ni.dos &

6.2) Visualize os arquivos:

 

prompt> vim ni.dos.inp

prompt> vim ni.dos.out

prompt> vim ni.dos

 

7) Preparando e visualisando as figuras:

 

prompt> vim dos.gnu

prompt> gnuplot dos.gnu

 

Na aba DOS, clicar em browse e procurar o arquivo gerado (dos_tot). Visualize e exporte no formato .dat. Editar no xmgrace.

 

OBS: O arquivo dos.gnu executa o arquivo gerado ni.dos através do comando gnuplot dos.gnu para construir as figuras dos.ps.

 

6.1 Projeção da Densidade de Estados (PDOS)

 

Aula prática: Projeção da Densidade de Estados no Ni.

A Projeção da Densidade de Estados é um cálculo que permite tratar individualmente a Densidade de Estados de cada elemento de uma determinada estrutura. Logo, os cálculos são semelhantes e os diretórios devem ser os mesmos.

 

1) Crie um arquivo de entrada para o ProjWFC.x dentro do diretório DOS:

 

prompt> pwgui &

Clique no botão Create New Input File e depois selecione Create new ProjWFC.X input file. Então, construa seu arquivo de entrada.

 

2) Na aba Optional variables:

 

prefix = 'ni'

outdir = diretório DOS

filpdos = 'ni'

ngauss = Methfessel-Paxton of order 1

degauss = 0.02

DeltaE = 0.1

Emin = 5.0

Emax = 25.0

 

3) Modificar o nome do arquivo para ni.pdos.inp. Rode o processo:

 

prompt> projwfc.x <ni.pdos.inp> ni.pdos.out &

 

OBS: Os arquivos gerados possuem parênteses () no nome. Renomeie-os retirando os (), para que se possa visualiza-los com o comando vim. Exemplo: Renomeie-os para ni.pdos_atm#1Ni_wfc#1_s e ni.pdos_atm#1Ni_wfc#2_d.

 

4) Preparando e visualizando as figuras. O arquivo pdos.gnu se encontra no diretório original DOS.

 

prompt> vim pdos.gnu

prompt> gnuplot pdos.gnu

 

OBS: O arquivo pdos.gnu executa os arquivos gerados ni.pdos_atm#1Ni_wfc#1_s, ni.pdos_atm#1Ni_wfc#2_d e ni.pdos_tot através do comando gnuplot pdos.gnu para construir as figuras pdos.ps.

 

7. Fônons em Γ

 

Aula prática: Fônons em Γ para a brucita (hidróxido de magnésio).

Alguns dados importantes sobre a brucita:

– Simetria: hexagonal;

– Parâmetros de rede: a= b= c= 4.23 Angstroms (1 Angstrom = 1.8897265 Bohr).

 

Diretório original: /praticas-gfqsi/Fonons

 

1) Crie um diretório Fonons dentro do seu diretório praticas. A partir do diretório original copie os arquivos para o diretório Fonons.

2) Verifique o arquivo de entrada bru-scf.inp:

 
prompt> vim bru-scf.inp

 

Faça as devidas modificações em outdir, wfcdir e pseudo_dir abrindo o PWgui: correção na aba K-point data (no ponto &Gamma), definir crystal no campo K-Point input, o número de pontos-k (Number of K-Points) como 1 e, então, definir as coordenadas KX, KY e KZ abaixo como 0.0  0.0  0.0 e o peso (weight) como 1.0.

 

3) Executar o cálculo scf do arquivo bru-scf.inp:

 

prompt> pw.x <bru-scf.inp> bru-scf.out &
 

OBS: Em alguns sistemas a correção na aba K-point data pode ser feita fora do ponto gama. Neste caso definir automatic no campo K-Point input e, então, defina nk1, nk2, nk3 como 1  1  1 no campo K-Point mesh + grid (sk1, sk2 e sk3 devem permanecer como 1 1 1).

 

Neste momento você calculou a densidade eletrônica que será utilizada para o cálculo das frequências vibracionais.

4) Cálculo da matriz de forças. Prepare um arquivo de entrada para o programa ph.x:

 

prompt> pwgui &

 

4.1) Clique no botão Create new input file e depois em Create new input PH.X file:

 

jobtitle: 'Calculo de fonons do sistema brucita'

 

4.2) Na aba Files/Diretories:

 

outdir: selecionar o diretório usando o botão à direita

prefix: selecionar o mesmo prefix do cálculo scf - bru-t2

fildyn: bru.dyn.mat

 

4.3) Na aba What to Compute selecione:

 

trans: yes

epsil: yes

 

4.4) Na aba Control Options coloque:

 

recover: yes

ntyo: 3

amass (1): 24.00000

amass (2): 16.00000

amass (3): 1.00000

tr2_ph: 1.D-14

4.5) Na aba Suffix Cards coloque:

 

xq(1): 0    xq(2): 0   xq(3): 0

 

4.6) Gravar o arquivo como bru.ph.inp. Em seguida, verifique o arquivo criado e execute o cálculo ph.x:

 

prompt> vim bru.ph.inp

prompt> ph.x <bru.ph.inp> bru.ph.out &

 

4.7) Observe o arquivo de saída (bru.ph.out) e o arquivo contendo a matriz de forças (bru.dyn.mat):

 

prompt> vim bru.ph.out

prompt> vim bru.dyn.mat

 

8. Superfícies

 

Aula prática: Simulação da superfície (001) do Alumínio.

 

Diretório original: /praticas-gfqsi/superficies

 

1) Crie um diretório Superficies dentro do seu diretório praticas. Copie para seu diretório Superficies o arquivo Al.pw91-n-van.UPF.

2) Cálculo scf.

2.1) Dentro do seu diretório Superficies digite:

 

prompt> pwgui &

 

Dentro do PWgui, crie um arquivo para rodar um cálculo scf de Al.

2.2) Acessando o PWgui, clique no botão Create New Input File e depois selecione Create new PW.X input file. Então, construa seu arquivo de entrada.

2.2.1) Na aba Control defina as variáveis:

 

 title: 'Al001-scf.pw'

 calculation: scf

 outdir: diretório atual (use o botão "Directory ..." à direita)
 
 wfcdir: diretório atual (use o botão "Directory ..." à direita) 
 
 pseudo_dir: diretório atual (use o botão "Directory ..." à direita)
 
 prefix: 'Al001-scf.pw'

 

2.2.2) Na aba System entre em Required variables e defina:

 

 ibrav: Free lattice
 
 celldm(1): 1.889725989
 
 nat: 3
 
 ntyp: 1
 
 ecutwfc: 20

 ecutrho: 160

 

2.2.3) Na aba System entre em Optional Variables e defina:

 

occupation = smearing

degauss = 0.03

smearing = gaussian

 

2.2.4) Na aba Lattice & Atomic data:

 

Enter Lattice Basis Vectors

 

Parâmetro de rede experimental do alumínio: 4.05 Angstrom

 

 2.025  2.025  0.00
 
 2.025 -2.025  0.00
 
 0.00   0.00  12.30

 

Enter Atomic Types

 

 Defina a massa do alumínio como 27.0
 
 Use o botão "Pseudopotential ..." para escolher o arquivo com o pseudopotencial Al.pw91-n-van.UPF

 

Enter Atomic Coordinate Unit

 

Selecionar angstroms

 

Enter Atomic Coordinate

 

Colocar cada átomo de alumínio e suas respectivas coordenadas X, Y e Z, sem otimização. As posições são:

     Al      0.000000000    0.000000000    0.000000000    
     Al      2.025000000    0.000000000    2.025000000    
     Al      0.000000000    0.000000000    4.050000000

 

2.2.5) Na aba K-point data:

 

 Selecionar "automatic"
 
 Selecionar: nk1= 8     nk2= 8    nk3= 1    
             sk1= 1     sk2= 1    sk3= 1

2.3) Grave esse arquivo com o nome Al001-scf.pw.inp e abra-o no programa XCrysDen para visualizar se esta tudo correto.

2.4) Para executar a simulação:

 

 prompt> pw.x <Al001-scf.pw.inp> Al001-scf.pw.out &

Verifique a convergência e o valor da energia total. Multiplique por três a energia total obtida para o Al na prática Primeiros Passos em Metais e compare com a energia total do slab que você acabou de calcular.

 

prompt> vim Al001-scf.pw.out

 

Uma forma de fazer o teste da camada de vácuo seria aumentar de 1 em 1 angstrom o valor referente ao parâmetro de rede c, em CELL PARAMETERS, já que o teste de camada de vácuo é para 0 0 1.

 

Ex: O primeiro scf tem os seguinte parâmetro de rede:
    
    2.025    2.025    0.000
    2.025   -2.025    0.000
    0.000    0.000   12.300

    O segundo teria:
    2.025    2.025    0.000
    2.025   -2.025    0.000
    0.000    0.000   13.300
    O terceiro teria:
    2.025    2.025    0.000
    2.025   -2.025    0.000
    0.000    0.000   14.300

 

Isto seria feito até 19.30, em que seriam criados diversos arquivos e calcularia todos eles. Ao final, construiria um gráfico de energia total x vácuo e analisaria a convergência.

4) Cálculo de relaxamento da primeira camada superficial.

4.1) Copie e edite o arquivo Al001-scf.pw.inp:

 

prompt> cp Al001-scf.pw.inp Al001-relax.pw.inp
 
prompt> vim Al001-relax.pw.inp

 

OBS: Mudar title e prefix em &CONTROL para Al001-relax.pw.

4.2) Alterar as seguintes partes do arquivo:

 

4.2.1) trocar "calculation = scf" por "calculation = relax"

4.2.2) adicionar "1 1 1" após as coordenadas do primeiro átomo (permitirá a otimização de posição)

4.2.3) adicionar "0 0 0" após as coordenadas do segundo átomo (não permitirá a otimização de posição)

4.2.4) adicionar "0 0 0" após as coordenadas do terceiro átomo (não permitirá a otimização de posição)

 

OBS: Adicione a aba &IONS depois da aba &ELECTRONS e salve o arquivo. Caso se opte por fazer as edições acima pelo PWgui, a aba &IONS é incluída automaticamente ao salvar o arquivo.

 

4.4) Para executar a simulação:

 

prompt> pw.x <Al001-relax.pw.inp> Al001-relax.pw.out &

 

4.5) Verifique o resultado. Particularmente, observar os valores das posições atômicas e da energia total. Compare com a energia total do slab não relaxado.

 

prompt> vim Al001-relax.pw.out

 

 

9. Estados de transição

 

Aula prática: Estados de transição e caminho de reação.

 

Diretório original: /praticas-gfqsi/neb

 

1) Crie o diretório neb dentro do seu diretório praticas.

 

H2 + H <==> H + H2

 

1) Crie o diretório H2+H dentro do seu diretório neb. Copie o arquivo H.pw91-van_ak.UPF do diretório original para o diretório H2+H que você criou.

2) Com o commando vim, crie o arquivo H2+H.neb.inp dentro do diretório neb/H2+H

 

BEGIN
BEGIN_PATH_INPUT
&PATH
  string_method     = 'neb' ,
  nstep_path        = 1000 ,
  ds                = 2.D0 ,
  opt_scheme        = "broyden" ,
  num_of_images     = 7 ,
  k_max             = 0.3D0 ,
  k_min             = 0.2D0 ,
  path_thr          = 0.1D0 ,
/
END_PATH_INPUT
BEGIN_ENGINE_INPUT
&CONTROL
  prefix         = "H2+H.neb" ,
  outdir         = "/home/usuario/praticas/neb/H2+H" ,
  pseudo_dir     = "/home/usuario/praticas/neb/H2+H" ,
/
&SYSTEM
  ibrav                  = 0 ,
  celldm(1)              = 1.D0 ,
  nat                    = 3 ,
  ntyp                   = 1 ,
  ecutwfc                = 20.0D0 ,
  ecutrho                = 100.0D0 ,
  nspin                  = 2 ,
  starting_magnetization = 0.5D0 ,
  occupations            = "smearing" ,
  degauss                = 0.03D0 ,
/
&ELECTRONS
  conv_thr    = 1.D-8 ,
  mixing_beta = 0.3D0 ,
  electron_maxstep = 1000 ,
/
&IONS
  ds                = 2.D0 ,
  opt_scheme        = 'broyden' ,
  num_of_images     = 7 ,
  k_max             = 0.3D0 ,
  k_min             = 0.2D0 ,
  CI_scheme         = 'no-CI' ,
  pot_extrapolation = 'second_order' ,
  wfc_extrapolation = 'second_order' ,
  path_thr          = 0.1D0 ,
 /
CELL_PARAMETERS cubic
        12.0   0.0   0.0
         0.0   5.0   0.0
         0.0   0.0   5.0
ATOMIC_SPECIES
    H    1.00794  H.pw91-van_ak.UPF
BEGIN_POSITIONS
FIRST_IMAGE
ATOMIC_POSITIONS { bohr }
H     -4.566700090   0.0     0.0    1 0 0
H      0.0           0.0     0.0    0 0 0
H      1.557766760   0.0     0.0    1 0 0
LAST_IMAGE
ATOMIC_POSITIONS { bohr }
H -1.557766760 0.0 0.0
H 0.0 0.0 0.0
H 4.566700090 0.0 0.0
END_POSITIONS
END_ENGINE_INPUT
END

OBS: Não se esqueça de trocar a palavra usuario pelo seu nome de usuario em outdir e pseudo_dir.

2.2) Para rodar o cálculo de neb, deve-se usar o seguinte comando:

 

prompt> neb.x -inp  H2+H.neb.inp >  H2+H.neb.out &

 

Ao terminar o cálculo visualize o arquivo gerado H2+H.axsf com o XCrysDen.

 

 

10. Pseudopotenciais

 

Aula prática: Construção de pseudopotenciais.

 

Construindo um PP

 

1) O 1º passo para a geração de um pseudopotencial é fazer um cálculo com todos os elétrons. O silício será usado como exemplo.

 

  &INPUT
                     iswitch = 1 , #cálculo com todos os elétrons
                        atom = 'Si' ,
                      config = '[Ne] 3s2.0 3p2.0' ,
                         rel = 1 , #cálculo Relativístico Escalar (o comum)
                         dft = 'PBE' , #funcional de troca-correlação
                       title = 'silicio' , #opcional
                      prefix = 'Si.pbe' , #também opcional
 /

 

2) Retire os comentários, salve o arquivo como si_ae.inp e o execute com o ld1.x:

 

prompt> ld1.x < si_ae.inp > si_ae.out

 

Será gerado um arquivo Si.pbe.wfc que pode ser visualizado com o programa xmgrace.

3) Deve-se modificar o arquivo Si.pbe.wfc, deletando a primeira linha e renomeando para Si_editado_PBE.dat. Logo após, digite no terminal o comando xmgrace, importe o arquivo dat como load as NXY.

4) Visualize o gráfico e observe o comportamento radial dos orbitais.

5) O 2º passo é calcular as derivadas logarítmicas. Estas serão particularmente importantes para testar o pseudopotencial gerado à procura de estados “fantasmas”. Crie o arquivo si_ae_ld.inp como abaixo:

 

  &INPUT
                     iswitch = 1 , #cálculo com todos os elétrons
                        atom = 'Si' ,
                      config = '[Ne] 3s2.0 3p2.0' ,
                         rel = 1 , #cálculo Relativístico Escalar (o comum)
                         dft = 'PBE' , #funcional de troca-correlação
                       title = 'silicio' , #opcional
                      prefix = 'Si.pbe' , #também opcional
                         nld = 3 , #derivadas logarítmicas s,p,d
                     rlderiv = 2.1 , #raio em que as derivadas logarítmicas serão calculadas
                      eminld = -11.0 , #energia mínima das derivadas logarítmicas
                      emaxld = 2.0 , #energia máxima das derivadas logarítmicas
                        deld = 0.01 , #intervalo de energia em que as derivadas são calculadas (em Ry)
 /

 

6) Retire os comentários, salve o arquivo e o execute com o ld1.x. Será criado o arquivo Si.pbe.dlog. Seu formato é: energias na primeira coluna, derivadas logarítmicas s, p, d… nas seguintes.

7) Faça o mesmo procedimento no programa xmgrace

8) O 3º passo é, enfim, gerar o pseudopotencial. Crie o arquivo si_ps.inp como segue abaixo:

 

 &INPUT
                     iswitch = 3 , #geração de pseudopotencial
                        atom = 'Si' ,
                      config = '[Ne] 3s2.0 3p2.0 3d-1' , #repare a inclusão do 3d como canal local
                         rel = 1 ,
                         dft = 'PBE' ,
                       title = 'silicio' ,
                      prefix = 'Si.pbe' ,
                         nld = 3 ,
                     rlderiv = 2.1 ,
                      eminld = -11.0 ,
                      emaxld = 2.0 ,
                        deld = 0.01 ,
 /
 &InputP
                  pseudotype = 3 , #pseudopotencial ultrasoft
               file_pseudopw = 'Si.pbe.UPF' , #nome do arquivo que conterá o pseudopotencial gerado
                      author = 'seu nome' #opcional
                        lloc = 2 , #momentum angular do canal local (no caso, d)
                        zval = 4.0 , #número de elétrons da valência
                        rho0 = 0.01 , #carga na origem
 /
5                                             #número de estados a serem pseudizados
 3S  1 0    2.000    0.000   2.00   2.50      #"orbital" "N do orbital dentro do pseudo" "L do orbital" "Ocupação" "Energia do estado" "R_cut" "R_us"
 3S  1 0    0.000   -0.300   2.00   2.50      
 3P  2 1    2.000    0.000   2.10   2.50
 3P  2 1    0.000   -0.100   2.10   2.50
 3D  3 2    0.000   -0.100   2.50   2.50 

 

OBS: Antes de rodar o cálculo, algumas observações precisam ser feitas:

(1) Pseudopotenciais ultrasoft (Vanderbilt) requerem mais de um canal por momento angular para atender a uma boa condição de transferabilidade. Daí a inclusão de canais 3s e 3p vazios e pseudizados em energias negativas: -0,3 Ry e -0,1 Ry, respectivamente. Os valores negativos na energia destes canais significa que eles não são ligantes no estado fundamental. Tais energias são escolhidas de forma mais ou menos arbitrária no intervalo de energia típico para elétrons de valência. Se ambas as energias fossem -0,1 Ry, isso estaria muito longe do estado ligante e o algoritmo não conseguiria produzir uma solução sem nós (a pseudofunção de onda não pode conter nós). Se ambas fossem -0,3 Ry e a carga na origem fosse zero (rho0 = 0), também não iria funcionar. Com um valor não nulo de carga na origem, força-se uma forma diferente na pseudofunção e aí funciona. Enfim, é caso de fazer tentativas…

(2) A inclusão do estado 3d (que também não é ligante no estado fundamental e é pseudizado em uma energia negativa) é devida a essa condição de transferabilidade dos pseudopotenciais ultrasoft. Como o canal local precisa ser único e é necessário ter mais de um canal para os estados ligantes, o primeiro estado não-ligante (neste caso, o 3d) foi incluso para ser o canal local.

(3) O valor “0,00” como energia significa que aqueles estados serão pseudizados na energia de Kohn-Sham do estado ligante (que é conhecida através do cálculo all-electron).

(4) Assume-se a técnica de Rabe-Rappe-Kaxiras-Joannopoulos (RRKJ) para a “pseudização”.

(5) É necessário definir os raios de corte ultrasoft (R_US) maiores que os raios de corte para o caso de norma conservada.

(6) O canal local tem que ser o último da lista.

 

9) Agora remova os comentários e rode o cálculo com o ld1.x.

10) Apague a primeira linha do arquivo Si.pbeps.wfce salve com outro nome no formato .dat.

11) Abra-o no programa xmgrace como load_as NXY. Repare que as curvas relativas ao estados 3s (linhas pretas) e 3p (linhas vermelhas) da função de onda real e da pseudofunção de onda coincidem a partir do raio de corte. Note também que as pseudofunções de onda não têm nós antes do raio de corte.

12) Repita o procedimento para as derivadas logarítmicas, abrindo o arquivo Si.pbeps.dlog no programa xmgrace. O teste das derivadas logarítmicas é importante para avaliar se o pseudopotencial gerado não possui estados “fantasmas”, isto é, nós abaixo da energia de referência. As derivadas logarítmicas oscilam bruscamente nos nós. A função de onda real destes estados possui nós. Estes não aparecem aqui porque o intervalo de energia escolhido (eixo x) é relevante para a valência, onde estes estados não tem nós. A pseudofunção de onda não pode ter nós em lugar algum.

13) Embora o pseudopotencial já tenha sido gerado, ele ainda precisa ser testado. Para tanto, crie o seguinte arquivo:

 

 &INPUT
                     iswitch = 2 ,
                        atom = 'Si' ,
                      config = '[Ne] 3s2.0 3p2.0 3d-1' ,
                         rel = 1 ,
                         dft = 'PBE' ,
                       title = 'silicio' ,
                      prefix = 'Si.pbe' ,
  /
 &test
        file_pseudo="Si.pbe.UPF",
        nconf=5,
        configts(1)="3s2 3p2",
        configts(2)="3s2 3p1.5 3d0",
        configts(3)="3s1 3p3",
        configts(4)="3s1 3p2",
        configts(5)="3s2 3p1 3d0",
 /

14) Salve-o como si_test.inp e execute-o com o ld1.x. Um resumo dos resultados sairá no arquivo Si.pbe.test. Repare que as configurações com ocupações fracionárias são aceitas! Fisicamente, pode-se pensar que um átomo com essa configuração está parcialmente ionizado. Repare ainda que as pseudo-energias não têm significado físico, pois dependem do pseudopotencial. Apenas diferenças de energia são relevantes.

15) Verifique as diferenças de cada configuração, abrindo os arquivos Si.pbe1ps.wfc, Si.pbe2ps.wfc, Si.pbe3ps.wfc, Si.pbe4ps.wfc e Si.pbe5ps.wfc e apagando a primeira linha. Abra-os no programa xmgrace.

 

Correção não-linear de caroço (NLCC)

1) Para gerar um pseudopotencial com Correção Não-Linear de Caroço, basta incluir a variável nlcc na aba &InputP do arquivo de geração do PP (3º passo), como descrito abaixo:

 

 &INPUT
                     iswitch = 3 ,
                        atom = 'Si' ,
                      config = '[Ne] 3s2.0 3p2.0 3d-1' ,
                         rel = 1 ,
                         dft = 'PBE' ,
                       title = 'silicio' ,
                      prefix = 'Si.pbe_nlcc' ,
                         nld = 3 ,
                     rlderiv = 2.1 ,
                      eminld = -11.0 ,
                      emaxld = 2.0 ,
                        deld = 0.01 ,
 /
 &InputP
                  pseudotype = 3 , 
               file_pseudopw = 'Si.pbe_nlcc.UPF' ,
                      author = 'seu nome'                
                        lloc = 2 ,
                        zval = 4.0 ,
                        rho0 = 0.01 ,
                        nlcc = .true. ,
 /
5                                             
 3S  1 0    2.000    0.000   2.00   2.50      
 3S  1 0    0.000   -0.300   2.00   2.50      
 3P  2 1    2.000    0.000   2.10   2.50
 3P  2 1    0.000   -0.100   2.10   2.50
 3D  3 2    0.000   -0.100   2.50   2.50

 

O restante do procedimento continua o mesmo.

 

PAW

1) Para construir um [PAW], basta incluir a variável lpaw na aba &InputP do arquivo de geração de PP (3º passo), como descrito abaixo:

 

 &INPUT
                     iswitch = 3 ,
                        atom = 'Si' ,
                      config = '[Ne] 3s2.0 3p2.0 3d-1' ,
                         rel = 1 ,
                         dft = 'PBE' ,
                       title = 'silicio' ,
                      prefix = 'Si.pbe' ,
                         nld = 3 ,
                     rlderiv = 2.1 ,
                      eminld = -11.0 ,
                      emaxld = 2.0 ,
                        deld = 0.01 ,
 /
 &InputP
                  pseudotype = 3 , 
               file_pseudopw = 'Si.PAW.UPF' ,
                      author = 'seu nome'
                        lloc = 2 ,
                        zval = 4.0 ,
                        rho0 = 0.01 ,
                        lpaw = .true. ,
 /
5                                             
 3S  1 0    2.000    0.000   2.00   2.50      
 3S  1 0    0.000   -0.300   2.00   2.50      
 3P  2 1    2.000    0.000   2.10   2.50
 3P  2 1    0.000   -0.100   2.10   2.50
 3D  3 2    0.000   -0.100   2.50   2.50

 

O restante do procedimento continua o mesmo.

 

11. Análise de Bader

 

Aula prática: Análise das cargas de Bader para o Si no 110.

Para o cálculo da análise de Bader, deve-se rodar o programa pp.x. O arquivo poder ser o mesmo arquivo usado para o cálculo da densidade de cargas.

 

1) Digite:

 

prompt> cp arquivo-da-densidade-de-cargas.pp.inp arquivo-da-analise-de-Bader.pp.inp

 

Usualmente, os arquivos utilizados nos cálculos de densidade de cargas possuem a variável output_format com o valor atribuído a 5. Isso significa que o cálculo irá gerar um arquivo para ser visualizado no XCrysDen. Para o cálculo da análise de Bader esse valor deve ser 6, que gera um arquivo de formato Gaussian (cube-file). Portanto, deve-se modificar o valor da variável output_format para 6 e na variável fileout escrever: nomedoarquivo.cube.

2) Em seguida realizar o cálculo:

 

prompt> pp.x < arquivo.Bader.pp.inp > arquivo.Bader.pp.out &

 

Grupo de Físico-Química de Sólidos e Interfaces – GFQSI