amdis-core merge requestshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests2019-12-28T12:46:57Zhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/137communicator construction2019-12-28T12:46:57ZPraetorius, Simoncommunicator constructionhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/136Matrix-Vector facade class2019-12-30T22:32:05ZPraetorius, SimonMatrix-Vector facade classThis MR redesigns the matrix and vector front-/backend. Therefore, the `MatrixBase` and `VectorBase` classes are renamed to `xxxFacade` classes, where the actual backend is passed by template-template parameter, instantiated with just th...This MR redesigns the matrix and vector front-/backend. Therefore, the `MatrixBase` and `VectorBase` classes are renamed to `xxxFacade` classes, where the actual backend is passed by template-template parameter, instantiated with just the value-type of the coefficients to store in the matrix/vector. This reduces the length of the template parameter list and releases the backend from basis dependency. Also, the facade classes do not directly depend on the basis type, but get the basis as constructor argument that allows to, e.g. construct the matrix pattern, or to store a type-erased sizeInfo of the basis. This type-erasure is used in several places by just using `std::functions`
Also, we have added a sparsity pattern argument to the matrix `init()` method, where the actual pattern is initialized in the facade class to allow block patterns to be initialized at a central location.
The facade class performs several (concept) checks on the input and just forwards the necessary data and ranges to the backend implementation.
The `DOFVector`, `LinearForm` and `BiLinearForm` are now parametrized with the `BackendTraits` type, to allow user-defined traits with own backend implementations to be passed to the facade classes.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/135writers for general gridfunction2019-12-26T13:55:04ZPraetorius, Simonwriters for general gridfunctionGeneralize the `VtkWriter` and `DuneVtkWriter` to accept general gridfunction instead of just `DiscreteFunction`.Generalize the `VtkWriter` and `DuneVtkWriter` to accept general gridfunction instead of just `DiscreteFunction`.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/134discretefunction with child function2019-12-26T09:54:00ZPraetorius, Simondiscretefunction with child functionAdd `child()` to `DiscreteFunction` to have a similar interface as `DOFVector`.Add `child()` to `DiscreteFunction` to have a similar interface as `DOFVector`.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/133removed dependency on dune-functions interpolate due to breaking changes2019-12-23T20:38:49ZPraetorius, Simonremoved dependency on dune-functions interpolate due to breaking changeshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/131Simplify observer2019-12-25T10:18:47ZPraetorius, SimonSimplify observerThis MR redesigns the `Observer` class and the `Notifier` (former `Signals`) class to have a simpler interface and to allow to observe multiple classes of the same type. This is accomplished by using additional tags in the observer templ...This MR redesigns the `Observer` class and the `Notifier` (former `Signals`) class to have a simpler interface and to allow to observe multiple classes of the same type. This is accomplished by using additional tags in the observer template type list and in the `updateImpl()` method.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/130removed dependency on dune-functions interpolate due to breaking changes2019-12-20T17:00:13ZPraetorius, Simonremoved dependency on dune-functions interpolate due to breaking changeshttps://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.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/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/125DiscreteFunction vs. DOFVectorView2019-12-25T23:53:43ZPraetorius, SimonDiscreteFunction vs. DOFVectorViewRemoved DOFVectorView in favor of DiscreteFunction. Removed DOFVectorView in favor of DiscreteFunction. https://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/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/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/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/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/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/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`.