14.09.2014 Views

CASINO manual - Theory of Condensed Matter

CASINO manual - Theory of Condensed Matter

CASINO manual - Theory of Condensed Matter

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!