acceleration damping: ad2 = ad1^((40/60)^2)... maybe? (this is a pure guess)
If acc(n,t) is the value for acc after time t seconds when running at nHz, then:
acc(60,t) = acc(40,t) * (40/60)^2
acc(40,0) = acc(40,1) * ad1^(40)
acc(60,0) = acc(60,1) * ad2^(60)
Which gives:
acc(40,0) * (40/60)^2 = acc(40,1) * (40/60)^2 * ad2^(60)
acc(40,0) = acc(40,1) * ad2^(60)
acc(40,1) * ad1^(40) = acc(40,1) * ad2^(60)
ad1^(40) = ad2^(60)
ad2 = ad1^(40/60)
impulse: i1 = the same as acceleration, maybe? (again, grasping at straws)
It would be i2 = i1 * (40/60).
I think you're making it hard for yourself by calling values things like vel, acc or imp when they are not a velocity/acceleration/impulse, since you've multiplied the duration of the time step into them.
The "vel" you're using is actually velocity * time step
"acc" is acceleration * time step * time step
"imp" is impulse * time step / mass
If you used real world names for the quantities, things would probably be clearer.
Bear in mind that, because of the approximations made, different simulation rates will almost certainly lead to divergent results. For instance, even in a very simple case: if something is accelerating from 0m/s at 1 m/s/s over 1s, you'd want it to have moved 0.5m. Instead, at nHz you'd get (n^2+n)/(2(n^2)) (i.e. at 40Hz you get 0.5125m and at 60Hz you get 0.5083m; higher rates get a better approximation). The difference will mount up, potentially enough to make a significant difference to the player.