So currently, I can do<div><br></div><div>$ ./ex2 -ksp_pc_side right -ksp_norm_type preconditioned</div><div><br></div><div>which is nonsense (it actually uses the unpreconditioned norm). We could just add a guard in KSPSolve_GMRES to handle this case, but then</div>
<div><br></div><div>./ex2 -ksp_pc_side right</div><div><br></div><div>fails. It would be a pain to have two options that always need to be changed together so maybe calling KSPSetPCSide() should automatically choose which side to use. But that isn't consistent across methods and it's really bad to ignore explicit user input. Also, what if you just want to think about what norm the residuals are calculated in instead of thinking of which "side" the preconditioner is working with.</div>
<div><br></div><div>So what if instead we had KSP_NORM_DEFAULT and PC_SIDE_DEFAULT, then KSPSetUp_XXX() would turn the default value into whatever actually works and error if the user has set an incompatible combination?</div>