GH reaction constraint

I am working with the shoulder model in AnyBody and will use muscle
force and line of action data as inputs to a finite element shoulder
model. I am curious about how the glenohumeral reaction constraint is
implemented and the rationale for how it is implemented? Does it work
in coordination with the muscle force calculation algorithm to modify
muscle forces and ensure the net reaction force vector points into the
glenoid? If the muscle forces are changed, how do they compare with
and without this constraint for similar postures/actions? Also, how do
you turn this constraint off?

Thanks.

Chris

Hi Chris

The rationale for implementing the glenohumeral reaction constraint
was to ensure that the force would always point within the glenoid.

We came up with the idea of using a setup of strong pushing muscles
which would ensure this. There is a number of strong muscles pushing
from the GH joint center towards the edge of the glenoid cavity,
here created as a circular path. So if any of these muscles are
activated the reaction force will either point ot the edge or inside
the cavity, it can not go outside. These muscles are recruited like
any other muscle in the model, they are just very strong and not
close to the activity envelope, so they do not distrub the
recruitment of the other muscles. In other words the model “feels”
that the reaction force should fall within the cavity and it will
change the recruitment of the normal muscles to ensure this, but it
do not feel any cost of having a high normal force there, even
though it is created by muscles.

So yes it works in coordination with the rest of the muscles to
ensure that the reaction force is within the cavity.

I am not sure i understand the question:
If the muscle forces are changed, how do they compare with
and without this constraint for similar postures/actions?

You can switch this reactions off in the Arm3d/jnt.any file by
outcommenting the line

#include “GHReactions.any”,

and then in the object GHLinCon remove the line
Reaction.Type={Off,Off,Off};

Best regards
Søren, AnyBody Support

— In anyscript@yahoogroups.com, “chrisjgatti” <cjgatti@…> wrote:
>
> I am working with the shoulder model in AnyBody and will use
muscle
> force and line of action data as inputs to a finite element
shoulder
> model. I am curious about how the glenohumeral reaction constraint
is
> implemented and the rationale for how it is implemented? Does it
work
> in coordination with the muscle force calculation algorithm to
modify
> muscle forces and ensure the net reaction force vector points into
the
> glenoid? If the muscle forces are changed, how do they compare
with
> and without this constraint for similar postures/actions? Also,
how do
> you turn this constraint off?
>
> Thanks.
>
> Chris
>

Thanks Søren,

> I am not sure i understand the question:
> If the muscle forces are changed, how do they compare with
> and without this constraint for similar postures/actions?

I was asking if this constraint that ensures the reaction force to
point into the glenoid has an effect on the computed muscle forces.
For example, if this constraint was not present, could the predicted
muscle forces produce a reaction force which would point out of the
glenoid (for certain postures and loads)? Or is this always the
case? But, with the constraint present, the computed muscle forces
may be the same, however those ‘other’ muscles are active to endure
the reaction force points into the glenoid. Is this correct? Thus,
if those computed muscle forces (the real muscles) were in vivo
force, there could be the possibility of humeral head translation on
the glenoid, and possibly subluxation?

I am interested in investigating the consequences of humeral head
translation. This can occur in reality, and I would like the
predicted muscle forces to reflect this fact. Thus, if the predicted
muscle forces ensure glenohumeral stability in all cases, the model
wouldn’t predict what could happen in vivo, only what we would like
to happen in vivo.

Does this shed any light on what I am getting at? Thanks for the
help.

Chris

I have some additional questions concerning the glenohumeral reaction
constraint.

In an earlier reply, I was asking if the inclusion of GHreactions.any
in the model would modify the predicted muscle forces. I have run an
inverse dynamics analysis for a static posture and have compared
muscle forces for when GHreactions.any is included and excluded from
the model. From the few muscles I have checked, the muscle forces seem
to be the same. So I don’t think the inclusion of GHreactions.any
doesn’t modify the muscle force predictions.

