dune-tnnmg merge requestshttps://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests2020-05-26T11:11:14Zhttps://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/15Port bcqfconstrainedlinearization.hh to 'if constexpr'2020-05-26T11:11:14Zoliver.sander_at_tu-dresden.deoliver.sander@tu-dresden.dePort bcqfconstrainedlinearization.hh to 'if constexpr'https://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/14Minor updates2020-04-26T05:50:35Zoliver.sander_at_tu-dresden.deoliver.sander@tu-dresden.deMinor updateshttps://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/13Update CI config to clang-72019-03-11T07:39:17Zlh1887Update CI config to clang-7The old image is no longer updatedThe old image is no longer updatedhttps://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/12Update gitlab-ci.2019-03-01T13:53:59ZmaxkaUpdate gitlab-ci.https://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/11Properly forward constructor to CopyOrReference members.2019-04-15T12:51:29ZmaxkaProperly forward constructor to CopyOrReference members.The previous constructor probably was an artifact of a previous implementation and IMHO defies the benefits of the `CopyOrReference` class and the related ability to set its arguments on template instantiation.
This implementation com...The previous constructor probably was an artifact of a previous implementation and IMHO defies the benefits of the `CopyOrReference` class and the related ability to set its arguments on template instantiation.
This implementation complies with the constructor argument forwarding used in the base class `QuadraticFunctional`.
Thanks to @podlesny for pointing this out.https://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/10Bugfix: Set empty ignore nodes for IterativeSolver2018-08-27T10:51:22ZPatrick Jaappatrick.jaap@tu-dresden.deBugfix: Set empty ignore nodes for IterativeSolverThis was missing after the code shift to the external class.
It caused a segmentation fault when TNNMG is used with an
IterativeSolver object.This was missing after the code shift to the external class.
It caused a segmentation fault when TNNMG is used with an
IterativeSolver object.https://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/9move implementation details of linear correction out of TNNMGStep2018-06-26T14:08:44ZAnsgar Burchardtansgar.burchardt@tu-dresden.demove implementation details of linear correction out of TNNMGStepThis simplifies the `iterate()` method such that it fits on a single
screen.This simplifies the `iterate()` method such that it fits on a single
screen.https://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/8address compiler warnings and deprecations2018-06-25T15:13:39ZAnsgar Burchardtansgar.burchardt@tu-dresden.deaddress compiler warnings and deprecationshttps://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/7[cleanup] remove autotools build system2018-06-19T17:30:10ZAnsgar Burchardtansgar.burchardt@tu-dresden.de[cleanup] remove autotools build systemhttps://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/6Add 'ConstrainedMatrix' and 'ConstrainedBitVector' to linearizations2017-11-28T10:46:57ZPatrick Jaappatrick.jaap@tu-dresden.deAdd 'ConstrainedMatrix' and 'ConstrainedBitVector' to linearizationsThe extended TNNMG step requires these typenames for the LinearSolver constructor.
For the build-in linearizations the contrained types are the same as the unconstrained ones.
Plus small notation change in tnnmgstep.hhThe extended TNNMG step requires these typenames for the LinearSolver constructor.
For the build-in linearizations the contrained types are the same as the unconstrained ones.
Plus small notation change in tnnmgstep.hhhttps://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/5Allow TNNMG to use Solvers::LinearSolver object2017-11-28T10:46:12ZPatrick Jaappatrick.jaap@tu-dresden.deAllow TNNMG to use Solvers::LinearSolver objecthttps://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/4WIP: Smooth potential2017-07-21T13:41:51Zlh1887WIP: Smooth potentialThis is for minimizing problems with the typical TNNMG structure, i.e.
> J(v) = 0.5 \<Av,v> - \<b,v> + \sum_i phi(v_i)
but with phi being a smooth function at this point. Basically, you should end up with a preconditioned and damped New...This is for minimizing problems with the typical TNNMG structure, i.e.
> J(v) = 0.5 \<Av,v> - \<b,v> + \sum_i phi(v_i)
but with phi being a smooth function at this point. Basically, you should end up with a preconditioned and damped Newton step.
This implementation has still some issues, which are (at least):
* [ ] Having so many template parameters (`PHI`, `PHIPRIME`, `PHI2PRIME`) is ugly. Maybe one wants something like `std::function`s instead,
* [ ] much of the code is based on non-smooth implementations, hence there are still some artefacts that are not really needed for the smooth case,
* [ ] the bisection local solver doesn't let you control all parameters the bisection offers,
* [ ] near the solution, the solver shows some oscillating behaviour, this is most likely a bug (to see this, set the tolerance in the LoopSolver to a smaller number),
* [ ] some *TODO* s which are marked as such in the code,
* [ ] and, finally, the whole code needs more documentation.
I'd be glad to get any kind of remarks, bugfixes, clean-ups etc.https://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/3Feature/new tnnmg simplex solver2017-06-02T12:51:40ZmaxkaFeature/new tnnmg simplex solverI would like to see this merged to `feature/new_tnnmg` for improved exposure and simplified feature-branch maintainability.
As it does not break any current beheviour, I will do so by the end of this week.I would like to see this merged to `feature/new_tnnmg` for improved exposure and simplified feature-branch maintainability.
As it does not break any current beheviour, I will do so by the end of this week.https://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/2Feature/guarded concept check2016-06-20T15:28:39ZpippingFeature/guarded concept checkLogical conjunction in templates does not appear to short-circuit. The concept check `IsLessThanComparable` fails to compile for tuples with clang and this cannot be helped by with a construct such as
```c++
models<Concept::IsLessThanC...Logical conjunction in templates does not appear to short-circuit. The concept check `IsLessThanComparable` fails to compile for tuples with clang and this cannot be helped by with a construct such as
```c++
models<Concept::IsLessThanComparable, V, L>() and not IsTupleOrDerived<V>()
```
as you can find it in boxconstrainedquadraticfunctional.hh -- also not if the order is reversed.
I've added a struct that evaluates the concept lazily -- only if it has to. Maybe such a thing already exists (I don't know -- it's not exactly rocket science). Maybe the name sucks ('lazy' rather than 'guarded'?). I'm putting this out here because it achieves the vital goal of making the final missing test on the `new_tnnmg` branch compile with clang for me but I consider it too controversial to push it as a compile-fix.https://git.imp.fu-berlin.de/agnumpde/dune-tnnmg/-/merge_requests/1Experiment: threaded generic jacobi2017-04-27T13:15:27ZpippingExperiment: threaded generic jacobiThis is not so much meant as a serious pull request but rather something to kick off a discussion with the ability to point at a piece of code.
I have a type of block problem in which the nonlinearity is constant so that its method `s...This is not so much meant as a serious pull request but rather something to kick off a discussion with the ability to point at a piece of code.
I have a type of block problem in which the nonlinearity is constant so that its method `solveLocalProblem` can be `const`. In this case (because nobody's writing anything) I believe I can safely read all my data, also in parallel.
So I've made the Jacobi method do just that. The speedup is not great. I get a reduction in runtime in the order of 30% with 2 threads instead of 1. It finally levels off at 40%. Better than nothing. Of course, this doesn't get us very far because the nonlinear smoother typically isn't the bottle-neck in applications. But maybe I've already made so many mistakes here that leads to so many objections about how to go about such changes that there's already room for a discussion...
Go, say something. Be brutal.