Skip to content

This code is a modification of MFEM, a C++ library for finite element methods. The modification includes: 4D meshes and finite elements, multigrid and time-slabbing solvers and a natural setting for considering (constrained) first-order system least-squares formulations.

License

CFOSLS/mfem

 
 

Repository files navigation

This repository is a fork of MFEM, extended with classes for CFOSLS (constrained first-order
system least squares) framework. The underlying version of MFEM is 3.3. The code can be built
in the same way as MFEM, see http://mfem.org/building.

To learn more about MFEM, visit mfem.org and/or read README in https://github.com/mfem/mfem.

Incomplete list of new classes (w.r.t to base version of MFEM):
- ParMeshCyl: a class for handling space-time cylinder meshes with arbitrary base mesh.
- 4D finite element spaces for H(div), H(divskew), H(curl), H^1 and L^2 and 4D meshes 
  (also available in https://github.com/mfem/mfem/tree/4d_dev)
  
- FOSLSFormulation: weak formulation of a (C)FOSLS problem in terms of bilinear and linear forms 
  (BilinearForm- and LinearFormIntegrators in MFEM)
- FOSLSFEFormulation: weak formulation of a FOSLSProblem with spaces specified
  (FiniteElementCollections in MFEM)
- FOSLSProblem: base class for a (C)FOSLS problem on a given mesh
  (incl. FiniteElementSpaces in MFEM)
  
- GeneralHierarchy: hierarchy of meshes and f.e. spaces defined on them
- FOSLSProblHierarchy: hierarchy of FOSLSProblems living at a hierarchy of meshes

- MultigridToolsHierarchy: a hierarchy of various ingredients which could be used for multigrid
  (or other preconditioners), including. e.g., local non-overlapping Schwarz smoothers 
  implemented in LocalProblemSolver class)
- GeneralMultigrid, Multigrid and MonolithicMultigrid: multigrid preconditioners
- GeneralMinConstrSolver: a multilevel minimization solver which solves a CFOSLS problem by 
  minimizing the FOSLS functional subject to the constraint
- DivConstraintSolver: a multilevel method for finding a particular solution to the constraint
  $\div \sigma = f$
  
- TimeStepping: a class for time-slabbing (splitting the problem into space-time slabs and
  solving sub-problems in each time slab)
- TwoGridTimeStepping: for emulating parallel-in-time two-grid solver.

- FOSLSEstimator: error estimator for a FOSLS problem

- Specific integrators and classes for CFOSLS formulation of linear transport, heat, wave and
  laplace equations
  
- Visualization routines for slicing 3D and 4D meshes and grid functions defined on them
  to produce VTK output suitable for futher postprocessing, e.g., in ParaView.
  
Incomplete list of features (improvements) upon MFEM:
- 4D finite element spaces & 4D meshes
- general multigrid preconditioners and minimization solver
- time-slabbing
- AMR in FOSLS framework
- various examples of solving PDEs in CFOSLS formulations using the new classes

For examples, see the examples/ directory (and examples/archive for some older example 
codes).

About

This code is a modification of MFEM, a C++ library for finite element methods. The modification includes: 4D meshes and finite elements, multigrid and time-slabbing solvers and a natural setting for considering (constrained) first-order system least-squares formulations.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 97.1%
  • CMake 2.1%
  • Other 0.8%