.. _vaspintro: 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: :download:`INCAR` | :download:`KPOINTS` | :download:`POTCAR` | :download:`POSCAR` OUTPUT: :download:`CONTCAR` | :download:`OSZICAR` | :download:`OUTCAR` | :download:`vasp.out` Now let us go through things step-by-step. Below is the INCAR that we will use: .. code-block:: bash 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. .. code-block:: bash 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. .. code-block:: bash 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: .. code-block:: bash $ 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. .. code-block:: bash # 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. .. code-block:: bash $ 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: .. code-block:: bash $ 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: .. code-block:: bash $ 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: .. code-block:: bash 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: .. code-block:: bash $ 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.