<h3>An (1+1)-d Solution</h3>
The first example we discuss is the so-called 1D (stationary) breather
solution of the sine-Gordon equation. The breather has the following
-closed-form expression, as mentioned in the Introduction:
+closed-form expression, as mentioned in the Introduction:
\f[
-u_{\mathrm{breather}}(x,t) = -4\arctan \left(\frac{m}{\sqrt{1-m^2}} \frac{\sin\left(\sqrt{1-m^2}t +c_2\right)}{\cosh(mx+c_1)} \right),
+u_{\mathrm{breather}}(x,t) = -4\arctan \left(\frac{m}{\sqrt{1-m^2}} \frac{\sin\left(\sqrt{1-m^2}t +c_2\right)}{\cosh(mx+c_1)} \right),
\f]
where $c_1$, $c_2$ and $m<1$ are constants. In the simulation below, we have chosen $c_1=0$, $c_2=0$, $m=0.5$. Moreover, it is know that the period of oscillation of the breather is $2\pi\sqrt{1-m^2}$, hence we have chosen $t_0=-5.4414$ and $t_f=2.7207$ so that we can observe three oscillations of the solution. Then, taking $u_0(x) = u_{\mathrm{breather}}(x,t_0)$, $\theta=0$ and $k=h/10$, the program computed the following solution.
-\image html step-25.1d-breather.gif "Animation of the 1D stationary breather." width=5cm
+@image html step-25.1d-breather.gif "Animation of the 1D stationary breather." width=5cm
Though not shown how to do this in the program, another way to visualize the
(1+1)-d solution is to use output generated by the DataOutStack class; it
allows to "stack" the solutions of individual time steps, so that we get
2D space-time graphs from 1D time-dependent
solutions. This produces the space-time plot below instead of the animation
-above.
+above.
-\image html step-25.1d-breather_stp.png "A space-time plot of the 1D stationary breather." width=5cm
+@image html step-25.1d-breather_stp.png "A space-time plot of the 1D stationary breather." width=5cm
Furthermore, since the breather is an analytical solution of the sine-Gordon
equation, we can use it to validate our code, although we have to assume that
simulation shown in the two images above, the $L^2$ norm of the error in the
finite element solution at each time step remained on the order of
$10^{-2}$. Hence, we can conclude that the numerical method has been
-implemented correctly in the program.
+implemented correctly in the program.
<h3>A few (2+1)D Solutions</h3>
we have chosen $a_0=\lambda=1$. Notice that if $\vartheta=\pi$ the kink is
stationary, hence it would make a good solution against which we can
validate the program in 2D because no reflections off the boundary of the
-domain occur.
+domain occur.
-The simulation shown below was performed with $u_0(x) = u_{\mathrm{kink}}(x,t_0)$, $\theta=\frac{1}{2}$, $k=20h$, $t_0=1$ and $t_f=500$. The $L^2$ norm of the error of the finite element solution at each time step remained on the order of $10^{-2}$, showing that the program is working correctly in 2D, as well as 1D. Unfortunately, the solution is not very interesting, nonetheless we have included a snapshot of it below for completeness.
+The simulation shown below was performed with $u_0(x) = u_{\mathrm{kink}}(x,t_0)$, $\theta=\frac{1}{2}$, $k=20h$, $t_0=1$ and $t_f=500$. The $L^2$ norm of the error of the finite element solution at each time step remained on the order of $10^{-2}$, showing that the program is working correctly in 2D, as well as 1D. Unfortunately, the solution is not very interesting, nonetheless we have included a snapshot of it below for completeness.
-\image html step-25.2d-kink.png "Stationary 2D kink." width=5cm
+@image html step-25.2d-kink.png "Stationary 2D kink." width=5cm
-Now that we have validated the code in 1D and 2D, we move to a problem where the analytical solution is unknown.
+Now that we have validated the code in 1D and 2D, we move to a problem where the analytical solution is unknown.
To this end, we rotate the kink solution discussed above about the $z$
axis: we let $\vartheta=\frac{\pi}{4}$. The latter results in a
oscillations arose at the boundary, which are likely due to the scheme
and not the equation, thus picking a value of $\theta$ a good bit into
the "exponentially damped" spectrum of the time stepping schemes
-assures these oscillations are not created.
+assures these oscillations are not created.
-\image html step-25.2d-angled_kink.gif "Animation of a moving 2D kink, at 45 degrees to the axes of the grid, showing boundary effects." width=5cm
+@image html step-25.2d-angled_kink.gif "Animation of a moving 2D kink, at 45 degrees to the axes of the grid, showing boundary effects." width=5cm
Another interesting solution to the sine-Gordon equation (which cannot be
obtained analytically) can be produced by using two 1D breathers to construct
-the following separable 2D initial condition:
+the following separable 2D initial condition:
\f[
- u_0(x) =
- u_{\mathrm{pseudobreather}}(x,t_0) =
+ u_0(x) =
+ u_{\mathrm{pseudobreather}}(x,t_0) =
16\arctan \left(
\frac{m}{\sqrt{1-m^2}}
\frac{\sin\left(\sqrt{1-m^2}t_0\right)}{\cosh(mx_1)} \right)
\arctan \left(
\frac{m}{\sqrt{1-m^2}}
- \frac{\sin\left(\sqrt{1-m^2}t_0\right)}{\cosh(mx_2)} \right),
+ \frac{\sin\left(\sqrt{1-m^2}t_0\right)}{\cosh(mx_2)} \right),
\f]
where $x=(x_1,x_2)\in{R}^2$, $m=0.5<1$ as in the 1D case we discussed
above. For the simulation shown below, we have chosen $\theta=\frac{1}{2}$,
--- it acts like a breather (as far as the pictures are concerned); however,
it appears to break up and reassemble, rather than just oscillate.
-\image html step-25.2d-pseudobreather.gif "Animation of a 2D pseudobreather." width=5cm
+@image html step-25.2d-pseudobreather.gif "Animation of a 2D pseudobreather." width=5cm
<a name="extensions"></a>