<a name="results"></a>
<h1>Results</h1>

<a name="Re100"></a>
<h3> Re = 100 </h3>

We run the code with the following <code>parameter-file.prm</code>, which can be found in the
same directory as the source:
@verbatim
  # First a global definition
  # the type of method we want to use
  set Method_Form = rotational

  subsection Physical data
    # In this subsection we declare the physical data
    # The initial and final time, and the Reynolds number
    set initial_time = 0.
    set final_time   = 25.
    set Reynolds     = 100
  end

  subsection Time step data
    # In this subsection we declare the data that is to be used for time discretization,
    # i.e. the time step dt
    set dt = 5e-3
  end

  subsection Space discretization
    # In this subsection we declare the data that is relevant to the space discretization
    # we set the number of global refines the triangulation must have
    # and the degree k of the pair Q_(k+1)--Q_k of velocity--pressure finite element spaces
    set n_of_refines = 3
    set pressure_fe_degree = 1
  end

  subsection Data solve velocity
    # In this section we declare the parameters that are going to control the solution process
    # for the velocity.
    set max_iterations = 1000  # maximal number of iterations that GMRES must make
    set eps            = 1e-6  # stopping criterion
    set Krylov_size    = 30    # size of the Krylov subspace to be used in GMRES
    set off_diagonals  = 60    # number of off diagonals that ILU must compute
    set diag_strength  = 0.01  # diagonal strengthening value
    set update_prec    = 10    # this number indicates how often the preconditioner must be updated
  end

  #The output frequency
  set output = 50

  #Finally we set the verbosity level
  set verbose = false
@endverbatim

Since the <code>verbose</code> parameter is set to <code>false</code>,
we do not get any kind of output besides the number of the time step
the program is currently working on.
If we were to set it to <code>true</code> we would get information on what the program is doing and
how many steps each iterative process had to make to converge, etc.

Let us plot the obtained results for $t=1,5,12,20,25$ (i.e. time steps
200, 1000, 2400, 4000, and 5000), where in the left column we show the
vorticity and in the right the velocity field:

<table>
  <tr>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.vorticity.0.9.3.png" alt="" width="400"> </td>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.velocity.0.9.3.png" alt="" width="400"> </td>
  </tr>
  <tr>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.vorticity.1.9.3.png" alt="" width="400"> </td>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.velocity.1.9.3.png" alt="" width="400"> </td>
  </tr>
  <tr>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.vorticity.2.9.3.png" alt="" width="400"> </td>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.velocity.2.9.3.png" alt="" width="400"> </td>
  </tr>
  <tr>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.vorticity.3.9.3.png" alt="" width="400"> </td>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.velocity.3.9.3.png" alt="" width="400"> </td>
  </tr>
  <tr>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.vorticity.4.9.3.png" alt="" width="400"> </td>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_100.velocity.4.9.3.png" alt="" width="400"> </td>
  </tr>
</table>

The images show nicely the development and extension of a vortex chain
behind the obstacles, with the sign of the vorticity indicating
whether this is a left or right turning vortex.


<a name="Re500"></a>
<h3> Re = 500 </h3>

We can change the Reynolds number, $Re$, in the parameter file to a
value of $500$. Doing so, and reducing the time step somewhat as well,
yields the following images at times $t=20,40$:

<table>
  <tr>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_500.vorticity.0.9.3.png" alt="" width="400"> </td>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_500.velocity.0.9.3.png" alt="" width="400"> </td>
  </tr>
  <tr>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_500.vorticity.1.9.3.png" alt="" width="400"> </td>
    <td> <img src="https://www.dealii.org/images/steps/developer/step-35.Re_500.velocity.1.9.3.png" alt="" width="400"> </td>
  </tr>
</table>

For this larger Reynolds number, we observe unphysical oscillations, especially
for the vorticity. The discretization scheme has now difficulties in correctly
resolving the flow, which should still be laminar and well-organized.
These phenomena are typical of discretization schemes that lack robustness
in under-resolved scenarios, where under-resolved means that the Reynolds
number computed with the mesh size instead of the physical dimensions of
the geometry is large. We look at a zoom at the region behind the obstacle, and
the mesh size we have there:


<img src="https://www.dealii.org/images/steps/developer/step-35.Re_500.zoom.9.3.png" alt="" width="400">

We can easily test our hypothesis by re-running the simulation with one more
mesh refinement set in the parameter file:

<img src="https://www.dealii.org/images/steps/developer/step-35.Re_500.zoom_2.9.3.png" alt="" width="400">

Indeed, the vorticity field now looks much smoother. While we can expect that
further refining the mesh will suppress the remaining oscillations as well,
one should take measures to obtain a robust scheme in the limit of coarse
resolutions, as described below.


<a name="extensions"></a>
<h3> Possibilities for extensions </h3>

This program can be extended in the following directions:
<ul>
  <li> Adaptive mesh refinement: As we have seen, we computed everything on a single fixed mesh.
  Using adaptive mesh refinement can lead to increased accuracy while not significantly increasing the
  computational time.

  <li> Adaptive time-stepping: Although there apparently is currently no theory about
  projection methods with variable time step,
  practice shows that they perform very well.

  <li> High Reynolds %numbers: As we can see from the results, increasing the Reynolds number changes significantly
  the behavior of the discretization scheme. Using well-known stabilization techniques we could be able to
  compute the flow in this, or many other problems, when the Reynolds number is very large and where computational
  costs demand spatial resolutions for which the flow is only marginally resolved, especially for 3D turbulent
  flows.

  <li> Variable density incompressible flows: There are projection-like methods for the case of incompressible
  flows with variable density. Such flows play a role if fluids of different
  density mix, for example fresh water and salt water, or alcohol and water.

  <li> Compressible Navier-Stokes equations: These equations are relevant for
  cases where
  velocities are high enough so that the fluid becomes compressible, but not
  fast enough that we get into a regime where viscosity becomes negligible
  and the Navier-Stokes equations need to be replaced by the hyperbolic Euler
  equations of gas dynamics. Compressibility starts to become a factor if the
  velocity becomes greater than about one third of the speed of sound, so it
  is not a factor for almost all terrestrial vehicles. On the other hand,
  commercial jetliners fly at about 85 per cent of the speed of sound, and
  flow over the wings becomes significantly supersonic, a regime in which the
  compressible Navier-Stokes equations are not applicable any more
  either. There are significant applications for the range in between,
  however, such as for small aircraft or the fast trains in many European and
  East Asian countries.
</ul>