From previous threads, I understand that the GHreactions constraints
are 8 fake pushing muscles implemented to make the net glenohumeral
reaction force point into the glenoid. If some of these fake muscles
are active, does this mean the glenohumeral reaction force without
GHreactions.any points out of the glenoid?

When GHreactions.any is not included in the model, I see that GHlincon
has non-zero values. Is GHlincon the reaction forces of the glenoid
from the humerus (in the reference frame of the scapula if the
reference frame toggle is set to 0)? When GHreactions.any is included
in the model, the GHlincon values are zero and the FTotal values for
GHreactions are non-zero. Additionally, the magnitude of GHlincon when
GHreactions.any is excluded from the model is the same as the
magnitude of FTotal from GHreactions when GHreactions.any is included
in the model.

Do I understand correctly that GHreactions.any is essentially a
computational trick to satisfy the assumption that the humerus stays
in one location and cannot translate (because there are GHlincon is
zero)? I am curious if or what GHreactions.any represents in
physiological terms though. Further insight on this would be much
appreciated.

Thank you for your time,

Chris

Hi Chris,

The file GHreaction.any has two functions. One of them as you
understood it is to constrain the glenohumeral reaction force to
point inside the glenoid cavity. If it not the shoulder would
dislocate in a real body. To do so the muscle recruitment can be
modified. However in lot of movements the reaction force probably
points naturally inside the glenoid cavity, so muscle forces does not
need to be changed. That is why you didn’t see any changes in the
muscles forces with and without the GHreaction.any file.

The second function of the GHreaction.any file is to create the
unilateral contact of the glenoid. This is done by the 8 pushing
muscles (pushing only so the contact is really unilateral). The
result of this contact is the reaction FTotal. Now GHlincon is
different. It is actually a driver creating the spherical joint of
the shoulder by driving the 3 linear measure of the joint to zero.
This driver has reaction forces like all the drivers, and those
reaction forces are switched off when GHreaction.any is used (because
GHreaction.any already provides the reaction forces). But if
GHreaction.any is not used, then it doesn’t provide the reaction
forces anymore and it is the driver GHlincon that will provide the
reaction forces by switching the Reaction.Type to “On”. The reaction
forces are then given by GHlincon.Reaction.Fout.
I hope the difference between GHlincon.Reaction.Fout and the FTotal
is clear.

So physiologically GHreaction.any represents the unilateral contact
of the glenoid surface, and also a stability criterion preventing the
shoulder to dislocate.

Best regards,
Sylvain, AnyBody Support.

— In anyscript@yahoogroups.com, “chrisjgatti” <cjgatti@…> wrote:
>
> I have some additional questions concerning the glenohumeral
reaction
> constraint.
>
> In an earlier reply, I was asking if the inclusion of
GHreactions.any
> in the model would modify the predicted muscle forces. I have run an
> inverse dynamics analysis for a static posture and have compared
> muscle forces for when GHreactions.any is included and excluded from
> the model. From the few muscles I have checked, the muscle forces
seem
> to be the same. So I don’t think the inclusion of GHreactions.any
> doesn’t modify the muscle force predictions.
>
> From previous threads, I understand that the GHreactions constraints
> are 8 fake pushing muscles implemented to make the net glenohumeral
> reaction force point into the glenoid. If some of these fake muscles
> are active, does this mean the glenohumeral reaction force without
> GHreactions.any points out of the glenoid?
>
> When GHreactions.any is not included in the model, I see that
GHlincon
> has non-zero values. Is GHlincon the reaction forces of the glenoid
> from the humerus (in the reference frame of the scapula if the
> reference frame toggle is set to 0)? When GHreactions.any is
included
> in the model, the GHlincon values are zero and the FTotal values for
> GHreactions are non-zero. Additionally, the magnitude of GHlincon
when
> GHreactions.any is excluded from the model is the same as the
> magnitude of FTotal from GHreactions when GHreactions.any is
included
> in the model.
>
> Do I understand correctly that GHreactions.any is essentially a
> computational trick to satisfy the assumption that the humerus stays
> in one location and cannot translate (because there are GHlincon is
> zero)? I am curious if or what GHreactions.any represents in
> physiological terms though. Further insight on this would be much
> appreciated.
>
> Thank you for your time,
>
> Chris
>

