Skip to content
Mark Dewing edited this page Jan 11, 2018 · 28 revisions

Welcome to the miniQMC wiki!

Introduction

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.

Basic quantum Monte Carlo and miniQMC

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 f1. The quantum mechanical wavefunction f2 describes the probability f3 of finding the electrons at any given set of positions:

f4

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:

f5

In Monte Carlo, a sequence of electron positions (f6) are sampled randomly with probability f3 and the integral is approximated statistically by the sum

f7

The computationally costly parts of the simulation are the generation of the sample positions f8 and the evaluation of the local energy f9.

The sample positions are generated from each other in sequence in the following way:

f10

f11

Here, f12 is a list of 3N gaussian distributed random numbers, f13 is a uniformly distributed random number, and f14 is a ratio that depends on the value and the gradient of the wavefunction f15. 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 miniQMC computational overview page describes the overall computational algorithm of QMC and provides a finer level of detail regarding the form of each wavefunction component.