How can we change the position of a femoral component quantitatively?

Hi AnyBody support,

This e-mail is to ask how we can change the position of a femoral component
quantitatively on the THA-KneeBendDemo.

In the THA-KneeBendDemo, we recognized the possible of change in position
of a femoral component by following program.


// Widget to rotate the femoral component
#define FEM_STEM_ROT 0
// Widget to move the femoral component
#define FEM_STEM_LIN 0
// Widget to rotate the Acetabular cup
#define PELVIS_CUP_ROT 0

However, we’d like to change the position of a femoral component quantitatively.
inputting an amount of displacement.

I would appreciate it if you could give some advice or give us information about it.

Katsunari

Dear Katsunari,

Here is a short script that can do that for you. mydisplacement - contains the displacement. You can include this operation as a pre-operation to your analysis. Or simply run before running the model.

  AnyOperationSetValue ChangeStemPos= 
  {

    AnyVec3 mydisplacement = {0, 0.01, 0}; // in meters
    Source = {&mydisplacement};
    Target = {&Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.HipJointAnatomicalFrame.sRel};
  };

Best regards,
Pavel

Dear Pavel,

Thank you for your explanation.
We have been trying to include the short script on the THA-KneeBendDemo.
However, We don’t know where We must include the short script to my analysis.
Please tell us about this question.

Best regards,
Katsunari

Dear Katsunari,

This piece of code can be included anywhere you like. But what needs to be done is the following. You need to perform this operation before your analysis.

