You are on page 1of 40

Apuntes para usar el programa VASP

Julio, 2007

Sección 1. Ficheros

Sección 2. Geometría del sistema (Para construir un POSCAR)


Geometría del bulto
Geometría de una superficie

Sección 3. Naturaleza del sistema (Para construir un POTCAR)

Sección 4a. Parámetro del cálculo (Para construir un KPOINTS)

Sección 4b. Parámetro del cálculo (Para construir un INCAR)

Sección 5. Cálculos específicos


Optimización de geometría
Cálculo de frecuencias
Cálculo de DOS
Cálculo de función trabajo
Cálculo de core-level shift
Cálculo del nivel de Fermi

Para obtener un estado de transición.


a) Cálculo NEB
b) Cálculo con dimer method
c) Reducción de fuerzas mediante una optimización.

Apéndice A. Parámetro de red calculado de algunos metales.

Apéndice B. Ejemplos de ficheros POSCAR para metales en bulk


Estructura bcc:
Estructura fcc:
Estructura hcp:
Estructura de diamante:

Apéndice C. Ejemplos de ficheros POSCAR para diferentes superficies de


una estructura fcc

1
1. Superficie (111) de un metal fcc
2. Superficie (100) de un metal fcc
3. Superficie (110) de un metal fcc

Apéndice D. Programas

1. Programa para construir superficies a partir de una celda unitaria


2. Programa para crear imágenes para un cálculo NEB
3. Programa para convertir un fichero CONTCAR a un fichero en formato para
visualizar en xcrysden (.xspf)

Apéndice E. Parámetros necesarios para construir modelos periódicos.

Apéndice F. Prueba de convergencia de Energía de corte y espacio vacío

Páginas útiles para encontrar información sobre el uso del programa VASP

2
Estos apuntes no sustituyen el manual de VASP ni el tutorial (es indispensable manejar
ambos y conocerlos suficientemente para aprovechar la información que ofrecen). Aquí se
incluyen únicamente algunos consejos y un esquema para iniciar cualquier trabajo, en forma
muy general. Al final hay una sección con páginas web en las que se puede consultar
información sobre el uso de este programa.

Sección 1. Ficheros

Para cualquier cálculo VASP son necesarios 4 ficheros de entrada:


Geometría del sistema => POSCAR
y número de átomos
Naturaleza del sistema => POTCAR
Parámetros de cálculo => INCAR
Datos del espacio recíproco => KPOINTS

Los ficheros de resultados que se escriben por defecto son:

OUTCAR: Es el fichero principal de resultados, en él se escriben los datos más relevantes del
cálculo: la geometría de inicio (con una tabla de vecinos más cercanos: buscar “nearest
neighbor table”), las coordenadas del sistema en coordenadas cartesianas y directas, los
parámetros de entrada del cálculo, la energía en cada paso de una optimización, las frecuencias
(si se les ha pedido), etc.
OSZICAR: Resume los datos de la energía en cada iteración. En un cálculo NEB proporciona
el valor de energía total de todas las imágenes.
CONTCAR: En este fichero se encuentra la geometría después del cálculo, se actualiza tras
cada iteración nuclear.
XDATCAR: Acumula todas las geometrías durante el cálculo.
vasprun.xml: Es un fichero en lenguaje máquina, necesario para analizar otros ficheros de
salida como el LOCPOT, ELFCAR y DOSCAR.

Entre todos los ficheros de resultados opcionales que proporciona el cálculo se encuentran
(para que se escriban, es necesario indicarlo en el INCAR, incluyendo la línea que a
continuación se da entre paréntesis):
DOSCAR: Contiene la información de la Densidad de Estados total y de cada átomo y sus
contribuciones s, p y d (LORBT = 11).
LOCPOT: Información del potencial químico en cada punto del sistema, desde el core de los
átomos hasta el vacío (LVTOT = T).
ELFCAR: Distribución de la densidad electrónica (LELF = T).

3
CHGCAR: Cargas electrónicas (el programa bader_lnx (la página web en la que se puede
adquirir este programa está en la última página de este manual) permite leer este fichero y dar
los valores del análisis de Bader y de Voronoi) (LCHARG = T).
WAVECAR: Fichero que contiene información de las funciones de onda del sistema, se escribe
al final del cálculo y es útil para reiniciar el cálculo, cuando se han terminado las iteraciones
indicadas y aún no ha convergido (LWAVE = T). El WAVECAR de un cálculo anterior no se
puede usar si son diferentes el tamaño de la celda y la energía de corte)

Sección 2. Geometría del sistema (Para construir un POSCAR)

Para inicial cualquier cálculo con VASP, es necesario iniciar ajustando los parámetros a los
valores más adecuados, por aquí vamos a empezar:

Geometría del bulto

Para modelar un sólido, por ejemplo una superficie, en el caso de estudiar


interacciones con adsorbatos, reacciones en la superficie, etc. el primer paso es
determinar el parámetro de la red del sólido (a). En el caso más simple, el de un metal,
es necesario conocer su estructura: fcc, bcc, hcp, etc. y su parámetro de red
experimental (www.webelements.com).

En el apéndice A se da una lista de los valores de parámetro de red de algunos


metales que hemos calculado en el grupo, usando el funcional PW91 y los
pseudopotenciales PAW correspondientes a este funcional.

Sabiendo la estructura del sólido, es posible construir la celda primitiva, partiendo de


sus vectores primitivos y su base atómica. En el apéndice B se muestran varios ejemplos
de ficheros POSCAR construidos a partir de los vectores y la base atómica de varias
estructuras metálicas.

Es útil tener un script que permita variar el parámetro de celda, de lo contrario es


necesario construir tantos cálculos como puntos para localizar el parámetro de red óptimo
al cual la energía es mínima. Para mayor facilidad, es conveniente iniciar la búsqueda alrededor
del parámetro experimental.

4
En adelante se presenta una gráfica de la búsqueda del parámetro de red para el Cu
(parámetro experimental = 3.61 Å):

Para comprobar si el parámetro de celda es correcto, hay una prueba muy sencilla,
que es el cálculo del módulo de bulk (B), el inverso de la compresibilidad, que puede
obtenerse con cualquiera de estas dos ecuaciones:
∂P 2∂ E
2
B = −V0 = −V0
∂V V0 ∂V 2 V
0

Donde P es la presión del sistema, V es el volumen de la celda, Vo es el volumen de


la celda correspondiente al parámetro de la celda optimizado y E es la energía del
sistema.

Calcular este parámetro a partir de la primera parte de la igualdad es la forma más


fácil de obtenerlo, variando la constante de la red ligeramente a valores menores y
mayores del valor optimizado y posteriormente calculando la pendiente de la recta
formada por una gráfica que represente la variación de la presión con respecto al cambio
en el volumen de la celda, como lo indica la siguiente figura.

Los valores de la presión y el volumen del fichero OUTCAR se pueden obtener


usando la utilidad grep:

5
> grep pressure OUTCAR
> grep volume OUTCAR

La presión está en unidades de kB y el volumen en Å3, así que el modulo de bulto


estará en unidades de kB, que se deberán convertir a GPa para comparar con los valores
experimentales (1 GPa = 10 kB), los cuales pueden obtenerse a partir de los valores de
las constantes elásticas adiabáticas.

Geometría de una superficie

La construcción del POSCAR depende del plano de corte de la superficie, por ello
los vectores unitarios y la base atómica es diferente para cada plano de corte. En el
apéndice C se presentan ejemplos de ficheros POSCAR de varias superficies. Javier
Carrasco creo un programa en perl para construir modelos de superficies a partir de los
datos de un fichero POSCAR o CONTCAR de la celda primitiva. En el apéndice D se
incluye una copia, para su ejecución en Linux:

> perl supercel.pl nombre_del_POSCAR/CONTCAR

Y seguir las instrucciones.

La información que contiene el fichero POSCAR es la siguiente:

La primera línea es un comentario.