Thanks again Sylvain,

Can I get some clarification concerning in which coordinate system
FTotal of GHreactions is measured (along with anatomical directions so
I can ensure my model is similar)? I have seen some things that say
global coordinate system, some say scapular coordinate system, and
others say in the GHcenternode coordinate system. How do you know in
which coordinate system these forces are measured?

Thanks,

Chris

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
>
> Hi Chris,
>
> The file GHreaction.any has two functions. One of them as you
> understood it is to constrain the glenohumeral reaction force to
> point inside the glenoid cavity. If it not the shoulder would
> dislocate in a real body. To do so the muscle recruitment can be
> modified. However in lot of movements the reaction force probably
> points naturally inside the glenoid cavity, so muscle forces does not
> need to be changed. That is why you didn’t see any changes in the
> muscles forces with and without the GHreaction.any file.
>
> The second function of the GHreaction.any file is to create the
> unilateral contact of the glenoid. This is done by the 8 pushing
> muscles (pushing only so the contact is really unilateral). The
> result of this contact is the reaction FTotal. Now GHlincon is
> different. It is actually a driver creating the spherical joint of
> the shoulder by driving the 3 linear measure of the joint to zero.
> This driver has reaction forces like all the drivers, and those
> reaction forces are switched off when GHreaction.any is used (because
> GHreaction.any already provides the reaction forces). But if
> GHreaction.any is not used, then it doesn’t provide the reaction
> forces anymore and it is the driver GHlincon that will provide the
> reaction forces by switching the Reaction.Type to “On”. The reaction
> forces are then given by GHlincon.Reaction.Fout.
> I hope the difference between GHlincon.Reaction.Fout and the FTotal
> is clear.
>
> So physiologically GHreaction.any represents the unilateral contact
> of the glenoid surface, and also a stability criterion preventing the
> shoulder to dislocate.
>
> Best regards,
> Sylvain, AnyBody Support.

Hi Chris,

By default the force Ftotal of GHreaction is measured in the local
coordinate system of the scapula. The best way to visualize the frame
and compare it with you model is to draw it with an AnyDrawRefFrame
in the Scapula folder.

In general you can know what is the ref frame of the reaction force
of a joint by looking at the definition of this joint. If there is no
Ref=… present then the ref frame is the first segment or node
declared in the joint (by default). If there is Ref=-1; the ref frame
is the GlobalRef, with Ref=0; the ref frame is the first node
declared and for Ref=1; the ref frame is the second node declared.

In some models the ref frame for the GHReaction has been modified,
maybe that is why you read different versions.

Best regards,
Sylvain, AnyBody Support.

— In anyscript@yahoogroups.com, “chrisjgatti” <cjgatti@…> wrote:
>
> Thanks again Sylvain,
>
> Can I get some clarification concerning in which coordinate system
> FTotal of GHreactions is measured (along with anatomical directions
so
> I can ensure my model is similar)? I have seen some things that say
> global coordinate system, some say scapular coordinate system, and
> others say in the GHcenternode coordinate system. How do you know in
> which coordinate system these forces are measured?
>
> Thanks,
>
> Chris
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
wrote:
> >
> >
> > Hi Chris,
> >
> > The file GHreaction.any has two functions. One of them as you
> > understood it is to constrain the glenohumeral reaction force to
> > point inside the glenoid cavity. If it not the shoulder would
> > dislocate in a real body. To do so the muscle recruitment can be
> > modified. However in lot of movements the reaction force probably
> > points naturally inside the glenoid cavity, so muscle forces does
not
> > need to be changed. That is why you didn’t see any changes in the
> > muscles forces with and without the GHreaction.any file.
> >
> > The second function of the GHreaction.any file is to create the
> > unilateral contact of the glenoid. This is done by the 8 pushing
> > muscles (pushing only so the contact is really unilateral). The
> > result of this contact is the reaction FTotal. Now GHlincon is
> > different. It is actually a driver creating the spherical joint
of
> > the shoulder by driving the 3 linear measure of the joint to
zero.
> > This driver has reaction forces like all the drivers, and those
> > reaction forces are switched off when GHreaction.any is used
(because
> > GHreaction.any already provides the reaction forces). But if
> > GHreaction.any is not used, then it doesn’t provide the reaction
> > forces anymore and it is the driver GHlincon that will provide
the
> > reaction forces by switching the Reaction.Type to “On”. The
reaction
> > forces are then given by GHlincon.Reaction.Fout.
> > I hope the difference between GHlincon.Reaction.Fout and the
FTotal
> > is clear.
> >
> > So physiologically GHreaction.any represents the unilateral
contact
> > of the glenoid surface, and also a stability criterion preventing
the
> > shoulder to dislocate.
> >
> > Best regards,
> > Sylvain, AnyBody Support.
>

