For this function, two versions have been implemented. The no frozen Opt constraints relates to an optimised version of constraints_shake_vv which does not implement frozen atoms. Generic Opt constraints takes account of this case. The difference is purely a function of the testcase and can be determined once and for all just after the input files have been read and before the main time stepping loop starts. As the no frozen atoms case is the more common and offers greater potential for optimisation it is useful to differentiate the two cases.