We currently have to manually set the contact in the CostDataForce.
I see one solution to the issue of manually setting the contact in the costdataforce. We could move the definition of ContactModel inside PinocchioModel. So instead of saving the contactmodel in IAM, we save it in IAM.pinocchioModel.ContactModel and IAM.pinocchioData.ContactData.
It is not dirty, and the dynamics and contacts go hand in hand anyways. Does this solution appeal to you?