switch point to subsubsection
This commit is contained in:
parent
6c12e47105
commit
9b9734c4c2
@ -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\}
|
\mathcal K:=\{(k_1,k_2),\ |k_1|\leqslant K_1,\ |k_2|\leqslant K_2\}
|
||||||
.
|
.
|
||||||
\end{equation}
|
\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)$.
|
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.
|
{\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:
|
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}
|
\end{equation}
|
||||||
This norm is selected by choosing {\tt adaptive\_norm=enstrophy}.
|
This norm is selected by choosing {\tt adaptive\_norm=enstrophy}.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\bigskip
|
|
||||||
|
|
||||||
\point{\bf Reality}.
|
\subsubsection{Reality}.
|
||||||
Since $U$ is real, $\hat U_{-k}=\hat U_k^*$, and so
|
Since $U$ is real, $\hat U_{-k}=\hat U_k^*$, and so
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\hat u_{-k}=\hat u_k^*
|
\hat u_{-k}=\hat u_k^*
|
||||||
@ -222,9 +220,8 @@ Thus,
|
|||||||
\label{realT}
|
\label{realT}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
In order to keep the computation as quick as possible, we only compute and store the values for $k_1\geqslant 0$.
|
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}
|
\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)
|
\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}
|
\end{equation}
|
||||||
@ -267,9 +264,8 @@ Therefore,
|
|||||||
\mathcal F\left(q_x|q|\hat u_q\right)(n)
|
\mathcal F\left(q_x|q|\hat u_q\right)(n)
|
||||||
\right)(k)
|
\right)(k)
|
||||||
\end{equation}
|
\end{equation}
|
||||||
\bigskip
|
|
||||||
|
|
||||||
\point{\bf Energy}.
|
\subsubsection{Energy}.
|
||||||
We define the energy as
|
We define the energy as
|
||||||
\begin{equation}
|
\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
|
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}
|
\label{enstrophy}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
\bigskip
|
|
||||||
|
|
||||||
\point{\bf Enstrophy}.
|
\subsubsection{Enstrophy}.
|
||||||
The enstrophy is defined as
|
The enstrophy is defined as
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\mathcal En(t)=\int\frac{dx}{L^2}\ |\nabla U|^2
|
\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
|
=\frac{4\pi^2}{L^2}\sum_{k\in\mathbb Z^2}k^2|\hat U_k|^2
|
||||||
.
|
.
|
||||||
\end{equation}
|
\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.
|
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)^*$.
|
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).
|
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).
|
||||||
|
Loading…
Reference in New Issue
Block a user