I’m using 4.0.2 version of the software with the new scapular rhythm from deGroot.
I want to test the hypothesis that if we increase/decrease the medial offset of the humeral head, the passive force in the rotator cuff muscles will increase/decrease significantly, in a way that it should influence the reaction force at the gh joint. To do so, I move the humerus ‘gh’ node from -1 cm to + 1 cm from the original position.
Before performing the tests, I set the optimal lengths of the tendons (Lt0) of each muscle with the value that I get from a normal calibration, and I do not calibrate the model between low and high medial offset configurations, to simulate the fact that the musculotendinous optimal lengths aren’t changed.
However, the passive forces that I get are still low (more or less 1 to 5 N max) and I don’t understand why. Is this normal ? Maybe I’m doing something wrong or I don’t understand it well.
From what you tell i think you are doing it the right way. You could also move the scapula node instead of the humerus node, that depend of what kind of offset you want to simulate.
Try to look at the muscle elongation, maybe the way you constructed the offset is not streching them very much.
You’re right. Putting an higher value, for example 20 mm, results in a higher force. But still, I think that muscles with tendons do not behave like ligaments. Trying to introduce a ligament in the model resulted in much more higher forces, compared to those in the tendons. However, because I don’t know the exact properties of these ligaments, I cannot add them to the model.
Do you plan to add glenohumeral ligaments in the future releases of the repository ? Also, did you think about adding a AnyShortestPathLigament function ?
We do not plan to add ligaments to the shoulder model yet, mostly because of the lack of data. We don’t plan either to make a new ligament model for the moment.
Ok sounds fair. The shorthestpath ligament should not be difficult to create because you already propose a shortestpath muscle and a ligament model. Am I right ?
It is possible to create a shortestpath ligament with the shortestpath muscle function, by setting F0 and Lfbar to 0 ? If yes, does the Epsilonbar would be equivalent to the eps1 ? If no, can you tell me how to create a shortestpath ligament that would wrap over surfaces ?
What do you mean by ‘edge’ in the explanation of the AnyViaPointLigament :
… Notice that this kinematics assumes the muscle to be a string that can wrap over edges, but it will also stick to such edges, so that the normal forces can become negative.…
I think i get your idea of using only the tendon part of a muscle to model a shortest path ligament. Unfortunately I think that won’t work. You cannot set F0=0 because then you have a “gap” in the forces along the muscle. To make it work you would need first to constrain the muscle to have zero length at all time (not just Lfbar) and secondly to exert the exact same force as the passive tendon elengation in order to relay it. And I don’t see a good way to do that.
But what you actually could do is use an AnyKinSPLine. That is the same line object used by the shortest path muscle. So you can define the line with all the wrapping surfaces you need, and then add the stiffness by applying an AnyForce to the line (using also an interpolation function like for the joint stiffness).
And the “edges” in the explanation are an image for the via points. I guess you know how they work, the needle-eye like behaviour, allowing reactions perpendicularly to the line but not along the line.
It was my idea at first, but for some reasons, it didn’t work. The system is unstable and adding the ligaments is really challenging. Also, GH ligaments do not cover the posterior part of the GH joint. I think that the capsule is also playing a role for the stability of the shoulder. I’ll try it again and compare the results with the simulation of a global shoulder stiffness from my other post.
Can I use mechanical properties of other ligaments for the GH ligaments (eps1, F1, a0, a1, etc.) ? My hypothesis is that ligaments in the foot, like in the shoulder should have similar mechanical properties, except their respective length ! For instance, would it be possible to use the ligament definition of the spine from the “Spine Fixation With Force Dependant Kinematics.any” and just change the L0 ?
Speaking of “LO”, do I have to perform a “LigamentlengthCalibration” in extreme positions to determine the right “L0” (e.g. full external/internal rotations, adduction + flexion) ?
Unfortunately for the mechanical properties I’m afraid it is not so simple. The stiffness depends both on the Young modulus (E) and the dimensions of the ligaments.
On one hand studies claim different E for different ligaments. So it is already not easy to say that all human ligaments have the same E. And even if it was so the stiffness also depends on the cross section.
So there is no guaranty that taking the spine ligaments definition will give you the correct results on the shoulder. I guess it would be safer to use hip ligaments properties for example (if you have them…). As those joints are to some extend similar, we could maybe assume that the ligaments have similar properties as well. But even that is not guaranted either.
I found some data for the shoulder ligaments in the paper: “Ticker 1996 J Shoulder Elbow Surg”. I used the Fung’s function for soft tissues presented in this paper, which is: Sigma = A*(exp(B*epsilon)-1). The paper also gives the width and the thickness of each GH ligaments, so I used them to find the pCSAs. However, the simulation ended in an error. I think that the sliding of the ligaments on the surface induced a significant variation of the ligament force, which was not representative.
I also try to simulate a general stiffness at the centre of rotation. At first, I tried to drive only the distance between the ‘scapula_gh’ node and the ‘humerus_gh’ node, and attribute a negative force on the linear measure, without success. I though that this way was a little bit unstable. Thus, I created 8 PLines around the joint, using the GHReaction.any file and translating the corresponding ‘CenterNode’ on the surrounding of the humeral head (see StiffnessModelisation.jpg). All these force acting around the joint simulated the stiffness in all the possible directions. Then, with a stiffness of 16 N/mm on each of the PLines, the simulation ended without problem and gave me a reasonable GH translational movement (see GHLin.jpg), but with a high stiffness force (see StiffnessForceTotal.jpg).
That sounds like a good begining. I think it is important to have a working model from the start, even if you have to add some artificial constraints like you did with the eight PLines (i guess it doesn’t exactly represent the real anatomy).
You know the challenge of the force dependent kinematic is to have the right configuration of passive force so that it is correctly balanced. Now with the 8 PLines it should be easier to spot the difference with the real anatomical configuration (you said that one failed, right?) and it’s weaknesses in supporting the joint, and then correct them.
Also the 16 N/mm stiffness you used and the resulting ligament force doesn’t seem too high to me. But probably the paper you mentioned has some info about that.
I’m not sure about how to spot such difference with the real anatomical configuration. Do you mean that I have to keep the 8 Plines and then add the ligaments. I don’t see how I will be able to point out the weakness of the ligaments in supporting the joint by this way if the PLines already support it.
Thank you very much for your help and for your quick answers.
Of course there is no simple and quick technique to do that, that would make our lives too easy and boring, wouldn’t it?
Well you are right that adding the real ligaments on top of the 8 PLines will not help very much. I was more thinking of transforming step by step the 8 lines configuration into the real one, always trying to keep the model working. And if it fails at one step, this very step may give you some info. You might be able to see that a direction carried by the 8 PLines is not by the real configuration, or something else.
I order to make my ligaments works, I have to see the vector of the passive force. For a PLine its simple, but for a SPLine, I don’t know how to do it !
After some research about the stabilizing mechanisms of a shoulder at rest, I found that the stability is not held by the action of ligaments or muscles, but rather by “adhesion/cohesion”, “glenohumeral suction cup” and by “limited joint volume”. Because these mechanisms are complex, I guess that using the 8 PLines would be a fair and simple approximation. I found a study that measured the stiffness of the joint in the “antero-posterior” and “infero-superior” directions and found a value around 16 N/mm. I will use this value to find the equivalent stiffness for my 8 PLines.
It would be interesting to know how much can hold those stabilizing mechanisms. It could well be that during more intense activity the ligaments take up the load instead of the mechanisms you described, because they are prbably stronger.
So you can consider the possibility of having the real ligaments in parallel with a weaker artificial support (for the resting position).
You would have to make sure that the real shoulder behave this way before implementing it.
You are right. These mechanisms are more efficient in the resting position. However, my hypothesis is that they are also active during the movement. I found some literature that partially confirm this hypothesis. So putting the ligament with the translational stiffness is somewhat realistic. The question remains to know the exact mechanical behavior of these mechanisms. For the moment, I use a linear stiffness, but It would be interesting to test wether this is true or not.
I found documentation that will inform me about the action of the ligaments in specific extreme positions. So far, I know that the ligaments at the top of the shoulder (coracohumeral and superior GH ligaments) are inferior stabilizers of the abduction at 0 deg of abduction. Also, at 90 deg external rotation, the middle GH ligament play a role in preventing the anterior dislocation. However, in 90 deg internal rotation, there is no ligament at the opposite of the middle GH ligament, but there is the capsule. Moreover, in its hammoc configuration, the inferior GH ligament is sollicited after 150 deg of abduction, preventing an inferior dislocation of the humerus.
So the problem is not to know the rest length, but rather to know the stiffness coefficient of each SPLines, knowing the global coefficient of each ligaments. Moreover, another problem remains: The SPLines slides to much on the surfaces, especially for the ligaments on both sides of the humerus. This cause an incorrect behavior of ligaments because of abrupt length changes. I already though of using elliptic wrapping surfaces for these SPLines, but that would just fix a part of the problem. I think that the most efficient way would remains to create separate artificial rakes for each GH ligament that surrounds the GH joint, knowing that their kinematics would be somewhat hard to define.
So it seems you are getting closer. If you know the global stiffness of the ligaments i think it should be quite easy to distribute it the the corresponding PLines.
The wrapping is more tricky. The artificial rakes are probably the best solution if you really need the wrapping, even if difficult to drive. Try to get some inspiration from the deltoid rake.
I understand using only via points would not give you the right kinematic for the Lines? That would be definitly easier to implement.