First iteration of the tutorial for the decoupled model

This commit is contained in:
Markus Wolff 2008-09-22 08:16:35 +00:00 committed by Andreas Lauser
parent e41b0ef6a2
commit 0eeaab3a61
7 changed files with 932 additions and 13 deletions

View File

@ -0,0 +1,818 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: inkscape 0.45.1
%%Pages: 1
%%Orientation: Portrait
%%BoundingBox: -32 -17 872 181
%%HiResBoundingBox: -32.663784 -17.447649 871.52299 180.7467
%%EndComments
%%Page: 1 1
0 208 translate
0.8 -0.8 scale
0 0 0 setrgbcolor
[] 0 setdash
1 setlinewidth
0 setlinejoin
0 setlinecap
gsave [1 0 0 1 0 0] concat
gsave [1 0 0 1 93.027596 35.692988] concat
0 0 0 setrgbcolor
[] 0 setdash
3 setlinewidth
1 setlinejoin
0 setlinecap
newpath
109.14135 54.647896 moveto
629.14434 54.647896 lineto
629.93493 54.647896 630.5714 55.284364 630.5714 56.074955 curveto
630.5714 158.93512 lineto
630.5714 159.72571 629.93493 160.36218 629.14434 160.36218 curveto
109.14135 160.36218 lineto
108.35076 160.36218 107.71429 159.72571 107.71429 158.93512 curveto
107.71429 56.074955 lineto
107.71429 55.284364 108.35076 54.647896 109.14135 54.647896 curveto
closepath
stroke
0 0 0 setrgbcolor
[3 1.5] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
265 54.814998 moveto
265 160.20923 lineto
stroke
gsave
0.79607844 0.45490196 0.10588235 setrgbcolor
newpath
268.18165 55.866428 moveto
626.36676 55.866428 lineto
627.81029 55.866428 628.97241 57.028551 628.97241 58.472085 curveto
628.97241 156.23226 lineto
628.97241 157.67579 627.81029 158.83792 626.36676 158.83792 curveto
268.18165 158.83792 lineto
266.73811 158.83792 265.57599 157.67579 265.57599 156.23226 curveto
265.57599 58.472085 lineto
265.57599 57.028551 266.73811 55.866428 268.18165 55.866428 curveto
closepath
fill
grestore
gsave [1 0 0 1 4 0] concat
gsave [1 0 0 1 236.47088 0.080825925] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
gsave [1 0 0 1 59.384214 -0.077555686] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
grestore
grestore
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
483.17157 161.25369 moveto
461.8029 186.06893 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
502.41559 161.30119 moveto
481.04692 186.11643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
522.38957 161.14608 moveto
501.0209 185.96132 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
542.55578 161.17613 moveto
521.18711 185.99137 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
561.7998 161.22363 moveto
540.43113 186.03887 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
581.77378 161.06852 moveto
560.40511 185.88376 lineto
stroke
gsave [1 0 0 1 -1.0160692 0.080825925] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
gsave [1 0 0 1 59.384214 -0.077555686] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
grestore
gsave [1 0 0 1 119.0805 0.1216738] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
gsave [1 0 0 1 59.384214 -0.077555686] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
grestore
grestore
grestore
gsave [1 0 0 1 39.791519 0.077559725] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
561.7998 161.22363 moveto
540.43113 186.03887 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
581.77378 161.06852 moveto
560.40511 185.88376 lineto
stroke
grestore
grestore
gsave [1 0 0 1 6.657105 -131.88046] concat
gsave [1 0 0 1 236.47088 0.080825925] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
gsave [1 0 0 1 59.384214 -0.077555686] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
grestore
grestore
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
483.17157 161.25369 moveto
461.8029 186.06893 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
502.41559 161.30119 moveto
481.04692 186.11643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
522.38957 161.14608 moveto
501.0209 185.96132 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
542.55578 161.17613 moveto
521.18711 185.99137 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
561.7998 161.22363 moveto
540.43113 186.03887 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
581.77378 161.06852 moveto
560.40511 185.88376 lineto
stroke
gsave [1 0 0 1 -1.0160692 0.080825925] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
gsave [1 0 0 1 59.384214 -0.077555686] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
grestore
gsave [1 0 0 1 119.0805 0.1216738] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
gsave [1 0 0 1 59.384214 -0.077555686] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
127.62019 161.05119 moveto
106.25152 185.86643 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
146.86421 161.09869 moveto
125.49554 185.91393 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
166.83819 160.94358 moveto
145.46952 185.75882 lineto
stroke
grestore
grestore
grestore
gsave [1 0 0 1 39.791519 0.077559725] concat
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
561.7998 161.22363 moveto
540.43113 186.03887 lineto
stroke
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
581.77378 161.06852 moveto
560.40511 185.88376 lineto
stroke
grestore
grestore
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
105.93588 217.9543 moveto
151.7385 217.33432 lineto
stroke
gsave [-1.6498489 0.022332201 -0.022332201 -1.6498489 150.08865 217.35665] concat
gsave
0 0 0 setrgbcolor
newpath
8.7185878 4.0337352 moveto
-2.2072895 0.016013256 lineto
8.7185884 -4.0017078 lineto
6.97309 -1.6296469 6.9831476 1.6157441 8.7185878 4.0337352 curveto
closepath
eofill
grestore
grestore
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
106.54211 218.35483 moveto
106.86591 172.54916 lineto
stroke
gsave [-0.011663548 1.6499588 -1.6499588 -0.011663548 106.85425 174.19912] concat
gsave
0 0 0 setrgbcolor
newpath
8.7185878 4.0337352 moveto
-2.2072895 0.016013256 lineto
8.7185884 -4.0017078 lineto
6.97309 -1.6296469 6.9831476 1.6157441 8.7185878 4.0337352 curveto
closepath
eofill
grestore
grestore
gsave [1 0 0 1 -209.68808 -53.894489] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/newlatin1font {findfont dup length dict copy dup /Encoding ISOLatin1Encoding put definefont} def
/LucidaBright-ISOLatin1 /LucidaBright newlatin1font
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(x) show
grestore
grestore
grestore
gsave [1 0 0 1 -266.24459 -115.33296] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(y) show
grestore
grestore
grestore
gsave [1 0 0 1 -482.72842 -206.03089] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(p_w = 2 x 10^5 [Pa]) show
grestore
grestore
grestore
gsave [1 0 0 1 -482.97404 -169.14546] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(S_n = 0) show
grestore
grestore
grestore
gsave [1 0 0 1 317.23412 -207.53706] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(q_w = 0 [kg/m^2s]) show
grestore
grestore
grestore
gsave [1 0 0 1 318.18473 -163.20014] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(q_n = -3 x 10^-4 [kg/m^2s]) show
grestore
grestore
grestore
gsave
0.60000002 0.29411766 1 setrgbcolor
newpath
111.72864 55.385635 moveto
261.40382 55.385635 lineto
262.85783 55.385635 264.02838 56.556191 264.02838 58.010199 curveto
264.02838 156.47972 lineto
264.02838 157.93372 262.85783 159.10428 261.40382 159.10428 curveto
111.72864 159.10428 lineto
110.27464 159.10428 109.10408 157.93372 109.10408 156.47972 curveto
109.10408 58.010199 lineto
109.10408 56.556191 110.27464 55.385635 111.72864 55.385635 curveto
closepath
fill
grestore
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
76.75 108.48518 moveto
137.23061 108.48518 lineto
stroke
gsave [-1.65 0 0 -1.65 135.58061 108.48518] concat
gsave
0 0 0 setrgbcolor
newpath
8.7185878 4.0337352 moveto
-2.2072895 0.016013256 lineto
8.7185884 -4.0017078 lineto
6.97309 -1.6296469 6.9831476 1.6157441 8.7185878 4.0337352 curveto
closepath
eofill
grestore
grestore
0 0 0 setrgbcolor
[] 0 setdash
1.5 setlinewidth
0 setlinejoin
0 setlinecap
newpath
598.47643 107.48605 moveto
658.95704 107.48605 lineto
stroke
gsave [-1.65 0 0 -1.65 657.30704 107.48605] concat
gsave
0 0 0 setrgbcolor
newpath
8.7185878 4.0337352 moveto
-2.2072895 0.016013256 lineto
8.7185884 -4.0017078 lineto
6.97309 -1.6296469 6.9831476 1.6157441 8.7185878 4.0337352 curveto
closepath
eofill
grestore
grestore
gsave [1 0 0 1 -52.189782 -204.20014] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(p_w_initial = 2 x 10^5 [Pa]) show
grestore
grestore
grestore
gsave [1 0 0 1 -52.436547 -169.40732] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(S_n_initial = 0) show
grestore
grestore
grestore
gsave [1 0 0 1 -24.043935 -282.84055] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(no flow) show
grestore
grestore
grestore
gsave [1 0 0 1 -24.00547 -81.002179] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(no flow) show
grestore
grestore
grestore
gsave [1 0 0 1 -234.24002 -167.99702] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(water) show
grestore
grestore
grestore
gsave [1 0 0 1 246.87279 -166.71041] concat
gsave [1 0 0 -1 348.4375 299.18834] concat
gsave
/LucidaBright-ISOLatin1 findfont
24 scalefont
setfont
0 0 0 setrgbcolor
newpath
0 0 moveto
(oil) show
grestore
grestore
grestore
grestore
grestore
showpage
%%EOF

