amdis-core merge requestshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests2019-12-25T10:18:47Zhttps://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/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/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/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/138the install script now compiles all dune modules and creates an opts file2019-12-28T11:13:43ZPraetorius, Simonthe install script now compiles all dune modules and creates an opts filehttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/139cmake have package rename2019-12-28T11:15:26ZPraetorius, Simoncmake have package renamerenamed `HAVE_XXX` into `AMDIS_HAS_XXX` and updated Hypre cmake configurationrenamed `HAVE_XXX` into `AMDIS_HAS_XXX` and updated Hypre cmake configurationhttps://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/140communicator construction2019-12-28T13:51:45ZPraetorius, Simoncommunicator constructionreduce multiple initilizations of preBasisreduce multiple initilizations of preBasishttps://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/141cmake have package rename2019-12-28T14:52:00ZPraetorius, Simoncmake have package renamehttps://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/142cleanup for petscsolver2020-01-03T14:25:46ZPraetorius, Simoncleanup for petscsolverhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/145Added missing include2020-01-07T18:04:06ZMüller, FelixAdded missing includeAdded missing include for `Dune::range`Added missing include for `Dune::range`https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/144Add a destructor to Notifier to prevent Segfault w/o extending the Lifetime o...2020-01-10T18:19:15ZMüller, FelixAdd a destructor to Notifier to prevent Segfault w/o extending the Lifetime of Objects via shared_ptrAlso extended the testsAlso extended the testshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/146moved the sparsity pattern update method to the bilinear form2020-01-10T19:17:32ZPraetorius, Simonmoved the sparsity pattern update method to the bilinear formhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/143remove comm from solver2020-01-20T15:23:25ZPraetorius, Simonremove comm from solverhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/147Wrap DistributedCommunication::RemoteIndices in unique_ptr to fix move issue ...2020-01-24T12:58:37ZMüller, FelixWrap DistributedCommunication::RemoteIndices in unique_ptr to fix move issue in c++14Due to missing copy elision in c++14 the PETSc Comm object `DistributedCommunication` is required to have a copy or move constructor in the statement (`ParallelGlobalBasis.hpp:89`)
```cpp
, comm_(CommunicationCreator<Comm>::create(st...Due to missing copy elision in c++14 the PETSc Comm object `DistributedCommunication` is required to have a copy or move constructor in the statement (`ParallelGlobalBasis.hpp:89`)
```cpp
, comm_(CommunicationCreator<Comm>::create(static_cast<Super const&>(*this), name + "->solver"))
```
Since the member `Dune::RemoteIndices` declares a private copy and no move constructor we need to wrap it into a `unique_ptr` to provide move semantics.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/152Add overload for LagrangeBasis with single node2020-01-31T14:46:46ZMüller, FelixAdd overload for LagrangeBasis with single nodeThis MR provides an overload to `LagrangePreBasisCreatorImpl` to return a single-node prebasis `lagrange<k>()` when using `LagrangeBasis<Grid, k>`.This MR provides an overload to `LagrangePreBasisCreatorImpl` to return a single-node prebasis `lagrange<k>()` when using `LagrangeBasis<Grid, k>`.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/151workaround for communicators in blocked bases, use SequentialCommunication if...2020-01-31T16:35:53ZPraetorius, Simonworkaround for communicators in blocked bases, use SequentialCommunication if not flat MultiIndexThis workaround is implemented to at least allow that blocked bases compile with `ParallelGlobalBasis`. By default, if the basis is blocked, i.e. the MultiIndex is not a flat MultiIndex, the basis uses a `SequentialCommunication` instead...This workaround is implemented to at least allow that blocked bases compile with `ParallelGlobalBasis`. By default, if the basis is blocked, i.e. the MultiIndex is not a flat MultiIndex, the basis uses a `SequentialCommunication` instead of a backend communication object.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/148mtl krylov runner create precon2020-01-31T17:42:05ZPraetorius, Simonmtl krylov runner create preconCreate the preconditioner in the `runner::init()` method, to allow to register preconditioners even after runner is constructed.Create the preconditioner in the `runner::init()` method, to allow to register preconditioners even after runner is constructed.