-
Notifications
You must be signed in to change notification settings - Fork 35
Home
This miniapp contains a simplified but computationally accurate implementation of the real space quantum Monte Carlo algorithms implemented in the full production QMCPACK application. The miniapp is designed to enable tests of different programming methodologies, optimizations and algorithms.
The basic task of quantum Monte Carlo is to obtain the total energy of a quantum mechanical system composed of mobile electrons and immobile atoms. The simulated system miniQMC is based on is bulk nickel oxide (NiO), in which nickel and oxygen atoms are arranged in a 3D checkerboard pattern (crystal). A fixed number of immobile atoms (e.g. 16 nickel and 16 oxygen) are set inside a box with periodic boundary conditions along with the physically relevant electrons--18 per nickel and 6 per oxygen. The remaining 10 and 2 electrons, for nickel and oxygen respectively, are represented abstractly by effective force fields called "pseudopotentials".
Each electron in the system is represented explicitly as a point charge in 3-dimensional space. If there are N electrons, we can list the 3D positions as . The quantum mechanical wavefunction describes the probability of finding the electrons at any given set of positions:
The QMC simulation process amounts to performing an integral over the electronic coordinates. The total energy is just the sum of the local energy of each particular set of electronic coordinates weighted by its probability of occurrence:
In Monte Carlo, a sequence of electron positions () are sampled randomly with probability and the integral is approximated statistically by the sum
The computationally costly parts of the simulation are the generation of the sample positions and the evaluation of the local energy .
The sample positions are generated from each other in sequence in the following way:
Here, is a list of 3N gaussian distributed random numbers, is a uniformly distributed random number, and is a ratio that depends on the value and the gradient of the wavefunction . The repeated calculation of the wavefunction's value, gradient, laplacian as well as ratios of wavefunction values dominate the cost of QMC calculations.
The analytic form of the wavefunction used in the miniapp is a product of a symmetric term (identical under exchange of like-spin electrons), known as the Jastrow factor, and an antisymmetric term (changes sign with exchange) called a Slater determinant:
The Jastrow factor is split into one-, two-, and three-body terms
The Slater determinant is actually a product of two determinants, one for up electrons and one for down electrons. The determinants are composed of single particle orbitals , which are each (complex) scalar valued functions of three spatial variables:
The sections that follow describe the overall computational algorithm of QMC and provide a finer level of detail regarding the form of each wavefunction component.