Incorporating muscle fatigue

Dear AnyBody,

I would to bring up an old topic that has been addressed before, which is how to account for muscle fatigue in AnyBody. I am aware that AnyBody does not have such capability yet, but it’s possible to run separate analyses using different muscle properties as an approximation. I wonder:

  1. What are the muscle parameters to be considered? If I am interested in fatigue in a runner, shall I decrease the “Strength Scaling” parameter of the Foot/Shank/Thigh under HumanModel\Scaling\StrengthScaling; or shall I change the SpcificMuscleTensionSpine, StrengthIndixLeg, and SpecificMuscleTensionShoulderArm; or change the F0 parameter in a muscle? What will be most proper way to do it?

  2. Do I need to use a difference C3D data to simulate fatigue? My understanding is, if the C3D remains the same (kinematics and GRFs are the same), unless the the internal forces needed to generate the necessary kinematics reaches the new (decreased) capacity, I shall expect the same predicted muscle/JRFs as the running the model with normal muscle strength, and the only difference will be greater Muscle Envelop, is that correct?

Thank you very much!

Just to follow up, I would like to model the changes in muscle&joint reaction forces induced by fatigue, as literature suggests that fatigue leads to increased mechanical loading to the bone. Since I do not yet have a muscle fatigue model, or MoCap data acquired from a fatigue subject, I changed a few parameters in a normal running model and found:

  1. By reducing the StrengthIndexLeg parameter by 50%, the magnitude of the Envelope profile doubled, whereas its shape remained the same. Muscle forces and JRFs did not change. This proved my previous hypothesis: with no changed in kinematics and GRFs, we will not observe changes in muscle & JRFs. The predicted muscle activities increases as the result of the reduced overall muscle strength.
  2. By changing the one or two strengthscaling parameters in the lower extremity, no marked changes in muscle forces (e.g., soleus) or JRFs were observed. The magnitude and shape of the muscle envelope changed.

Is it safe to conclude: to characterize altered JRFs and muscle forces due to fatigue, the most important thing is the MoCap data acquired after fatigue occurs? Secondly, to incorporate the decreased muscle capacity due to fatigue, shall I modify StrengthIndexLeg? or StrengthScaling parameter? or F0 of a few selected muscles?

Thank you for your help!

Hi Phoebe,

Yes, the primary changes in loads will probably be due to the altered kinematics. But there will also be some change in activation pattern if primary muscles become too weak to carry out this task - some other muscles with worse moment arms will be engaged as more optimal. But this will not be seen if you change muscle strength through the StrengthIndex parameter - all muscles will be scaled at the same leaving the activation pattern the same.

In reality fatigue accumulation rate is different for different muscles and will depend on the activation history. So you would probably want to decrease strength of individual muscles. It can either be done through setting individual F0s through AnySetValueOperation (in case updating happens in the next simulation) or by implementing a history-dependent functions based on AnyFunEx classes, e.g. AnyFunExMonoPy. The latter could be used to implement F0 as a function that will be updated each time step and save history into a muscle-specific file. The former approach might be a bit easier, but it depends how you approach it.

Kind regards,

Hi Pavel,

I am able to modify F0s for different muscles to simulate a controlled “fatigue.” By reducing F0s of gastrocnemious, the overall muscle activity increased, and Fms of gastrocmemious reduced, which makes sense.

Can you elaborate on “implementing a history-dependent function”, and show me how to decrease F0s systemically?

Much appreciated!

Hi Phoebe,

It needs an AnyFunExMonoPy function that would be linked to a muscle and would be storing its activation history into a file every time it is called (which would be every step). At the same time it would update F0 of this muscle according to some mathematical model of muscle fatigue. This is the idea, but unfortunately I do not have a ready code for this and do not have much time to get my hands into this. Try looking at the ref. manual to understand how this function works and hopefully it will be clear what to do.

Another problem is that for the short physical activities this functionality may not necessary change much. But if you have a rather long simulation with higher activations - the effect may be more pronounced.

Kind regards,

Hi Pavel,

Thank you for your reply! It is very helpful.

I would like to look at the impact of fatigue on tibial biomechanics. Just as a proof of concept trial, I made the following modifications to F0 of some muscles passing the tibia simulate a fatigue condition:

  1. three knee extensor muscles, including Rectus Femoris (reduced by 60%), VastusMedialisMid (by 60%), and VastusLateralisSuperior (by 75%), and Tensor Fasciae Latae (by 60%);
  2. four knee fexor muscles, including Semitendinosus (by 60%), seimenmbranosus (by 60%), BicepsFemorisCaputLongum (by 75%), and Gastrocnemius Lateralis/Medialis (from ~1550 and 2800 to 500 N).
  3. two ankle dorsi-flector muscles, including Tibialis Anterior (by 60%) and Gluteus minimus (anterior: mid, and posterior, by 60%);
  4. one ankle plantar-flexor (Soleus Medialis and Lateralis, by 60%).

As you can see, the changes in F0 are quite drastic. I expected to see an increase in JRF and muscle forces, and consequently an increase in tibial stress/strain, as muscles with worse moment arms are engaged to carry out the same task (kinematics and GRF remain the same). However, I observed only 3% and 2% increase in the hip and ankle JRFs, and 23% reduction in knee JRF. Although there is a 93% increase in the muscle activity envelope, I think it is due to the decrease in muscle strength. Using the JRF and muscle forces as the boundary conditions for FEA, the stress (and strain) computed for the fatigue condition (left) are far more lower than those computed for the normal condition (right).

I am trying to figure out why I see an improved tibial biomechanics after reducing the maximum capacities in some muscles. Your insightful suggestions are greatly appreciated!

Thank you,

Hi Phoebe,

Here is a quick answer, i would do the following:

  1. Check which muscles took over the force previously created by the muscles you reduced the force from.

  2. For these muscles evaluate if their moment is really worse, than the muscles you reduced.

  3. I would also look at the loading situation in a more overall perspective, i am not aware if this model is running with predicted GRF’s if that is the case the model might have tried to shift the loads to the other leg.

  4. Finally there is nothing in the objective function which will seek to minimize a joint force. The joints are reactions with no cost in the objective function, since they have reactions which are infinitely strong. It is possible that you could consider to implement “joint pain” by disabling reactions in joints and replace these by strong muscles AnyGeneralMuscles these would “feel” pain in the objective function. (I am not sure this point here is a good path to go into, just thought it should be mentioned)

Hope it helps

Best regards

This topic was automatically closed 125 days after the last reply. New replies are no longer allowed.