TODO 2.08 KB
Newer Older
graeser's avatar
graeser committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 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.