amdis-core merge requestshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests2019-03-26T09:35:22Zhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/22WIP: import packages by import-targets2019-03-26T09:35:22ZPraetorius, SimonWIP: import packages by import-targetshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/21boundary-manager traverse over leafgridview2019-03-26T11:09:04ZPraetorius, Simonboundary-manager traverse over leafgridviewThe reason for this change is, that not all Grids support traversal of intersection of non-leafgridview, e.g. AlbertaGrid.The reason for this change is, that not all Grids support traversal of intersection of non-leafgridview, e.g. AlbertaGrid.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/20virtual inheritance of ProblemTimeinterface in ProblemInstat2019-03-26T13:09:53ZPraetorius, Simonvirtual inheritance of ProblemTimeinterface in ProblemInstatUse virtual inheritance from ProblemTimeinterface for ProblemInstatBase, to allow diamond inheritance in coupling datastructures.Use virtual inheritance from ProblemTimeinterface for ProblemInstatBase, to allow diamond inheritance in coupling datastructures.https://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/18add doxygen closing comment bracket2019-03-21T15:53:16ZPraetorius, Simonadd doxygen closing comment brackethttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/17Cleanup of examples for stokes equation2019-03-21T10:33:31ZPraetorius, SimonCleanup of examples for stokes equationThis is a cleanup MR, intended to provide the code for the first amdis presentationThis is a cleanup MR, intended to provide the code for the first amdis presentationhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/16make eigen and mtl a system package2019-05-02T11:56:53ZPraetorius, Simonmake eigen and mtl a system packageRewrite find eigen and mtl in cmake to link against imported targets. This makes these external mackages system packages and thus compiler warning are not shown anymore. It hast to be checked which cmake version is required for this to w...Rewrite find eigen and mtl in cmake to link against imported targets. This makes these external mackages system packages and thus compiler warning are not shown anymore. It hast to be checked which cmake version is required for this to work. And it has to be checked whether we could do the same for other external packages in dune.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/15densematrix view for sparse matrices2019-03-21T09:04:42ZPraetorius, Simondensematrix view for sparse matricesAdd a View class that wraps sparse matrices so that they can be used as sparse matrix, i.e. provide const `operator[][]` access. This solves some bugs in operator terms with partial derivatives in case of `YaspGrid`.Add a View class that wraps sparse matrices so that they can be used as sparse matrix, i.e. provide const `operator[][]` access. This solves some bugs in operator terms with partial derivatives in case of `YaspGrid`.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/14parametrize BasisCreator with Grid instead of GridView2019-03-28T10:27:38ZPraetorius, Simonparametrize BasisCreator with Grid instead of GridViewWhen using a BasisCreator, like `LagrangeBasis` or `TaylorHoodBasis`, it is required that the `GridView` is a `LeafGridView`, since this is passed to the `create()` method in `createGlobalBasis()` of `ProblemStat`. So, instead of giving ...When using a BasisCreator, like `LagrangeBasis` or `TaylorHoodBasis`, it is required that the `GridView` is a `LeafGridView`, since this is passed to the `create()` method in `createGlobalBasis()` of `ProblemStat`. So, instead of giving the user the freedom to pass a different `GridView` than the leaf one, in the MR is Creator is parametrized with the `Grid` and the `GridView` is fixed to `LeafGridView`.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/13check whether BACKEND is either MTL, EIGEN, or ISTL2019-03-21T08:04:05ZPraetorius, Simoncheck whether BACKEND is either MTL, EIGEN, or ISTLhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/12correct dimension in datatransfer checkInside for surface grids2019-03-19T22:29:33ZPraetorius, Simoncorrect dimension in datatransfer checkInside for surface gridshttps://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/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/9make some operations constexpr and add missing inline2019-03-20T15:22:53ZPraetorius, Simonmake some operations constexpr and add missing inlinehttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/8make linear_algebra backend packages required if BACKEND is selected2019-03-20T11:00:33ZPraetorius, Simonmake linear_algebra backend packages required if BACKEND is selectedIf a linear algebra backend is selected using the `-DBACKEND=...` cmake flag, the `find_package` should be `REQUIRED`. Also, if neither Eigen nor MTL is selected, the fallback dune-istl must be available.If a linear algebra backend is selected using the `-DBACKEND=...` cmake flag, the `find_package` should be `REQUIRED`. Also, if neither Eigen nor MTL is selected, the fallback dune-istl must be available.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/7add expression abs() to gridfunctions2019-03-20T15:23:04ZPraetorius, Simonadd expression abs() to gridfunctionshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/6Add coefficient type to ElementMatrix and ElementVector2019-05-01T11:05:53ZPraetorius, SimonAdd coefficient type to ElementMatrix and ElementVectorTry to allow different coefficient types than `double`, e.g. `float` or `Dune::Float128`. The Test with `Float128` requires some changes in dune. So, it is skipped here.
I'm not sure about the design: How to specify the type of the co...Try to allow different coefficient types than `double`, e.g. `float` or `Dune::Float128`. The Test with `Float128` requires some changes in dune. So, it is skipped here.
I'm not sure about the design: How to specify the type of the coefficients (element matrix/vector type)? Currently, I have just added a `CoefficientType` member type to the `ProblemStatTraits` class. Maybe we should discuss to define the backend of DOFMatrix and DOFVector there and derived the coefficient type from these container classes.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/5Make TreeContainer default constructible and thus allow matrix containers2019-03-27T10:11:35ZPraetorius, SimonMake TreeContainer default constructible and thus allow matrix containershttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/4Update GlobalBasis after globalRefine in the initialize() method2019-03-19T22:26:46ZPraetorius, SimonUpdate GlobalBasis after globalRefine in the initialize() methodhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/3DirichletBC: Use specialization for Constraints instead of general case2019-03-20T10:37:54ZMÃ¼ller, FelixDirichletBC: Use specialization for Constraints instead of general case`src/amdis/DirichletBC.inc.hpp` calls
```cpp
34: auto columns = Constraints<Mat>::dirichletBC(matrix, dirichletNodes_);
```
There are specializations for this in the LinAlg implementations, yet only the generic implementation is included...`src/amdis/DirichletBC.inc.hpp` calls
```cpp
34: auto columns = Constraints<Mat>::dirichletBC(matrix, dirichletNodes_);
```
There are specializations for this in the LinAlg implementations, yet only the generic implementation is included in the file.
This MR replaces the generic include `<amdis/linearalgebra/Constraints.hpp>` with the specialization in `<amdis/linearalgebra/*/Constraints.hpp>`. This is already done in `src/amdis/PeriodicBC.inc.hpp`.