I understand that ERP and CFM are 2 tuning knobs to allow for penetration and do constraint violation correction. Can someone give more details on how the constraint error reduction is done? I tried looking at the source code, but could not get a clear picture of where the error is detected and how it is being corrected.