History
From QWalkWiki
In the early 90's, Lubos Mitas developed a molecular Quantum Monte Carlo program while a researcher at the University of Illinois: Urbana-Champaign. This program was called PPQMC because it was one of the first QMC programs to implement pseudopotentials in Diffusion Monte Carlo. He then extended the program to periodic systems by the well-known copy-paste method, which essentially forked the code.
Graduate student (at the time) Jeff Grossman then extended the molecular program significantly, adding lots of nice features and writing it in Fortran 90, which allowed users to perform calculations without recompiling the code very often. This program was known as QMC-MOL, although there have been other QMC programs by that name.
In 2001 and 2002, Lubos and student Lucas Wagner at North Carolina State University started to investigate a complete rewrite of QMC-MOL. The objective was to remedy several problems that had arisen from the structure of QMC-MOL. The old code was difficult to extend to new and interesting wave functions beyond the Slater-Jastrow form, it did not scale well with system size, and it had difficulty running on massively parallel machines that were coming into vogue. Most of these problems came about because QMC-MOL was originally written to run very quickly on vector machines on small (less than 50 electron) systems. These considerations resulted in a structure that had the loop over walkers innermost, which is the worst possible situation for massively parallel calculations of large systems.
QWalk inverts the loop structure of QMC-MOL, putting the walker loop on the outside. We can then easily run on many processors with one walker per node efficiently, and only keep one walker in memory at a time, which is particularly useful when the number of electrons rises above 1000. The remaining (and more important) problem was with the extensibility of QMC-MOL. This was solved by writing QWalk in C++ using polymorphism, the ability to encapsulate sections of the problems into generic modules that all behave in a certain way, which then allows us to interchangeably use different forms of wave functions, systems, and basis functions, among others. What has resulted is a very flexible but robust structure that also scales well. On large systems, QWalk has been measured as running up to 200 times faster than QMC-MOL.
The current main developer is still Lucas Wagner. QWalk has benefited from major contributions from various kind souls (listed along with their major contributions):
* Michal Bajdich (Pfaffians, optimization) * Hiori Kino (Gaussian03 converter, bugfixes) * Zack Helms (Orbital plotting) * Pavel Vagner (1D rings) * Jindrich Kolorenc (Local spin moments)


