From 8d8e69aad2b22955f68bfd5b8b261d415d8214f7 Mon Sep 17 00:00:00 2001 From: filippi-claudia Date: Mon, 1 Feb 2021 10:31:53 +0000 Subject: [PATCH] deploy: f8246e9e25f7f84de933e338b40fa1ba9ffd6923 --- index.html | 394 +++++++++++++++++++++++++++++------------------------ 1 file changed, 219 insertions(+), 175 deletions(-) diff --git a/index.html b/index.html index fe5e369..b867f67 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Quantum Monte Carlo @@ -329,151 +329,151 @@ for the JavaScript code in this tag.

Table of Contents

-
-

1 Introduction

+
+

1 Introduction

This website contains the QMC tutorial of the 2021 LTTC winter school @@ -513,8 +513,8 @@ coordinates, etc).

-
-

1.1 Energy and local energy

+
+

1.1 Energy and local energy

For a given system with Hamiltonian \(\hat{H}\) and wave function \(\Psi\), we define the local energy as @@ -592,8 +592,8 @@ $$ E ≈ \frac{1}{N\rm MC} ∑i=1N\rm MC

-
-

2 Numerical evaluation of the energy of the hydrogen atom

+
+

2 Numerical evaluation of the energy of the hydrogen atom

In this section, we consider the hydrogen atom with the following @@ -622,8 +622,8 @@ To do that, we will compute the local energy and check whether it is constant.

-
-

2.1 Local energy

+
+

2.1 Local energy

You will now program all quantities needed to compute the local energy of the H atom for the given wave function. @@ -650,8 +650,8 @@ to catch the error.

-
-

2.1.1 Exercise 1

+
+

2.1.1 Exercise 1

@@ -695,8 +695,8 @@ and returns the potential.

-
-
2.1.1.1 Solution   solution
+
+
2.1.1.1 Solution   solution

Python @@ -736,8 +736,8 @@ and returns the potential.

-
-

2.1.2 Exercise 2

+
+

2.1.2 Exercise 2

@@ -772,8 +772,8 @@ input arguments, and returns a scalar.

-
-
2.1.2.1 Solution   solution
+
+
2.1.2.1 Solution   solution

Python @@ -800,8 +800,8 @@ input arguments, and returns a scalar.

-
-

2.1.3 Exercise 3

+
+

2.1.3 Exercise 3

@@ -882,8 +882,8 @@ Therefore, the local kinetic energy is

-
-
2.1.3.1 Solution   solution
+
+
2.1.3.1 Solution   solution

Python @@ -924,8 +924,8 @@ Therefore, the local kinetic energy is

-
-

2.1.4 Exercise 4

+
+

2.1.4 Exercise 4

@@ -968,8 +968,8 @@ local kinetic energy.

-
-
2.1.4.1 Solution   solution
+
+
2.1.4.1 Solution   solution

Python @@ -999,8 +999,8 @@ local kinetic energy.

-
-

2.1.5 Exercise 5

+
+

2.1.5 Exercise 5

