c-rescale doesn't work in NPH
## Summary C-rescale uses the reference temperature in its stochastic term. When using MD and no temperature coupling algorithm, `grompp` silently sets the reference temperature to 0, independently of the mdp value of `ref-t`. C-rescale then, just as silently, uses this reference temperature in its stochastic term. This leads to the stochastic term cancelling out, and c-rescale essentially retrieving Berendsen barostat behavior. Under NPH, c-rescale is therefore having the same non-physical behavior as Berendsen, without any notice to the user. **Edit:** As mentioned by @GiovanniBussi below, c-rescale doesn't become identical to Berendsen, as c-rescale still does velocity scaling which is not present in Berendsen. This affects all versions of GROMACS in which c-rescale is present. ## Possible fixes I think we can * forbid the combination (i.e. throw an error if c-rescale barostat is chosen with ref-t == 0), which would mean that c-rescale can't be used for NPH calculations. * add an additional mdp value for the barostat reference temperature. That would likely require some sanity checks when ref-t != 0 (what happens if a user choses different temperatures for thermostat and barostat??). * change the behavior of grompp, and avoid it setting the reference temperature to 0. I think that would be the cleanest solution, but would require careful checking that no other code is depending on this value being zeroed in NVE / NPH calculations. Happy to hear your thoughts, @GiovanniBussi and @berkhess.
issue