switch point to subsubsection

This commit is contained in:
Ian Jauslin 2024-02-18 14:16:48 -05:00
parent 6c12e47105
commit 9b9734c4c2

View File

@ -101,9 +101,8 @@ We truncate the Fourier modes and assume that $\hat u_k=0$ if $|k_1|>K_1$ or $|k
\mathcal K:=\{(k_1,k_2),\ |k_1|\leqslant K_1,\ |k_2|\leqslant K_2\}
.
\end{equation}
\bigskip
\point{\bf Runge-Kutta methods}.
\subsubsection{Runge-Kutta methods}.
To solve the equation numerically, we will use Runge-Kutta methods, which compute an approximate value $\hat u_k^{(n)}$ for $\hat u_k(t_n)$.
{\tt nstrophy} supports the 4th order Runge-Kutta ({\tt RK4}) and 2nd order Runge-Kutta ({\tt RK2}) algorithms.
In addition, several variable step methods are implemented:
@ -198,9 +197,8 @@ It can be made by specifying the parameter {\tt adaptive\_norm}.
\end{equation}
This norm is selected by choosing {\tt adaptive\_norm=enstrophy}.
\end{itemize}
\bigskip
\point{\bf Reality}.
\subsubsection{Reality}.
Since $U$ is real, $\hat U_{-k}=\hat U_k^*$, and so
\begin{equation}
\hat u_{-k}=\hat u_k^*
@ -222,9 +220,8 @@ Thus,
\label{realT}
\end{equation}
In order to keep the computation as quick as possible, we only compute and store the values for $k_1\geqslant 0$.
\bigskip
\point{\bf FFT}. We compute T using a fast Fourier transform, defined as
\subsubsection{FFT}. We compute T using a fast Fourier transform, defined as
\begin{equation}
\mathcal F(f)(n):=\sum_{m\in\mathcal N}e^{-\frac{2i\pi}{N_1}m_1n_1-\frac{2i\pi}{N_2}m_2n_2}f(m_1,m_2)
\end{equation}
@ -267,9 +264,8 @@ Therefore,
\mathcal F\left(q_x|q|\hat u_q\right)(n)
\right)(k)
\end{equation}
\bigskip
\point{\bf Energy}.
\subsubsection{Energy}.
We define the energy as
\begin{equation}
E(t)=\frac12\int\frac{dx}{L^2}\ U^2(t,x)=\frac12\sum_{k\in\mathbb Z^2}|\hat U_k|^2
@ -370,18 +366,16 @@ and
.
\label{enstrophy}
\end{equation}
\bigskip
\point{\bf Enstrophy}.
\subsubsection{Enstrophy}.
The enstrophy is defined as
\begin{equation}
\mathcal En(t)=\int\frac{dx}{L^2}\ |\nabla U|^2
=\frac{4\pi^2}{L^2}\sum_{k\in\mathbb Z^2}k^2|\hat U_k|^2
.
\end{equation}
\bigskip
\point{\bf Numerical instability}.
\subsubsection{Numerical instability}.
In order to prevent the algorithm from blowing up, it is necessary to impose the reality of $u(x)$ by hand, otherwise, truncation errors build up, and lead to divergences.
It is sufficient to ensure that the convolution term $T(\hat u,k)$ satisfies $T(\hat u,-k)=T(\hat u,k)^*$.
After imposing this condition, the algorithm no longer blows up, but it is still unstable (for instance, increasing $K_1$ or $K_2$ leads to very different results).