VASP SrVO3 Relax EverythingΒΆ

Here we will do structural relaxation for all degrees of freedom for spin polarized SrVO3. To perform a VASP run we will need four files: INCAR, KPOINTS, POSCAR, POTCAR. All of the input/output files can be viewed here:

INPUT: INCAR | KPOINTS | POTCAR | POSCAR

OUTPUT: CONTCAR | OSZICAR | OUTCAR | vasp.out

Now let us go through things step-by-step. Below is the INCAR that we will use:

ISPIN = 2             # Do a spin polarized calculation
MAGMOM= 0  4  0 0 0   # Initialization for magnetic moment on each atom
PREC = med            # Settings for grids, med usually OK.
IBRION= 2             # Conjugate gradient relaxation
NSW=50                # number of ionic steps in relaxation
ISIF= 3               # relax all ions and lattice vectors
ISMEAR = -5           # use tetrahedron method to do k summations
ENCUT=375             # plane wave cuttoff (ie. 1.5*max(ENMAX) from POTCAR)

This is a KPOINTS file. We choose a mesh of 12x12x12 which should be reasonable.

coord.13.02           # This is a string
 0                    # 0 means automatically generate grid
Gamma point shift     # Shift the gamma point
 12 12 12             # Kpoint mesh along each reciprocal lattice vector
 0 0 0                # amount to shift the gamma point

This is the POSCAR, which defines the crystal structure. Let us pull the V atom out of its equilibrium position so we can see if it relaxes back to the ideal position.

title                 # string
1.                    # scale structure by this parameter
3.825  0.000  0.000   # vector1 x y z
0.000  3.825  0.000   # vector2 x y z
0.000  0.000  3.825   # vector3 x y z
1   1   3             # Number of each species in unit cell
Direct                # use direct coordinates (aka. fractional, lattic)
0.5   0.5  0.5  Sr    # 0.5*v1+0.5*v2+0.5*v3 is position of Sr
0.01  0.0  0.0  V     # etc
0.5   0.0  0.0  O
0.0   0.5  0.0  O
0.0   0.0  0.5  O

In order to build the POTCAR file, you need to concatenate the POTCAR for all the atomic species that are in your unit cell. This needs to be done in the same order that the elements appear in your POSCAR. A POTCAR is constructed using a particular exchange-correlation functional. If we wanted to make a GGA (PW91) POTCAR for this system we would simply cat them like so:

$ cat /home/cam1/vasp/POTCAR_pawgga/{Sr_sv,V,O_s}/POTCAR > POTCAR

This assumes that the POTCAR is at the above location of /home/cam1/vasp/POTCAR_pawgga. Please note that there are sometimes mutliple POTCAR for a given atom. In this case we are using the soft oxygen (hence the _s). It is generate with a lower cutoff and hence it is much more efficient. I have not seen any major problems with it, though do understand that some of these softer PAWs will melt down once in a while. Let us grep the relevant information from it so you can be sure that you actually got what you wanted.

# this is the PAW that was used...
$ grep -e LEXCH -e TITEL POTCAR
   LEXCH  = 91
   TITEL  = PAW_GGA Sr_sv 10Feb1998
   LEXCH  = 91
   TITEL  = PAW_GGA V 07Aug2001
   LEXCH  = 91
   TITEL  = PAW_GGA O_s 04May1998

Now let us run vasp. I will use nohup (no hang up) to be sure that my job is not killed if I close my shell and i will send it to the background with the ampere.

$ nohup vasp > vasp.out &

It should be noted that on most modern machines it is much faster to run the parallel version of vasp. This is executed as follows for a quad core machine:

$ nohup mpirun -n 4 /usr/local/bin/vasp5-intel-parallel > out &

VASP will generate a number of relevant files. For this relaxation run we will be concerned with CONTCAR, OSZICAR, OUTCAR, and vasp.out. Let us start with OSZICAR which has the total energy as a function of electronic iteration in addition to the magnetic moment for the final iteration. This is also contained in the standard output:

$ grep E0 OSZICAR | tail -1
3 F= -.39400602E+02 E0= -.39400602E+02  d E =-.564340E-02  mag=     0.0000

We see that no magnetism was found and that the cohesive energy is E0. Now let us look at the final structure:

title
   1.00000000000000
     3.8575446041168937    0.0000000000000000    0.0000000000000000
     0.0000000000000000    3.8563755551641532    0.0000000000000000
     0.0000000000000000    0.0000000000000000    3.8563755551641532
   1   1   3
Direct
  0.5017796114257187  0.5000000000000000  0.5000000000000000
  0.0022042565045450  0.0000000000000000  0.0000000000000000
  0.5020495206645594  0.0000000000000000  0.0000000000000000
  0.0019833057025874  0.5000000000000000  0.0000000000000000
  0.0019833057025874  0.0000000000000000  0.5000000000000000

We are free to shift a column by whatever we want:

$ periodica.py CONTCAR shift="-0.00220426 0 0"

title
1.0
3.85754460   0.00000000   0.00000000
0.00000000   3.85637556   0.00000000
0.00000000   0.00000000   3.85637556
1 1 3
d
0.49957535   0.50000000   0.50000000  Sr
-0.00000000   0.00000000   0.00000000  V
0.49984526   0.00000000   0.00000000  O
-0.00022095   0.50000000   0.00000000  O
-0.00022095   0.00000000   0.50000000  O

We can see that the structure has come fairly close to relaxing back to the perfect cubic structure. We would probably need to turn up the convergence parameters to do better.