Skip to content
Snippets Groups Projects
Commit cb29a2fb authored by graeser's avatar graeser Committed by graeser
Browse files

More things to be done

[[Imported from SVN: r5917]]
parent c01388ef
No related branches found
No related tags found
No related merge requests found
# Bugs # ToDo
## Bugs
These issues are not real bugs, but unexpected behaviour that might
lead to serious trouble if you're not aware of.
* ProjectedBlockGSStep does nothing for a whole block if there are * ProjectedBlockGSStep does nothing for a whole block if there are
zero diagonal entries in the diagonal block. zero diagonal entries in the diagonal block.
...@@ -9,7 +14,10 @@ ...@@ -9,7 +14,10 @@
# Performance issues ## Performance issues
While a suboptimal implementation might be OK, if it is cleaner
and more readable these issues may decrease the performance
without any again.
* BlockGSStep and the derived classes loop over each row twice. * BlockGSStep and the derived classes loop over each row twice.
Once for computing the residual, once for finding the diagonal entry. Once for computing the residual, once for finding the diagonal entry.
...@@ -22,7 +30,9 @@ ...@@ -22,7 +30,9 @@
# Design issues ## Design issues
Things that could be improved to make dune-solvers easier to use, understand,
and maintain.
* Implement (P)CG as IterationStep for the LoopSolver * Implement (P)CG as IterationStep for the LoopSolver
* Make all public member variables protected and introduce public methods for access. * Make all public member variables protected and introduce public methods for access.
...@@ -38,19 +48,33 @@ ...@@ -38,19 +48,33 @@
version that is preconfigured with GS smoother and coarse grid solver. version that is preconfigured with GS smoother and coarse grid solver.
* Remove MultigridStep::setNumberOfLevels(), this number is already * Remove MultigridStep::setNumberOfLevels(), this number is already
fixed by the size of the transfer operator vector. fixed by the size of the transfer operator vector.
* MultigridStep hides member names from the base class by reusing
them for different things
* MultigridStep works differently on the finest and the other
levels. On the finest, the smoother is used with the rhs of
the linear system and the current iterate as initial value
to compute the new iterate. On the coarse levels it is used to
solve the defect system approximately, i.e., it computes a
correction with the residual and zero initial value.
This should be unified or at least documented.
Computing corrections also on the finest level might allow
to solve systems really up to machine accuracy sice you
have more digits for the correction.
# Naming of classes and members ## Naming of classes and members
* ignoreNodes_ should be called ignore_/ignoreIndices_/ignoreComponents_ * ignoreNodes_ should be called ignore_/ignoreIndices_/ignoreComponents_
# Missing features ## Missing features
A wish list for features that would be very welcome.
* Transfer operator assembler for adaptively refined grids (without refinementtype=copy) * Transfer operator assembler for adaptively refined grids (without refinementtype=copy)
This is already implemented in dune-fufem. It could be moved here if the This is already implemented in dune-fufem. It could be moved here if the
dependency on P1NodalBasis is removed. dependency on P1NodalBasis is removed.
* Nested iteration for ObstacleTNNMGStep. * Nested iteration for ObstacleTNNMGStep.
* An interface to add custom output and termination criteria to the LoopSolver.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment