proportional drive function