Fix some small things
This commit is contained in:
parent
03344c3298
commit
f29424f96e
BIN
latex/main.pdf
BIN
latex/main.pdf
Binary file not shown.
@ -6,6 +6,41 @@
|
||||
|
||||
\section{Methods}
|
||||
|
||||
\subsection{Units and constants}
|
||||
|
||||
Before continuing, we need to define the units we'll be working with.
|
||||
Since we are working with particles, we need small units to work with so the
|
||||
numbers we are working with aren't so small that they could potentially lead
|
||||
to large round-off errors in our simulation. The units that we will use are listed in Table~\ref{tab:units}.
|
||||
\begin{table}[H]
|
||||
\begin{center}
|
||||
\begin{tabular}[c]{lll}
|
||||
Dimension & Unit & Symbol \\
|
||||
\hline
|
||||
Length & micrometer & $\mu m$ \\
|
||||
Time & microseconds & $\mu s$ \\
|
||||
Mass & atomic mass unit & $u$ \\
|
||||
Charge & the elementary charge & $e$ \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{The set of units we'll be working with.}\label{tab:units}
|
||||
\end{table}
|
||||
With these base units, we get
|
||||
\begin{equation}
|
||||
k_e = 1.3893533 \cdot 10^5 \frac{u(\mu m)^3}{(\mu s)^2 e},
|
||||
\end{equation}
|
||||
and we get that the unit for magnetic field strength (Tesla, $T$) and electric potential (Volt, $V$) are
|
||||
\begin{equation}
|
||||
\begin{split}
|
||||
T &= 9.64852558 \cdot 10^1 \frac{u}{(\mu s) e} \\
|
||||
V &= 9.64852558 \cdot 10^7 \frac{u (\mu m)^2}{(\mu s)^2 e}. \\
|
||||
\end{split}
|
||||
\label{eq:}
|
||||
\end{equation}
|
||||
|
||||
\subsection{Dealing with a multi--particle system}
|
||||
|
||||
For a multi-particles system, we need to modify $\vb{F}$ to account for the
|
||||
force of other particles in the system acting upon each other. To do that, we
|
||||
add another term to $\vb{F}$
|
||||
@ -21,7 +56,7 @@ where $i$ and $j$ are particle indices and
|
||||
|
||||
Newton's second law for a particle $i$ is then
|
||||
\begin{equation}
|
||||
\frac{d^2\vb{r}_i}{dt^2} = \frac{\vb{F}\left(t, \frac{d\vb{r}_i}{dt}, \vb{r_i}\right)}{m_i},
|
||||
\frac{d^2\vb{r}_i}{dt^2} = \frac{\vb{F}_i\left(t, \frac{d\vb{r}_i}{dt}, \vb{r_i}\right)}{m_i},
|
||||
\label{eq:newtonlaw2}
|
||||
\end{equation}
|
||||
We can then rewrite the second order ODE from equation~\ref{eq:newtonlaw2}
|
||||
@ -30,24 +65,23 @@ We now rewrite Newton's second law of motion as
|
||||
\begin{equation}
|
||||
\begin{split}
|
||||
\frac{d\vb{r}_i}{dt} &= \vb{v}_i \\
|
||||
\frac{d\vb{v}_i}{dt} &= \frac{\vb{F}(t, \vb{v}_i, \vb{r}_i)}{m_i}.
|
||||
\frac{d\vb{v}_i}{dt} &= \frac{\vb{F}_i(t, \vb{v}_i, \vb{r}_i)}{m_i}.
|
||||
\end{split}
|
||||
\label{eq:coupled}
|
||||
\end{equation}
|
||||
|
||||
\subsection{Forward Euler}
|
||||
|
||||
For a single particle, the forward Euler method for a coupled system is
|
||||
For a particle $i$, the forward Euler method for a coupled system is
|
||||
expressed as
|
||||
|
||||
\begin{equation}
|
||||
\begin{split}
|
||||
\vb{r}_{i+1} &= \vb{r}_i + h \cdot \frac{d\vb{r}_i}{dt} = \vb{r}_i + h \cdot \vb{v}_i \\
|
||||
\vb{v}_{i+1} &= \vb{v}_i + h \cdot \frac{\vb{v}_i}{dt} = \vb{v}_i + h \cdot \frac{\vb{F}\left( t_i, \vb{v}_i, \vb{r}_i \right)}{m},
|
||||
\vb{r}_{i,j+1} &= \vb{r}_{i,j} + h \cdot \frac{d\vb{r}_{i,j}}{dt} = \vb{r}_{i,j} + h \cdot \vb{v}_{i,j} \\
|
||||
\vb{v}_{i,j+1} &= \vb{v}_{i,j} + h \cdot \frac{\vb{v}_{i,j}}{dt} = \vb{v}_{i,j} + h \cdot \frac{\vb{F}\left( t_{j}, \vb{v}_{i,j}, \vb{r}_{i,j} \right)}{m},
|
||||
\end{split}
|
||||
\end{equation}
|
||||
where $i$ is the current time step of the particle $m$ is the mass of the particle, and $h$
|
||||
is the time step length.
|
||||
for particle $i$ where $j$ is the current time step of the particle,
|
||||
$m$ is the mass of the particle, and $h$ is the step length.
|
||||
|
||||
When dealing with a multi-particle system, we need to ensure that we do not
|
||||
update the position of any particles until every particle has calculated their
|
||||
@ -75,28 +109,38 @@ Algorithm~\ref{algo:forwardeuler} provides an overview on how that can be achiev
|
||||
|
||||
\subsection{4th order Runge-Kutta}
|
||||
|
||||
For a single particle, we can express the 4th order Runge-Kutta (RK4) method as
|
||||
For a particle $i$, we can express the 4th order Runge-Kutta (RK4) method as
|
||||
\begin{equation}
|
||||
\begin{split}
|
||||
\vb{v}_{i+1} &= \vb{v}_i + \frac{h}{6} \left( \vb{k}_{\vb{v},1}
|
||||
+ 2\vb{k}_{\vb{v},2} + 2\vb{k}_{\vb{v},3} + \vb{k}_{\vb{v},4}
|
||||
\vb{v}_{i,j+1} &= \vb{v}_{i,j} + \frac{h}{6} \left( \vb{k}_{\vb{v},1,i}
|
||||
+ 2\vb{k}_{\vb{v},2,i} + 2\vb{k}_{\vb{v},3,i} + \vb{k}_{\vb{v},4,i}
|
||||
\right) \\
|
||||
\vb{r}_{i+1} &= \vb{r}_i + \frac{h}{6} \left( \vb{k}_{\vb{r},1}
|
||||
+ 2\vb{k}_{\vb{r},2} + 2\vb{k}_{\vb{r},3} + \vb{k}_{\vb{r},4}
|
||||
\vb{r}_{i,j+1} &= \vb{r}_{i,j} + \frac{h}{6} \left( \vb{k}_{\vb{r},1,i}
|
||||
+ 2\vb{k}_{\vb{r},2,i} + 2\vb{k}_{\vb{r},3,i} + \vb{k}_{\vb{r},4,i}
|
||||
\right),
|
||||
\end{split}
|
||||
\end{equation}
|
||||
where
|
||||
\begin{equation}
|
||||
\begin{split}
|
||||
\vb{k}_{\vb{v},1} &= \frac{\vb{F}(t_i, \vb{v}_i, \vb{r}_i)}{m} \\
|
||||
\vb{k}_{\vb{r},1} &= \vb{v}_i \\
|
||||
\vb{k}_{\vb{v},2} &= \frac{\vb{F}(t_i+\frac{h}{2}, \vb{v}_i + h \cdot \frac{\vb{k}_{\vb{v},1}}{2}, \vb{r}_i + h \cdot \frac{\vb{k}_{\vb{r},1}}{2})}{m} \\
|
||||
\vb{k}_{\vb{r},2} &= \vb{v}_i + h \cdot \frac{\vb{k}_{\vb{v},1}}{2} \\
|
||||
\vb{k}_{\vb{v},3} &= \frac{\vb{F}(t_i+\frac{h}{2}, \vb{v}_i + h \cdot \frac{\vb{k}_{\vb{v},2}}{2}, \vb{r}_i + h \frac{\cdot \vb{k}_{\vb{r},2}}{2})}{m} \\
|
||||
\vb{k}_{\vb{r},3} &= \vb{v}_i + h \cdot \frac{\vb{k}_{\vb{v},2}}{2} \\
|
||||
\vb{k}_{\vb{v},4} &= \frac{\vb{F}(t_i+h, \vb{v}_i + h \cdot \vb{k}_{\vb{v},3}, \vb{r}_i + h \cdot \vb{k}_{\vb{r},3})}{m} \\
|
||||
\vb{k}_{\vb{r},4} &= \vb{v}_i + h \cdot \frac{\vb{k}_{\vb{v},1}}{2}.
|
||||
\vb{k}_{\vb{v},1,i} &= \frac{\vb{F}_i(t_j, \vb{v}_{i,j},
|
||||
\vb{r}_{i,j})}{m} \\
|
||||
\vb{k}_{\vb{r},1,i} &= \vb{v}_{i,j} \\
|
||||
\vb{k}_{\vb{v},2,i} &= \frac{\vb{F}_i(t_j+\frac{h}{2}, \vb{v}_{i,j}
|
||||
+ h \cdot \frac{\vb{k}_{\vb{v},1,i}}{2}, \vb{r}_{i,j}
|
||||
+ h \cdot \frac{\vb{k}_{\vb{r},1,i}}{2})}{m} \\
|
||||
\vb{k}_{\vb{r},2,i} &= \vb{v}_{i,j}
|
||||
+ h \cdot \frac{\vb{k}_{\vb{v},1,i}}{2} \\
|
||||
\vb{k}_{\vb{v},3,i} &= \frac{\vb{F}_i(t_j+\frac{h}{2}, \vb{v}_{i,j}
|
||||
+ h \cdot \frac{\vb{k}_{\vb{v},2,i}}{2}, \vb{r}_{i,j}
|
||||
+ h \frac{\cdot \vb{k}_{\vb{r},2,i}}{2})}{m} \\
|
||||
\vb{k}_{\vb{r},3,i} &= \vb{v}_{i,j}
|
||||
+ h \cdot \frac{\vb{k}_{\vb{v},2,i}}{2} \\
|
||||
\vb{k}_{\vb{v},4,i} &= \frac{\vb{F}_i(t_j+h, \vb{v}_{i,j}
|
||||
+ h \cdot \vb{k}_{\vb{v},3,i}, \vb{r}_{i,j}
|
||||
+ h \cdot \vb{k}_{\vb{r},3,i})}{m} \\
|
||||
\vb{k}_{\vb{r},4,i} &= \vb{v}_{i,j}
|
||||
+ h \cdot \frac{\vb{k}_{\vb{v},1,i}}{2}.
|
||||
\end{split}
|
||||
\end{equation}
|
||||
|
||||
@ -110,46 +154,48 @@ can update the particles correctly for each step.
|
||||
This approach would require 8 loops to be able to complete the calculation since
|
||||
we cannot update the particles until after all $\vb{k}$ values have been
|
||||
computed, however if we create a temporary array that holds particles, we can
|
||||
put the updated particles in there, and then use that array in the next loop.
|
||||
around 8 separate loops to calculate all $\vb{k}$ values
|
||||
|
||||
\newpage
|
||||
put the updated particles in there, and then use that array in the next loop,
|
||||
and would reduce the required amount of loops down to 4.
|
||||
|
||||
\begin{figure}
|
||||
\begin{algorithm}[H]
|
||||
\caption{RK4 method}
|
||||
\label{algo:rk4}
|
||||
\begin{algorithmic}
|
||||
\Procedure{Evolve RK4}{$dt$}
|
||||
\Procedure{Evolve RK4}{$particles, dt$}
|
||||
\State $N \leftarrow \text{Number of particles inside the Penning trap}$
|
||||
\State $orig\_p \leftarrow \text{Copy of particles}$ \Comment{Keep the original particles}
|
||||
\State $orig\_p \leftarrow \text{Copy of particles}$
|
||||
\State $tmp\_p \leftarrow \text{Array of particles of size }N$
|
||||
\State $\vb{k}_{\vb{r}} \leftarrow \text{2D array of vectors of size } 4 \cross N$
|
||||
\State $\vb{k}_{\vb{v}} \leftarrow \text{2D array of vectors of size } 4 \cross N$
|
||||
|
||||
\For{ $i = 1, 2, \ldots, N$ }
|
||||
\State $\vb{k}_{\vb{r},1,i} \leftarrow \vb{v}$
|
||||
\State $\vb{k}_{\vb{v},1,i} \leftarrow \frac{\vb{F}}{m}$
|
||||
\State $\vb{k}_{\vb{r},1,i} \leftarrow particles_i.\vb{v}$
|
||||
\State $\vb{k}_{\vb{v},1,i} \leftarrow \frac{\vb{F}_i}{m_i}$
|
||||
|
||||
\State $tmp\_p_i.\vb{r} \leftarrow orig\_p_i.\vb{r} + \frac{dt}{2} \cdot \vb{k}_{\vb{r},1,i}$
|
||||
\State $tmp\_p_i.\vb{v} \leftarrow orig\_p_i.\vb{v} + \frac{dt}{2} \cdot \vb{k}_{\vb{v},1,i}$
|
||||
\State $tmp\_p_i.\vb{r} \leftarrow orig\_p_i.\vb{r}
|
||||
+ \frac{dt}{2} \cdot \vb{k}_{\vb{r},1,i}$
|
||||
\State $tmp\_p_i.\vb{v} \leftarrow orig\_p_i.\vb{v}
|
||||
+ \frac{dt}{2} \cdot \vb{k}_{\vb{v},1,i}$
|
||||
\EndFor
|
||||
|
||||
\State $particles \leftarrow tmp\_p$ \Comment{Update particles}
|
||||
|
||||
\For{ $i = 1, 2, \ldots, N$ }
|
||||
\State $\vb{k}_{\vb{r},2,i} \leftarrow \vb{v}$
|
||||
\State $\vb{k}_{\vb{v},2,i} \leftarrow \frac{\vb{F}}{m}$
|
||||
\State $\vb{k}_{\vb{r},2,i} \leftarrow particles_i.\vb{v}$
|
||||
\State $\vb{k}_{\vb{v},2,i} \leftarrow \frac{\vb{F}_i}{m_i}$
|
||||
|
||||
\State $tmp\_p_i.\vb{r} \leftarrow orig\_p_i.\vb{r} + \frac{dt}{2} \cdot \vb{k}_{\vb{r},2,i}$
|
||||
\State $tmp\_p_i.\vb{v} \leftarrow orig\_p_i.\vb{v} + \frac{dt}{2} \cdot \vb{k}_{\vb{v},2,i}$
|
||||
\State $tmp\_p_i.\vb{r} \leftarrow orig\_p_i.\vb{r}
|
||||
+ \frac{dt}{2} \cdot \vb{k}_{\vb{r},2,i}$
|
||||
\State $tmp\_p_i.\vb{v} \leftarrow orig\_p_i.\vb{v}
|
||||
+ \frac{dt}{2} \cdot \vb{k}_{\vb{v},2,i}$
|
||||
\EndFor
|
||||
|
||||
\State $particles \leftarrow tmp\_p$ \Comment{Update particles}
|
||||
|
||||
\For{ $i = 1, 2, \ldots, N$ }
|
||||
\State $\vb{k}_{\vb{r},3,i} \leftarrow \vb{v}$
|
||||
\State $\vb{k}_{\vb{v},3,i} \leftarrow \frac{\vb{F}}{m}$
|
||||
\State $\vb{k}_{\vb{r},3,i} \leftarrow particles_i.\vb{v}$
|
||||
\State $\vb{k}_{\vb{v},3,i} \leftarrow \frac{\vb{F}_i}{m}$
|
||||
|
||||
\State $tmp\_p_i.\vb{r} \leftarrow orig\_p_i.\vb{r} + dt \cdot \vb{k}_{\vb{r},3,i}$
|
||||
\State $tmp\_p_i.\vb{v} \leftarrow orig\_p_i.\vb{v} + dt \cdot \vb{k}_{\vb{v},3,i}$
|
||||
@ -158,7 +204,7 @@ around 8 separate loops to calculate all $\vb{k}$ values
|
||||
\State $particles \leftarrow tmp\_p$ \Comment{Update particles}
|
||||
|
||||
\For{ $i = 1, 2, \ldots, N$ }
|
||||
\State $\vb{k}_{\vb{r},4,i} \leftarrow \vb{v}$
|
||||
\State $\vb{k}_{\vb{r},4,i} \leftarrow particles_i.\vb{v}$
|
||||
\State $\vb{k}_{\vb{v},4,i} \leftarrow \frac{\vb{F}}{m}$
|
||||
|
||||
\State $tmp\_p_i.\vb{r} \leftarrow orig\_p_i.\vb{r} + \frac{dt}{6}
|
||||
@ -181,5 +227,9 @@ around 8 separate loops to calculate all $\vb{k}$ values
|
||||
\end{figure}
|
||||
|
||||
|
||||
\subsection{Testing the simulation}
|
||||
|
||||
\subsection{Relative error and error convergance rate}
|
||||
|
||||
\biblio
|
||||
\end{document}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user