CASINO manual - Theory of Condensed Matter
CASINO manual - Theory of Condensed Matter
CASINO manual - Theory of Condensed Matter
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
lattice points <strong>of</strong> the supercell <strong>of</strong>fset by a constant vector k s in the first Brillouin zone <strong>of</strong> the simulation<br />
cell.<br />
In an explicitly correlated method such as QMC the need to describe long-range correlations forces<br />
one explicitly to construct a simulation supercell consisting <strong>of</strong> several primitive cells. By contrast, in<br />
single-particle methods such as DFT, the problem can be reduced to a single primitive cell with a grid<br />
<strong>of</strong> k points, and the simulation supercell is never explicitly constructed.<br />
You could generate a trial wave function for use in your QMC calculation by performing a DFT<br />
calculation for the simulation supercell at a single k point. However this would be inefficient: the<br />
translational symmetry within the simulation cell would not be exploited to reduce memory requirements<br />
in both the DFT calculation and the subsequent QMC calculation. Instead you should generate<br />
the trial wave function for a simulation supercell consisting <strong>of</strong> l × m × n primitive cells by performing<br />
a DFT calculation in a single primitive cell with an l × m × n mesh <strong>of</strong> k points.<br />
In summary, your DFT calculation should be set up to generate a set <strong>of</strong> orbitals for a single primitive<br />
unit cell with an l × m × n k-point grid, whilst the QMC calculation should be set up for a simulation<br />
supercell consisting <strong>of</strong> l × m × n primitive cells. In the input file, the number <strong>of</strong> up- and down-spin<br />
electrons neu and ned should be appropriate for the supercell, whilst the npcell block, which specifies<br />
the size <strong>of</strong> the supercell, should contain ‘l m n’.<br />
Note that QMC methods cannot exploit symmetry (apart from time-reversal symmetry), and hence<br />
a complete l × m × n grid <strong>of</strong> k vectors must be supplied in general. (How you do this depends on<br />
your DFT code.) If you are using a grid <strong>of</strong> k vectors with time-reversal symmetry then your trial<br />
wave function in the subsequent QMC calculations can be chosen to be real, and the complex wf<br />
input keyword should be set to F. In this case you only need to supply one out <strong>of</strong> each ±k pair. If<br />
you do not have time-reversal symmetry you must supply the complete grid <strong>of</strong> k vectors and set the<br />
complex wf keyword to T.<br />
Typically you will need to perform QMC calculations in two different supercell sizes and extrapolate<br />
your results to the limit <strong>of</strong> infinite cell size. How exactly you proceed depends a good deal on what<br />
you are calculating. The problem <strong>of</strong> finite-size errors in QMC calculations is discussed extensively in<br />
Ref. [14].<br />
6.6 How to run the code: RUNQMC<br />
The runqmc script (which should be in your path after installing casino) is designed to reduce the<br />
effort <strong>of</strong> doing QMC calculations to just entering one command. It is most useful when using parallel<br />
machines with a batch queueing system. It is written to detect all common errors that a user may<br />
make in setting up a calculation, so that the fault is detected immediately rather than when the batch<br />
job starts (which may be many hours later). See the utils/runqmc/README file for more information.<br />
runqmc can run calculations on single- and multiprocessor workstations, and on clusters. To run the<br />
casino calculation set up in the current directory, simply type runqmc. This will automatically—and<br />
possible a little dangerously—occupy all cores on a workstation, or the maximum permitted allocation<br />
(in both number <strong>of</strong> cores and walltime) on a cluster. To change this, or to specify other calculation<br />
parameters, there are various options available.<br />
An example on a big parallel machine:<br />
runqmc --nproc=224256 --walltime=10h --shm=12<br />
will run the code in parallel using 224256 MPI processes (distributed among computational nodes<br />
depending on the number <strong>of</strong> cores per node in the machine, which runqmc knows about) using shared<br />
memory over groups <strong>of</strong> 12 processes with a walltime limit <strong>of</strong> 10 hours (which may affect what queue<br />
your job is put in).<br />
Note that this is equivalent to<br />
runqmc -p 224256 -T 10h -s<br />
(provided the machine has 12 cores per node) i.e., most options come with a longer version (with two<br />
hyphens and an equals sign) and a shorter easier-to-type version (with one hyphen, and zero or more<br />
spaces before the option value).<br />
A really important point which trips quite a few people up: on machines with batch queue systems<br />
everyone is used to <strong>manual</strong>ly creating batch scripts which tell the machine how to run the code, how<br />
24