How to perform NISP with VASP calculations

In this article, we will look at how to run NISP where VASP is used to locally optimise nanoclusters. The Interpolation_Script.py python script that is used is the same as shown previously in Interpolation_Script.py - How to run NISP, but with an extra component. An example of a Interpolation_Script.py python script that uses VASP is shown below:

Interpolation_Script.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from NISP import Run_Interpolation_Scheme

input_information = {}
input_information['Element Type'] = 'Au'
input_information['Cohesive Energy'] = -3.82819360826 #-3.82819360826
input_information['Maximum No. of Atoms'] = 400
input_information['Local Optimiser'] = 'VASP'

slurm_information = {}
slurm_information['project'] = 'uoo00084'
slurm_information['time'] = '72:00:00'
slurm_information['nodes'] = 1
slurm_information['ntasks_per_node'] = 16
slurm_information['mem-per-cpu'] = '4G'
slurm_information['partition'] = 'large'
slurm_information['email'] = 'slurmnotifications@slurmnotifications.com'
slurm_information['vasp_version'] = 'VASP/5.4.4-intel-2017a'
slurm_information['vasp_execution'] = 'vasp_std'

input_information['Slurm Information'] = slurm_information

output_information = {}
output_information['Plot upper No of atom limit']   = None
output_information['Plot lower No of atom limit']   = None
output_information['Plot upper delta energy limit'] = None
output_information['Plot lower delta energy limit'] = None
output_information['Sizes to obtain instructions to create clusters for'] = [37,38,44,55,147,40]

no_of_cpus = 1
filename_prefix = ''

Run_Interpolation_Scheme(input_information=input_information,output_information=output_information,no_of_cpus=no_of_cpus,filename_prefix=filename_prefix)

The input_information dictionary

The extra component has been included in the input_information dictionary is the slurm_information. slurm_information is a dictionary that contains all the information that is needed to create the submit.sl files required to submit VASP calculations to slurm. The following information is need in the 'slurm_information' dictionary:

  • project (str.): This is the name of the project that you want to submit this job to.

  • time (str.): This is the amount of time you want to give to your slurm jobs, given as 'HH:MM:SS', where 'HH:MM:SS' is the hours, minutes, and seconds you want to give to a job.

  • nodes (str.): This is the number of nodes that you would like to give to a job.

  • ntasks_per_node (str./int): This is the number of cpus that you give to a job.

  • mem-per-cpu (str.): This is the amount of momeory you are giving to your job per cpu

The following can also be included in 'slurm_information' dictionary, but these are default value for these if you do not give a value for them.

  • partition (str.): This is the partition that is given to your job. See Mahuika Slurm Partitions for more information about partition on NeSI (Default: 'large').

  • email (str.): This is the email address you would like notifications about your slurm job to be sent to (Default: '').

  • vasp_version (str.): This is the version of VASP that you would like to load in on slurm (Default: 'VASP/5.4.4-intel-2017a').

  • vasp_execution (str.): This is the name of the vasp program that you execute (Default: 'vasp_std').

Make sure that you include 'slurm_information' in input_information by writing in Interpolation_Script.py

input_information['Slurm Information'] = slurm_information

An example of these parameters in Interpolation_Script.py is given below:

Interpolation_Script.py
 9
10
11
12
13
14
15
16
17
18
19
20
slurm_information = {}
slurm_information['project'] = 'uoo00084'
slurm_information['time'] = '72:00:00'
slurm_information['nodes'] = 1
slurm_information['ntasks_per_node'] = 16
slurm_information['mem-per-cpu'] = '4G'
slurm_information['partition'] = 'large'
slurm_information['email'] = 'slurmnotifications@slurmnotifications.com'
slurm_information['vasp_version'] = 'VASP/5.4.4-intel-2017a'
slurm_information['vasp_execution'] = 'vasp_std'

input_information['Slurm Information'] = slurm_information

Other files that you will need

You will also need to give NISP some other files that are needed by VASP to perform calculations. In the same place where you place your Interpolation_Script.py file, you want to create another folder called VASP_Files. In this VASP_Files folder you want to include the following files:

  • INCAR: This contains all the setting that are required by VASP to perform calculations.

  • POTCAR: This is the file that contains the information required to locally optimise a nanocluster with DFT using a certain functional.

  • KPOINTS: This contain the information used to specify the Bloch vectors (k-points) that will be used to sample the Brillouin zone in your calculation.

These files will be copied by NISP into each nanocluster folder. See an example of a setup of NISP for VASP here.

What to do after you have run NISP

After you run NISP, this will create a new folder called VASP_Clusters, which contains subfolders of all your nanoclusters. Each subfolder will contain a POSCAR, INCAR, POTCAR, KPOINTS, and submit.sl that are needed by VASP to perform DFT calculations. Each nanocluster is ready to be locally optimised with VASP.

You will find that there are many nanoclusters are created by NISP. To submit all of these nanoclusters for local minimisation by VASP, you can execute the program called Run_submitSL_slurm.py which will execute all of your nanocluster DFT optimisations to slurm. To run this script, type Run_submitSL_slurm.py into the terminal inside of your newly created VASP_Clusters folder. See Installation of NISP for how to use this Run_submitSL_slurm.py script.