You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* adding smallscale changes.
* adding partial draft for the split-op method
* adding draft of split-op chapter.
* adding back split-op.jl file.
* fixing typo in split-op method.
* turning the splitop param module into a struct
* adding smallscale changes to spacing in split_op.jl
As another note: Just like position space can be parameterized by a position vector $$\textbf{x}$$, wavefunctions can be parameterized by a _wave_vector $$\textbf{k}$$ in frequency space.
61
+
Often times, the wavevector space is called _momentum_ space, which makes sense when considering the de Broglie formula:
62
+
63
+
$$
64
+
p = \frac{h}{\lambda}
65
+
$$
66
+
67
+
where $$h$$ is Planck's constant and $$\lambda$$ is the wavelength.
68
+
This means that we can ultimately move between real and momentum space by using [Fourier Transforms](../../FFT/cooley_tukey.md), which is incredibly useful in a number of cases!
69
+
60
70
Unfortunately, the interpretation of quantum simulation is rather tricky and is ultimately easier to understand with slightly different notation.
61
71
This notation is called _braket_ notation, where a _ket_ looks like this:
Copy file name to clipboardExpand all lines: chapters/physics_solvers/quantum/split-op/split-op.md
+69-2Lines changed: 69 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -17,9 +17,76 @@ This is the system I studied for most of my PhD (granted, we played a few tricks
17
17
18
18
At it's heart, the split-op method is nothing more than a pseudo-spectral differential equation solver... That is to say, it solves the Schrodinger equation with [FFT's](../../../FFT/cooley_tukey.md).
19
19
In fact, there is a large class of spectral and pseudo-spectral methods used to solve a number of different physical systems, and we'll definitely be covering those in the future.
20
+
As mentioned in the [quantum systems](../quantum.md) section, we can represent a a quantum wavefunction in momentum space, which is parameterized with the wavevector $$k$$.
21
+
In the hamiltonian shown above, we can split our system into real-space components, $$\hat{H}_R = \left[V(\mathbf{r}) + g|\Psi(\mathbf{r},t)|^2 \right] \Psi(\mathbf{r},t)$$, and momentum space components, $$\hat{H}_M = \left[-\frac{\hbar^2}{2m}\nabla^2 \right]\Psi(\mathbf{r},t)$$.
22
+
If we assume a somewhat general solution to our quantum system:
20
23
21
-
For now, let's answer the obvious question, "How on Earth can FFT's be used to solve quantum systems?"
22
-
That is precisely the question we will answer here!
and assume we are simulating our system by a series of small tiemsteps ($$dt$$), we can perform similar splitting by using the Baker-Campbell-Housdorff formula:
This accrues a small amount of error ($$dt^2$$) related to the commutation of the real and momentum-space components of the Hamiltonian. That's not okay.
35
+
In order to change the $$dt^2$$ error to $$dt^3$$, we can split the system by performing a half-step in real space before doing a full-step in momentum space, through a process called _Strang Splitting_ like so:
We can then address each part of this solution in chunks, first in real space, then in momentum space, then in real space again by using [Fourier Transforms](../../../FFT/cooley_tukey.md).
where $$\hat{U}_R = e^{-\frac{i\hat{H}_Rdt}{\hbar}}$$, $$\hat{U}_M = e^{-\frac{i\hat{H}_Mdt}{\hbar}}$$, and $$\mathcal{F}$$ and $$\mathcal{F}^{-1}$$ indicate forward and inverse Fourier Transforms.
49
+
50
+
As a small concession here, using this method enforces periodic boundary conditions, where the wavefunction will simply slide from one side of your simulation box to the other, but that's fine for most cases.
51
+
In fact, for many cases (such as large-scale turbulence models) it's ideal.
52
+
53
+
Luckily, the code in this case is pretty straightforward.
54
+
Frist, we need to set all the initial parameters, including the initial grids in real and momentum space:
As a note, when we generate our grid in momentum space `k`, we need to split the grid into two lines, one that is going from `0` to `-kmax` and is then discontinuous and goes from `kmax` to `0`.
62
+
This is simply because the FFT will naturally assume that the `0` in our grid is at the left side of the simulation, so we shift k-space to match this expectation.
Here, we use a standard harmonic potential for the atoms to sit in and a gaussian distribution for an initial guess for the probability distribution.
71
+
As a note, if we run this simulation in _imaginary time_, by simply setting $$\tau = it$$ and stepping through $$\tau$$, we will no longer see an "real-world" example of how the atoms should behave, but will instead see an exponential decay of higher-energy states.
72
+
This means that we can find the ground state of our system by running the simulation in imaginary time, which is an incredibly useful feature!
73
+
74
+
And finally go step-by-step through the simulation:
The Split-Operator method is one of the most commonly used quantum simulation algorithms because of how straightforward it is to code and how quickly you can start really digging into the physics of the simulation results!
0 commit comments