Commit 1292193d authored by Praetorius, Simon's avatar Praetorius, Simon
Browse files

Merge branch 'develop' into 'master'

Develop

See merge request !5
parents 0d7c3d7b 63f3fe88
......@@ -8,6 +8,14 @@
*.parh
*.tarh
# ignore matrix-market files
*.mtx
error.txt
lint.txt
# ignore build directories
build*/
install*/
\ No newline at end of file
install*/
.vscode/
\ No newline at end of file
......@@ -7,6 +7,7 @@ dune:git--gcc:
image: mathiwr/dune:latest
script:
- dunecontrol --current all
- dunecontrol --current make build_tests
- dunecontrol --current make test
only:
- develop
cmake_minimum_required(VERSION 3.1)
project(dune-amdis CXX)
set(CXX_MAX_STANDARD 14 CACHE BOOL "" FORCE)
if(NOT (dune-common_DIR OR dune-common_ROOT OR
"${CMAKE_PREFIX_PATH}" MATCHES ".*dune-common.*"))
string(REPLACE ${CMAKE_PROJECT_NAME} dune-common dune-common_DIR
${PROJECT_BINARY_DIR})
endif()
project(amdis CXX)
#find dune-common and set the module path
find_package(dune-common REQUIRED)
......@@ -20,11 +11,19 @@ include(DuneMacros)
# start a dune project with information from dune.module
dune_project()
dune_enable_all_packages()
dune_enable_all_packages(MODULE_LIBRARIES amdis)
add_subdirectory("src")
add_subdirectory("dune")
add_subdirectory("test")
add_subdirectory("examples" EXCLUDE_FROM_ALL)
add_subdirectory("doc")
add_subdirectory("cmake/modules")
target_include_directories(amdis PUBLIC
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src>)
target_compile_definitions(amdis PUBLIC AMDIS_BACKEND_MTL=1)
target_compile_options(amdis PUBLIC -Wall -pedantic -Wno-unused-parameter) #-ftemplate-backtrace-limit=0
# finalize the dune project, e.g. generating config.h etc.
finalize_dune_project(GENERATE_CONFIG_H_CMAKE)
# GIT Workflow
Follow the ideas of [a-successful-git-branching-model](http://nvie.com/posts/a-successful-git-branching-model), especially
- Create a new branch for all new features, following the naming convention `feature/XYZ`
Follow the ideas of [a-successful-git-branching-model](http://nvie.com/posts/a-successful-git-branching-model),
especially
- Create a new branch for all new features, following the naming convention
`feature/XYZ`
- Merge features in the `develop` branch only
- Correct Bugs in issue branches, following the naming convention `issue/XYZ`
- Merge issues in the `develop` branch, except when it is a hotfix, then merge to `master` and `develop`
- Merge issues in the `develop` branch, except when it is a hotfix, then merge
to `master` and `develop`
- For all merges create a meaningful *Merge Request* in GitLab
# Code Style-Guide
This style-guide is intended for developers writing code for AMDiS, is not complete and probably not applied to all parts of the AMDiS code. Feel free to edit existing source files in order to fulfill the styles.
This style-guide is intended for developers writing code for AMDiS, is not complete
and probably not applied to all parts of the AMDiS code. Feel free to edit existing
source files in order to fulfill the styles.
Parts of this convention are taken from well established style guides, like the *Google C++ Style Guide*.
Parts of this convention are taken from well established style guides, like the
*Google C++ Style Guide*.
In general, the code should follow the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines).
## File naming conventions
Filenames should be mixed lower and upper case, starting with an uppercase letter. They should not include underscores or dashed. Use an uppercase letter to indicate a new subword. Sourcefiles should end in `.cpp` and header files should end in `.hpp`. In case you move the code of a template class to a separate file, included textually at the end of the corresponding header file, use the extensions `.inc.hpp`.
Filenames should be mixed lower and upper case, starting with an uppercase letter.
They should not include underscores or dashed. Use an uppercase letter to indicate
a new subword. Sourcefiles should end in `.cpp` and header files should end in `.hpp`.
In case you move the code of a template class to a separate file, included textually
at the end of the corresponding header file, use the extensions `.inc.hpp`.
The name of a file should follow the name of the implemented class in this file.
......@@ -26,21 +36,26 @@ Examples of valid filenames:
* `AdaptInstat.cpp`
* `DOFVector.hpp`
* `DOFVector.cpp`
* `DOFVector.inc.hpp` (the implementation of the methods of the template class `DOFVector<T>`)
* `DOFVector.inc.hpp` (the implementation of the methods of the template class
`DOFVector<T>`)
Do not use filenames that already exist in /usr/include or are stdandard C/C++ include files, such as `math.h` (remember that windows files-systems are case insensitive and thus, there is no difference between `math.h` and `Math.H`.)
Do not use filenames that already exist in /usr/include or are stdandard C/C++ include
files, such as `math.h` (remember that windows files-systems are case insensitive and
thus, there is no difference between `math.h` and `Math.H`.)
## Generale file structure
Every header file should start with a copyright notice and an include guard `#pragma once`, where the text of the copyright notice is given in the file `tools/license.templ.txt` and can automatically by added, using the script files in the `tools` directory:
Every header file should start with a copyright notice and an include guard `#pragma once`,
where the text of the copyright notice is given in the file `tools/license.templ.txt`
and can automatically by added, using the script files in the `tools` directory:
``` c++
// Software License for dune-amdis
// Software License for AMDiS
//
// Copyright (c) 2015 Institute for Scientific Computing, Technische Universitaet Dresden
// All rights reserved.
// Authors: Simon Praetorius
//
// This file is part of the dune-amdis Library
// This file is part of the AMDiS Library
// see also the LICENSE file in the distribution.
#pragma once
......@@ -50,14 +65,18 @@ After the include guard a list of include files can be added, see *Names and Ord
### Names and Order of Includes
All of a project's header files should be listed as descendants of the project's source directory. The includes should be grouped following the rules:
* [class header file] ... for source files that implement an interface specified in a header file
All of a project's header files should be listed as descendants of the project's
source directory. The includes should be grouped following the rules:
* [class header file] ... for source files that implement an interface specified
in a header file
* C system files.
* C++ system files.
* Other external libraries' header files.
* Your project's header files.
For better readability a comment above each group can be added. Within each section the includes should be ordered alphabetically. Project's header files should be surrounded by `"`, while external header files should be surrounded by `<...>`.
For better readability a comment above each group can be added. Within each section
the includes should be ordered alphabetically. Project's header files should be
surrounded by `"`, while external header files should be surrounded by `<...>`.
For example, the includes in `io/VtkWriter.cpp` might look like this:
......@@ -86,7 +105,8 @@ For example, the includes in `io/VtkWriter.cpp` might look like this:
### Namespaces
All implementation should be put into the namespace `AMDiS`. When a namespace closes, a corresponding comment should be added to the closing brackets:
All implementation should be put into the namespace `AMDiS`. When a namespace closes,
a corresponding comment should be added to the closing brackets:
``` c++
namespace AMDiS
......@@ -95,7 +115,9 @@ namespace AMDiS
} // end namespace AMDiS
```
Implementation details are put into a subnamespace `Impl`. A few more subnamespaces of `AMDiS` are allowed, e.g., `Concepts`. If onw of these subnamespaces need another subsubnamespace for implementation details, it should be names `_Impl`.
Implementation details are put into a subnamespace `Impl`. A few more subnamespaces
of `AMDiS` are allowed, e.g., `Concepts`. If one of these subnamespaces need another
subsubnamespace for implementation details, it should be named `Impl_`.
## Line length
......@@ -112,4 +134,5 @@ Use two spaces instead of tabs!
## Documentation
Use Doxygen-Style comments for the documentation of functions and classes, except when the function name already indicates its meaning completely.
Use Doxygen-Style comments for the documentation of functions and classes, except
when the function name already indicates its meaning completely.
AMDiS
=====
The *Adaptive Multi-Dimensional Simulation Toolbox* (AMDiS) is implemented as a
The *Adaptive Multi-Dimensional Simulation Toolbox* (AMDiS) is implemented as a
discretization module on top of the Dune framework.
Installation
......@@ -20,7 +20,6 @@ The `dunecontrol` script searches for the required
- [dune-localfunctions](https://gitlab.dune-project.org/core/dune-localfunctions)
- [dune-typetree](https://gitlab.dune-project.org/staging/dune-typetree)
- [dune-functions](https://gitlab.dune-project.org/staging/dune-functions)
- [dune-istl](https://gitlab.dune-project.org/core/dune-istl)
(See the file `dune.module` for an up-to-date list of dependencies). The dune modules
can be obtained from https://gitlab.dune-project.org and need to be found in a
......@@ -32,9 +31,9 @@ Additionally we require the following libraries to be found:
- [SuiteSparse](http://faculty.cse.tamu.edu/davis/suitesparse.html) (optional)
- libalberta >= 3.0 (For Alberta-Grids)
And a compiler that supports the C++14 standard, e.g. g++ >= 4.9 and clang >= 3.6, and cmake >= 3.1.
And a compiler that supports the C++14 standard, e.g. g++ >= 5.0 and clang >= 3.6, and cmake >= 3.1.
If your MTL4 installation is not found by default, you have to specify the path,
If your MTL4 installation is not found by default, you have to specify the path,
where the file `MTLConfig.cmake` is found, here called `MTL_ROOT`. Then simply use
`dunecontrol` to configure and `cmake` to build:
......@@ -43,4 +42,4 @@ CMAKE_FLAGS="-DMTL_DIR:PATH=[MTL_ROOT]" dunecontrol --current configure
cmake --build build-cmake
```
This compiles the library and all examples in the `src/` directory.
\ No newline at end of file
This compiles the library and all examples in the `src/` directory.
......@@ -10,7 +10,7 @@ Name: @PACKAGE_NAME@
Version: @VERSION@
Description: AMDiS dune-module
URL: https://gitlab.math.tu-dresden.de/spraetor/dune-amdis
Requires: dune-common dune-geometry dune-localfunctions dune-istl dune-typetree dune-grid dune-functions
Suggests: dune-uggrid dune-alugrid
Requires: dune-common dune-geometry dune-localfunctions dune-typetree dune-grid dune-functions
Suggests: dune-uggrid dune-alugrid dune-foamgrid
Libs: -L${libdir}
Cflags: -I${includedir}
#include(CheckIncludeFileCXX)
include(CheckCXXSourceCompiles)
#include(CheckCXXSymbolExists)
# fold expressions (a + ...)
check_cxx_source_compiles("
template <class... Args>
int f(Args... args)
{
return (args + ...);
}
int main()
{
f(0,1,2,3,4,5);
}
" AMDIS_HAS_CXX_FOLD_EXPRESSION
)
check_cxx_source_compiles("
template <int I>
auto f()
{
if constexpr(I == 0)
return double{1.0};
else
return int{0};
}
int main()
{
return f<1>();
}
" AMDIS_HAS_CXX_CONSTEXPR_IF
)
\ No newline at end of file
# File for module specific CMake tests.
include(AMDiSCXXFeatures)
# some additional packages and flags
find_package(MTL REQUIRED
PATHS /usr/local/lib/mtl4 /opt/sources/mtl4 /opt/development/mtl4)
set(CXX_ELEVEN_FEATURE_LIST "MOVE" "AUTO" "RANGEDFOR" "INITLIST" "STATICASSERT" "DEFAULTIMPL")
set(MTL_COMPILE_DEFINITIONS "")
foreach(feature ${CXX_ELEVEN_FEATURE_LIST})
list(APPEND MTL_COMPILE_DEFINITIONS "MTL_WITH_${feature}")
endforeach()
if(HAVE_UMFPACK OR ENABLE_SUITESPARSE OR SuiteSparse_FOUND)
list(APPEND MTL_COMPILE_DEFINITIONS "MTL_HAS_UMFPACK")
endif()
dune_register_package_flags(
COMPILE_DEFINITIONS ${MTL_COMPILE_DEFINITIONS}
INCLUDE_DIRS ${MTL_INCLUDE_DIRS})
set(modules "AmdisMacros.cmake")
install(FILES ${modules} DESTINATION ${DUNE_INSTALL_MODULEDIR})
install(FILES
AmdisMacros.cmake
AMDiSCXXFeatures.cmake
DESTINATION ${DUNE_INSTALL_MODULEDIR})
......@@ -40,6 +40,12 @@
/* Define to the revision of amdis */
#define AMDIS_VERSION_REVISION @AMDIS_VERSION_REVISION@
/* end amdis
/* some detected compiler features may be used in AMDiS */
#cmakedefine AMDIS_HAS_CXX_FOLD_EXPRESSIONS 1
#cmakedefine AMDIS_HAS_CXX_CONSTEXPR_IF 1
/* end dune-amdis
Everything below here will be overwritten
*/
Installation instructions
=========================
We provide a *cmake*-based configuration and use the `dunecontrol` build system.
Simply run
```bash
dunecontrol --current all
```
The `dunecontrol` script searches for the required
(and suggested) dune modules this library depends on. These include:
- [dune-common](https://gitlab.dune-project.org/core/dune-common)
- [dune-geometry](https://gitlab.dune-project.org/core/dune-geometry)
- [dune-grid](https://gitlab.dune-project.org/core/dune-grid)
- [dune-localfunctions](https://gitlab.dune-project.org/core/dune-localfunctions)
- [dune-typetree](https://gitlab.dune-project.org/staging/dune-typetree)
- [dune-functions](https://gitlab.dune-project.org/staging/dune-functions)
(See the file `dune.module` for an up-to-date list of dependencies). The dune modules
can be obtained from https://gitlab.dune-project.org and need to be found in a
subdirectory of `DUNE_CONTROL_PATH`. See also https://dune-project.org/doc/installation
for details about the installation of dune modules.
Additionally, we require/suggest the following libraries to be found:
- [MTL4](https://gitlab.math.tu-dresden.de/spraetor/mtl4) (use this fork to get up-to-date changes)
- [Boost](http://www.boost.org) >= 1.40
- [SuiteSparse](http://faculty.cse.tamu.edu/davis/suitesparse.html) (optional)
- libalberta >= 3.0 (For Alberta-Grids)
And a compiler that supports the C++14 standard, e.g. `g++` >= 5.0 and `clang` >= 3.6,
and `cmake` >= 3.1.
If your MTL4 installation is not found by default, you have to specify the path,
where the file `MTLConfig.cmake` is found, here called `MTL_ROOT`. Then simply use
`dunecontrol` to configure and `cmake` to build:
```bash
CMAKE_FLAGS="-DMTL_DIR:PATH=[MTL_ROOT]" dunecontrol --current all
```
This compiles the library and all examples in the `src/` directory.
Install Dune modules
--------------------
To install all required Dune modules you can either install a debian package (Version 2.6 required), using source packages (e.g. [Version 2.6](https://dune-project.org/releases/2.6.0rc1/)), or install everything from the repository:
```bash
cd ${SOURCE_DIR}
git clone https://gitlab.dune-project.org/core/dune-common.git
git clone https://gitlab.dune-project.org/core/dune-geometry.git
git clone https://gitlab.dune-project.org/core/dune-grid.git
git clone https://gitlab.dune-project.org/core/dune-localfunctions.git
git clone https://gitlab.dune-project.org/staging/dune-typetree.git
git clone https://gitlab.dune-project.org/staging/dune-functions.git
```
If additional grid types are required in the application (e.g. [AlbertaGrid](http://www.mathematik.uni-stuttgart.de/fak8/ians/lehrstuhl/nmh/downloads/alberta/), [dune-alugrid](https://gitlab.dune-project.org/extensions/dune-alugrid), or [dune-uggrid](https://gitlab.dune-project.org/staging/dune-uggrid). See also the list of dune modules on [dune-project.org](https://dune-project.org/groups/grid/)), these must be installed separately. Thereby, all Dune modules can be downloaded into the `${SOURCE_DIR}` folder. AlbertaGrid requires to set the cmake flag `-DALBERTA_ROOT` when configuring the dune-grid module.
To compile all Dune modules maybe some flags need to be given to cmake. When using the `dunecontrol` script this can be accomplished by providing an options file `dune.opts`
```bash
CMAKE_FLAGS="-DALBERTA_ROOT:PATH=${ALBERTA_ROOT} \
-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_DIR}"
MAKE_FLAGS="-j4 install"
```
This specifies the location of the AlbertaGrid installation and an installation dir `${INSTALL_DIR}` for the Dune modules.
I prefer an out-of-source build and thus specify a common build directory for all Dune modules:
```bash
mkdir -p /tmp/dune/build
DUNE_CONTROL_PATH=${SOURCE_DIR} ${SOURCE_DIR}/dune-common/bin/dunecontrol --opts=dune.opts --builddir=/tmp/dune/build all
```
When the Dune modules are installed, the `bin/` directory in `${INSTALL_DIR}` can be added to the PATH variable to make `dunecontrol` and other scripts available directly.
AMDiS {#mainpage}
=====
The *Adaptive Multi-Dimensional Simulation Toolbox* (AMDiS) is a Finite-Element
discretization module allowing for fast prototyping of PDEs on adaptively refined
grids. It is implemented on top of the [Dune](https://dune-project.org) framework.
Tutorial
--------
As an example of usage, we want to solve an elliptic PDE, the Poisson equation,
\f$ -\Delta u = f \f$ in \f$ \Omega \f$ with \f$ u = g \f$ on a subset of the boundary
\f$ \Gamma\subset\partial\Omega \f$. For simplicity, we assume \f$ f(x) \equiv -1 \f$
and \f$ g(x) \equiv 0 \f$, the domain \f$ \Omega \f$ a square domain \f$ [0,1]^2 \f$
and \f$ \Gamma \f$ the lower and left edge of the boundary.
~~~~~~~~~~~~~~~{.cpp}
#include <amdis/AMDiS.hpp>
#include <amdis/AdaptInfo.hpp>
#include <amdis/AdaptStationary.hpp>
#include <amdis/ProblemStat.hpp>
// The namespace all AMDiS classes and functions are defined in
using namespace AMDiS;
// A dune grid type
using Grid = Dune::AlbertaGrid<AMDIS_DIM, AMDIS_DOW>;
// A dune-functions globalBasis wrapped in a struct,
// here representing local polynomial shape functions of degree 1
using Traits = LagrangeBasis<Grid::LeafGridView, 1>;
int main(int argc, char* argv[])
{
// Initialize linear-algebra backend and read parameters from file
AMDiS::init(argc, argv);
// Create a problem class containing all data for assembling
ProblemStat<Traits> prob("poisson");
// Initialize grid, globalBasis, solution vector and systenmatrix
prob.initialize(INIT_ALL);
// An operator representing the weak laplacian with coefficient = 1.0
auto opL = makeOperator(tag::gradtest_gradtrial{}, 1.0);
prob.addMatrixOperator(opL, 0, 0);
// An rhs-operator representing an analytic function f(x) = -1
auto opF = makeOperator(tag::test{}, [](auto const& x) { return -1.0; }, 0);
prob.addVectorOperator(opF, 0);
// Define the boundary Gamma
auto predicate = [](auto const& x){ return x[0] < 1.e-8 || x[1] < 1.e-8; };
// Set a value g(x) = 0 at this part of the boundary
prob.addDirichletBC(predicate, 0, 0, 0.0);
// assemble and solve the linear system
AdaptInfo adaptInfo("adapt");
AdaptStationary adapt("adapt", prob);
adapt.adapt();
AMDiS::finalize();
return 0;
}
~~~~~~~~~~~~~~~
Notes
-----
An AMDiS program consists of three main incredients:
1. A Problem class that holds all information necessary for assembling a linear
system, see \ref ProblemStat.
2. Operators describing the (bi)linear-form of your PDE, see \ref operators.
3. A parameter file controlling several parts of the solution process, see \ref Initfile.
......@@ -2,7 +2,8 @@
# please us '+=' to add file/directories to the lists
FILE_PATTERNS += *.hpp \
*.cpp
*.cpp \
*.md
HIDE_SCOPE_NAMES = YES
HIDE_UNDOC_CLASSES = NO
......@@ -10,25 +11,31 @@ INTERNAL_DOCS = NO
MARKDOWN_SUPPORT = YES
EXCLUDE_SYMBOLS = AMDiS::Impl \
AMDiS::traits::Impl \
AMDiS::Math::Impl_ \
AMDiS::Concepts::Impl_ \
AMDiS::detail \
itl::details
PREDEFINED += HAVE_UMFPACK \
HAVE_ALBERTA \
HAVE_UG \
AMDIS_BACKEND_MTL
# The INPUT tag can be used to specify the files and/or directories that contain
# documented source files. You may enter file names like "myfile.cpp" or
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
INPUT += @top_srcdir@/dune/amdis \
@top_srcdir@/dune/amdis/assembler \
@top_srcdir@/dune/amdis/common \
@top_srcdir@/dune/amdis/utility \
@top_srcdir@/dune/amdis/gridfunctions \
@top_srcdir@/dune/amdis/io \
@top_srcdir@/dune/amdis/linear_algebra \
@top_srcdir@/dune/amdis/linear_algebra/mtl
@top_srcdir@/dune/amdis/linear_algebra/mtl \
@top_srcdir@/dune/amdis/operations \
@top_srcdir@/dune/amdis/utility \
@top_srcdir@/doc
# see e.g. dune-grid for the examples of mainpage and modules
#INPUT += @srcdir@/mainpage \
# @srcdir@/modules
......@@ -50,4 +57,4 @@ EXAMPLE_PATH += @top_srcdir@/src
# directories that contain image that are included in the documentation (see
# the \image command).
# IMAGE_PATH += @top_srcdir@/dune/amdis/pics
# IMAGE_PATH += @top_srcdir@/doc/pics
......@@ -3,9 +3,9 @@
################################
#Name of the module
Module: dune-amdis
Module: amdis
Version: 0.1
Maintainer: simon.praetorius@tu-dresden.de
#depending on
Depends: dune-common dune-geometry dune-localfunctions dune-istl dune-typetree dune-grid dune-functions
Suggests: dune-uggrid dune-alugrid
Depends: dune-common dune-geometry dune-localfunctions dune-typetree dune-grid dune-functions
#Suggests: dune-uggrid dune-alugrid dune-foamgrid
add_subdirectory(amdis)
# add_subdirectory(amdis/test)
\ No newline at end of file
#install headers
dune_add_library("duneamdis" NO_EXPORT
AdaptBase.cpp
AdaptInfo.cpp
AdaptInstationary.cpp
AdaptStationary.cpp
AMDiS.cpp
Initfile.cpp
ProblemInstatBase.cpp
# ProblemInstat.cpp
ProblemStat.cpp
StandardProblemIteration.cpp
#linear_algebra/istl/SystemMatrix.cpp
#linear_algebra/istl/SystemVector.cpp
linear_algebra/mtl/SystemMatrix.cpp
linear_algebra/mtl/SystemVector.cpp
utility/Filesystem.cpp
)
add_dune_alberta_flags("duneamdis" OBJECT USE_GENERIC)
target_compile_definitions("duneamdis" PUBLIC AMDIS_BACKEND_MTL=1)
target_compile_options("duneamdis" PUBLIC -ftemplate-backtrace-limit=0 -Wall -pedantic -Wno-unused-parameter)
find_package(MTL REQUIRED
PATHS /usr/local/lib/mtl4)
if (MTL_FOUND)
target_include_directories("duneamdis" PUBLIC ${MTL_INCLUDE_DIRS})
# target_link_libraries("duneamdis" PUBLIC ${MTL_LIBRARIES})
# target_compile_options("duneamdis" PUBLIC ${MTL_CXX_DEFINITIONS})
set (CXX_ELEVEN_FEATURE_LIST "MOVE" "AUTO" "RANGEDFOR" "INITLIST" "STATICASSERT" "DEFAULTIMPL")
foreach (feature ${CXX_ELEVEN_FEATURE_LIST})
target_compile_definitions("duneamdis" PUBLIC MTL_WITH_${feature})
endforeach ()
if (HAVE_UMFPACK OR ENABLE_SUITESPARSE OR SuiteSparse_FOUND)
target_compile_definitions("duneamdis" PUBLIC MTL_HAS_UMFPACK)
endif ()
endif (MTL_FOUND)
install(FILES
AdaptBase.hpp
AdaptInfo.hpp
AdaptInstationary.hpp
AdaptStationary.hpp
AMDiS.hpp
CreatorInterface.hpp
CreatorMap.hpp
DirichletBC.hpp
DirichletBC.inc.hpp
FileWriter.hpp
Flag.hpp
Initfile.hpp
LinearAlgebra.hpp
Log.hpp
Math.hpp
Mesh.hpp
OperatorEvaluation.hpp
Operator.hpp
Operator.inc.hpp
OperatorTermBase.hpp
OperatorTerm.hpp
ProblemInstatBase.hpp
ProblemInstat.hpp
ProblemInstat.inc.hpp
ProblemInterationInterface.hpp
ProblemStatBase.hpp
ProblemStat.hpp
ProblemStat.inc.hpp
ProblemTimeInterface.hpp
StandardProblemIteration.hpp
TermGenerator.hpp
common/ConceptsBase.hpp
common/ClonablePtr.hpp
common/IndexSeq.hpp
common/Literals.hpp
common/Loops.hpp
common/Mpl.hpp
common/ScalarTypes.hpp
common/Timer.hpp
common/Traits.hpp
common/TupleUtility.hpp
common/Utility.hpp
common/ValueCategory.hpp
linear_algebra/LinearAlgebraBse.hpp
linear_algebra/LinearSolverInterface.hpp
linear_algebra/PreconditionerInterface.hpp
linear_algebra/RunnerInterface.hpp
linear_algebra/SolverInfo.hpp
linear_algebra/istl/DOFMatrix.hpp
linear_algebra/istl/DOFVector.hpp
linear_algebra/istl/ISTL_Preconditioner.hpp
linear_algebra/istl/ISTLRunner.hpp
linear_algebra/istl/ISTL_Solver.hpp
linear_algebra/istl/LinearSolver.hpp
linear_algebra/istl/Preconditioner.hpp
linear_algebra/istl/SystemMatrix.hpp
linear_algebra/istl/SystemVector.hpp
linear_algebra/mtl/BITL_Preconditioner.hpp
linear_algebra/mtl/BITL_Solver.hpp
linear_algebra/mtl/BlockMTLMatrix.hpp
linear_algebra/mtl/BlockMTLVector.hpp
linear_algebra/mtl/Copy.hpp
linear_algebra/mtl/DOFMatrix.hpp
linear_algebra/mtl/DOFVector.hpp
linear_algebra/mtl/ITL_Preconditioner.hpp
linear_algebra/mtl/ITL_Solver.hpp
linear_algebra/mtl/KrylovRunner.hpp
linear_algebra/mtl/LinearSolver.hpp
linear_algebra/mtl/Mapper.hpp
linear_algebra/mtl/MTLDenseVector.hpp
linear_algebra/mtl/Preconditioner.hpp