La segunda es un factor que afecta los vectores de la celda (sólo cuando las
posiciones de los átomos están dadas en coordenadas directas) y las coordenadas de
los átomos.
De la tercera a la quinta son los 3 vectores que forman la celda.
En la sexta línea se indica el número de átomos de cada especie que forman el
sistema, por ejemplo, si hay una molécula de CO adsorbida en una celda de Pt con
3 capas (12 átomos metálicos), la sexta línea será (en el mismo orden se dan las
coordenadas de los átomos y se construye el POTCAR):
1 1 12
A partir de la séptima línea se indican las coordenadas de cada átomo que forma el
sistema.

6
Para determinar el número de capas atómicas en el modelo, hay dos formas de
hacerlo:

1) Calcular la energía de adsorción de diferentes modelos variando el número de capas


hasta llegar a un número, al cual esta propiedad no cambia.

2) Calcular la energía superficial de una celda (1x1) con diferentes números de capas
atómicas.
Esup = (Eslab – natomos Ebulk) / 2

Donde Esup es la energía superficial, Eslab es la energía del modelo, natomos es el número
de átomos que contiene el slab y Ebulk es la energía de un átomo en el bulk.

En el apéndice E hay una serie de tablas con los parámetros que se pueden variar
para construir un modelo de superficie. La energía y el tiempo de cálculo son los dos
factores más importantes que conviene cuidar para determinar los valores más
adecuados y a la vez que no consumen tiempo de cálculo exagerado.

Sección 3. Naturaleza del sistema (Para construir un POTCAR)

Junto con el programa VASP, se suministran los pseudopotenciales de todos los elementos.
Cada uno de los cuales está en un directorio nombrado con su símbolo atómico, dentro está el
fichero POTCAR comprimido de ese elemento, (POTCAR.Z). Para algunos elementos hay
varios POTCAR, que se han construido con alguna característica especial, por ejemplo,
incluyendo orbitales s o p del core en la valencia, por experiencia los que no tienen nada
especial dan buenos resultados.

Si el sistema solo tiene una especie, basta guardar el fichero POTCAR.Z en el directorio en
el que se prepara el cálculo y descomprimirlo (utilizando >gunzip POTCAR.Z).

Si por el contrario, el sistema está formado por más especies, habrá que guardar un solo
POTCAR que acumule todos los POTCAR de cada elemento, por ello sugerimos los
siguientes pasos:
1) Guardar el POTCAR.Z del primer elemento en el directorio de trabajo.
2) Descomprimirlo ( > gunzip POTCAR.Z).
3) Guardarlo con otro nombre, por ejemplo, o.potcar si el POTCAR es de O.

7
Así si el sistema es como en la sección anterior CO/Pt, se guardarán o.potcar, c.potcar y
pt.potcar en un mismo directorio.
4) Unir los diferentes POTCAR en el mismo orden que se ha indicado en el POSCAR ( >
cat o.potcar c.potcar pt.potcar >> POTCAR).

Sección 4a. Parámetro del cálculo (Para construir un KPOINTS)

La malla de puntos k del espacio recíproco debe ser densa cuando la celda es pequeña y
viceversa, por ejemplo, para un solo átomo en bulk, una malla de 11x11x11 es un buen punto de
partida, cuando se haya optimizado el parámetro de la celda se puede probar una malla de
13x13x13, y 15x15x15 para ver si cambia el valor de la energía, si es así, se pueden repetir un
par de cálculos alrededor del parámetro de red optimizado, para comprobar que el valor
calculado es el correcto.

Para una superficie, depende del tamaño de la misma, hay una regla empírica que nos ha
llegado a través de Núria López: La longitud de la celda en cada eje (en Å) multiplicada por él
número de puntos k en esa misma dirección debe ser mayor de 20.

Por ejemplo: si la longitud de la celda en el eje x es de 8 Å, en el eje y de 9 Å y en z de 20 Å,


la combinación mínima de puntos k será: 3x3x1, aunque se puede mejorar usando 5x5x1, por
experiencia, un cálculo que usa un número impar de puntos k consume menos tiempo de cálculo
que usando un número par, por ello recomendamos más usar una malla de 5x5x1 que una de
4x4x1.

Sección 4b. Parámetro del cálculo (Para construir un INCAR)

Las notas del tutorial de la escuela VASP describen muy bien como construir un fichero
INCAR.

Como se sabe hay más de 60 parámetros en este fichero, la mayoría de ellos no los
cambiamos, si no que mantenemos el valor por defecto.

En adelante se describen algunos de los parámetros que a lo largo de algunos años de usar
este programa hemos visto que son los que más pueden influir en un cálculo y que deberían de
ser los más estudiados en el manual VASP. También damos los valores que hemos ido usando y

8
sugerimos que se prueben en un primer sistema para luego usarlos confiadamente a lo largo del
trabajo que se desarrolla.

ISTAR : Inicio del cálculo, a partir de cero (0) o reinicio (1), para este caso se debe tener el
fichero WAVECAR (verificar que se le ha pedido al cálculo anterior con LWAV = T en el
INCAR) en el directorio donde se ejecuta el cálculo.
NWRITE: La cantidad de información, recomendamos 2, si se pide menos no se ve cierta
información, por ejemplo, las fuerzas que actúan en cada átomo en cada iteración atómica.
NSW: Número de iteraciones atómicas, por defecto es 40, nosotros tradicionalmente hemos
usado 71, pero se puede cambiar según convenga, por ejemplo se ve que un cálculo va
convergiendo hasta la iteración 40, luego empieza a divergir, se puede enviar un cálculo con 39
iteraciones, guardar el WAVECAR y reiniciar el cálculo

NELM: Número de iteraciones del cálculo auto-consistente, o de la optimización electrónica,


por defecto es de 60, en un cálculo difícil, en el que vemos que se terminan las 60 iteraciones
electrónicas en varias iteraciones atómicas, probablemente puede ayudar a la convergencia
aumentar el número de pasos electrónicos.

ALGO o IALGO: Es el método de optimización electrónica o del cálculo auto-consistente, los


valores que más hemos utilizado:
ALGO = V o IALGO = 48, tienen el mismo significado, e indica el método RMM-DIIS, éste
es el más usual, pero si se tienen problemas de convergencia, se puede usar:

ALFO = F, calcula 1 paso con un método muy robusto de optimización, el método de


DAVISON y los siguientes con el RMM-DIIS

IALGO = 38, indica usar el método DAVISON, éste es el recomendado para cálculo
difíciles.

ISMEAR: Es el método de llenado de orbitales, los valores que usamos generalmente son:
2 Para metales, que indica usar el método de Methfessel-Paxton de orden 2.
0 Para óxidos o semiconductores, también para celda muy grandes.
-5 Para cálculos muy precisos, sin optimización de átomos metálicos, por
ejemplo, para calcular la DOS.

SIGMA: Es el ancho del llenado de orbitales, 0.2 eV es un buen valor para casi todos los
cálculos.

9
ENCUT: Es la límite de energía para considerar las ondas planas para el cálculo, entre más alto
sea este valor, más ondas planas se incluyen en el cálculo y más preciso es la energía obtenida.
Un valor recomendable para metales es 350, para adsorción de moléculas sencillas que incluyen
N, C y O en metales, 415 puede ser un buen valor, para celdas muy grandes y/o moléculas
complicadas, más de 20 Å por lado, 515 eV ha resultado ser un valor aceptable. En el apéndice
F hay una prueba que hicimos de espacio vacío contra energía de corte, de un sistema
relativamente complicado: la adsorción de una molécula de nitro-benzoestireno en túneles de
Au, se calculó la molécula y los túneles por separado, posteriormente la molécula lejos del Au y
por último la molécula adsorbida. Se varió el espacio vacío entre 10 y 25 Å y la energía de corte
entre 415 y 515 eV.

EDIFFG: Límite al que se detiene la optimización, si la diferencia entre dos pasos continuos es
más pequeña que este valor. Hay dos criterios que pueden usarse para la optimización: la
energía y las fuerzas.

Sección 5. Cálculos específicos

