I guess we should do a 2.7 release (with that I mean creating a releases/2.7 branch). I'm not sure if current master of pdelab works with 2.7 or if we already have some merges that are not 2.7 compatible (eg the shared_ptr stuff). I could test that and report back. If it doesn't work I would just branch off around the time when 2.7 was released.
Any opinions or things that should be taken into account?
Bring dune-pdelab master in a state that works with master and 2.7 of the core modules.
I would branch off at 33aaa8e2 since the CI is working with 2.7. Then I would fix warnings in master and backport to 2.7. And then I would tackle issues in master and target those for 2.8.
But that is just what I would do and the reason why I asked about your opinion :). We can also do it differently.
On core master + pdelab master the test testordering fails (on donkey with gcc@8.3.0). I will check if this is also the case on my local machine but that takes a bit more time.
I would highly appreciate it if there was a 2.7 release ASAP. I do not care for any additional features---the status quo is fine with me (as long as the CI passes).
@rhess@santiago.ospina: as discussed with @oliver.sander today on the phone, I suggest to have a video-conference regarding a 2.7 release on monday or tuesday.
Topic we need to discuss:
which issues are show-stoppers?
a time line
when to create a branch?
branch-point for 2.7
Feel free to add more topics and inform other people which might be interested in joining.
I suggest now a meeting on monday 16:00 CEST (UTC+2). We could use https://meet.jit.si/ to meet.
Please reply to this comment and leave me a note it you want to join. I can create a session and send the details around.
As a mere user that needs a 2.7 release I am not sure whether my presence at the meeting is helpful. But if you think it is I'll be happy to join. 16:00 CEST is okay for me.
@oliver.sander I don't think it is necessary that you join, except if you have particular remarks you'd like to add to the discussion.
@santiago.ospina would you be able to join at 16:00?
I'm not sure if the plan above still makes sense. If we try to make pdelab master work with core master and 2.7 we run into the problem of Std::make_index_sequence being replaced by std::make_index_sequence. It would be easier to just make pdelab compatible with core@2.7, branch off and then make it compatible with master.
I'm not sure if the plan above still makes sense. If we try to make pdelab master work with core master and 2.7 we run into the problem of Std::make_index_sequence being replaced by std::make_index_sequence. It would be easier to just make pdelab compatible with core@2.7, branch off and then make it compatible with master.
There are currently 4 spots in pdelab using Std::make_index_sequence. I think these can easily be managed. And currently we still have std::make_index_sequence imported into the namespace std in dune-common.
@rhess I would like to deprecate the old DiscreteGridFunction implementations. We have an implementation of the dune-functions style interface and having two interfaces around will lead to chaos on the long run.
do you see a major obstacle?
currently we only have the gradient type derivative. Is this sufficient?
are there features we need to add? E.g. do we need curl(fnkt)?
I always thought that the new one is not yet able to handle vector and power function spaces? That would be something I'm concerned about.
Regarding pull-backs: I guess the question is if the pullback is done automatically or if it is done outside by the user? From a performance point of view it makes sense if it is possible to apply it manually.
I don't have strong opinions on the derivative stuff but I maybe others will have to say something. @dominic ?
As a user of DiscreteGridFunction in DORiE and dune-copasi I wouldn't be very happy if the transition to dune-functions requires me to know the internals of the two versions in order to upgrade my code.
As the Hybrid Tree Path issue is fixed (thanks @christi !) I now ran our tests with different compilers and varying results. I ran pdelab@master with core@master and with core@2.7. Below is a summary:
core@master
core@2.7
gcc@7.1.0
fail
fail
gcc@8.3.1
fail
success
gcc@9.3.0
fail
success
clang@8.0.0
fail
fail
clang@9.0.1
fail
fail
For the core@master it fails this way:
gcc@7.1.0: Building the tests
gcc@8.3.1: Execution of testordering (see !492 (merged))
gcc@9.3.0: Execution of testordering
clang@8.0.0: Execution of testordering and testpk2dinterpolation
clang@9.0.1: Execution of testordering and testpk2dinterpolation
For core@2.7 I get the following problems:
gcc@7.1.0: Execution of several nonoverlapping tests (testnonoverlappingsinglephase... and testnonoverlapping-mpi-2)
clang@8.0.0: Execution of testpk2dinterpolation
clang@9.0.1: Execution of testpk2dinterpolation
On my local machine I could confirm the errors for gcc9 and clang9 for master and 2.7. If someone has a working gcc@7 it would be interesting to see if it behaves similar.
I will do more tests tomorrow and see where that leads...
I fixed the testordering and testpk2dinterpolation tests and Dominic added CMakeGuards and tested with gcc@7.5.0 and clang@6. Now the tests should pass for core@master and core@2.7 for gcc>=7.5.0 and clang>=6.?.?.
Regarding gcc@7.1.0: This could also be an issue of the gcc7 compiler on our compute server.
Warnings
Regarding warnings there seem to be 3 classes:
Warnings regarding Hybrid Tree Path
Warnings regarding Dune::Function deprecation. This probably needs some fixes in dune-functions first (see staging/dune-functions#57 (closed)) and afterwards some changes in pdelab.
Other warnings. I can't tell how many there are since the other two cases produce a huge amount of output. I don't think there are many.
#102: Status unclear, probably complicated and annoying?
New merge requests
I don't care if the matrix-free stuff is part of the release or not. There is a new merge request by @linus.seelinger. Maybe this could be included? We should discuss over there: !481
Packaging tar
In the description above creating tars in mentioned. In my opinion we don't need to do that (you can also get tars through gitlab). Instead I propose rewriting https://www.dune-project.org/modules/dune-pdelab/. I would volunteer to do that.
I ran all the tests with gcc 7,8,9 and clang 6 and master seems to be in a pretty good state now. I also started to work on removing warnings, the only big one left in this regard is the TreePath one that I did not look into:
warning: ‘using TreePath = class Dune::TypeTree::HybridTreePath<Dune::index_constant<i>...>’ is deprecated: use StaticTreePath, this type will be removed after DUNE 2.7 [-Wdeprecated-declarations]
What is the fix for this one? I also agree with everything @rhess and @christi said above about how to proceed except that I still have no idea about how to fix #102.
The usage seems to be typetree internal (e.g. in childextraction.hh):
In file included from /home/domse/structures/dune-typetree/dune/typetree/powernode.hh:17, from /home/domse/structures/dune-typetree/dune/typetree/typetree.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/common/function.hh:17, from /home/domse/structures/dune-pdelab/dune/pdelab/boilerplate/pdelab.hh:59, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic-2d.cc:7:/home/domse/structures/dune-typetree/dune/typetree/childextraction.hh:168:60: warning: ‘using TreePath = class Dune::TypeTree::HybridTreePath<Dune::index_constant<i>...>’ is deprecated: use StaticTreePath, this type will be removed after DUNE 2.7 [-Wdeprecated-declarations] 168 | decltype(auto) child (Node&& node, TreePath<Indices...>) | ^In file included from /home/domse/structures/dune-typetree/dune/typetree/childextraction.hh:16, from /home/domse/structures/dune-typetree/dune/typetree/powernode.hh:17, from /home/domse/structures/dune-typetree/dune/typetree/typetree.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/common/function.hh:17, from /home/domse/structures/dune-pdelab/dune/pdelab/boilerplate/pdelab.hh:59, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic-2d.cc:7:/home/domse/structures/dune-typetree/dune/typetree/treepath.hh:433:11: note: declared here 433 | using TreePath [[deprecated("use StaticTreePath, this type will be removed after DUNE 2.7")]] = HybridTreePath<Dune::index_constant<i>...>; | ^~~~~~~~In file included from /home/domse/structures/dune-typetree/dune/typetree/powernode.hh:17, from /home/domse/structures/dune-typetree/dune/typetree/typetree.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/common/function.hh:17, from /home/domse/structures/dune-pdelab/dune/pdelab/boilerplate/pdelab.hh:59, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic-2d.cc:7:/home/domse/structures/dune-typetree/dune/typetree/childextraction.hh:178:57: warning: ‘using TreePath = class Dune::TypeTree::HybridTreePath<Dune::index_constant<i>...>’ is deprecated: use StaticTreePath, this type will be removed after DUNE 2.7 [-Wdeprecated-declarations] 178 | auto childStorage (Node&& node, TreePath<Indices...>) | ^In file included from /home/domse/structures/dune-typetree/dune/typetree/childextraction.hh:16, from /home/domse/structures/dune-typetree/dune/typetree/powernode.hh:17, from /home/domse/structures/dune-typetree/dune/typetree/typetree.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/common/function.hh:17, from /home/domse/structures/dune-pdelab/dune/pdelab/boilerplate/pdelab.hh:59, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic-2d.cc:7:/home/domse/structures/dune-typetree/dune/typetree/treepath.hh:433:11: note: declared here 433 | using TreePath [[deprecated("use StaticTreePath, this type will be removed after DUNE 2.7")]] = HybridTreePath<Dune::index_constant<i>...>; | ^~~~~~~~In file included from /home/domse/structures/dune-typetree/dune/typetree/powernode.hh:18, from /home/domse/structures/dune-typetree/dune/typetree/typetree.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/common/function.hh:17, from /home/domse/structures/dune-pdelab/dune/pdelab/boilerplate/pdelab.hh:59, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic-2d.cc:7:/home/domse/structures/dune-typetree/dune/typetree/typetraits.hh:170:17: warning: ‘using TreePath = class Dune::TypeTree::HybridTreePath<Dune::index_constant<i>...>’ is deprecated: use StaticTreePath, this type will be removed after DUNE 2.7 [-Wdeprecated-declarations] 170 | -> std::true_type | ^~~~~~~~~In file included from /home/domse/structures/dune-typetree/dune/typetree/childextraction.hh:16, from /home/domse/structures/dune-typetree/dune/typetree/powernode.hh:17, from /home/domse/structures/dune-typetree/dune/typetree/typetree.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/common/function.hh:17, from /home/domse/structures/dune-pdelab/dune/pdelab/boilerplate/pdelab.hh:59, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic.hh:10, from /home/domse/structures/dune-pdelab/dune/pdelab/test/testpoisson-periodic-2d.cc:7:/home/domse/structures/dune-typetree/dune/typetree/treepath.hh:433:11: note: declared here 433 | using TreePath [[deprecated("use StaticTreePath, this type will be removed after DUNE 2.7")]] = HybridTreePath<Dune::index_constant<i>...>;