Muscle power relative to a specific bone

Dear AnyBody,

First, I would like to export all muscle power/work applied to a specific bone (e.g., tibia) after inverse dynamics. I was able to export Pm of each muscle (N~160) of left/right leg, but I am more interested to identify those muscles that are directly connected to tibia, and then export Pm of those muscles. Is it possible?

Second, is this the correct line to compute knee power?
AnyFloat Knee_Power = (Main.Studies.HumanModel.BodyModel.Left.Leg.Jnt.Knee.Vel)*(Main.Studies.HumanModel.BodyModel.SelectedOutput.Left.Leg.JointMomentMeasure.KneeFlexion)/(Main.Studies.HumanModel.Scaling.AnthroData.Body_Mass);

Third, does Knee_Power represent all muscle power at the knee joint? I am a little confused because the manual points out that the power of a muscle is calculated by FmLmDot. Does it mean the sum of FmLmDot at the joint = joint momentangular velocity? In anther word, if I am interested in quantifying the total muscle work/power on tibia, should I calculate FmLmDot of all muscles attached to the tibia (from Q1), or can I simply calculate the knee & ankle joint power (from Q2)?

Thank you!

Hi Phoebe,

It is not possible to automatically output muscles data for muscles inserting on tibia. The output for FE will allow you to export all forces automatically for the Tibia but not Pm, but if you did that export it would give you all the names automatically.

Please try to describe what you want to use for and what exactly you need i think there can be different ways to do this, depending on what you need.

Your power calculation for the knee looks correct if you want it to be normalized with bodymass. This formula will give you the total mechanical power all muscles creates on the knee joint (normalized) since the moment represents the contribution for all muscles spanning the knee joint.

I think it will be difficult to use the approach with the individual muscle summation since you will need not to use FM directly but the force the muscle creates on tibia and the speed of that point. You can not just used Fm because many muscles will span multiple DOF and it will be unclear from just looking at Fm what the power creates on tibia will be. Secondly if a muscle was spanning from thigh to foot and not touching tibia it would only contribute indirectly through changed joint reactions, should this also be accounted for?

If you use the approach with the joints the problem is that in principle measuring moment and angular speed gives the power added around the knee joint, but it does not tell how much of this power shank or tibia recieved.

So it is a good question you have asked but please try to add some more words on what you need.

Best regards

Dear Søren,

Thank you for the detailed reply!

My goal is to characterize the total power/work applied onto tibia, which may provide extra information in addition to JRF/F_muscle/bone strain-stress, etc. I think you have answered my questions! Nevertheless, below are come clarifications regarding the two ways I tried to do it:

  1. export Pm of leg muscles (Main.Studies.HumanModel.BodyModel.Left.Leg.Mus.*.Pm), identify all relevant muscles (N) and then sum Pm(i=1…N), as Pm is a scalor. Your point is well taken. I agree this method is not correct.
  2. instead of trying to study each individual muscle, look at the outcome of all muscles’ work on the bone. I think maybe I can export the ankle_power and the knee_power?? since all muscles work in synchronization to generate angular moments of a segment, as the deformation of the bone is almost negligible.

Thank you again,

Hi Phoebe,

I created code to do exactly what you are after a few years ago. It indeed took computing the power of each muscle. I took the approach of first computing the equivalent force and moment of the muscle around the segment (i.e. tibia in your case) center of mass and then compute the power from this force and moment on the segment. Hereby, I did not have to worry about the via points and locating all muscle insertions. I did add a node at the CoM on all segments (called CoMNode) to make this approach possible.

The template, I created looks like this:
#class_template MusclePowerOnSegment(AnyMuscle &muscle, AnySeg &Segment){
AnyForceMomentMeasure2 NetMuscleForceAndMoment = {
AnyRefNode &ref = .Segment.CoMNode;
AnySeg &seg =.Segment;

AnyForceBase &mus = .muscle;


AnyVar P = NetMuscleForceAndMoment.F*.Segment.CoMNode.rDot’+NetMuscleForceAndMoment.M*’;

Would be more than happy to share code and discuss further how to implement this if you wish. It required making a full list of all muscles in the model - which was a bit of a pain.

Best regards
Michael Skipper Andersen
Associate Professor
The AnyBody Research Group
Aalborg University

Dear Michael,

That will be great! I will follow up with you via email.

Thank you in advance,