En esta sección damos algunas recomendaciones para ciertos cálculos con VASP, son los
procedimientos que hemos usado en estos años para calcular algunos sistemas.

Optimización de geometría

POSCAR
Para relajar parcialmente un sistema, es necesario liberar sólo algunas de las coordenadas de sus
átomos, es importante que en la séptima línea esté la leyenda “Selective dynamics”, o bien una
“S” y que se indique en el POSCAR las coordenadas x, y, z que se dejan relajar para cada
posición atómica con una letra “T”. Si la séptima línea no existe, el programa optimizará todas
las coordenadas de los átomos que forman el sistema.

INCAR
Los parámetros que es necesario tener en cuenta son:

IBRION: Método de optimización atómica (llamada iónica hasta el cansancio en el manual de


VASP)

-1 Sin optimización, los átomos se fijan en sus posiciones iniciales.

10
1 Método quasi-Newton, RMM-DIIS, es el que se puede usar cuando se está muy cerca
del mínimo, es decir, que el sistema no se debe mover mucho en cada iteración, por ello es el
que se usa para refinar la búsqueda de la geometría del estado de transición, a partir de una
geometría aproximada, obtenida por ejemplo con el método NEB o el dimer method.
2 Método de gradiente conjugado, es el que se usa generalmente en una optimización de
geometría en que no se sabe si el mínimo está lejos o cerca de la geometría inicial, es robusto y
bastante confiable.

EDIFFG: Los valores que podemos recomendar para los dos criterios de optimización:
a) Energía, en tal caso, sencillamente se le da el valor (0.1 E -03 es un valor suficiente, para
cálculos más estrictos, se puede disminuir este valor dos ordenes de magnitud).
b) Fuerzas, es necesario anteponer un signo negativo al valor (-0.01 es un valor razonable para
todos los cálculos).
En el fichero OUTCAR, al final de cada paso de optimización atómica se indica la energía total
del sistema y las fuerzas que actúan en cada átomo.

Cálculo de frecuencias

POSCAR
Para calcular la frecuencia de vibración de algunos átomos del sistema, se liberan las
coordenadas correspondientes, por ejemplo para calcular las frecuencias de vibración de una
molécula adsorbida, se liberan las coordenadas de el(los) adsorbato(s) y se mantienen fijas las
correspondientes a los átomos del sustrato.

INCAR
IBRION = 5 Indica que se hace un cálculo de frecuencias, en este caso, en el POSCAR se
deben indicar las coordenadas de los átomos que vibrarán.
NSW ≠ 0, el programa por defecto hace 3*N+1 iteraciones para este cáculo, donde N es el
numero de átomos liberados para calcular las frecuencias, si se desea forzar a un numero de
iteraciones determinado se debe indicar dar ese valor a NSW y cambiar el valor de IBRION a -
5.
EDIFFG: Criterios que pueden usarse para calcular las frecuencias:
a) Energía, en tal caso, 0.1 E -05 es un valor razonable.
b) Fuerzas, -0.01 es un valor razonable.
Al final del fichero OUTCAR se indican los valores de las frecuencias de vibración, así como
los átomos del sistema que contribuyen en la vibración y el desplazamiento de cada uno, un

11
primer bloque presenta el desplazamiento en Å y otro bloque los desplazamientos ponderados
por las masas.

Cálculo de DOS

En el fichero de resultados DOSCAR se encuentran los resultados de la densidad de estados


(DOS) total del sistema. El fichero DOSCAR se escribe si se ha hecho un cálculo estático.
Se deben tomar en cuenta los siguientes parámetros:

POSCAR
Para este tipo de cálculo se parte de una geometría ya optimizada del sistema (copiando el
CONTCAR a POSCAR).

KPOINTS
Para construir el fichero correspondiente, se debe tomar en cuenta que la malla de puntos k debe
ser más densa que la de una optimización, puesto que se requiere mayor precisión. El número de
puntos k puede ser el doble o más de los usados en una optimización.

INCAR
IBRION = -1
NSW = 0
ISMEAR: El método de llenado de orbitales, se recomiendo usar:

0 El método gaussiano

-5 El método del tetahedro

Si se le indica, desglosa la contribución a la DOS del sistema por átomos y por contribuciones s,
p y d:
LORBIT = 11

Se debe tomar en cuenta que la suma de las contribuciones s, p y d no es igual a la DOS total,
por ello hay que tener cuidado al analizar los resultados. También, como lo menciona el manual
de VASP, los resultados prácticamente son para fines comparativos entre dos cálculos hechos
con los mismos parámetros.

Para analizar las DOS calculadas, se puede usar el programa p4vasp, o bien, el programa creado
por Javier Carrasco que se da en la sección de programas (apéndice D).

12
Cálculo de función trabajo

Para calcular esta propiedad electrónica de un sistema, es necesario utilizar una geometría
optimizada y calcular el potencial local del sistema, el programa lo puede calcular, el fichero de
resultados se escribe en el fichero LOCPOT, para que se escriba este fichero, es necesario
indicarlo en el INCAR.

INCAR
IBRION = -1
NSW = 0
LVTOT = T

POSCAR
Para este tipo de cálculo se parte de una geometría ya optimizada del sistema (copiando el
CONTCAR a POSCAR).
Para calcular la función trabajo (Φ):
Φ = Evacio + εFermi

El programa vaspview es muy útil para obtener el potencial local en el vacío.

Cálculo de core-level shift

Para calcular core-level shift es necesario partir de una geometría optimizada, posteriormente
calcular el estado inicial del sistema y por último el estado final después de quitar un electrón,
para calcular el estado inicial, se debe indicar al INCAR los siguientes parámetros:

ICORELEVEL = 1
ISMEAR = -5

Para el estado final, el INCAR debe contener:


ICORELEVEL = 2
CLNT: Orden del átomo al que se va la a quitar un electrón conforme a lo indicado en el
POSCAR y POTCAR, se debe tomar en cuenta que si hay más átomos de la misma naturaleza
en el sistema, se debe separar del resto en el POTCAR y en el POSCAR, como si fuera un
átomo diferente.
CLN: Número cuántico principal del electrón que se va a retirar.
CLZ = 0.5 (Indica que se retira un electrón)

13
Cálculo del nivel de Fermi

Para obtener el valor del nivel de fermi (o energía de Fermi) del sistema correcto es necesario
corregir al valor obtenido en el fichero DOSCAR y OUTCAR, restando un parámetro:
1) Para átomos o moléculas se debe sumar el valor alpha+beta obtenido en la misma línea
del OUTCAR que da el nivel de Fermi.
2) Para el resto de sistemas se debe calcular el potencial en el vacío, en principio debería
ser cero, pero como casi siempre no lo es (supongamos que es -4.56 eV), para corregir
el nivel de Fermi que da el OUTCAR, se suma el valor calculado para el potencial en el
vacío (para que el potencial en el vacío sea cero, se le debe sumar 4.56 eV, por lo tanto,
también al nivel de Fermi se le debe sumar el mismo valor de 4.56 eV).

Para obtener un estado de transición.


a) Cálculo NEB

Partiendo de los ficheros POSCAR del estado inicial (por ejemplo, POSCAR.ini) y final (por
ejemplo, POSCAR.fin), ambos bien caracterizados como puntos estacionarios, se interpolan las
distancias entre ellos para obtener un determinado número de imágenes intermedias (n), a partir
de un script llamado interpolPOSCAR creado por Daniel Torres, dentro del cual están las
instrucciones para usarlo. Antes de ejecutar este programa, se debe tomar en cuenta que el
interpolPOSCAR diferencia entre 0 y 1, lo que para el programa VASP, al tener propiedades
periódicas, es indistinto, por ello, se debe revisar cuidadosamente que ambos ficheros POSCAR
coincidan en las coordenadas, para VASP es igual que la coordenada z del átomo 2 sea 1.02 que
0.02, pero no para el interpolPOSCAR, por ello al interpolar esta coordenada, en las diversas
imágenes, tomará valores entre 1.02 y 0.02 (0.82, 0.62, 0.42, 062), lo que es incorrecto, por ello
se debe revisar que las coordenadas entre ambos POSCAR sean consistentes y modificar uno de
los POSCAR si no es así.

