amdis-core merge requestshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests2021-03-13T17:44:27Zhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/271Fix LocalView for changes made to dune-functions2021-03-13T17:44:27ZPraetorius, SimonFix LocalView for changes made to dune-functions### Summary
In dune-functions the `NodeIndexSet` was removed. Although there were some placeholders for backward compatibility, those introduced lots of deprecated warnings. This MR adapts the implementation of LocalView to these recent ...### Summary
In dune-functions the `NodeIndexSet` was removed. Although there were some placeholders for backward compatibility, those introduced lots of deprecated warnings. This MR adapts the implementation of LocalView to these recent changes.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/272fix problem with TaylorHoodBasis by explicitly writing out the types of its c...2021-03-04T07:55:12ZPraetorius, Simonfix problem with TaylorHoodBasis by explicitly writing out the types of its componentshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/259fix problems after merge2020-12-26T17:06:32ZPraetorius, Simonfix problems after mergehttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/195Fixed issue with pack expansion of alias template2020-07-28T11:26:18ZMüller, FelixFixed issue with pack expansion of alias templateThis fixes an issue with the recent MR !189.This fixes an issue with the recent MR !189.https://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/157generator function writer2020-02-07T14:49:28ZPraetorius, Simongenerator function writerAdd generator functions for BackupWriter and GMshWriterAdd generator functions for BackupWriter and GMshWriterhttps://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/227Implement a NodeCache for cached evaulation of local-basis functions and grad...2020-11-06T14:55:29ZPraetorius, SimonImplement a NodeCache for cached evaulation of local-basis functions and gradients### Summary
This MR provides a wrapper around basis-nodes that adds caching to the leaf local-bases. It provides for leaf-nodes additional functions `localBasisValuesAt()` and `evaluateJacobiansAt` that return the cached evaluations of t...### Summary
This MR provides a wrapper around basis-nodes that adds caching to the leaf local-bases. It provides for leaf-nodes additional functions `localBasisValuesAt()` and `evaluateJacobiansAt` that return the cached evaluations of the localBasis at a given local coordinate.Müller, FelixMüller, Felixhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/210implement macro FWD() directly using static_cast instead of std::forward2020-09-30T15:40:35ZPraetorius, Simonimplement macro FWD() directly using static_cast instead of std::forwardhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/204Implement Operator and LocalOperator with TypeErasure2020-12-21T17:30:36ZPraetorius, SimonImplement Operator and LocalOperator with TypeErasurehttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/19Implement the copy constructor for DiscreteFunction2019-03-27T16:19:03ZPraetorius, SimonImplement the copy constructor for DiscreteFunctionThis solves a bug in `LocalFunction` and `GradientLocalFunction` of `DiscreteFunction`. If copy constructed, the `subTree` member was a dangling pointer.
Maybe I have to add the copy-assignment operator as well. Or, better, a `swap()`...This solves a bug in `LocalFunction` and `GradientLocalFunction` of `DiscreteFunction`. If copy constructed, the `subTree` member was a dangling pointer.
Maybe I have to add the copy-assignment operator as well. Or, better, a `swap()` method.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/11import mtl::size for size of std::vector2019-03-19T22:29:00ZPraetorius, Simonimport mtl::size for size of std::vectorhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/150initialize solver preconditioner correctly2020-01-31T18:16:53ZPraetorius, Simoninitialize solver preconditioner correctlyhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/10Instantiate ProblemStat and ProblemInstat for YaspGridBasis explicitly2019-03-26T16:18:46ZPraetorius, SimonInstantiate ProblemStat and ProblemInstat for YaspGridBasis explicitlyexplicit template instantiation can reduce compile time for derived projects significantly. In my test for the ellipt.2d example, I got 18sec with explicit instantiation and 40sec without. In need to be checked whether this procedure can...explicit template instantiation can reduce compile time for derived projects significantly. In my test for the ellipt.2d example, I got 18sec with explicit instantiation and 40sec without. In need to be checked whether this procedure can be extended to more grids and dimension, maybe by automatic source generation by cmake, i.e. generate explicit template instantiations in separate translation units for YaspGrid, AlbertaGrid, UGGrid, and ALUGrid for different dimension and LagrangeBasis of different degrees. These are 4x2x(3^n) instantiations. This, probably, should be made an non-default cmake option.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/169introduce aliases for dune-function concepts2020-04-09T11:35:17ZPraetorius, Simonintroduce aliases for dune-function conceptshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/234Introduce Traits class for checking whether Tree can be accessed by given Tre...2020-11-07T13:51:04ZPraetorius, SimonIntroduce Traits class for checking whether Tree can be accessed by given TreePath### Summary
This MR adds a Traits/Concept that allows to check that a typetree can be accessed by given index or treepath. This allows to give better diagnostics at compile-time.### Summary
This MR adds a Traits/Concept that allows to check that a typetree can be accessed by given index or treepath. This allows to give better diagnostics at compile-time.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/27Issue/amdisproject executable2019-03-28T12:09:12ZPraetorius, SimonIssue/amdisproject executablehttps://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/32istl AMG preconditioner added2019-04-26T11:21:28ZPraetorius, Simonistl AMG preconditioner addedThe dune-istl AMG method is available as precondition. The corresponding initfile parameters are
```
[...]->solver->precon: [amg,fastamg]
[...]->solver->precon->smoother: [jacobi,sor,ssor] % later more smoothers can be added
[...]->sol...The dune-istl AMG method is available as precondition. The corresponding initfile parameters are
```
[...]->solver->precon: [amg,fastamg]
[...]->solver->precon->smoother: [jacobi,sor,ssor] % later more smoothers can be added
[...]->solver->precon->[...] % general amg parameters, see Dune::Amg::Parameters
[...]->solver->precon->coarsening->[...] % Parameters of Dune::Amg::CoarseningParameters
[...]->solver->precon->aggregation->[...] % Parameters of Dune::Amg::AggregationParameters
[...]->solver->precon->dependency->[...] % Parameters of Dune::Amg::DependencyParameters
[...]->solver->precon->smoother->[...] % Parameters of Dune::Amg::DefaultSmootherArgs
```
See `amdis/linearalgebra/istl/AMGPrecon.hpp` for a detailed list of parameters. The parameter names follow the variable names in the Dune Parameters class.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/166Keep unchanged sparsity pattern2020-07-11T12:27:36ZMüller, FelixKeep unchanged sparsity patternAdd:
* `bool` argument to `BiLinearForm::init` to force pattern update
* `BiLinearForm::setSymmetryStructure` function
* `MatrixFacade::init()` setting all matrix entries to zero while keeping the pattern intact
* Implementations...Add:
* `bool` argument to `BiLinearForm::init` to force pattern update
* `BiLinearForm::setSymmetryStructure` function
* `MatrixFacade::init()` setting all matrix entries to zero while keeping the pattern intact
* Implementations `MatrixBackend::init()`
Change:
* `SymmetryStructure` is now provided to the `SparsityPattern` and no longer used in `MatrixFacade::init`
* `SparsityPattern::init` calls are replaced by constructor calls
* `BiLinearForm::init` either rebuilds the pattern or just sets entries to zero, depending on a flag
* `BiLinearForm` sets a pattern rebuild flag instead of immediately rebuilding it when observing a basis change
* `BiLinearForm` also tracks changes to its operators to set the pattern rebuild flag
* `SymmetryStructure` is now supposed to be set by the user after adding operators