Page 1 of 1
Elastic Foundation Force properties
Posted: Sun Oct 09, 2016 1:03 pm
by mariakrgrg
Hello there,
I have added contact meshes to my lower limb .osim model. And now I want to add contact forces on them. (On femur and meniscii).
I figured out that Elastic Foundation Force is what OpenSim provides for this situation.
But how can I define the properties (stiffness, dissipation, static friction, dynamic friction, viscous friction) that this force needs?
I've searched in bibliography and couldn't find something helpful. Should I calculate them somehow? If yes what's the best procedure?
Thanks for your time,
Maria K.
Re: Elastic Foundation Force properties
Posted: Mon Oct 10, 2016 11:27 pm
by mitkof6
Hi Maria,
This may help:
Code: Select all
void KneeAdjustment::add_contact_geometry()
{
ContactMesh* femur_r = new ContactMesh(
"data/geometry/femur.obj", Vec3(0), Vec3(0),
m_model->updBodySet().get("femur_r"), "contact_femur_r");
m_model->addContactGeometry(femur_r);
ContactMesh* tibia_r = new ContactMesh(
"data/geometry/tibia.obj", Vec3(0), Vec3(0),
m_model->updBodySet().get("tibia_r"), "contact_tibia_r");
m_model->addContactGeometry(tibia_r);
m_model->buildSystem();
double stiffness = 1.E6;
double dissipation = 1.0;
double staticFriction = 0.8;
double dynamicFriction = 0.4;
double viscousFriction = 0.4;
OpenSim::ElasticFoundationForce::ContactParameters right_knee_param;
right_knee_param.addGeometry("contact_femur_r");
right_knee_param.addGeometry("contact_tibia_r");
right_knee_param.setStiffness(stiffness);
right_knee_param.setDissipation(dissipation);
right_knee_param.setStaticFriction(staticFriction);
right_knee_param.setDynamicFriction(dynamicFriction);
right_knee_param.setViscousFriction(viscousFriction);
right_knee_param.print("data/out/param.xml");
OpenSim::ElasticFoundationForce* right_knee_force = new OpenSim::ElasticFoundationForce();
right_knee_force->setName("right_knee_contact");
right_knee_force->addContactParameters(&right_knee_param);
right_knee_force->setTransitionVelocity(0.2);
right_knee_force->print("data/out/contact.xml");
m_model->addForce(right_knee_force);
/* OpenSim::HuntCrossleyForce* right_knee_contact = new OpenSim::HuntCrossleyForce(right_knee_param);
right_knee_contact->setName("right_knee_contact");
right_knee_contact->setTransitionVelocity(0.2);
m_model->addForce(right_knee_contact);*/
/*ContactMesh* femur_l = new ContactMesh(
"C:/OpenSim 3.2/Geometry/l_femur.vtp", Vec3(0), Vec3(0),
m_model->updBodySet().get("femur_l"), "contact_femur_l");
femur_l->setDisplayPreference(4);
m_model->addContactGeometry(femur_l);
ContactMesh* tibia_l = new ContactMesh(
"C:/OpenSim 3.2/Geometry/l_tibia.vtp", Vec3(0), Vec3(0),
m_model->updBodySet().get("tibia_l"), "contact_tibia_l");
tibia_l->setDisplayPreference(4);
m_model->addContactGeometry(tibia_l);*/
}
Re: Elastic Foundation Force properties
Posted: Tue Oct 11, 2016 8:01 am
by mariakrgrg
Hi Dimitar,
thanks for your reply, it was helpful.
But I did not formulate my question properly. My question is, how to validate Elastic Foundation Force property values.
Because in bibliography I can find only some of the properties or I find approximate values. Is something you validate with simulations and plots? If yes, could I have some example?
P.S. Maybe I could use the properties of your example for Femur, but still I cannot find for Meniscii dissipation and friction coefficients.
Re: Elastic Foundation Force properties
Posted: Wed Oct 12, 2016 12:16 am
by mitkof6
I think you can relate the contact parameters to measurable properties of the matter.
https://github.com/simbody/simbody/blob ... yContact.h
Best