mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-11-22 09:16:27 -06:00
handbook: sime proof reading of the fluid framework chapter, fixes to minor LaTeX issues
there are some dangling references in the decoupled tutorial, but AFAIK this will receive some love by Benjamin before the release.
This commit is contained in:
parent
b2a873fc10
commit
e15802f2f7
@ -610,6 +610,17 @@
|
||||
number = {12}
|
||||
}
|
||||
|
||||
@ARTICLE{LHHW2011,
|
||||
author = {A. Lauser and C. Hager and R. Helmig and B. Wohlmuth},
|
||||
title = {A new approach for phase transitions in miscible multi-phase flow in porous media},
|
||||
journal = {Advances in Water Resources},
|
||||
year = {2011},
|
||||
pages = {957--966},
|
||||
volume = {34},
|
||||
number = {8}
|
||||
}
|
||||
|
||||
|
||||
@BOOK{A3:leveque:1998,
|
||||
title = {Numerical Methods for Conservation Laws},
|
||||
publisher = {Birkh\"auser Verlag, Basel Boston, Berlin},
|
||||
@ -777,7 +788,7 @@
|
||||
year = {1997}
|
||||
}
|
||||
|
||||
@BOOK{A3:reid:1987,
|
||||
@BOOK{reid1987,
|
||||
title = {The Properties of Gases and Liquids},
|
||||
publisher = {McGraw-Hill Inc.},
|
||||
year = {1987},
|
||||
@ -817,6 +828,14 @@
|
||||
key = {Spa69}
|
||||
}
|
||||
|
||||
@ARTICLE{SPE5,
|
||||
author = {J. E. Killough and C. A. Kossack},
|
||||
title = {Fifth Comparative Solution Project: Evaluation of Miscible Flood Simulators},
|
||||
journal = {Society of Petroleum Engineers},
|
||||
year = {1987},
|
||||
volume = {SPE 16000}
|
||||
}
|
||||
|
||||
@BOOK{A3:Stauffer:1984,
|
||||
title = {Introduction to Percolation Theory},
|
||||
publisher = {Taylor \& Francis},
|
||||
|
@ -1,4 +1,4 @@
|
||||
\documentclass[11pt,a4paper,headinclude,footinclude,DIV16,normalheadings]{scrreprt}
|
||||
\documentclass[11pt,a4paper,headinclude,footinclude,DIV16]{scrreprt}
|
||||
\usepackage[automark]{scrpage2}
|
||||
\usepackage[ansinew]{inputenc}
|
||||
\usepackage{amsmath}
|
||||
@ -161,3 +161,8 @@ Universit\"at Stuttgart, Paffenwaldring 61, D-70569 Stuttgart, Germany}\\
|
||||
\bibliography{dumux-handbook}
|
||||
\printindex
|
||||
\end{document}
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: "dumux-handbook"
|
||||
%%% End:
|
||||
|
@ -1,61 +1,63 @@
|
||||
\chapter{The \Dumux Fluid Framework}
|
||||
\label{sec:fluidframework}
|
||||
|
||||
This chapter discusses to the \Dumux fluid framework. \Dumux users who
|
||||
This chapter discusses the \Dumux fluid framework. \Dumux users who
|
||||
do not want to write new models and who do not need new fluid
|
||||
configurations may skip this chapter.
|
||||
|
||||
In the chapter, a high level overview over the the principle ideas of
|
||||
the concepts is given, then a few implementation details follow.
|
||||
In the chapter, a high level overview over the the principle concepts
|
||||
is provided first, then some implementation details follow.
|
||||
|
||||
\section{Overview of the Fluid Framework}
|
||||
|
||||
The \Dumux fluid framework currently featurs the following concepts
|
||||
The \Dumux fluid framework currently features the following concepts
|
||||
(listed roughly in their order of importance):
|
||||
|
||||
\begin{description}
|
||||
\item[Fluid state:] Fluid states are responsible for representing the
|
||||
complete thermodynamic configuration of a system. A fluid state
|
||||
always provides access methods to {\bf all} thermodynamic
|
||||
quantities, but the concept of a does not mandate what assumptions
|
||||
are made to store these thermodynamic quantities. What fluid states
|
||||
do {\bf not} do is to make sure that the thermodynamic state which
|
||||
they represent is physically possible.
|
||||
complete thermodynamic configuration of a system at a given spatial
|
||||
an temporal position. A fluid state always provides access methods
|
||||
to {\bf all} thermodynamic quantities, but the concept of a does not
|
||||
mandate what assumptions are made to store these thermodynamic
|
||||
quantities. What fluid states also do {\bf not} do is to make sure
|
||||
that the thermodynamic state which they represent is physically
|
||||
possible.
|
||||
\item[Fluid system:] Fluid systems express the thermodynamic {\bf
|
||||
relations}\footnote{Strictly speaking, these relations are
|
||||
functions, mathematically.} between quantities. Since functions do
|
||||
not exhibit any internal state, all fluid systems are state-less
|
||||
classes, i.e. all member functions are \texttt{static}. The
|
||||
thermodynamic state is captured by a fluid state!
|
||||
\item[Parameter cache:] Since fluid systems sometimes require
|
||||
computationally expensive parameters for multiple relations, these
|
||||
not exhibit any internal state, fluid systems are stateless classes,
|
||||
i.e. all member functions are \texttt{static}. This is a conscious
|
||||
decision since the thermodynamic state of the system is expressed by
|
||||
a fluid state!
|
||||
\item[Parameter cache:] Fluid systems sometimes require
|
||||
computationally expensive parameters for multiple relations. Such
|
||||
parameters can be cached using a so-called parameter
|
||||
cache. Parameter cache objects are specfic for each fluid system but
|
||||
they must provide a common interface to specify which quantities
|
||||
changed since the last invocation.
|
||||
cache. Parameter cache objects are specific for each fluid system
|
||||
but they must provide a common interface to update the internal
|
||||
parameters depending on the quantities which changed since the last
|
||||
update.
|
||||
\item[Constraint solver:] Constraint solvers are auxiliary tools to
|
||||
make sure that a fluid state adheres to some thermodynamic
|
||||
constraints. All constraint solvers specify a well defined set of
|
||||
input variables make sure that the resulting fluid state is
|
||||
consistent with a set of well-defined thermodynamic equations. See
|
||||
section \ref{sec:constraint_solvers} for a detailed description of
|
||||
the constraint solvers which are currently available in \Dumux.
|
||||
consistent with a given set of thermodynamic equations. See section
|
||||
\ref{sec:constraint_solvers} for a detailed description of the
|
||||
constraint solvers which are currently available in \Dumux.
|
||||
\item[Equation of state:] Equations of state (EOS) are auxiliary
|
||||
classes which provide relations between a fluid phase's temperature,
|
||||
pressure and density. Since these classes are only used internally
|
||||
in the fluid systems, the classes for a EOS are ad-hoc and there is
|
||||
currently no common interface for them.
|
||||
in fluid systems, their programming intereface is currently ad-hoc.
|
||||
\item[Component:] Components are fluid systems which provide the
|
||||
thermodynamic relations for the liquid and gas phase of a single
|
||||
chemical species or a fixed mixture of species. Their main purpose
|
||||
is to provide a convenient way to access these quantities from
|
||||
full-fledged fluid systems, but they are not supposed to be used by
|
||||
models directly.
|
||||
full-fledged fluid systems. Components are not supposed to be used
|
||||
by models directly.
|
||||
\item[Binary coefficient:] Binary coefficients express the relations
|
||||
of a mixture of two components. Typical binary coefficients are
|
||||
\textsc{Henry} coefficients or binary molecular diffusion
|
||||
coefficients. So far, the programming interface for accessing binary
|
||||
coefficients has not been standardized.
|
||||
coefficients has not been standardized in \Dumux.
|
||||
\end{description}
|
||||
|
||||
\section{Fluid States}
|
||||
@ -99,7 +101,7 @@ Also, {\bf all} fluid states {\bf must} provide the following methods:
|
||||
$\overline M_\alpha$ is the mean molar mass of a molecule of phase
|
||||
$\alpha$.
|
||||
\item[averageMolarMass():] Returns $\overline M_\alpha$, the
|
||||
mean molar mass of a molecule of phase $\alpha$. For a mixure of $N
|
||||
mean molar mass of a molecule of phase $\alpha$. For a mixture of $N
|
||||
> 0$ components, $\overline M_\alpha$ is defined as
|
||||
\[
|
||||
\overline M_\alpha = \sum_{\kappa=1}^{N} x^\kappa_\alpha M^\kappa
|
||||
@ -124,11 +126,11 @@ Also, {\bf all} fluid states {\bf must} provide the following methods:
|
||||
\[
|
||||
f_\alpha^\kappa := \Phi^\kappa_\alpha x^\kappa_\alpha p_\alpha \;,
|
||||
\]
|
||||
where $\Phi^\kappa_\alpha$ is the {\em fugacity coefficient}. The
|
||||
physical meaning of fugacity becomes clear from the equation
|
||||
where $\Phi^\kappa_\alpha$ is the {\em fugacity
|
||||
coefficient}~\cite{reid1987}. The physical meaning of
|
||||
fugacity becomes clear from the equation
|
||||
\[
|
||||
f_\alpha^\kappa = p_\alpha \exp\left\{\frac{\zeta^\kappa_\alpha}{R T_\alpha} \right\} \;,
|
||||
% TODO: cite
|
||||
\]
|
||||
where $\zeta^\kappa_\alpha$ represents the $\kappa$'s chemical
|
||||
potential in phase $\alpha$, $R$ stands for the
|
||||
@ -161,8 +163,8 @@ Currently, the following fluid states are available in \Dumux:
|
||||
fugacity coefficients, as well as all phase temperatures, pressures,
|
||||
saturations and enthalpies.
|
||||
\item[CompositionalFluidState:] The
|
||||
\texttt{NonEquilibriumFluidState} with the difference
|
||||
\texttt{CompositionalFluidState} is similar to the difference that
|
||||
\texttt{Non\-Equilibrium\-Fluid\-State} with the difference
|
||||
\texttt{Compositional\-Fluid\-State} is similar to the difference that
|
||||
is assumes thermodynamic equilibrium. In the context of multi-phase
|
||||
flow in porous media, this means that only a single temperature
|
||||
needs to be stored.
|
||||
@ -208,7 +210,7 @@ state, though. Parameter cache objects must at least provide the
|
||||
following update methods
|
||||
\begin{description}
|
||||
\item[updateAll(fluidState, except):] Update all cached quantities in
|
||||
all phases. The \texttt{except} argument contains a bitfield of the
|
||||
all phases. The \texttt{except} argument contains a bit field of the
|
||||
quantities which have not changed since the last call to a
|
||||
\texttt{update()} method.
|
||||
\item[updateAllPresures(fluidState):]
|
||||
@ -219,7 +221,7 @@ following update methods
|
||||
all phases.
|
||||
\item[updatePhase(fluidState, phaseIdx, except):] Update all cached
|
||||
quantities for a given phase. The quantities specified by the
|
||||
\texttt{except} bitfield have not been modified since the last
|
||||
\texttt{except} bit field have not been modified since the last
|
||||
call to an \texttt{update()} method.
|
||||
\item[updateTemperature(fluidState, phaseIdx):] Update all cached
|
||||
quantities which depend on the temperature of a given phase.
|
||||
@ -254,7 +256,7 @@ methods:
|
||||
\item[numPhases:] The number of considered fluid phases.
|
||||
\item[numComponents:] The number of considered chemical (pseudo-) species.
|
||||
\item[init():] Initialize the fluid system. This is usually
|
||||
used tabulated to tabulate some quantites
|
||||
used tabulated to tabulate some quantities
|
||||
\item[phaseName():] Given the index of a fluid phase, return a
|
||||
human-readable string as its name.
|
||||
\item[componentName():] Given the index of a component,
|
||||
@ -349,21 +351,21 @@ Currently, the following fluid states are available in \Dumux:
|
||||
\item[Dumux::FluidSystems::TwoPImmiscible:] A two-phase fluid
|
||||
system featuring which assumes immiscibility of the fluid
|
||||
phases. The fluid phases are thus specified by means of their
|
||||
constituting components. This fluid system is intented to be used
|
||||
constituting components. This fluid system is intended to be used
|
||||
with models that assume immiscibility.
|
||||
\item[Dumux::FluidSystems::H2ON2:] A two-phase fluid system
|
||||
featuring the gas and liquid phases and destilled water ($H_2O$) and
|
||||
featuring the gas and liquid phases and distilled water ($H_2O$) and
|
||||
pure molecular Nitrogen ($N_2$) as components.
|
||||
\item[Dumux::FluidSystems::H2OAir:] A two-phase fluid system
|
||||
featuring the gas and liquid phases and destilled water ($H_2O$) and
|
||||
featuring the gas and liquid phases and distilled water ($H_2O$) and
|
||||
air (Pseudo component composed of $79\%\;N_2$, $20\%\;O_2$ and
|
||||
$1\%\;Ar$) as components.
|
||||
\item[Dumux::FluidSystems::H2OAirMesitylene:] A three-phase fluid
|
||||
system featuring the gas, NAPL and water phases and destilled water
|
||||
system featuring the gas, NAPL and water phases and distilled water
|
||||
($H_2O$) and air and Mesitylene ($C_6H_3(CH_3)_3$) as components. This fluid
|
||||
system assumes all phases to be ideal mixtures.
|
||||
\item[Dumux::FluidSystems::H2OAirXylene:] A three-phase fluid
|
||||
system featuring the gas, NAPL and water phases and destilled water
|
||||
system featuring the gas, NAPL and water phases and distilled water
|
||||
($H_2O$) and air and Xylene ($C_8H_{10}$) as components. This fluid
|
||||
system assumes all phases to be ideal mixtures.
|
||||
\item[Dumux::FluidSystems::Spe5:] A three-phase fluid system
|
||||
@ -375,7 +377,7 @@ Currently, the following fluid states are available in \Dumux:
|
||||
phases a \textsc{Peng}-\textsc{Robinson} equation of state with
|
||||
slightly modified parameters is used. This fluid system is highly
|
||||
non-linear, and the gas and oil phases can also not be considered as
|
||||
ideal mixtures. % TODO: citation
|
||||
ideal mixtures\cite{SPE5}.
|
||||
\end{description}
|
||||
|
||||
\section{Constraint Solvers}
|
||||
@ -397,7 +399,7 @@ sharing this code between models makes a lot of sense. Currently,
|
||||
\]
|
||||
where ${f^\kappa}$, $T_\alpha$ and $p_\alpha$ are fixed values.
|
||||
\item[ComputeFromReferencePhase:] This solver brings all
|
||||
fluid phases into thermodynmic equilibrium with a reference phase
|
||||
fluid phases into thermodynamic equilibrium with a reference phase
|
||||
$\beta$, assuming that all phase temperatures and saturations have
|
||||
already been set. The constraints used by this solver are thus
|
||||
\begin{eqnarray*}
|
||||
@ -440,9 +442,10 @@ sharing this code between models makes a lot of sense. Currently,
|
||||
\[
|
||||
c^\kappa_{tot} = sum_{\alpha=1}^M \rho_{mol,\alpha} x_\alpha^\kappa = const
|
||||
\]
|
||||
\item And finally $M$ model constraints. This solver uses NCP constraints: % as suggested in \cite{TODO}
|
||||
\item And finally $M$ model constraints. This solver uses NCP
|
||||
constraints as proposed in~\cite{LHHW2011}:
|
||||
\[
|
||||
0 = \mathrm{min}\{\saturation_\alpha, 1 - \sum_{\kappa=1}^N x_\alpha^\kappa}
|
||||
0 = \mathrm{min}\{\saturation_\alpha, 1 - \sum_{\kappa=1}^N x_\alpha^\kappa\}
|
||||
\]
|
||||
\end{itemize}
|
||||
|
||||
|
@ -10,7 +10,7 @@ The process of solving a problem using \Dumux can be roughly divided into four p
|
||||
|
||||
The problem being solved in this tutorial is illustrated in Figure \ref{tutorial-coupled:problemfigure}. A rectangular domain with no flow boundaries on the top and on the bottom, which is initially saturated with oil, is considered. Water infiltrates from the left side into the domain. Gravity effects are neglected.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{figure}[ht]
|
||||
\psfrag{x}{x}
|
||||
\psfrag{y}{y}
|
||||
\psfrag{no flow}{no flow}
|
||||
@ -350,7 +350,7 @@ of the linear law and the respective \texttt{set}-functions can be found
|
||||
Set up a model domain with the soil properties given in Figure
|
||||
\ref{tutorial-coupled:exercise1_d}. Adjust the boundary conditions
|
||||
so that water is again flowing from the left to the right of the
|
||||
\begin{figure}[h]
|
||||
\begin{figure}[ht]
|
||||
\psfrag{K1 =}{K $= 10^{-8}\text{ m}^2$}
|
||||
\psfrag{phi1 =}{$\phi = 0.15$}
|
||||
\psfrag{K2 =}{\textcolor{white}{K $= 10^{-9}\text{ m}^2$}}
|
||||
@ -399,7 +399,7 @@ Now include your new problem file in the main file and replace the
|
||||
compile the program.
|
||||
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{figure}[ht]
|
||||
\psfrag{K1}{K $= 10^{-7}\text{ m}^2$}
|
||||
\psfrag{phi1}{$\phi = 0.2$}
|
||||
\psfrag{Lin}{Brooks-Corey Law}
|
||||
@ -419,7 +419,7 @@ compile the program.
|
||||
\caption{Set-up of the model domain and the soil parameters}\label{tutorial-coupled:ex2_Domain}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{figure}[ht]
|
||||
\psfrag{pw}{$p_w = 5 \times 10^5$ [\text{Pa}]}
|
||||
\psfrag{S}{$S_n = 1.0$}
|
||||
\psfrag{qw}{$q_w = 2 \times 10^{-4}$ [kg/$\text{m}^2$s]}
|
||||
|
@ -22,7 +22,7 @@ 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 are neglected.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{figure}[ht]
|
||||
\psfrag{x}{x}
|
||||
\psfrag{y}{y}
|
||||
\psfrag{no flow}{no flow}
|
||||
@ -226,7 +226,7 @@ Please reverse the changes of this example, as we still use bulk phases and henc
|
||||
|
||||
\item \textbf{Heterogeneities} \\
|
||||
Set up a model domain with the soil properties given in Figure \ref{tutorial-deoucpled:exercise1_d}. Adjust the boundary conditions so that water is again flowing from left to right.
|
||||
\begin{figure}[h]
|
||||
\begin{figure}[ht]
|
||||
\psfrag{K1 =}{K $= 10^{-8}\text{ m}^2$}
|
||||
\psfrag{phi1 =}{$\phi = 0.15$}
|
||||
\psfrag{K2 =}{\textcolor{white}{K $= 10^{-9}\text{ m}^2$}}
|
||||
@ -274,7 +274,7 @@ Now include your new problem file in the main file and replace the
|
||||
compile the program.
|
||||
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{figure}[ht]
|
||||
\psfrag{K1}{K $= 10^{-7}\text{ m}^2$}
|
||||
\psfrag{phi1}{$\phi = 0.2$}
|
||||
\psfrag{Lin}{Brooks Corey Law}
|
||||
@ -294,7 +294,7 @@ compile the program.
|
||||
\caption{Set-up of the model domain and the soil parameters}\label{tutorial-decoupled:ex2_Domain}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{figure}[ht]
|
||||
\psfrag{pw}{$p_w = 2 \times 10^5$ [\text{Pa}]}
|
||||
\psfrag{S}{$S_w = 0.0$}
|
||||
\psfrag{qw}{$q_w = 3 \times 10^{-4}$ [kg/$\text{m}^2$s]}
|
||||
|
@ -8,3 +8,8 @@ In section \ref{box} a short introduction about the box method is given. The box
|
||||
\input{tutorial-coupled}
|
||||
\input{tutorial-decoupled}
|
||||
%\input{tutorial-newmodel}
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: "dumux-handbook"
|
||||
%%% End:
|
||||
|
Loading…
Reference in New Issue
Block a user