<div dir="ltr">I have a specialized matrix structure I'm trying to take advantage of for solving large scale (non)linear systems. I think for this purpose using a Shell matrix is sufficient for interfacing with PETSc's KSP linear solvers.<div><br></div><div>Looking at the examples which use shell matrices, it seems most only require implementing MatMult, and sometimes MatMultTranspose. Is there a list of what operations are required (or optional but good to have) for the different KSP solver types? This is specifically for the KSP solve itself, not constructing the actual matrix. I'd also be interested if any of the required/optional operations changes if preconditioners (left and/or right) are used.</div></div>