En adelante se proporciona un breve resumen de cómo crear los ficheros de entrada para un
cálculo NEB usando el programa interpolPOSCAR:

1. Crear un fichero concatenado ambas configuraciones, la primera configuración ha de ser la


del estado inicial de la NEB:

> cat POSCAR.ini POSCAR.fin >> POSCAR

Este fichero POSCAR debe tener liberadas las coordenadas de los átomos que reaccionan.

2. Crear n+2 directorios vacíos donde se crearan los POSCARs:

> mkdir 00 01 02 03 04 … 0(n+1)

14
3. Ejecutar el programa

> ./interpolPOSCAR POSCAR

En el directorio 00 estará el POSCAR correspondiente a la configuración inicial y en el 0(n+1)


la configuración final, estas dos configuraciones se conservarán fijas durante el cálculo,
mientras que las imágenes intermedias son optimizadas.

En el directorio del cálculo deben estar los correspondientes ficheros KPOINTS, POTCAR e
INCAR. El POTCAR y el KPOINTS puede ser el usado para optimizar la geometría de los
estados inicial y final.

En el INCAR, los parámetros a cuidar son:

IMAGES: Número de imágenes intermedias entre el estado inicial y final.

LCLIMB: Indica si se utiliza la modificación Climbing-image al método NEB (T).

El resultado del cálculo NEB se escribe en cada directorio 01, 02, .. 0(n-1) como si fuese una
optimización: OUTCAR, CONTCAR, etc.

El directorio en el que se encuentra la imagen con la energía mayor es el que podría ser el
estado de transición, esta configuración deberá tener fuerzas pequeñas en los átomos que se ha
permitido optimizar y se le deben calcular frecuencias de vibración a los átomos que reaccionan
(cuyas coordenadas se habían liberado en el fichero POSCAR), si se obtiene una frecuencia
imaginaria de alrededor de 400 cm-1, se puede considerar que es la geometría del estado de
transición de la reacción y que la dirección correspondiente a esa frecuencia imaginaria es la
coordenada de reacción. Si no se cumplen estas dos condiciones (fuerzas pequeñas y una
frecuencia imaginaria grande) se debe continuar la búsqueda del estado de transición.

Para continuar la búsqueda hay varias opciones:

1) Si las fuerzas son muy grandes, se puede reenviar el cálculo NEB, utilizando los CONTCAR
de cada imagen como POSCAR y disminuyendo el criterio de convergencia de la optimización
atómica, por ejemplo dos ordenes de magnitud.

2) Si aunque se reenvie el cálculo NEB, no hay cambios en la energía, o bien, se han calculado
las frecuencias de vibración de esta configuración y hay más de una frecuencia imaginaria se
puede utilizar el dimer method, o reducir las fuerzas mediante una optimización, ambos
procedimientos se describe brevemente a continuación:

15
b) Cálculo con dimer method

1. Crear dos directorios llamados 01 y 02, dentro del directorio de cálculo.

2. Colocar en el directorio 01 un fichero POSCAR con la geometría de la imagen con la energía


más alta obtenida en el cálculo NEB.

3. Colocar en el directorio 02 un fichero POSCAR desplazando ligeramente la geometría del


directorio 01, si se tiene información de las frecuencias de vibración, los átomos que participan
en la segunda frecuencia imaginaria más alta se pueden mover en la dirección de los
desplazamientos de estos átomos.

En el directorio del cálculo deben estar los ficheros KPOINTS, POTCAR e INCAR.

En el INCAR, los parámetros a cuidar son:

ICHAIN =2

IMAGES = 2

c) Reducción de fuerzas mediante una optimización.

Si una configuración que pudiera ser un estado de transición, resultado de un cálculo NEB o con
dimer method (en ocasiones, en un cálculo con dimer method, la energía ya no cambia pero el
programa se continua ejecutando, la ejecución se puede detener y calcular sus frecuencias de
vibración, porque probablemente ya se tiene el estado de transición) aún tiene fuerzas grandes
con una sola frecuencia imaginaria, o bien, la segunda frecuencia imaginaria no es muy grande,
las fuerzas se pueden disminuir con una optimización con el método quasi-Newton. El
procedimiento es el mismo que el seguido para la optimización de geometría, sólo hay que tener

16
Apéndice A. Parámetro de red calculado de algunos metales, usando el funcional PW91 y los
pseudopotenciales PAW correspondientes a este funcional.

Datos experimentales Resultados teóricos

Metal Estructura Parámetro de red (a) Módulo de bulto (B) Parámetro de red (a) Distancia Módulo de bulto (B)
primeros vecinos
Cu fcc 3.61 138 3.634 2.57 137

Ag fcc 4.158 2.94

Au fcc 4.078 173.5 4.174 2.95 166.6

Pd fcc 3.89 3.957 2.798

Pt fcc 3.92 276 3.986 2.82 245

Rh fcc 3.8 276 3.846 2.72 267

Sn diamante 6.49 58(Td) 6.646 38

Ru hcp 2.7/4.28 286 2.698/4.406 300

Fe bcc 2.87 2.827 2.448

Co hcp/fcc 2.51(fcc) 2.485

Los parámetros de red y la distancia a primeros vecinos están en Å y el módulo de bulk en GPa.

17
Apéndice B. Ejemplos de ficheros POSCAR para
metales en bulk

En adelante se presentan los ficheros POSCAR de las estructuras cristalinas bcc, fcc,
hcp, diamante, en primer lugar se indican los vectores primitivos y la base atómica
correspondiente.

1. Estructura bcc:
Vectores primitivos
-0.5 0.5 0.5
-0.5 0.5 0.5
0.5 0.5 -0.5

Base atómica
0.0 0.0 0.0
POSCAR:
Atomo de V en una celda bcc
3.03
-0.5 0.5 0.5
-0.5 0.5 0.5
0.5 0.5 -0.5
1
Cartesianas
0.0 0.0 0.0

2. Estructura fcc:

Vectores primitivos
0.0 0.5 0.5
0.5 0.0 0.5
0.5 0.5 0.0
Base atómica
0.0 0.0 0.0

18
POSCAR:
Atomo de Rh en una celda fcc
3.846
0.0 0.5 0.5
0.5 0.0 0.5
0.5 0.5 0.0
1
Cartesianas
0.0 0.0 0.0

3. Estructura hcp:

Vectores primitivos
1.0 0.0 0.0
0.5 0.86603 0.0
0.0 0.0 1.63299
Base atómica (en coordenadas cartesianas)
0.0 0.0 0.0
0.5 0.2887 0.8165

POSCAR:
Atomo de Ru en una celda hcp
2.698
1.0 0.0 0.0
0.5 0.86603 0.0
0.0 0.0 1.63299
2
Cartesianas
0.0 0.0 0.0
0.5 0.2887 0.8165

19
4. Estructura de diamante:

Vectores primitivos
0.0 0.5 0.5
0.5 0.0 0.5
0.5 0.5 0.0

Base atómica (en coordenadas cartesianas)


0.0 0.0 0.0
0.25 0.25 0.25

POSCAR:
Atomo de Sn en una celda de diamante
6.646
0.0 0.5 0.5
0.5 0.0 0.5
0.5 0.5 0.0
2
Cartesianas
0.0 0.0 0.0
0.25 0.25 0.25

20
Apéndice C. Ejemplos de ficheros POSCAR para diferentes
superficies de una estructura fcc

1. Superficie (111) de un metal fcc, los vectores unitarios son factores de la distancia a
primeros vecinos, que se calcula a partir del parámetro de red (a):
a
d=
2
Los vectores primitivos son:
d 0 0
3
0.5d d 0
2
0 0 z

la z se calcula multiplicando el número de capas atómicas (nc) y de vacío (nv) que se


incluyen en el modelo por la separación entre las capas (r), que para un superficie (111)
de la estructura fcc es:
2
b= a
3

por tanto, z se calcula mediante la siguiente fórmula:


