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 is fast chemical module but can cope only with linear reactions. It allows to compute with different types of reactions: Radioactive decay,
58 * Sorption, First order reaction and Dual porosity.
59 *
60 * <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.
61 *
62 * <b> @ref assembly_process "Assembly Process" </b> All equations use effective assembly process. Detail description of individual steps and used classes.
63 *
64 * <h2> Main program modules </h2>
65 *
66 * <b> @ref input_mod "Input" </b> module defines possible formats and structures of input files and their readers.
67 *
68 * <b> @ref mesh_mod Mesh </b> module contains discretization of a multidimensional computational domain and
69 * geometrical coincidence of mesh elements.
70 *
71 * <b> @ref flow_mod "Darcy flow" </b> module with mixed-hybrid solver of linear flow equation.
72 *
73 * <b> @ref transport_mod "Transport" </b> module with model of chemical substances transport.
95 * David Flanderka - new assembly algorithm, bug fixes, technical improvements
96 *
97 * Pavel Exner - mesh intersections, tests, bug fixes
98 *
99 *
100 * Contributors
101 * ============
102 *
103 * Otto Severýn - first versions of multidimensional flow
104 *
105 * Milan Hokr - density driven flow
106 *
107 * Jan Hybš - profiler, Python formaters, infrastructure
108 *
109 * Jiří Kopal - FV transport
110 *
111 * Jiří Hnídek - GMESH and VTK output classes, infrastructure
112 *
113 * Jiří Jeníček - JSON reader
114 *
115 * Lukáš Zedek - projection algorithm for fast non-linear sorption, linear reactions
116 *
117 * Jakub Šístek - two level domain decomposition method without overlap
118 *
119 * Dalibor Frydrich
120 *
121 * Jan Lisal
122 *
123 * Tomáš Bambuch - profiler class
124 */
125
126/**
127 * @defgroup system_mod System module
128 * System module contains general support classes for: debugging, error handling, profiling. There are also @ref Vector and @ref VectorId classes with
129 * their iterators.
130 *
131 * @defgroup io_mod Output
132 * This module should contain most of output classes in particular writers for particular file formats. In particular output into GMSH and VTK data formats.
133 *
134 * @defgroup la_mod Linear Algebra
135 * This module should contain various classes for linear algebra calculations. For small vectors and matrices we would like to use Armadillo library,
136 * but meanwhile we have such functionality in @ref math_fce.cc Class @ref LinSys is meant as C++ wrapper for PETSC and possibly for
137 * Trilinos. Class @ref SchurComplement provides parallel computation of Schur complements using PETSC library.
138 *
139 * @defgroup mesh_mod Mesh
140 * This module should contain classes to maintain and access multidimensional mesh with information about coincidence between elements of the meshes.
141 * More general we can think about several meshes (even with same dimension) with information about coincidence.
142 *
143 * @defgroup transport_mod Advection
144 * This module is for advection model. Currently we have only Finite volume implementation without diffusion/dispersion.
145 *
146 * @defgroup flow_mod Darcy flow
147 * This module contains Mixed-Hybrid and Lumped mixed-hybird discretization of Darcy flow equation for steady and unsteady case. It also contains particular
148 * postprocessing functionality as interpolation into continuous finite element space.
149 *
150 * @defgroup reactions_mod Chemical Reactions and Decays