From 43ec37998a374b0098e41b0e045f0f76656691e0 Mon Sep 17 00:00:00 2001
From: Timo Koch <timo.koch@iws.uni-stuttgart.de>
Date: Tue, 31 Mar 2020 21:48:39 +0200
Subject: [PATCH] [examples][ff] Reorganise introduction

---
 examples/freeflowchannel/.doc_config      |   3 +-
 examples/freeflowchannel/README.md        |  43 ++++++++++++++--------
 examples/freeflowchannel/doc/intro.md     |  35 ++++++++++++++----
 examples/freeflowchannel/doc/results.md   |   8 ----
 examples/freeflowchannel/img/pressure.png | Bin 11860 -> 0 bytes
 5 files changed, 55 insertions(+), 34 deletions(-)
 delete mode 100644 examples/freeflowchannel/doc/results.md
 delete mode 100644 examples/freeflowchannel/img/pressure.png

diff --git a/examples/freeflowchannel/.doc_config b/examples/freeflowchannel/.doc_config
index 09ab5781d7..317393ee81 100644
--- a/examples/freeflowchannel/.doc_config
+++ b/examples/freeflowchannel/.doc_config
@@ -2,7 +2,6 @@
     "README.md" : [
         "doc/intro.md",
         "problem.hh",
-        "main.cc",
-        "doc/results.md"
+        "main.cc"
     ]
 }
diff --git a/examples/freeflowchannel/README.md b/examples/freeflowchannel/README.md
index 7f4303b446..553a2ad7b2 100644
--- a/examples/freeflowchannel/README.md
+++ b/examples/freeflowchannel/README.md
@@ -1,15 +1,27 @@
 <!-- Important: This file has been automatically generated by generate_example_docs.py. Do not edit this file directly! -->
 
-This example is based on dumux/test/freeflow/navierstokes/channel/2d.
-
 # Freeflow through a channel
 
-## Problem set-up
-This example contains a stationary free flow of a fluid through two parallel solid plates in two dimensions from left to right. The figure below shows the simulation set-up. The fluid flows into the system at the left with a constant velocity of $` v = 1~\frac{\text{m}}{\text{s}} `$. The inflow velocity profile is a block profile. Due to the no-slip, no-flow boundary conditions at the top and bottom plate, the velocity profile gradually assumes a parabolic shape along the channel. At the outlet, the pressure is fixed and a zero velocity gradient in x-direction is assumed. The physical domain, which is modeled is the rectangular domain $`x\in[0,10],~y\in[0,1]`$.
+You learn how to:
+* solve a free flow channel problem
+* set outflow boundary conditions in the free-flow context
 
-![](./img/setup.png)
+__Results:__ In this example we will obtain the following stationary velocity profile:
+
+![](./img/velocity.png)
+
+## Folder layout and files
+
+```
+└── freeflowchannel/
+    ├── CMakeLists.txt          -> build system file
+    ├── main.cc                 -> main program flow
+    ├── params.input            -> runtime parameters
+    ├── properties.hh           -> compile time configuration
+    └── problem.hh              -> boundary & initial conditions
+```
 
-## Model description
+## Mathematical model
 The Stokes model without gravitation and without sources or sinks for a stationary, incompressible, laminar, single phase, one-component, isothermal ($`T=10^\circ C`$) flow is considered assuming a Newtonian fluid of constant density $` \varrho = 1~\frac{\text{kg}}{\text{m}^3} `$ and constant kinematic viscosity $` \nu = 1~\frac{\text{m}^2}{\text{s}} `$. The momentum balance
 ```math
 - \nabla\cdot\left(\mu\left(\nabla\boldsymbol{u}+\nabla\boldsymbol{u}^{\text{T}}\right)\right)+ \nabla p = 0
@@ -18,9 +30,16 @@ with density  $`\varrho`$, velocity $`\boldsymbol{u}`$, dynamic viscosity  $`\mu
 ```math
 \nabla \cdot \left(\varrho\boldsymbol{u}\right) =0
 ```
