README.md 5.45 KB
Newer Older
Timo Koch's avatar
Timo Koch committed
1
2
# Examples

Timo Koch's avatar
Timo Koch committed
3
To get started with DuMu<sup>x</sup>, we recommend the following documented examples. Each example folder contains a ready-to-use DuMu<sup>x</sup> simulation example.
Timo Koch's avatar
Timo Koch committed
4
5
The description in each folder (best viewed online by following the link) explains each line of the code example.

6
### [:open_file_folder: Example 1: One-phase flow and tracer transport](1ptracer/README.md)
Timo Koch's avatar
Timo Koch committed
7

8
9
<table><tr><td>

Timo Koch's avatar
Timo Koch committed
10
11
12
13
14
In this example, we simulate tracer transport through a confined aquifer with a randomly distributed permeability field.
We first solve the pressure field, compute the steady state flow field, and then solve the tracer transport equation.
You learn how to

* generate a randomly distributed permeability field
15
16
17
18
* sequentially solve two types of problems after each other:
    * solve a one-phase flow in porous media problem
    * compute the flow field from a pressure solution to pass to a tracer problem
    * solve an instationary tracer transport problem with a given flow field
19

20
21
22
23
24
25
</td>
<td width="20%"><a href="1ptracer/README.md">
<figure><img src="1ptracer/img/xtracer.gif" alt="Tracer result"/></figure>
</a></td>
</tr></table>

26
### [:open_file_folder: Example 2: Two-phase flow with infiltration and adaptive grid](2pinfiltration/README.md)
27

28
29
<table><tr><td>

Timo Koch's avatar
Timo Koch committed
30
31
32
33
In this example we model a soil contamination problem where DNAPL infiltrates a water-saturated porous medium (two-phase flow).
The initial distribution of DNAPL is read in from a txt-file.
The grid is adapitvely refined where DNAPL enters the domain, around the plume, and around an injection well.
You learn how to
34

Timo Koch's avatar
Timo Koch committed
35
36
37
38
* solve a two-phase flow in porous media problem with two immiscible phases
* set boundary conditions and a simple injection well
* implement a problem with heterogenous material parameters
* use adaptive grid refinement around the saturation front
39

40
41
42
43
44
45
</td>
<td width="30%"><a href="2pinfiltration/README.md">
<figure><img src="2pinfiltration/img/test_2p_pointsource_adaptive.png" alt="2p result"/></figure>
</a></td>
</tr></table>

46
### [:open_file_folder: Example 3: Shallow water model](shallowwaterfriction/README.md)
47

48
49
<table><tr><td>

50
The shallow water flow model is applied to simulate steady subcritical flow in a channel including a bottom friction model.
Timo Koch's avatar
Timo Koch committed
51
You learn how to
52

Timo Koch's avatar
Timo Koch committed
53
54
* solve a shallow water flow problem including bottom friction
* computate and output (VTK) an analytical reference solution
55

56
57
58
59
60
61
</td>
<td width="20%"><a href="shallowwaterfriction/README.md">
<figure><img src="shallowwaterfriction/img/swe_result.png" alt="swe result"/></figure></td>
</a></td>
</tr></table>

62
### [:open_file_folder: Example 4: Freeflow channel](freeflowchannel/README.md)
63
64
65

<table><tr><td>

66
67
68
69
70
In this example, we simulate a free flow between two plates in two dimensions.
You learn how to

* solve a free flow problem
* set outflow boundary conditions in the free-flow context
71
72
73
74
75
76

</td>
<td width="40%"><a href="freeflowchannel/README.md">
<figure><img src="freeflowchannel/img/setup.png" alt="freeflow result"/></figure></td>
</a></td>
</tr></table>
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

### [:open_file_folder: Example 5: One-phase flow with rotation-symmetric solution](1protationsymmetry/README.md)

<table><tr><td>

In this example, a rotation-symmetric solution for the single-phase flow equation is discussed.
You learn how to

* solve a rotation-symmetric problem
* perform a convergence test against an analytical solution
* do post-processing in [ParaView](https://www.paraview.org/)

</td>
<td width="30%"><a href="1protationsymmetry/README.md">
<figure><img src="1protationsymmetry/img/setup.svg" alt="Rotation-symmetric setup"/></figure></td>
</a></td>
</tr></table>
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

### [:open_file_folder: Example 6: Biomineralization](biomineralization/README.md)

<table><tr><td>

In this example, we simulate microbially-induced calcite precipitation
You learn how to

* solve a reactive transport model including
    * biofilm growth
    * mineral precipitation and dissolution
    * changing porosity and permeability
* use complex fluid and solid systems
* set a complex time loop with checkpoints, reading the check points from a file
* set complex injection boundary conditions, reading the injection types from a file

</td>
<td width="20%"><a href="biomineralization/README.md">
<figure><img src="biomineralization/img/pore_scale_w_processes_named.png" alt="biomin result"/></figure></td>
</a></td>
</tr></table>
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

### [:open_file_folder: Example 7: Lid-driven cavity](liddrivencavity/README.md)

<table><tr><td>

In this example, we simulate laminar incompressible flow in a cavity with the Navier-Stokes equations.
You learn how to

* solve a single-phase Navier-Stokes flow problem
* compare the results of Stokes flow (Re = 1) and Navier-Stokes flow (Re = 1000)
* compare the numerical results with the reference data using the plotting library `matplotlib`

</td>
<td width="20%"><a href="liddrivencavity/README.md">
<figure><img src="liddrivencavity/img/setup.png" alt="liddriven result"/></figure></td>
</a></td>
</tr></table>
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149

### [:open_file_folder: Example 7: Permeability estimation using a pore-network model](porenetwork_upscaling/README.md)

<table><tr><td>

In this example, we use a single-phase flow pore-network model to estimate the upscaled Darcy permeability of a randomly
generated grid.

You learn how to

* solve a single-phase-flow pore-network problem
* use the total mass flow rate to estimate $`K_{xx}`$, $`K_{yy}`$, $`K_{zz}`$

</td>
<td width="20%"><a href="liddrivencavity/README.md">
<figure><img src="porenetwork_upscaling/img/result.png" alt="pnm result"/></figure></td>
</a></td>
</tr></table>