diff --git a/TODO b/TODO new file mode 100644 index 0000000000000000000000000000000000000000..deaa46f844bbe5464b15b6d3b39b24b5a36262f7 --- /dev/null +++ b/TODO @@ -0,0 +1,56 @@ +# Bugs + +* ProjectedBlockGSStep does nothing for a whole block if there are + zero diagonal entries in the diagonal block. + One would expect that it solves the system for the reduced + block containing the block rows with nonzero diagonal entry + in this case. +* MultigridStep is not robust wrt setup order. + + + +# Performance issues + +* BlockGSStep and the derived classes loop over each row twice. + Once for computing the residual, once for finding the diagonal entry. + This could be done in one loop. +* The ProjectedBlockGSStep 'solves' the local obstacle problems + by a local projected GS with a fixed number of 20 iteration steps. + For scalar valued problems one would be enough. Even for vector valued + problems one might still be OK but much cheaper. (Does this have any + performance impact on linear elasticity problems?) + + + +# Design issues + +* Implement (P)CG as IterationStep for the LoopSolver +* Make all public member variables protected and introduce public methods for access. +* Use references instead of pointers as member function arguments. +* Move stuff done in MultigridStep::setNumberOfLevels() into preprocess(). +* Make handling solution vector in IterationStep consistent: + Either provide a const reference, store a copy and give (reference) + access to this copy using getSol() or provide a (nonsonst) reference, + store the solution there and make getSol() return this reference + and no copy. + (C: I'd prefer the latter to reduce the number of vector copies). +* Make setting up a MultigridStep easier. E.g. by providing a default + version that is preconfigured with GS smoother and coarse grid solver. +* Remove MultigridStep::setNumberOfLevels(), this number is already + fixed by the size of the transfer operator vector. + + + +# Naming of classes and members + +* ignoreNodes_ should be called ignore_/ignoreIndices_/ignoreComponents_ + + + +# Missing features + +* Transfer operator assembler for adaptively refined grids (without refinementtype=copy) + This is already implemented in dune-fufem. It could be moved here if the + dependency on P1NodalBasis is removed. +* Nested iteration for ObstacleTNNMGStep. +