3 * Copyright (C) 2007 Technical University of Liberec. All rights reserved.
4 *
5 * Please make a following refer to Flow123d on your project site if you use the program for any purpose,
6 * especially for academic research:
7 * Flow123d, Research Centre: Advanced Remedial Technologies, Technical University of Liberec, Czech Republic
8 *
9 * This program is free software; you can redistribute it and/or modify it under the terms
10 * of the GNU General Public License version 3 as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
13 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 * See the GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along with this program; if not,
17 * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 021110-1307, USA.
18 *
19 *
20 * $Id$
21 * $Revision$
22 * $LastChangedBy$
23 * $LastChangedDate$
24 */
25
26
27/**
28 * @file main_doc.hh
29 * @mainpage
30 *
31 *
32 * <h1> Flow123d </h1>
33 *
34 * <h2>Purpose </h2>
35 * Flow123d is a simulator of underground water flow and transport processes.
36 * It is aimed in particular for large scale simulations and includes models for
37 * water flow in fully saturated porous medium, transport of several chemical substances, sorption of
38 * chemical substances into the rock matrix, and chemical reactions.
39 *
40 * <h2>Features </h2>
41 * <b> Complex domains </b> The main
42 * feature that distinguish it from other similar software is its capability to represent tiny dislocations
43 * in large scale domains as 2D and 1D objects and allows interaction of solution on domains of various dimensions.
44 *
45 * <b> Mixed-hybrid discretization of Darcy flow. </b> The water flow is driven by Darcy flow, this is basically steady state elliptic problem, but
46 * optionally one can consider compressibility of the water and surrounding rock. In the later case we solve a time dependent parabolic problem.
47 * For discretization of the elliptic or parabolic problem we use mixed-hybrid scheme of zero order using lowest order Raviart-Thomas base functions for
48 * discretization of the velocity field and piecewise constant base functions for the pressure and its traces on the interior mesh edges. Main advantage of the
49 * MH scheme is good approximation of the velocity field which is later used in the transport model. For the parabolic case we have implemented a lumping technique
50 * in order to prevent possible oscillations due to violation of the discrete maximum principle.
51 *
52 * <b> Advection </b> is modeled only by convection (diffusion/dispersion is in developement). We use simple Finite volume scheme with upwind and backward Euler
53 * for time discretization. Unfortunately for highly heterogeneous velocity field which is natural for preferential fracture flow, we have to satisfy CFL condition
54 * which bounds the time step to very small values. Advection module can also compute sorption and dual porosity model (substance exchange between mobile and
55 * immobile pores.
56 *
57 * <b> Reactions. </b> There are two modules for simulation of chemical reactions. SEMCHEM module can solve nonlinear differential equations rising form
58 * general multicompoent reactiong systems. On the other side this is very costly and is suitable only for small meshes. The second chemical module
59 * is fast but can cope only with linear reactions, i.e. decays.
60 *
61 * <b> Paralellism. </b> Both the water flow solver and transport solver can run in parallel on distributed memory systems. We use essentially PETSc and MPI libraries.
62 *
63 * <h2> Main program modules </h2>
64 *
65 * <b> @ref mesh_mod Mesh </b> module contains discretization of a multidimensional computational domain and
66 * geometrical coincidence of mesh elements.
67 *
68 * <b> @ref flow_mod "Darcy flow" </b> module with mixed-hybrid solver of linear flow equation.
69 *
70 * <b> @ref transport_mod "Transport" </b> module with model of chemical substances transport.
85 * Jan Březina - coordinator, parallelism, schur complements
86 *
87 * Otto Severýn - original multidimensional flow
88 *
89 * Milan Hokr - density driven flow
90 *
91 * Jiří Kopal - transport
92 *
93 * Jiří Hnídek - GMASH and VTK output classes, infrastructure
94 *
95 * Jiří Jeníček - JSON reader
96 *
97 * Lukáš Zedek - SEMCHEM interface, linear reactions
98 *
99 * Jakub Šístek - two level domain decomposition methods without overlap
100 *
101 * Dalibor Frydrich
102 *
103 * Jan Lisal
104 *
105 * Tomáš Bambuch - profiler class
106 *
107 * Michal Nekvasil - automatic builds and tests
108 */
109
110/**
111 * @defgroup system_mod System module
112 * System module contains general support classes for: debugging, error handling, profiling. There are also @ref Vector and @ref VectorId classes with
113 * their iterators.
114 *
115 * @defgroup io_mod Input, Output
116 * This module should contain most of inpout and output classes in particular readers and writers for particular file formats. In particular
117 * mesh reader, JSON reader, and output into GMSH and VTK data formats.
118 *
119 * @defgroup la_mod Linear Algebra
120 * This module should contain various classes for linear algebra calculations. For small vectors and matrices we would like to use Armadillo library,
121 * but meanwhile we have such functionality in @ref math_fce.cc Class @ref LinSys is meant as C++ wrapper for PETSC and possibly for
122 * Trilinos. Class @ref SchurComplement provides parallel computation of Schur complements using PETSC library.
123 *
124 * @defgroup mesh_mod Mesh
125 * This module should contain classes to maintain and access multidimensional mesh with information about coincidence between elements of the meshes.
126 * More general we can think about several meshes (even with same dimension) with information about coincidence.
127 *
128 * @defgroup transport_mod Advection
129 * This module is for advection model. Currently we have only Finite volume implementation without diffusion/dispersion.
130 *
131 * @defgroup flow_mod Darcy flow
132 * This module contains Mixed-Hybrid and Lumped mixed-hybird discretization of Darcy flow equation for steady and unsteady case. It also contains particular
133 * postprocessing functionality as interpolation into continuous finite element space.
134 *
135 * @defgroup reactions_mod Chemical Reactions and Decays