opm-simulators/doc/handbook/structure.tex
Andreas Lauser 84becd65d2 remove the code of the IMPET ("decoupled") models
there was no interest in using them and the maintainance burden grew
pretty large as the Dumux and eWoms code-bases continued to diverge.
2013-07-08 20:36:22 +02:00

125 lines
5.7 KiB
TeX

\chapter{Directory structure}
We briefly describe the directory structure of \eWoms in terms
of subdirectories, source files, and tests. For more details,
the Doxygen documentation should be considered.
\eWoms comes in form of a DUNE module \texttt{ewoms}.
It has a similar structure as other DUNE modules like \texttt{dune-grid}.
The following subdirectories are within the module's root directory,
from now on assumed to be \texttt{/}:
\begin{itemize}
\item \texttt{CMake}: the configuration options
for building \eWoms using CMake. See the file \texttt{INSTALL.cmake} in
the root directory of the \eWoms distribution for details. Of course,
it is also possible to use the DUNE buildsystem just like for the other
DUNE modules.
\item \texttt{doc}: contains the Doxygen documentation in \texttt{doxygen},
this handbook in \texttt{handbook}, and the \eWoms logo in various formats in
\texttt{logo}. The html documentation produced by Doxygen can be accessed as usual,
namely, by opening \texttt{doc/doxygen/html/index.html} with a web browser.
\item \texttt{ewoms}: the \eWoms source files. See Section \ref{sec:ewoms} for details.
\item \texttt{test}: tests for each numerical model and the property system.
See Section \ref{sec:test} for details.
\item \texttt{tutorial}: contains the tutorials described in Chapter \ref{chp:tutorial}.
\end{itemize}
\subsection{The \texttt{ewoms} directory}\label{sec:ewoms}
The directory \texttt{ewoms} contains the \eWoms source files. It consists of the following subdirectories (see Figure \ref{fig:ewoms-structure}):
\begin{itemize}
\item \texttt{boxmodels}: The fully implicit vertex-centered finite
volume (box) method. This directory features the following
sub-directories
\begin{itemize}
\item \texttt{common}: The infrastructural code shared by all box
models; For example it contains the file
\texttt{boxfvelementgeometry.hh} which is used by the box scheme to
construct the dual grid out of the primal one.
\item \texttt{modules}: This directory features parts which can be
re-used by multiple models, like a generic plug-in for the energy
equation, models for determining the filter velocity, or plugins
describing molecular diffusion.
\item Each of the other subdirectories contains
a physical numerical model which uses the box discretization.
\end{itemize}
\item \texttt{common}: General stuff like the \eWoms property system
and classes for managing time which are shared by the fully-implicit
and the semi-implicit models. For example it features the file
\texttt{start.hh} which provides the default way for starting a
simulation.
\item \texttt{io}: Additional classes that provide in-/output routines
like writing and reading restart files (often called 'checkpoint'
files) and for writing a series of VTK files.
\item \texttt{material}: Everything related to material parameters and
constitutive equations. For example, the properties of a pure
chemical substance (e.g. water) or pseudo substance (e.g. air) can
be found in the subdirectory \texttt{components} with the base class
\texttt{components/component.hh}. Fluid systems are located in the
sub-folder \texttt{fluidsystems}, while capillary pressure/relative
permeability laws are located in the sub-folder
\texttt{fluidmatrixinteractions}. Furthermore, the classes computing
binary coefficients like the Henry coefficient or binary diffusion
coefficients are held by the sub-folder \texttt{binarycoefficients}.
\item \texttt{nonlinear}: This folder contains an implementation of
the Newton-Raphson method for solving non-linear systems of
equations.
\item \texttt{linear}: This folder features code which is required to
parallelize the linear solvers, as well as back-ends for these
solvers. For example it contains classes to calculate an overlap
given the distributed matrix of the linear system, and provides
classes which use this overlap to provide overlapping matrices,
vectors, linear operators and scalar products.
\item \texttt{istl}: This folder contains a copy of slightly modified
linear solvers from the ISTL \Dune module. The reason why they where
copied is to provide linear solvers with better performance and
stability without being held back by the \Dune developers.
\item \texttt{parallel}: Contains some helper classes useful for
programming MPI parallel code. For example this folder contains a
simple MPI buffer class, and various commonly used \Dune
data-handles.
\end{itemize}
\subsection{The directory \texttt{test}}\label{sec:test}
The directory \texttt{test} contains at least one test/example for
each numerical model and for each important aspect of the common
\eWoms infrastructure. The directory \texttt{common} contains a test
for the property system. The sub-directory \texttt{implicit}
contains test applications for the fully-implicit models (where each
test is named according to the scheme \texttt{PROBLEMNAME\_MODDEL}).
Each subdirectory contains one or more program
files \texttt{*.cc} which contain the main function for the
test. Moreover, the problem definitions can be found in the
\texttt{*problem.hh} files. Simply executing the tests should either
run the full test or give a list of required command line
arguments. After test execution, VTK output files are generated by
most tests. For more detailed descriptions of the tests, the problem
definitions and their corresponding Doxygen documentation should be
considered.
\begin{landscape}
\begin{figure}[hbt]
\centering
\includegraphics[width=\linewidth, keepaspectratio]{EPS/ewoms_structure.eps}
\caption{
\label{fig:ewoms-structure}
Structure \texttt{ewoms} sub-directory of the \eWoms source tree.
}
\end{figure}
\end{landscape}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "ewoms-handbook"
%%% End: