Mainpage.dox 16.6 KB
Newer Older
1
/*!
2
3
    @mainpage LifeV - A Parallel Finite Element Library

4
    \section introduction Introduction
5

Tiziano Passerini's avatar
Tiziano Passerini committed
6
7
LifeV (to be read Life Five) is an open source library for the numerical solution of
partial differential equations with the finite element method.
8
The choice of the finite element method is motivated by its rigorous mathematical background,
9
10
with a sound control of the accuracy, coupled with excellent flexibility in managing
complex geometries.
11

12
13
LifeV is written in C++ and is entirely coded with an Object Oriented approach
and advanced programming features. The project started in 1999 from the collaboration
Tiziano Passerini's avatar
Tiziano Passerini committed
14
15
of the Department of Mathematics at EPFL, Lausanne, Switzerland, of the
Department of Mathematics at Politecnico di Milano, Italy and the INRIA Rocquencourt, France,
16
under the supervision of Alfio Quarteroni.
Tiziano Passerini's avatar
Tiziano Passerini committed
17
18
Nowadays, LifeV is concurrently  developed and maintained by CMCS@EPFL Lausanne
(group coordinator), MOX@Politecnico di Milano, REO and ESTIME@INRIA and
19
20
 the E(CM)2 group at the Department of Mathematics and Computer Science at Emory University,
 Atlanta (GA), USA.
21

22
23
24
As for now, the library includes solvers for incompressible fluid dynamics,
(linear) structural problems, transport in porous media, fluid-structure interaction,
electrical conduction in the heart. Even though this library is a research code oriented to
Tiziano Passerini's avatar
Tiziano Passerini committed
25
the development and test of new numerical methods and algorithms,
26
it is intended to be an effective tool for solving complex "real-life"
Tiziano Passerini's avatar
Tiziano Passerini committed
27
engineering problems. One of the main field of applications (although not the only one)
28
is cardiovascular mathematics.
29

30
The code is distributed under the LGPL license and is downloadable on <a href="http://cmcsforge.epfl.ch">CMCSFORGE</a>. <BR>
31
There are two distributed versions of LifeV, one is parallel, for complex three dimensional
Tiziano Passerini's avatar
Tiziano Passerini committed
32
engineering problems, the other is serial,
33
for one, two and three dimensional problems (prototyping, testing). These pages
34
review the parallel version.<BR>
35
For other details, see the <a href="http://www.lifev.org">LifeV web site</a>.
36
37


38
    <BR>
39
40
41
    \section overview Overview of LifeV
    In the following we briefly describe the main features of LifeV.

42

43
    \subsection boundaryConditions Boundary Conditions
Tiziano Passerini's avatar
Tiziano Passerini committed
44
    LifeV provides classes and methods to prescribe the most common boundary conditions
rruiz's avatar
rruiz committed
45
    (<i>Dirichlet, Neumann, Robin</i>).
46
47
48
    Normal and tangential boundary conditions are also allowed for vectorial (3D) fields.
    In addition, a few kinds of boundary conditions specific for flow problems are available.
    Boundary conditions are prescribed by modifying the system matrix and the right-hand side after the assembling phase.
rruiz's avatar
rruiz committed
49
    The parameters of the boundary condition can be defined as functions of the space and time, or as finite element fields.
50
    The regions where to apply boundary conditions are determined by markers associated to the boundary faces of the mesh.
51
52
53
54
    Boundary conditions settings are stored in the \c BCHandler class (\c BCHandler.hpp), whereas the file
    \c BCManage.hpp contains the routines used to prescribe the conditions.
    The \c BCInterface class (\c BCInterface.hpp) contains tools to set the boundary conditions directly from data files.

rruiz's avatar
rruiz committed
55

56
57
58


    \subsection timeDiscretization Time discretization
59
    LifeV provides the class \c TimeAdvance to integrate in time a generic non-linear PDE
60
    with derivates in time of order <i>m = 1, 2</i>. <BR>
pozzoli's avatar
pozzoli committed
61
62
    This class is a virtual class, that defines the main features of a generic time advancing scheme:
    <ul>
63
64
65
66
67
68
    <li> it stores the unknown and its first, and second if <i>m=2</i>, derivatives;</li>
    <li> it provides methods for the extrapolation (in time) of the unknown, and of its first derivative
         if <i> m=2 </i>;</li>
    <li> it computes the right-hand side associated to the discretization of the first derivative,
         and of the second derivative if <i>m=2</i>;</li>
    <li> it provides methods to update the states of the stored unknown.</li>
pozzoli's avatar
pozzoli committed
69
70
    </ul>

71
    The needed coefficients, variables and methods are specified in derived classes.<BR>
pozzoli's avatar
pozzoli committed
72
73
    LifeV provides two different implementations, namely:
    <ul>
74
      <li><i>Backward Differentiation Formulae (BDF)</i> schemes (\c TimeAdvanceBDF.hpp) of order
Tiziano Passerini's avatar
Tiziano Passerini committed
75
           <i> p </i> (with <i> p<6</i>)  for <i>m=1,2</i>;</li>
76
      <li> the family of methods obtained from the <i>Newmark</i> schemes for
Tiziano Passerini's avatar
Tiziano Passerini committed
77
           second order problems (<i> m=2</i>), and the <i> theta-methods </i> for the first order
78
           problems (<i>m=1</i>) (\c TimeAdvanceNewmark.hpp).</li>
Tiziano Passerini's avatar
Tiziano Passerini committed
79
    </ul>
pozzoli's avatar
pozzoli committed
80

81

82
    \subsection spaceDiscretization Space discretization
rruiz's avatar
rruiz committed
83

84
85
86
87
88
89
    LifeV provides classes to perform easily and quickly the assembly of the most common problems
    (e.g. advection-diffusion-reaction, Stokes and Navier-Stokes). These classes
    are called Assemblers and can be considered as building blocks that can be combined at will.
    The user has moreover access to lower level structures and instructions in
    order to provide the maximal flexibility.

90
91

    \subsection algebraicSolver Algebraic solvers and preconditioners
92
93
94
95
96
97
    Linear systems are solved using the preconditioned GMRES method. LifeV provides the following preconditioners:
    <ul>
        <li>Additive Schwarz;
        <li>Multilevel Schwarz;
        <li>Multigrid preconditioner;
    </ul>
98
99
    It is also possible to develop new preconditioners using the abstract class \c Preconditioner (\c Preconditioner.hpp).

100
101
102
103
104

    \subsection physicalSolver Physical solvers
    In the following we briefly mention all the available physical solvers.

    <ul>
105
106
107
108
        <li> <b>Advection Diffusion Reaction solver:</b> this solver (\c ADRAssembler.hpp) deals with the simplest PDE usually studied, but
            also maybe the most widely used. Indeed, this is the PDE that governs phenomena where diffusion, transport
            and reaction are relevant. This solver is used to solve this kind of problems in a simple and
            efficient manner. It can also deal with time-dependent PDEs.
109
110


111
        <li> <b>Darcy solver:</b> phenomenological law which describes the flow of a fluid through a porous medium.
112
            The implementation of the solver (\c DarcySolver.hpp) uses the dual-mixed-hybrid formulation, entailing good approximation of the
113
114
            velocity field as well as of the pressure field. The global system in saddle point form is recast to an equivalent
            positive definite system, using the hybridization and static condensation procedure. The finite element
fumagalli's avatar
fumagalli committed
115
            spaces used are piecewise constant for the pressure and lowest order Raviart-Thomas for the velocity.
116
117


118
        <li> <b>1D Fluid-Structure Interaction solver:</b> a solver for the Euler equations for blood flow is available (\c OneDFSISolver.hpp).
119
120
121
122
            It is based on a second order Taylor-Galerkin scheme, featuring excellent control of the dispersion error.
            In its current implementation, it can be used to study the pressure pulse wave propagation in an artery,
            assuming that the blood behaves as a Newtonian fluid, while the arterial wall behaves as a linearly elastic
            or viscoelastic structure. The presence of tapering in the arterial geometry can also be taken into account.
123
124


125
        <li> <b>3D Fluid-Structure Interaction solver:</b> the FSI model consists of Navier-Stokes equations coupled with an elasticity equation by imposing the continuity of the velocity
paolo.crosetto's avatar
paolo.crosetto committed
126
127
128
        and of the forces at the interface.
        In LifeV both partitioned and monolithic FSI solver are implemented. For the formers the coupling obtained with separate fluid and structure
        solver iterations, while for the latters the fully coupled
129
130
131
        matrix is assembled and solved using a single "monolithic" solver (\c FSIMonolithic.hpp). Concerning the partitioned strategies the
        available choices are Dirichlet-Neumann and Robin-Neumann fixed--point algorithms, or the Newton algorithm applied to the
        "Dirichlet-Neumann" fixed--point formulation. Various monolithic solver variants are obtained depending on the way the
paolo.crosetto's avatar
paolo.crosetto committed
132
133
134
        various nonlinearities (due mainly to the convective term of the fluid equations and to the domain motion) are treated. The main difference is
        among the geometric explicit (GE), for which the geometry is extrapolated from the previous time steps, and the geometric implicit (GI).
        Many parallel preconditioners for the monolithic problem are available, featuring the splitting of the matrix into several factors.
135

136
        <li> <b>Heart electrophysiological solver:</b> both bidomain (\c HeartBidomainSolver.hpp) and monodomain (\c HeartMonodomainSolver.hpp) models are available as models for the electrophysiology behavior of cardiac tissue.
rruiz's avatar
rruiz committed
137
138
139
140
141
         These models consist on anisotropic reaction-diffusion equations governing the propagation of electrical potentials,
          coupled with a system of ODEs describing the physics of the cellular membrane and time evolution of ionic quantities.
          Several variants for membrane models are already present in the library: Luo-Rudy phase I, Rogers-McCulloch and
           Mitchell-Schaeffer models. The solver currently employs piecewise linear finite elements for all involved fields
            in the coupling.
142
143


144
        <li> <b>Venant-Kirchhoff solver:</b> the structural model available in LifeV
145
             is a linear elastic constitutive law. It is the linear approximation of the nonlinear St.
rruiz's avatar
rruiz committed
146
             Venant-Kirchhoff model.
147
             It is implemented in the \c VenantKirchhoffSolver class (\c VenantKirchhoffSolver.hpp). It can be used both for
148
149
             purely structural dynamics problems (traction of a cube) or for coupled or multiscale problems.
             In fact, it has been integrated in the FSI (both segregated and monolithic) and in the
Tiziano Passerini's avatar
Tiziano Passerini committed
150
             Multiscale frameworks. At the moment, in the LifeV developers community there is a big effort
151
             to implement a general interface (i.e. a general solver) for solving structural mechanics problems.
Tiziano Passerini's avatar
Tiziano Passerini committed
152
             In particular, the efforts are focused on the implementation of other material laws
153
             and to exploit the general interface in the FSI and Multiscale frameworks.
154
155
156
157
    </ul>



158

159
160
161
162
    \subsection tools Tools
    In the following we briefly describe some of the main tools inside the library.

    <ul>
163
        <li> <b>Importers and Exporters:</b> LifeV can input mesh files stored in some
Tiziano Passerini's avatar
Tiziano Passerini committed
164
165
166
        common formats encountered in this field: GMSH, Inria, Netgen, mesh++.
        LifeV is designed with large parallel simulations in mind, which are usually performed on
        high performance computing hardware.
167
        In many such cases, the low amount of memory per compute node requires a change in the workflow.
Tiziano Passerini's avatar
Tiziano Passerini committed
168
169
        LifeV allows to perform the mesh partitioning phase offline, on a workstation where memory
        isn't an issue and use this data later, during online simulations on modern supercomputers.
170
171
172
173
174
175
        For postprocessing, it's possible to save data in the following formats, using the common interface provided in \c Exporter.hpp:
        <ul>
            <li>Ensight (\c ExporterEnsight.hpp);
            <li>HDF5 (\c ExporterHDF5.hpp);
            <li>VTK (\c ExporterVTK.hpp).
        </ul>
176
        All of them are supported by ParaView, on which we rely for creating high quality visualizations.
177

178
        <li> <b>Grammar parser for algebraic expression:</b> the class \c Parser (\c Parser.hpp)provides a general
Tiziano Passerini's avatar
Tiziano Passerini committed
179
180
181
        interface to parse any simple algebraic function given as a string.
        This tool is based on \c Spirit which is a set of C++ libraries for parsing and output
        generation implemented as Domain Specific Embedded Languages (DSEL)
182
        using Expression Templates and Template Meta-Programming.
183
184
185
186
187
188
189
    </ul>






190
    <BR>
191
    \section license License
Tiziano Passerini's avatar
Tiziano Passerini committed
192
193
    LifeV is available for download under the terms of the <a href="http://www.gnu.org/copyleft/lesser.html">
    GNU Lesser General Public License</a>.
194
195
196



197
    <BR>
198
199
    \section downloads Downloads
    LifeV can be downloaded from the <a href="http://www.lifev.org/downloads">LifeV downloads page</a>.
Tiziano Passerini's avatar
Tiziano Passerini committed
200
201
    For additional documentation about the LifeV architecture please check the
    <a href="http://www.lifev.org/documentation">LifeV documentation page</a>.
202
203


204
    <BR>
205
206
207
208
209
210
211
212
213
214
215
216
    \section email Mailing lists
    We recommend that users and developers subscribe to the following mailing lists as appropriate.
    <ul>
        <li><a href="http://groups.google.com/group/lifev-user">LifeV-Users Mailing List</a> -
        Discussion forum for users of %LifeV. (Recommended)
        <li><a href="http://groups.google.com/group/lifev-dev">LifeV-Developers Mailing List</a> -
        Discussion forum for %LifeV developers. (Developers)
        <li><a href="http://groups.google.com/group/lifev-cvs">LifeV-Checkins Mailing List</a> -
        GIT Commit Messages (Active  Developers)
    </ul>


217
    <BR>
218
219
220
221
222
223
    \section contributors LifeV contributors
    LifeV is the joint collaboration between four institutions:
    <ul>
        <li> École Polytechnique Fédérale de Lausanne (CMCS), Switzerland;
        <li> Politecnico di Milano (MOX), Italy;
        <li> INRIA (REO, ESTIME), France;
Tiziano Passerini's avatar
Tiziano Passerini committed
224
        <li> Emory University (Math&CS), U.S.A.
225
226
    </ul>

227
    The following people are active developers:
228
229
    <ul>
        <li> Alessandro Melani, MOX - Politecnico di Milano
Tiziano Passerini's avatar
Tiziano Passerini committed
230
        <li> Alessandro Veneziani, Math&CS - Emory University
231
        <li> Alessio Fumagalli, MOX - Politecnico di Milano
Tiziano Passerini's avatar
Tiziano Passerini committed
232
        <li> Alexis Aposporidis, Math&CS - Emory University
233
234
        <li> Antonio Cervone, MOX - Politecnico di Milano
        <li> Claudia Colciago, CMCS - École Polytechnique Fédérale de Lausanne
235
        <li> Christian Vergara, MOX - Politecnico di Milano
236
237
        <li> Cristiano Malossi, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Gianmarco Mengaldo, MOX - Politecnico di Milano
238
        <li> Guido Iori, MOX - Politecnico di Milano
239
240
241
242
243
        <li> Gwenol Grandperrin, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Jean Bonnemain, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Laura Cattaneo, MOX - Politecnico di Milano
        <li> Luca Bertagna, MOX - Politecnico di Milano
        <li> Luca Formaggia, MOX - Politecnico di Milano
Tiziano Passerini's avatar
Tiziano Passerini committed
244
245
        <li> Lucia Mirabella, CFM Lab - Georgia Institute of Technology
        <li> Marta D'Elia, Math&CS - Emory University
246
        <li> Matteo Pozzoli, MOX - Politecnico di Milano
Tiziano Passerini's avatar
Tiziano Passerini committed
247
        <li> Mauro Perego, Scientific Computing - Florida State University
248
249
250
251
252
253
254
255
256
        <li> Michel Kern, ESTIME - INRIA
        <li> Nur Fadel, MOX - Politecnico di Milano
        <li> Paolo Crosetto, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Radu Popescu, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Ricardo Ruiz Baier, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Samuel Quinodoz, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Simone Deparis, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Simone Pezzuto, MOX - Politecnico di Milano
        <li> Simone Rossi, CMCS - École Polytechnique Fédérale de Lausanne
Tiziano Passerini's avatar
Tiziano Passerini committed
257
        <li> Tiziano Passerini, Math&CS - Emory University
258
259
        <li> Toni Lassila, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Tricerri Paolo, CMCS - École Polytechnique Fédérale de Lausanne
Tiziano Passerini's avatar
Tiziano Passerini committed
260
        <li> Umberto Emanuele Villa, Math&CS - Emory University
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
    </ul>

    The following people are former developers:
    <ul>
        <li> Alexandra Moura
        <li> Andrea Manzoni, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Andreas Fischle
        <li> Carlo de Falco
        <li> Christoph Winkelmann, formerly at CMCS, École Polytechnique Fédérale de Lausanne
        <li> Christophe Prud'homme, formerly at CMCS, École Polytechnique Fédérale de Lausanne
        <li> Fabio Nobile, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Federico Bonelli
        <li> Gilles Fourestey, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Laura Iapichino, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Lorenzo Tamellini, MOX - Politecnico di Milano
        <li> Marco Discacciati, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Mariarita de Luca
        <li> Matteo Astorino, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Matteo Lesinigo, CMCS - École Polytechnique Fédérale de Lausanne
        <li> Nicola Parolini
        <li> Paolo Ferrandi, MOX - Politecnico di Milano
        <li> Sara Minisini, MOX - Politecnico di Milano
        <li> Simone Cassani
        <li> Susanna Carcano, MOX - Politecnico di Milano
Tiziano Passerini's avatar
Tiziano Passerini committed
285
        <li> Zhen Wang, Math&CS - Emory University
286
287
288
289
    </ul>



290
    <BR>
291
292
293
    \section questions For other questions and comments...
    Please visit the <a href="http://www.lifev.org">LifeV web site</a>.
 */