amdis-core merge requestshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests2019-08-28T15:42:19Zhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/83added code from the mpi14 library for parallel mpi communication with a nice ...2019-08-28T15:42:19ZPraetorius, Simonadded code from the mpi14 library for parallel mpi communication with a nice wrapper interfacehttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/82extended search directories to find MTL2019-08-21T15:03:23ZPraetorius, Simonextended search directories to find MTLhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/81check for cxx flags with -pedantic-errors flag2019-08-21T14:23:48ZPraetorius, Simoncheck for cxx flags with -pedantic-errors flaghttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/80Feature/petsc cmake2019-08-22T06:46:53ZPraetorius, SimonFeature/petsc cmakeadded cmake modules FindPETScadded cmake modules FindPETSchttps://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/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/77WIP: Solver and Preconditioners for istl backend2019-09-27T14:16:00ZPraetorius, SimonWIP: Solver and Preconditioners for istl backend### Summary
Restructuring the solver and preconditioner creators in for istl backend to allow arbitrary recursive nesting### Summary
Restructuring the solver and preconditioner creators in for istl backend to allow arbitrary recursive nestinghttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/76parallel filewriter2019-08-21T12:05:13ZPraetorius, Simonparallel filewriterWorkaround for buggy VTKSequenceWriterWorkaround for buggy VTKSequenceWriterhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/75corrected init file of heat example to support output2019-08-21T11:10:42ZPraetorius, Simoncorrected init file of heat example to support outputhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/74constructor call of FieldVector corrected in convectionDiffusionOperator2019-08-21T11:29:58ZPraetorius, Simonconstructor call of FieldVector corrected in convectionDiffusionOperatorhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/73Restricted integration to interior elements2019-08-21T11:28:04ZMüller, FelixRestricted integration to interior elementsThis avoids summing up elements twice when using the `integrate()` function in parallel with overlapping grids.This avoids summing up elements twice when using the `integrate()` function in parallel with overlapping grids.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/72change ellipt to run in parallel2019-09-28T13:03:24ZPraetorius, Simonchange ellipt to run in parallelhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/71write only rank 0 in parallel2019-08-21T13:11:39ZPraetorius, Simonwrite only rank 0 in parallelhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/70sum up parallel integrals2019-06-14T08:36:25ZPraetorius, Simonsum up parallel integralshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/69add coefficient type to DefaultProblemTraits2019-06-12T10:32:42ZPraetorius, Simonadd coefficient type to DefaultProblemTraitshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/68unique border partition DataHandle2019-06-12T10:32:25ZPraetorius, Simonunique border partition DataHandleThis MR extracts the `UniqueBorderPartitionDataHandle` from the ParallelISTL branch, since it might be useful also in other implementations.This MR extracts the `UniqueBorderPartitionDataHandle` from the ParallelISTL branch, since it might be useful also in other implementations.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/67Global DOF IDs2019-06-13T11:07:52ZPraetorius, SimonGlobal DOF IDsFor parallel computations one has to identify DOFs in the global grid uniquely. This requires knowledge of the connectivity of DOFs and can not generically be extracted from the global basis without any specialization.
So, this MR adds ...For parallel computations one has to identify DOFs in the global grid uniquely. This requires knowledge of the connectivity of DOFs and can not generically be extracted from the global basis without any specialization.
So, this MR adds a global IdSet for DOFs in a GlobalBasis. The `GlobalBasisIdSet` must be bound to an element and can then extract the globally unique id of a local DOF:
```c++
using IdSet = GlobalBasisIdSet<GlobalBasis>;
IdSet idSet(basis);
for (const auto& e : elements(basis.gridView()))
{
idSet.bind(e);
for (std::size_t i = 0; i < idSet.size(); ++i)
{
auto id = idSet.id(i);
}
idSet.unbind();
}
```https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/66cleanup of DataTransfer, created generator for treeContainer is node-data tem...2019-06-11T13:48:12ZPraetorius, Simoncleanup of DataTransfer, created generator for treeContainer is node-data template is usedhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/65make StandardProblemIteration copyable2019-06-11T13:48:48ZPraetorius, Simonmake StandardProblemIteration copyablehttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/64make capabilities a compile-time test whether backup-restore functionality ca...2019-09-24T11:47:58ZPraetorius, Simonmake capabilities a compile-time test whether backup-restore functionality can be used