v0.13.1
MoFEM.hpp
Go to the documentation of this file.
1/* This file is part of MoFEM.
2 * MoFEM is free software: you can redistribute it and/or modify it under
3 * the terms of the GNU Lesser General Public License as published by the
4 * Free Software Foundation, either version 3 of the License, or (at your
5 * option) any later version.
6 *
7 * MoFEM is distributed in the hope that it will be useful, but WITHOUT
8 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
10 * License for more details.
11 *
12 * You should have received a copy of the GNU Lesser General Public
13 * License along with MoFEM. If not, see <http://www.gnu.org/licenses/>. */
14
15#ifndef NDEBUG
16#define BOOST_DISABLE_ASSERTS ///< If not set makes BOOST freezing, check what
17 ///< happen fi boost recompiled with cxx17
18 ///< standard
19#define BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING
20#define BOOST_MULTI_INDEX_ENABLE_SAFE_MODE
21#endif
22
23#ifndef __MOFEM_HPP__
24#define __MOFEM_HPP__
25
26// Include system and libraries files
27#include <Includes.hpp>
28
29// SRC APPROXIMATION
30#include <config.h>
31#include <definitions.h>
32
33// FTensor
34#include <FTensor.hpp>
35
36namespace MoFEM {
37// FIXME: All operators in FTensor move to FTensor namespace.
38using FTensor::operator<<;
39using FTensor::operator>>;
40} // namespace MoFEM
41
42#include <Common.hpp>
43#include <UnknownInterface.hpp>
44#include <DeprecatedPetsc.hpp>
45
46// SRC/APPROXIMATION
47#include <base_functions.h>
48#include <h1_hdiv_hcurl_l2.h>
49#include <Hdiv.hpp>
50#include <Hcurl.hpp>
51#include <BernsteinBezier.hpp>
52#include <fem_tools.h>
53#include <BaseFunction.hpp>
55#include <LobattoPolynomial.hpp>
56#include <JacobiPolynomial.hpp>
58#include <QuadPolynomialBase.hpp> // Base functions on quad
60#include <TriPolynomialBase.hpp>
61#include <TetPolynomialBase.hpp>
62#include <HexPolynomialBase.hpp>
66
67// SRC/MULTI-INDICES
68#include <MaterialBlocks.hpp>
69#include <BCData.hpp>
70#include <TagMultiIndices.hpp>
72#include <FieldMultiIndices.hpp>
74#include <DofsMultiIndices.hpp>
76#include <FEMultiIndices.hpp>
79#include <BCMultiIndices.hpp>
81
82// SRC/INTERFACES
83#include <LoopMethods.hpp>
84#include <Interface.hpp>
85#include <Core.hpp>
86
87#include <AuxPETSc.hpp>
88
89#include <LogManager.hpp>
90#include <BitRefManager.hpp>
91#include <Tools.hpp>
92#include <CommInterface.hpp>
93#include <ISManager.hpp>
94#include <VecManager.hpp>
95#include <FieldBlas.hpp>
96#include <ProblemsManager.hpp>
97#include <MatrixManager.hpp>
98#include <Simple.hpp>
99#include <MeshRefinement.hpp>
100#include <SeriesRecorder.hpp>
101#include <PrismInterface.hpp>
102#include <MeshsetsManager.hpp>
103#ifdef WITH_TETGEN
104#include <TetGenInterface.hpp>
105#endif // WITH_TETGEN
106#ifdef WITH_MED
107#include <MedInterface.hpp>
108#endif // WITH_MED
109#include <CutMeshInterface.hpp>
110#include <NodeMerger.hpp>
112
113// SRC/PETSC
114#include <KspCtx.hpp>
115#include <SnesCtx.hpp>
116#include <TsCtx.hpp>
117#include <DMMoFEM.hpp>
118
119// SRC/FINITE_ELEMENTS
120#include <EntitiesFieldData.hpp>
121#include <DataOperators.hpp>
136#include <UserDataOperators.hpp>
137#include <HODataOperators.hpp> // Manage HO order geometry
138#include <MeshProjectionDataOperators.hpp> // Operators for projections between bit ref levels
139#include <BaseDerivativesDataOperators.hpp> // Operators to calculate HO direcarives
140#include <FormsIntegrators.hpp>
143
144// More interfaces
145
146#include <PipelineManager.hpp>
147#include <FieldEvaluator.hpp>
148#include <BcManager.hpp>
149
150#endif // MOFEM_HPP__
Myltindex containes, data structures for mofem adjacencies and other low-level functions.
Auxiliary MoFEM-PETSc structures.
Data structure with Cubit native blocks/meshet with boundary conditions.
Multi-index containers, data boundary data structures and other low-level functions.
Base derivatives data operators.
General implementation of base function.
Manage boundary conditions set to the problem.
Bernstein-Bezier polynomials for H1 space.
Bilinear forms integrators.
Interface managing BitRefLevels.
Interface for communication functions.
Basic structures and data.
Implementation of the contact prism element.
Core interface class for user interface.
Cut mesh interface.
Discrete manager interface for MoFEM.
Deprecated PETSc functions.
Multi-Index contains, data structures for mofem dofs and other low-level functions.
Implementation of elements on entities.
Implementation of edge element integrating parent.
Implementation of base on tetrahedral for H1 bases.
Implementation of base Demkowicz functions on quad and hex.
Implementation of Ainsworth-Cole H1 base on tetrahedral.
Data structures for accessing information about finite element and its degrees of freedom.
Multi-index contains, data structures for mofem finite elements and other low-level functions.
Tensors class implemented by Walter Landry.
Implementation of face element.
Implementation of face element integrating parent.
Implementation of face element.
Implementation of Ainsworth-Cole H1 base on tetrahedral.
Field basic algebra.
Multi-index contains, for mofem entities data structures and other low-level functions.
Field Evaluator.
Field data structure storing information about space, approximation base, coordinate systems,...
Implementation of Ainsworth-Cole H1 base on tetrahedral.
Implementation of elements on entities.
Forms inteegrators.
Operators managing HO geometry.
Implementation of H-curl base function.
Implementation of H-curl base function.
Implementation of Ainsworth-Coyle / Demkowicz or any other H1, Hcurl, Hdiv and L2 base on tetrahedral...
Interface managing IS.
MoFEM interface.
Implementation of Legendre polynomial.
Context for PETSc KSP, i.e. nonlinear solver.
Implementation of Legendre polynomial.
Linear forms integrators.
Implementation of Lobatto polynomial.
Log and register warnings.
MoFEM interface.
Data structures for Meshset/Blocsk with material data.
Interface for creating matrices and managing matrices.
Med file interface interface.
Mesh projection operators.
Interface for mesh refinement.
MeshsetsManager interface.
NodeMerger interface.
Header file for basic interface.
MoFEM interface.
Interface managing problems.
Multi-index containers, data structures for problems and other low-level functions.
Implementation of H1 base on a quad face.
Multi-index contains, data structures for mofem finite elements and other low-level functions.
Multi-index contains, for mofem entities data structures and other low-level functions.
Multindex containers, for mofem fields data structures and other low-level functions.
MoFEM interface.
Header file for simple interface.
Context for PETSc SNES, i.e. nonlinear solver.
Tags for Multi-index containers.
TetGen interface.
Implementation of Ainsworth-Coyle / Demkowicz or any other H1, Hcurl, Hdiv and L2 base on tetrahedral...
Tools interface.
Implementation of H1, Hcurl base on triangle.
Context for PETSc Time Stepping.
MoFEM interface.
User data Operators.
Interface managing vectors.
useful compiler directives and definitions
Loose implementation of some useful functions.
Functions to approximate hierarchical spaces.
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:21