I can see in other joints the listing of which segments are first and
second, but cannot see this for GHreactions. What should I be looking
for and in which file?

In the GHreactions.any file I see that there is a CenterNode and
CenterNodeRotated in the Scapula folder of GHreactions, with both
nodes at the center of the glenoid. When I display these coordinate
systems in the model, the CenterNode coordinate system has the same
orientation as the scapular system (x axis lateral right, y axis
superior, z axis posterior), and the CenterNodeRotated coordinate
system is the scapular system rotated -90 degrees about the local
y-axis (x axis posterior, y axis superior, z axis medial left). For
reference, the global system has the x axis anterior, y axis superior,
and z axis lateral right.

For 30 degrees of abduction in the coronal plane with a -10N hand
weight, I get FTotal of GHreactions to be [-262.83, -14.29, -474.1]. I
assume the the z component must be in the compressive direction to the
glenoid, so it seems like this z axis must match with the z axis of
either the global or the CenterNodeRotated system (I’m also not sure
if GHreactions is the reaction forces on or of the scapula). Beyond
that, I’m a little confused. Any help here?

Thanks,

Chris

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Chris,
>
> By default the force Ftotal of GHreaction is measured in the local
> coordinate system of the scapula. The best way to visualize the frame
> and compare it with you model is to draw it with an AnyDrawRefFrame
> in the Scapula folder.
>
> In general you can know what is the ref frame of the reaction force
> of a joint by looking at the definition of this joint. If there is no
> Ref=… present then the ref frame is the first segment or node
> declared in the joint (by default). If there is Ref=-1; the ref frame
> is the GlobalRef, with Ref=0; the ref frame is the first node
> declared and for Ref=1; the ref frame is the second node declared.
>
> In some models the ref frame for the GHReaction has been modified,
> maybe that is why you read different versions.
>
> Best regards,
> Sylvain, AnyBody Support.
>
>
>
>
> — In anyscript@yahoogroups.com, “chrisjgatti” <cjgatti@> wrote:
> >
> > Thanks again Sylvain,
> >
> > Can I get some clarification concerning in which coordinate system
> > FTotal of GHreactions is measured (along with anatomical directions
> so
> > I can ensure my model is similar)? I have seen some things that say
> > global coordinate system, some say scapular coordinate system, and
> > others say in the GHcenternode coordinate system. How do you know in
> > which coordinate system these forces are measured?
> >
> > Thanks,
> >
> > Chris
> >
> > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> wrote:
> > >
> > >
> > > Hi Chris,
> > >
> > > The file GHreaction.any has two functions. One of them as you
> > > understood it is to constrain the glenohumeral reaction force to
> > > point inside the glenoid cavity. If it not the shoulder would
> > > dislocate in a real body. To do so the muscle recruitment can be
> > > modified. However in lot of movements the reaction force probably
> > > points naturally inside the glenoid cavity, so muscle forces does
> not
> > > need to be changed. That is why you didn’t see any changes in the
> > > muscles forces with and without the GHreaction.any file.
> > >
> > > The second function of the GHreaction.any file is to create the
> > > unilateral contact of the glenoid. This is done by the 8 pushing
> > > muscles (pushing only so the contact is really unilateral). The
> > > result of this contact is the reaction FTotal. Now GHlincon is
> > > different. It is actually a driver creating the spherical joint
> of
> > > the shoulder by driving the 3 linear measure of the joint to
> zero.
> > > This driver has reaction forces like all the drivers, and those
> > > reaction forces are switched off when GHreaction.any is used
> (because
> > > GHreaction.any already provides the reaction forces). But if
> > > GHreaction.any is not used, then it doesn’t provide the reaction
> > > forces anymore and it is the driver GHlincon that will provide
> the
> > > reaction forces by switching the Reaction.Type to “On”. The
> reaction
> > > forces are then given by GHlincon.Reaction.Fout.
> > > I hope the difference between GHlincon.Reaction.Fout and the
> FTotal
> > > is clear.
> > >
> > > So physiologically GHreaction.any represents the unilateral
> contact
> > > of the glenoid surface, and also a stability criterion preventing
> the
> > > shoulder to dislocate.
> > >
> > > Best regards,
> > > Sylvain, AnyBody Support.
> >
>

