amdis-core merge requestshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests2019-09-27T16:42:16Zhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/78PETSc backend2019-09-27T16:42:16ZPraetorius, SimonPETSc backend### Summary
Implementation of the parallel linear algebra backend PETSc
### Summary
Implementation of the parallel linear algebra backend PETSc
https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/110remove LagrangePreBasis forward declaration2019-09-27T17:39:35ZPraetorius, Simonremove LagrangePreBasis forward declarationhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/111Quadmath2019-09-30T07:55:10ZPraetorius, SimonQuadmathProvide support for quad-precision floating point numbersProvide support for quad-precision floating point numbershttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/61Filewriter abstraction2019-09-30T08:47:53ZPraetorius, SimonFilewriter abstraction### Summary
Abstraction of the filewriter interface to allow more writers
### Details
The filewriter interface is specified and a creator class added for some writer file formats. ### Summary
Abstraction of the filewriter interface to allow more writers
### Details
The filewriter interface is specified and a creator class added for some writer file formats. https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/114add cmake files to CMakeLists2019-09-30T18:22:11ZPraetorius, Simonadd cmake files to CMakeListshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/113Cleanup the constructors of MatrixBase, VectorBase, BiLinearForm, and LinearForm2019-09-30T19:48:39ZPraetorius, SimonCleanup the constructors of MatrixBase, VectorBase, BiLinearForm, and LinearFormhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/115Disable tests for PETSc with nonmatching type2019-10-07T12:06:13ZMüller, FelixDisable tests for PETSc with nonmatching typeThe test fails using the `PETSc` backend with a failed static assert
```cpp
amdis/linearalgebra/petsc/Traits.hpp:19:5: static_assert(std::is_same<T,PetscScalar>::value, "");
```
This MR disables the tests with nonmatching types.The test fails using the `PETSc` backend with a failed static assert
```cpp
amdis/linearalgebra/petsc/Traits.hpp:19:5: static_assert(std::is_same<T,PetscScalar>::value, "");
```
This MR disables the tests with nonmatching types.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/79Feature/observer2019-10-10T12:34:10ZMüller, FelixFeature/observerThis MR replaces the current mechanism for automatic updates of Dune-bases and `DOFVector`s with an observer pattern mixin.
Adds:
- `AdaptiveGrid` wrapper class to be handed out to the user. This allows addition of functionality to D...This MR replaces the current mechanism for automatic updates of Dune-bases and `DOFVector`s with an observer pattern mixin.
Adds:
- `AdaptiveGrid` wrapper class to be handed out to the user. This allows addition of functionality to Dune-grid types. It is expected to be used instead of a regular grid by the user whenever possible.
- `ParallelGlobalBasis` class expected to be used instead of a regular Dune-basis. The `Communication` object is now paired directly with a basis within this object.
- Mixin classes `Observer` and `Signals` for adding automatic update functionality to other classes.
- Observer unit test
- `SharedPtr.hpp` providing wrapping of objects and `shared_ptr`/`unique_ptr` into `shared_ptr`s
- free function `makeGlobalBasis` to generate a `ParallelGlobalBasis` from a prebasis
Removes:
- `GridTransfer[Manager].hpp` since those are no longer used.
- `DOFVectorInterface.hpp`
Changes:
- Lots of changes due to `feature/petsc_backend`, see !78.
- Interface changes to several classes to use the new `Observed[Grid, Basis]` objects when needed.
- `DOFVector` now creates a new `DataTransfer` on copy. This change is independent of this MR and may be cherry-picked.
- Restructured `preAdapt`/`adapt`/`postAdapt` callbacks in `DataTransfer` and `DOFVector`
- `MeshCreator` now returns an `AdaptiveGrid`
TODOs:
* [x] Cleanup of initial commit
* [x] Clearer names for the new classes
* [x] Test of Observer hierarchy (skipped subjects, multiple subjects) - see discussion belowMüller, FelixMüller, Felixhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/116cleanup wrap_or_share2019-10-11T08:07:27ZPraetorius, Simoncleanup wrap_or_shareCalrify the ownership of the arguments in `wrap_or_share`.Calrify the ownership of the arguments in `wrap_or_share`.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/117Rewriting adaptive grid2019-10-21T16:11:10ZPraetorius, SimonRewriting adaptive grid### Summary
The class `AdaptiveGrid` is now a real dune grid, is derived from `GridDefaultImplementation` and can be used wherever a grid/gridview is expected.
### More
Additionally to make `AdaptiveGrid` a dune grid, I have removed...### Summary
The class `AdaptiveGrid` is now a real dune grid, is derived from `GridDefaultImplementation` and can be used wherever a grid/gridview is expected.
### More
Additionally to make `AdaptiveGrid` a dune grid, I have removed the static `instance` method. It was necessary, to always create an AdaptiveGrid before any function providing a `const Grid&` can use it (like the `makeGlobalBasis` function. Thus, this is the same, as requiring that the user always constructs an AdaptiveGrid. This can be done with a regular constructor. Since then the grid is created and the GridView returns the correct AdaptiveGrid on `grid()`, the GridView can be directly passed to the ParallelGlobalBasis.
### Implications
- The ProblemStat always stores an AdaptiveGrid.
- The DefaultProblemStatTraits define the AdaptiveGrid as Grid
- The ParallelGlobalBasis can be created with any dune grid, including the AdaptiveGrid.
- Automatic adaption is only provided if the AdaptiveGrid is used.
- The user can pass a non-adaptive Grid to ProblemStat, that is automatically wrapped in the AdaptiveGrid class.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/119dune 2.7 updated some preconditioners in istl such that some precompiler file...2019-12-06T13:48:05ZPraetorius, Simondune 2.7 updated some preconditioners in istl such that some precompiler files had to be fixedin dune istl the SeqGS preconditioner changed from a class to a typedef to SeqSOR. A typedef can not be explicitly instantiated, leading to a compiler error. This is resolved in this MR.in dune istl the SeqGS preconditioner changed from a class to a typedef to SeqSOR. A typedef can not be explicitly instantiated, leading to a compiler error. This is resolved in this MR.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/121No-MPI build with PETSC backend fixed2019-12-06T15:37:49ZPraetorius, SimonNo-MPI build with PETSC backend fixedThis parallel mpi communicator namespace was used in a no MPI context. This is resolver here. Relates to issue #6This parallel mpi communicator namespace was used in a no MPI context. This is resolver here. Relates to issue #6https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/120fixed no-mpi bug in istl backend2019-12-06T16:05:25ZPraetorius, Simonfixed no-mpi bug in istl backendThis communication creator was not specialized in case of not HAVE_MPI. This is resolved in this MR. Relates to issue #6This communication creator was not specialized in case of not HAVE_MPI. This is resolved in this MR. Relates to issue #6https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/122Optimize compile builds using ccache and gold linker2019-12-06T17:53:40ZPraetorius, SimonOptimize compile builds using ccache and gold linkerCCache may improve the compile time by a factor 50 or more. Additionally, the gold-linker is used if available, to improve link time as well.CCache may improve the compile time by a factor 50 or more. Additionally, the gold-linker is used if available, to improve link time as well.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/123removed some forward declarations from GlobalIdSet2019-12-16T12:34:17ZPraetorius, Simonremoved some forward declarations from GlobalIdSethttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/124cleanup of headers and itl solvers in mtl backend2019-12-28T14:34:22ZPraetorius, Simoncleanup of headers and itl solvers in mtl backend- added Hypro preconditioner
- added krylov preconditioner
- removed unused itl headers
- use just 1 preconditioner instead of left+right precon- added Hypro preconditioner
- added krylov preconditioner
- removed unused itl headers
- use just 1 preconditioner instead of left+right preconhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/126replaced implementation of static Size template with generic constexpr function2019-12-16T12:35:23ZPraetorius, Simonreplaced implementation of static Size template with generic constexpr functionThis follows some pattern found in dune/functions and in MTL. The new name is `static_size()`, but the old variable template `Size_v` still exists. Especially when just asking for the size of a template parameter, the variable template i...This follows some pattern found in dune/functions and in MTL. The new name is `static_size()`, but the old variable template `Size_v` still exists. Especially when just asking for the size of a template parameter, the variable template is more suitable.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/127added check to add_amdis_executable that chosen Grid exists2019-12-16T12:35:37ZPraetorius, Simonadded check to add_amdis_executable that chosen Grid existsTest whether AlbertaGrid and ALUGrid are found whenever these grids are explicitly requested in `add_amdis_executable`.Test whether AlbertaGrid and ALUGrid are found whenever these grids are explicitly requested in `add_amdis_executable`.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/129no-mpi issues in PETSc backend2019-12-16T12:46:13ZPraetorius, Simonno-mpi issues in PETSc backendSome issues that were overseen in the last MRSome issues that were overseen in the last MRhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/128Issue/cleanup concepts2019-12-16T13:36:32ZPraetorius, SimonIssue/cleanup conceptsSimple renaming of `requires_` to `require`. Maybe we should also remove the whole `Concepts::models` trick and replace it with dune-common's version. It is not better, it is just already in the library.Simple renaming of `requires_` to `require`. Maybe we should also remove the whole `Concepts::models` trick and replace it with dune-common's version. It is not better, it is just already in the library.