One way is to do in the beginning of the Main file (please note the modification in the RunApplication section:

  AnyOperationSetValue ChangeStemPos= 
  {

    AnyVec3 mydisplacement = {0, 0.01, 0}; // in meters
    Source = {&mydisplacement};
    Target = {&Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.HipJointAnatomicalFrame.sRel};
  };
  
  /**Execute this operation to run the model in the intended operation sequence.  
  It is also possible to run operations seperately, by manual selections in the operation tree*/
  AnyOperationSequence RunApplication = {

    AnyOperation &PreOperation = Main.ChangeStemPos;

    /**This operation calibrates the muscles in the model if these are of the type AnyMuscleModel3E.
    This will just be an empty operation if the model is using a muscle type that does not require calibration.*/
    AnyOperation &CalibrationAnal = Main.HumanModel.Calibration.CalibrationSequence;  

    ///This operation is the inverse dynamic analysis
    AnyOperation &InvAnal=Main.Study.InverseDynamics;
  
  };

This way the model will be adjusted and calibrated using this adjustment.

Best regards,
Pavel

Dear Pavel,

Thank you for your answer.

Best regards,
Katsunari

Dear Pavel,

We tried to include the short script on the THE-Knee Bend Demo.
However, we don’t know what kind of changes will happen
when we change the position of a artificial hip joint.

for example, something like the following:
1.The position of between the acetabulum and artificial hip joint is be changed.
2.Changing the position of the attachment points of muscle.

I would appreciate it if you could give us information about it.

Best regards,
Katsunari

Dear Katsunari,

Apart from changing the artificial joint centre nothing else will change - you can think of it as a correction of the joint position in operation by tilting/shifting the implant and adjusting the cup correspondingly to reconstruct healthier joint. That changes the mechanical system quite a lot - the moment arm configuration will be different. But there will be no muscle attachment corrections. And we would not know what consequences such change will have in the surgical theater - so it is not programmed and up to the user to define.

I hope this is what you are interested in.

Best regards,
Pavel

Dear Pavel,

Thank you for your answer.

Best regards,
Katsunari

Hi AnyBody support,

This e-mail is to ask how I can examine about change in the mechanical system on THA-KneeBendDemo.

We changed the position of a femoral component quantitatively on the THA-KneeBendDemo with the short script.
I would like to examine about change in the mechanical system.

I have 3 other questions:

1.Is it possible to output the moment arm configuration?

2.When we changed the position of the femoral component, dose the relative position of the femoral component and the acetabulum change?
If the relative position changes, do the following things happen? :
・Change in the contact force of the femoral component and the acetabulum
・Change in the leg length with change of the femoral component

I would appreciate it if you could give some advice or give us information about it.

Katsunari

Dear Katsunari,

can you be more specific, or explain your problem in other words. I’m not sure I’m getting it.

Dear AnyBody support,

This e-mail is to ask how we can output the moment arm configuration.

We changed the position of a femoral component quantitatively on the THA-KneeBendDemo according to the following:

AnyOperationSetValue ChangeStemPos=
{
AnyVec3 mydisplacement = {0, 0.01, 0}; // in meters
Source = {&mydisplacement};
Target = {&Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.HipJointAnatomicalFrame.sRel};
};

We would like to validate the muscle forces performed by simulation of inverse dynamics with THA-KneeBendDemo.

We think the muscle force is caleulated by the following equation:
Cf = r
In this equation, we think C includes the moment arm configuration.
Is that right?
Bearing this in mind, we would like to know how we can output the moment arm configuration.

I would appreciate it if you could give some advices or give us information about it.

Katsunari

Dear Katsunari,

I don’t know how one can get C out. But there is a way to output the moment arm configuration for a particular segment.

One can use AnyMechOutputFileForceExport to output all forces and their origins, then use these origins to compute the moment arms.

AnyMechOutputFileForceExport <ObjectName> = 
{
  FileName = "";
  /*NumberFormat = 
  {
  Digits = 15;
  Width = 22;
  Style = ScientificNumber;
  FormatStr = "";
  };*/
  //UseRefFrameOnOff = Off;
  //AllSegmentsInStudyOnOff = Off;
  //XMLformatOnOff = Off;
  //ForceObjectExclude = {};
  //ForceObjectList = {};
  //AnyRefFrame &<Insert name0> = <Insert object reference (or full object definition)>; You can make any number of these objects!
  //AnySeg &<Insert name0> = <Insert object reference (or full object definition)>; You can make any number of these objects!
};

Please check the reference manual, wiki, and examples on Finite Elements. And please note that you may need to implement a short Matlab/Python script to recompute moment arms from the output.

Regards,
Pavel

Dear Pavel,

Thank you for your answer.

There is one more question.
This e-mail is to ask about the muscle forces performed by simulation of inverse dynamics with THA-KneeBendDemo.

The muscle forces value is different for Inverse dynamics every time despite the same conditions.

Do you think why this phenomenon has occurred?

I would appreciate it if you could give some advices or give us information about it.

Katsunari

Dear Katsunari,

You are using FDK and this is why you are probably getting this kind of behaviour, a little bit more detailed explanation is given in another thread: variation in results. Are your results very different?

Regards,
Pavel

Dear Pavel,

Thank you for your answer.

We could see that there is slight variation in the results from run to run.
In addition, sometimes execution error will be displayed spite of the same conditions.
We try to understand what is happening when we use force dependent kinematics.
We go through the “FDK” tutorial.

There is one more question.

This e-mail is to ask about configuration of model after changes in position of an artificial hip joint.

We changed a position of the artificial hip joint quantitatively on the THA-KneeBendDemo as follows:


AnyOperationSetValue ChangeStemPos=

{
AnyVec3 mydisplacement = {0, -0.01, 0}; // in meters
Source = {&mydisplacement};
Target =
{&Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.HipJointAnatomicalFrame.sRel};
};

We would like to know the change in the configuration of the model with this operation. Our questions are:

  1. Is the position of foot segment changed with the position of the artificial hip joint?

  2. When we change the position of the artificial hip joint downward as follows, does the leg become shorter?


AnyVec3 mydisplacement = {0, -0.01, 0}; // in meters

I would appreciate it if you could give some advices or give us information about it.

Katsunari

Dear Katsunari,

Yes, you are correct in these statements. The leg becomes “shorter” due to the fact of a different hip joint centre. The distance between the hip joint centre and the foot does not effectively change. However, the model may look assymetric. So think of the leg being pulled up, but no real shortening.

And the foot location may change in the global reference frame due to the same reason.

Regards,
Pavel