Hi Chris,

The glenohumeral joint is actually a bit tricky because of the
GHreaction. First of all you can have a look at the Jnt.any file in
the Arm folder. Here you will find the following lines defining the
GH joint :

AnyKinLinear GHLin = {
AnyRefNode &scapula_gh = …Seg.Scapula.gh;
AnyRefNode &humerus_gh = …Seg.Humerus.gh;

Ref=0; //use this for shifting between the two ref systems:
scapula=0, humerus=1

};
//This file includes the glenohumeral reactions created by a number
of pushing muscles
//if this file is not include the normal reactions of the GH joint
should be set to "On On On"6
#include “GHReactions.any”

/**This is the reactions of the GH joint they are normally set
to “Off Off Off” if the file
GHReactions.any is being used, if this is not the case the reactions
should be set to “On On On”
*/
AnyKinEq GHLinCon = {
AnyKinMeasure &GHLinCon = .GHLin;
Reaction.Type={Off,Off,Off};
};

You can see in the GHLin that the Scapula is mentioned first. So the
ref frame of the reaction force should be the local scapula frame. I
think this is what I told you in the last posting. Well that is not
exactly true. It’s a lack of attention from my part and I apologize
for it. This is valid only when you are not including the
GHReaction.any file, and when the reaction forces are provided by the
Reaction.Type of GHLinCon.

But when using the GHReaction file then the reaction force FTotal is
given in global coordinate system. I’m really sorry that I skipped
this in the last message. The mechanism of the GHReaction is a bit
hard to understand, and so it is to explain.

Regarding to the CenterNode and CenterNodeRotated, they help to build
and orient the EdgeNodes that represent the edge of the glenoid
cavity. Also if you draw the force vector you will see it is applied
to the centre of the glenoid as here is the center of the spherical
joint.

I hope it makes it clearer.

Best regards,
Sylvain, AnyBody Support.

