VASP

Overview

The Vienna Ab initio Simulation Package (VASP), is a package for performing ab initio quantum mechanical calculations using either Vanderbilt pseudopotentials, or the projector augmented wave method and a plane wave basis set.

  • VASP Homepage: Access to VASP News, Wiki, Support Forum and Portal

    • VASP Wiki: Menu

    • Please consult the VASP FAQ for more details regards licensing.

      • For Example: To whom are VASP licenses given?

        • VASP licenses are given to well-defined research groups only. They are not department-or institution-wide, also they are not personal licenses. All members of a VASP-group have to work in the same organizational unit (Department, Institute) at the same location.

        • VASP-licenses are not transferable from one research institution to another one. Any transfer of a license to another group at the same research institution has to be approved by the VASP Software GmbH explicitly.

Using

  • NOTE: VASP is NOT publicly available to users across the clusters. Instead, there are local installations per project with each project having its own license agreement. If ARCC comes across users abusing the licensing agreement we will have to act on it.

Multicore

Note: Although ARCC can assist in the functional setup and running of VASP on the cluster, we do leave the science up to the researchers.

With this in mind, there are a number of pages on the VASP Wiki that make suggestions on how best to configure simulation inputs with respect to nodes/cores, as well as memory considerations.

Installation Guidelines

The basic process is to unpack the provided source tar file. Copy and update an appropriate arch/makefile.include.<version> file, and then build.

Below is an example using a <version> that ARCC believes is suitable. By all means select and try a different <version> but you will need to select appropriate compilers and related libraries, as well as updating the makefile.include.

With the example below, you will need to update <project-name> appropriately.

MedicineBow: Version 6.3.2

# We suggest building this software underneath your related project, so it can be shared across that project, # specifically under /project/<project-name>/software/. []$ tar -xf vasp.6.3.2.tar []$ cd vasp.6.3.2/ []$ cp arch/makefile.include.gnu_omp . []$ mv makefile.include.gnu_omp makefile.include # Update the makefile.include file. []$ module load gcc/14.2.0 openmpi/5.0.5 fftw/3.3.10-ompi openblas/0.3.24 netlib-scalapack/2.2.0-ompi wannier90/3.1.0 hdf5/1.14.3__hl_True__fortran_True-ompi []$ make all []$ ls bin/ vasp_gam vasp_ncl vasp_std

You need to update the makefile.include file. The following modifications have been made:

  • Commented out native compiling.

  • Have explicitly added the paths to openblas, scalapack and fftw.

  • Building with, and thus adding paths to, hdf5 and wannier90.

    • The wannier90 library typically installs the actual library file in its parent folder, and not a sub lib/ folder. This modifies the makefile.include to: LLIBS += -L$(WANNIER90_ROOT)/ -lwannier i.e the lib folder is not included.

  • Compiling fftlib.

# Default precompiler options CPP_OPTIONS = -DHOST=\"LinuxGNU\" \ -DMPI -DMPI_BLOCK=8000 -Duse_collective \ -DscaLAPACK \ -DCACHE_SIZE=4000 \ -Davoidalloc \ -Dvasp6 \ -Duse_bse_te \ -Dtbdyn \ -Dfock_dblbuf \ -D_OPENMP CPP = gcc -E -C -w $*$(FUFFIX) >$*$(SUFFIX) $(CPP_OPTIONS) FC = mpif90 -fopenmp FCL = mpif90 -fopenmp FREE = -ffree-form -ffree-line-length-none FFLAGS = -w -ffpe-summary=none OFLAG = -O2 OFLAG_IN = $(OFLAG) DEBUG = -O0 OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o OBJECTS_O2 += fft3dlib.o # For what used to be vasp.5.lib CPP_LIB = $(CPP) FC_LIB = $(FC) CC_LIB = gcc CFLAGS_LIB = -O FFLAGS_LIB = -O1 FREE_LIB = $(FREE) OBJECTS_LIB = linpack_double.o # For the parser library CXX_PARS = g++ LLIBS = -lstdc++ ## ## Customize as of this point! Of course you may change the preceding ## part of this file as well if you like, but it should rarely be ## necessary ... ## # When compiling on the target machine itself, change this to the # relevant target when cross-compiling for another architecture # VASP_TARGET_CPU ?= -march=native # FFLAGS += $(VASP_TARGET_CPU) # For gcc-10 and higher (comment out for older versions) FFLAGS += -fallow-argument-mismatch # BLAS and LAPACK (mandatory) OPENBLAS_ROOT ?= /apps/u/spack/gcc/14.2.0/openblas/0.3.24-52ip5la/ BLASPACK = -L$(OPENBLAS_ROOT)/lib -lopenblas # scaLAPACK (mandatory) SCALAPACK_ROOT ?= /apps/u/spack/gcc/14.2.0/netlib-scalapack/2.2.0-dbchdg6/ SCALAPACK = -L$(SCALAPACK_ROOT)/lib -lscalapack LLIBS += $(SCALAPACK) $(BLASPACK) # FFTW (mandatory) FFTW_ROOT ?= /apps/u/spack/gcc/14.2.0/fftw/3.3.10-mk3sml6/ LLIBS += -L$(FFTW_ROOT)/lib -lfftw3 -lfftw3_omp INCS += -I$(FFTW_ROOT)/include # HDF5-support (optional but strongly recommended) #CPP_OPTIONS+= -DVASP_HDF5 HDF5_ROOT ?= /apps/u/spack/gcc/14.2.0/hdf5/1.14.3-2frri7c/ LLIBS += -L$(HDF5_ROOT)/lib -lhdf5_fortran INCS += -I$(HDF5_ROOT)/include # For the VASP-2-Wannier90 interface (optional) CPP_OPTIONS += -DVASP2WANNIER90 WANNIER90_ROOT ?= /apps/u/opt/gcc/14.2.0/wannier90/3.1.0/ LLIBS += -L$(WANNIER90_ROOT)/ -lwannier # For the fftlib library (recommended) CPP_OPTIONS+= -Dsysv FCL += fftlib.o CXX_FFTLIB = g++ -fopenmp -std=c++11 -DFFTLIB_THREADSAFE INCS_FFTLIB = -I./include -I$(FFTW_ROOT)/include LIBS += fftlib LLIBS += -ldl

Note: If you wish to use a different make.include.your_choice or try another process, then you’ll need to module load potentially a different compiler, and build core libraries if not built for that chosen compiler.

Suggested Module File Creation

If you have installed under say: /project/<project-name>/software/vasp.6.3.2/ you could create the following:

[]$ cd /project/<project-name>/software/ []$ mkdir modules []$ cd modules []$ mkdir vasp []$ cd vasp []$ vim 6.3.2.lua

Installation: Potential Issues

Bin Folder Executables: Permission Denied

If you get an error of the form:

Once built, the files in the bin folder should be executable. Check they have the x permission defined for the groups:

If you don’t then use chmod ugo+x <filename> to update.