amdis-core merge requestshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests2019-05-08T23:04:22Zhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/50add static size information for Eigen matrix type2019-05-08T23:04:22ZPraetorius, Simonadd static size information for Eigen matrix typeTODO:
* [x] Add a test for static size informationTODO:
* [x] Add a test for static size informationhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/54add traits for testing whether something is a template or a type and add enab...2019-05-08T19:14:30ZPraetorius, Simonadd traits for testing whether something is a template or a type and add enable_if_allhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/51add hybrid utility SwitchCases for dynamic and static dispatching2019-05-08T15:56:54ZPraetorius, Simonadd hybrid utility SwitchCases for dynamic and static dispatchingThis is a hybrid variant of `Dune::switchCases` with runtime and compiletime index sets.
TODO:
* [x] Add a test for switch casesThis is a hybrid variant of `Dune::switchCases` with runtime and compiletime index sets.
TODO:
* [x] Add a test for switch caseshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/52add fake container-like datastructure with all no-op2019-05-08T14:17:38ZPraetorius, Simonadd fake container-like datastructure with all no-opThis fake container con be used as argument to functions expecting a container that is filled or accessed somehow, if you do not want to do anything.
TODO:
* [x] Needs a testThis fake container con be used as argument to functions expecting a container that is filled or accessed somehow, if you do not want to do anything.
TODO:
* [x] Needs a testhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/48Add explicit return type for lambdas2019-05-08T09:18:35ZPraetorius, SimonAdd explicit return type for lambdasIf there is an error within a lambda in a recursive hierarchy of calls, the return type might not be extracted correctly and I get an additional error `using xyz before deduction of auto` or something similar. This might be reduced, by e...If there is an error within a lambda in a recursive hierarchy of calls, the return type might not be extracted correctly and I get an additional error `using xyz before deduction of auto` or something similar. This might be reduced, by explicitly stating the return type of a lambda if known.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/49replace deprecated AMDiS::init and finalize with Environment2019-05-08T09:18:07ZPraetorius, Simonreplace deprecated AMDiS::init and finalize with EnvironmentAfter merging the `Environment` class, some examples and test need to be adapted.After merging the `Environment` class, some examples and test need to be adapted.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/53add traits to test whether a dune matrix/vector has only one component2019-05-08T09:17:44ZPraetorius, Simonadd traits to test whether a dune matrix/vector has only one componenthttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/55allow proxies to be passed to the assigner classes as output argument2019-05-08T09:17:11ZPraetorius, Simonallow proxies to be passed to the assigner classes as output argumenthttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/44Resize abstraction for matrices and vectors2019-05-04T00:29:14ZPraetorius, SimonResize abstraction for matrices and vectorshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/45Provide access function for vectors and matrices2019-05-03T23:00:20ZPraetorius, SimonProvide access function for vectors and matricesFor a general access of matrices and vectors, using various bracket types, the MR introduces the function `access(vector, i)` and `access(matrix, i,j)` that redirects to the specific implementation. Additionally Concepts are added to tes...For a general access of matrices and vectors, using various bracket types, the MR introduces the function `access(vector, i)` and `access(matrix, i,j)` that redirects to the specific implementation. Additionally Concepts are added to test whether an object can be accessed like a vector or matrix.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/46add functionality to remove an added marker2019-05-03T21:51:12ZPraetorius, Simonadd functionality to remove an added markerhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/43extend apply and for_each functions2019-05-03T16:15:35ZPraetorius, Simonextend apply and for_each functionshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/42add cxx feature test for auto templates2019-05-03T16:15:14ZPraetorius, Simonadd cxx feature test for auto templateshttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/36added Environment for MPI initialization2019-05-03T16:14:40ZPraetorius, Simonadded Environment for MPI initializationThis MR replaces the old `AMDiS::init()` - `AMDiS::finalize()` pattern with a RAII class `Environment`, to be instantiated at the begin of the main method, i.e.
```c++
int main(int argc, char** argv)
{
Environment env(argc, argv);
...This MR replaces the old `AMDiS::init()` - `AMDiS::finalize()` pattern with a RAII class `Environment`, to be instantiated at the begin of the main method, i.e.
```c++
int main(int argc, char** argv)
{
Environment env(argc, argv);
// get MPI rank and size from environment after instantiation:
std::cout << Environment::mpiRank();
std::cout << Environment::mpiSize();
}
```
the ``finalize'' is called automatically when `env` is destructed, i.e. at the end of main().https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/41allow parallel execution of runner tasks2019-05-03T16:12:23ZPraetorius, Simonallow parallel execution of runner taskshttps://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/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/37Changed raw pointer to shared_ptr in DOFVector and DOFMatrix2019-04-30T14:10:08ZPraetorius, SimonChanged raw pointer to shared_ptr in DOFVector and DOFMatrixAlways store a `shared_ptr` of the GlobalBasis instead of a reference or raw pointer.Always store a `shared_ptr` of the GlobalBasis instead of a reference or raw pointer.https://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/30Example/surface grid2019-04-26T20:36:29ZPraetorius, SimonExample/surface gridhttps://gitlab.math.tu-dresden.de/amdis/amdis-core/-/merge_requests/23reimplement interpolate function with averaging2019-04-26T13:51:45ZPraetorius, Simonreimplement interpolate function with averagingReplace `Dune::Functions::interpolate` with own implementation based on the dune-functions implementation. Here, I want to allow non-smooth (non-continuouse) functions in the interpolation. Thus simple nodal-interpolation does not work. ...Replace `Dune::Functions::interpolate` with own implementation based on the dune-functions implementation. Here, I want to allow non-smooth (non-continuouse) functions in the interpolation. Thus simple nodal-interpolation does not work. A first strategy is implementated, namely node-averaging. A counter is added that counts how often a values is added to a DOF and after the interpolation the DOF value is divided by this counter value.
Other strategies that could be added:
- Clement type interpolation (using local L2 projection)
- Evaluation in *super-convergent* points, i.e. average over evaluations in the element barycenters
- Least-squares approximation
- [x] Therefore, the interface of `interpolate()` must be extended to support some kind of `strategy` flag.