The ProjectedNewtonStep class implements a solver for quadratic minimization problems with bound constraints. Therefore the Newton matrix is always the same, only individual rows/cols are deleted (aka: truncated) when the corresponding dofs are active.
Strictly speaking, by this truncation the matrix does change from one iteration to the next, and it needs to be refactored at every iteration. However, if the set of truncated dofs changes little between iterations it can be advantageous to not refactor but rather use the CHOLMOD support for deleting and re-adding matrix rows/cols to an existing factorization.
This patch is WIP: It still contains debugging output. Also, we need a decent heuristic to decided when to refactor and when to delete/add rows.