68 lines
3.7 KiB
Plaintext
68 lines
3.7 KiB
Plaintext
Finite Element Discretization Library
|
|
__
|
|
_ __ ___ / _| ___ _ __ ___
|
|
| '_ ` _ \ | |_ / _ \| '_ ` _ \
|
|
| | | | | || _|| __/| | | | | |
|
|
|_| |_| |_||_| \___||_| |_| |_|
|
|
|
|
http://mfem.org
|
|
|
|
MFEM is a modular parallel C++ library for finite element methods. Its goal is
|
|
to enable the research and development of scalable finite element discretization
|
|
and solver algorithms through general finite element abstractions, accurate and
|
|
flexible visualization, and tight integration with the hypre library.
|
|
|
|
* For building instructions, see the file INSTALL, or type "make help".
|
|
|
|
* Copyright and licensing information can be found in the file COPYRIGHT.
|
|
|
|
* The best starting point for new users interested in MFEM's features is the
|
|
interactive documentation in examples/README.html.
|
|
|
|
* Developers interested in contributing to the library, should read the
|
|
instructions and documentation in the CONTRIBUTING.md file.
|
|
|
|
Conceptually, MFEM can be viewed as a finite element toolbox that provides the
|
|
building blocks for developing finite element algorithms in a manner similar to
|
|
that of MATLAB for linear algebra methods. In particular, MFEM provides support
|
|
for arbitrary high-order H1-conforming, discontinuous (L2), H(div)-conforming,
|
|
H(curl)-conforming and NURBS finite element spaces in 2D and 3D, as well as many
|
|
bilinear, linear and nonlinear forms defined on them. It enables the quick
|
|
prototyping of various finite element discretizations, including Galerkin
|
|
methods, mixed finite elements, Discontinuous Galerkin (DG), isogeometric
|
|
analysis, hybridization and Discontinuous Petrov-Galerkin (DPG) approaches.
|
|
|
|
MFEM includes classes for dealing with a wide range of mesh types: triangular,
|
|
quadrilateral, tetrahedral and hexahedral, as well as surface and topologically
|
|
periodical meshes. It has general support for mesh refinement, including local
|
|
conforming and non-conforming (AMR) adaptive refinement. Arbitrary element
|
|
transformations, allowing for high-order mesh elements with curved boundaries,
|
|
are also supported.
|
|
|
|
MFEM is commonly used as a "finite element to linear algebra translator", since
|
|
it can take a problem described in terms of finite element-type objects, and
|
|
produce the corresponding linear algebra vectors and sparse matrices. In order
|
|
to facilitate this, MFEM uses compressed sparse row (CSR) sparse matrix storage
|
|
and includes simple smoothers and Krylov solvers, such as PCG, MINRES and GMRES,
|
|
as well as support for sequential sparse direct solvers from the SuiteSparse
|
|
library. Nonlinear solvers (the Newton method), eigensolvers (LOBPCG), and
|
|
several explicit and implicit Runge-Kutta time integrators are also available.
|
|
|
|
MFEM supports MPI-based parallelism throughout the library, and can readily be
|
|
used as a scalable unstructured finite element problem generator. MFEM-based
|
|
applications require minimal changes to transition from a serial to a
|
|
high-performing parallel version of the code, where they can take advantage of
|
|
the integrated scalable linear solvers from the hypre library. Comprehensive
|
|
support for other external packages, e.g. PETSc and SUNDIALS is also included,
|
|
giving access to many additional linear and nonlinear solvers, preconditioners,
|
|
time integrators, etc.
|
|
|
|
For examples of using MFEM, see the examples/ and miniapps/ directories, as well
|
|
as the OpenGL visualization tool GLVis which is available at http://glvis.org.
|
|
|
|
This project is released under the LGPL v2.1 license with static linking
|
|
exception. See files COPYRIGHT and LICENSE file for full details.
|
|
|
|
LLNL Release Number: LLNL-CODE-443211
|
|
DOI: 10.11578/dc.20171025.1248
|