I was trying to use the AMGCL-CPR solver to solve adjoint problems and it didn't seem to perform particularly well. Upon investigation, I realized one potential pitfall of the current implementation. That is, in adjoint equation, the coefficient matrix is the transpose of the Jacobian matrix so the standard CPR preconditioners wouldn't work. There have been papers trying to adapt CPR to adjoint solution such as this one
Adaptation of the CPR Preconditioner for Efficient Solution of the Adjoint Equation | SPE Journal | OnePetro . However, I don't think such work is available in MRST or AMGCL. It is my impression that AMGCL always assumes the coefficient matrix is the Jacobian matrix because I couldn't not find any such setting in its documentation.
What are your thoughts on this? Thanks for your hard works on MRST.