GPAW

Description

GPAW is a density-functional theory (DFT) Python code based on the projector-augmented wave (PAW) method and the atomic simulation environment (ASE).

User instructions

GPAW is available via the modules system. To add it to your environment run:

$ module load gpaw/1.2.0

This also sets the GPAW_SETUP_PATH environment variable to point to the 0.9.2 version of the gpaw set of atomic data files.

For usage instructions see the extensive GPAW documentation.

License

GNU General Public License v3

Admin notes

First I modified customize.py to include the following:

compiler = 'icc'
libraries = ['mkl_intel_lp64', 'mkl_core', 'mkl_sequential', 'xc']

Then it was compiled and installed with:

module load python/2.7.13 ase intel mkl openmpi libxc fftw
python setup.py install --prefix=/common/debian/9.1/MPI/intel/2017.4/openmpi/2.1/gpaw/gpaw-1.2.0

Note this was done under the builder account on ramsay after first creating the target directory and giving it ownership, which could be taken back once complete. The atomic data files were downloaded with the following once the bare module had been generated

gpaw gpaw install-data /common/debian/9.1/MPI/intel/2017.4/openmpi/2.1/gpaw/gpaw-1.2.0/gpaw-setups

To get the environment variable to point to this directory the following was set for the module template:

cmth_std_module()
prereq('ase', 'mkl', 'numpy', 'scipy', 'libxc', 'fftw')

-- This is an unfortunately hacky way to set the gpaw-setups directory...
local gpsdir = pathJoin(get_pkg_root(), 'gpaw-setups')
local lfs = require("lfs")
for filename in lfs.dir(gpsdir) do
    -- This cycles through the contents of this directory and saves the last item
    if filename ~= "." and filename ~= ".." then
        gpsetups = filename
    end
end
setenv('GPAW_SETUP_PATH', pathJoin(gpsdir, gpsetups))

This is maybe not the nicest way to do it, but given that any future installs will most likely only have the most recent set of atomic data files there shouldn’t be any issue.