@@ -1010,8 +1010,8 @@ Find the theoretical value of \(a\) for which \(\Psi\) is an eigenfunction of \(

-
-
2.1.5.1 Solution   solution
+
+
2.1.5.1 Solution   solution
\begin{eqnarray*} E &=& \frac{\hat{H} \Psi}{\Psi} = - \frac{1}{2} \frac{\Delta \Psi}{\Psi} - @@ -1031,8 +1031,8 @@ equal to -0.5 atomic units.
-
-

2.2 Plot of the local energy along the \(x\) axis

+
+

2.2 Plot of the local energy along the \(x\) axis

@@ -1043,8 +1043,8 @@ choose a grid which does not contain the origin.

-
-

2.2.1 Exercise

+
+

2.2.1 Exercise

@@ -1127,8 +1127,8 @@ plot './data' index 0 using 1:2 with lines title 'a=0.1', \

-
-
2.2.1.1 Solution   solution
+
+
2.2.1.1 Solution   solution

Python @@ -1203,8 +1203,8 @@ plt.savefig("plot_py.png")

-
-

2.3 Numerical estimation of the energy

+
+

2.3 Numerical estimation of the energy

If the space is discretized in small volume elements \(\mathbf{r}_i\) @@ -1234,8 +1234,8 @@ The energy is biased because:

-
-

2.3.1 Exercise

+
+

2.3.1 Exercise

@@ -1304,8 +1304,8 @@ To compile the Fortran and run it:

-
-
2.3.1.1 Solution   solution
+
+
2.3.1.1 Solution   solution

Python @@ -1420,8 +1420,8 @@ a = 2.0000000000000000 E = -8.0869806678448772E-002

-
-

2.4 Variance of the local energy

+
+

2.4 Variance of the local energy

The variance of the local energy is a functional of \(\Psi\) @@ -1448,8 +1448,8 @@ energy can be used as a measure of the quality of a wave function.

-
-

2.4.1 Exercise (optional)

+
+

2.4.1 Exercise (optional)

@@ -1460,8 +1460,8 @@ Prove that :

-
-
2.4.1.1 Solution   solution
+
+
2.4.1.1 Solution   solution

\(\bar{E} = \langle E \rangle\) is a constant, so \(\langle \bar{E} @@ -1480,8 +1480,8 @@ Prove that :

-
-

2.4.2 Exercise

+
+

2.4.2 Exercise

@@ -1555,8 +1555,8 @@ To compile and run:

-
-
2.4.2.1 Solution   solution
+
+
2.4.2.1 Solution   solution

Python @@ -1693,8 +1693,8 @@ a = 2.0000000000000000 E = -8.0869806678448772E-002 s2 = 1.8068814

-
-

3 Variational Monte Carlo

+
+

3 Variational Monte Carlo

Numerical integration with deterministic methods is very efficient @@ -1710,8 +1710,8 @@ interval.

-
-

3.1 Computation of the statistical error

+
+

3.1 Computation of the statistical error

To compute the statistical error, you need to perform \(M\) @@ -1751,8 +1751,8 @@ And the confidence interval is given by

-
-

3.1.1 Exercise

+
+

3.1.1 Exercise

@@ -1790,8 +1790,8 @@ input array.

-
-
3.1.1.1 Solution   solution
+
+
3.1.1.1 Solution   solution

Python @@ -1850,8 +1850,8 @@ input array.

-
-

3.2 Uniform sampling in the box

+
+

3.2 Uniform sampling in the box

We will now perform our first Monte Carlo calculation to compute the @@ -1912,8 +1912,8 @@ compute the statistical error.

-
-

3.2.1 Exercise

+
+

3.2.1 Exercise

@@ -2013,8 +2013,8 @@ well as the index of the current step.

-
-
3.2.1.1 Solution   solution
+
+
3.2.1.1 Solution   solution

Python @@ -2128,8 +2128,8 @@ E = -0.49518773675598715 +/- 5.2391494923686175E-004

-
-

3.3 Metropolis sampling with \(\Psi^2\)

+
+

3.3 Metropolis sampling with \(\Psi^2\)

We will now use the square of the wave function to sample random @@ -2268,8 +2268,8 @@ the same variable later on to store a time step.

-
-

3.3.1 Exercise

+
+

3.3.1 Exercise

@@ -2376,8 +2376,8 @@ Can you observe a reduction in the statistical error?

-
-
3.3.1.1 Solution   solution
+
+
3.3.1.1 Solution   solution

Python @@ -2522,8 +2522,8 @@ A = 0.51695266666666673 +/- 4.0445505648997396E-004

-
-

3.4 Gaussian random number generator

+
+

3.4 Gaussian random number generator

To obtain Gaussian-distributed random numbers, you can apply the @@ -2586,8 +2586,8 @@ In Python, you can use the -

3.5 Generalized Metropolis algorithm

+
+

3.5 Generalized Metropolis algorithm

One can use more efficient numerical schemes to move the electrons by choosing a smarter expression for the transition probability. @@ -2675,7 +2675,7 @@ drifted diffusion with transition probability:

-and the corrsponding move is proposed as +The corrsponding move is proposed as

@@ -2719,8 +2719,8 @@ Evaluate \(\Psi\) and \(\frac{\nabla \Psi(\mathbf{r})}{\Psi(\mathbf{r})}\) at th

-
-

3.5.1 Exercise 1

+
+

3.5.1 Exercise 1

@@ -2754,8 +2754,8 @@ Write a function to compute the drift vector \(\frac{\nabla \Psi(\mathbf{r})}{\P

-
-
3.5.1.1 Solution   solution
+
+
3.5.1.1 Solution   solution

Python @@ -2788,8 +2788,8 @@ Write a function to compute the drift vector \(\frac{\nabla \Psi(\mathbf{r})}{\P

-
-

3.5.2 Exercise 2

+
+

3.5.2 Exercise 2

@@ -2883,8 +2883,8 @@ Modify the previous program to introduce the drift-diffusion scheme.

-
-
3.5.2.1 Solution   solution
+
+
3.5.2.1 Solution   solution

Python @@ -3070,12 +3070,12 @@ A = 0.78839866666666658 +/- 3.2503783452043152E-004

-
-

4 Diffusion Monte Carlo   solution

+
+

4 Diffusion Monte Carlo   solution

-
-

4.1 Schrödinger equation in imaginary time

+
+

4.1 Schrödinger equation in imaginary time

Consider the time-dependent Schrödinger equation: @@ -3143,8 +3143,8 @@ system.

-
-

4.2 Diffusion and branching

+
+

4.2 Diffusion and branching

The imaginary-time Schrödinger equation can be explicitly written in terms of the kinetic and @@ -3220,23 +3220,20 @@ the combination of a diffusion process and a branching process.

We note that the ground-state wave function of a Fermionic system is -antisymmetric and changes sign. Therefore, it is interpretation as a probability +antisymmetric and changes sign. Therefore, its interpretation as a probability distribution is somewhat problematic. In fact, mathematically, since the Bosonic ground state is lower in energy than the Fermionic one, for large \(\tau\), the system will evolve towards the Bosonic solution.

-For the systems you will study this is not an issue: +For the systems you will study, this is not an issue:

  • Hydrogen atom: You only have one electron!
  • -
  • Two-electron system (\(H_2\) or He): The ground-wave function is antisymmetric
  • +
  • Two-electron system (\(H_2\) or He): The ground-wave function is antisymmetric in the spin variables but symmetric in the space ones.
-

-in the spin variables but symmetric in the space ones. -

Therefore, in both cases, you are dealing with a "Bosonic" ground state. @@ -3244,8 +3241,8 @@ Therefore, in both cases, you are dealing with a "Bosonic" ground state.

-
-

4.3 Importance sampling

+
+

4.3 Importance sampling

In a molecular system, the potential is far from being constant @@ -3341,8 +3338,8 @@ energies computed with the trial wave function.

-
-

4.3.1 Appendix : Details of the Derivation

+
+

4.3.1 Appendix : Details of the Derivation

\[ @@ -3403,8 +3400,8 @@ Defining \(\Pi(\mathbf{r},t) = \psi(\mathbf{r},\tau)

-
-

4.4 Pure Diffusion Monte Carlo (PDMC)

+
+

4.4 Pure Diffusion Monte Carlo (PDMC)

Instead of having a variable number of particles to simulate the @@ -3424,19 +3421,66 @@ cumulative product of weights:

-where \(\mathbf{r}_i\) are the coordinates along the trajectory. +where \(\mathbf{r}_i\) are the coordinates along the trajectory and we introduced a time-step \(\delta t\). +

+ +

+The algorithm can be rather easily built on top of your VMC code: +

+ +
    +
  1. +Compute a new position \(\mathbf{r'} = \mathbf{r}_n + + \delta t\, \frac{\nabla \Psi(\mathbf{r})}{\Psi(\mathbf{r})} + \chi\) +

    + +

    +Evaluate \(\Psi\) and \(\frac{\nabla \Psi(\mathbf{r})}{\Psi(\mathbf{r})}\) at the new position +

  2. +
  3. Compute the ratio $A = \frac{T(\mathbf{r}n+1 → \mathbf{r}n) P(\mathbf{r}n+1)}
  4. +
+

+{T(\mathbf{r}n → \mathbf{r}n+1) P(\mathbf{r}n)}$ +

+
    +
  1. Draw a uniform random number \(v \in [0,1]\)
  2. +
  3. if \(v \le A\), accept the move : set \(\mathbf{r}_{n+1} = \mathbf{r'}\)
  4. +
  5. else, reject the move : set \(\mathbf{r}_{n+1} = \mathbf{r}_n\)
  6. +
  7. evaluate the local energy at \(\mathbf{r}_{n+1}\)
  8. +
  9. compute the weight \(w(\mathbf{r}_i)\)
  10. +
  11. update \(W\)
  12. +
+ +

+Some comments are needed: +

+ +
    +
  • You estimate the energy as
  • +
+ +\begin{eqnarray*} +E = \frac{\sum_{i=1}{N_{\rm MC}} E_L(\mathbf{r}_i) W(\mathbf{r}_i, i\delta t)}{\sum_{i=1}{N_{\rm MC}} W(\mathbf{r}_i, i\delta t)} +\end{eqnarray} + +- The result will be affected by a time-step error (the finite size of $\delta t$) and one +has in principle to extrapolate to the limit $\delta t \rightarrow 0$. This amounts to fitting +the energy computed for multiple values of $\delta t$. +- The accept/reject step (steps 2-5 in the algorithm) is not in principle needed for the correctness of +the DMC algorithm. However, its use reduces si + + + + + + The wave function becomes -

-

\[ - \psi(\mathbf{r},\tau) = \Psi_T(\mathbf{r}) W(\mathbf{r},\tau) - \] -

+\psi(\mathbf{r},\tau) = \Psi_T(\mathbf{r}) W(\mathbf{r},\tau) +\] -

and the expression of the fixed-node DMC energy is -

\begin{eqnarray*} E(\tau) & = & \frac{\int \psi(\mathbf{r},\tau) \Psi_T(\mathbf{r}) E_L(\mathbf{r}) d\mathbf{r}} @@ -3455,13 +3499,13 @@ code, so this is what we will do in the next section.
-
-

4.5 Hydrogen atom

+
+

4.5 Hydrogen atom

-
-

4.5.1 Exercise

+
+

4.5.1 Exercise

@@ -3479,7 +3523,7 @@ energy of H for any value of \(a\).

from hydrogen  import *
 from qmc_stats import *
 
-def MonteCarlo(a, nmax, dt, tau, Eref):
+def MonteCarlo(a, nmax, dt, Eref):
     # TODO
 
 # Run simulation
@@ -3488,7 +3532,7 @@ energy of H for any value of \(a\).
 dt    = 0.01
 E_ref = -0.5
 
-X0 = [ MonteCarlo(a, nmax, dt, tau, E_ref) for i in range(30)]
+X0 = [ MonteCarlo(a, nmax, dt, E_ref) for i in range(30)]
 
 # Energy
 X = [ x for (x, _) in X0 ]
@@ -3560,8 +3604,8 @@ energy of H for any value of \(a\).
 
-
-
4.5.1.1 Solution   solution
+
+
4.5.1.1 Solution   solution

Python @@ -3777,8 +3821,8 @@ A = 0.98788066666666663 +/- 7.2889356133441110E-005

-
-

4.6 TODO H2

+
+

4.6 TODO H2

We will now consider the H2 molecule in a minimal basis composed of the @@ -3799,8 +3843,8 @@ the nuclei.

-
-

5 TODO [0/3] Last things to do

+
+

5 TODO [0/3] Last things to do

  • [ ] Give some hints of how much time is required for each section
  • @@ -3816,7 +3860,7 @@ the H\(_2\) molecule at $R$=1.4010 bohr. Answer: 0.17406 a.u.

Author: Anthony Scemama, Claudia Filippi

-

Created: 2021-02-01 Mon 08:59

+

Created: 2021-02-01 Mon 10:31

Validate