z = (nc + nv)b

o bien, multiplicando el número de capas atómicas por la separación entre capas y


sumando la longitud del vacío (v) que se desea incluir.
z = (nc)b + v

Los vectores unitarios están dados en función del tamaño de la celda del modelo, que
por lo general se elige pensando en la estructura que forma el adsorbato en la superficie
o en el cantidad de sitios necesarios.

Los vectores unitarios son:


xd 0 0
3
0.5yd yd 0
2
0 0 z

21
donde x e y son los números de celdas primitivas en el eje x e y, respectivamente, que
incluye la celda unitaria.

Base atómica (en coordenadas cartesianas) para una celda (2x2):

Primera capa
0.0 0.0 0.0
d 0.0 0.0
3
0.5d d 0.0
2
3
1.5d d 0.0
2

Segunda capa
1
0.5d d -b
2 3
1
1.5d d -b
2 3
2
1d d -b
3
2
2d d -b
3

Tercera capa
1
1d d -2b
3
1
2d d -2b
3
2
1.5d d -2b
3
2
2.5d d -2b
3

22
Ejemplo de POSCAR para una celda 4x4 del Cu con 3 capas (con dos relajadas):

Superficie de Cu con 4 capas


2.57
4.0000000000000000 .0000000000000000 .00000000000
2.0000000000000000 3.4641016151400001 .00000000000
.0000000000000000 .0000000000000000 6.34054026948
48
Selective dynamics
Cartesianas
0.0000000000 0.000000000000 0.000000000 T T T
1.0000000000 0.000000000000 0.000000000 T T T
2.0000000000 0.000000000000 0.000000000 T T T
3.0000000000 0.000000000000 0.000000000 T T T
0.5000000000 0.866025403784 0.000000000 T T T
1.5000000000 0.866025403784 0.000000000 T T T
2.5000000000 0.866025403784 0.000000000 T T T
3.5000000000 0.866025403784 0.000000000 T T T
1.0000000000 1.732050807570 0.000000000 T T T
2.0000000000 1.732050807570 0.000000000 T T T
3.0000000000 1.732050807570 0.000000000 T T T
4.0000000000 1.732050807570 0.000000000 T T T
1.5000000000 2.598076211350 0.000000000 T T T
2.5000000000 2.598076211350 0.000000000 T T T
3.5000000000 2.598076211350 0.000000000 T T T
4.5000000000 2.598076211350 0.000000000 T T T
0.5000000000 0.288675134595 -0.81649656194 T T T
1.5000000000 0.288675134595 -0.81649656194 T T T
2.5000000000 0.288675134595 -0.81649656194 T T T
3.5000000000 0.288675134595 -0.81649656194 T T T
1.0000000000 1.154700538380 -0.81649656194 T T T
2.0000000000 1.154700538380 -0.81649656194 T T T
3.0000000000 1.154700538380 -0.81649656194 T T T
4.0000000000 1.154700538380 -0.81649656194 T T T
1.5000000000 2.020725942170 -0.81649656194 T T T
2.5000000000 2.020725942170 -0.81649656194 T T T
3.5000000000 2.020725942170 -0.81649656194 T T T
4.5000000000 2.020725942170 -0.81649656194 T T T
2.0000000000 2.886751345950 -0.81649656194 T T T
3.0000000000 2.886751345950 -0.81649656194 T T T
4.0000000000 2.886751345950 -0.81649656194 T T T
5.0000000000 2.886751345950 -0.81649656194 T T T
1.0000000000 0.577350269190 -1.63299312388 F F F
2.0000000000 0.577350269190 -1.63299312388 F F F
3.0000000000 0.577350269190 -1.63299312388 F F F
4.0000000000 0.577350269190 -1.63299312388 F F F
1.5000000000 1.443375672970 -1.63299312388 F F F
2.5000000000 1.443375672970 -1.63299312388 F F F
3.5000000000 1.443375672970 -1.63299312388 F F F
4.5000000000 1.443375672970 -1.63299312388 F F F

23
2.0000000000 2.309401076760 -1.63299312388 F F F
3.0000000000 2.309401076760 -1.63299312388 F F F
4.0000000000 2.309401076760 -1.63299312388 F F F
5.0000000000 2.309401076760 -1.63299312388 F F F
2.5000000000 3.175426480540 -1.63299312388 F F F
3.5000000000 3.175426480540 -1.63299312388 F F F
4.5000000000 3.175426480540 -1.63299312388 F F F
5.5000000000 3.175426480540 -1.63299312388 F F F

2. Superficie (100) de un metal fcc

Un ejemplo de POSCAR para una celda 2x2 del Co (con dos capas relajadas)

Superficie de Co con 4 capas


3.520
2.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 2.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 4.5000000000000000
24
Selective dynamics
cartesian
0.0000000000000000 0.0000000000000000 0.0000000000 T T T
1.0000000000000000 0.0000000000000000 0.0000000000 T T T
0.5000000000000000 0.5000000000000000 0.0000000000 T T T
1.5000000000000000 0.5000000000000000 0.0000000000 T T T
0.0000000000000000 1.0000000000000000 0.0000000000 T T T
1.0000000000000000 1.0000000000000000 0.0000000000 T T T
0.5000000000000000 1.5000000000000000 0.0000000000 T T T
1.5000000000000000 1.5000000000000000 0.0000000000 T T T
0.5000000000000000 0.0000000000000000 -0.5000000000 T T T
1.5000000000000000 0.0000000000000000 -0.5000000000 T T T
0.0000000000000000 0.5000000000000000 -0.50000000000 T T T
1.0000000000000000 0.5000000000000000 -0.50000000000 T T T
0.5000000000000000 1.0000000000000000 -0.50000000000 T T T
1.5000000000000000 1.0000000000000000 -0.50000000000 T T T
0.0000000000000000 1.5000000000000000 -0.50000000000 T T T
1.0000000000000000 1.5000000000000000 -0.50000000000 T T T
0.0000000000000000 0.0000000000000000 -1.00000000000 F F F
1.0000000000000000 0.0000000000000000 -1.00000000000 F F F
0.5000000000000000 0.5000000000000000 -1.00000000000 F F F
1.5000000000000000 0.5000000000000000 -1.00000000000 F F F
0.0000000000000000 1.0000000000000000 -1.00000000000 F F F
1.0000000000000000 1.0000000000000000 -1.00000000000 F F F
0.5000000000000000 1.5000000000000000 -1.00000000000 F F F
1.5000000000000000 1.5000000000000000 -1.00000000000 F F F

24
3. Superficie (110) de un metal fcc
Un ejemplo de POSCAR para una celda 3x3 del Co (con dos capas relajadas)

Superficie de Co con 4 capas


