Page 1 of 1

Pennation angle and muscle length

Posted: Sat Aug 28, 2021 8:29 am
by michelagardi
Hello,
from the end paragraph of link https://simtk-confluence.stanford.edu/d ... cle+Models it is clear what happens when there is a rigid-tendon assumption in openSim since from IK geometry data MT length are determined and from there subtracting L(T)(tendon length): L(M)cos(alpha) can be found since there is an assumption L(M)sin(alpha)=h which allows it.
Is this last assumption always valid? How can the fiber length and pennation angle be univocally determined if tendon length is allowed to change (as in more realistic simulations as CMC)?

Re: Pennation angle and muscle length

Posted: Sat Aug 28, 2021 9:46 am
by tkuchida
Muscle fiber length is a state. Please see the first reference listed at the bottom of that page.

Re: Pennation angle and muscle length

Posted: Wed Sep 01, 2021 9:14 am
by michelagardi
Sorry, but it is not clear to me. What is the consequence of muscle are states? How is the penation angle calculated?

Re: Pennation angle and muscle length

Posted: Wed Sep 01, 2021 5:13 pm
by tkuchida
Please see the documentation and Millard 2013 paper regarding the "fixed-width pennation model" assumption. Pennation can be calculated once fiber length is known (https://github.com/opensim-org/opensim- ... l.cpp#L126):

Code: Select all

double MuscleFixedWidthPennationModel::
calcPennationAngle(double fiberLength) const
{
    double phi = 0;
    double optimalPennationAngle = get_pennation_angle_at_optimal();

    // This computation is only worth performing on pennated muscles.
    if(optimalPennationAngle > SimTK::Eps) {
        if(fiberLength > m_minimumFiberLength) {
            double sin_phi = m_parallelogramHeight/fiberLength;
            phi = (sin_phi < m_maximumSinPennation) ?
                  asin(sin_phi) : get_maximum_pennation_angle();
        } else {
            phi = get_maximum_pennation_angle();
        }
    }
    return phi;
}