diff --git a/index.html b/index.html index 76dabc5..7eaf996 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +[0/3]
Last things to do[0/3]
Last things to doThis website contains the QMC tutorial of the 2021 LTTC winter school @@ -515,8 +515,8 @@ coordinates, etc).
For a given system with Hamiltonian \(\hat{H}\) and wave function \(\Psi\), we define the local energy as @@ -599,8 +599,8 @@ energy computed over these configurations:
In this section, we consider the hydrogen atom with the following @@ -629,8 +629,8 @@ To do that, we will compute the local energy and check whether it is constant.
You will now program all quantities needed to compute the local energy of the H atom for the given wave function. @@ -657,8 +657,8 @@ to catch the error.
@@ -703,8 +703,8 @@ and returns the potential.
Python @@ -745,8 +745,8 @@ and returns the potential.
@@ -781,8 +781,8 @@ input arguments, and returns a scalar.
Python @@ -809,8 +809,8 @@ input arguments, and returns a scalar.
@@ -891,8 +891,8 @@ Therefore, the local kinetic energy is
Python @@ -933,8 +933,8 @@ Therefore, the local kinetic energy is
@@ -993,8 +993,8 @@ are calling is yours.
Python @@ -1025,8 +1025,8 @@ are calling is yours.
@@ -1036,8 +1036,8 @@ Find the theoretical value of \(a\) for which \(\Psi\) is an eigenfunction of \(
The program you will write in this section will be written in @@ -1089,8 +1089,8 @@ In Fortran, you will need to compile all the source files together:
@@ -1184,8 +1184,8 @@ plot './data' index 0 using 1:2 with lines title 'a=0.1', \
Python @@ -1262,8 +1262,8 @@ plt.savefig("plot_py.png")
If the space is discretized in small volume elements \(\mathbf{r}_i\) @@ -1293,8 +1293,8 @@ The energy is biased because:
@@ -1365,8 +1365,8 @@ To compile the Fortran and run it:
Python @@ -1483,8 +1483,8 @@ a = 2.0000000000000000 E = -8.0869806678448772E-002
The variance of the local energy is a functional of \(\Psi\) @@ -1511,8 +1511,8 @@ energy can be used as a measure of the quality of a wave function.
@@ -1523,8 +1523,8 @@ Prove that :
\(\bar{E} = \langle E \rangle\) is a constant, so \(\langle \bar{E} @@ -1543,8 +1543,8 @@ Prove that :
@@ -1620,8 +1620,8 @@ To compile and run:
Python @@ -1760,8 +1760,8 @@ a = 2.0000000000000000 E = -8.0869806678448772E-002 s2 = 1.8068814
Numerical integration with deterministic methods is very efficient @@ -1777,8 +1777,8 @@ interval.
To compute the statistical error, you need to perform \(M\) @@ -1818,8 +1818,8 @@ And the confidence interval is given by
@@ -1859,8 +1859,8 @@ input array.
Python @@ -1921,8 +1921,8 @@ input array.
We will now perform our first Monte Carlo calculation to compute the @@ -1983,8 +1983,8 @@ compute the statistical error.
@@ -2086,8 +2086,8 @@ well as the index of the current step.
Python @@ -2193,8 +2193,8 @@ E = -0.48084122147238995 +/- 2.4983775878329355E-003
We will now use the square of the wave function to sample random @@ -2313,8 +2313,8 @@ All samples should be kept, from both accepted and rejected moves.
If the box is infinitely small, the ratio will be very close @@ -2349,8 +2349,8 @@ the same variable later on to store a time step.
@@ -2459,8 +2459,8 @@ Can you observe a reduction in the statistical error?
Python @@ -2607,8 +2607,8 @@ A = 0.50762633333333318 +/- 3.4601756760043725E-004
One can use more efficient numerical schemes to move the electrons by choosing a smarter expression for the transition probability. @@ -2729,8 +2729,8 @@ The algorithm of the previous exercise is only slighlty modified as:
To obtain Gaussian-distributed random numbers, you can apply the
@@ -2794,8 +2794,8 @@ In Python, you can use the
-
@@ -2837,8 +2837,8 @@ Write a function to compute the drift vector \(\frac{\nabla \Psi(\mathbf{r})}{\P
Python
@@ -2871,8 +2871,8 @@ Write a function to compute the drift vector \(\frac{\nabla \Psi(\mathbf{r})}{\P
@@ -2968,8 +2968,8 @@ Modify the previous program to introduce the drift-diffusion scheme.
Python
@@ -3157,12 +3157,26 @@ A = 0.62037333333333333 +/- 4.8970160591451110E-004
+As we have seen, Variational Monte Carlo is a powerful method to
+compute integrals in large dimensions. It is often used in cases
+where the expression of the wave function is such that the integrals
+can't be evaluated (multi-centered Slater-type orbitals, correlation
+factors, etc).
+
+Diffusion Monte Carlo is different. It goes beyond the computation
+of the integrals associated with an input wave function, and aims at
+finding a near-exact numerical solution to the Schrödinger equation.
+
Consider the time-dependent Schrödinger equation:
@@ -3230,59 +3244,38 @@ system.
-The imaginary-time Schrödinger equation can be explicitly written in terms of the kinetic and
-potential energies as
+The diffusion equation of particles is given by
\[
- \frac{\partial \psi(\mathbf{r}, \tau)}{\partial \tau} = \left(\frac{1}{2}\Delta - [V(\mathbf{r}) -E_{\rm ref}]\right) \psi(\mathbf{r}, \tau)\,.
+ \frac{\partial \psi(\mathbf{r},t)}{\partial t} = D\, \Delta \psi(\mathbf{r},t)
\]
-We can simulate this differential equation as a diffusion-branching process.
-
-To see this, recall that the diffusion equation of particles is given by
+where \(D\) is the diffusion coefficient. When the imaginary-time
+Schrödinger equation is written in terms of the kinetic energy and
+potential,
\[
- \frac{\partial \psi(\mathbf{r},t)}{\partial t} = D\, \Delta \psi(\mathbf{r},t).
+ \frac{\partial \psi(\mathbf{r}, \tau)}{\partial \tau} =
+ \left(\frac{1}{2}\Delta - [V(\mathbf{r}) -E_{\rm ref}]\right) \psi(\mathbf{r}, \tau)\,,
\]
-Furthermore, the rate of reaction \(v\) is the speed at which a chemical reaction
-takes place. In a solution, the rate is given as a function of the
-concentration \([A]\) by
-
-\[
- v = \frac{d[A]}{dt},
- \]
-
-where the concentration \([A]\) is proportional to the number of particles.
-
-These two equations allow us to interpret the Schrödinger equation
-in imaginary time as the combination of:
+it can be identified as the combination of:
@@ -3294,16 +3287,12 @@ The diffusion equation can be simulated by a Brownian motion:
-where \(\chi\) is a Gaussian random variable, and the rate equation
+where \(\chi\) is a Gaussian random variable, and the potential term
can be simulated by creating or destroying particles over time (a
-so-called branching process).
+so-called branching process) or by simply considering it as a
+cumulative multiplicative weight along the diffusion trajectory.
-In Diffusion Monte Carlo (DMC), one onbtains the ground state of a
-system by simulating the Schrödinger equation in imaginary time via
-the combination of a diffusion process and a branching process.
-
We note that the ground-state wave function of a Fermionic system is
@@ -3319,7 +3308,8 @@ For the systems you will study, this is not an issue:
@@ -3328,15 +3318,14 @@ Therefore, in both cases, you are dealing with a "Bosonic" ground state.
In a molecular system, the potential is far from being constant
-and, in fact, diverges at the inter-particle coalescence points. Hence, when the
-rate equation is simulated, it results in very large fluctuations
-in the numbers of particles, making the calculations impossible in
-practice.
+and, in fact, diverges at the inter-particle coalescence points. Hence,
+it results in very large fluctuations of the term associated with
+the potental, making the calculations impossible in practice.
Fortunately, if we multiply the Schrödinger equation by a chosen
trial wave function \(\Psi_T(\mathbf{r})\) (Hartree-Fock, Kohn-Sham
determinant, CI wave function, etc), one obtains
@@ -3366,8 +3355,8 @@ Defining \(\Pi(\mathbf{r},\tau) = \psi(\mathbf{r},\tau) \Psi_T(\mathbf{r})\), (s
The new "kinetic energy" can be simulated by the drift-diffusion
scheme presented in the previous section (VMC).
The new "potential" is the local energy, which has smaller fluctuations
-when \(\Psi_T\) gets closer to the exact wave function. This term can be simulated by
-changing the number of particles according to \(\exp\left[ -\delta t\,
+when \(\Psi_T\) gets closer to the exact wave function.
+This term can be simulated by t particles according to \(\exp\left[ -\delta t\,
\left(E_L(\mathbf{r}) - E_{\rm ref}\right)\right]\)
where \(E_{\rm ref}\) is the constant we had introduced above, which is adjusted to
the running average energy to keep the number of particles
@@ -3425,8 +3414,8 @@ energies computed with the trial wave function.
\[
@@ -3487,8 +3476,8 @@ Defining \(\Pi(\mathbf{r},t) = \psi(\mathbf{r},\tau)
Instead of having a variable number of particles to simulate the
@@ -3564,13 +3553,13 @@ code, so this is what we will do in the next section.
@@ -3669,8 +3658,8 @@ energy of H for any value of \(a\).
Python
@@ -3888,8 +3877,8 @@ A = 0.98788066666666663 +/- 7.2889356133441110E-005
We will now consider the H2 molecule in a minimal basis composed of the
@@ -3910,8 +3899,8 @@ the nuclei.
3.4.2 Exercise 1
+3.4.2 Exercise 1
3.4.2.1 Solution solution
+3.4.2.1 Solution solution
3.4.3 Exercise 2
+3.4.3 Exercise 2
3.4.3.1 Solution solution
+3.4.3.1 Solution solution
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
4.2 Diffusion and branching
+4.2 Relation to diffusion
-
4.3 Importance sampling
+4.3 Importance sampling
4.3.1 Appendix : Details of the Derivation
+4.3.1 Appendix : Details of the Derivation
4.4 Pure Diffusion Monte Carlo (PDMC)
+4.4 Pure Diffusion Monte Carlo (PDMC)
4.5 Hydrogen atom
+4.5 Hydrogen atom
4.5.1 Exercise
+4.5.1 Exercise
4.5.1.1 Solution solution
+4.5.1.1 Solution solution
4.6 TODO H2
+4.6 TODO H2
5 TODO
+[0/3]
Last things to do5 TODO
[0/3]
Last things to do
[ ]
Give some hints of how much time is required for each section6 Schedule
+6 Schedule
@@ -3990,7 +3979,7 @@ the H\(_2\) molecule at $R$=1.4010 bohr. Answer: 0.17406 a.u.
-