3.520000000000000000
2.1213200000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 3.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 4.9497474700000000
36
Selective dynamics
cartesian
0.0000000000000000 0.0000000000000000 0.0000000000 T T T
0.7071067810000000 0.0000000000000000 0.0000000000 T T T
1.4142135620000000 0.0000000000000000 0.0000000000 T T T
0.0000000000000000 1.0000000000000000 0.0000000000 T T T
0.7071067810000000 1.0000000000000000 0.0000000000 T T T
1.4142135620000000 1.0000000000000000 0.0000000000 T T T
0.0000000000000000 2.0000000000000000 0.0000000000 T T T
0.7071067810000000 2.0000000000000000 0.0000000000 T T T
1.4142135620000000 2.0000000000000000 0.0000000000 T T T
0.3535533905000000 0.5000000000000000 -0.3535533905 T T T
1.0606601715000000 0.5000000000000000 -0.3535533905 T T T
1.7677669525000000 0.5000000000000000 -0.3535533905 T T T
0.3535533905000000 1.5000000000000000 -0.3535533905 T T T
1.0606601715000000 1.5000000000000000 -0.3535533905 T T T
1.7677669525000000 1.5000000000000000 -0.3535533905 T T T
0.3535533905000000 2.5000000000000000 -0.3535533905 T T T
1.0606601715000000 2.5000000000000000 -0.3535533905 T T T
1.7677669525000000 2.5000000000000000 -0.3535533905 T T T
0.0000000000000000 0.0000000000000000 -0.7071067810 F F F
0.7071067810000000 0.0000000000000000 -0.7071067810 F F F
1.4142135620000000 0.0000000000000000 -0.7071067810 F F F
0.0000000000000000 1.0000000000000000 -0.7071067810 F F F
0.7071067810000000 1.0000000000000000 -0.7071067810 F F F
1.4142135620000000 1.0000000000000000 -0.7071067810 F F F
0.0000000000000000 2.0000000000000000 -0.7071067810 F F F
0.7071067810000000 2.0000000000000000 -0.7071067810 F F F
1.4142135620000000 2.0000000000000000 -0.7071067810 F F F
0.3535533905000000 0.5000000000000000 -1.0606601715 F F F
1.0606601715000000 0.5000000000000000 -1.0606601715 F F F
1.7677669525000000 0.5000000000000000 -1.0606601715 F F F
0.3535533905000000 1.5000000000000000 -1.0606601715 F F F
1.0606601715000000 1.5000000000000000 -1.0606601715 F F F
1.7677669525000000 1.5000000000000000 -1.0606601715 F F F
0.3535533905000000 2.5000000000000000 -1.0606601715 F F F
1.0606601715000000 2.5000000000000000 -1.0606601715 F F F
1.7677669525000000 2.5000000000000000 -1.0606601715 F F F

25
Apéndice D. Programas

1. Programa para construir superficies a partir de una


celda unitaria –PERL -

#! /usr/bin/perl

#----------------------------------------------------------------
# PROGRAM Supercel TO GENERATE SUPERCELLS USING UNIT CELLS IN
# poscar/contcar VASP FORMAT
#
# UTILITY:
# a. Create supercells expanding along x,y or/and z directions
# b. Create surfaces with a certain vacuum (restriction: only
# surfaces perpendicular to director vectors a, b & c can be
# made
#
# UTILIZATION:
# perl supercel.pl ficero_poscar/contcar
#
# By Javier Carrasco (carrasco@qf.ub.es)
#----------------------------------------------------------------

# READING POSCAR/CONTCAR FILE

open (IN, $ARGV[0]);


$i=0;
while (<IN>) {
if ($. ==1){ $name=$_;chomp($name);};
if ($. ==2) { $escala=$_;chomp($escala);};
if ($. ==3) {
@fields=split(' ');
$ax=$fields[0];
$ay=$fields[1];
$az=$fields[2];
};
if ($.==4){
@fields=split(' ');
$bx=$fields[0];
$by=$fields[1];
$bz=$fields[2];
};
if ($.==5){
@fields=split(' ');
$cx=$fields[0];
$cy=$fields[1];
$cz=$fields[2];
};
if ($.==6){
@at=split(' ');

26
$suma=0;
$sum=0;
for ($j=0;$j<@at;$j++){
$at[$j]=$at[$j];
$sum=$sum+1;
$NAT=$NAT+$at[$j];
};
};
if (($.>8)&&($.<$NAT+9)){
@fields=split (' ');
$x[$i]=$fields[0];$y[$i]=$fields[1];$z[$i]=$fields[2];

$optx[$i]=$fields[3];$opty[$i]=$fields[4];$optz[$i]=$fields[5];
$i++;
};
};
close (IN);

#READING PARAMETERS TO CONSTRUCT THE DESIRED OUTPUT

print "\n";
print "Supercell size:\n";
print "---------------\n";
print "repeated units along x: ";
$nx=<STDIN>; chomp($nx);
print "repeated units along y: ";
$ny=<STDIN>; chomp($ny);
print "repeated units along z: ";
$nz=<STDIN>; chomp($nz);
print "\n";
print "Surface information:\n";
print "--------------------\n";
while (1){
print "Generate surface (y/n)? > ";
$resp1=<STDIN>; chomp($resp1);
if (($resp1 ne "y")&&($resp1 ne "n")){
print "Write yes (y) or no (n) !\n";
print "Try again...\n";
print "\n";
};
if (($resp1 eq "y")||($resp1 eq "n")){
last;
};
};
if ($resp1 eq "y"){
while (1) {
print "Specify direction for vacuum, DIRECT:(a, b o c) > ";
$resp2=<STDIN>; chomp($resp2);
if (($resp2 ne "a")&&($resp2 ne "b")&&($resp2 ne "c")){
print "Please, write \"a\" \"b\" o \"c\" \n";
print "Try again...\n";
print "\n";
};
if (($resp2 ne "a")||($resp2 ne "b")||($resp2 ne "c")){
print "Specify desired vacuum, in Ansgtrom > ";
$vacio=<STDIN>; chomp($vacio);
last;

27
};
};
};

# Hasta aqui tenemos todos los datos de entrada de datos


#----------------------------------------------------------------

# PROCESSING DATA

# 0. New director vectors calculation

$sescala=1.0;
$sax=$escala*$ax*$nx;$say=$escala*$ay*$ny;$saz=$escala*$az*$nz;
$sbx=$escala*$bx*$nx;$sby=$escala*$by*$ny;$sbz=$escala*$bz*$nz;
$scx=$escala*$cx*$nx;$scy=$escala*$cy*$ny;$scz=$escala*$cz*$nz;
$msa=sqrt($sax**2+$say**2+$saz**2);
$msb=sqrt($sbx**2+$sby**2+$sbz**2);
$msc=sqrt($scx**2+$scy**2+$scz**2);

if (($resp1 eq "y")&&($resp2 eq "a")){


$fac=($vacio+$msa)/$msa;
$sax=$fac*$sax;$say=$fac*$say;$saz=$fac*$saz;
};
if (($resp1 eq "y")&&($resp2 eq "b")){
$fac=($vacio+$msb)/$msb;
$sbx=$fac*$sbx;$sby=$fac*$sby;$sbz=$fac*$sbz;
};
if (($resp1 eq "y")&&($resp2 eq "c")){
$fac=($vacio+$msc)/$msc;
$scx=$fac*$scx;$scy=$fac*$scy;$scz=$fac*$scz;
};

# 1. Reposicionado de todas las coordenadas fraccionarias a


# valores positivos (para evitar posibles conflictos)

for ($p=0;$p<$NAT;$p++){
if ($x[$p]<0.0) {
$x[$p]=$x[$p]+1;
};
if ($y[$p]<0.0) {
$y[$p]=$y[$p]+1;
};
if ($z[$p]<0.0) {
$z[$p]=$z[$p]+1;
};
};

# 2. Creating desired system:

$dim=$nx*$ny*$nz;
$SNAT=$dim*$NAT;

for ($r=0;$r<@at;$r++){
$sat[$r]=$at[$r]*$dim;
};

28
print "\n";
print "Write a name for output POSCAR file > ";
$output=<STDIN>; chomp($output);

open (OUT1, ">$output");


open (OUT2, ">$output.out");

print OUT1 "$name\n";


print OUT2 "$name\n";
printf OUT1 " %2.11f\n",$sescala;
printf OUT2 " %2.11f\n",$sescala;
printf OUT1 " %2.11f %2.11f %2.11f\n",$sax,$say,$saz;
printf OUT2 " %2.11f %2.11f %2.11f\n",$sax,$say,$saz;
printf OUT1 " %2.11f %2.11f %2.11f\n",$sbx,$sby,$sbz;
printf OUT2 " %2.11f %2.11f %2.11f\n",$sbx,$sby,$sbz;
printf OUT1 " %2.11f %2.11f %2.11f\n",$scx,$scy,$scz;
printf OUT2 " %2.11f %2.11f %2.11f\n",$scx,$scy,$scz;
for ($k=0;$k<@at;$k++){
print OUT1 " $sat[$k] ";
print OUT2 " $sat[$k] ";
};
print OUT1 "\n";
print OUT2 "\n";
print OUT1 "Selective dynamics\n";
print OUT1 "Direct\n";
print OUT2 "Direct\n";
print OUT2 "-------------------------------------------------------
------------------------------------------\n";
print OUT2 "unit cell (1 x 1 x 1): $NAT ats.--> supercell ($nx x
$ny x $nz): $SNAT ats.\n";
print OUT2 "-------------------------------------------------------
------------------------------------------\n";