View File

@ -1,6 +1,6 @@
# $id: $
EPS_FILES =
EPS_FILES = EPS/tutorial-problemconfiguration.eps
DOCSOURCE = dumux-handbook.tex navigation.html css.html

View File

@ -13,6 +13,7 @@
\usepackage{psfrag}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage[htt]{hyphenat}
\DeclareGraphicsExtensions{.eps, .jpg}

View File

@ -1,4 +1,4 @@
\chapter[Quick start guide]{Quick start guide: The first run of a test application}
\chapter[Quick start guide]{Quick start guide: The first run of a test application}\label{quick-start-guide}
PRELIMINARY DRAFT, tbc.: The previous chapter showed, how to install and compile \Dumux. This chapter shall give a very brief introduction, how to run a first test application, how to choose the materials, where to change boundary conditions, and how to visualize the first output files. Moreover, it will be explained, how to generate an own application folder. Only the rough steps will be described here. More detailed explanations can be found in the tutorials in the following chapter.

View File

@ -1,11 +1,3 @@
\section[Fully-coupled model]{Solving a problem using a Fully-Coupled Model}\label{tutorial-coupled}
TODO: describe the fully coupled model in detail
\begin{lst}[File dune-mux/test/twophase/test\_twophase.cc] \mbox{}
\lstinputlisting[basicstyle=\ttfamily\scriptsize,numbers=left,
numberstyle=\tiny, numbersep=5pt]{../../test/twophase/test_twophase.cc}
\end{lst}
In line \ref{tp:material}, the material law to be used is specified.