-are discretized using a staggered-grid finite-volume scheme as spatial discretization with pressures and velocity components as primary variables. For details on the discretization scheme, have a look at the dumux [handbook](https://dumux.org/handbook).
+are discretized using a staggered-grid finite-volume scheme as spatial discretization with pressures and velocity components as primary variables. For details on the discretization scheme, have a look at the Dumux [handbook](https://dumux.org/handbook).
 
-In the following, we take a close look at the files containing the set-up: At first, boundary conditions are set in `problem.hh` for the Navier-Stokes model. Afterwards, we show the different steps for solving the model in the source file `main.cc`. At the end, we show some simulation results.
+## Problem set-up
+This example contains a stationary free flow of a fluid through two parallel solid plates in two dimensions from left to right. The figure below shows the simulation set-up. The fluid flows into the system at the left with a constant velocity of $` v = 1~\frac{\text{m}}{\text{s}} `$. The inflow velocity profile is a block profile. Due to the no-slip, no-flow boundary conditions at the top and bottom plate, the velocity profile gradually assumes a parabolic shape along the channel. At the outlet, the pressure is fixed and a zero velocity gradient in x-direction is assumed. The physical domain, which is modeled is the rectangular domain $`x\in[0,10],~y\in[0,1]`$.
+
+![](./img/setup.png)
+
+In the following, we take a close look at the files containing the set-up: At first, boundary conditions are set in `problem.hh` for the Navier-Stokes model. Afterwards, we show the different steps for solving the model in the source file `main.cc`.
+
+# Implementation
 
 
 ## The file `problem.hh`
@@ -570,11 +589,3 @@ catch (...)
 </details>
 
 
-## Results
-This example computes the following stationary velocity profile:
-
-![](./img/velocity.png)
-
-and stationary pressure profile:
-
-![](./img/pressure.png)
diff --git a/examples/freeflowchannel/doc/intro.md b/examples/freeflowchannel/doc/intro.md
index 682e9dab3d..e4ded11d10 100644
--- a/examples/freeflowchannel/doc/intro.md
+++ b/examples/freeflowchannel/doc/intro.md
@@ -1,13 +1,25 @@
-This example is based on dumux/test/freeflow/navierstokes/channel/2d.
-
 # Freeflow through a channel
 
-## Problem set-up
-This example contains a stationary free flow of a fluid through two parallel solid plates in two dimensions from left to right. The figure below shows the simulation set-up. The fluid flows into the system at the left with a constant velocity of $` v = 1~\frac{\text{m}}{\text{s}} `$. The inflow velocity profile is a block profile. Due to the no-slip, no-flow boundary conditions at the top and bottom plate, the velocity profile gradually assumes a parabolic shape along the channel. At the outlet, the pressure is fixed and a zero velocity gradient in x-direction is assumed. The physical domain, which is modeled is the rectangular domain $`x\in[0,10],~y\in[0,1]`$.
+You learn how to:
+* solve a free flow channel problem
+* set outflow boundary conditions in the free-flow context
 
-![](./img/setup.png)
+__Results:__ In this example we will obtain the following stationary velocity profile:
 
-## Model description
+![](./img/velocity.png)
+
+## Folder layout and files
+
+```
+└── freeflowchannel/
+    ├── CMakeLists.txt          -> build system file
+    ├── main.cc                 -> main program flow
+    ├── params.input            -> runtime parameters
+    ├── properties.hh           -> compile time configuration
+    └── problem.hh              -> boundary & initial conditions
+```
+
+## Mathematical model
 The Stokes model without gravitation and without sources or sinks for a stationary, incompressible, laminar, single phase, one-component, isothermal ($`T=10^\circ C`$) flow is considered assuming a Newtonian fluid of constant density $` \varrho = 1~\frac{\text{kg}}{\text{m}^3} `$ and constant kinematic viscosity $` \nu = 1~\frac{\text{m}^2}{\text{s}} `$. The momentum balance
 ```math
 - \nabla\cdot\left(\mu\left(\nabla\boldsymbol{u}+\nabla\boldsymbol{u}^{\text{T}}\right)\right)+ \nabla p = 0
@@ -16,6 +28,13 @@ with density  $`\varrho`$, velocity $`\boldsymbol{u}`$, dynamic viscosity  $`\mu
 ```math
 \nabla \cdot \left(\varrho\boldsymbol{u}\right) =0
 ```
-are discretized using a staggered-grid finite-volume scheme as spatial discretization with pressures and velocity components as primary variables. For details on the discretization scheme, have a look at the dumux [handbook](https://dumux.org/handbook).
+are discretized using a staggered-grid finite-volume scheme as spatial discretization with pressures and velocity components as primary variables. For details on the discretization scheme, have a look at the Dumux [handbook](https://dumux.org/handbook).
+
+## Problem set-up
+This example contains a stationary free flow of a fluid through two parallel solid plates in two dimensions from left to right. The figure below shows the simulation set-up. The fluid flows into the system at the left with a constant velocity of $` v = 1~\frac{\text{m}}{\text{s}} `$. The inflow velocity profile is a block profile. Due to the no-slip, no-flow boundary conditions at the top and bottom plate, the velocity profile gradually assumes a parabolic shape along the channel. At the outlet, the pressure is fixed and a zero velocity gradient in x-direction is assumed. The physical domain, which is modeled is the rectangular domain $`x\in[0,10],~y\in[0,1]`$.
+
+![](./img/setup.png)
+
+In the following, we take a close look at the files containing the set-up: At first, boundary conditions are set in `problem.hh` for the Navier-Stokes model. Afterwards, we show the different steps for solving the model in the source file `main.cc`.
 
-In the following, we take a close look at the files containing the set-up: At first, boundary conditions are set in `problem.hh` for the Navier-Stokes model. Afterwards, we show the different steps for solving the model in the source file `main.cc`. At the end, we show some simulation results.
+# Implementation
diff --git a/examples/freeflowchannel/doc/results.md b/examples/freeflowchannel/doc/results.md
deleted file mode 100644
index 5fa9feff90..0000000000
--- a/examples/freeflowchannel/doc/results.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## Results
-This example computes the following stationary velocity profile:
-
-![](./img/velocity.png)
-
-and stationary pressure profile:
-
-![](./img/pressure.png)
diff --git a/examples/freeflowchannel/img/pressure.png b/examples/freeflowchannel/img/pressure.png
deleted file mode 100644
index b2477eefe612c457c384687ba730b4a03f6c2f27..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11860
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
GJpV6ln%uAe

-- 
GitLab