Driver generation for examples with matrix-free preconditioners
Make it possible to generate the driver and driverblock for examples using matrix-free preconditioners.
In order to build the matrix-free solvers in your solver block you need to:
- Specify all necessary operators in the ini file, see eg
dune-codegen/test/matrix-free-preconditioner/
for an example. - You need to set the two form options
matrix-free-preconditioner
andmatrix_free_preconditioner_operators
in your main form. - You need to set the
driver_blocks
option and within the driver block set the correctspatial_form
.
After setting all these dune-codegen will generate all the operators, create a driverblock using them and generate the correct driver code.
Note: One change I did to the driver generation: If there is exactly one driver block we can always generate a driver, no matter how many operators are defined, as it is always clear that the driver should use the solver from the driver block.
Merge request reports
Activity
added 22 commits
-
b74a5ff7...266a0eac - 17 commits from branch
master
- 19d9fd9c - [skipci][WIP] Driver implementation of matrix free solvers
- 956a943e - [skipci][WIP] Driverblock generation with proper file- and classnames
- 9f7a40ad - Fix bug in matrix-free preconditioner generation
- f83e45e0 - Generate driver if only one driverblock exists
- 9ae68f0a - Generate driver in test case
Toggle commit list-
b74a5ff7...266a0eac - 17 commits from branch
@dominic It was good that we talked about it on Friday. It was very easy to implement it this way as the whole driver block business was more flexible than I thought.
One note: So far this is still a bit lacking as I cant generate two driver blocks, one matrix-based and one matrix-free, from the same operators. So far the choice of matrix-free solver in the driver block is deduced from the matrix-free option in the form. I will change this in a follow up MR.
mentioned in merge request !428 (merged)
- Resolved by René Heß
@marcel.koch Do you have opinions regarding this? Here the changes to the driver generation itself are quite small so I would hope that it doesn't interfere with your MRs.
mentioned in merge request !422 (merged)
added 56 commits
-
862f2106...cab23943 - 55 commits from branch
master
- 6139d179 - Merge branch 'master' into feature/matrix-free-driver-generation
-
862f2106...cab23943 - 55 commits from branch
mentioned in commit 66783bbe