View File

@ -1,8 +1,116 @@
\clearpage
\section[Decoupled model]{Solving a problem using a Decoupled Model}\label{tutorial-decoupled}
\begin{lst}[File dune-mux/test/tutorial/tutorial\_decoupled.cc] \mbox{}
The process of solving a problem using \Dumux can be roughly divided into four parts:
\begin{enumerate}
\item The geometry of problem and correspondingly a grid have to be defined.
\item Material properties and constitutive relationships have to be defined.
\item Boundary conditions as well as initial conditions have to be defined.
\item A suitable model has to be chosen.
\end{enumerate}
The problem which is solved in this tutorial is illustrated in figure \ref{tutorial-decoupled:problemfigure}. A rectangular domain with now flow boundaries on the top and at the bottom, which is initially saturated with oil, is considered. Water infiltrates from the left side into the domain. Gravity effects as well as capillarity effects are neglected.
\begin{figure}[h]
\psfrag{x}{x}
\psfrag{y}{y}
\psfrag{no flow}{no flow}
\psfrag{water}{water}
\psfrag{oil}{oil}
\psfrag{p_w = 2 x 10^5 [Pa]}{$p_w = 2 \times 10^5$ [Pa]}
\psfrag{p_w_initial = 2 x 10^5 [Pa]}{$p_{w_{initial}} = 2 \times 10^5$ [Pa]}
\psfrag{S_n = 0}{$S_n = 0$}
\psfrag{S_n_initial = 0}{$S_{n_{initial}} = 0$}
\psfrag{q_w = 0 [kg/m^2s]}{$q_w = 0$ $\left[\frac{\textnormal{kg}}{\textnormal{m}^2 \textnormal{s}}\right]$}
\psfrag{q_n = -3 x 10^-4 [kg/m^2s]}{$q_w = -3 \times 10^-4$ $\left[\frac{\textnormal{kg}}{\textnormal{m}^2 \textnormal{s}}\right]$}
\centering
\includegraphics[width=0.9\linewidth,keepaspectratio]{EPS/tutorial-problemconfiguration}
\caption{Geometry of the tutorial problem with initial and boundary conditions.}\label{tutorial-decoupled:problemfigure}
\end{figure}
Listing \ref{tutorial-deoucpled:mainfile} shows how the main file, which has to be executed, has to be set up, if the problem described above shall be solved using a decoupled model. This main file can be found in the directory \texttt{/dune-mux/test/tutorial}.
\begin{lst}[File dune-mux/test/tutorial/tutorial\_decoupled.cc]\label{tutorial-deoucpled:mainfile} \mbox{}
\lstinputlisting[basicstyle=\ttfamily\scriptsize,numbers=left,
numberstyle=\tiny, numbersep=5pt]{../../test/tutorial/tutorial_decoupled.cc}
\end{lst}
TODO: describe a decoupled model in detail
First, in line \ref{tutorial-decoupled:include-begin} to \ref{tutorial-decoupled:include-end} the Dune and the \Dumux\, files respectively which contain the functions and classes that are needed in the main loop are included into the main file.
In line \ref{tutorial-decoupled:grid-begin} to \ref{tutorial-decoupled:grid-end} the geometry is defined and the grid is generated. The three variables of Type \texttt{Dune::FieldVector} define the lower left corner of the domain (\texttt{L}), the upper right corner of the domain (\texttt{H}) and the number of cells in $x$ and $y$ direction (\texttt{N}), where the dimensions are previously defined in line \ref{tutorial-decoupled:dim}. The grid of type \texttt{Dune::SGrid} is then generated in line \ref{tutorial-decoupled:grid-end}. For more information about the dune grid interface, the different grid types that are supported and the generation of different grids it is referred to the \textit{Dune Grid Interface HOWTO} (REFERENCE!!!).
The second point mentioned at the beginning of this section was the definition of material properties and constitutive relationships. The fluid properties of the two fluid phases considered here are defined in lines \ref{tutorial-decoupled:water} and \ref{tutorial-decoupled:oil}. The fluid classes including different kinds of fluids (here: \texttt{Dune::Water} and \texttt{Dune::Oil}) can be found in the file \texttt{phaseproperties2p.hh} in the directory \texttt{/dune-mux/dumux}-\texttt{/material/phaseproperties}. The properties of the solid matrix are defined in a special soil class. The \texttt{soil} object is generated in line \ref{tutorial-decoupled:soil}. As can be seen, the class type is \texttt{Dune::TutorialSoil}, which is defined in the file \texttt{tutorial\_soilproperties.hh} in the folder \texttt{/test/tutorial}. A description of this file and the definition of s soil class including the soil parameters can be found in section \ref{tutorial-decoupled:description-soil-class}. Finally, in line \ref{tutorial-decoupled:twophaserelations} the information included in the fluid and soil objects is used to generate an object of type \texttt{Dune::TwoPhaseRelations}, which includes the constitutive relationships (capillary pressure-saturation relation, relative permeability-saturation relation, etc.). The file \texttt{twophaserelations.hh} can be found in the directory \texttt{/dune-mux/dumux/material}.
The definition of boundary and initial conditions is done by definition of a so-called \textit{problem} class. In case of this tutorial the problem class is defined in the file \texttt{tutorialproblem\_decoupled.hh} in the texttt{/test/tutorial} folder. In the main file the problem object of type \texttt{Dune::TutorialProblemDecoupled} is then generated in line \ref{tutorial-decoupled:problem}. A further explanation of the definition of boundary and initial conditions and the structure of the problem class can be found in section \ref{tutorial-decoupled:description-bc-ic}. Besides the definition of the boundary and initial conditions the problem class is also a kind of interface containing all the objects generated before (geometry, fluids, soil, constitutive relationships, etc.). Thus, as can be seen in line \ref{tutorial-decoupled:problem} all this objects are given as arguments when calling the constructor of the problem class.
Following the steps listed at the beginning of this section, finally, a model has to be chosen. In case of this tutorial a decoupled isothermal two phase model is the choice. As explained before a decoupled model consists of a pressure equation which is decoupled or only weakly coupled to a saturation equation, concentration equations, energy balance equations, etc. In case of isothermal two phase flow one pressure equation and one saturation equation have to be solved.
The discretisation of the pressure equation is included in the object which is generated in line \ref{tutorial-decoupled:diffusion} of the main file. It is called \texttt{diffusion} and it is of type \texttt{Dune::FVDiffusionVelocity}. The definition of this class can be found in \texttt{/dune-mux/dumux/diffusion/fv} in the file \texttt{fvdiffusionvelocity.hh}. The \texttt{FV} in the class name indicates that a finite volume discretisation is used. For the pressure equation also other discretisation methods like finite elements or mimetic finite differences are available.
Similarly, an object containing the discretisation of the saturation equation is generated in line \ref{tutorial-decoupled:transport} of the main file. As can be seen, this object is called \texttt{transport}. The class \texttt{Dune::FVTransport} can be found in the directory \texttt{/dune-mux/dumux/transport/fv}. Again, the \texttt{FV} in the class name indicates a finite volume discretisation.
For the decoupled model the so-called \textit{IMPES} (\textit{IM}plicit \textit{P}ressure \textit{E}xplicit \textit{S}aturation) algorithm is used. This means that the pressure equation is first solved using an implicit method. The resulting velocities are then used to solve the saturation equation explicitly. It is clear that depending on the non-linearity this is an iterative process within every timestep. The object \texttt{impes} of type \texttt{Dune::IMPES} which is generated in line \ref{tutorial-decoupled:impes} of the main file combines the objects \texttt{diffusion} and \texttt{transport} and proceeds the iterations of the IMPES algorithm within a timestep. The definition of the class \texttt{Dune::IMPES} can be found in the file \texttt{impes.hh} in the directory \texttt{/dune-mux/dumux/fractionalflow/impes}.
Finally, an object called \texttt{timeloop} of type \texttt{Dune::TimeLoop} is generated in line \ref{tutorial-decoupled:timeloop} of the tutorial main file. The class \texttt{Dune::TimeLoop} is defined in the file \texttt{timeloop.hh} in the folder \texttt{/dune-mux/dumux/timedisc}. The object \texttt{timeloop} includes the type of timestep that is used (implicit, explicit, etc.) and contains the function \texttt{execute} which is called in line \ref{tutorial-decoupled:execute} of the main file. This function finally starts the computation and runs the (time)loop over all timesteps.
\subsection{The definition of the fluid properties}\label{tutorial-decoupled:description-fluid-class}
In \Dumux different fluids are already implemented. The definitions can be found in the file \texttt{phaseproperties2p.hh} in the directory \texttt{/dune-mux/dumux/material/phaseproperties}. As can be observed in this file, for each fluid a class named like the fluid is defined. These classes are derived from the fluid base class \texttt{Fluid} which is defined in the file \texttt{property\_baseclasses.hh} in the directory \texttt{/dune-mux/dumux/material} and include several functions returning different fluid properties.
If a new fluid type is to be used or an existing type is to be used with different fluid parameters new fluid types can be defined derived from the base class \texttt{Fluid} comparable to the fluids already defined in the file \texttt{phaseproperties2p.hh}.
It is important to mention, that existing fluid classes should not be changed. New fluid classes should only be added to the file \texttt{phaseproperties2p.hh} if they are also to be added to the repository! If you are not sure if your fluid class can be useful for the other \Dumux users just create a new file in your problem directory similar to the file \texttt{phaseproperties2p.hh} and define your fluid classes there.
\subsection{The definition of the soil parameters}\label{tutorial-decoupled:description-soil-class}
Soil properties which can be defined in \Dumux\, are the \textit{intrinsic permeability}, the \textit{porosity} and the \textit{heat capacity} as well as the \textit{heat conductivity} of the solid matrix. Further the \textit{residual saturations} of the fluids, and the \textit{capillary pressures-saturation function} as well as the \textit{relative permeability-saturation functions} are depending on the soil.
The base class \texttt{Dune::Matrix2p} for the definition of the soil parameters can be found in the file \texttt{property\_baseclasses.hh} in the directory \texttt{/dune-mux/dumux/material}. Derived from this base class, there exist two standard soil type classes named \texttt{HomogeneousSoil} and \texttt{HeterogeneousSoil}. Both can be found in the file \texttt{matrixproperties.hh} in the \texttt{/material} folder. If one wants to use a soil that differs from this standard soil types, new soil classes can be derived either from the base class (\texttt{Dune::Matrix2p}) or from the two standard soil classes (\texttt{Dune::HomogeneousSoil} and \texttt{Dune::HeterogeneousSoil}).
For this tutorial problem a new soil class named \texttt{TutorialSoil} is derived from \texttt{Dune::HomogeneousSoil} (listing \ref{tutorial-deoucpled:soilpropertiesfile}, line \ref{tutorial-decoupled:tutorialsoil}), which can be found in the file \texttt{tutorial\_soilproperties.hh} in the directory \texttt{/test/tutorial}.
Listing \ref{tutorial-deoucpled:soilpropertiesfile} shows the file \texttt{tutorial\_soilproperties.hh}.
\begin{lst}[File dune-mux/test/tutorial/tutorial\_soilproperties.hh]\label{tutorial-deoucpled:soilpropertiesfile} \mbox{}
\lstinputlisting[basicstyle=\ttfamily\scriptsize,numbers=left,
numberstyle=\tiny, numbersep=5pt]{../../test/tutorial/tutorial_soilproperties.hh}
\end{lst}
In line \ref{tutorial-decoupled:permeability} the function returning the intrinsic permeability can be found. As can be seen, the function has to be called with three different arguments. The first one (\texttt{x}) is a vector including the global coordinates of the current entity (can be an element, vertex, etc.), the second one (\texttt{e}) is the entity itself and the third one is a vector including the local coordinates of the current entity. The intrinsic permeability is a tensor and thus returned in form of a $n \times n$-matrix where $n$ is the dimension of the problem.
The function \texttt{porosity()} defined in line \ref{tutorial-decoupled:porosity} is called with the same arguments as the permeability function described before and returns the porosity dependent on the position in the domain.
The residual saturation functions \texttt{Sr\_w()} (line \ref{tutorial-decoupled:srw}) and \texttt{Sr\_n()} (line \ref{tutorial-decoupled:srn}) additionally have the temperature as function argument, which is set to a default value if a isothermal model is used.
Finally, the functions defining the type of the capillary pressure function and the relative permeability functions have to be considered. In line \ref{tutorial-decoupled:flags} the function \texttt{relPermFlag()} is defined. This function returns a flag indicating the type of function which is used depending on the position. This could be a linear function, a \textit{Brooks-Corey} function, a \textit{van Genuchten} function, etc. The flags that can be chosen as return parameter are defined in the base soil class \texttt{Matrix2p} in the file \texttt{property\_baseclasses.hh}. The parameters used in the chosen function type can be defined in the function \texttt{paramRelPerm} (line \ref{tutorial-decoupled:parameters}). As can be seen in listing \ref{tutorial-deoucpled:soilpropertiesfile}, e.g. linear capillary pressure and relative permeability functions require a vector of two arguments, one defining the minimum and one defining the maximum capillary pressure. The parameters can again be defined depending on the position in the domain an on temperature.
\subsection{The definition of boundary and initial conditions and source or sink terms}\label{tutorial-decoupled:description-bc-ic}
Boundary and initial conditions are defined in a so-called problem class. The problem class of this tutorial has the name \texttt{TutorialProblemDecoupled} and is defined in the file \texttt{tutorialproblem\_decoupled.hh} which can be found in the directory \texttt{/test/tutorial}. Listing \ref{tutorial-deoucpled:problemfile} shows the class \texttt{TutorialProblemDecoupled}. As can be seen it is derived from the problem base class \texttt{FractionalFlowProblem} (line \ref{tutorial-decoupled:tutorialproblem}) which is defined in the file \texttt{fractionalflowproblem.hh} in the directory \texttt{/dune-mux/dumux/fractionalflow}.
\begin{lst}[File dune-mux/test/tutorial/tutorialproblem\_decoupled.hh]\label{tutorial-deoucpled:problemfile} \mbox{}
\lstinputlisting[basicstyle=\ttfamily\scriptsize,numbers=left,
numberstyle=\tiny, numbersep=5pt]{../../test/tutorial/tutorialproblem_decoupled.hh}
\end{lst}
Listing \ref{tutorial-decoupled:tutorialproblem}) includes five types of functions. The type of each function can be identified by the first letter and the first part respectively of its name. Function names of functions returning
\begin{itemize}
\item a source or sink term start with a \textbf{q},
\item a boundary condition type start with \textbf{bctype},
\item a \textit{Dirichlet} boundary condition start with a \textbf{g},
\item a \textit{Neumann} boundary condition start with a \textbf{J} and
\item a initial condition start with \textbf{init}.
\end{itemize}
The second part of the function name indicates if the return value is used for the pressure equation (\textbf{Press}) or for the saturation equation (\textbf{Sat}).
All different function types have to be called with three different arguments. The first one (\texttt{x}) is a vector including the global coordinates of the current entity (can be an element, vertex, etc.), the second one (\texttt{e}) is the entity itself and the third one is a vector including the local coordinates of the current entity. Thus, the return of the functions, which can be a boundary value, an initial value, a source/sink, etc. , can be defined depending on the position in the domain.
The first function defined in the problem class \texttt{TutorialProblemDecoupled} is the function \texttt{qPress} (line \ref{tutorial-decoupled:qpress}). It returns a source or a sink term for the pressure equation.
In lines \ref{tutorial-decoupled:bctypepress} and \ref{tutorial-decoupled:bctypesat} the functions returning the boundary condition type are defined. Flags of type \texttt{Dune::BoundaryConditions::Flags} have to be used as return value of these functions. The flags that can be chosen are defined in the file \texttt{boundaryconditions.hh} in the directory \texttt{/dune-disc/disc/operators}.
In lines \ref{tutorial-decoupled:gpress} and \ref{tutorial-decoupled:gsat} the functions returning the \textit{Dirichlet} boundary conditions and in line \ref{tutorial-decoupled:jpress} a function returning the \textit{Neumann} boundary conditions are defined.
Finally, the function \texttt{initSat} is defined in line \ref{tutorial-decoupled:initsat}. This function returns the initial saturation distribution.
\subsection{Exercise}

View File

@ -1,5 +1,5 @@
\chapter[Tutorial]{Tutorial}
In DuMu$^\text{x}$ two sorts of models are implemented: Fully coupled models, and decoupled models. In the fully coupled models a flow system is described by a system of strongly coupled equations which can be mass balance equations, balance equations of components, energy balance equations, etc. In contrast a decoupled model consists of a pressure equation which is decoupled or only weakly coupled to a saturation equation, concentration equations, energy balance equations, etc.
In \Dumux two sorts of models are implemented: Fully coupled models, and decoupled models. In the fully coupled models a flow system is described by a system of strongly coupled equations which can be mass balance equations, balance equations of components, energy balance equations, etc. In contrast a decoupled model consists of a pressure equation which is decoupled or only weakly coupled to a saturation equation, concentration equations, energy balance equations, etc.
Different kinds of both coupled and decoupled models can be isothermal two phase models, isothemal two phase two component models, non-isothermal twophase model, non-isothermal two phase two component models, etc.