— In anyscript@yahoogroups.com, “chrisjgatti” <cjgatti@…> wrote:
>
> I can see in other joints the listing of which segments are first
and
> second, but cannot see this for GHreactions. What should I be
looking
> for and in which file?
>
> In the GHreactions.any file I see that there is a CenterNode and
> CenterNodeRotated in the Scapula folder of GHreactions, with both
> nodes at the center of the glenoid. When I display these coordinate
> systems in the model, the CenterNode coordinate system has the same
> orientation as the scapular system (x axis lateral right, y axis
> superior, z axis posterior), and the CenterNodeRotated coordinate
> system is the scapular system rotated -90 degrees about the local
> y-axis (x axis posterior, y axis superior, z axis medial left). For
> reference, the global system has the x axis anterior, y axis
superior,
> and z axis lateral right.
>
> For 30 degrees of abduction in the coronal plane with a -10N hand
> weight, I get FTotal of GHreactions to be [-262.83, -14.29, -
474.1]. I
> assume the the z component must be in the compressive direction to
the
> glenoid, so it seems like this z axis must match with the z axis of
> either the global or the CenterNodeRotated system (I’m also not sure
> if GHreactions is the reaction forces on or of the scapula). Beyond
> that, I’m a little confused. Any help here?
>
> Thanks,
>
> Chris
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
wrote:
> >
> > Hi Chris,
> >
> > By default the force Ftotal of GHreaction is measured in the
local
> > coordinate system of the scapula. The best way to visualize the
frame
> > and compare it with you model is to draw it with an
AnyDrawRefFrame
> > in the Scapula folder.
> >
> > In general you can know what is the ref frame of the reaction
force
> > of a joint by looking at the definition of this joint. If there
is no
> > Ref=… present then the ref frame is the first segment or node
> > declared in the joint (by default). If there is Ref=-1; the ref
frame
> > is the GlobalRef, with Ref=0; the ref frame is the first node
> > declared and for Ref=1; the ref frame is the second node declared.
> >
> > In some models the ref frame for the GHReaction has been
modified,
> > maybe that is why you read different versions.
> >
> > Best regards,
> > Sylvain, AnyBody Support.
> >
> >
> >
> >
> > — In anyscript@yahoogroups.com, “chrisjgatti” <cjgatti@> wrote:
> > >
> > > Thanks again Sylvain,
> > >
> > > Can I get some clarification concerning in which coordinate
system
> > > FTotal of GHreactions is measured (along with anatomical
directions
> > so
> > > I can ensure my model is similar)? I have seen some things that
say
> > > global coordinate system, some say scapular coordinate system,
and
> > > others say in the GHcenternode coordinate system. How do you
know in
> > > which coordinate system these forces are measured?
> > >
> > > Thanks,
> > >
> > > Chris
> > >
> > > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> > wrote:
> > > >
> > > >
> > > > Hi Chris,
> > > >
> > > > The file GHreaction.any has two functions. One of them as you
> > > > understood it is to constrain the glenohumeral reaction force
to
> > > > point inside the glenoid cavity. If it not the shoulder would
> > > > dislocate in a real body. To do so the muscle recruitment can
be
> > > > modified. However in lot of movements the reaction force
probably
> > > > points naturally inside the glenoid cavity, so muscle forces
does
> > not
> > > > need to be changed. That is why you didn’t see any changes in
the
> > > > muscles forces with and without the GHreaction.any file.
> > > >
> > > > The second function of the GHreaction.any file is to create
the
> > > > unilateral contact of the glenoid. This is done by the 8
pushing
> > > > muscles (pushing only so the contact is really unilateral).
The
> > > > result of this contact is the reaction FTotal. Now GHlincon
is
> > > > different. It is actually a driver creating the spherical
joint
> > of
> > > > the shoulder by driving the 3 linear measure of the joint to
> > zero.
> > > > This driver has reaction forces like all the drivers, and
those
> > > > reaction forces are switched off when GHreaction.any is used
> > (because
> > > > GHreaction.any already provides the reaction forces). But if
> > > > GHreaction.any is not used, then it doesn’t provide the
reaction
> > > > forces anymore and it is the driver GHlincon that will
provide
> > the
> > > > reaction forces by switching the Reaction.Type to “On”. The
> > reaction
> > > > forces are then given by GHlincon.Reaction.Fout.
> > > > I hope the difference between GHlincon.Reaction.Fout and the
> > FTotal
> > > > is clear.
> > > >
> > > > So physiologically GHreaction.any represents the unilateral
> > contact
> > > > of the glenoid surface, and also a stability criterion
preventing
> > the
> > > > shoulder to dislocate.
> > > >
> > > > Best regards,
> > > > Sylvain, AnyBody Support.
> > >
> >
>