mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-12-28 18:21:00 -06:00
84becd65d2
there was no interest in using them and the maintainance burden grew pretty large as the Dumux and eWoms code-bases continued to diverge.
125 lines
5.7 KiB
TeX
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:
|