<div dir="ltr">We saw a regression with our code when updating from 3.7 to 3.8.<div><br></div><div>The immediate reason is this commit, which removes the default support for KSP_NORM_NONE : <a href="https://bitbucket.org/petsc/petsc/commits/d964cf50809c6d62ebfac94313c885678fbcc365">https://bitbucket.org/petsc/petsc/commits/d964cf50809c6d62ebfac94313c885678fbcc365</a></div><div><br></div><div>This caused our regression because we have a test using FGMRES as a smoother. PCMG by default sets the norm type to none, but FGMRES doesn't have explicitly-specified support for this norm type. </div><div><br></div><div>You can reproduce in maint with a KSP example, e.g. </div><div><br></div><div>     cd $PETSC_DIR/src/ksp/ksp/examples/tutorials</div><div>     ./ex23 -ksp_type fgmres -ksp_max_it 3 -ksp_norm_type none</div><div>     ./ex50 -pc_type mg -pc_mg_levels 2 -mg_levels_ksp_type fgmres<br></div><div><br></div><div>Note that the the following work</div><div><br></div><div>    ./ex23 -ksp_type gmres -ksp_max_it 3 -ksp_norm_type none</div><div>    ./ex23 -ksp_type fgmres -ksp_max_it 3 -ksp_convergence_test skip<br></div><div><div>    ./ex50 -pc_type mg -pc_mg_levels 2 -mg_levels_ksp_type gmres<br></div></div><div><br></div><div>But this does not</div><div><br></div><div><div>    ./ex50 -pc_type mg -pc_mg_levels 2 -mg_levels_ksp_type fgmres -mg_levels_ksp_convergence_test skip<br></div></div><div><br></div><div><br></div><div><br></div><div>A "quick fix" here would be</div><div>1) Add following line to KSPCreate_FGMRES() :</div><div><br></div><div>    ierr = KSPSetSupportedNorm(ksp,KSP_NORM_NONE,PC_RIGHT,1);CHKERRQ(ierr);</div><div><br></div><div>2) Fix the man page for KSPSetSupportedNorm() to remove the outdated information about default support for KSP_NORM_NONE.</div><div><br></div><div>I will speculatively submit a PR for maint with this.</div><div><br></div><div><br></div><div><br></div><div>However, the deeper problem may be some inconsistency in the code about the difference between a method being able to proceed without computing a norm, and the desire (for smoothing, usually) to skip a convergence test.</div><div><br></div><div>Perhaps a better resolution would be to change this line to instruct smoother KSPs to skip convergence tests, as opposed to not use a norm -  worth pursuing? <a href="https://bitbucket.org/petsc/petsc/src/a04709285cba4f746cbcb9aa495f8cf7adf5132d/src/ksp/pc/impls/mg/mg.c?at=master&fileviewer=file-view-default#mg.c-239">https://bitbucket.org/petsc/petsc/src/a04709285cba4f746cbcb9aa495f8cf7adf5132d/src/ksp/pc/impls/mg/mg.c?at=master&fileviewer=file-view-default#mg.c-239</a></div><div><br></div><div><br></div></div>