1. A computer-implemented method for solving adjoint models, the method comprising: (a) Providing, to a computer, a linear system of fluid flow equations comprising a plurality of variables that represent fluid flow properties in a geological formation of a subterranean reservoir; (b) constructing a matrix (Ã) T , through the computer, comprising a transpose of a Jacobian matrix, the transpose of the Jacobian matrix being associated with the linear system of fluid flow equations; (c) constructing a constrained pressure residual preconditioner M CPRA −1 , through the computer, responsive to the matrix (Ã) T wherein M CPRA −1 is a two-stage preconditioner constructed as: 
 M CPRA −1 =C ( A p T ) −1 C T [I −( Ã ) T ( {circumflex over (M)} ) −1 ]+( {circumflex over (M)} ) −1 ; and (d) solving, through the computer, matrix equation (Ã) T y=d using the constrained pressure residual preconditioner M CPRA −1 .