for ($q=0;$q<$NAT;$q++) {
$sum2=0.0;
for ($i=0;$i<$nx;$i++) {
for ($j=0;$j<$ny;$j++) {
for ($k=0;$k<$nz;$k++) {
$sx[$q][$sum2]=$x[$q]/$nx+$i/$nx;
if (($resp1 eq "y")&&($resp2 eq "a")){
$sx[$q][$sum2]=$sx[$q][$sum2]*$msa/($msa+$vacio);
};
$sy[$q][$sum2]=$y[$q]/$ny+$j/$ny;
if (($resp1 eq "y")&&($resp2 eq "b")){
$sy[$q][$sum2]=$sy[$q][$sum2]*$msb/($msb+$vacio);
};
$sz[$q][$sum2]=$z[$q]/$nz+$k/$nz;
if (($resp1 eq "y")&&($resp2 eq "c")){
$sz[$q][$sum2]=$sz[$q][$sum2]*$msc/($msc+$vacio);
};
printf OUT1 "%2.11f %2.11f %2.11f $optx[$q] $opty[$q]
$optz[$q]\n",$sx[$q][$sum2],$sy[$q][$sum2],$sz[$q][$sum2];
printf OUT2 "x($q-$sum2), x/$nx+$i/$nx: %2.5f y($q-
$sum2), y/$ny+$j/$ny: %2.5f z($q-$sum2), z/$nz+$k/$nz: %2.5f
($optx[$q] $opty[$q]
$optz[$q])\n",$sx[$q][$sum2],$sy[$q][$sum2],$sz[$q][$sum2];
$sum2++;

29
};
};
};
};

print "\n";
print "Total atoms in the $nx x $ny x $nz supercell: $SNAT\n";
if ($resp1 eq "y"){
print "Vacuum: $vacio AA for $resp2 axis\n";
};
print "\n";
print "Results in (POSCAR format): $output\n";
print "For more details about supercell generation see also:
$output.out\n";
print "\n";
print " J.C.R\n";

############# ##### #### ######


############# ###### #### ##########
#### ####### #### #### ####
#### ######## #### #### ####
############# #### #### #### #### ####
############# #### #### #### #### ####
#### #### ######## #### ####
#### #### ####### #### ####
############# #### ###### ##########
############# #### ##### #######

30
2. Programa para crear imágenes para un cálculo NEB
–SCRIPT-
######################&MAKE BY DANI&###############################
#
# Intrucciones de uso
#
# 0. Este script sirve para crear las imagenes para la NEB
# 1. Este archivo ha de tener permisos de ejecucion
# 2. "rep" es el numero de imagenes, contando la cero (00,
01,02,...)
# 3. Crear un POSCAR concatenado donde la primera configuracion ha
de ser #la del estado inicial d la NEB
# 4. Crear una serie de directorios vacios donde se crearan los
POSCARs
# 5. Escribir el la linea de comandos ./interpolPOSCAR POSCAR
# 6. Si el POSCAR contiene mas de 4 tipos de atomos diferentes se
han de #editar
# las siguientes lineas
# lines = $1 + $2 + $3 + $4 +8
# atoms= $1 + $2 + $3 + $
# Por ejemplo si disponemos de 6 tipos de atomos se deberia
poner:
# lines = $1 + $2 + $3 + $4 + $5 + $6 +8

# atoms= $1 + $2 + $3 + $4 + $% + $6

# !!!LOS POSCARS A CONCATENAR HAN DE ESTAR LIBRES DE LINEAS EN


BLANCO !
###################################################################
file=$1
rep=$2
print $2
awk <$file '
BEGIN { rep=6; center=0 }
/center/ { center=1}
/rep/ { rep=$2 }
{ line=line+1
if ( second != 1 ) {
if ( line == 6 ) {
lines = $1 + $2 + $3 + $4 +$5 + $6 + 8
atoms= $1 + $2 + $3 + $4 + $5 + $6
print "number of images =", rep
print "found ",atoms," ions"
head[line] = $0
} else if ( line < 9 )
head[line] = $0
else
{
x[line-8] = $1 ; y[line-8] = $2 ; z[line-8] = $3 ;
t[line-8] = $4 ; t2[line-8] = $5 ; t3[line-8] = $6
if (line==lines) {
second=1;
print "first set read"
}

31
}
} else {
lines2 = lines + 8
if ( line > lines2 )
{
x2[line] = $1; y2[line] = $2 ; z2[line] = $3
}
}
}
END {
lines4=lines2
lines=lines-8
for ( line=1; line<=lines ; line ++ ) {
line3 = line + lines4
cx1=cx1+ x[line] ; cy1=cy1+ y[line] ; cz1=cz1+ z[line]
cx2=cx2+ x2[line3]; cy2=cy2+ y2[line3]; cz2=cz2+
z2[line3]
}
if (center) {
cx=(cx2-cx1)/lines
cy=(cy2-cy1)/lines
cz=(cz2-cz1)/lines
print "center of mass for second cell will be shifted
by",cx,cy,cz
}

for ( i=0; i<rep ; i++ ) {


file="0" i "/POSCAR"
a=(rep-1-i)/(rep-1)
b=i/(rep-1)
print "writing to " file
for (line=1; line<=8 ; line++ )
print head[line] >file
for ( line=1; line<lines+1 ; line ++ ) {
line3 = line + lines4
dx=a*x[line] + b*(x2[line3]-cx)
dy=a*y[line] + b*(y2[line3]-cy)
dz=a*z[line] + b*(z2[line3]-cz)
printf " %10.16f %10.16f %10.16f %3.6s %3.6s
%3.6s\n",dx,dy,dz,t[line],t2[line],t3[line] >file
}
}
}'

32
3. Programa para convertir un fichero CONTCAR a un
fichero en formato para visualizar en xcrysden
(.xspf) –FORTRAN 77-
PROGRAM CARTES
C Este programa lee un archivo de coordenadas y genera uno
para
C xcrysden

IMPLICIT REAL*8(A-H,O-Z)
PARAMETER (N=200)
DIMENSION A(3,3),B(N,3),C(N,3),Iatm(20),Natm(20)
CHARACTER*40 Titulo,Calculo,Coordenadas
C Pide el numero de atomos
WRITE(6,*) "Dime el numero de atomos del sistema"
READ (5,*) m

C Pide el número de tipos de atomos


WRITE(6,*) "Cuantos tipos de atomos hay en el sistema"
READ (5,*) nt

Do i=1,nt
Write(6,*) "Dime el numero atomico del atomo",i," y su
cantid
bad"
read (5,*) Iatm(i), Natm(i)
Enddo

OPEN(2,FILE="CONTCAR")
OPEN(3,FILE="cry")

C Lee el titulo
READ(2,150) Titulo
C Lee la constante de red
Read(2,100)r
C Lee los vectores de la red
Do i=1,3
Read(2,*)(A(i,j),j=1,3)
Enddo
C Lee el numero de atomos
Read(2,*)l
C Lee el tipo de calculo
READ(2,150) Calculo
C Lee el tipo de coordenadas
READ(2,150) Coordenadas
C Lee las coordenadas directas
Do i=1,m
Read(2,*)(B(i,j),j=1,3)
Enddo
C *****
C Escribe el titulo
WRITE(3,*) "SLAB"
C Escribe "PRIMVEC"

