Wien2K

 

The Wien2K program is used to perform electronic structure calculations of solid materials using Density Functional Theory. More information can be found at the Wien2K Web site. In order to use Wien2K you must be part of a research group that has purchased a license for the program. If you are in such a group then send a message to research-computing@uiowa.edu and your HawkID will be added to the wien2k Unix group.

Detailed information on using Wien2K can be found in the user's guide that should be available with the research groups that are licensed to use the software. The goal of this page is simply to describe specific information on running Wien2K on the University of Iowa HPC cluster. The first thing that you should do is to load the wien2k module.

Neon
module load wien2k
Argon
module load WIEN2K

That will set up the appropriate environment including the path to the wien2k program and other needed environment variables. It will also load any dependent environment modules if needed. In addition to running serially, Wien2K can be run in parallel. There are three modes of parallel jobs. For serial jobs and single machine (k-point parallelization) nothing special needs to be done beyond the normal methods of specifying job parameters for SGE. For jobs that span machines, Wien2K can be run as an MPI program or a hybrid OpenMP/MPI program. Those two modes of parallel operation are not uncommon. Please see the Wien2K page for more information. What makes Wien2K a little different is that it needs a specially formatted host file. We provide those special machines/hosts files via wien2k parallel environments for SGE. 

There are two SGE parallel environments types, wien2k_mpiX, where X is the number of cores per node, which is a series of PEs that request whole nodes, and wien2k-sm. The 'sm' version would be for running shared memory parallel on a single machine. One of the 'mpi' versions would be for either pure MPI or hybrid MPI/k-point parallel calculations. The 'sm' version can be used on any of the hosts. The mpi version will only work with whole nodes as it allocates slots in increments of the number of cores. That typically works best for MPI jobs. Each of these parallel environments creates two machines files, machines.wien2k-mpi and machines.wien2k-hybrid. The mpi version sets up the machines file to calculate a k-point across all processors, whereas the hybrid will calculate k-points per node. Of course, you can manipulate the machines file in your job script if that works better for you. The two machines files are located in the $TMPDIR of the job so you will have to copy them to your local directory to use them. So to use them you could have something like the following in your job script.

Sample Wien2k job script
#!/bin/bash
#
#$ -N w2k_job
#
#$ -cwd
#$ -pe wien2k_mpi24 24

module load wien2k

cd ~/wien2k_job_dir

# copy the machines file in
cp $TMPDIR/machines.wien2k-mpi .machines

# Use -p to specify a parallel calculation
runsp_lapw -p