Page 1 of 1

Shape factor for Force-Length relationships

Posted: Thu Sep 29, 2011 4:41 am
by nataliakosterina
Hi!

I am trying to reproduce calculations of active and passive forces and force-length-velocity surface using the fiber length. Most of fibers during different movements have fiber length below the 'optimal_fiber_length' (for example, lower body model, Gait2354). If we use 'function representing passive force-length behavior of muscle fibers' from *.osim file, then we are not supposed to have passive force. But OpenSim Plotter shows that the passive force exists even for fiber length below optimal. Considering my experimental experience, this is reasonable.

I could not figure out how to use the shape factors for active and passive force-length relationships, and force-velocity shape factor. Perhaps, the shape factors may lead some light on my problem:
how to calculate the forces using fiber length?

Hoping to get a help,
Natalia

Re: Shape factor for Force-Length relationships

Posted: Fri Oct 07, 2011 10:12 pm
by aseth
From Thelen2003Muscle implementation:

Code: Select all

double Thelen2003Muscle::calcPassiveForce(const SimTK::State& s, double aNormFiberLength) const
{
	double passive_force;

	if (aNormFiberLength>(1+_fmaxMuscleStrain)) { // Switch to a linear model at large forces
		double slope=(_kShapePassive/_fmaxMuscleStrain)*(exp(_kShapePassive*(1.0+_fmaxMuscleStrain-1.0)/_fmaxMuscleStrain)) / (exp(_kShapePassive));
		passive_force=1.0+slope*(aNormFiberLength-(1.0+_fmaxMuscleStrain));
	}
	else
		passive_force = (exp(_kShapePassive*(aNormFiberLength-1.0)/_fmaxMuscleStrain)) / (exp(_kShapePassive));

	return passive_force;
}

Code: Select all

double Thelen2003Muscle::calcActiveForce(const SimTK::State& s, double aNormFiberLength) const
{
	double x=-(aNormFiberLength-1.)*(aNormFiberLength-1.)/_kShapeActive;
	return exp(x);
}
These are supposed to correspond to Thelen, JBME 2003.