33
WRITE(3,*) "PRIMVEC"
C Escribe los vectores de la red
C Do i=1,3
C Write(3,300)(A(i,j),j=1,3)
C Enddo
C ******
C Multiplica los vectores por la contante de red
Do i=1,3
Do j=1,3
A(i,j)=r*A(i,j)
Enddo
Enddo
C Escribe los vectores modificados
Do i=1,3
Write(3,300)(A(i,j),j=1,3)
Enddo
C Escribe "PRIMCOORD"
WRITE(3,*) "PRIMCOORD"
C Escribe el numero de atomos
Write(3,*) m, " 2"
C ******
C **********
C Calcula las coordenas cartesianas
Do i=1,m
Do j=1,3
C(i,j)=0.
Do k=1,3
C(i,j)=C(i,j)+B(i,k)*A(k,j)
Enddo
Enddo
Enddo
C ******
C Do i=1,m
C If ((C(i,3)).lt.(13.0)) then
C C(i,3)=C(i,3)+A(3,3)
C endif
C Enddo

C ***************

C Indica el numero atomico


C Indica que son coordenadas cartesianas
C WRITE(3,150) "Coordenadas Cartesianas"
C Escribe las coordenadas cartesianas

Do k=1,nt

Do i=1,Natm(k)
WRITE(3,700) Iatm(k),(C(i,j),j=1,3)
EndDo
Enddo

C *********

150 Format (A40)


100 Format (F15.8)
200 Format (F10.2)

34
300 Format (3F14.10)
400 Format (3F16.8)
500 Format (I3,14(I3,F6.2))
600 Format (3x,14(I3,F6.2),/)
700 Format (I4,(3F16.10))
END

35
Apéndice E. Parámetros necesarios para construir
modelos periódicos.

En adelante se presenta una serie de tablas, que pueden ayudar a construir un modelo,
encontrando la geometría y los parámetros de cálculos adecuados para un determinado
cálculo. Entre paréntesis se indica el fichero de datos que hay que modificar.
Al ser la energía uno de los resultados más sensibles, es la que se propone utilizar
para ir determinado los parámetros, también el tiempo de cálculo es un factor a tener en
cuenta para tener un equilibrio entre precisión y recursos computacionales, en el
OUTCAR el tiempo se lee en “Elapsed CPU time”. La idea es en cada paso obtener el
parámetro más adecuado y usarlo para el punto siguiente.

1. Número de capas. (POSCAR sin relajar) Para ello es útil calcular la energía
superficial. (funcional PW91, celda (1x1), red 7x7x1 k, Ecutoff = 300)
No. capas Energía superficial (eV/Å) Tiempo (seg)
3
4
5
6

2. Número de puntos k. (KPOINTS) Con modelos de diferentes tamaños (si no se


tiene una estructura ya determinada) se prueba la densidad de la malla de puntos
k necesaria para representar el sistema. (funcional PW91, 3 capas, Ecutoff = 300)

Puntos k Celda (2x2) Celda (3x3)


Energía (eV) Tiempo (seg) Energía (eV) Tiempo (seg)
3x3x1
4x4x1
5x5x1
6x6x1
7x7x1
Nota: Por lo general, usar números pares de puntos k es más costoso
computacionalmente.

36
3. Espacio vacío. (POSCAR) Variar el espacio vacío incluido en la supercelda
(funcional PW91, 3 capas, Ecutoff = 300, celda (2x2) ó (3x3) con la malla de
puntos k obtenida en el paso anterior)

Espacio vacío (Å) Energía (eV) Tiempo (seg)


8
10
12
14

4. Energía de corte. (ENCUT en INCAR) Determinar la energía de las ondas


planas necesarias para el cálculo, para un espacio vacío grande y moléculas muy
complicadas, es mejor emplear valores grandes de Ecutoff (funcional PW91 y los
parámetros obtenidos en todos los pasos anteriores).

Energía de corte (Å) Energía (eV) Tiempo (seg)


300
350
400
450
500

5. Efecto de la polarización de spin. (ISPIN en INCAR) (funcional PW91 y los


parámetros obtenidos en todos los pasos anteriores).

ISPIN Energía (eV) Tiempo (seg)


1
2

37
6. Funcional. (GGA en INCAR) (usar los parámetros obtenidos en los pasos
anteriores).
GGA Energía (eV) Tiempo (seg)
91
PB
RP
Nota: Si se considera necesario también se puede probar la aproximación
local de la DFT, para ello se debe usar el pseudopotencial correspondiente
(POTCAR) y omitir la línea GGA del (INCAR) también es conveniente
usar la línea VOLSKOWN = 1 en el INCAR.

7. Efecto de la optimización de la geometría. (POSCAR) Todos los cálculos


anteriores se realizaron sin optimizar la geometría, para este punto se puede
tomar el modelo con los mejores parámetros obtenidos e ir relajando los átomos
y observar los cambios en la energía y la geometría. (IBRION = 2)

Relajar … Energía (eV) Distancia (Å)


La primera capa.
La primera capa y la coordenada z de la
segunda capa.
Las dos primeras capas.
Las 3 primeras capas.

8. Método de optimización atómica. (INCAR)


IBRION Energía (eV) Tiempo (seg)
1
2
3

9. Método de optimización electrónica (INCAR)


ALGO Energía (eV) Tiempo (seg)
ALGO = 38
IALGO = V
IALGO = F

38
Apéndice F. Prueba de convergencia de Energía de corte y
espacio vacío

1. Cálculo de la energía de la molécula con celdas de diferentes tamaños de celda y


varios valores de energía de corte (Ecutoff) (1 punto k, método RMM-DIIS)

15 x 15 x 15 Å 20 x 20 x 20 Å celda del túnel = 10 Å


415 eV -116.6235 -116.6187 -116.6171
465 eV -116.5873 -116.585 -116.5825
515 eV -116.5866 -116.5802 -116.5825

2. Cálculo de la energía de los túneles de Au usando diferentes tamaños de espacio


vacío (3x3x1 puntos k, método RMM-DIIS)

15 Å 20 Å 25 Å celda del túnel = 10 Å


415 eV -267.7248 -267.7286 -267.721 -267.1848
465 eV -267.818* -267.8115 -267.8007
515 eV -268.1583* -268.1594* -268.1583 -268.1583

3. Suma de fragmentos

15 Å 20 Å Celda del túnel = 10 Å


415 eV -384.3483 -384.3473 -383.8019
465 eV -384.4053 -384.3965
515 eV -384.7449 -384.7396 -384.7408

4. Energía de la molécula muy lejos de los túneles de Au (3x3x1 puntos k, método


RMM-DIIS)

15 Å 20 Å 25 Å celda del túnel = 10 Å


415 eV -384.3502 -384.4133
465 eV -384.4114
515 eV -384.7492 -384.797

* Convergidos con el método de optimización de Davison (IALGO = 38)

Notas:
1. El método de Davison se usó en los casos en los que el cálculo con RMM-DIIS
no convergió, debido a que el método Davison es más robusto que aquel.

2. Si se están usando los parámetros más adecuados, la suma de fragmentos y la


energía muy separados (más de 6 Å) debe ser igual, en este caso el modelo con
10 Å de espacio vacío no es suficiente, es necesario usar más de 15 Å o una
energía de corte a partir de los 515 eV.

39
Páginas útiles para encontrar información sobre el uso del programa VASP

Grupo VASP
http://cms.mpi.univie.ac.at/vasp/

Manual de VASP
http://cms.mpi.univie.ac.at/vasp/vasp/vasp.html

Tutorial de VASP (escuela VASP)


http://cms.mpi.univie.ac.at/vasp-workshop/slides/documentation.htm

Para copiar el programa de visualización P4VASP


http://cms.mpi.univie.ac.at/odubay/p4vasp_site/download.php

Comentarios y pistas para calcular estados de transición con VASP.


http://theory.cm.utexas.edu/vtsttools/

Algunas anotaciones, aclaraciones y comentarios que pueden ayudar:


http://cst-www.nrl.navy.mil/~erwin/vasptips/

xCrysden es una herramienta muy útil para visualizar geometrías.


http://www.xcrysden.org/

vaspview permite visualizar el fichero LOCPOT y obtener el potencial en el vacío muy


fácilmente.
http://vaspview.sourceforge.net/

Este programa permite leer el fichero CHGCAR y obtener el análisis de Bader.


http://theory.cm.utexas.edu/henkelman/research/bader/

40

You might also like