shoulder 2D model

Hi guys,
I’m still working with anybody to finish the first part of
my simulations in 2 dimensions. After some revisions of the model,
i’ve found a big error in it.
If you don’t remember, I try to simulate the migration of the humeral
head, in the case of a massive rotator cuff tear. So, my model allows
a translation of the humerus upward and a permanent contact of the
prosthetic head on the acromion. This contact is allowed by a driver
(acromion driver), related to mathematical properties of the elliptic
shape. Because this contact is between a prosthesis and a bone, it
can’t supply a pulling force (just pushing force is allowed) (It was
the error !!). To correct that, I have switched off the reaction of
the driver and put a general “only pushing” muscle on it. So now, the
abduction can goes until a certain degree and after that, the geometry
is not able to carry the movement, and the simulation stops. It is
exactly that I want because it directly shows if the geometry is
efficient or not.

My problem is when I try to perform a parametric simulation. I look on
the maximum abduction reached during the simulation (kinematic
rotational measure). The results are very strange and I think that
they are not representative, probably because the simulation stops
with an error. So, if I would get rid of this error by changing
something on the model, it would maybe works.

Maybe you have a little idea of what I should do (I hope …). I send
you my model and a picture of the results.

Thank you in advance for your support and say hello to everyone of
Anybody for me :wink:

bye bye

Pierre

Hi again,
the files are “Shoulder 2D model” and “Shoulder 2D model results”.

Thank you again

Best regards

Hi Pierre

I think there is a simple solution to your problem….

The reason why you are getting this strange solution is that the analysis
has not been finished due to the inverse analysis, this is as you expect.
The abduction angle you find by taking the max value of the abduction angle
function. This is fine if the analysis had finished correctly because then
it would look at all the values in the output function (nStep values) and
find the maximum one. When the analysis stops it will still look at these
nStep values, but now some of these can contain “garbage” numbers.

So the remedy in this case is to change the output function in the
parameterstudy to the following

AnyDesMeasure AbductionMax = {

Val = -Main.MyModel.GH.Pos[0];

};

This function do not take the max of any values it will just return the last
one … and this is what you would like in this case I guess.

There will be the same kind of problems with your other output function in
the parameter study as I see it. The Abduction angle is reported ok but if
you did the same with the deltoid activity it would not work I believe
because this value is not calculated in the last step because it fails in
inverse analysis, it goes ok with the abduction angle because the kinematics
has been solved ok.

So using the function

AnyDesMeasure DeltoidActivity = {

   Val = max(..Study.MaxActivity());

 };

I am not really sure what you get since you take the max of values which are
initialized, and this may give strange results. So I think you should
consider exporting these numbers using an output file and then process them
externally.

I hope this helps you move on.

Otherwise please write again.

Best regards

Søren, AnyBody Support


From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of Pierre-Olivier Lemieux
Sent: 07 February 2008 18:46
To: anyscript@yahoogroups.com
Subject: [AnyScript] shoulder 2D model

Hi guys,
I’m still working with anybody to finish the first part of
my simulations in 2 dimensions. After some revisions of the model,
i’ve found a big error in it.
If you don’t remember, I try to simulate the migration of the humeral
head, in the case of a massive rotator cuff tear. So, my model allows
a translation of the humerus upward and a permanent contact of the
prosthetic head on the acromion. This contact is allowed by a driver
(acromion driver), related to mathematical properties of the elliptic
shape. Because this contact is between a prosthesis and a bone, it
can’t supply a pulling force (just pushing force is allowed) (It was
the error !!). To correct that, I have switched off the reaction of
the driver and put a general “only pushing” muscle on it. So now, the
abduction can goes until a certain degree and after that, the geometry
is not able to carry the movement, and the simulation stops. It is
exactly that I want because it directly shows if the geometry is
efficient or not.

My problem is when I try to perform a parametric simulation. I look on
the maximum abduction reached during the simulation (kinematic
rotational measure). The results are very strange and I think that
they are not representative, probably because the simulation stops
with an error. So, if I would get rid of this error by changing
something on the model, it would maybe works.

Maybe you have a little idea of what I should do (I hope …). I send
you my model and a picture of the results.

Thank you in advance for your support and say hello to everyone of
Anybody for me :wink:

bye bye

Pierre

[Non-text portions of this message have been removed]

Hi Soeren,
thank you for you recommendations. It seems to works now for
the abduction. The deltoid activity is not what I want most, so I’ve
just commented it out.
I have an other question now. When I went to Aalborg, John gave me a
folder with some special scripts. One of these scripts is
“ContactSurfaceLinPush”. Like it says, it was to create a pushing
force on a contact node (I guess). However, I have some difficulties
to understand this script. Also, it works with a constant radius
humeral head, but not for my elliptic shape. Do you think this is
possible ?

You can check the folder “AcromionHumerusContact” in the bottom of my
main script (The file is “PO_Lemieux_shoulder2D.zip”). I will send you
the special script, because I don’t know who has written it.

Thank you again,

Pierre-Olivier

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Pierre
>
>
>
> I think there is a simple solution to your problem….
>
>
>
> The reason why you are getting this strange solution is that the
analysis
> has not been finished due to the inverse analysis, this is as you
expect.
> The abduction angle you find by taking the max value of the
abduction angle
> function. This is fine if the analysis had finished correctly
because then
> it would look at all the values in the output function (nStep
values) and
> find the maximum one. When the analysis stops it will still look at
these
> nStep values, but now some of these can contain “garbage” numbers.
>
>
>
> So the remedy in this case is to change the output function in the
> parameterstudy to the following
>
>
>
> AnyDesMeasure AbductionMax = {
>
> Val = -Main.MyModel.GH.Pos[0];
>
> };
>
>
>
> This function do not take the max of any values it will just return
the last
> one … and this is what you would like in this case I guess.
>
>
>
> There will be the same kind of problems with your other output
function in
> the parameter study as I see it. The Abduction angle is reported ok
but if
> you did the same with the deltoid activity it would not work I believe
> because this value is not calculated in the last step because it
fails in
> inverse analysis, it goes ok with the abduction angle because the
kinematics
> has been solved ok.
>
>
>
> So using the function
>
>
>
> AnyDesMeasure DeltoidActivity = {
>
> Val = max(…Study.MaxActivity());
>
> };
>
>
>
> I am not really sure what you get since you take the max of values
which are
> initialized, and this may give strange results. So I think you should
> consider exporting these numbers using an output file and then
process them
> externally.
>
>
>
> I hope this helps you move on.
>
>
>
> Otherwise please write again.
>
>
>
> Best regards
>
> Søren, AnyBody Support
>
>
>
> _____
>
> From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com]
On Behalf
> Of Pierre-Olivier Lemieux
> Sent: 07 February 2008 18:46
> To: anyscript@yahoogroups.com
> Subject: [AnyScript] shoulder 2D model
>
>
>
> Hi guys,
> I’m still working with anybody to finish the first part of
> my simulations in 2 dimensions. After some revisions of the model,
> i’ve found a big error in it.
> If you don’t remember, I try to simulate the migration of the humeral
> head, in the case of a massive rotator cuff tear. So, my model allows
> a translation of the humerus upward and a permanent contact of the
> prosthetic head on the acromion. This contact is allowed by a driver
> (acromion driver), related to mathematical properties of the elliptic
> shape. Because this contact is between a prosthesis and a bone, it
> can’t supply a pulling force (just pushing force is allowed) (It was
> the error !!). To correct that, I have switched off the reaction of
> the driver and put a general “only pushing” muscle on it. So now, the
> abduction can goes until a certain degree and after that, the geometry
> is not able to carry the movement, and the simulation stops. It is
> exactly that I want because it directly shows if the geometry is
> efficient or not.
>
> My problem is when I try to perform a parametric simulation. I look on
> the maximum abduction reached during the simulation (kinematic
> rotational measure). The results are very strange and I think that
> they are not representative, probably because the simulation stops
> with an error. So, if I would get rid of this error by changing
> something on the model, it would maybe works.
>
> Maybe you have a little idea of what I should do (I hope …). I send
> you my model and a picture of the results.
>
> Thank you in advance for your support and say hello to everyone of
> Anybody for me :wink:
>
> bye bye
>
> Pierre
>
>
>
>
>
> [Non-text portions of this message have been removed]
>

Hi Pierre-Olivier

I will try to give you some more information on the file
ContactSurfaceLinPush, this file can create a conditional contact
with pushing muscles. If the two contact points are close enough
(this distance is set by the user) then the muscles will have a high
strength and can create the contact force. If the two contact points
are to far from each other, the muscles will have no strength at
all, and there can be no contact force.
But I am not sure if this utility is useful for your model because
you want a permanent contact of the humerus head?

The file also holds another utility which is the ability to create
normal reaction force and friction force at the contact point. This
could maybe be interesting for your model. But you have to take care
to apply those forces to the acromion contact point. You actually
applied them to the center of the humerus head instead of the
contact point.

I tried running the files you uploaded and it is working with the
elliptic shape without doing any changes. However the model is now
fully balanced and it is not possible anymore to see that point you
was interested in the last time (where the geometry cannot carry the
load) to plot the max abduction.

So the solution of recreating the humeral contact depends on the
simulation you want to perform

An example of using ContactSurfaceLinPush is available in the
repository 7/Application/Examples/PedalDemoConditional, as I recall
it the contact muscles are defined in the JointAndDriver.any file.

Best regards,
Sylvain, AnyBody Support

— In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
<pothekid@…> wrote:
>
> Hi Soeren,
> thank you for you recommendations. It seems to works now
for
> the abduction. The deltoid activity is not what I want most, so
I’ve
> just commented it out.
> I have an other question now. When I went to Aalborg, John gave me
a
> folder with some special scripts. One of these scripts is
> “ContactSurfaceLinPush”. Like it says, it was to create a pushing
> force on a contact node (I guess). However, I have some
difficulties
> to understand this script. Also, it works with a constant radius
> humeral head, but not for my elliptic shape. Do you think this is
> possible ?
>
> You can check the folder “AcromionHumerusContact” in the bottom of
my
> main script (The file is “PO_Lemieux_shoulder2D.zip”). I will send
you
> the special script, because I don’t know who has written it.
>
> Thank you again,
>
> Pierre-Olivier
>
>
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
wrote:
> >
> > Hi Pierre
> >
> >
> >
> > I think there is a simple solution to your problem….
> >
> >
> >
> > The reason why you are getting this strange solution is that the
> analysis
> > has not been finished due to the inverse analysis, this is as you
> expect.
> > The abduction angle you find by taking the max value of the
> abduction angle
> > function. This is fine if the analysis had finished correctly
> because then
> > it would look at all the values in the output function (nStep
> values) and
> > find the maximum one. When the analysis stops it will still look
at
> these
> > nStep values, but now some of these can contain “garbage”
numbers.
> >
> >
> >
> > So the remedy in this case is to change the output function in
the
> > parameterstudy to the following
> >
> >
> >
> > AnyDesMeasure AbductionMax = {
> >
> > Val = -Main.MyModel.GH.Pos[0];
> >
> > };
> >
> >
> >
> > This function do not take the max of any values it will just
return
> the last
> > one … and this is what you would like in this case I guess.
> >
> >
> >
> > There will be the same kind of problems with your other output
> function in
> > the parameter study as I see it. The Abduction angle is reported
ok
> but if
> > you did the same with the deltoid activity it would not work I
believe
> > because this value is not calculated in the last step because it
> fails in
> > inverse analysis, it goes ok with the abduction angle because the
> kinematics
> > has been solved ok.
> >
> >
> >
> > So using the function
> >
> >
> >
> > AnyDesMeasure DeltoidActivity = {
> >
> > Val = max(…Study.MaxActivity());
> >
> > };
> >
> >
> >
> > I am not really sure what you get since you take the max of
values
> which are
> > initialized, and this may give strange results. So I think you
should
> > consider exporting these numbers using an output file and then
> process them
> > externally.
> >
> >
> >
> > I hope this helps you move on.
> >
> >
> >
> > Otherwise please write again.
> >
> >
> >
> > Best regards
> >
> > Søren, AnyBody Support
> >
> >
> >
> > _____
> >
> > From: anyscript@yahoogroups.com
[mailto:anyscript@yahoogroups.com]
> On Behalf
> > Of Pierre-Olivier Lemieux
> > Sent: 07 February 2008 18:46
> > To: anyscript@yahoogroups.com
> > Subject: [AnyScript] shoulder 2D model
> >
> >
> >
> > Hi guys,
> > I’m still working with anybody to finish the first part of
> > my simulations in 2 dimensions. After some revisions of the
model,
> > i’ve found a big error in it.
> > If you don’t remember, I try to simulate the migration of the
humeral
> > head, in the case of a massive rotator cuff tear. So, my model
allows
> > a translation of the humerus upward and a permanent contact of
the
> > prosthetic head on the acromion. This contact is allowed by a
driver
> > (acromion driver), related to mathematical properties of the
elliptic
> > shape. Because this contact is between a prosthesis and a bone,
it
> > can’t supply a pulling force (just pushing force is allowed) (It
was
> > the error !!). To correct that, I have switched off the reaction
of
> > the driver and put a general “only pushing” muscle on it. So
now, the
> > abduction can goes until a certain degree and after that, the
geometry
> > is not able to carry the movement, and the simulation stops. It
is
> > exactly that I want because it directly shows if the geometry is
> > efficient or not.
> >
> > My problem is when I try to perform a parametric simulation. I
look on
> > the maximum abduction reached during the simulation (kinematic
> > rotational measure). The results are very strange and I think
that
> > they are not representative, probably because the simulation
stops
> > with an error. So, if I would get rid of this error by changing
> > something on the model, it would maybe works.
> >
> > Maybe you have a little idea of what I should do (I hope …). I
send
> > you my model and a picture of the results.
> >
> > Thank you in advance for your support and say hello to everyone
of
> > Anybody for me :wink:
> >
> > bye bye
> >
> > Pierre
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
>

Hi Sylvain,
thank you for your support. I’ve worked around
the “ContactLinePush” problem all the week-end and I’ve found that
by swithching the “Base” and “Target” objects, the friction appears.
However, it gives me too high results because the switch mixed up
all the calculations. For exemple, the resulting friction force is
equal to the normal force, that is not correct. Also, the arrows
rotate following the abduction angle. Maybe a “ContactRotPush” would
perform better ?
So, I guess that I’m on a good way to find a solution, but I still
need to understand how this script works, and what are the
accepted “RefFrame” for the “Base” and “Target” objects.

Also, in the present case, there is an external pushing force
(ContactLinePush) on the shoulder upward during all abduction to
keep the contact between the acromion and the ellipse.
However, in the real case, the deltoid, while performing the
abduction alone, pulls on the humerus, instead of “ContactLinePush”,
and creates a contact force between the acromion and humeral head
(that should be the ContactLinePush). I’ve made an experimental set-
up that has shown me these results.

Also, I’ve noticed another strange behavior. For exemple, when I use
the acromion contact point P12 : (0,0.039,0) and deltoid origin
point P8 : (0,0.050,0) and use the “ContactLinPush” script, the
results are very different from using the same P12, but changing P8
to a closer distance (0,0.038,0) from P12. Note that the first set
of values for P8 and P12 are the ones that I need.

So, if you can help me understanding these problems, it would help
me a lot.

Have a good week and thank you again.

Pierre.

P.S. : I’ve not found the repository 7, is it normal ?

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…>
wrote:
>
> Hi Pierre-Olivier
>
> I will try to give you some more information on the file
> ContactSurfaceLinPush, this file can create a conditional contact
> with pushing muscles. If the two contact points are close enough
> (this distance is set by the user) then the muscles will have a
high
> strength and can create the contact force. If the two contact
points
> are to far from each other, the muscles will have no strength at
> all, and there can be no contact force.
> But I am not sure if this utility is useful for your model because
> you want a permanent contact of the humerus head?
>
>
>
> The file also holds another utility which is the ability to create
> normal reaction force and friction force at the contact point.
This
> could maybe be interesting for your model. But you have to take
care
> to apply those forces to the acromion contact point. You actually
> applied them to the center of the humerus head instead of the
> contact point.
>
> I tried running the files you uploaded and it is working with the
> elliptic shape without doing any changes. However the model is now
> fully balanced and it is not possible anymore to see that point
you
> was interested in the last time (where the geometry cannot carry
the
> load) to plot the max abduction.
>
> So the solution of recreating the humeral contact depends on the
> simulation you want to perform
>
> An example of using ContactSurfaceLinPush is available in the
> repository 7/Application/Examples/PedalDemoConditional, as I
recall
> it the contact muscles are defined in the JointAndDriver.any file.
>
> Best regards,
> Sylvain, AnyBody Support
>
>
>
>
>
> — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> <pothekid@> wrote:
> >
> > Hi Soeren,
> > thank you for you recommendations. It seems to works
now
> for
> > the abduction. The deltoid activity is not what I want most, so
> I’ve
> > just commented it out.
> > I have an other question now. When I went to Aalborg, John gave
me
> a
> > folder with some special scripts. One of these scripts is
> > “ContactSurfaceLinPush”. Like it says, it was to create a pushing
> > force on a contact node (I guess). However, I have some
> difficulties
> > to understand this script. Also, it works with a constant radius
> > humeral head, but not for my elliptic shape. Do you think this is
> > possible ?
> >
> > You can check the folder “AcromionHumerusContact” in the bottom
of
> my
> > main script (The file is “PO_Lemieux_shoulder2D.zip”). I will
send
> you
> > the special script, because I don’t know who has written it.
> >
> > Thank you again,
> >
> > Pierre-Olivier
> >
> >
> >
> > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> wrote:
> > >
> > > Hi Pierre
> > >
> > >
> > >
> > > I think there is a simple solution to your problem….
> > >
> > >
> > >
> > > The reason why you are getting this strange solution is that
the
> > analysis
> > > has not been finished due to the inverse analysis, this is as
you
> > expect.
> > > The abduction angle you find by taking the max value of the
> > abduction angle
> > > function. This is fine if the analysis had finished correctly
> > because then
> > > it would look at all the values in the output function (nStep
> > values) and
> > > find the maximum one. When the analysis stops it will still
look
> at
> > these
> > > nStep values, but now some of these can contain “garbage”
> numbers.
> > >
> > >
> > >
> > > So the remedy in this case is to change the output function in
> the
> > > parameterstudy to the following
> > >
> > >
> > >
> > > AnyDesMeasure AbductionMax = {
> > >
> > > Val = -Main.MyModel.GH.Pos[0];
> > >
> > > };
> > >
> > >
> > >
> > > This function do not take the max of any values it will just
> return
> > the last
> > > one … and this is what you would like in this case I guess.
> > >
> > >
> > >
> > > There will be the same kind of problems with your other output
> > function in
> > > the parameter study as I see it. The Abduction angle is
reported
> ok
> > but if
> > > you did the same with the deltoid activity it would not work I
> believe
> > > because this value is not calculated in the last step because
it
> > fails in
> > > inverse analysis, it goes ok with the abduction angle because
the
> > kinematics
> > > has been solved ok.
> > >
> > >
> > >
> > > So using the function
> > >
> > >
> > >
> > > AnyDesMeasure DeltoidActivity = {
> > >
> > > Val = max(…Study.MaxActivity());
> > >
> > > };
> > >
> > >
> > >
> > > I am not really sure what you get since you take the max of
> values
> > which are
> > > initialized, and this may give strange results. So I think you
> should
> > > consider exporting these numbers using an output file and then
> > process them
> > > externally.
> > >
> > >
> > >
> > > I hope this helps you move on.
> > >
> > >
> > >
> > > Otherwise please write again.
> > >
> > >
> > >
> > > Best regards
> > >
> > > Søren, AnyBody Support
> > >
> > >
> > >
> > > _____
> > >
> > > From: anyscript@yahoogroups.com
> [mailto:anyscript@yahoogroups.com]
> > On Behalf
> > > Of Pierre-Olivier Lemieux
> > > Sent: 07 February 2008 18:46
> > > To: anyscript@yahoogroups.com
> > > Subject: [AnyScript] shoulder 2D model
> > >
> > >
> > >
> > > Hi guys,
> > > I’m still working with anybody to finish the first part of
> > > my simulations in 2 dimensions. After some revisions of the
> model,
> > > i’ve found a big error in it.
> > > If you don’t remember, I try to simulate the migration of the
> humeral
> > > head, in the case of a massive rotator cuff tear. So, my model
> allows
> > > a translation of the humerus upward and a permanent contact of
> the
> > > prosthetic head on the acromion. This contact is allowed by a
> driver
> > > (acromion driver), related to mathematical properties of the
> elliptic
> > > shape. Because this contact is between a prosthesis and a
bone,
> it
> > > can’t supply a pulling force (just pushing force is allowed)
(It
> was
> > > the error !!). To correct that, I have switched off the
reaction
> of
> > > the driver and put a general “only pushing” muscle on it. So
> now, the
> > > abduction can goes until a certain degree and after that, the
> geometry
> > > is not able to carry the movement, and the simulation stops.
It
> is
> > > exactly that I want because it directly shows if the geometry
is
> > > efficient or not.
> > >
> > > My problem is when I try to perform a parametric simulation. I
> look on
> > > the maximum abduction reached during the simulation (kinematic
> > > rotational measure). The results are very strange and I think
> that
> > > they are not representative, probably because the simulation
> stops
> > > with an error. So, if I would get rid of this error by changing
> > > something on the model, it would maybe works.
> > >
> > > Maybe you have a little idea of what I should do (I hope …).
I
> send
> > > you my model and a picture of the results.
> > >
> > > Thank you in advance for your support and say hello to
everyone
> of
> > > Anybody for me :wink:
> > >
> > > bye bye
> > >
> > > Pierre
> > >
> > >
> > >
> > >
> > >
> > > [Non-text portions of this message have been removed]
> > >
> >
>

Hi Pierre,

In the file ContactSurfaceLinPush the object Base define the node
that is applying the force. The object Target defines the node where
the force is applied to. So by switching Base and Target object you
are now applying the reaction forces from the center of the
ellipsoid to p12. And the reaction forces are displayed in the Base
frame (ellipsoid frame in this case) that’s why the arrows follow
the abduction angle.

This can be improved by applying the reaction forces from P12 to a
floating point on the external shape of the ellipsoid, where the
contact really occurs. You can create a segment (with no mass) that
you drive to slide on the ellipsoid shape as you did with the
AcromionDriver, and you set the distance between one point of this
segment and P12 to 0. Then you have to create some reaction forces
between this segment and the ellipsoid to transmit all the forces.
So you will now have a floating contact point on the ellipsoid
shape. By setting the Base to the new segment you should be able to
draw the reaction force vectors in the tangential plane of the shape.

About the ContactRotPush, this applies a moment between two segments
in contact. There are no friction forces, so this may not be what
you need.

For the external pushing force of ContactSurfaceLinPush you talk
about: this function actually use 5 muscles. One pushing in the
normal direction of the surface and 4 others creating the friction
forces in the plane of the surface combined with normal force;
please see this link where there is a short description

http://www.anybodytech.com/116.0.html?&tx_ttnews[backPid]
=37&tx_ttnews[tt_news]=23&cHash=c92c2826e9

I understand you would like to activate only the friction muscles?
That is not possible, the five muscles are linked and working
together.

And for the strange behaviour you noticed when you change the
deltoid origin, well i don’t think it’s so strange. Because by
changing the origin of the muscle you change the force it will have
to develop, you also change the reaction forces in the contact
point. But i think you don’t have a big interest in changing the
muscle origin and you should just keep it in its normal value.

It’s correct that you did not find repository 7, it is not public, I
forgot this, sorry. You should look in the repository 6, here you
will find the file PedalDemoConditional in ARep\Aalborg.

Best Regards
Sylvain, AnyBodySupport

— In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
<pothekid@…> wrote:
>
> Hi Sylvain,
> thank you for your support. I’ve worked around
> the “ContactLinePush” problem all the week-end and I’ve found that
> by swithching the “Base” and “Target” objects, the friction
appears.
> However, it gives me too high results because the switch mixed up
> all the calculations. For exemple, the resulting friction force is
> equal to the normal force, that is not correct. Also, the arrows
> rotate following the abduction angle. Maybe a “ContactRotPush”
would
> perform better ?
> So, I guess that I’m on a good way to find a solution, but I still
> need to understand how this script works, and what are the
> accepted “RefFrame” for the “Base” and “Target” objects.
>
> Also, in the present case, there is an external pushing force
> (ContactLinePush) on the shoulder upward during all abduction to
> keep the contact between the acromion and the ellipse.
> However, in the real case, the deltoid, while performing the
> abduction alone, pulls on the humerus, instead
of “ContactLinePush”,
> and creates a contact force between the acromion and humeral head
> (that should be the ContactLinePush). I’ve made an experimental
set-
> up that has shown me these results.
>
> Also, I’ve noticed another strange behavior. For exemple, when I
use
> the acromion contact point P12 : (0,0.039,0) and deltoid origin
> point P8 : (0,0.050,0) and use the “ContactLinPush” script, the
> results are very different from using the same P12, but changing
P8
> to a closer distance (0,0.038,0) from P12. Note that the first set
> of values for P8 and P12 are the ones that I need.
>
> So, if you can help me understanding these problems, it would help
> me a lot.
>
> Have a good week and thank you again.
>
> Pierre.
>
> P.S. : I’ve not found the repository 7, is it normal ?
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> wrote:
> >
> > Hi Pierre-Olivier
> >
> > I will try to give you some more information on the file
> > ContactSurfaceLinPush, this file can create a conditional
contact
> > with pushing muscles. If the two contact points are close enough
> > (this distance is set by the user) then the muscles will have a
> high
> > strength and can create the contact force. If the two contact
> points
> > are to far from each other, the muscles will have no strength at
> > all, and there can be no contact force.
> > But I am not sure if this utility is useful for your model
because
> > you want a permanent contact of the humerus head?
> >
> >
> >
> > The file also holds another utility which is the ability to
create
> > normal reaction force and friction force at the contact point.
> This
> > could maybe be interesting for your model. But you have to take
> care
> > to apply those forces to the acromion contact point. You
actually
> > applied them to the center of the humerus head instead of the
> > contact point.
> >
> > I tried running the files you uploaded and it is working with
the
> > elliptic shape without doing any changes. However the model is
now
> > fully balanced and it is not possible anymore to see that point
> you
> > was interested in the last time (where the geometry cannot carry
> the
> > load) to plot the max abduction.
> >
> > So the solution of recreating the humeral contact depends on the
> > simulation you want to perform
> >
> > An example of using ContactSurfaceLinPush is available in the
> > repository 7/Application/Examples/PedalDemoConditional, as I
> recall
> > it the contact muscles are defined in the JointAndDriver.any
file.
> >
> > Best regards,
> > Sylvain, AnyBody Support
> >
> >
> >
> >
> >
> > — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> > <pothekid@> wrote:
> > >
> > > Hi Soeren,
> > > thank you for you recommendations. It seems to works
> now
> > for
> > > the abduction. The deltoid activity is not what I want most,
so
> > I’ve
> > > just commented it out.
> > > I have an other question now. When I went to Aalborg, John
gave
> me
> > a
> > > folder with some special scripts. One of these scripts is
> > > “ContactSurfaceLinPush”. Like it says, it was to create a
pushing
> > > force on a contact node (I guess). However, I have some
> > difficulties
> > > to understand this script. Also, it works with a constant
radius
> > > humeral head, but not for my elliptic shape. Do you think this
is
> > > possible ?
> > >
> > > You can check the folder “AcromionHumerusContact” in the
bottom
> of
> > my
> > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I will
> send
> > you
> > > the special script, because I don’t know who has written it.
> > >
> > > Thank you again,
> > >
> > > Pierre-Olivier
> > >
> > >
> > >
> > > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> > wrote:
> > > >
> > > > Hi Pierre
> > > >
> > > >
> > > >
> > > > I think there is a simple solution to your problem….
> > > >
> > > >
> > > >
> > > > The reason why you are getting this strange solution is that
> the
> > > analysis
> > > > has not been finished due to the inverse analysis, this is
as
> you
> > > expect.
> > > > The abduction angle you find by taking the max value of the
> > > abduction angle
> > > > function. This is fine if the analysis had finished correctly
> > > because then
> > > > it would look at all the values in the output function (nStep
> > > values) and
> > > > find the maximum one. When the analysis stops it will still
> look
> > at
> > > these
> > > > nStep values, but now some of these can contain “garbage”
> > numbers.
> > > >
> > > >
> > > >
> > > > So the remedy in this case is to change the output function
in
> > the
> > > > parameterstudy to the following
> > > >
> > > >
> > > >
> > > > AnyDesMeasure AbductionMax = {
> > > >
> > > > Val = -Main.MyModel.GH.Pos[0];
> > > >
> > > > };
> > > >
> > > >
> > > >
> > > > This function do not take the max of any values it will just
> > return
> > > the last
> > > > one … and this is what you would like in this case I guess.
> > > >
> > > >
> > > >
> > > > There will be the same kind of problems with your other
output
> > > function in
> > > > the parameter study as I see it. The Abduction angle is
> reported
> > ok
> > > but if
> > > > you did the same with the deltoid activity it would not work
I
> > believe
> > > > because this value is not calculated in the last step
because
> it
> > > fails in
> > > > inverse analysis, it goes ok with the abduction angle
because
> the
> > > kinematics
> > > > has been solved ok.
> > > >
> > > >
> > > >
> > > > So using the function
> > > >
> > > >
> > > >
> > > > AnyDesMeasure DeltoidActivity = {
> > > >
> > > > Val = max(…Study.MaxActivity());
> > > >
> > > > };
> > > >
> > > >
> > > >
> > > > I am not really sure what you get since you take the max of
> > values
> > > which are
> > > > initialized, and this may give strange results. So I think
you
> > should
> > > > consider exporting these numbers using an output file and
then
> > > process them
> > > > externally.
> > > >
> > > >
> > > >
> > > > I hope this helps you move on.
> > > >
> > > >
> > > >
> > > > Otherwise please write again.
> > > >
> > > >
> > > >
> > > > Best regards
> > > >
> > > > Søren, AnyBody Support
> > > >
> > > >
> > > >
> > > > _____
> > > >
> > > > From: anyscript@yahoogroups.com
> > [mailto:anyscript@yahoogroups.com]
> > > On Behalf
> > > > Of Pierre-Olivier Lemieux
> > > > Sent: 07 February 2008 18:46
> > > > To: anyscript@yahoogroups.com
> > > > Subject: [AnyScript] shoulder 2D model
> > > >
> > > >
> > > >
> > > > Hi guys,
> > > > I’m still working with anybody to finish the first part of
> > > > my simulations in 2 dimensions. After some revisions of the
> > model,
> > > > i’ve found a big error in it.
> > > > If you don’t remember, I try to simulate the migration of
the
> > humeral
> > > > head, in the case of a massive rotator cuff tear. So, my
model
> > allows
> > > > a translation of the humerus upward and a permanent contact
of
> > the
> > > > prosthetic head on the acromion. This contact is allowed by
a
> > driver
> > > > (acromion driver), related to mathematical properties of the
> > elliptic
> > > > shape. Because this contact is between a prosthesis and a
> bone,
> > it
> > > > can’t supply a pulling force (just pushing force is allowed)
> (It
> > was
> > > > the error !!). To correct that, I have switched off the
> reaction
> > of
> > > > the driver and put a general “only pushing” muscle on it. So
> > now, the
> > > > abduction can goes until a certain degree and after that,
the
> > geometry
> > > > is not able to carry the movement, and the simulation stops.
> It
> > is
> > > > exactly that I want because it directly shows if the
geometry
> is
> > > > efficient or not.
> > > >
> > > > My problem is when I try to perform a parametric simulation.
I
> > look on
> > > > the maximum abduction reached during the simulation
(kinematic
> > > > rotational measure). The results are very strange and I
think
> > that
> > > > they are not representative, probably because the simulation
> > stops
> > > > with an error. So, if I would get rid of this error by
changing
> > > > something on the model, it would maybe works.
> > > >
> > > > Maybe you have a little idea of what I should do (I
hope …).
> I
> > send
> > > > you my model and a picture of the results.
> > > >
> > > > Thank you in advance for your support and say hello to
> everyone
> > of
> > > > Anybody for me :wink:
> > > >
> > > > bye bye
> > > >
> > > > Pierre
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > [Non-text portions of this message have been removed]
> > > >
> > >
> >
>

Hi Sylvain,
I’ve made the changes that you told me about, but I’m not
able to make my model works well. I don’t have any
“ContactSurfaceLinPush” reaction forces and friction forces.

In Excel, I’ve calculated the displacement of the humeral head in term
of static equations for the abduction and put those values in the
model (“SliderDriver” and “AbductionDriver”). With these values, the
displacement is upward at the beginning of abduction and downward at
the end. So, the contact between the acromion and humeral head is not
always there. For this reason, the “ContactSurfaceLinPush” is very
useful for me.

I’m not sure to understand well when you talk about adding some
reaction forces. Is it the “AnyReacForce” object ? If it is the case,
can you help me to write it correctly ?

My new model is named “PO_Lemieux_shoulder_3”.

thank you for your support.

Pierre-Olivier

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Pierre,
>
> In the file ContactSurfaceLinPush the object Base define the node
> that is applying the force. The object Target defines the node where
> the force is applied to. So by switching Base and Target object you
> are now applying the reaction forces from the center of the
> ellipsoid to p12. And the reaction forces are displayed in the Base
> frame (ellipsoid frame in this case) that’s why the arrows follow
> the abduction angle.
>
> This can be improved by applying the reaction forces from P12 to a
> floating point on the external shape of the ellipsoid, where the
> contact really occurs. You can create a segment (with no mass) that
> you drive to slide on the ellipsoid shape as you did with the
> AcromionDriver, and you set the distance between one point of this
> segment and P12 to 0. Then you have to create some reaction forces
> between this segment and the ellipsoid to transmit all the forces.
> So you will now have a floating contact point on the ellipsoid
> shape. By setting the Base to the new segment you should be able to
> draw the reaction force vectors in the tangential plane of the shape.
>
> About the ContactRotPush, this applies a moment between two segments
> in contact. There are no friction forces, so this may not be what
> you need.
>
> For the external pushing force of ContactSurfaceLinPush you talk
> about: this function actually use 5 muscles. One pushing in the
> normal direction of the surface and 4 others creating the friction
> forces in the plane of the surface combined with normal force;
> please see this link where there is a short description
>
>
>
> http://www.anybodytech.com/116.0.html?&tx_ttnews[backPid]
> =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
>
>
>
> I understand you would like to activate only the friction muscles?
> That is not possible, the five muscles are linked and working
> together.
>
> And for the strange behaviour you noticed when you change the
> deltoid origin, well i don’t think it’s so strange. Because by
> changing the origin of the muscle you change the force it will have
> to develop, you also change the reaction forces in the contact
> point. But i think you don’t have a big interest in changing the
> muscle origin and you should just keep it in its normal value.
>
> It’s correct that you did not find repository 7, it is not public, I
> forgot this, sorry. You should look in the repository 6, here you
> will find the file PedalDemoConditional in ARep\Aalborg.
>
> Best Regards
> Sylvain, AnyBodySupport
>
>
>
>
>
>
> — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> <pothekid@> wrote:
> >
> > Hi Sylvain,
> > thank you for your support. I’ve worked around
> > the “ContactLinePush” problem all the week-end and I’ve found that
> > by swithching the “Base” and “Target” objects, the friction
> appears.
> > However, it gives me too high results because the switch mixed up
> > all the calculations. For exemple, the resulting friction force is
> > equal to the normal force, that is not correct. Also, the arrows
> > rotate following the abduction angle. Maybe a “ContactRotPush”
> would
> > perform better ?
> > So, I guess that I’m on a good way to find a solution, but I still
> > need to understand how this script works, and what are the
> > accepted “RefFrame” for the “Base” and “Target” objects.
> >
> > Also, in the present case, there is an external pushing force
> > (ContactLinePush) on the shoulder upward during all abduction to
> > keep the contact between the acromion and the ellipse.
> > However, in the real case, the deltoid, while performing the
> > abduction alone, pulls on the humerus, instead
> of “ContactLinePush”,
> > and creates a contact force between the acromion and humeral head
> > (that should be the ContactLinePush). I’ve made an experimental
> set-
> > up that has shown me these results.
> >
> > Also, I’ve noticed another strange behavior. For exemple, when I
> use
> > the acromion contact point P12 : (0,0.039,0) and deltoid origin
> > point P8 : (0,0.050,0) and use the “ContactLinPush” script, the
> > results are very different from using the same P12, but changing
> P8
> > to a closer distance (0,0.038,0) from P12. Note that the first set
> > of values for P8 and P12 are the ones that I need.
> >
> > So, if you can help me understanding these problems, it would help
> > me a lot.
> >
> > Have a good week and thank you again.
> >
> > Pierre.
> >
> > P.S. : I’ve not found the repository 7, is it normal ?
> >
> > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> > wrote:
> > >
> > > Hi Pierre-Olivier
> > >
> > > I will try to give you some more information on the file
> > > ContactSurfaceLinPush, this file can create a conditional
> contact
> > > with pushing muscles. If the two contact points are close enough
> > > (this distance is set by the user) then the muscles will have a
> > high
> > > strength and can create the contact force. If the two contact
> > points
> > > are to far from each other, the muscles will have no strength at
> > > all, and there can be no contact force.
> > > But I am not sure if this utility is useful for your model
> because
> > > you want a permanent contact of the humerus head?
> > >
> > >
> > >
> > > The file also holds another utility which is the ability to
> create
> > > normal reaction force and friction force at the contact point.
> > This
> > > could maybe be interesting for your model. But you have to take
> > care
> > > to apply those forces to the acromion contact point. You
> actually
> > > applied them to the center of the humerus head instead of the
> > > contact point.
> > >
> > > I tried running the files you uploaded and it is working with
> the
> > > elliptic shape without doing any changes. However the model is
> now
> > > fully balanced and it is not possible anymore to see that point
> > you
> > > was interested in the last time (where the geometry cannot carry
> > the
> > > load) to plot the max abduction.
> > >
> > > So the solution of recreating the humeral contact depends on the
> > > simulation you want to perform
> > >
> > > An example of using ContactSurfaceLinPush is available in the
> > > repository 7/Application/Examples/PedalDemoConditional, as I
> > recall
> > > it the contact muscles are defined in the JointAndDriver.any
> file.
> > >
> > > Best regards,
> > > Sylvain, AnyBody Support
> > >
> > >
> > >
> > >
> > >
> > > — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> > > <pothekid@> wrote:
> > > >
> > > > Hi Soeren,
> > > > thank you for you recommendations. It seems to works
> > now
> > > for
> > > > the abduction. The deltoid activity is not what I want most,
> so
> > > I’ve
> > > > just commented it out.
> > > > I have an other question now. When I went to Aalborg, John
> gave
> > me
> > > a
> > > > folder with some special scripts. One of these scripts is
> > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> pushing
> > > > force on a contact node (I guess). However, I have some
> > > difficulties
> > > > to understand this script. Also, it works with a constant
> radius
> > > > humeral head, but not for my elliptic shape. Do you think this
> is
> > > > possible ?
> > > >
> > > > You can check the folder “AcromionHumerusContact” in the
> bottom
> > of
> > > my
> > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I will
> > send
> > > you
> > > > the special script, because I don’t know who has written it.
> > > >
> > > > Thank you again,
> > > >
> > > > Pierre-Olivier
> > > >
> > > >
> > > >
> > > > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> > > wrote:
> > > > >
> > > > > Hi Pierre
> > > > >
> > > > >
> > > > >
> > > > > I think there is a simple solution to your problem….
> > > > >
> > > > >
> > > > >
> > > > > The reason why you are getting this strange solution is that
> > the
> > > > analysis
> > > > > has not been finished due to the inverse analysis, this is
> as
> > you
> > > > expect.
> > > > > The abduction angle you find by taking the max value of the
> > > > abduction angle
> > > > > function. This is fine if the analysis had finished correctly
> > > > because then
> > > > > it would look at all the values in the output function (nStep
> > > > values) and
> > > > > find the maximum one. When the analysis stops it will still
> > look
> > > at
> > > > these
> > > > > nStep values, but now some of these can contain “garbage”
> > > numbers.
> > > > >
> > > > >
> > > > >
> > > > > So the remedy in this case is to change the output function
> in
> > > the
> > > > > parameterstudy to the following
> > > > >
> > > > >
> > > > >
> > > > > AnyDesMeasure AbductionMax = {
> > > > >
> > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > >
> > > > > };
> > > > >
> > > > >
> > > > >
> > > > > This function do not take the max of any values it will just
> > > return
> > > > the last
> > > > > one … and this is what you would like in this case I guess.
> > > > >
> > > > >
> > > > >
> > > > > There will be the same kind of problems with your other
> output
> > > > function in
> > > > > the parameter study as I see it. The Abduction angle is
> > reported
> > > ok
> > > > but if
> > > > > you did the same with the deltoid activity it would not work
> I
> > > believe
> > > > > because this value is not calculated in the last step
> because
> > it
> > > > fails in
> > > > > inverse analysis, it goes ok with the abduction angle
> because
> > the
> > > > kinematics
> > > > > has been solved ok.
> > > > >
> > > > >
> > > > >
> > > > > So using the function
> > > > >
> > > > >
> > > > >
> > > > > AnyDesMeasure DeltoidActivity = {
> > > > >
> > > > > Val = max(…Study.MaxActivity());
> > > > >
> > > > > };
> > > > >
> > > > >
> > > > >
> > > > > I am not really sure what you get since you take the max of
> > > values
> > > > which are
> > > > > initialized, and this may give strange results. So I think
> you
> > > should
> > > > > consider exporting these numbers using an output file and
> then
> > > > process them
> > > > > externally.
> > > > >
> > > > >
> > > > >
> > > > > I hope this helps you move on.
> > > > >
> > > > >
> > > > >
> > > > > Otherwise please write again.
> > > > >
> > > > >
> > > > >
> > > > > Best regards
> > > > >
> > > > > Søren, AnyBody Support
> > > > >
> > > > >
> > > > >
> > > > > _____
> > > > >
> > > > > From: anyscript@yahoogroups.com
> > > [mailto:anyscript@yahoogroups.com]
> > > > On Behalf
> > > > > Of Pierre-Olivier Lemieux
> > > > > Sent: 07 February 2008 18:46
> > > > > To: anyscript@yahoogroups.com
> > > > > Subject: [AnyScript] shoulder 2D model
> > > > >
> > > > >
> > > > >
> > > > > Hi guys,
> > > > > I’m still working with anybody to finish the first part of
> > > > > my simulations in 2 dimensions. After some revisions of the
> > > model,
> > > > > i’ve found a big error in it.
> > > > > If you don’t remember, I try to simulate the migration of
> the
> > > humeral
> > > > > head, in the case of a massive rotator cuff tear. So, my
> model
> > > allows
> > > > > a translation of the humerus upward and a permanent contact
> of
> > > the
> > > > > prosthetic head on the acromion. This contact is allowed by
> a
> > > driver
> > > > > (acromion driver), related to mathematical properties of the
> > > elliptic
> > > > > shape. Because this contact is between a prosthesis and a
> > bone,
> > > it
> > > > > can’t supply a pulling force (just pushing force is allowed)
> > (It
> > > was
> > > > > the error !!). To correct that, I have switched off the
> > reaction
> > > of
> > > > > the driver and put a general “only pushing” muscle on it. So
> > > now, the
> > > > > abduction can goes until a certain degree and after that,
> the
> > > geometry
> > > > > is not able to carry the movement, and the simulation stops.
> > It
> > > is
> > > > > exactly that I want because it directly shows if the
> geometry
> > is
> > > > > efficient or not.
> > > > >
> > > > > My problem is when I try to perform a parametric simulation.
> I
> > > look on
> > > > > the maximum abduction reached during the simulation
> (kinematic
> > > > > rotational measure). The results are very strange and I
> think
> > > that
> > > > > they are not representative, probably because the simulation
> > > stops
> > > > > with an error. So, if I would get rid of this error by
> changing
> > > > > something on the model, it would maybe works.
> > > > >
> > > > > Maybe you have a little idea of what I should do (I
> hope …).
> > I
> > > send
> > > > > you my model and a picture of the results.
> > > > >
> > > > > Thank you in advance for your support and say hello to
> > everyone
> > > of
> > > > > Anybody for me :wink:
> > > > >
> > > > > bye bye
> > > > >
> > > > > Pierre
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > [Non-text portions of this message have been removed]
> > > > >
> > > >
> > >
> >
>

Hi,

The reason you cannot see the reaction force of
ContactSurfaceLinPush is because the ContactSeg you created is not
fully balanced. I was effectively talking about adding some
AnyReacForce between the ContactSeg and the humerus, so that the
ContactSeg is carried in all directions in term of forces and it can
transmit the reaction forces from the acromion point to the humerus
head.
But it’s not the only way to do it: by adding a prismatic joint you
drive the ContactSeg in five directions, you just have to switch on
the ReactionType of the Ellipse2ContactDriver to carry the load of
the segment in the sliding direction also. Now you will be able to
see appear the reaction force at the contact point.

Best regards.
Sylvain, AnyBody Support

— In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
<pothekid@…> wrote:
>
> Hi Sylvain,
> I’ve made the changes that you told me about, but I’m
not
> able to make my model works well. I don’t have any
> “ContactSurfaceLinPush” reaction forces and friction forces.
>
> In Excel, I’ve calculated the displacement of the humeral head in
term
> of static equations for the abduction and put those values in the
> model (“SliderDriver” and “AbductionDriver”). With these values,
the
> displacement is upward at the beginning of abduction and downward
at
> the end. So, the contact between the acromion and humeral head is
not
> always there. For this reason, the “ContactSurfaceLinPush” is very
> useful for me.
>
> I’m not sure to understand well when you talk about adding some
> reaction forces. Is it the “AnyReacForce” object ? If it is the
case,
> can you help me to write it correctly ?
>
> My new model is named “PO_Lemieux_shoulder_3”.
>
> thank you for your support.
>
> Pierre-Olivier
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
wrote:
> >
> > Hi Pierre,
> >
> > In the file ContactSurfaceLinPush the object Base define the
node
> > that is applying the force. The object Target defines the node
where
> > the force is applied to. So by switching Base and Target object
you
> > are now applying the reaction forces from the center of the
> > ellipsoid to p12. And the reaction forces are displayed in the
Base
> > frame (ellipsoid frame in this case) that’s why the arrows
follow
> > the abduction angle.
> >
> > This can be improved by applying the reaction forces from P12 to
a
> > floating point on the external shape of the ellipsoid, where the
> > contact really occurs. You can create a segment (with no mass)
that
> > you drive to slide on the ellipsoid shape as you did with the
> > AcromionDriver, and you set the distance between one point of
this
> > segment and P12 to 0. Then you have to create some reaction
forces
> > between this segment and the ellipsoid to transmit all the
forces.
> > So you will now have a floating contact point on the ellipsoid
> > shape. By setting the Base to the new segment you should be able
to
> > draw the reaction force vectors in the tangential plane of the
shape.
> >
> > About the ContactRotPush, this applies a moment between two
segments
> > in contact. There are no friction forces, so this may not be
what
> > you need.
> >
> > For the external pushing force of ContactSurfaceLinPush you talk
> > about: this function actually use 5 muscles. One pushing in the
> > normal direction of the surface and 4 others creating the
friction
> > forces in the plane of the surface combined with normal force;
> > please see this link where there is a short description
> >
> >
> >
> > http://www.anybodytech.com/116.0.html?&tx_ttnews[backPid]
> > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> >
> >
> >
> > I understand you would like to activate only the friction
muscles?
> > That is not possible, the five muscles are linked and working
> > together.
> >
> > And for the strange behaviour you noticed when you change the
> > deltoid origin, well i don’t think it’s so strange. Because by
> > changing the origin of the muscle you change the force it will
have
> > to develop, you also change the reaction forces in the contact
> > point. But i think you don’t have a big interest in changing the
> > muscle origin and you should just keep it in its normal value.
> >
> > It’s correct that you did not find repository 7, it is not
public, I
> > forgot this, sorry. You should look in the repository 6, here
you
> > will find the file PedalDemoConditional in ARep\Aalborg.
> >
> > Best Regards
> > Sylvain, AnyBodySupport
> >
> >
> >
> >
> >
> >
> > — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> > <pothekid@> wrote:
> > >
> > > Hi Sylvain,
> > > thank you for your support. I’ve worked around
> > > the “ContactLinePush” problem all the week-end and I’ve found
that
> > > by swithching the “Base” and “Target” objects, the friction
> > appears.
> > > However, it gives me too high results because the switch mixed
up
> > > all the calculations. For exemple, the resulting friction
force is
> > > equal to the normal force, that is not correct. Also, the
arrows
> > > rotate following the abduction angle. Maybe a “ContactRotPush”
> > would
> > > perform better ?
> > > So, I guess that I’m on a good way to find a solution, but I
still
> > > need to understand how this script works, and what are the
> > > accepted “RefFrame” for the “Base” and “Target” objects.
> > >
> > > Also, in the present case, there is an external pushing force
> > > (ContactLinePush) on the shoulder upward during all abduction
to
> > > keep the contact between the acromion and the ellipse.
> > > However, in the real case, the deltoid, while performing the
> > > abduction alone, pulls on the humerus, instead
> > of “ContactLinePush”,
> > > and creates a contact force between the acromion and humeral
head
> > > (that should be the ContactLinePush). I’ve made an
experimental
> > set-
> > > up that has shown me these results.
> > >
> > > Also, I’ve noticed another strange behavior. For exemple, when
I
> > use
> > > the acromion contact point P12 : (0,0.039,0) and deltoid
origin
> > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
the
> > > results are very different from using the same P12, but
changing
> > P8
> > > to a closer distance (0,0.038,0) from P12. Note that the first
set
> > > of values for P8 and P12 are the ones that I need.
> > >
> > > So, if you can help me understanding these problems, it would
help
> > > me a lot.
> > >
> > > Have a good week and thank you again.
> > >
> > > Pierre.
> > >
> > > P.S. : I’ve not found the repository 7, is it normal ?
> > >
> > > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> > > wrote:
> > > >
> > > > Hi Pierre-Olivier
> > > >
> > > > I will try to give you some more information on the file
> > > > ContactSurfaceLinPush, this file can create a conditional
> > contact
> > > > with pushing muscles. If the two contact points are close
enough
> > > > (this distance is set by the user) then the muscles will
have a
> > > high
> > > > strength and can create the contact force. If the two
contact
> > > points
> > > > are to far from each other, the muscles will have no
strength at
> > > > all, and there can be no contact force.
> > > > But I am not sure if this utility is useful for your model
> > because
> > > > you want a permanent contact of the humerus head?
> > > >
> > > >
> > > >
> > > > The file also holds another utility which is the ability to
> > create
> > > > normal reaction force and friction force at the contact
point.
> > > This
> > > > could maybe be interesting for your model. But you have to
take
> > > care
> > > > to apply those forces to the acromion contact point. You
> > actually
> > > > applied them to the center of the humerus head instead of
the
> > > > contact point.
> > > >
> > > > I tried running the files you uploaded and it is working
with
> > the
> > > > elliptic shape without doing any changes. However the model
is
> > now
> > > > fully balanced and it is not possible anymore to see that
point
> > > you
> > > > was interested in the last time (where the geometry cannot
carry
> > > the
> > > > load) to plot the max abduction.
> > > >
> > > > So the solution of recreating the humeral contact depends on
the
> > > > simulation you want to perform
> > > >
> > > > An example of using ContactSurfaceLinPush is available in
the
> > > > repository 7/Application/Examples/PedalDemoConditional, as I
> > > recall
> > > > it the contact muscles are defined in the JointAndDriver.any
> > file.
> > > >
> > > > Best regards,
> > > > Sylvain, AnyBody Support
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> > > > <pothekid@> wrote:
> > > > >
> > > > > Hi Soeren,
> > > > > thank you for you recommendations. It seems to
works
> > > now
> > > > for
> > > > > the abduction. The deltoid activity is not what I want
most,
> > so
> > > > I’ve
> > > > > just commented it out.
> > > > > I have an other question now. When I went to Aalborg, John
> > gave
> > > me
> > > > a
> > > > > folder with some special scripts. One of these scripts is
> > > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> > pushing
> > > > > force on a contact node (I guess). However, I have some
> > > > difficulties
> > > > > to understand this script. Also, it works with a constant
> > radius
> > > > > humeral head, but not for my elliptic shape. Do you think
this
> > is
> > > > > possible ?
> > > > >
> > > > > You can check the folder “AcromionHumerusContact” in the
> > bottom
> > > of
> > > > my
> > > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I
will
> > > send
> > > > you
> > > > > the special script, because I don’t know who has written
it.
> > > > >
> > > > > Thank you again,
> > > > >
> > > > > Pierre-Olivier
> > > > >
> > > > >
> > > > >
> > > > > — In anyscript@yahoogroups.com, “AnyBody Support”
<support@>
> > > > wrote:
> > > > > >
> > > > > > Hi Pierre
> > > > > >
> > > > > >
> > > > > >
> > > > > > I think there is a simple solution to your problem….
> > > > > >
> > > > > >
> > > > > >
> > > > > > The reason why you are getting this strange solution is
that
> > > the
> > > > > analysis
> > > > > > has not been finished due to the inverse analysis, this
is
> > as
> > > you
> > > > > expect.
> > > > > > The abduction angle you find by taking the max value of
the
> > > > > abduction angle
> > > > > > function. This is fine if the analysis had finished
correctly
> > > > > because then
> > > > > > it would look at all the values in the output function
(nStep
> > > > > values) and
> > > > > > find the maximum one. When the analysis stops it will
still
> > > look
> > > > at
> > > > > these
> > > > > > nStep values, but now some of these can
contain “garbage”
> > > > numbers.
> > > > > >
> > > > > >
> > > > > >
> > > > > > So the remedy in this case is to change the output
function
> > in
> > > > the
> > > > > > parameterstudy to the following
> > > > > >
> > > > > >
> > > > > >
> > > > > > AnyDesMeasure AbductionMax = {
> > > > > >
> > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > >
> > > > > > };
> > > > > >
> > > > > >
> > > > > >
> > > > > > This function do not take the max of any values it will
just
> > > > return
> > > > > the last
> > > > > > one … and this is what you would like in this case I
guess.
> > > > > >
> > > > > >
> > > > > >
> > > > > > There will be the same kind of problems with your other
> > output
> > > > > function in
> > > > > > the parameter study as I see it. The Abduction angle is
> > > reported
> > > > ok
> > > > > but if
> > > > > > you did the same with the deltoid activity it would not
work
> > I
> > > > believe
> > > > > > because this value is not calculated in the last step
> > because
> > > it
> > > > > fails in
> > > > > > inverse analysis, it goes ok with the abduction angle
> > because
> > > the
> > > > > kinematics
> > > > > > has been solved ok.
> > > > > >
> > > > > >
> > > > > >
> > > > > > So using the function
> > > > > >
> > > > > >
> > > > > >
> > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > >
> > > > > > Val = max(…Study.MaxActivity());
> > > > > >
> > > > > > };
> > > > > >
> > > > > >
> > > > > >
> > > > > > I am not really sure what you get since you take the max
of
> > > > values
> > > > > which are
> > > > > > initialized, and this may give strange results. So I
think
> > you
> > > > should
> > > > > > consider exporting these numbers using an output file
and
> > then
> > > > > process them
> > > > > > externally.
> > > > > >
> > > > > >
> > > > > >
> > > > > > I hope this helps you move on.
> > > > > >
> > > > > >
> > > > > >
> > > > > > Otherwise please write again.
> > > > > >
> > > > > >
> > > > > >
> > > > > > Best regards
> > > > > >
> > > > > > Søren, AnyBody Support
> > > > > >
> > > > > >
> > > > > >
> > > > > > _____
> > > > > >
> > > > > > From: anyscript@yahoogroups.com
> > > > [mailto:anyscript@yahoogroups.com]
> > > > > On Behalf
> > > > > > Of Pierre-Olivier Lemieux
> > > > > > Sent: 07 February 2008 18:46
> > > > > > To: anyscript@yahoogroups.com
> > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > >
> > > > > >
> > > > > >
> > > > > > Hi guys,
> > > > > > I’m still working with anybody to finish the first part
of
> > > > > > my simulations in 2 dimensions. After some revisions of
the
> > > > model,
> > > > > > i’ve found a big error in it.
> > > > > > If you don’t remember, I try to simulate the migration
of
> > the
> > > > humeral
> > > > > > head, in the case of a massive rotator cuff tear. So, my
> > model
> > > > allows
> > > > > > a translation of the humerus upward and a permanent
contact
> > of
> > > > the
> > > > > > prosthetic head on the acromion. This contact is allowed
by
> > a
> > > > driver
> > > > > > (acromion driver), related to mathematical properties of
the
> > > > elliptic
> > > > > > shape. Because this contact is between a prosthesis and
a
> > > bone,
> > > > it
> > > > > > can’t supply a pulling force (just pushing force is
allowed)
> > > (It
> > > > was
> > > > > > the error !!). To correct that, I have switched off the
> > > reaction
> > > > of
> > > > > > the driver and put a general “only pushing” muscle on
it. So
> > > > now, the
> > > > > > abduction can goes until a certain degree and after
that,
> > the
> > > > geometry
> > > > > > is not able to carry the movement, and the simulation
stops.
> > > It
> > > > is
> > > > > > exactly that I want because it directly shows if the
> > geometry
> > > is
> > > > > > efficient or not.
> > > > > >
> > > > > > My problem is when I try to perform a parametric
simulation.
> > I
> > > > look on
> > > > > > the maximum abduction reached during the simulation
> > (kinematic
> > > > > > rotational measure). The results are very strange and I
> > think
> > > > that
> > > > > > they are not representative, probably because the
simulation
> > > > stops
> > > > > > with an error. So, if I would get rid of this error by
> > changing
> > > > > > something on the model, it would maybe works.
> > > > > >
> > > > > > Maybe you have a little idea of what I should do (I
> > hope …).
> > > I
> > > > send
> > > > > > you my model and a picture of the results.
> > > > > >
> > > > > > Thank you in advance for your support and say hello to
> > > everyone
> > > > of
> > > > > > Anybody for me :wink:
> > > > > >
> > > > > > bye bye
> > > > > >
> > > > > > Pierre
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > [Non-text portions of this message have been removed]
> > > > > >
> > > > >
> > > >
> > >
> >
>

Hi again Sylvain,
my model works well now with the Reaction.Type turned
on within the Contact driver. However, it makes this reaction able to
pull or push. For some set-up of the parameters of the ellipse, I got
negative forces for the Contact driver. It tells me that the permanent
contact with the acromion is not valid in all the case. Maybe I should
know the real displacement in term of the elliptic shape, prior to
proceed to the inverse analysis.

Also, it is not only the deltoid that pulls on the humeral head, it is
also the WeakMuscles. These muscles are not there normally and when I
comment them, it gives me a “Muscle recruitment” error if the tStart
is 0. Thus, I want to know why the deltoid can’t do the complete
abduction by itself ?

Thank you again.

Pierre-Olivier

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
>
>
>
> Hi,
>
> The reason you cannot see the reaction force of
> ContactSurfaceLinPush is because the ContactSeg you created is not
> fully balanced. I was effectively talking about adding some
> AnyReacForce between the ContactSeg and the humerus, so that the
> ContactSeg is carried in all directions in term of forces and it can
> transmit the reaction forces from the acromion point to the humerus
> head.
> But it’s not the only way to do it: by adding a prismatic joint you
> drive the ContactSeg in five directions, you just have to switch on
> the ReactionType of the Ellipse2ContactDriver to carry the load of
> the segment in the sliding direction also. Now you will be able to
> see appear the reaction force at the contact point.
>
> Best regards.
> Sylvain, AnyBody Support
>
>
>
>
>
> — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> <pothekid@> wrote:
> >
> > Hi Sylvain,
> > I’ve made the changes that you told me about, but I’m
> not
> > able to make my model works well. I don’t have any
> > “ContactSurfaceLinPush” reaction forces and friction forces.
> >
> > In Excel, I’ve calculated the displacement of the humeral head in
> term
> > of static equations for the abduction and put those values in the
> > model (“SliderDriver” and “AbductionDriver”). With these values,
> the
> > displacement is upward at the beginning of abduction and downward
> at
> > the end. So, the contact between the acromion and humeral head is
> not
> > always there. For this reason, the “ContactSurfaceLinPush” is very
> > useful for me.
> >
> > I’m not sure to understand well when you talk about adding some
> > reaction forces. Is it the “AnyReacForce” object ? If it is the
> case,
> > can you help me to write it correctly ?
> >
> > My new model is named “PO_Lemieux_shoulder_3”.
> >
> > thank you for your support.
> >
> > Pierre-Olivier
> >
> > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> wrote:
> > >
> > > Hi Pierre,
> > >
> > > In the file ContactSurfaceLinPush the object Base define the
> node
> > > that is applying the force. The object Target defines the node
> where
> > > the force is applied to. So by switching Base and Target object
> you
> > > are now applying the reaction forces from the center of the
> > > ellipsoid to p12. And the reaction forces are displayed in the
> Base
> > > frame (ellipsoid frame in this case) that’s why the arrows
> follow
> > > the abduction angle.
> > >
> > > This can be improved by applying the reaction forces from P12 to
> a
> > > floating point on the external shape of the ellipsoid, where the
> > > contact really occurs. You can create a segment (with no mass)
> that
> > > you drive to slide on the ellipsoid shape as you did with the
> > > AcromionDriver, and you set the distance between one point of
> this
> > > segment and P12 to 0. Then you have to create some reaction
> forces
> > > between this segment and the ellipsoid to transmit all the
> forces.
> > > So you will now have a floating contact point on the ellipsoid
> > > shape. By setting the Base to the new segment you should be able
> to
> > > draw the reaction force vectors in the tangential plane of the
> shape.
> > >
> > > About the ContactRotPush, this applies a moment between two
> segments
> > > in contact. There are no friction forces, so this may not be
> what
> > > you need.
> > >
> > > For the external pushing force of ContactSurfaceLinPush you talk
> > > about: this function actually use 5 muscles. One pushing in the
> > > normal direction of the surface and 4 others creating the
> friction
> > > forces in the plane of the surface combined with normal force;
> > > please see this link where there is a short description
> > >
> > >
> > >
> > > http://www.anybodytech.com/116.0.html?&tx_ttnews[backPid]
> > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > >
> > >
> > >
> > > I understand you would like to activate only the friction
> muscles?
> > > That is not possible, the five muscles are linked and working
> > > together.
> > >
> > > And for the strange behaviour you noticed when you change the
> > > deltoid origin, well i don’t think it’s so strange. Because by
> > > changing the origin of the muscle you change the force it will
> have
> > > to develop, you also change the reaction forces in the contact
> > > point. But i think you don’t have a big interest in changing the
> > > muscle origin and you should just keep it in its normal value.
> > >
> > > It’s correct that you did not find repository 7, it is not
> public, I
> > > forgot this, sorry. You should look in the repository 6, here
> you
> > > will find the file PedalDemoConditional in ARep\Aalborg.
> > >
> > > Best Regards
> > > Sylvain, AnyBodySupport
> > >
> > >
> > >
> > >
> > >
> > >
> > > — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> > > <pothekid@> wrote:
> > > >
> > > > Hi Sylvain,
> > > > thank you for your support. I’ve worked around
> > > > the “ContactLinePush” problem all the week-end and I’ve found
> that
> > > > by swithching the “Base” and “Target” objects, the friction
> > > appears.
> > > > However, it gives me too high results because the switch mixed
> up
> > > > all the calculations. For exemple, the resulting friction
> force is
> > > > equal to the normal force, that is not correct. Also, the
> arrows
> > > > rotate following the abduction angle. Maybe a “ContactRotPush”
> > > would
> > > > perform better ?
> > > > So, I guess that I’m on a good way to find a solution, but I
> still
> > > > need to understand how this script works, and what are the
> > > > accepted “RefFrame” for the “Base” and “Target” objects.
> > > >
> > > > Also, in the present case, there is an external pushing force
> > > > (ContactLinePush) on the shoulder upward during all abduction
> to
> > > > keep the contact between the acromion and the ellipse.
> > > > However, in the real case, the deltoid, while performing the
> > > > abduction alone, pulls on the humerus, instead
> > > of “ContactLinePush”,
> > > > and creates a contact force between the acromion and humeral
> head
> > > > (that should be the ContactLinePush). I’ve made an
> experimental
> > > set-
> > > > up that has shown me these results.
> > > >
> > > > Also, I’ve noticed another strange behavior. For exemple, when
> I
> > > use
> > > > the acromion contact point P12 : (0,0.039,0) and deltoid
> origin
> > > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
> the
> > > > results are very different from using the same P12, but
> changing
> > > P8
> > > > to a closer distance (0,0.038,0) from P12. Note that the first
> set
> > > > of values for P8 and P12 are the ones that I need.
> > > >
> > > > So, if you can help me understanding these problems, it would
> help
> > > > me a lot.
> > > >
> > > > Have a good week and thank you again.
> > > >
> > > > Pierre.
> > > >
> > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > >
> > > > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> > > > wrote:
> > > > >
> > > > > Hi Pierre-Olivier
> > > > >
> > > > > I will try to give you some more information on the file
> > > > > ContactSurfaceLinPush, this file can create a conditional
> > > contact
> > > > > with pushing muscles. If the two contact points are close
> enough
> > > > > (this distance is set by the user) then the muscles will
> have a
> > > > high
> > > > > strength and can create the contact force. If the two
> contact
> > > > points
> > > > > are to far from each other, the muscles will have no
> strength at
> > > > > all, and there can be no contact force.
> > > > > But I am not sure if this utility is useful for your model
> > > because
> > > > > you want a permanent contact of the humerus head?
> > > > >
> > > > >
> > > > >
> > > > > The file also holds another utility which is the ability to
> > > create
> > > > > normal reaction force and friction force at the contact
> point.
> > > > This
> > > > > could maybe be interesting for your model. But you have to
> take
> > > > care
> > > > > to apply those forces to the acromion contact point. You
> > > actually
> > > > > applied them to the center of the humerus head instead of
> the
> > > > > contact point.
> > > > >
> > > > > I tried running the files you uploaded and it is working
> with
> > > the
> > > > > elliptic shape without doing any changes. However the model
> is
> > > now
> > > > > fully balanced and it is not possible anymore to see that
> point
> > > > you
> > > > > was interested in the last time (where the geometry cannot
> carry
> > > > the
> > > > > load) to plot the max abduction.
> > > > >
> > > > > So the solution of recreating the humeral contact depends on
> the
> > > > > simulation you want to perform
> > > > >
> > > > > An example of using ContactSurfaceLinPush is available in
> the
> > > > > repository 7/Application/Examples/PedalDemoConditional, as I
> > > > recall
> > > > > it the contact muscles are defined in the JointAndDriver.any
> > > file.
> > > > >
> > > > > Best regards,
> > > > > Sylvain, AnyBody Support
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> > > > > <pothekid@> wrote:
> > > > > >
> > > > > > Hi Soeren,
> > > > > > thank you for you recommendations. It seems to
> works
> > > > now
> > > > > for
> > > > > > the abduction. The deltoid activity is not what I want
> most,
> > > so
> > > > > I’ve
> > > > > > just commented it out.
> > > > > > I have an other question now. When I went to Aalborg, John
> > > gave
> > > > me
> > > > > a
> > > > > > folder with some special scripts. One of these scripts is
> > > > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> > > pushing
> > > > > > force on a contact node (I guess). However, I have some
> > > > > difficulties
> > > > > > to understand this script. Also, it works with a constant
> > > radius
> > > > > > humeral head, but not for my elliptic shape. Do you think
> this
> > > is
> > > > > > possible ?
> > > > > >
> > > > > > You can check the folder “AcromionHumerusContact” in the
> > > bottom
> > > > of
> > > > > my
> > > > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I
> will
> > > > send
> > > > > you
> > > > > > the special script, because I don’t know who has written
> it.
> > > > > >
> > > > > > Thank you again,
> > > > > >
> > > > > > Pierre-Olivier
> > > > > >
> > > > > >
> > > > > >
> > > > > > — In anyscript@yahoogroups.com, “AnyBody Support”
> <support@>
> > > > > wrote:
> > > > > > >
> > > > > > > Hi Pierre
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > I think there is a simple solution to your problem….
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > The reason why you are getting this strange solution is
> that
> > > > the
> > > > > > analysis
> > > > > > > has not been finished due to the inverse analysis, this
> is
> > > as
> > > > you
> > > > > > expect.
> > > > > > > The abduction angle you find by taking the max value of
> the
> > > > > > abduction angle
> > > > > > > function. This is fine if the analysis had finished
> correctly
> > > > > > because then
> > > > > > > it would look at all the values in the output function
> (nStep
> > > > > > values) and
> > > > > > > find the maximum one. When the analysis stops it will
> still
> > > > look
> > > > > at
> > > > > > these
> > > > > > > nStep values, but now some of these can
> contain “garbage”
> > > > > numbers.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > So the remedy in this case is to change the output
> function
> > > in
> > > > > the
> > > > > > > parameterstudy to the following
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > >
> > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > >
> > > > > > > };
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > This function do not take the max of any values it will
> just
> > > > > return
> > > > > > the last
> > > > > > > one … and this is what you would like in this case I
> guess.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > There will be the same kind of problems with your other
> > > output
> > > > > > function in
> > > > > > > the parameter study as I see it. The Abduction angle is
> > > > reported
> > > > > ok
> > > > > > but if
> > > > > > > you did the same with the deltoid activity it would not
> work
> > > I
> > > > > believe
> > > > > > > because this value is not calculated in the last step
> > > because
> > > > it
> > > > > > fails in
> > > > > > > inverse analysis, it goes ok with the abduction angle
> > > because
> > > > the
> > > > > > kinematics
> > > > > > > has been solved ok.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > So using the function
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > >
> > > > > > > Val = max(…Study.MaxActivity());
> > > > > > >
> > > > > > > };
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > I am not really sure what you get since you take the max
> of
> > > > > values
> > > > > > which are
> > > > > > > initialized, and this may give strange results. So I
> think
> > > you
> > > > > should
> > > > > > > consider exporting these numbers using an output file
> and
> > > then
> > > > > > process them
> > > > > > > externally.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > I hope this helps you move on.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Otherwise please write again.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Best regards
> > > > > > >
> > > > > > > Søren, AnyBody Support
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > _____
> > > > > > >
> > > > > > > From: anyscript@yahoogroups.com
> > > > > [mailto:anyscript@yahoogroups.com]
> > > > > > On Behalf
> > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > Sent: 07 February 2008 18:46
> > > > > > > To: anyscript@yahoogroups.com
> > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Hi guys,
> > > > > > > I’m still working with anybody to finish the first part
> of
> > > > > > > my simulations in 2 dimensions. After some revisions of
> the
> > > > > model,
> > > > > > > i’ve found a big error in it.
> > > > > > > If you don’t remember, I try to simulate the migration
> of
> > > the
> > > > > humeral
> > > > > > > head, in the case of a massive rotator cuff tear. So, my
> > > model
> > > > > allows
> > > > > > > a translation of the humerus upward and a permanent
> contact
> > > of
> > > > > the
> > > > > > > prosthetic head on the acromion. This contact is allowed
> by
> > > a
> > > > > driver
> > > > > > > (acromion driver), related to mathematical properties of
> the
> > > > > elliptic
> > > > > > > shape. Because this contact is between a prosthesis and
> a
> > > > bone,
> > > > > it
> > > > > > > can’t supply a pulling force (just pushing force is
> allowed)
> > > > (It
> > > > > was
> > > > > > > the error !!). To correct that, I have switched off the
> > > > reaction
> > > > > of
> > > > > > > the driver and put a general “only pushing” muscle on
> it. So
> > > > > now, the
> > > > > > > abduction can goes until a certain degree and after
> that,
> > > the
> > > > > geometry
> > > > > > > is not able to carry the movement, and the simulation
> stops.
> > > > It
> > > > > is
> > > > > > > exactly that I want because it directly shows if the
> > > geometry
> > > > is
> > > > > > > efficient or not.
> > > > > > >
> > > > > > > My problem is when I try to perform a parametric
> simulation.
> > > I
> > > > > look on
> > > > > > > the maximum abduction reached during the simulation
> > > (kinematic
> > > > > > > rotational measure). The results are very strange and I
> > > think
> > > > > that
> > > > > > > they are not representative, probably because the
> simulation
> > > > > stops
> > > > > > > with an error. So, if I would get rid of this error by
> > > changing
> > > > > > > something on the model, it would maybe works.
> > > > > > >
> > > > > > > Maybe you have a little idea of what I should do (I
> > > hope …).
> > > > I
> > > > > send
> > > > > > > you my model and a picture of the results.
> > > > > > >
> > > > > > > Thank you in advance for your support and say hello to
> > > > everyone
> > > > > of
> > > > > > > Anybody for me :wink:
> > > > > > >
> > > > > > > bye bye
> > > > > > >
> > > > > > > Pierre
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > [Non-text portions of this message have been removed]
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Hi Pierre

The contact force you have applied works on the contact segment. This
element will need to be carried by the driver otherwise the model will be
unbalanced and unable to solve; it can not be left unbalanced.

The contact force you have applied can only do a pushing force, so the
reactions you will see in this contact driver will only be in one direction.

The weak muscles also need to be there, there can not be dof in the model
which are unbalanced. Even if these are supposed to have force, it will lead
to numeric problems if they are left unbalanced.

The reason why the weak muscles are needed must be a moment balance issue
there appears to be situation where the deltoid muscle it self can not
balance the upper arm. To me it sounds reasonable, these weak muscles
replicated the joint reactions up/down and these would always be non zero.
In you had more muscles in the model these might be able to control this
up/down dofs., and the weak muscles could be excluded.

Best regards

Søren


From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of Pierre-Olivier Lemieux
Sent: 20 February 2008 03:31
To: anyscript@yahoogroups.com
Subject: [AnyScript] Re: shoulder 2D model

Hi again Sylvain,
my model works well now with the Reaction.Type turned
on within the Contact driver. However, it makes this reaction able to
pull or push. For some set-up of the parameters of the ellipse, I got
negative forces for the Contact driver. It tells me that the permanent
contact with the acromion is not valid in all the case. Maybe I should
know the real displacement in term of the elliptic shape, prior to
proceed to the inverse analysis.

Also, it is not only the deltoid that pulls on the humeral head, it is
also the WeakMuscles. These muscles are not there normally and when I
comment them, it gives me a “Muscle recruitment” error if the tStart
is 0. Thus, I want to know why the deltoid can’t do the complete
abduction by itself ?

Thank you again.

Pierre-Olivier

— In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
“AnyBody Support” <support@…> wrote:
>
>
>
>
> Hi,
>
> The reason you cannot see the reaction force of
> ContactSurfaceLinPush is because the ContactSeg you created is not
> fully balanced. I was effectively talking about adding some
> AnyReacForce between the ContactSeg and the humerus, so that the
> ContactSeg is carried in all directions in term of forces and it can
> transmit the reaction forces from the acromion point to the humerus
> head.
> But it’s not the only way to do it: by adding a prismatic joint you
> drive the ContactSeg in five directions, you just have to switch on
> the ReactionType of the Ellipse2ContactDriver to carry the load of
> the segment in the sliding direction also. Now you will be able to
> see appear the reaction force at the contact point.
>
> Best regards.
> Sylvain, AnyBody Support
>
>
>
>
>
> — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
“Pierre-Olivier Lemieux”
> <pothekid@> wrote:
> >
> > Hi Sylvain,
> > I’ve made the changes that you told me about, but I’m
> not
> > able to make my model works well. I don’t have any
> > “ContactSurfaceLinPush” reaction forces and friction forces.
> >
> > In Excel, I’ve calculated the displacement of the humeral head in
> term
> > of static equations for the abduction and put those values in the
> > model (“SliderDriver” and “AbductionDriver”). With these values,
> the
> > displacement is upward at the beginning of abduction and downward
> at
> > the end. So, the contact between the acromion and humeral head is
> not
> > always there. For this reason, the “ContactSurfaceLinPush” is very
> > useful for me.
> >
> > I’m not sure to understand well when you talk about adding some
> > reaction forces. Is it the “AnyReacForce” object ? If it is the
> case,
> > can you help me to write it correctly ?
> >
> > My new model is named “PO_Lemieux_shoulder_3”.
> >
> > thank you for your support.
> >
> > Pierre-Olivier
> >
> > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
“AnyBody Support” <support@>
> wrote:
> > >
> > > Hi Pierre,
> > >
> > > In the file ContactSurfaceLinPush the object Base define the
> node
> > > that is applying the force. The object Target defines the node
> where
> > > the force is applied to. So by switching Base and Target object
> you
> > > are now applying the reaction forces from the center of the
> > > ellipsoid to p12. And the reaction forces are displayed in the
> Base
> > > frame (ellipsoid frame in this case) that’s why the arrows
> follow
> > > the abduction angle.
> > >
> > > This can be improved by applying the reaction forces from P12 to
> a
> > > floating point on the external shape of the ellipsoid, where the
> > > contact really occurs. You can create a segment (with no mass)
> that
> > > you drive to slide on the ellipsoid shape as you did with the
> > > AcromionDriver, and you set the distance between one point of
> this
> > > segment and P12 to 0. Then you have to create some reaction
> forces
> > > between this segment and the ellipsoid to transmit all the
> forces.
> > > So you will now have a floating contact point on the ellipsoid
> > > shape. By setting the Base to the new segment you should be able
> to
> > > draw the reaction force vectors in the tangential plane of the
> shape.
> > >
> > > About the ContactRotPush, this applies a moment between two
> segments
> > > in contact. There are no friction forces, so this may not be
> what
> > > you need.
> > >
> > > For the external pushing force of ContactSurfaceLinPush you talk
> > > about: this function actually use 5 muscles. One pushing in the
> > > normal direction of the surface and 4 others creating the
> friction
> > > forces in the plane of the surface combined with normal force;
> > > please see this link where there is a short description
> > >
> > >
> > >
> > > http://www.anybodyt <http://www.anybodytech.com/116.0.html?&tx_ttnews>
ech.com/116.0.html?&tx_ttnews[backPid]
> > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > >
> > >
> > >
> > > I understand you would like to activate only the friction
> muscles?
> > > That is not possible, the five muscles are linked and working
> > > together.
> > >
> > > And for the strange behaviour you noticed when you change the
> > > deltoid origin, well i don’t think it’s so strange. Because by
> > > changing the origin of the muscle you change the force it will
> have
> > > to develop, you also change the reaction forces in the contact
> > > point. But i think you don’t have a big interest in changing the
> > > muscle origin and you should just keep it in its normal value.
> > >
> > > It’s correct that you did not find repository 7, it is not
> public, I
> > > forgot this, sorry. You should look in the repository 6, here
> you
> > > will find the file PedalDemoConditional in ARep\Aalborg.
> > >
> > > Best Regards
> > > Sylvain, AnyBodySupport
> > >
> > >
> > >
> > >
> > >
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com, “Pierre-Olivier Lemieux”
> > > <pothekid@> wrote:
> > > >
> > > > Hi Sylvain,
> > > > thank you for your support. I’ve worked around
> > > > the “ContactLinePush” problem all the week-end and I’ve found
> that
> > > > by swithching the “Base” and “Target” objects, the friction
> > > appears.
> > > > However, it gives me too high results because the switch mixed
> up
> > > > all the calculations. For exemple, the resulting friction
> force is
> > > > equal to the normal force, that is not correct. Also, the
> arrows
> > > > rotate following the abduction angle. Maybe a “ContactRotPush”
> > > would
> > > > perform better ?
> > > > So, I guess that I’m on a good way to find a solution, but I
> still
> > > > need to understand how this script works, and what are the
> > > > accepted “RefFrame” for the “Base” and “Target” objects.
> > > >
> > > > Also, in the present case, there is an external pushing force
> > > > (ContactLinePush) on the shoulder upward during all abduction
> to
> > > > keep the contact between the acromion and the ellipse.
> > > > However, in the real case, the deltoid, while performing the
> > > > abduction alone, pulls on the humerus, instead
> > > of “ContactLinePush”,
> > > > and creates a contact force between the acromion and humeral
> head
> > > > (that should be the ContactLinePush). I’ve made an
> experimental
> > > set-
> > > > up that has shown me these results.
> > > >
> > > > Also, I’ve noticed another strange behavior. For exemple, when
> I
> > > use
> > > > the acromion contact point P12 : (0,0.039,0) and deltoid
> origin
> > > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
> the
> > > > results are very different from using the same P12, but
> changing
> > > P8
> > > > to a closer distance (0,0.038,0) from P12. Note that the first
> set
> > > > of values for P8 and P12 are the ones that I need.
> > > >
> > > > So, if you can help me understanding these problems, it would
> help
> > > > me a lot.
> > > >
> > > > Have a good week and thank you again.
> > > >
> > > > Pierre.
> > > >
> > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com, “AnyBody Support” <support@>
> > > > wrote:
> > > > >
> > > > > Hi Pierre-Olivier
> > > > >
> > > > > I will try to give you some more information on the file
> > > > > ContactSurfaceLinPush, this file can create a conditional
> > > contact
> > > > > with pushing muscles. If the two contact points are close
> enough
> > > > > (this distance is set by the user) then the muscles will
> have a
> > > > high
> > > > > strength and can create the contact force. If the two
> contact
> > > > points
> > > > > are to far from each other, the muscles will have no
> strength at
> > > > > all, and there can be no contact force.
> > > > > But I am not sure if this utility is useful for your model
> > > because
> > > > > you want a permanent contact of the humerus head?
> > > > >
> > > > >
> > > > >
> > > > > The file also holds another utility which is the ability to
> > > create
> > > > > normal reaction force and friction force at the contact
> point.
> > > > This
> > > > > could maybe be interesting for your model. But you have to
> take
> > > > care
> > > > > to apply those forces to the acromion contact point. You
> > > actually
> > > > > applied them to the center of the humerus head instead of
> the
> > > > > contact point.
> > > > >
> > > > > I tried running the files you uploaded and it is working
> with
> > > the
> > > > > elliptic shape without doing any changes. However the model
> is
> > > now
> > > > > fully balanced and it is not possible anymore to see that
> point
> > > > you
> > > > > was interested in the last time (where the geometry cannot
> carry
> > > > the
> > > > > load) to plot the max abduction.
> > > > >
> > > > > So the solution of recreating the humeral contact depends on
> the
> > > > > simulation you want to perform
> > > > >
> > > > > An example of using ContactSurfaceLinPush is available in
> the
> > > > > repository 7/Application/Examples/PedalDemoConditional, as I
> > > > recall
> > > > > it the contact muscles are defined in the JointAndDriver.any
> > > file.
> > > > >
> > > > > Best regards,
> > > > > Sylvain, AnyBody Support
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com, “Pierre-Olivier Lemieux”
> > > > > <pothekid@> wrote:
> > > > > >
> > > > > > Hi Soeren,
> > > > > > thank you for you recommendations. It seems to
> works
> > > > now
> > > > > for
> > > > > > the abduction. The deltoid activity is not what I want
> most,
> > > so
> > > > > I’ve
> > > > > > just commented it out.
> > > > > > I have an other question now. When I went to Aalborg, John
> > > gave
> > > > me
> > > > > a
> > > > > > folder with some special scripts. One of these scripts is
> > > > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> > > pushing
> > > > > > force on a contact node (I guess). However, I have some
> > > > > difficulties
> > > > > > to understand this script. Also, it works with a constant
> > > radius
> > > > > > humeral head, but not for my elliptic shape. Do you think
> this
> > > is
> > > > > > possible ?
> > > > > >
> > > > > > You can check the folder “AcromionHumerusContact” in the
> > > bottom
> > > > of
> > > > > my
> > > > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I
> will
> > > > send
> > > > > you
> > > > > > the special script, because I don’t know who has written
> it.
> > > > > >
> > > > > > Thank you again,
> > > > > >
> > > > > > Pierre-Olivier
> > > > > >
> > > > > >
> > > > > >
> > > > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com, “AnyBody Support”
> <support@>
> > > > > wrote:
> > > > > > >
> > > > > > > Hi Pierre
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > I think there is a simple solution to your problem….
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > The reason why you are getting this strange solution is
> that
> > > > the
> > > > > > analysis
> > > > > > > has not been finished due to the inverse analysis, this
> is
> > > as
> > > > you
> > > > > > expect.
> > > > > > > The abduction angle you find by taking the max value of
> the
> > > > > > abduction angle
> > > > > > > function. This is fine if the analysis had finished
> correctly
> > > > > > because then
> > > > > > > it would look at all the values in the output function
> (nStep
> > > > > > values) and
> > > > > > > find the maximum one. When the analysis stops it will
> still
> > > > look
> > > > > at
> > > > > > these
> > > > > > > nStep values, but now some of these can
> contain “garbage”
> > > > > numbers.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > So the remedy in this case is to change the output
> function
> > > in
> > > > > the
> > > > > > > parameterstudy to the following
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > >
> > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > >
> > > > > > > };
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > This function do not take the max of any values it will
> just
> > > > > return
> > > > > > the last
> > > > > > > one … and this is what you would like in this case I
> guess.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > There will be the same kind of problems with your other
> > > output
> > > > > > function in
> > > > > > > the parameter study as I see it. The Abduction angle is
> > > > reported
> > > > > ok
> > > > > > but if
> > > > > > > you did the same with the deltoid activity it would not
> work
> > > I
> > > > > believe
> > > > > > > because this value is not calculated in the last step
> > > because
> > > > it
> > > > > > fails in
> > > > > > > inverse analysis, it goes ok with the abduction angle
> > > because
> > > > the
> > > > > > kinematics
> > > > > > > has been solved ok.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > So using the function
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > >
> > > > > > > Val = max(…Study.MaxActivity());
> > > > > > >
> > > > > > > };
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > I am not really sure what you get since you take the max
> of
> > > > > values
> > > > > > which are
> > > > > > > initialized, and this may give strange results. So I
> think
> > > you
> > > > > should
> > > > > > > consider exporting these numbers using an output file
> and
> > > then
> > > > > > process them
> > > > > > > externally.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > I hope this helps you move on.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Otherwise please write again.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Best regards
> > > > > > >
> > > > > > > Søren, AnyBody Support
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > _____
> > > > > > >
> > > > > > > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com
> > > > > [mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com]
> > > > > > On Behalf
> > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > Sent: 07 February 2008 18:46
> > > > > > > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com
> > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Hi guys,
> > > > > > > I’m still working with anybody to finish the first part
> of
> > > > > > > my simulations in 2 dimensions. After some revisions of
> the
> > > > > model,
> > > > > > > i’ve found a big error in it.
> > > > > > > If you don’t remember, I try to simulate the migration
> of
> > > the
> > > > > humeral
> > > > > > > head, in the case of a massive rotator cuff tear. So, my
> > > model
> > > > > allows
> > > > > > > a translation of the humerus upward and a permanent
> contact
> > > of
> > > > > the
> > > > > > > prosthetic head on the acromion. This contact is allowed
> by
> > > a
> > > > > driver
> > > > > > > (acromion driver), related to mathematical properties of
> the
> > > > > elliptic
> > > > > > > shape. Because this contact is between a prosthesis and
> a
> > > > bone,
> > > > > it
> > > > > > > can’t supply a pulling force (just pushing force is
> allowed)
> > > > (It
> > > > > was
> > > > > > > the error !!). To correct that, I have switched off the
> > > > reaction
> > > > > of
> > > > > > > the driver and put a general “only pushing” muscle on
> it. So
> > > > > now, the
> > > > > > > abduction can goes until a certain degree and after
> that,
> > > the
> > > > > geometry
> > > > > > > is not able to carry the movement, and the simulation
> stops.
> > > > It
> > > > > is
> > > > > > > exactly that I want because it directly shows if the
> > > geometry
> > > > is
> > > > > > > efficient or not.
> > > > > > >
> > > > > > > My problem is when I try to perform a parametric
> simulation.
> > > I
> > > > > look on
> > > > > > > the maximum abduction reached during the simulation
> > > (kinematic
> > > > > > > rotational measure). The results are very strange and I
> > > think
> > > > > that
> > > > > > > they are not representative, probably because the
> simulation
> > > > > stops
> > > > > > > with an error. So, if I would get rid of this error by
> > > changing
> > > > > > > something on the model, it would maybe works.
> > > > > > >
> > > > > > > Maybe you have a little idea of what I should do (I
> > > hope …).
> > > > I
> > > > > send
> > > > > > > you my model and a picture of the results.
> > > > > > >
> > > > > > > Thank you in advance for your support and say hello to
> > > > everyone
> > > > > of
> > > > > > > Anybody for me :wink:
> > > > > > >
> > > > > > > bye bye
> > > > > > >
> > > > > > > Pierre
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > [Non-text portions of this message have been removed]
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

[Non-text portions of this message have been removed]

Hi Soren,
thank you for your support. Now I have a model that represent
more my pathology and I have also created a Matlab algorithm that find
the movement of the humeral head and import it into my AnyBody model.

My Matlab algorithm compute the minimum force in the deltoid to
perform an increment of abduction with a moment balance (constant
velocity). If there is a non-equilibrium of the forces and a degree of
freedom in the direction of the force, there is automatically an
increment of displacement. This is the case for the vertical
displacement in my model.

Now, I want to know how Anybody solve a problem. I know that for each
step time, it use the min/max criterion to find the minimum muscle
activity. Does it works like my Matlab routine ?

I have compared the Matlab results from those obtained in Anybody from
the same movement and in a lot of situation it gives me similar
results. However, there is some differences that I’m not able to
explain. Do you think that my Matlab routine is well made ?

I send you my results (Matlab & AnyBody) for a particular case under
(PO_Lemieux_shoulder_model_March_18). Just take a look and give me
your idea about it.

Thank you again.

Pierre

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Pierre
>
>
>
> The contact force you have applied works on the contact segment. This
> element will need to be carried by the driver otherwise the model
will be
> unbalanced and unable to solve; it can not be left unbalanced.
>
> The contact force you have applied can only do a pushing force, so the
> reactions you will see in this contact driver will only be in one
direction.
>
>
>
> The weak muscles also need to be there, there can not be dof in the
model
> which are unbalanced. Even if these are supposed to have force, it
will lead
> to numeric problems if they are left unbalanced.
>
>
>
> The reason why the weak muscles are needed must be a moment balance
issue
> there appears to be situation where the deltoid muscle it self can not
> balance the upper arm. To me it sounds reasonable, these weak muscles
> replicated the joint reactions up/down and these would always be non
zero.
> In you had more muscles in the model these might be able to control this
> up/down dofs., and the weak muscles could be excluded.
>
>
>
> Best regards
>
> Søren
>
> _____
>
> From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com]
On Behalf
> Of Pierre-Olivier Lemieux
> Sent: 20 February 2008 03:31
> To: anyscript@yahoogroups.com
> Subject: [AnyScript] Re: shoulder 2D model
>
>
>
> Hi again Sylvain,
> my model works well now with the Reaction.Type turned
> on within the Contact driver. However, it makes this reaction able to
> pull or push. For some set-up of the parameters of the ellipse, I got
> negative forces for the Contact driver. It tells me that the permanent
> contact with the acromion is not valid in all the case. Maybe I should
> know the real displacement in term of the elliptic shape, prior to
> proceed to the inverse analysis.
>
> Also, it is not only the deltoid that pulls on the humeral head, it is
> also the WeakMuscles. These muscles are not there normally and when I
> comment them, it gives me a “Muscle recruitment” error if the tStart
> is 0. Thus, I want to know why the deltoid can’t do the complete
> abduction by itself ?
>
> Thank you again.
>
> Pierre-Olivier
>
> — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
> “AnyBody Support” <support@> wrote:
> >
> >
> >
> >
> > Hi,
> >
> > The reason you cannot see the reaction force of
> > ContactSurfaceLinPush is because the ContactSeg you created is not
> > fully balanced. I was effectively talking about adding some
> > AnyReacForce between the ContactSeg and the humerus, so that the
> > ContactSeg is carried in all directions in term of forces and it can
> > transmit the reaction forces from the acromion point to the humerus
> > head.
> > But it’s not the only way to do it: by adding a prismatic joint you
> > drive the ContactSeg in five directions, you just have to switch on
> > the ReactionType of the Ellipse2ContactDriver to carry the load of
> > the segment in the sliding direction also. Now you will be able to
> > see appear the reaction force at the contact point.
> >
> > Best regards.
> > Sylvain, AnyBody Support
> >
> >
> >
> >
> >
> > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> “Pierre-Olivier Lemieux”
> > <pothekid@> wrote:
> > >
> > > Hi Sylvain,
> > > I’ve made the changes that you told me about, but I’m
> > not
> > > able to make my model works well. I don’t have any
> > > “ContactSurfaceLinPush” reaction forces and friction forces.
> > >
> > > In Excel, I’ve calculated the displacement of the humeral head in
> > term
> > > of static equations for the abduction and put those values in the
> > > model (“SliderDriver” and “AbductionDriver”). With these values,
> > the
> > > displacement is upward at the beginning of abduction and downward
> > at
> > > the end. So, the contact between the acromion and humeral head is
> > not
> > > always there. For this reason, the “ContactSurfaceLinPush” is very
> > > useful for me.
> > >
> > > I’m not sure to understand well when you talk about adding some
> > > reaction forces. Is it the “AnyReacForce” object ? If it is the
> > case,
> > > can you help me to write it correctly ?
> > >
> > > My new model is named “PO_Lemieux_shoulder_3”.
> > >
> > > thank you for your support.
> > >
> > > Pierre-Olivier
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> “AnyBody Support” <support@>
> > wrote:
> > > >
> > > > Hi Pierre,
> > > >
> > > > In the file ContactSurfaceLinPush the object Base define the
> > node
> > > > that is applying the force. The object Target defines the node
> > where
> > > > the force is applied to. So by switching Base and Target object
> > you
> > > > are now applying the reaction forces from the center of the
> > > > ellipsoid to p12. And the reaction forces are displayed in the
> > Base
> > > > frame (ellipsoid frame in this case) that’s why the arrows
> > follow
> > > > the abduction angle.
> > > >
> > > > This can be improved by applying the reaction forces from P12 to
> > a
> > > > floating point on the external shape of the ellipsoid, where the
> > > > contact really occurs. You can create a segment (with no mass)
> > that
> > > > you drive to slide on the ellipsoid shape as you did with the
> > > > AcromionDriver, and you set the distance between one point of
> > this
> > > > segment and P12 to 0. Then you have to create some reaction
> > forces
> > > > between this segment and the ellipsoid to transmit all the
> > forces.
> > > > So you will now have a floating contact point on the ellipsoid
> > > > shape. By setting the Base to the new segment you should be able
> > to
> > > > draw the reaction force vectors in the tangential plane of the
> > shape.
> > > >
> > > > About the ContactRotPush, this applies a moment between two
> > segments
> > > > in contact. There are no friction forces, so this may not be
> > what
> > > > you need.
> > > >
> > > > For the external pushing force of ContactSurfaceLinPush you talk
> > > > about: this function actually use 5 muscles. One pushing in the
> > > > normal direction of the surface and 4 others creating the
> > friction
> > > > forces in the plane of the surface combined with normal force;
> > > > please see this link where there is a short description
> > > >
> > > >
> > > >
> > > > http://www.anybodyt
<http://www.anybodytech.com/116.0.html?&tx_ttnews>
> ech.com/116.0.html?&tx_ttnews[backPid]
> > > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > > >
> > > >
> > > >
> > > > I understand you would like to activate only the friction
> > muscles?
> > > > That is not possible, the five muscles are linked and working
> > > > together.
> > > >
> > > > And for the strange behaviour you noticed when you change the
> > > > deltoid origin, well i don’t think it’s so strange. Because by
> > > > changing the origin of the muscle you change the force it will
> > have
> > > > to develop, you also change the reaction forces in the contact
> > > > point. But i think you don’t have a big interest in changing the
> > > > muscle origin and you should just keep it in its normal value.
> > > >
> > > > It’s correct that you did not find repository 7, it is not
> > public, I
> > > > forgot this, sorry. You should look in the repository 6, here
> > you
> > > > will find the file PedalDemoConditional in ARep\Aalborg.
> > > >
> > > > Best Regards
> > > > Sylvain, AnyBodySupport
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com, “Pierre-Olivier Lemieux”
> > > > <pothekid@> wrote:
> > > > >
> > > > > Hi Sylvain,
> > > > > thank you for your support. I’ve worked around
> > > > > the “ContactLinePush” problem all the week-end and I’ve found
> > that
> > > > > by swithching the “Base” and “Target” objects, the friction
> > > > appears.
> > > > > However, it gives me too high results because the switch mixed
> > up
> > > > > all the calculations. For exemple, the resulting friction
> > force is
> > > > > equal to the normal force, that is not correct. Also, the
> > arrows
> > > > > rotate following the abduction angle. Maybe a “ContactRotPush”
> > > > would
> > > > > perform better ?
> > > > > So, I guess that I’m on a good way to find a solution, but I
> > still
> > > > > need to understand how this script works, and what are the
> > > > > accepted “RefFrame” for the “Base” and “Target” objects.
> > > > >
> > > > > Also, in the present case, there is an external pushing force
> > > > > (ContactLinePush) on the shoulder upward during all abduction
> > to
> > > > > keep the contact between the acromion and the ellipse.
> > > > > However, in the real case, the deltoid, while performing the
> > > > > abduction alone, pulls on the humerus, instead
> > > > of “ContactLinePush”,
> > > > > and creates a contact force between the acromion and humeral
> > head
> > > > > (that should be the ContactLinePush). I’ve made an
> > experimental
> > > > set-
> > > > > up that has shown me these results.
> > > > >
> > > > > Also, I’ve noticed another strange behavior. For exemple, when
> > I
> > > > use
> > > > > the acromion contact point P12 : (0,0.039,0) and deltoid
> > origin
> > > > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
> > the
> > > > > results are very different from using the same P12, but
> > changing
> > > > P8
> > > > > to a closer distance (0,0.038,0) from P12. Note that the first
> > set
> > > > > of values for P8 and P12 are the ones that I need.
> > > > >
> > > > > So, if you can help me understanding these problems, it would
> > help
> > > > > me a lot.
> > > > >
> > > > > Have a good week and thank you again.
> > > > >
> > > > > Pierre.
> > > > >
> > > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com, “AnyBody Support” <support@>
> > > > > wrote:
> > > > > >
> > > > > > Hi Pierre-Olivier
> > > > > >
> > > > > > I will try to give you some more information on the file
> > > > > > ContactSurfaceLinPush, this file can create a conditional
> > > > contact
> > > > > > with pushing muscles. If the two contact points are close
> > enough
> > > > > > (this distance is set by the user) then the muscles will
> > have a
> > > > > high
> > > > > > strength and can create the contact force. If the two
> > contact
> > > > > points
> > > > > > are to far from each other, the muscles will have no
> > strength at
> > > > > > all, and there can be no contact force.
> > > > > > But I am not sure if this utility is useful for your model
> > > > because
> > > > > > you want a permanent contact of the humerus head?
> > > > > >
> > > > > >
> > > > > >
> > > > > > The file also holds another utility which is the ability to
> > > > create
> > > > > > normal reaction force and friction force at the contact
> > point.
> > > > > This
> > > > > > could maybe be interesting for your model. But you have to
> > take
> > > > > care
> > > > > > to apply those forces to the acromion contact point. You
> > > > actually
> > > > > > applied them to the center of the humerus head instead of
> > the
> > > > > > contact point.
> > > > > >
> > > > > > I tried running the files you uploaded and it is working
> > with
> > > > the
> > > > > > elliptic shape without doing any changes. However the model
> > is
> > > > now
> > > > > > fully balanced and it is not possible anymore to see that
> > point
> > > > > you
> > > > > > was interested in the last time (where the geometry cannot
> > carry
> > > > > the
> > > > > > load) to plot the max abduction.
> > > > > >
> > > > > > So the solution of recreating the humeral contact depends on
> > the
> > > > > > simulation you want to perform
> > > > > >
> > > > > > An example of using ContactSurfaceLinPush is available in
> > the
> > > > > > repository 7/Application/Examples/PedalDemoConditional, as I
> > > > > recall
> > > > > > it the contact muscles are defined in the JointAndDriver.any
> > > > file.
> > > > > >
> > > > > > Best regards,
> > > > > > Sylvain, AnyBody Support
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > — In anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com, “Pierre-Olivier Lemieux”
> > > > > > <pothekid@> wrote:
> > > > > > >
> > > > > > > Hi Soeren,
> > > > > > > thank you for you recommendations. It seems to
> > works
> > > > > now
> > > > > > for
> > > > > > > the abduction. The deltoid activity is not what I want
> > most,
> > > > so
> > > > > > I’ve
> > > > > > > just commented it out.
> > > > > > > I have an other question now. When I went to Aalborg, John
> > > > gave
> > > > > me
> > > > > > a
> > > > > > > folder with some special scripts. One of these scripts is
> > > > > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> > > > pushing
> > > > > > > force on a contact node (I guess). However, I have some
> > > > > > difficulties
> > > > > > > to understand this script. Also, it works with a constant
> > > > radius
> > > > > > > humeral head, but not for my elliptic shape. Do you think
> > this
> > > > is
> > > > > > > possible ?
> > > > > > >
> > > > > > > You can check the folder “AcromionHumerusContact” in the
> > > > bottom
> > > > > of
> > > > > > my
> > > > > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I
> > will
> > > > > send
> > > > > > you
> > > > > > > the special script, because I don’t know who has written
> > it.
> > > > > > >
> > > > > > > Thank you again,
> > > > > > >
> > > > > > > Pierre-Olivier
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > — In anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com, “AnyBody Support”
> > <support@>
> > > > > > wrote:
> > > > > > > >
> > > > > > > > Hi Pierre
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I think there is a simple solution to your problem….
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > The reason why you are getting this strange solution is
> > that
> > > > > the
> > > > > > > analysis
> > > > > > > > has not been finished due to the inverse analysis, this
> > is
> > > > as
> > > > > you
> > > > > > > expect.
> > > > > > > > The abduction angle you find by taking the max value of
> > the
> > > > > > > abduction angle
> > > > > > > > function. This is fine if the analysis had finished
> > correctly
> > > > > > > because then
> > > > > > > > it would look at all the values in the output function
> > (nStep
> > > > > > > values) and
> > > > > > > > find the maximum one. When the analysis stops it will
> > still
> > > > > look
> > > > > > at
> > > > > > > these
> > > > > > > > nStep values, but now some of these can
> > contain “garbage”
> > > > > > numbers.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > So the remedy in this case is to change the output
> > function
> > > > in
> > > > > > the
> > > > > > > > parameterstudy to the following
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > > >
> > > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > > >
> > > > > > > > };
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > This function do not take the max of any values it will
> > just
> > > > > > return
> > > > > > > the last
> > > > > > > > one … and this is what you would like in this case I
> > guess.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > There will be the same kind of problems with your other
> > > > output
> > > > > > > function in
> > > > > > > > the parameter study as I see it. The Abduction angle is
> > > > > reported
> > > > > > ok
> > > > > > > but if
> > > > > > > > you did the same with the deltoid activity it would not
> > work
> > > > I
> > > > > > believe
> > > > > > > > because this value is not calculated in the last step
> > > > because
> > > > > it
> > > > > > > fails in
> > > > > > > > inverse analysis, it goes ok with the abduction angle
> > > > because
> > > > > the
> > > > > > > kinematics
> > > > > > > > has been solved ok.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > So using the function
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > > >
> > > > > > > > Val = max(…Study.MaxActivity());
> > > > > > > >
> > > > > > > > };
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I am not really sure what you get since you take the max
> > of
> > > > > > values
> > > > > > > which are
> > > > > > > > initialized, and this may give strange results. So I
> > think
> > > > you
> > > > > > should
> > > > > > > > consider exporting these numbers using an output file
> > and
> > > > then
> > > > > > > process them
> > > > > > > > externally.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I hope this helps you move on.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Otherwise please write again.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Best regards
> > > > > > > >
> > > > > > > > Søren, AnyBody Support
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > _____
> > > > > > > >
> > > > > > > > From: anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com
> > > > > > [mailto:anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com]
> > > > > > > On Behalf
> > > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > > Sent: 07 February 2008 18:46
> > > > > > > > To: anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com
> > > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Hi guys,
> > > > > > > > I’m still working with anybody to finish the first part
> > of
> > > > > > > > my simulations in 2 dimensions. After some revisions of
> > the
> > > > > > model,
> > > > > > > > i’ve found a big error in it.
> > > > > > > > If you don’t remember, I try to simulate the migration
> > of
> > > > the
> > > > > > humeral
> > > > > > > > head, in the case of a massive rotator cuff tear. So, my
> > > > model
> > > > > > allows
> > > > > > > > a translation of the humerus upward and a permanent
> > contact
> > > > of
> > > > > > the
> > > > > > > > prosthetic head on the acromion. This contact is allowed
> > by
> > > > a
> > > > > > driver
> > > > > > > > (acromion driver), related to mathematical properties of
> > the
> > > > > > elliptic
> > > > > > > > shape. Because this contact is between a prosthesis and
> > a
> > > > > bone,
> > > > > > it
> > > > > > > > can’t supply a pulling force (just pushing force is
> > allowed)
> > > > > (It
> > > > > > was
> > > > > > > > the error !!). To correct that, I have switched off the
> > > > > reaction
> > > > > > of
> > > > > > > > the driver and put a general “only pushing” muscle on
> > it. So
> > > > > > now, the
> > > > > > > > abduction can goes until a certain degree and after
> > that,
> > > > the
> > > > > > geometry
> > > > > > > > is not able to carry the movement, and the simulation
> > stops.
> > > > > It
> > > > > > is
> > > > > > > > exactly that I want because it directly shows if the
> > > > geometry
> > > > > is
> > > > > > > > efficient or not.
> > > > > > > >
> > > > > > > > My problem is when I try to perform a parametric
> > simulation.
> > > > I
> > > > > > look on
> > > > > > > > the maximum abduction reached during the simulation
> > > > (kinematic
> > > > > > > > rotational measure). The results are very strange and I
> > > > think
> > > > > > that
> > > > > > > > they are not representative, probably because the
> > simulation
> > > > > > stops
> > > > > > > > with an error. So, if I would get rid of this error by
> > > > changing
> > > > > > > > something on the model, it would maybe works.
> > > > > > > >
> > > > > > > > Maybe you have a little idea of what I should do (I
> > > > hope …).
> > > > > I
> > > > > > send
> > > > > > > > you my model and a picture of the results.
> > > > > > > >
> > > > > > > > Thank you in advance for your support and say hello to
> > > > > everyone
> > > > > > of
> > > > > > > > Anybody for me :wink:
> > > > > > > >
> > > > > > > > bye bye
> > > > > > > >
> > > > > > > > Pierre
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > [Non-text portions of this message have been removed]
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
>
>
>
>
> [Non-text portions of this message have been removed]
>

Hi again,
I’ve forgot to mention you that I’ve put together the
WeakMuscle1 (pulling muscle) and the deltoid muscle, because they do a
common task, that is normally perform by the deltoid itself. I’ve made
the same thing with the AcromionPush-Conditional-contact-Muscle and
WeakMuscle2 (pushing muscle). Do you think that can be a mistake ?

Thank you in advance

Pierre

— In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
<pothekid@…> wrote:
>
> Hi Soren,
> thank you for your support. Now I have a model that represent
> more my pathology and I have also created a Matlab algorithm that find
> the movement of the humeral head and import it into my AnyBody model.
>
> My Matlab algorithm compute the minimum force in the deltoid to
> perform an increment of abduction with a moment balance (constant
> velocity). If there is a non-equilibrium of the forces and a degree of
> freedom in the direction of the force, there is automatically an
> increment of displacement. This is the case for the vertical
> displacement in my model.
>
> Now, I want to know how Anybody solve a problem. I know that for each
> step time, it use the min/max criterion to find the minimum muscle
> activity. Does it works like my Matlab routine ?
>
> I have compared the Matlab results from those obtained in Anybody from
> the same movement and in a lot of situation it gives me similar
> results. However, there is some differences that I’m not able to
> explain. Do you think that my Matlab routine is well made ?
>
> I send you my results (Matlab & AnyBody) for a particular case under
> (PO_Lemieux_shoulder_model_March_18). Just take a look and give me
> your idea about it.
>
> Thank you again.
>
> Pierre
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@> wrote:
> >
> > Hi Pierre
> >
> >
> >
> > The contact force you have applied works on the contact segment. This
> > element will need to be carried by the driver otherwise the model
> will be
> > unbalanced and unable to solve; it can not be left unbalanced.
> >
> > The contact force you have applied can only do a pushing force, so the
> > reactions you will see in this contact driver will only be in one
> direction.
> >
> >
> >
> > The weak muscles also need to be there, there can not be dof in the
> model
> > which are unbalanced. Even if these are supposed to have force, it
> will lead
> > to numeric problems if they are left unbalanced.
> >
> >
> >
> > The reason why the weak muscles are needed must be a moment balance
> issue
> > there appears to be situation where the deltoid muscle it self can not
> > balance the upper arm. To me it sounds reasonable, these weak muscles
> > replicated the joint reactions up/down and these would always be non
> zero.
> > In you had more muscles in the model these might be able to
control this
> > up/down dofs., and the weak muscles could be excluded.
> >
> >
> >
> > Best regards
> >
> > Søren
> >
> > _____
> >
> > From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com]
> On Behalf
> > Of Pierre-Olivier Lemieux
> > Sent: 20 February 2008 03:31
> > To: anyscript@yahoogroups.com
> > Subject: [AnyScript] Re: shoulder 2D model
> >
> >
> >
> > Hi again Sylvain,
> > my model works well now with the Reaction.Type turned
> > on within the Contact driver. However, it makes this reaction able to
> > pull or push. For some set-up of the parameters of the ellipse, I got
> > negative forces for the Contact driver. It tells me that the permanent
> > contact with the acromion is not valid in all the case. Maybe I should
> > know the real displacement in term of the elliptic shape, prior to
> > proceed to the inverse analysis.
> >
> > Also, it is not only the deltoid that pulls on the humeral head, it is
> > also the WeakMuscles. These muscles are not there normally and when I
> > comment them, it gives me a “Muscle recruitment” error if the tStart
> > is 0. Thus, I want to know why the deltoid can’t do the complete
> > abduction by itself ?
> >
> > Thank you again.
> >
> > Pierre-Olivier
> >
> > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> > “AnyBody Support” <support@> wrote:
> > >
> > >
> > >
> > >
> > > Hi,
> > >
> > > The reason you cannot see the reaction force of
> > > ContactSurfaceLinPush is because the ContactSeg you created is not
> > > fully balanced. I was effectively talking about adding some
> > > AnyReacForce between the ContactSeg and the humerus, so that the
> > > ContactSeg is carried in all directions in term of forces and it
can
> > > transmit the reaction forces from the acromion point to the humerus
> > > head.
> > > But it’s not the only way to do it: by adding a prismatic joint you
> > > drive the ContactSeg in five directions, you just have to switch on
> > > the ReactionType of the Ellipse2ContactDriver to carry the load of
> > > the segment in the sliding direction also. Now you will be able to
> > > see appear the reaction force at the contact point.
> > >
> > > Best regards.
> > > Sylvain, AnyBody Support
> > >
> > >
> > >
> > >
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > “Pierre-Olivier Lemieux”
> > > <pothekid@> wrote:
> > > >
> > > > Hi Sylvain,
> > > > I’ve made the changes that you told me about, but I’m
> > > not
> > > > able to make my model works well. I don’t have any
> > > > “ContactSurfaceLinPush” reaction forces and friction forces.
> > > >
> > > > In Excel, I’ve calculated the displacement of the humeral head in
> > > term
> > > > of static equations for the abduction and put those values in the
> > > > model (“SliderDriver” and “AbductionDriver”). With these values,
> > > the
> > > > displacement is upward at the beginning of abduction and downward
> > > at
> > > > the end. So, the contact between the acromion and humeral head is
> > > not
> > > > always there. For this reason, the “ContactSurfaceLinPush” is very
> > > > useful for me.
> > > >
> > > > I’m not sure to understand well when you talk about adding some
> > > > reaction forces. Is it the “AnyReacForce” object ? If it is the
> > > case,
> > > > can you help me to write it correctly ?
> > > >
> > > > My new model is named “PO_Lemieux_shoulder_3”.
> > > >
> > > > thank you for your support.
> > > >
> > > > Pierre-Olivier
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > “AnyBody Support” <support@>
> > > wrote:
> > > > >
> > > > > Hi Pierre,
> > > > >
> > > > > In the file ContactSurfaceLinPush the object Base define the
> > > node
> > > > > that is applying the force. The object Target defines the node
> > > where
> > > > > the force is applied to. So by switching Base and Target object
> > > you
> > > > > are now applying the reaction forces from the center of the
> > > > > ellipsoid to p12. And the reaction forces are displayed in the
> > > Base
> > > > > frame (ellipsoid frame in this case) that’s why the arrows
> > > follow
> > > > > the abduction angle.
> > > > >
> > > > > This can be improved by applying the reaction forces from
P12 to
> > > a
> > > > > floating point on the external shape of the ellipsoid, where
the
> > > > > contact really occurs. You can create a segment (with no mass)
> > > that
> > > > > you drive to slide on the ellipsoid shape as you did with the
> > > > > AcromionDriver, and you set the distance between one point of
> > > this
> > > > > segment and P12 to 0. Then you have to create some reaction
> > > forces
> > > > > between this segment and the ellipsoid to transmit all the
> > > forces.
> > > > > So you will now have a floating contact point on the ellipsoid
> > > > > shape. By setting the Base to the new segment you should be
able
> > > to
> > > > > draw the reaction force vectors in the tangential plane of the
> > > shape.
> > > > >
> > > > > About the ContactRotPush, this applies a moment between two
> > > segments
> > > > > in contact. There are no friction forces, so this may not be
> > > what
> > > > > you need.
> > > > >
> > > > > For the external pushing force of ContactSurfaceLinPush you
talk
> > > > > about: this function actually use 5 muscles. One pushing in the
> > > > > normal direction of the surface and 4 others creating the
> > > friction
> > > > > forces in the plane of the surface combined with normal force;
> > > > > please see this link where there is a short description
> > > > >
> > > > >
> > > > >
> > > > > http://www.anybodyt
> <http://www.anybodytech.com/116.0.html?&tx_ttnews>
> > ech.com/116.0.html?&tx_ttnews[backPid]
> > > > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > > > >
> > > > >
> > > > >
> > > > > I understand you would like to activate only the friction
> > > muscles?
> > > > > That is not possible, the five muscles are linked and working
> > > > > together.
> > > > >
> > > > > And for the strange behaviour you noticed when you change the
> > > > > deltoid origin, well i don’t think it’s so strange. Because by
> > > > > changing the origin of the muscle you change the force it will
> > > have
> > > > > to develop, you also change the reaction forces in the contact
> > > > > point. But i think you don’t have a big interest in changing
the
> > > > > muscle origin and you should just keep it in its normal value.
> > > > >
> > > > > It’s correct that you did not find repository 7, it is not
> > > public, I
> > > > > forgot this, sorry. You should look in the repository 6, here
> > > you
> > > > > will find the file PedalDemoConditional in ARep\Aalborg.
> > > > >
> > > > > Best Regards
> > > > > Sylvain, AnyBodySupport
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> > ps.com, “Pierre-Olivier Lemieux”
> > > > > <pothekid@> wrote:
> > > > > >
> > > > > > Hi Sylvain,
> > > > > > thank you for your support. I’ve worked around
> > > > > > the “ContactLinePush” problem all the week-end and I’ve found
> > > that
> > > > > > by swithching the “Base” and “Target” objects, the friction
> > > > > appears.
> > > > > > However, it gives me too high results because the switch
mixed
> > > up
> > > > > > all the calculations. For exemple, the resulting friction
> > > force is
> > > > > > equal to the normal force, that is not correct. Also, the
> > > arrows
> > > > > > rotate following the abduction angle. Maybe a
“ContactRotPush”
> > > > > would
> > > > > > perform better ?
> > > > > > So, I guess that I’m on a good way to find a solution, but I
> > > still
> > > > > > need to understand how this script works, and what are the
> > > > > > accepted “RefFrame” for the “Base” and “Target” objects.
> > > > > >
> > > > > > Also, in the present case, there is an external pushing force
> > > > > > (ContactLinePush) on the shoulder upward during all abduction
> > > to
> > > > > > keep the contact between the acromion and the ellipse.
> > > > > > However, in the real case, the deltoid, while performing the
> > > > > > abduction alone, pulls on the humerus, instead
> > > > > of “ContactLinePush”,
> > > > > > and creates a contact force between the acromion and humeral
> > > head
> > > > > > (that should be the ContactLinePush). I’ve made an
> > > experimental
> > > > > set-
> > > > > > up that has shown me these results.
> > > > > >
> > > > > > Also, I’ve noticed another strange behavior. For exemple,
when
> > > I
> > > > > use
> > > > > > the acromion contact point P12 : (0,0.039,0) and deltoid
> > > origin
> > > > > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
> > > the
> > > > > > results are very different from using the same P12, but
> > > changing
> > > > > P8
> > > > > > to a closer distance (0,0.038,0) from P12. Note that the
first
> > > set
> > > > > > of values for P8 and P12 are the ones that I need.
> > > > > >
> > > > > > So, if you can help me understanding these problems, it would
> > > help
> > > > > > me a lot.
> > > > > >
> > > > > > Have a good week and thank you again.
> > > > > >
> > > > > > Pierre.
> > > > > >
> > > > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > > > >
> > > > > > — In anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> > ps.com, “AnyBody Support” <support@>
> > > > > > wrote:
> > > > > > >
> > > > > > > Hi Pierre-Olivier
> > > > > > >
> > > > > > > I will try to give you some more information on the file
> > > > > > > ContactSurfaceLinPush, this file can create a conditional
> > > > > contact
> > > > > > > with pushing muscles. If the two contact points are close
> > > enough
> > > > > > > (this distance is set by the user) then the muscles will
> > > have a
> > > > > > high
> > > > > > > strength and can create the contact force. If the two
> > > contact
> > > > > > points
> > > > > > > are to far from each other, the muscles will have no
> > > strength at
> > > > > > > all, and there can be no contact force.
> > > > > > > But I am not sure if this utility is useful for your model
> > > > > because
> > > > > > > you want a permanent contact of the humerus head?
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > The file also holds another utility which is the ability to
> > > > > create
> > > > > > > normal reaction force and friction force at the contact
> > > point.
> > > > > > This
> > > > > > > could maybe be interesting for your model. But you have to
> > > take
> > > > > > care
> > > > > > > to apply those forces to the acromion contact point. You
> > > > > actually
> > > > > > > applied them to the center of the humerus head instead of
> > > the
> > > > > > > contact point.
> > > > > > >
> > > > > > > I tried running the files you uploaded and it is working
> > > with
> > > > > the
> > > > > > > elliptic shape without doing any changes. However the model
> > > is
> > > > > now
> > > > > > > fully balanced and it is not possible anymore to see that
> > > point
> > > > > > you
> > > > > > > was interested in the last time (where the geometry cannot
> > > carry
> > > > > > the
> > > > > > > load) to plot the max abduction.
> > > > > > >
> > > > > > > So the solution of recreating the humeral contact
depends on
> > > the
> > > > > > > simulation you want to perform
> > > > > > >
> > > > > > > An example of using ContactSurfaceLinPush is available in
> > > the
> > > > > > > repository 7/Application/Examples/PedalDemoConditional,
as I
> > > > > > recall
> > > > > > > it the contact muscles are defined in the
JointAndDriver.any
> > > > > file.
> > > > > > >
> > > > > > > Best regards,
> > > > > > > Sylvain, AnyBody Support
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com, “Pierre-Olivier Lemieux”
> > > > > > > <pothekid@> wrote:
> > > > > > > >
> > > > > > > > Hi Soeren,
> > > > > > > > thank you for you recommendations. It seems to
> > > works
> > > > > > now
> > > > > > > for
> > > > > > > > the abduction. The deltoid activity is not what I want
> > > most,
> > > > > so
> > > > > > > I’ve
> > > > > > > > just commented it out.
> > > > > > > > I have an other question now. When I went to Aalborg,
John
> > > > > gave
> > > > > > me
> > > > > > > a
> > > > > > > > folder with some special scripts. One of these scripts is
> > > > > > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> > > > > pushing
> > > > > > > > force on a contact node (I guess). However, I have some
> > > > > > > difficulties
> > > > > > > > to understand this script. Also, it works with a constant
> > > > > radius
> > > > > > > > humeral head, but not for my elliptic shape. Do you think
> > > this
> > > > > is
> > > > > > > > possible ?
> > > > > > > >
> > > > > > > > You can check the folder “AcromionHumerusContact” in the
> > > > > bottom
> > > > > > of
> > > > > > > my
> > > > > > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I
> > > will
> > > > > > send
> > > > > > > you
> > > > > > > > the special script, because I don’t know who has written
> > > it.
> > > > > > > >
> > > > > > > > Thank you again,
> > > > > > > >
> > > > > > > > Pierre-Olivier
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com, “AnyBody Support”
> > > <support@>
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > Hi Pierre
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I think there is a simple solution to your problem….
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > The reason why you are getting this strange solution is
> > > that
> > > > > > the
> > > > > > > > analysis
> > > > > > > > > has not been finished due to the inverse analysis, this
> > > is
> > > > > as
> > > > > > you
> > > > > > > > expect.
> > > > > > > > > The abduction angle you find by taking the max value of
> > > the
> > > > > > > > abduction angle
> > > > > > > > > function. This is fine if the analysis had finished
> > > correctly
> > > > > > > > because then
> > > > > > > > > it would look at all the values in the output function
> > > (nStep
> > > > > > > > values) and
> > > > > > > > > find the maximum one. When the analysis stops it will
> > > still
> > > > > > look
> > > > > > > at
> > > > > > > > these
> > > > > > > > > nStep values, but now some of these can
> > > contain “garbage”
> > > > > > > numbers.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > So the remedy in this case is to change the output
> > > function
> > > > > in
> > > > > > > the
> > > > > > > > > parameterstudy to the following
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > > > >
> > > > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > > > >
> > > > > > > > > };
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > This function do not take the max of any values it will
> > > just
> > > > > > > return
> > > > > > > > the last
> > > > > > > > > one … and this is what you would like in this case I
> > > guess.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > There will be the same kind of problems with your other
> > > > > output
> > > > > > > > function in
> > > > > > > > > the parameter study as I see it. The Abduction angle is
> > > > > > reported
> > > > > > > ok
> > > > > > > > but if
> > > > > > > > > you did the same with the deltoid activity it would not
> > > work
> > > > > I
> > > > > > > believe
> > > > > > > > > because this value is not calculated in the last step
> > > > > because
> > > > > > it
> > > > > > > > fails in
> > > > > > > > > inverse analysis, it goes ok with the abduction angle
> > > > > because
> > > > > > the
> > > > > > > > kinematics
> > > > > > > > > has been solved ok.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > So using the function
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > > > >
> > > > > > > > > Val = max(…Study.MaxActivity());
> > > > > > > > >
> > > > > > > > > };
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I am not really sure what you get since you take the
max
> > > of
> > > > > > > values
> > > > > > > > which are
> > > > > > > > > initialized, and this may give strange results. So I
> > > think
> > > > > you
> > > > > > > should
> > > > > > > > > consider exporting these numbers using an output file
> > > and
> > > > > then
> > > > > > > > process them
> > > > > > > > > externally.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I hope this helps you move on.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Otherwise please write again.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Best regards
> > > > > > > > >
> > > > > > > > > Søren, AnyBody Support
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > _____
> > > > > > > > >
> > > > > > > > > From: anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com
> > > > > > > [mailto:anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com]
> > > > > > > > On Behalf
> > > > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > > > Sent: 07 February 2008 18:46
> > > > > > > > > To: anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com
> > > > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Hi guys,
> > > > > > > > > I’m still working with anybody to finish the first part
> > > of
> > > > > > > > > my simulations in 2 dimensions. After some revisions of
> > > the
> > > > > > > model,
> > > > > > > > > i’ve found a big error in it.
> > > > > > > > > If you don’t remember, I try to simulate the migration
> > > of
> > > > > the
> > > > > > > humeral
> > > > > > > > > head, in the case of a massive rotator cuff tear.
So, my
> > > > > model
> > > > > > > allows
> > > > > > > > > a translation of the humerus upward and a permanent
> > > contact
> > > > > of
> > > > > > > the
> > > > > > > > > prosthetic head on the acromion. This contact is
allowed
> > > by
> > > > > a
> > > > > > > driver
> > > > > > > > > (acromion driver), related to mathematical
properties of
> > > the
> > > > > > > elliptic
> > > > > > > > > shape. Because this contact is between a prosthesis and
> > > a
> > > > > > bone,
> > > > > > > it
> > > > > > > > > can’t supply a pulling force (just pushing force is
> > > allowed)
> > > > > > (It
> > > > > > > was
> > > > > > > > > the error !!). To correct that, I have switched off the
> > > > > > reaction
> > > > > > > of
> > > > > > > > > the driver and put a general “only pushing” muscle on
> > > it. So
> > > > > > > now, the
> > > > > > > > > abduction can goes until a certain degree and after
> > > that,
> > > > > the
> > > > > > > geometry
> > > > > > > > > is not able to carry the movement, and the simulation
> > > stops.
> > > > > > It
> > > > > > > is
> > > > > > > > > exactly that I want because it directly shows if the
> > > > > geometry
> > > > > > is
> > > > > > > > > efficient or not.
> > > > > > > > >
> > > > > > > > > My problem is when I try to perform a parametric
> > > simulation.
> > > > > I
> > > > > > > look on
> > > > > > > > > the maximum abduction reached during the simulation
> > > > > (kinematic
> > > > > > > > > rotational measure). The results are very strange and I
> > > > > think
> > > > > > > that
> > > > > > > > > they are not representative, probably because the
> > > simulation
> > > > > > > stops
> > > > > > > > > with an error. So, if I would get rid of this error by
> > > > > changing
> > > > > > > > > something on the model, it would maybe works.
> > > > > > > > >
> > > > > > > > > Maybe you have a little idea of what I should do (I
> > > > > hope …).
> > > > > > I
> > > > > > > send
> > > > > > > > > you my model and a picture of the results.
> > > > > > > > >
> > > > > > > > > Thank you in advance for your support and say hello to
> > > > > > everyone
> > > > > > > of
> > > > > > > > > Anybody for me :wink:
> > > > > > > > >
> > > > > > > > > bye bye
> > > > > > > > >
> > > > > > > > > Pierre
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > [Non-text portions of this message have been removed]
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
>

Hi Pierre

I think I understand what your algorithm is doing, it finds the minimum
deltoid force and if there is a force unbalance it moves the humeral until
balance is obtained.

Using the build in optimizer in AnyBody something similar should be possible
I guess, but it will be a slightly differently approach. Basically you will
need a model that will always be able to balance itself through artificial
joint reactions, but through the optimization you can change the motion so
that it tries to minimize those reactions.

1 you will need the extra muscle that ensures that a force balance can
always be obtained.

2 a design variable has to be defined, this is the translation, maybe this
should be done using an interpolation function…

3 an objective function has to be setup, here I would choose to minimize the
forces in the artificial muscles which you did not want to become active. So
you will be minimizing these reaction forces by moving the humeral head to
another position.

There is a tutorial of parameter and optimization studies it might be
helpful.

I can not judge if the MatLab code is ok sorry, I can think of the following
questions

1 Are there any differences in the models, that in anyway could justify
these differences?

2 What about muscles wrapping, how is this done in MatLab…

3 Muscles strength models

4 Recruitment criteria?

Etc…

Best regards

Søren, AnyBody Support


From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of Pierre-Olivier Lemieux
Sent: 18 March 2008 19:18
To: anyscript@yahoogroups.com
Subject: [AnyScript] Re: shoulder 2D model

Hi Soren,
thank you for your support. Now I have a model that represent
more my pathology and I have also created a Matlab algorithm that find
the movement of the humeral head and import it into my AnyBody model.

My Matlab algorithm compute the minimum force in the deltoid to
perform an increment of abduction with a moment balance (constant
velocity). If there is a non-equilibrium of the forces and a degree of
freedom in the direction of the force, there is automatically an
increment of displacement. This is the case for the vertical
displacement in my model.

Now, I want to know how Anybody solve a problem. I know that for each
step time, it use the min/max criterion to find the minimum muscle
activity. Does it works like my Matlab routine ?

I have compared the Matlab results from those obtained in Anybody from
the same movement and in a lot of situation it gives me similar
results. However, there is some differences that I’m not able to
explain. Do you think that my Matlab routine is well made ?

I send you my results (Matlab & AnyBody) for a particular case under
(PO_Lemieux_shoulder_model_March_18). Just take a look and give me
your idea about it.

Thank you again.

Pierre

— In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
“AnyBody Support” <support@…> wrote:
>
> Hi Pierre
>
>
>
> The contact force you have applied works on the contact segment. This
> element will need to be carried by the driver otherwise the model
will be
> unbalanced and unable to solve; it can not be left unbalanced.
>
> The contact force you have applied can only do a pushing force, so the
> reactions you will see in this contact driver will only be in one
direction.
>
>
>
> The weak muscles also need to be there, there can not be dof in the
model
> which are unbalanced. Even if these are supposed to have force, it
will lead
> to numeric problems if they are left unbalanced.
>
>
>
> The reason why the weak muscles are needed must be a moment balance
issue
> there appears to be situation where the deltoid muscle it self can not
> balance the upper arm. To me it sounds reasonable, these weak muscles
> replicated the joint reactions up/down and these would always be non
zero.
> In you had more muscles in the model these might be able to control this
> up/down dofs., and the weak muscles could be excluded.
>
>
>
> Best regards
>
> Søren
>
> _____
>
> From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com]
On Behalf
> Of Pierre-Olivier Lemieux
> Sent: 20 February 2008 03:31
> To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> Subject: [AnyScript] Re: shoulder 2D model
>
>
>
> Hi again Sylvain,
> my model works well now with the Reaction.Type turned
> on within the Contact driver. However, it makes this reaction able to
> pull or push. For some set-up of the parameters of the ellipse, I got
> negative forces for the Contact driver. It tells me that the permanent
> contact with the acromion is not valid in all the case. Maybe I should
> know the real displacement in term of the elliptic shape, prior to
> proceed to the inverse analysis.
>
> Also, it is not only the deltoid that pulls on the humeral head, it is
> also the WeakMuscles. These muscles are not there normally and when I
> comment them, it gives me a “Muscle recruitment” error if the tStart
> is 0. Thus, I want to know why the deltoid can’t do the complete
> abduction by itself ?
>
> Thank you again.
>
> Pierre-Olivier
>
> — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
> “AnyBody Support” <support@> wrote:
> >
> >
> >
> >
> > Hi,
> >
> > The reason you cannot see the reaction force of
> > ContactSurfaceLinPush is because the ContactSeg you created is not
> > fully balanced. I was effectively talking about adding some
> > AnyReacForce between the ContactSeg and the humerus, so that the
> > ContactSeg is carried in all directions in term of forces and it can
> > transmit the reaction forces from the acromion point to the humerus
> > head.
> > But it’s not the only way to do it: by adding a prismatic joint you
> > drive the ContactSeg in five directions, you just have to switch on
> > the ReactionType of the Ellipse2ContactDriver to carry the load of
> > the segment in the sliding direction also. Now you will be able to
> > see appear the reaction force at the contact point.
> >
> > Best regards.
> > Sylvain, AnyBody Support
> >
> >
> >
> >
> >
> > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> “Pierre-Olivier Lemieux”
> > <pothekid@> wrote:
> > >
> > > Hi Sylvain,
> > > I’ve made the changes that you told me about, but I’m
> > not
> > > able to make my model works well. I don’t have any
> > > “ContactSurfaceLinPush” reaction forces and friction forces.
> > >
> > > In Excel, I’ve calculated the displacement of the humeral head in
> > term
> > > of static equations for the abduction and put those values in the
> > > model (“SliderDriver” and “AbductionDriver”). With these values,
> > the
> > > displacement is upward at the beginning of abduction and downward
> > at
> > > the end. So, the contact between the acromion and humeral head is
> > not
> > > always there. For this reason, the “ContactSurfaceLinPush” is very
> > > useful for me.
> > >
> > > I’m not sure to understand well when you talk about adding some
> > > reaction forces. Is it the “AnyReacForce” object ? If it is the
> > case,
> > > can you help me to write it correctly ?
> > >
> > > My new model is named “PO_Lemieux_shoulder_3”.
> > >
> > > thank you for your support.
> > >
> > > Pierre-Olivier
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> “AnyBody Support” <support@>
> > wrote:
> > > >
> > > > Hi Pierre,
> > > >
> > > > In the file ContactSurfaceLinPush the object Base define the
> > node
> > > > that is applying the force. The object Target defines the node
> > where
> > > > the force is applied to. So by switching Base and Target object
> > you
> > > > are now applying the reaction forces from the center of the
> > > > ellipsoid to p12. And the reaction forces are displayed in the
> > Base
> > > > frame (ellipsoid frame in this case) that’s why the arrows
> > follow
> > > > the abduction angle.
> > > >
> > > > This can be improved by applying the reaction forces from P12 to
> > a
> > > > floating point on the external shape of the ellipsoid, where the
> > > > contact really occurs. You can create a segment (with no mass)
> > that
> > > > you drive to slide on the ellipsoid shape as you did with the
> > > > AcromionDriver, and you set the distance between one point of
> > this
> > > > segment and P12 to 0. Then you have to create some reaction
> > forces
> > > > between this segment and the ellipsoid to transmit all the
> > forces.
> > > > So you will now have a floating contact point on the ellipsoid
> > > > shape. By setting the Base to the new segment you should be able
> > to
> > > > draw the reaction force vectors in the tangential plane of the
> > shape.
> > > >
> > > > About the ContactRotPush, this applies a moment between two
> > segments
> > > > in contact. There are no friction forces, so this may not be
> > what
> > > > you need.
> > > >
> > > > For the external pushing force of ContactSurfaceLinPush you talk
> > > > about: this function actually use 5 muscles. One pushing in the
> > > > normal direction of the surface and 4 others creating the
> > friction
> > > > forces in the plane of the surface combined with normal force;
> > > > please see this link where there is a short description
> > > >
> > > >
> > > >
> > > > http://www.anybodyt
<http://www.anybodyt <http://www.anybodytech.com/116.0.html?&tx_ttnews>
ech.com/116.0.html?&tx_ttnews>
> ech.com/116.0.html?&tx_ttnews[backPid]
> > > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > > >
> > > >
> > > >
> > > > I understand you would like to activate only the friction
> > muscles?
> > > > That is not possible, the five muscles are linked and working
> > > > together.
> > > >
> > > > And for the strange behaviour you noticed when you change the
> > > > deltoid origin, well i don’t think it’s so strange. Because by
> > > > changing the origin of the muscle you change the force it will
> > have
> > > > to develop, you also change the reaction forces in the contact
> > > > point. But i think you don’t have a big interest in changing the
> > > > muscle origin and you should just keep it in its normal value.
> > > >
> > > > It’s correct that you did not find repository 7, it is not
> > public, I
> > > > forgot this, sorry. You should look in the repository 6, here
> > you
> > > > will find the file PedalDemoConditional in ARep\Aalborg.
> > > >
> > > > Best Regards
> > > > Sylvain, AnyBodySupport
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com, “Pierre-Olivier Lemieux”
> > > > <pothekid@> wrote:
> > > > >
> > > > > Hi Sylvain,
> > > > > thank you for your support. I’ve worked around
> > > > > the “ContactLinePush” problem all the week-end and I’ve found
> > that
> > > > > by swithching the “Base” and “Target” objects, the friction
> > > > appears.
> > > > > However, it gives me too high results because the switch mixed
> > up
> > > > > all the calculations. For exemple, the resulting friction
> > force is
> > > > > equal to the normal force, that is not correct. Also, the
> > arrows
> > > > > rotate following the abduction angle. Maybe a “ContactRotPush”
> > > > would
> > > > > perform better ?
> > > > > So, I guess that I’m on a good way to find a solution, but I
> > still
> > > > > need to understand how this script works, and what are the
> > > > > accepted “RefFrame” for the “Base” and “Target” objects.
> > > > >
> > > > > Also, in the present case, there is an external pushing force
> > > > > (ContactLinePush) on the shoulder upward during all abduction
> > to
> > > > > keep the contact between the acromion and the ellipse.
> > > > > However, in the real case, the deltoid, while performing the
> > > > > abduction alone, pulls on the humerus, instead
> > > > of “ContactLinePush”,
> > > > > and creates a contact force between the acromion and humeral
> > head
> > > > > (that should be the ContactLinePush). I’ve made an
> > experimental
> > > > set-
> > > > > up that has shown me these results.
> > > > >
> > > > > Also, I’ve noticed another strange behavior. For exemple, when
> > I
> > > > use
> > > > > the acromion contact point P12 : (0,0.039,0) and deltoid
> > origin
> > > > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
> > the
> > > > > results are very different from using the same P12, but
> > changing
> > > > P8
> > > > > to a closer distance (0,0.038,0) from P12. Note that the first
> > set
> > > > > of values for P8 and P12 are the ones that I need.
> > > > >
> > > > > So, if you can help me understanding these problems, it would
> > help
> > > > > me a lot.
> > > > >
> > > > > Have a good week and thank you again.
> > > > >
> > > > > Pierre.
> > > > >
> > > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com, “AnyBody Support” <support@>
> > > > > wrote:
> > > > > >
> > > > > > Hi Pierre-Olivier
> > > > > >
> > > > > > I will try to give you some more information on the file
> > > > > > ContactSurfaceLinPush, this file can create a conditional
> > > > contact
> > > > > > with pushing muscles. If the two contact points are close
> > enough
> > > > > > (this distance is set by the user) then the muscles will
> > have a
> > > > > high
> > > > > > strength and can create the contact force. If the two
> > contact
> > > > > points
> > > > > > are to far from each other, the muscles will have no
> > strength at
> > > > > > all, and there can be no contact force.
> > > > > > But I am not sure if this utility is useful for your model
> > > > because
> > > > > > you want a permanent contact of the humerus head?
> > > > > >
> > > > > >
> > > > > >
> > > > > > The file also holds another utility which is the ability to
> > > > create
> > > > > > normal reaction force and friction force at the contact
> > point.
> > > > > This
> > > > > > could maybe be interesting for your model. But you have to
> > take
> > > > > care
> > > > > > to apply those forces to the acromion contact point. You
> > > > actually
> > > > > > applied them to the center of the humerus head instead of
> > the
> > > > > > contact point.
> > > > > >
> > > > > > I tried running the files you uploaded and it is working
> > with
> > > > the
> > > > > > elliptic shape without doing any changes. However the model
> > is
> > > > now
> > > > > > fully balanced and it is not possible anymore to see that
> > point
> > > > > you
> > > > > > was interested in the last time (where the geometry cannot
> > carry
> > > > > the
> > > > > > load) to plot the max abduction.
> > > > > >
> > > > > > So the solution of recreating the humeral contact depends on
> > the
> > > > > > simulation you want to perform
> > > > > >
> > > > > > An example of using ContactSurfaceLinPush is available in
> > the
> > > > > > repository 7/Application/Examples/PedalDemoConditional, as I
> > > > > recall
> > > > > > it the contact muscles are defined in the JointAndDriver.any
> > > > file.
> > > > > >
> > > > > > Best regards,
> > > > > > Sylvain, AnyBody Support
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > — In anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com, “Pierre-Olivier Lemieux”
> > > > > > <pothekid@> wrote:
> > > > > > >
> > > > > > > Hi Soeren,
> > > > > > > thank you for you recommendations. It seems to
> > works
> > > > > now
> > > > > > for
> > > > > > > the abduction. The deltoid activity is not what I want
> > most,
> > > > so
> > > > > > I’ve
> > > > > > > just commented it out.
> > > > > > > I have an other question now. When I went to Aalborg, John
> > > > gave
> > > > > me
> > > > > > a
> > > > > > > folder with some special scripts. One of these scripts is
> > > > > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> > > > pushing
> > > > > > > force on a contact node (I guess). However, I have some
> > > > > > difficulties
> > > > > > > to understand this script. Also, it works with a constant
> > > > radius
> > > > > > > humeral head, but not for my elliptic shape. Do you think
> > this
> > > > is
> > > > > > > possible ?
> > > > > > >
> > > > > > > You can check the folder “AcromionHumerusContact” in the
> > > > bottom
> > > > > of
> > > > > > my
> > > > > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I
> > will
> > > > > send
> > > > > > you
> > > > > > > the special script, because I don’t know who has written
> > it.
> > > > > > >
> > > > > > > Thank you again,
> > > > > > >
> > > > > > > Pierre-Olivier
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > — In anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com, “AnyBody Support”
> > <support@>
> > > > > > wrote:
> > > > > > > >
> > > > > > > > Hi Pierre
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I think there is a simple solution to your problem….
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > The reason why you are getting this strange solution is
> > that
> > > > > the
> > > > > > > analysis
> > > > > > > > has not been finished due to the inverse analysis, this
> > is
> > > > as
> > > > > you
> > > > > > > expect.
> > > > > > > > The abduction angle you find by taking the max value of
> > the
> > > > > > > abduction angle
> > > > > > > > function. This is fine if the analysis had finished
> > correctly
> > > > > > > because then
> > > > > > > > it would look at all the values in the output function
> > (nStep
> > > > > > > values) and
> > > > > > > > find the maximum one. When the analysis stops it will
> > still
> > > > > look
> > > > > > at
> > > > > > > these
> > > > > > > > nStep values, but now some of these can
> > contain “garbage”
> > > > > > numbers.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > So the remedy in this case is to change the output
> > function
> > > > in
> > > > > > the
> > > > > > > > parameterstudy to the following
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > > >
> > > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > > >
> > > > > > > > };
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > This function do not take the max of any values it will
> > just
> > > > > > return
> > > > > > > the last
> > > > > > > > one … and this is what you would like in this case I
> > guess.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > There will be the same kind of problems with your other
> > > > output
> > > > > > > function in
> > > > > > > > the parameter study as I see it. The Abduction angle is
> > > > > reported
> > > > > > ok
> > > > > > > but if
> > > > > > > > you did the same with the deltoid activity it would not
> > work
> > > > I
> > > > > > believe
> > > > > > > > because this value is not calculated in the last step
> > > > because
> > > > > it
> > > > > > > fails in
> > > > > > > > inverse analysis, it goes ok with the abduction angle
> > > > because
> > > > > the
> > > > > > > kinematics
> > > > > > > > has been solved ok.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > So using the function
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > > >
> > > > > > > > Val = max(…Study.MaxActivity());
> > > > > > > >
> > > > > > > > };
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I am not really sure what you get since you take the max
> > of
> > > > > > values
> > > > > > > which are
> > > > > > > > initialized, and this may give strange results. So I
> > think
> > > > you
> > > > > > should
> > > > > > > > consider exporting these numbers using an output file
> > and
> > > > then
> > > > > > > process them
> > > > > > > > externally.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I hope this helps you move on.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Otherwise please write again.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Best regards
> > > > > > > >
> > > > > > > > Søren, AnyBody Support
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > _____
> > > > > > > >
> > > > > > > > From: anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com
> > > > > > [mailto:anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com]
> > > > > > > On Behalf
> > > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > > Sent: 07 February 2008 18:46
> > > > > > > > To: anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> ps.com
> > > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Hi guys,
> > > > > > > > I’m still working with anybody to finish the first part
> > of
> > > > > > > > my simulations in 2 dimensions. After some revisions of
> > the
> > > > > > model,
> > > > > > > > i’ve found a big error in it.
> > > > > > > > If you don’t remember, I try to simulate the migration
> > of
> > > > the
> > > > > > humeral
> > > > > > > > head, in the case of a massive rotator cuff tear. So, my
> > > > model
> > > > > > allows
> > > > > > > > a translation of the humerus upward and a permanent
> > contact
> > > > of
> > > > > > the
> > > > > > > > prosthetic head on the acromion. This contact is allowed
> > by
> > > > a
> > > > > > driver
> > > > > > > > (acromion driver), related to mathematical properties of
> > the
> > > > > > elliptic
> > > > > > > > shape. Because this contact is between a prosthesis and
> > a
> > > > > bone,
> > > > > > it
> > > > > > > > can’t supply a pulling force (just pushing force is
> > allowed)
> > > > > (It
> > > > > > was
> > > > > > > > the error !!). To correct that, I have switched off the
> > > > > reaction
> > > > > > of
> > > > > > > > the driver and put a general “only pushing” muscle on
> > it. So
> > > > > > now, the
> > > > > > > > abduction can goes until a certain degree and after
> > that,
> > > > the
> > > > > > geometry
> > > > > > > > is not able to carry the movement, and the simulation
> > stops.
> > > > > It
> > > > > > is
> > > > > > > > exactly that I want because it directly shows if the
> > > > geometry
> > > > > is
> > > > > > > > efficient or not.
> > > > > > > >
> > > > > > > > My problem is when I try to perform a parametric
> > simulation.
> > > > I
> > > > > > look on
> > > > > > > > the maximum abduction reached during the simulation
> > > > (kinematic
> > > > > > > > rotational measure). The results are very strange and I
> > > > think
> > > > > > that
> > > > > > > > they are not representative, probably because the
> > simulation
> > > > > > stops
> > > > > > > > with an error. So, if I would get rid of this error by
> > > > changing
> > > > > > > > something on the model, it would maybe works.
> > > > > > > >
> > > > > > > > Maybe you have a little idea of what I should do (I
> > > > hope …).
> > > > > I
> > > > > > send
> > > > > > > > you my model and a picture of the results.
> > > > > > > >
> > > > > > > > Thank you in advance for your support and say hello to
> > > > > everyone
> > > > > > of
> > > > > > > > Anybody for me :wink:
> > > > > > > >
> > > > > > > > bye bye
> > > > > > > >
> > > > > > > > Pierre
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > [Non-text portions of this message have been removed]
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
>
>
>
>
> [Non-text portions of this message have been removed]
>

[Non-text portions of this message have been removed]

Hi Pierre

I am not sure I really understand this, does this means that the muscles
configuration in the two models are not the same?

If this is the case and if you have force in these muscles in the AnyBody
model, then I guess your results will never be exactly the same…

Maybe you should try to identify if the areas where you have large
differences corresponds to the locations where you have force in these
artificial muscles…

Best regards

Søren, AnyBody Support


From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of Pierre-Olivier Lemieux
Sent: 18 March 2008 19:34
To: anyscript@yahoogroups.com
Subject: [AnyScript] Re: shoulder 2D model

Hi again,
I’ve forgot to mention you that I’ve put together the
WeakMuscle1 (pulling muscle) and the deltoid muscle, because they do a
common task, that is normally perform by the deltoid itself. I’ve made
the same thing with the AcromionPush-Conditional-contact-Muscle and
WeakMuscle2 (pushing muscle). Do you think that can be a mistake ?

Thank you in advance

Pierre

— In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
“Pierre-Olivier Lemieux”
<pothekid@…> wrote:
>
> Hi Soren,
> thank you for your support. Now I have a model that represent
> more my pathology and I have also created a Matlab algorithm that find
> the movement of the humeral head and import it into my AnyBody model.
>
> My Matlab algorithm compute the minimum force in the deltoid to
> perform an increment of abduction with a moment balance (constant
> velocity). If there is a non-equilibrium of the forces and a degree of
> freedom in the direction of the force, there is automatically an
> increment of displacement. This is the case for the vertical
> displacement in my model.
>
> Now, I want to know how Anybody solve a problem. I know that for each
> step time, it use the min/max criterion to find the minimum muscle
> activity. Does it works like my Matlab routine ?
>
> I have compared the Matlab results from those obtained in Anybody from
> the same movement and in a lot of situation it gives me similar
> results. However, there is some differences that I’m not able to
> explain. Do you think that my Matlab routine is well made ?
>
> I send you my results (Matlab & AnyBody) for a particular case under
> (PO_Lemieux_shoulder_model_March_18). Just take a look and give me
> your idea about it.
>
> Thank you again.
>
> Pierre
>
> — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
“AnyBody Support” <support@> wrote:
> >
> > Hi Pierre
> >
> >
> >
> > The contact force you have applied works on the contact segment. This
> > element will need to be carried by the driver otherwise the model
> will be
> > unbalanced and unable to solve; it can not be left unbalanced.
> >
> > The contact force you have applied can only do a pushing force, so the
> > reactions you will see in this contact driver will only be in one
> direction.
> >
> >
> >
> > The weak muscles also need to be there, there can not be dof in the
> model
> > which are unbalanced. Even if these are supposed to have force, it
> will lead
> > to numeric problems if they are left unbalanced.
> >
> >
> >
> > The reason why the weak muscles are needed must be a moment balance
> issue
> > there appears to be situation where the deltoid muscle it self can not
> > balance the upper arm. To me it sounds reasonable, these weak muscles
> > replicated the joint reactions up/down and these would always be non
> zero.
> > In you had more muscles in the model these might be able to
control this
> > up/down dofs., and the weak muscles could be excluded.
> >
> >
> >
> > Best regards
> >
> > Søren
> >
> > _____
> >
> > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com]
> On Behalf
> > Of Pierre-Olivier Lemieux
> > Sent: 20 February 2008 03:31
> > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> > Subject: [AnyScript] Re: shoulder 2D model
> >
> >
> >
> > Hi again Sylvain,
> > my model works well now with the Reaction.Type turned
> > on within the Contact driver. However, it makes this reaction able to
> > pull or push. For some set-up of the parameters of the ellipse, I got
> > negative forces for the Contact driver. It tells me that the permanent
> > contact with the acromion is not valid in all the case. Maybe I should
> > know the real displacement in term of the elliptic shape, prior to
> > proceed to the inverse analysis.
> >
> > Also, it is not only the deltoid that pulls on the humeral head, it is
> > also the WeakMuscles. These muscles are not there normally and when I
> > comment them, it gives me a “Muscle recruitment” error if the tStart
> > is 0. Thus, I want to know why the deltoid can’t do the complete
> > abduction by itself ?
> >
> > Thank you again.
> >
> > Pierre-Olivier
> >
> > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> > “AnyBody Support” <support@> wrote:
> > >
> > >
> > >
> > >
> > > Hi,
> > >
> > > The reason you cannot see the reaction force of
> > > ContactSurfaceLinPush is because the ContactSeg you created is not
> > > fully balanced. I was effectively talking about adding some
> > > AnyReacForce between the ContactSeg and the humerus, so that the
> > > ContactSeg is carried in all directions in term of forces and it
can
> > > transmit the reaction forces from the acromion point to the humerus
> > > head.
> > > But it’s not the only way to do it: by adding a prismatic joint you
> > > drive the ContactSeg in five directions, you just have to switch on
> > > the ReactionType of the Ellipse2ContactDriver to carry the load of
> > > the segment in the sliding direction also. Now you will be able to
> > > see appear the reaction force at the contact point.
> > >
> > > Best regards.
> > > Sylvain, AnyBody Support
> > >
> > >
> > >
> > >
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > “Pierre-Olivier Lemieux”
> > > <pothekid@> wrote:
> > > >
> > > > Hi Sylvain,
> > > > I’ve made the changes that you told me about, but I’m
> > > not
> > > > able to make my model works well. I don’t have any
> > > > “ContactSurfaceLinPush” reaction forces and friction forces.
> > > >
> > > > In Excel, I’ve calculated the displacement of the humeral head in
> > > term
> > > > of static equations for the abduction and put those values in the
> > > > model (“SliderDriver” and “AbductionDriver”). With these values,
> > > the
> > > > displacement is upward at the beginning of abduction and downward
> > > at
> > > > the end. So, the contact between the acromion and humeral head is
> > > not
> > > > always there. For this reason, the “ContactSurfaceLinPush” is very
> > > > useful for me.
> > > >
> > > > I’m not sure to understand well when you talk about adding some
> > > > reaction forces. Is it the “AnyReacForce” object ? If it is the
> > > case,
> > > > can you help me to write it correctly ?
> > > >
> > > > My new model is named “PO_Lemieux_shoulder_3”.
> > > >
> > > > thank you for your support.
> > > >
> > > > Pierre-Olivier
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > “AnyBody Support” <support@>
> > > wrote:
> > > > >
> > > > > Hi Pierre,
> > > > >
> > > > > In the file ContactSurfaceLinPush the object Base define the
> > > node
> > > > > that is applying the force. The object Target defines the node
> > > where
> > > > > the force is applied to. So by switching Base and Target object
> > > you
> > > > > are now applying the reaction forces from the center of the
> > > > > ellipsoid to p12. And the reaction forces are displayed in the
> > > Base
> > > > > frame (ellipsoid frame in this case) that’s why the arrows
> > > follow
> > > > > the abduction angle.
> > > > >
> > > > > This can be improved by applying the reaction forces from
P12 to
> > > a
> > > > > floating point on the external shape of the ellipsoid, where
the
> > > > > contact really occurs. You can create a segment (with no mass)
> > > that
> > > > > you drive to slide on the ellipsoid shape as you did with the
> > > > > AcromionDriver, and you set the distance between one point of
> > > this
> > > > > segment and P12 to 0. Then you have to create some reaction
> > > forces
> > > > > between this segment and the ellipsoid to transmit all the
> > > forces.
> > > > > So you will now have a floating contact point on the ellipsoid
> > > > > shape. By setting the Base to the new segment you should be
able
> > > to
> > > > > draw the reaction force vectors in the tangential plane of the
> > > shape.
> > > > >
> > > > > About the ContactRotPush, this applies a moment between two
> > > segments
> > > > > in contact. There are no friction forces, so this may not be
> > > what
> > > > > you need.
> > > > >
> > > > > For the external pushing force of ContactSurfaceLinPush you
talk
> > > > > about: this function actually use 5 muscles. One pushing in the
> > > > > normal direction of the surface and 4 others creating the
> > > friction
> > > > > forces in the plane of the surface combined with normal force;
> > > > > please see this link where there is a short description
> > > > >
> > > > >
> > > > >
> > > > > http://www.anybodyt
> <http://www.anybodyt <http://www.anybodytech.com/116.0.html?&tx_ttnews>
ech.com/116.0.html?&tx_ttnews>
> > ech.com/116.0.html?&tx_ttnews[backPid]
> > > > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > > > >
> > > > >
> > > > >
> > > > > I understand you would like to activate only the friction
> > > muscles?
> > > > > That is not possible, the five muscles are linked and working
> > > > > together.
> > > > >
> > > > > And for the strange behaviour you noticed when you change the
> > > > > deltoid origin, well i don’t think it’s so strange. Because by
> > > > > changing the origin of the muscle you change the force it will
> > > have
> > > > > to develop, you also change the reaction forces in the contact
> > > > > point. But i think you don’t have a big interest in changing
the
> > > > > muscle origin and you should just keep it in its normal value.
> > > > >
> > > > > It’s correct that you did not find repository 7, it is not
> > > public, I
> > > > > forgot this, sorry. You should look in the repository 6, here
> > > you
> > > > > will find the file PedalDemoConditional in ARep\Aalborg.
> > > > >
> > > > > Best Regards
> > > > > Sylvain, AnyBodySupport
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> > ps.com, “Pierre-Olivier Lemieux”
> > > > > <pothekid@> wrote:
> > > > > >
> > > > > > Hi Sylvain,
> > > > > > thank you for your support. I’ve worked around
> > > > > > the “ContactLinePush” problem all the week-end and I’ve found
> > > that
> > > > > > by swithching the “Base” and “Target” objects, the friction
> > > > > appears.
> > > > > > However, it gives me too high results because the switch
mixed
> > > up
> > > > > > all the calculations. For exemple, the resulting friction
> > > force is
> > > > > > equal to the normal force, that is not correct. Also, the
> > > arrows
> > > > > > rotate following the abduction angle. Maybe a
“ContactRotPush”
> > > > > would
> > > > > > perform better ?
> > > > > > So, I guess that I’m on a good way to find a solution, but I
> > > still
> > > > > > need to understand how this script works, and what are the
> > > > > > accepted “RefFrame” for the “Base” and “Target” objects.
> > > > > >
> > > > > > Also, in the present case, there is an external pushing force
> > > > > > (ContactLinePush) on the shoulder upward during all abduction
> > > to
> > > > > > keep the contact between the acromion and the ellipse.
> > > > > > However, in the real case, the deltoid, while performing the
> > > > > > abduction alone, pulls on the humerus, instead
> > > > > of “ContactLinePush”,
> > > > > > and creates a contact force between the acromion and humeral
> > > head
> > > > > > (that should be the ContactLinePush). I’ve made an
> > > experimental
> > > > > set-
> > > > > > up that has shown me these results.
> > > > > >
> > > > > > Also, I’ve noticed another strange behavior. For exemple,
when
> > > I
> > > > > use
> > > > > > the acromion contact point P12 : (0,0.039,0) and deltoid
> > > origin
> > > > > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
> > > the
> > > > > > results are very different from using the same P12, but
> > > changing
> > > > > P8
> > > > > > to a closer distance (0,0.038,0) from P12. Note that the
first
> > > set
> > > > > > of values for P8 and P12 are the ones that I need.
> > > > > >
> > > > > > So, if you can help me understanding these problems, it would
> > > help
> > > > > > me a lot.
> > > > > >
> > > > > > Have a good week and thank you again.
> > > > > >
> > > > > > Pierre.
> > > > > >
> > > > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > > > >
> > > > > > — In anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> > ps.com, “AnyBody Support” <support@>
> > > > > > wrote:
> > > > > > >
> > > > > > > Hi Pierre-Olivier
> > > > > > >
> > > > > > > I will try to give you some more information on the file
> > > > > > > ContactSurfaceLinPush, this file can create a conditional
> > > > > contact
> > > > > > > with pushing muscles. If the two contact points are close
> > > enough
> > > > > > > (this distance is set by the user) then the muscles will
> > > have a
> > > > > > high
> > > > > > > strength and can create the contact force. If the two
> > > contact
> > > > > > points
> > > > > > > are to far from each other, the muscles will have no
> > > strength at
> > > > > > > all, and there can be no contact force.
> > > > > > > But I am not sure if this utility is useful for your model
> > > > > because
> > > > > > > you want a permanent contact of the humerus head?
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > The file also holds another utility which is the ability to
> > > > > create
> > > > > > > normal reaction force and friction force at the contact
> > > point.
> > > > > > This
> > > > > > > could maybe be interesting for your model. But you have to
> > > take
> > > > > > care
> > > > > > > to apply those forces to the acromion contact point. You
> > > > > actually
> > > > > > > applied them to the center of the humerus head instead of
> > > the
> > > > > > > contact point.
> > > > > > >
> > > > > > > I tried running the files you uploaded and it is working
> > > with
> > > > > the
> > > > > > > elliptic shape without doing any changes. However the model
> > > is
> > > > > now
> > > > > > > fully balanced and it is not possible anymore to see that
> > > point
> > > > > > you
> > > > > > > was interested in the last time (where the geometry cannot
> > > carry
> > > > > > the
> > > > > > > load) to plot the max abduction.
> > > > > > >
> > > > > > > So the solution of recreating the humeral contact
depends on
> > > the
> > > > > > > simulation you want to perform
> > > > > > >
> > > > > > > An example of using ContactSurfaceLinPush is available in
> > > the
> > > > > > > repository 7/Application/Examples/PedalDemoConditional,
as I
> > > > > > recall
> > > > > > > it the contact muscles are defined in the
JointAndDriver.any
> > > > > file.
> > > > > > >
> > > > > > > Best regards,
> > > > > > > Sylvain, AnyBody Support
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com, “Pierre-Olivier Lemieux”
> > > > > > > <pothekid@> wrote:
> > > > > > > >
> > > > > > > > Hi Soeren,
> > > > > > > > thank you for you recommendations. It seems to
> > > works
> > > > > > now
> > > > > > > for
> > > > > > > > the abduction. The deltoid activity is not what I want
> > > most,
> > > > > so
> > > > > > > I’ve
> > > > > > > > just commented it out.
> > > > > > > > I have an other question now. When I went to Aalborg,
John
> > > > > gave
> > > > > > me
> > > > > > > a
> > > > > > > > folder with some special scripts. One of these scripts is
> > > > > > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> > > > > pushing
> > > > > > > > force on a contact node (I guess). However, I have some
> > > > > > > difficulties
> > > > > > > > to understand this script. Also, it works with a constant
> > > > > radius
> > > > > > > > humeral head, but not for my elliptic shape. Do you think
> > > this
> > > > > is
> > > > > > > > possible ?
> > > > > > > >
> > > > > > > > You can check the folder “AcromionHumerusContact” in the
> > > > > bottom
> > > > > > of
> > > > > > > my
> > > > > > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I
> > > will
> > > > > > send
> > > > > > > you
> > > > > > > > the special script, because I don’t know who has written
> > > it.
> > > > > > > >
> > > > > > > > Thank you again,
> > > > > > > >
> > > > > > > > Pierre-Olivier
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com, “AnyBody Support”
> > > <support@>
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > Hi Pierre
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I think there is a simple solution to your problem….
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > The reason why you are getting this strange solution is
> > > that
> > > > > > the
> > > > > > > > analysis
> > > > > > > > > has not been finished due to the inverse analysis, this
> > > is
> > > > > as
> > > > > > you
> > > > > > > > expect.
> > > > > > > > > The abduction angle you find by taking the max value of
> > > the
> > > > > > > > abduction angle
> > > > > > > > > function. This is fine if the analysis had finished
> > > correctly
> > > > > > > > because then
> > > > > > > > > it would look at all the values in the output function
> > > (nStep
> > > > > > > > values) and
> > > > > > > > > find the maximum one. When the analysis stops it will
> > > still
> > > > > > look
> > > > > > > at
> > > > > > > > these
> > > > > > > > > nStep values, but now some of these can
> > > contain “garbage”
> > > > > > > numbers.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > So the remedy in this case is to change the output
> > > function
> > > > > in
> > > > > > > the
> > > > > > > > > parameterstudy to the following
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > > > >
> > > > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > > > >
> > > > > > > > > };
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > This function do not take the max of any values it will
> > > just
> > > > > > > return
> > > > > > > > the last
> > > > > > > > > one … and this is what you would like in this case I
> > > guess.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > There will be the same kind of problems with your other
> > > > > output
> > > > > > > > function in
> > > > > > > > > the parameter study as I see it. The Abduction angle is
> > > > > > reported
> > > > > > > ok
> > > > > > > > but if
> > > > > > > > > you did the same with the deltoid activity it would not
> > > work
> > > > > I
> > > > > > > believe
> > > > > > > > > because this value is not calculated in the last step
> > > > > because
> > > > > > it
> > > > > > > > fails in
> > > > > > > > > inverse analysis, it goes ok with the abduction angle
> > > > > because
> > > > > > the
> > > > > > > > kinematics
> > > > > > > > > has been solved ok.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > So using the function
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > > > >
> > > > > > > > > Val = max(…Study.MaxActivity());
> > > > > > > > >
> > > > > > > > > };
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I am not really sure what you get since you take the
max
> > > of
> > > > > > > values
> > > > > > > > which are
> > > > > > > > > initialized, and this may give strange results. So I
> > > think
> > > > > you
> > > > > > > should
> > > > > > > > > consider exporting these numbers using an output file
> > > and
> > > > > then
> > > > > > > > process them
> > > > > > > > > externally.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I hope this helps you move on.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Otherwise please write again.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Best regards
> > > > > > > > >
> > > > > > > > > Søren, AnyBody Support
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > _____
> > > > > > > > >
> > > > > > > > > From: anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com
> > > > > > > [mailto:anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com]
> > > > > > > > On Behalf
> > > > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > > > Sent: 07 February 2008 18:46
> > > > > > > > > To: anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com
> > > > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Hi guys,
> > > > > > > > > I’m still working with anybody to finish the first part
> > > of
> > > > > > > > > my simulations in 2 dimensions. After some revisions of
> > > the
> > > > > > > model,
> > > > > > > > > i’ve found a big error in it.
> > > > > > > > > If you don’t remember, I try to simulate the migration
> > > of
> > > > > the
> > > > > > > humeral
> > > > > > > > > head, in the case of a massive rotator cuff tear.
So, my
> > > > > model
> > > > > > > allows
> > > > > > > > > a translation of the humerus upward and a permanent
> > > contact
> > > > > of
> > > > > > > the
> > > > > > > > > prosthetic head on the acromion. This contact is
allowed
> > > by
> > > > > a
> > > > > > > driver
> > > > > > > > > (acromion driver), related to mathematical
properties of
> > > the
> > > > > > > elliptic
> > > > > > > > > shape. Because this contact is between a prosthesis and
> > > a
> > > > > > bone,
> > > > > > > it
> > > > > > > > > can’t supply a pulling force (just pushing force is
> > > allowed)
> > > > > > (It
> > > > > > > was
> > > > > > > > > the error !!). To correct that, I have switched off the
> > > > > > reaction
> > > > > > > of
> > > > > > > > > the driver and put a general “only pushing” muscle on
> > > it. So
> > > > > > > now, the
> > > > > > > > > abduction can goes until a certain degree and after
> > > that,
> > > > > the
> > > > > > > geometry
> > > > > > > > > is not able to carry the movement, and the simulation
> > > stops.
> > > > > > It
> > > > > > > is
> > > > > > > > > exactly that I want because it directly shows if the
> > > > > geometry
> > > > > > is
> > > > > > > > > efficient or not.
> > > > > > > > >
> > > > > > > > > My problem is when I try to perform a parametric
> > > simulation.
> > > > > I
> > > > > > > look on
> > > > > > > > > the maximum abduction reached during the simulation
> > > > > (kinematic
> > > > > > > > > rotational measure). The results are very strange and I
> > > > > think
> > > > > > > that
> > > > > > > > > they are not representative, probably because the
> > > simulation
> > > > > > > stops
> > > > > > > > > with an error. So, if I would get rid of this error by
> > > > > changing
> > > > > > > > > something on the model, it would maybe works.
> > > > > > > > >
> > > > > > > > > Maybe you have a little idea of what I should do (I
> > > > > hope …).
> > > > > > I
> > > > > > > send
> > > > > > > > > you my model and a picture of the results.
> > > > > > > > >
> > > > > > > > > Thank you in advance for your support and say hello to
> > > > > > everyone
> > > > > > > of
> > > > > > > > > Anybody for me :wink:
> > > > > > > > >
> > > > > > > > > bye bye
> > > > > > > > >
> > > > > > > > > Pierre
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > [Non-text portions of this message have been removed]
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
>

[Non-text portions of this message have been removed]

Hi Soren,
the Matlab routine (which I’ve created entirely) is pretty
simple. For each positions, it perform a calculation of the lever arm
and the angle of the upper part of the muscle to separate the X and Y
direction of the muscle force. When the contact between the prosthesis
and the acromion occurs, the acromial reaction is possible and is
drawn on the figure. There is no recruitment muscle because there is
only one muscle in my routine (deltoid).

The strength model is a constant force model. Like you can see, the
muscle wrapping is done by using a thin rope between the origin and
insertion point.

I send you a little video of all that under (GH_Movement.zip).

I understand your idea about creating the same routine in Anybody, but
I don’t see any interest about doing that if the results between
AnyBody and Matlab are the same.

My idea was rather to find the correct movement pattern in term of
prosthetic dimensions in Matlab and then put this movement into my
AnyBody model, to find the deltoid forces. By obtaining the same
results in AnyBody and Matlab, I think this is a way to verify the
accuracy of my findings… What do you think about that ?

I have try to get the same models between AnyBody and Matlab. To do
so, I’ve put the static friction coefficient to 0 and put a constant
force model for the deltoid. Thus, I think that the differences are
just in the WeakMuscle definition. In my Matlab routine, there is no
WeakMuscle because the acromion force give us a hint that something
don’t work during the first abduction degrees (check the results.jpg).

I hope that was more clear for you.

Thank you very much.

Pierre

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Pierre
>
>
>
> I think I understand what your algorithm is doing, it finds the minimum
> deltoid force and if there is a force unbalance it moves the humeral
until
> balance is obtained.
>
>
>
> Using the build in optimizer in AnyBody something similar should be
possible
> I guess, but it will be a slightly differently approach. Basically
you will
> need a model that will always be able to balance itself through
artificial
> joint reactions, but through the optimization you can change the
motion so
> that it tries to minimize those reactions.
>
>
>
> 1 you will need the extra muscle that ensures that a force balance can
> always be obtained.
>
> 2 a design variable has to be defined, this is the translation,
maybe this
> should be done using an interpolation function…
>
> 3 an objective function has to be setup, here I would choose to
minimize the
> forces in the artificial muscles which you did not want to become
active. So
> you will be minimizing these reaction forces by moving the humeral
head to
> another position.
>
>
>
> There is a tutorial of parameter and optimization studies it might be
> helpful.
>
>
>
> I can not judge if the MatLab code is ok sorry, I can think of the
following
> questions
>
> 1 Are there any differences in the models, that in anyway could justify
> these differences?
>
> 2 What about muscles wrapping, how is this done in MatLab…
>
> 3 Muscles strength models
>
> 4 Recruitment criteria?
>
> Etc…
>
>
>
>
>
> Best regards
>
> Søren, AnyBody Support
>
>
>
>
>
> _____
>
> From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com]
On Behalf
> Of Pierre-Olivier Lemieux
> Sent: 18 March 2008 19:18
> To: anyscript@yahoogroups.com
> Subject: [AnyScript] Re: shoulder 2D model
>
>
>
> Hi Soren,
> thank you for your support. Now I have a model that represent
> more my pathology and I have also created a Matlab algorithm that find
> the movement of the humeral head and import it into my AnyBody model.
>
> My Matlab algorithm compute the minimum force in the deltoid to
> perform an increment of abduction with a moment balance (constant
> velocity). If there is a non-equilibrium of the forces and a degree of
> freedom in the direction of the force, there is automatically an
> increment of displacement. This is the case for the vertical
> displacement in my model.
>
> Now, I want to know how Anybody solve a problem. I know that for each
> step time, it use the min/max criterion to find the minimum muscle
> activity. Does it works like my Matlab routine ?
>
> I have compared the Matlab results from those obtained in Anybody from
> the same movement and in a lot of situation it gives me similar
> results. However, there is some differences that I’m not able to
> explain. Do you think that my Matlab routine is well made ?
>
> I send you my results (Matlab & AnyBody) for a particular case under
> (PO_Lemieux_shoulder_model_March_18). Just take a look and give me
> your idea about it.
>
> Thank you again.
>
> Pierre
>
> — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
> “AnyBody Support” <support@> wrote:
> >
> > Hi Pierre
> >
> >
> >
> > The contact force you have applied works on the contact segment. This
> > element will need to be carried by the driver otherwise the model
> will be
> > unbalanced and unable to solve; it can not be left unbalanced.
> >
> > The contact force you have applied can only do a pushing force, so the
> > reactions you will see in this contact driver will only be in one
> direction.
> >
> >
> >
> > The weak muscles also need to be there, there can not be dof in the
> model
> > which are unbalanced. Even if these are supposed to have force, it
> will lead
> > to numeric problems if they are left unbalanced.
> >
> >
> >
> > The reason why the weak muscles are needed must be a moment balance
> issue
> > there appears to be situation where the deltoid muscle it self can not
> > balance the upper arm. To me it sounds reasonable, these weak muscles
> > replicated the joint reactions up/down and these would always be non
> zero.
> > In you had more muscles in the model these might be able to
control this
> > up/down dofs., and the weak muscles could be excluded.
> >
> >
> >
> > Best regards
> >
> > Søren
> >
> > _____
> >
> > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> [mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com]
> On Behalf
> > Of Pierre-Olivier Lemieux
> > Sent: 20 February 2008 03:31
> > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> > Subject: [AnyScript] Re: shoulder 2D model
> >
> >
> >
> > Hi again Sylvain,
> > my model works well now with the Reaction.Type turned
> > on within the Contact driver. However, it makes this reaction able to
> > pull or push. For some set-up of the parameters of the ellipse, I got
> > negative forces for the Contact driver. It tells me that the permanent
> > contact with the acromion is not valid in all the case. Maybe I should
> > know the real displacement in term of the elliptic shape, prior to
> > proceed to the inverse analysis.
> >
> > Also, it is not only the deltoid that pulls on the humeral head, it is
> > also the WeakMuscles. These muscles are not there normally and when I
> > comment them, it gives me a “Muscle recruitment” error if the tStart
> > is 0. Thus, I want to know why the deltoid can’t do the complete
> > abduction by itself ?
> >
> > Thank you again.
> >
> > Pierre-Olivier
> >
> > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> > “AnyBody Support” <support@> wrote:
> > >
> > >
> > >
> > >
> > > Hi,
> > >
> > > The reason you cannot see the reaction force of
> > > ContactSurfaceLinPush is because the ContactSeg you created is not
> > > fully balanced. I was effectively talking about adding some
> > > AnyReacForce between the ContactSeg and the humerus, so that the
> > > ContactSeg is carried in all directions in term of forces and it
can
> > > transmit the reaction forces from the acromion point to the humerus
> > > head.
> > > But it’s not the only way to do it: by adding a prismatic joint you
> > > drive the ContactSeg in five directions, you just have to switch on
> > > the ReactionType of the Ellipse2ContactDriver to carry the load of
> > > the segment in the sliding direction also. Now you will be able to
> > > see appear the reaction force at the contact point.
> > >
> > > Best regards.
> > > Sylvain, AnyBody Support
> > >
> > >
> > >
> > >
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > “Pierre-Olivier Lemieux”
> > > <pothekid@> wrote:
> > > >
> > > > Hi Sylvain,
> > > > I’ve made the changes that you told me about, but I’m
> > > not
> > > > able to make my model works well. I don’t have any
> > > > “ContactSurfaceLinPush” reaction forces and friction forces.
> > > >
> > > > In Excel, I’ve calculated the displacement of the humeral head in
> > > term
> > > > of static equations for the abduction and put those values in the
> > > > model (“SliderDriver” and “AbductionDriver”). With these values,
> > > the
> > > > displacement is upward at the beginning of abduction and downward
> > > at
> > > > the end. So, the contact between the acromion and humeral head is
> > > not
> > > > always there. For this reason, the “ContactSurfaceLinPush” is very
> > > > useful for me.
> > > >
> > > > I’m not sure to understand well when you talk about adding some
> > > > reaction forces. Is it the “AnyReacForce” object ? If it is the
> > > case,
> > > > can you help me to write it correctly ?
> > > >
> > > > My new model is named “PO_Lemieux_shoulder_3”.
> > > >
> > > > thank you for your support.
> > > >
> > > > Pierre-Olivier
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > “AnyBody Support” <support@>
> > > wrote:
> > > > >
> > > > > Hi Pierre,
> > > > >
> > > > > In the file ContactSurfaceLinPush the object Base define the
> > > node
> > > > > that is applying the force. The object Target defines the node
> > > where
> > > > > the force is applied to. So by switching Base and Target object
> > > you
> > > > > are now applying the reaction forces from the center of the
> > > > > ellipsoid to p12. And the reaction forces are displayed in the
> > > Base
> > > > > frame (ellipsoid frame in this case) that’s why the arrows
> > > follow
> > > > > the abduction angle.
> > > > >
> > > > > This can be improved by applying the reaction forces from
P12 to
> > > a
> > > > > floating point on the external shape of the ellipsoid, where
the
> > > > > contact really occurs. You can create a segment (with no mass)
> > > that
> > > > > you drive to slide on the ellipsoid shape as you did with the
> > > > > AcromionDriver, and you set the distance between one point of
> > > this
> > > > > segment and P12 to 0. Then you have to create some reaction
> > > forces
> > > > > between this segment and the ellipsoid to transmit all the
> > > forces.
> > > > > So you will now have a floating contact point on the ellipsoid
> > > > > shape. By setting the Base to the new segment you should be
able
> > > to
> > > > > draw the reaction force vectors in the tangential plane of the
> > > shape.
> > > > >
> > > > > About the ContactRotPush, this applies a moment between two
> > > segments
> > > > > in contact. There are no friction forces, so this may not be
> > > what
> > > > > you need.
> > > > >
> > > > > For the external pushing force of ContactSurfaceLinPush you
talk
> > > > > about: this function actually use 5 muscles. One pushing in the
> > > > > normal direction of the surface and 4 others creating the
> > > friction
> > > > > forces in the plane of the surface combined with normal force;
> > > > > please see this link where there is a short description
> > > > >
> > > > >
> > > > >
> > > > > http://www.anybodyt
> <http://www.anybodyt <http://www.anybodytech.com/116.0.html?&tx_ttnews>
> ech.com/116.0.html?&tx_ttnews>
> > ech.com/116.0.html?&tx_ttnews[backPid]
> > > > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > > > >
> > > > >
> > > > >
> > > > > I understand you would like to activate only the friction
> > > muscles?
> > > > > That is not possible, the five muscles are linked and working
> > > > > together.
> > > > >
> > > > > And for the strange behaviour you noticed when you change the
> > > > > deltoid origin, well i don’t think it’s so strange. Because by
> > > > > changing the origin of the muscle you change the force it will
> > > have
> > > > > to develop, you also change the reaction forces in the contact
> > > > > point. But i think you don’t have a big interest in changing
the
> > > > > muscle origin and you should just keep it in its normal value.
> > > > >
> > > > > It’s correct that you did not find repository 7, it is not
> > > public, I
> > > > > forgot this, sorry. You should look in the repository 6, here
> > > you
> > > > > will find the file PedalDemoConditional in ARep\Aalborg.
> > > > >
> > > > > Best Regards
> > > > > Sylvain, AnyBodySupport
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> > ps.com, “Pierre-Olivier Lemieux”
> > > > > <pothekid@> wrote:
> > > > > >
> > > > > > Hi Sylvain,
> > > > > > thank you for your support. I’ve worked around
> > > > > > the “ContactLinePush” problem all the week-end and I’ve found
> > > that
> > > > > > by swithching the “Base” and “Target” objects, the friction
> > > > > appears.
> > > > > > However, it gives me too high results because the switch
mixed
> > > up
> > > > > > all the calculations. For exemple, the resulting friction
> > > force is
> > > > > > equal to the normal force, that is not correct. Also, the
> > > arrows
> > > > > > rotate following the abduction angle. Maybe a
“ContactRotPush”
> > > > > would
> > > > > > perform better ?
> > > > > > So, I guess that I’m on a good way to find a solution, but I
> > > still
> > > > > > need to understand how this script works, and what are the
> > > > > > accepted “RefFrame” for the “Base” and “Target” objects.
> > > > > >
> > > > > > Also, in the present case, there is an external pushing force
> > > > > > (ContactLinePush) on the shoulder upward during all abduction
> > > to
> > > > > > keep the contact between the acromion and the ellipse.
> > > > > > However, in the real case, the deltoid, while performing the
> > > > > > abduction alone, pulls on the humerus, instead
> > > > > of “ContactLinePush”,
> > > > > > and creates a contact force between the acromion and humeral
> > > head
> > > > > > (that should be the ContactLinePush). I’ve made an
> > > experimental
> > > > > set-
> > > > > > up that has shown me these results.
> > > > > >
> > > > > > Also, I’ve noticed another strange behavior. For exemple,
when
> > > I
> > > > > use
> > > > > > the acromion contact point P12 : (0,0.039,0) and deltoid
> > > origin
> > > > > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
> > > the
> > > > > > results are very different from using the same P12, but
> > > changing
> > > > > P8
> > > > > > to a closer distance (0,0.038,0) from P12. Note that the
first
> > > set
> > > > > > of values for P8 and P12 are the ones that I need.
> > > > > >
> > > > > > So, if you can help me understanding these problems, it would
> > > help
> > > > > > me a lot.
> > > > > >
> > > > > > Have a good week and thank you again.
> > > > > >
> > > > > > Pierre.
> > > > > >
> > > > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > > > >
> > > > > > — In anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> > ps.com, “AnyBody Support” <support@>
> > > > > > wrote:
> > > > > > >
> > > > > > > Hi Pierre-Olivier
> > > > > > >
> > > > > > > I will try to give you some more information on the file
> > > > > > > ContactSurfaceLinPush, this file can create a conditional
> > > > > contact
> > > > > > > with pushing muscles. If the two contact points are close
> > > enough
> > > > > > > (this distance is set by the user) then the muscles will
> > > have a
> > > > > > high
> > > > > > > strength and can create the contact force. If the two
> > > contact
> > > > > > points
> > > > > > > are to far from each other, the muscles will have no
> > > strength at
> > > > > > > all, and there can be no contact force.
> > > > > > > But I am not sure if this utility is useful for your model
> > > > > because
> > > > > > > you want a permanent contact of the humerus head?
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > The file also holds another utility which is the ability to
> > > > > create
> > > > > > > normal reaction force and friction force at the contact
> > > point.
> > > > > > This
> > > > > > > could maybe be interesting for your model. But you have to
> > > take
> > > > > > care
> > > > > > > to apply those forces to the acromion contact point. You
> > > > > actually
> > > > > > > applied them to the center of the humerus head instead of
> > > the
> > > > > > > contact point.
> > > > > > >
> > > > > > > I tried running the files you uploaded and it is working
> > > with
> > > > > the
> > > > > > > elliptic shape without doing any changes. However the model
> > > is
> > > > > now
> > > > > > > fully balanced and it is not possible anymore to see that
> > > point
> > > > > > you
> > > > > > > was interested in the last time (where the geometry cannot
> > > carry
> > > > > > the
> > > > > > > load) to plot the max abduction.
> > > > > > >
> > > > > > > So the solution of recreating the humeral contact
depends on
> > > the
> > > > > > > simulation you want to perform
> > > > > > >
> > > > > > > An example of using ContactSurfaceLinPush is available in
> > > the
> > > > > > > repository 7/Application/Examples/PedalDemoConditional,
as I
> > > > > > recall
> > > > > > > it the contact muscles are defined in the
JointAndDriver.any
> > > > > file.
> > > > > > >
> > > > > > > Best regards,
> > > > > > > Sylvain, AnyBody Support
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com, “Pierre-Olivier Lemieux”
> > > > > > > <pothekid@> wrote:
> > > > > > > >
> > > > > > > > Hi Soeren,
> > > > > > > > thank you for you recommendations. It seems to
> > > works
> > > > > > now
> > > > > > > for
> > > > > > > > the abduction. The deltoid activity is not what I want
> > > most,
> > > > > so
> > > > > > > I’ve
> > > > > > > > just commented it out.
> > > > > > > > I have an other question now. When I went to Aalborg,
John
> > > > > gave
> > > > > > me
> > > > > > > a
> > > > > > > > folder with some special scripts. One of these scripts is
> > > > > > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> > > > > pushing
> > > > > > > > force on a contact node (I guess). However, I have some
> > > > > > > difficulties
> > > > > > > > to understand this script. Also, it works with a constant
> > > > > radius
> > > > > > > > humeral head, but not for my elliptic shape. Do you think
> > > this
> > > > > is
> > > > > > > > possible ?
> > > > > > > >
> > > > > > > > You can check the folder “AcromionHumerusContact” in the
> > > > > bottom
> > > > > > of
> > > > > > > my
> > > > > > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I
> > > will
> > > > > > send
> > > > > > > you
> > > > > > > > the special script, because I don’t know who has written
> > > it.
> > > > > > > >
> > > > > > > > Thank you again,
> > > > > > > >
> > > > > > > > Pierre-Olivier
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com, “AnyBody Support”
> > > <support@>
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > Hi Pierre
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I think there is a simple solution to your problem….
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > The reason why you are getting this strange solution is
> > > that
> > > > > > the
> > > > > > > > analysis
> > > > > > > > > has not been finished due to the inverse analysis, this
> > > is
> > > > > as
> > > > > > you
> > > > > > > > expect.
> > > > > > > > > The abduction angle you find by taking the max value of
> > > the
> > > > > > > > abduction angle
> > > > > > > > > function. This is fine if the analysis had finished
> > > correctly
> > > > > > > > because then
> > > > > > > > > it would look at all the values in the output function
> > > (nStep
> > > > > > > > values) and
> > > > > > > > > find the maximum one. When the analysis stops it will
> > > still
> > > > > > look
> > > > > > > at
> > > > > > > > these
> > > > > > > > > nStep values, but now some of these can
> > > contain “garbage”
> > > > > > > numbers.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > So the remedy in this case is to change the output
> > > function
> > > > > in
> > > > > > > the
> > > > > > > > > parameterstudy to the following
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > > > >
> > > > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > > > >
> > > > > > > > > };
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > This function do not take the max of any values it will
> > > just
> > > > > > > return
> > > > > > > > the last
> > > > > > > > > one … and this is what you would like in this case I
> > > guess.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > There will be the same kind of problems with your other
> > > > > output
> > > > > > > > function in
> > > > > > > > > the parameter study as I see it. The Abduction angle is
> > > > > > reported
> > > > > > > ok
> > > > > > > > but if
> > > > > > > > > you did the same with the deltoid activity it would not
> > > work
> > > > > I
> > > > > > > believe
> > > > > > > > > because this value is not calculated in the last step
> > > > > because
> > > > > > it
> > > > > > > > fails in
> > > > > > > > > inverse analysis, it goes ok with the abduction angle
> > > > > because
> > > > > > the
> > > > > > > > kinematics
> > > > > > > > > has been solved ok.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > So using the function
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > > > >
> > > > > > > > > Val = max(…Study.MaxActivity());
> > > > > > > > >
> > > > > > > > > };
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I am not really sure what you get since you take the
max
> > > of
> > > > > > > values
> > > > > > > > which are
> > > > > > > > > initialized, and this may give strange results. So I
> > > think
> > > > > you
> > > > > > > should
> > > > > > > > > consider exporting these numbers using an output file
> > > and
> > > > > then
> > > > > > > > process them
> > > > > > > > > externally.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I hope this helps you move on.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Otherwise please write again.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Best regards
> > > > > > > > >
> > > > > > > > > Søren, AnyBody Support
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > _____
> > > > > > > > >
> > > > > > > > > From: anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com
> > > > > > > [mailto:anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com]
> > > > > > > > On Behalf
> > > > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > > > Sent: 07 February 2008 18:46
> > > > > > > > > To: anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com
> > > > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Hi guys,
> > > > > > > > > I’m still working with anybody to finish the first part
> > > of
> > > > > > > > > my simulations in 2 dimensions. After some revisions of
> > > the
> > > > > > > model,
> > > > > > > > > i’ve found a big error in it.
> > > > > > > > > If you don’t remember, I try to simulate the migration
> > > of
> > > > > the
> > > > > > > humeral
> > > > > > > > > head, in the case of a massive rotator cuff tear.
So, my
> > > > > model
> > > > > > > allows
> > > > > > > > > a translation of the humerus upward and a permanent
> > > contact
> > > > > of
> > > > > > > the
> > > > > > > > > prosthetic head on the acromion. This contact is
allowed
> > > by
> > > > > a
> > > > > > > driver
> > > > > > > > > (acromion driver), related to mathematical
properties of
> > > the
> > > > > > > elliptic
> > > > > > > > > shape. Because this contact is between a prosthesis and
> > > a
> > > > > > bone,
> > > > > > > it
> > > > > > > > > can’t supply a pulling force (just pushing force is
> > > allowed)
> > > > > > (It
> > > > > > > was
> > > > > > > > > the error !!). To correct that, I have switched off the
> > > > > > reaction
> > > > > > > of
> > > > > > > > > the driver and put a general “only pushing” muscle on
> > > it. So
> > > > > > > now, the
> > > > > > > > > abduction can goes until a certain degree and after
> > > that,
> > > > > the
> > > > > > > geometry
> > > > > > > > > is not able to carry the movement, and the simulation
> > > stops.
> > > > > > It
> > > > > > > is
> > > > > > > > > exactly that I want because it directly shows if the
> > > > > geometry
> > > > > > is
> > > > > > > > > efficient or not.
> > > > > > > > >
> > > > > > > > > My problem is when I try to perform a parametric
> > > simulation.
> > > > > I
> > > > > > > look on
> > > > > > > > > the maximum abduction reached during the simulation
> > > > > (kinematic
> > > > > > > > > rotational measure). The results are very strange and I
> > > > > think
> > > > > > > that
> > > > > > > > > they are not representative, probably because the
> > > simulation
> > > > > > > stops
> > > > > > > > > with an error. So, if I would get rid of this error by
> > > > > changing
> > > > > > > > > something on the model, it would maybe works.
> > > > > > > > >
> > > > > > > > > Maybe you have a little idea of what I should do (I
> > > > > hope …).
> > > > > > I
> > > > > > > send
> > > > > > > > > you my model and a picture of the results.
> > > > > > > > >
> > > > > > > > > Thank you in advance for your support and say hello to
> > > > > > everyone
> > > > > > > of
> > > > > > > > > Anybody for me :wink:
> > > > > > > > >
> > > > > > > > > bye bye
> > > > > > > > >
> > > > > > > > > Pierre
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > [Non-text portions of this message have been removed]
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
>
>
>
>
>
> [Non-text portions of this message have been removed]
>

Hi Pierre

I have seen the video and have a question about the GH head shape. I do not
understand why the GH head changes its shape while the analysis is running,
initially it has a long narrow shape and in the end it looks more compressed
in shape. Could it be graphic related and just something seen on this video?

In AnyBody such a change in the shape is not possible while the model is
running, there would have to be several segments to replicate this.

I understand your point of not replicating the same optimization in AnyBody
and Matlab, but if you plan to impose the results found in matlab on the
AnyBody model it will be important that the models gives the same results.

Please write again if you have further questions, I was a bit unsure if the
last part of your posting was a question.

Best regards

Søren, AnyBody Support


From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of Pierre-Olivier Lemieux
Sent: 19 March 2008 19:22
To: anyscript@yahoogroups.com
Subject: [AnyScript] Re: shoulder 2D model

Hi Soren,
the Matlab routine (which I’ve created entirely) is pretty
simple. For each positions, it perform a calculation of the lever arm
and the angle of the upper part of the muscle to separate the X and Y
direction of the muscle force. When the contact between the prosthesis
and the acromion occurs, the acromial reaction is possible and is
drawn on the figure. There is no recruitment muscle because there is
only one muscle in my routine (deltoid).

The strength model is a constant force model. Like you can see, the
muscle wrapping is done by using a thin rope between the origin and
insertion point.

I send you a little video of all that under (GH_Movement.zip).

I understand your idea about creating the same routine in Anybody, but
I don’t see any interest about doing that if the results between
AnyBody and Matlab are the same.

My idea was rather to find the correct movement pattern in term of
prosthetic dimensions in Matlab and then put this movement into my
AnyBody model, to find the deltoid forces. By obtaining the same
results in AnyBody and Matlab, I think this is a way to verify the
accuracy of my findings… What do you think about that ?

I have try to get the same models between AnyBody and Matlab. To do
so, I’ve put the static friction coefficient to 0 and put a constant
force model for the deltoid. Thus, I think that the differences are
just in the WeakMuscle definition. In my Matlab routine, there is no
WeakMuscle because the acromion force give us a hint that something
don’t work during the first abduction degrees (check the results.jpg).

I hope that was more clear for you.

Thank you very much.

Pierre

— In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
“AnyBody Support” <support@…> wrote:
>
> Hi Pierre
>
>
>
> I think I understand what your algorithm is doing, it finds the minimum
> deltoid force and if there is a force unbalance it moves the humeral
until
> balance is obtained.
>
>
>
> Using the build in optimizer in AnyBody something similar should be
possible
> I guess, but it will be a slightly differently approach. Basically
you will
> need a model that will always be able to balance itself through
artificial
> joint reactions, but through the optimization you can change the
motion so
> that it tries to minimize those reactions.
>
>
>
> 1 you will need the extra muscle that ensures that a force balance can
> always be obtained.
>
> 2 a design variable has to be defined, this is the translation,
maybe this
> should be done using an interpolation function…
>
> 3 an objective function has to be setup, here I would choose to
minimize the
> forces in the artificial muscles which you did not want to become
active. So
> you will be minimizing these reaction forces by moving the humeral
head to
> another position.
>
>
>
> There is a tutorial of parameter and optimization studies it might be
> helpful.
>
>
>
> I can not judge if the MatLab code is ok sorry, I can think of the
following
> questions
>
> 1 Are there any differences in the models, that in anyway could justify
> these differences?
>
> 2 What about muscles wrapping, how is this done in MatLab…
>
> 3 Muscles strength models
>
> 4 Recruitment criteria?
>
> Etc…
>
>
>
>
>
> Best regards
>
> Søren, AnyBody Support
>
>
>
>
>
> _____
>
> From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com]
On Behalf
> Of Pierre-Olivier Lemieux
> Sent: 18 March 2008 19:18
> To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> Subject: [AnyScript] Re: shoulder 2D model
>
>
>
> Hi Soren,
> thank you for your support. Now I have a model that represent
> more my pathology and I have also created a Matlab algorithm that find
> the movement of the humeral head and import it into my AnyBody model.
>
> My Matlab algorithm compute the minimum force in the deltoid to
> perform an increment of abduction with a moment balance (constant
> velocity). If there is a non-equilibrium of the forces and a degree of
> freedom in the direction of the force, there is automatically an
> increment of displacement. This is the case for the vertical
> displacement in my model.
>
> Now, I want to know how Anybody solve a problem. I know that for each
> step time, it use the min/max criterion to find the minimum muscle
> activity. Does it works like my Matlab routine ?
>
> I have compared the Matlab results from those obtained in Anybody from
> the same movement and in a lot of situation it gives me similar
> results. However, there is some differences that I’m not able to
> explain. Do you think that my Matlab routine is well made ?
>
> I send you my results (Matlab & AnyBody) for a particular case under
> (PO_Lemieux_shoulder_model_March_18). Just take a look and give me
> your idea about it.
>
> Thank you again.
>
> Pierre
>
> — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
> “AnyBody Support” <support@> wrote:
> >
> > Hi Pierre
> >
> >
> >
> > The contact force you have applied works on the contact segment. This
> > element will need to be carried by the driver otherwise the model
> will be
> > unbalanced and unable to solve; it can not be left unbalanced.
> >
> > The contact force you have applied can only do a pushing force, so the
> > reactions you will see in this contact driver will only be in one
> direction.
> >
> >
> >
> > The weak muscles also need to be there, there can not be dof in the
> model
> > which are unbalanced. Even if these are supposed to have force, it
> will lead
> > to numeric problems if they are left unbalanced.
> >
> >
> >
> > The reason why the weak muscles are needed must be a moment balance
> issue
> > there appears to be situation where the deltoid muscle it self can not
> > balance the upper arm. To me it sounds reasonable, these weak muscles
> > replicated the joint reactions up/down and these would always be non
> zero.
> > In you had more muscles in the model these might be able to
control this
> > up/down dofs., and the weak muscles could be excluded.
> >
> >
> >
> > Best regards
> >
> > Søren
> >
> > _____
> >
> > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> [mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com]
> On Behalf
> > Of Pierre-Olivier Lemieux
> > Sent: 20 February 2008 03:31
> > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> > Subject: [AnyScript] Re: shoulder 2D model
> >
> >
> >
> > Hi again Sylvain,
> > my model works well now with the Reaction.Type turned
> > on within the Contact driver. However, it makes this reaction able to
> > pull or push. For some set-up of the parameters of the ellipse, I got
> > negative forces for the Contact driver. It tells me that the permanent
> > contact with the acromion is not valid in all the case. Maybe I should
> > know the real displacement in term of the elliptic shape, prior to
> > proceed to the inverse analysis.
> >
> > Also, it is not only the deltoid that pulls on the humeral head, it is
> > also the WeakMuscles. These muscles are not there normally and when I
> > comment them, it gives me a “Muscle recruitment” error if the tStart
> > is 0. Thus, I want to know why the deltoid can’t do the complete
> > abduction by itself ?
> >
> > Thank you again.
> >
> > Pierre-Olivier
> >
> > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> > “AnyBody Support” <support@> wrote:
> > >
> > >
> > >
> > >
> > > Hi,
> > >
> > > The reason you cannot see the reaction force of
> > > ContactSurfaceLinPush is because the ContactSeg you created is not
> > > fully balanced. I was effectively talking about adding some
> > > AnyReacForce between the ContactSeg and the humerus, so that the
> > > ContactSeg is carried in all directions in term of forces and it
can
> > > transmit the reaction forces from the acromion point to the humerus
> > > head.
> > > But it’s not the only way to do it: by adding a prismatic joint you
> > > drive the ContactSeg in five directions, you just have to switch on
> > > the ReactionType of the Ellipse2ContactDriver to carry the load of
> > > the segment in the sliding direction also. Now you will be able to
> > > see appear the reaction force at the contact point.
> > >
> > > Best regards.
> > > Sylvain, AnyBody Support
> > >
> > >
> > >
> > >
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > “Pierre-Olivier Lemieux”
> > > <pothekid@> wrote:
> > > >
> > > > Hi Sylvain,
> > > > I’ve made the changes that you told me about, but I’m
> > > not
> > > > able to make my model works well. I don’t have any
> > > > “ContactSurfaceLinPush” reaction forces and friction forces.
> > > >
> > > > In Excel, I’ve calculated the displacement of the humeral head in
> > > term
> > > > of static equations for the abduction and put those values in the
> > > > model (“SliderDriver” and “AbductionDriver”). With these values,
> > > the
> > > > displacement is upward at the beginning of abduction and downward
> > > at
> > > > the end. So, the contact between the acromion and humeral head is
> > > not
> > > > always there. For this reason, the “ContactSurfaceLinPush” is very
> > > > useful for me.
> > > >
> > > > I’m not sure to understand well when you talk about adding some
> > > > reaction forces. Is it the “AnyReacForce” object ? If it is the
> > > case,
> > > > can you help me to write it correctly ?
> > > >
> > > > My new model is named “PO_Lemieux_shoulder_3”.
> > > >
> > > > thank you for your support.
> > > >
> > > > Pierre-Olivier
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > “AnyBody Support” <support@>
> > > wrote:
> > > > >
> > > > > Hi Pierre,
> > > > >
> > > > > In the file ContactSurfaceLinPush the object Base define the
> > > node
> > > > > that is applying the force. The object Target defines the node
> > > where
> > > > > the force is applied to. So by switching Base and Target object
> > > you
> > > > > are now applying the reaction forces from the center of the
> > > > > ellipsoid to p12. And the reaction forces are displayed in the
> > > Base
> > > > > frame (ellipsoid frame in this case) that’s why the arrows
> > > follow
> > > > > the abduction angle.
> > > > >
> > > > > This can be improved by applying the reaction forces from
P12 to
> > > a
> > > > > floating point on the external shape of the ellipsoid, where
the
> > > > > contact really occurs. You can create a segment (with no mass)
> > > that
> > > > > you drive to slide on the ellipsoid shape as you did with the
> > > > > AcromionDriver, and you set the distance between one point of
> > > this
> > > > > segment and P12 to 0. Then you have to create some reaction
> > > forces
> > > > > between this segment and the ellipsoid to transmit all the
> > > forces.
> > > > > So you will now have a floating contact point on the ellipsoid
> > > > > shape. By setting the Base to the new segment you should be
able
> > > to
> > > > > draw the reaction force vectors in the tangential plane of the
> > > shape.
> > > > >
> > > > > About the ContactRotPush, this applies a moment between two
> > > segments
> > > > > in contact. There are no friction forces, so this may not be
> > > what
> > > > > you need.
> > > > >
> > > > > For the external pushing force of ContactSurfaceLinPush you
talk
> > > > > about: this function actually use 5 muscles. One pushing in the
> > > > > normal direction of the surface and 4 others creating the
> > > friction
> > > > > forces in the plane of the surface combined with normal force;
> > > > > please see this link where there is a short description
> > > > >
> > > > >
> > > > >
> > > > > http://www.anybodyt
> <http://www.anybodyt <http://www.anybodyt
<http://www.anybodytech.com/116.0.html?&tx_ttnews>
ech.com/116.0.html?&tx_ttnews>
> ech.com/116.0.html?&tx_ttnews>
> > ech.com/116.0.html?&tx_ttnews[backPid]
> > > > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > > > >
> > > > >
> > > > >
> > > > > I understand you would like to activate only the friction
> > > muscles?
> > > > > That is not possible, the five muscles are linked and working
> > > > > together.
> > > > >
> > > > > And for the strange behaviour you noticed when you change the
> > > > > deltoid origin, well i don’t think it’s so strange. Because by
> > > > > changing the origin of the muscle you change the force it will
> > > have
> > > > > to develop, you also change the reaction forces in the contact
> > > > > point. But i think you don’t have a big interest in changing
the
> > > > > muscle origin and you should just keep it in its normal value.
> > > > >
> > > > > It’s correct that you did not find repository 7, it is not
> > > public, I
> > > > > forgot this, sorry. You should look in the repository 6, here
> > > you
> > > > > will find the file PedalDemoConditional in ARep\Aalborg.
> > > > >
> > > > > Best Regards
> > > > > Sylvain, AnyBodySupport
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> > ps.com, “Pierre-Olivier Lemieux”
> > > > > <pothekid@> wrote:
> > > > > >
> > > > > > Hi Sylvain,
> > > > > > thank you for your support. I’ve worked around
> > > > > > the “ContactLinePush” problem all the week-end and I’ve found
> > > that
> > > > > > by swithching the “Base” and “Target” objects, the friction
> > > > > appears.
> > > > > > However, it gives me too high results because the switch
mixed
> > > up
> > > > > > all the calculations. For exemple, the resulting friction
> > > force is
> > > > > > equal to the normal force, that is not correct. Also, the
> > > arrows
> > > > > > rotate following the abduction angle. Maybe a
“ContactRotPush”
> > > > > would
> > > > > > perform better ?
> > > > > > So, I guess that I’m on a good way to find a solution, but I
> > > still
> > > > > > need to understand how this script works, and what are the
> > > > > > accepted “RefFrame” for the “Base” and “Target” objects.
> > > > > >
> > > > > > Also, in the present case, there is an external pushing force
> > > > > > (ContactLinePush) on the shoulder upward during all abduction
> > > to
> > > > > > keep the contact between the acromion and the ellipse.
> > > > > > However, in the real case, the deltoid, while performing the
> > > > > > abduction alone, pulls on the humerus, instead
> > > > > of “ContactLinePush”,
> > > > > > and creates a contact force between the acromion and humeral
> > > head
> > > > > > (that should be the ContactLinePush). I’ve made an
> > > experimental
> > > > > set-
> > > > > > up that has shown me these results.
> > > > > >
> > > > > > Also, I’ve noticed another strange behavior. For exemple,
when
> > > I
> > > > > use
> > > > > > the acromion contact point P12 : (0,0.039,0) and deltoid
> > > origin
> > > > > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
> > > the
> > > > > > results are very different from using the same P12, but
> > > changing
> > > > > P8
> > > > > > to a closer distance (0,0.038,0) from P12. Note that the
first
> > > set
> > > > > > of values for P8 and P12 are the ones that I need.
> > > > > >
> > > > > > So, if you can help me understanding these problems, it would
> > > help
> > > > > > me a lot.
> > > > > >
> > > > > > Have a good week and thank you again.
> > > > > >
> > > > > > Pierre.
> > > > > >
> > > > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > > > >
> > > > > > — In anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> > ps.com, “AnyBody Support” <support@>
> > > > > > wrote:
> > > > > > >
> > > > > > > Hi Pierre-Olivier
> > > > > > >
> > > > > > > I will try to give you some more information on the file
> > > > > > > ContactSurfaceLinPush, this file can create a conditional
> > > > > contact
> > > > > > > with pushing muscles. If the two contact points are close
> > > enough
> > > > > > > (this distance is set by the user) then the muscles will
> > > have a
> > > > > > high
> > > > > > > strength and can create the contact force. If the two
> > > contact
> > > > > > points
> > > > > > > are to far from each other, the muscles will have no
> > > strength at
> > > > > > > all, and there can be no contact force.
> > > > > > > But I am not sure if this utility is useful for your model
> > > > > because
> > > > > > > you want a permanent contact of the humerus head?
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > The file also holds another utility which is the ability to
> > > > > create
> > > > > > > normal reaction force and friction force at the contact
> > > point.
> > > > > > This
> > > > > > > could maybe be interesting for your model. But you have to
> > > take
> > > > > > care
> > > > > > > to apply those forces to the acromion contact point. You
> > > > > actually
> > > > > > > applied them to the center of the humerus head instead of
> > > the
> > > > > > > contact point.
> > > > > > >
> > > > > > > I tried running the files you uploaded and it is working
> > > with
> > > > > the
> > > > > > > elliptic shape without doing any changes. However the model
> > > is
> > > > > now
> > > > > > > fully balanced and it is not possible anymore to see that
> > > point
> > > > > > you
> > > > > > > was interested in the last time (where the geometry cannot
> > > carry
> > > > > > the
> > > > > > > load) to plot the max abduction.
> > > > > > >
> > > > > > > So the solution of recreating the humeral contact
depends on
> > > the
> > > > > > > simulation you want to perform
> > > > > > >
> > > > > > > An example of using ContactSurfaceLinPush is available in
> > > the
> > > > > > > repository 7/Application/Examples/PedalDemoConditional,
as I
> > > > > > recall
> > > > > > > it the contact muscles are defined in the
JointAndDriver.any
> > > > > file.
> > > > > > >
> > > > > > > Best regards,
> > > > > > > Sylvain, AnyBody Support
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com, “Pierre-Olivier Lemieux”
> > > > > > > <pothekid@> wrote:
> > > > > > > >
> > > > > > > > Hi Soeren,
> > > > > > > > thank you for you recommendations. It seems to
> > > works
> > > > > > now
> > > > > > > for
> > > > > > > > the abduction. The deltoid activity is not what I want
> > > most,
> > > > > so
> > > > > > > I’ve
> > > > > > > > just commented it out.
> > > > > > > > I have an other question now. When I went to Aalborg,
John
> > > > > gave
> > > > > > me
> > > > > > > a
> > > > > > > > folder with some special scripts. One of these scripts is
> > > > > > > > “ContactSurfaceLinPush”. Like it says, it was to create a
> > > > > pushing
> > > > > > > > force on a contact node (I guess). However, I have some
> > > > > > > difficulties
> > > > > > > > to understand this script. Also, it works with a constant
> > > > > radius
> > > > > > > > humeral head, but not for my elliptic shape. Do you think
> > > this
> > > > > is
> > > > > > > > possible ?
> > > > > > > >
> > > > > > > > You can check the folder “AcromionHumerusContact” in the
> > > > > bottom
> > > > > > of
> > > > > > > my
> > > > > > > > main script (The file is “PO_Lemieux_shoulder2D.zip”). I
> > > will
> > > > > > send
> > > > > > > you
> > > > > > > > the special script, because I don’t know who has written
> > > it.
> > > > > > > >
> > > > > > > > Thank you again,
> > > > > > > >
> > > > > > > > Pierre-Olivier
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com, “AnyBody Support”
> > > <support@>
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > Hi Pierre
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I think there is a simple solution to your problem….
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > The reason why you are getting this strange solution is
> > > that
> > > > > > the
> > > > > > > > analysis
> > > > > > > > > has not been finished due to the inverse analysis, this
> > > is
> > > > > as
> > > > > > you
> > > > > > > > expect.
> > > > > > > > > The abduction angle you find by taking the max value of
> > > the
> > > > > > > > abduction angle
> > > > > > > > > function. This is fine if the analysis had finished
> > > correctly
> > > > > > > > because then
> > > > > > > > > it would look at all the values in the output function
> > > (nStep
> > > > > > > > values) and
> > > > > > > > > find the maximum one. When the analysis stops it will
> > > still
> > > > > > look
> > > > > > > at
> > > > > > > > these
> > > > > > > > > nStep values, but now some of these can
> > > contain “garbage”
> > > > > > > numbers.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > So the remedy in this case is to change the output
> > > function
> > > > > in
> > > > > > > the
> > > > > > > > > parameterstudy to the following
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > > > >
> > > > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > > > >
> > > > > > > > > };
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > This function do not take the max of any values it will
> > > just
> > > > > > > return
> > > > > > > > the last
> > > > > > > > > one … and this is what you would like in this case I
> > > guess.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > There will be the same kind of problems with your other
> > > > > output
> > > > > > > > function in
> > > > > > > > > the parameter study as I see it. The Abduction angle is
> > > > > > reported
> > > > > > > ok
> > > > > > > > but if
> > > > > > > > > you did the same with the deltoid activity it would not
> > > work
> > > > > I
> > > > > > > believe
> > > > > > > > > because this value is not calculated in the last step
> > > > > because
> > > > > > it
> > > > > > > > fails in
> > > > > > > > > inverse analysis, it goes ok with the abduction angle
> > > > > because
> > > > > > the
> > > > > > > > kinematics
> > > > > > > > > has been solved ok.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > So using the function
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > > > >
> > > > > > > > > Val = max(…Study.MaxActivity());
> > > > > > > > >
> > > > > > > > > };
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I am not really sure what you get since you take the
max
> > > of
> > > > > > > values
> > > > > > > > which are
> > > > > > > > > initialized, and this may give strange results. So I
> > > think
> > > > > you
> > > > > > > should
> > > > > > > > > consider exporting these numbers using an output file
> > > and
> > > > > then
> > > > > > > > process them
> > > > > > > > > externally.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > I hope this helps you move on.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Otherwise please write again.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Best regards
> > > > > > > > >
> > > > > > > > > Søren, AnyBody Support
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > _____
> > > > > > > > >
> > > > > > > > > From: anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com
> > > > > > > [mailto:anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com]
> > > > > > > > On Behalf
> > > > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > > > Sent: 07 February 2008 18:46
> > > > > > > > > To: anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > ps.com
> > > > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Hi guys,
> > > > > > > > > I’m still working with anybody to finish the first part
> > > of
> > > > > > > > > my simulations in 2 dimensions. After some revisions of
> > > the
> > > > > > > model,
> > > > > > > > > i’ve found a big error in it.
> > > > > > > > > If you don’t remember, I try to simulate the migration
> > > of
> > > > > the
> > > > > > > humeral
> > > > > > > > > head, in the case of a massive rotator cuff tear.
So, my
> > > > > model
> > > > > > > allows
> > > > > > > > > a translation of the humerus upward and a permanent
> > > contact
> > > > > of
> > > > > > > the
> > > > > > > > > prosthetic head on the acromion. This contact is
allowed
> > > by
> > > > > a
> > > > > > > driver
> > > > > > > > > (acromion driver), related to mathematical
properties of
> > > the
> > > > > > > elliptic
> > > > > > > > > shape. Because this contact is between a prosthesis and
> > > a
> > > > > > bone,
> > > > > > > it
> > > > > > > > > can’t supply a pulling force (just pushing force is
> > > allowed)
> > > > > > (It
> > > > > > > was
> > > > > > > > > the error !!). To correct that, I have switched off the
> > > > > > reaction
> > > > > > > of
> > > > > > > > > the driver and put a general “only pushing” muscle on
> > > it. So
> > > > > > > now, the
> > > > > > > > > abduction can goes until a certain degree and after
> > > that,
> > > > > the
> > > > > > > geometry
> > > > > > > > > is not able to carry the movement, and the simulation
> > > stops.
> > > > > > It
> > > > > > > is
> > > > > > > > > exactly that I want because it directly shows if the
> > > > > geometry
> > > > > > is
> > > > > > > > > efficient or not.
> > > > > > > > >
> > > > > > > > > My problem is when I try to perform a parametric
> > > simulation.
> > > > > I
> > > > > > > look on
> > > > > > > > > the maximum abduction reached during the simulation
> > > > > (kinematic
> > > > > > > > > rotational measure). The results are very strange and I
> > > > > think
> > > > > > > that
> > > > > > > > > they are not representative, probably because the
> > > simulation
> > > > > > > stops
> > > > > > > > > with an error. So, if I would get rid of this error by
> > > > > changing
> > > > > > > > > something on the model, it would maybe works.
> > > > > > > > >
> > > > > > > > > Maybe you have a little idea of what I should do (I
> > > > > hope …).
> > > > > > I
> > > > > > > send
> > > > > > > > > you my model and a picture of the results.
> > > > > > > > >
> > > > > > > > > Thank you in advance for your support and say hello to
> > > > > > everyone
> > > > > > > of
> > > > > > > > > Anybody for me :wink:
> > > > > > > > >
> > > > > > > > > bye bye
> > > > > > > > >
> > > > > > > > > Pierre
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > [Non-text portions of this message have been removed]
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
>
>
>
>
>
> [Non-text portions of this message have been removed]
>

[Non-text portions of this message have been removed]

Hi Soren,
there is no change of geometry during abduction. It’s surely
just a codec differences or the video encryption method in Matlab. The
geometry changes only during the parameters study.

My question was more about how Anybody do the calculations. Does it
make a static calculation or a dynamic one ? I mean, does the program
compute the minimal force to have equilibrium or a more complex
calculation ?

I ask this question because I have to understand how the program works
in order to be able to explain it in my paper.

Maybe you can refer me to an article in the Documentation repository
of Anybody that explain how AnyBody perfom the muscle calculation. I
know about the muscle recruitment, but not about the force itself.

I hope that is more clear for you.

Thank you again

Pierre

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Pierre
>
>
>
> I have seen the video and have a question about the GH head shape.
I do not
> understand why the GH head changes its shape while the analysis is
running,
> initially it has a long narrow shape and in the end it looks more
compressed
> in shape. Could it be graphic related and just something seen on
this video?
>
>
>
>
> In AnyBody such a change in the shape is not possible while the model is
> running, there would have to be several segments to replicate this.
>
>
>
> I understand your point of not replicating the same optimization in
AnyBody
> and Matlab, but if you plan to impose the results found in matlab on the
> AnyBody model it will be important that the models gives the same
results.
>
>
>
> Please write again if you have further questions, I was a bit unsure
if the
> last part of your posting was a question.
>
>
>
> Best regards
>
> Søren, AnyBody Support
>
>
>
>
>
> _____
>
> From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com]
On Behalf
> Of Pierre-Olivier Lemieux
> Sent: 19 March 2008 19:22
> To: anyscript@yahoogroups.com
> Subject: [AnyScript] Re: shoulder 2D model
>
>
>
> Hi Soren,
> the Matlab routine (which I’ve created entirely) is pretty
> simple. For each positions, it perform a calculation of the lever arm
> and the angle of the upper part of the muscle to separate the X and Y
> direction of the muscle force. When the contact between the prosthesis
> and the acromion occurs, the acromial reaction is possible and is
> drawn on the figure. There is no recruitment muscle because there is
> only one muscle in my routine (deltoid).
>
> The strength model is a constant force model. Like you can see, the
> muscle wrapping is done by using a thin rope between the origin and
> insertion point.
>
> I send you a little video of all that under (GH_Movement.zip).
>
> I understand your idea about creating the same routine in Anybody, but
> I don’t see any interest about doing that if the results between
> AnyBody and Matlab are the same.
>
> My idea was rather to find the correct movement pattern in term of
> prosthetic dimensions in Matlab and then put this movement into my
> AnyBody model, to find the deltoid forces. By obtaining the same
> results in AnyBody and Matlab, I think this is a way to verify the
> accuracy of my findings… What do you think about that ?
>
> I have try to get the same models between AnyBody and Matlab. To do
> so, I’ve put the static friction coefficient to 0 and put a constant
> force model for the deltoid. Thus, I think that the differences are
> just in the WeakMuscle definition. In my Matlab routine, there is no
> WeakMuscle because the acromion force give us a hint that something
> don’t work during the first abduction degrees (check the results.jpg).
>
> I hope that was more clear for you.
>
> Thank you very much.
>
> Pierre
>
> — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com,
> “AnyBody Support” <support@> wrote:
> >
> > Hi Pierre
> >
> >
> >
> > I think I understand what your algorithm is doing, it finds the
minimum
> > deltoid force and if there is a force unbalance it moves the humeral
> until
> > balance is obtained.
> >
> >
> >
> > Using the build in optimizer in AnyBody something similar should be
> possible
> > I guess, but it will be a slightly differently approach. Basically
> you will
> > need a model that will always be able to balance itself through
> artificial
> > joint reactions, but through the optimization you can change the
> motion so
> > that it tries to minimize those reactions.
> >
> >
> >
> > 1 you will need the extra muscle that ensures that a force balance can
> > always be obtained.
> >
> > 2 a design variable has to be defined, this is the translation,
> maybe this
> > should be done using an interpolation function…
> >
> > 3 an objective function has to be setup, here I would choose to
> minimize the
> > forces in the artificial muscles which you did not want to become
> active. So
> > you will be minimizing these reaction forces by moving the humeral
> head to
> > another position.
> >
> >
> >
> > There is a tutorial of parameter and optimization studies it might be
> > helpful.
> >
> >
> >
> > I can not judge if the MatLab code is ok sorry, I can think of the
> following
> > questions
> >
> > 1 Are there any differences in the models, that in anyway could
justify
> > these differences?
> >
> > 2 What about muscles wrapping, how is this done in MatLab…
> >
> > 3 Muscles strength models
> >
> > 4 Recruitment criteria?
> >
> > Etc…
> >
> >
> >
> >
> >
> > Best regards
> >
> > Søren, AnyBody Support
> >
> >
> >
> >
> >
> > _____
> >
> > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> [mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com]
> On Behalf
> > Of Pierre-Olivier Lemieux
> > Sent: 18 March 2008 19:18
> > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> > Subject: [AnyScript] Re: shoulder 2D model
> >
> >
> >
> > Hi Soren,
> > thank you for your support. Now I have a model that represent
> > more my pathology and I have also created a Matlab algorithm that find
> > the movement of the humeral head and import it into my AnyBody model.
> >
> > My Matlab algorithm compute the minimum force in the deltoid to
> > perform an increment of abduction with a moment balance (constant
> > velocity). If there is a non-equilibrium of the forces and a degree of
> > freedom in the direction of the force, there is automatically an
> > increment of displacement. This is the case for the vertical
> > displacement in my model.
> >
> > Now, I want to know how Anybody solve a problem. I know that for each
> > step time, it use the min/max criterion to find the minimum muscle
> > activity. Does it works like my Matlab routine ?
> >
> > I have compared the Matlab results from those obtained in Anybody from
> > the same movement and in a lot of situation it gives me similar
> > results. However, there is some differences that I’m not able to
> > explain. Do you think that my Matlab routine is well made ?
> >
> > I send you my results (Matlab & AnyBody) for a particular case under
> > (PO_Lemieux_shoulder_model_March_18). Just take a look and give me
> > your idea about it.
> >
> > Thank you again.
> >
> > Pierre
> >
> > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> > “AnyBody Support” <support@> wrote:
> > >
> > > Hi Pierre
> > >
> > >
> > >
> > > The contact force you have applied works on the contact segment.
This
> > > element will need to be carried by the driver otherwise the model
> > will be
> > > unbalanced and unable to solve; it can not be left unbalanced.
> > >
> > > The contact force you have applied can only do a pushing force,
so the
> > > reactions you will see in this contact driver will only be in one
> > direction.
> > >
> > >
> > >
> > > The weak muscles also need to be there, there can not be dof in the
> > model
> > > which are unbalanced. Even if these are supposed to have force, it
> > will lead
> > > to numeric problems if they are left unbalanced.
> > >
> > >
> > >
> > > The reason why the weak muscles are needed must be a moment balance
> > issue
> > > there appears to be situation where the deltoid muscle it self
can not
> > > balance the upper arm. To me it sounds reasonable, these weak
muscles
> > > replicated the joint reactions up/down and these would always be non
> > zero.
> > > In you had more muscles in the model these might be able to
> control this
> > > up/down dofs., and the weak muscles could be excluded.
> > >
> > >
> > >
> > > Best regards
> > >
> > > Søren
> > >
> > > _____
> > >
> > > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com
> > [mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com]
> > On Behalf
> > > Of Pierre-Olivier Lemieux
> > > Sent: 20 February 2008 03:31
> > > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
> > > Subject: [AnyScript] Re: shoulder 2D model
> > >
> > >
> > >
> > > Hi again Sylvain,
> > > my model works well now with the Reaction.Type turned
> > > on within the Contact driver. However, it makes this reaction
able to
> > > pull or push. For some set-up of the parameters of the ellipse,
I got
> > > negative forces for the Contact driver. It tells me that the
permanent
> > > contact with the acromion is not valid in all the case. Maybe I
should
> > > know the real displacement in term of the elliptic shape, prior to
> > > proceed to the inverse analysis.
> > >
> > > Also, it is not only the deltoid that pulls on the humeral head,
it is
> > > also the WeakMuscles. These muscles are not there normally and
when I
> > > comment them, it gives me a “Muscle recruitment” error if the tStart
> > > is 0. Thus, I want to know why the deltoid can’t do the complete
> > > abduction by itself ?
> > >
> > > Thank you again.
> > >
> > > Pierre-Olivier
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > > “AnyBody Support” <support@> wrote:
> > > >
> > > >
> > > >
> > > >
> > > > Hi,
> > > >
> > > > The reason you cannot see the reaction force of
> > > > ContactSurfaceLinPush is because the ContactSeg you created is
not
> > > > fully balanced. I was effectively talking about adding some
> > > > AnyReacForce between the ContactSeg and the humerus, so that the
> > > > ContactSeg is carried in all directions in term of forces and it
> can
> > > > transmit the reaction forces from the acromion point to the
humerus
> > > > head.
> > > > But it’s not the only way to do it: by adding a prismatic
joint you
> > > > drive the ContactSeg in five directions, you just have to
switch on
> > > > the ReactionType of the Ellipse2ContactDriver to carry the
load of
> > > > the segment in the sliding direction also. Now you will be
able to
> > > > see appear the reaction force at the contact point.
> > > >
> > > > Best regards.
> > > > Sylvain, AnyBody Support
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> > ps.com,
> > > “Pierre-Olivier Lemieux”
> > > > <pothekid@> wrote:
> > > > >
> > > > > Hi Sylvain,
> > > > > I’ve made the changes that you told me about, but I’m
> > > > not
> > > > > able to make my model works well. I don’t have any
> > > > > “ContactSurfaceLinPush” reaction forces and friction forces.
> > > > >
> > > > > In Excel, I’ve calculated the displacement of the humeral
head in
> > > > term
> > > > > of static equations for the abduction and put those values
in the
> > > > > model (“SliderDriver” and “AbductionDriver”). With these
values,
> > > > the
> > > > > displacement is upward at the beginning of abduction and
downward
> > > > at
> > > > > the end. So, the contact between the acromion and humeral
head is
> > > > not
> > > > > always there. For this reason, the “ContactSurfaceLinPush”
is very
> > > > > useful for me.
> > > > >
> > > > > I’m not sure to understand well when you talk about adding some
> > > > > reaction forces. Is it the “AnyReacForce” object ? If it is the
> > > > case,
> > > > > can you help me to write it correctly ?
> > > > >
> > > > > My new model is named “PO_Lemieux_shoulder_3”.
> > > > >
> > > > > thank you for your support.
> > > > >
> > > > > Pierre-Olivier
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> > ps.com,
> > > “AnyBody Support” <support@>
> > > > wrote:
> > > > > >
> > > > > > Hi Pierre,
> > > > > >
> > > > > > In the file ContactSurfaceLinPush the object Base define the
> > > > node
> > > > > > that is applying the force. The object Target defines the
node
> > > > where
> > > > > > the force is applied to. So by switching Base and Target
object
> > > > you
> > > > > > are now applying the reaction forces from the center of the
> > > > > > ellipsoid to p12. And the reaction forces are displayed in
the
> > > > Base
> > > > > > frame (ellipsoid frame in this case) that’s why the arrows
> > > > follow
> > > > > > the abduction angle.
> > > > > >
> > > > > > This can be improved by applying the reaction forces from
> P12 to
> > > > a
> > > > > > floating point on the external shape of the ellipsoid, where
> the
> > > > > > contact really occurs. You can create a segment (with no
mass)
> > > > that
> > > > > > you drive to slide on the ellipsoid shape as you did with the
> > > > > > AcromionDriver, and you set the distance between one point of
> > > > this
> > > > > > segment and P12 to 0. Then you have to create some reaction
> > > > forces
> > > > > > between this segment and the ellipsoid to transmit all the
> > > > forces.
> > > > > > So you will now have a floating contact point on the
ellipsoid
> > > > > > shape. By setting the Base to the new segment you should be
> able
> > > > to
> > > > > > draw the reaction force vectors in the tangential plane of
the
> > > > shape.
> > > > > >
> > > > > > About the ContactRotPush, this applies a moment between two
> > > > segments
> > > > > > in contact. There are no friction forces, so this may not be
> > > > what
> > > > > > you need.
> > > > > >
> > > > > > For the external pushing force of ContactSurfaceLinPush you
> talk
> > > > > > about: this function actually use 5 muscles. One pushing
in the
> > > > > > normal direction of the surface and 4 others creating the
> > > > friction
> > > > > > forces in the plane of the surface combined with normal
force;
> > > > > > please see this link where there is a short description
> > > > > >
> > > > > >
> > > > > >
> > > > > > http://www.anybodyt
> > <http://www.anybodyt <http://www.anybodyt
> <http://www.anybodytech.com/116.0.html?&tx_ttnews>
> ech.com/116.0.html?&tx_ttnews>
> > ech.com/116.0.html?&tx_ttnews>
> > > ech.com/116.0.html?&tx_ttnews[backPid]
> > > > > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > > > > >
> > > > > >
> > > > > >
> > > > > > I understand you would like to activate only the friction
> > > > muscles?
> > > > > > That is not possible, the five muscles are linked and working
> > > > > > together.
> > > > > >
> > > > > > And for the strange behaviour you noticed when you change the
> > > > > > deltoid origin, well i don’t think it’s so strange.
Because by
> > > > > > changing the origin of the muscle you change the force it
will
> > > > have
> > > > > > to develop, you also change the reaction forces in the
contact
> > > > > > point. But i think you don’t have a big interest in changing
> the
> > > > > > muscle origin and you should just keep it in its normal value.
> > > > > >
> > > > > > It’s correct that you did not find repository 7, it is not
> > > > public, I
> > > > > > forgot this, sorry. You should look in the repository 6, here
> > > > you
> > > > > > will find the file PedalDemoConditional in ARep\Aalborg.
> > > > > >
> > > > > > Best Regards
> > > > > > Sylvain, AnyBodySupport
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > — In anyscript@yahoogrou
<mailto:anyscript%40yahoogroups.com>
> > > ps.com, “Pierre-Olivier Lemieux”
> > > > > > <pothekid@> wrote:
> > > > > > >
> > > > > > > Hi Sylvain,
> > > > > > > thank you for your support. I’ve worked around
> > > > > > > the “ContactLinePush” problem all the week-end and I’ve
found
> > > > that
> > > > > > > by swithching the “Base” and “Target” objects, the friction
> > > > > > appears.
> > > > > > > However, it gives me too high results because the switch
> mixed
> > > > up
> > > > > > > all the calculations. For exemple, the resulting friction
> > > > force is
> > > > > > > equal to the normal force, that is not correct. Also, the
> > > > arrows
> > > > > > > rotate following the abduction angle. Maybe a
> “ContactRotPush”
> > > > > > would
> > > > > > > perform better ?
> > > > > > > So, I guess that I’m on a good way to find a solution,
but I
> > > > still
> > > > > > > need to understand how this script works, and what are the
> > > > > > > accepted “RefFrame” for the “Base” and “Target” objects.
> > > > > > >
> > > > > > > Also, in the present case, there is an external pushing
force
> > > > > > > (ContactLinePush) on the shoulder upward during all
abduction
> > > > to
> > > > > > > keep the contact between the acromion and the ellipse.
> > > > > > > However, in the real case, the deltoid, while performing
the
> > > > > > > abduction alone, pulls on the humerus, instead
> > > > > > of “ContactLinePush”,
> > > > > > > and creates a contact force between the acromion and
humeral
> > > > head
> > > > > > > (that should be the ContactLinePush). I’ve made an
> > > > experimental
> > > > > > set-
> > > > > > > up that has shown me these results.
> > > > > > >
> > > > > > > Also, I’ve noticed another strange behavior. For exemple,
> when
> > > > I
> > > > > > use
> > > > > > > the acromion contact point P12 : (0,0.039,0) and deltoid
> > > > origin
> > > > > > > point P8 : (0,0.050,0) and use the “ContactLinPush” script,
> > > > the
> > > > > > > results are very different from using the same P12, but
> > > > changing
> > > > > > P8
> > > > > > > to a closer distance (0,0.038,0) from P12. Note that the
> first
> > > > set
> > > > > > > of values for P8 and P12 are the ones that I need.
> > > > > > >
> > > > > > > So, if you can help me understanding these problems, it
would
> > > > help
> > > > > > > me a lot.
> > > > > > >
> > > > > > > Have a good week and thank you again.
> > > > > > >
> > > > > > > Pierre.
> > > > > > >
> > > > > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > > > > >
> > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > > ps.com, “AnyBody Support” <support@>
> > > > > > > wrote:
> > > > > > > >
> > > > > > > > Hi Pierre-Olivier
> > > > > > > >
> > > > > > > > I will try to give you some more information on the file
> > > > > > > > ContactSurfaceLinPush, this file can create a conditional
> > > > > > contact
> > > > > > > > with pushing muscles. If the two contact points are close
> > > > enough
> > > > > > > > (this distance is set by the user) then the muscles will
> > > > have a
> > > > > > > high
> > > > > > > > strength and can create the contact force. If the two
> > > > contact
> > > > > > > points
> > > > > > > > are to far from each other, the muscles will have no
> > > > strength at
> > > > > > > > all, and there can be no contact force.
> > > > > > > > But I am not sure if this utility is useful for your
model
> > > > > > because
> > > > > > > > you want a permanent contact of the humerus head?
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > The file also holds another utility which is the
ability to
> > > > > > create
> > > > > > > > normal reaction force and friction force at the contact
> > > > point.
> > > > > > > This
> > > > > > > > could maybe be interesting for your model. But you
have to
> > > > take
> > > > > > > care
> > > > > > > > to apply those forces to the acromion contact point. You
> > > > > > actually
> > > > > > > > applied them to the center of the humerus head instead of
> > > > the
> > > > > > > > contact point.
> > > > > > > >
> > > > > > > > I tried running the files you uploaded and it is working
> > > > with
> > > > > > the
> > > > > > > > elliptic shape without doing any changes. However the
model
> > > > is
> > > > > > now
> > > > > > > > fully balanced and it is not possible anymore to see that
> > > > point
> > > > > > > you
> > > > > > > > was interested in the last time (where the geometry
cannot
> > > > carry
> > > > > > > the
> > > > > > > > load) to plot the max abduction.
> > > > > > > >
> > > > > > > > So the solution of recreating the humeral contact
> depends on
> > > > the
> > > > > > > > simulation you want to perform
> > > > > > > >
> > > > > > > > An example of using ContactSurfaceLinPush is available in
> > > > the
> > > > > > > > repository 7/Application/Examples/PedalDemoConditional,
> as I
> > > > > > > recall
> > > > > > > > it the contact muscles are defined in the
> JointAndDriver.any
> > > > > > file.
> > > > > > > >
> > > > > > > > Best regards,
> > > > > > > > Sylvain, AnyBody Support
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > — In anyscript@yahoogrou
> > <mailto:anyscript%40yahoogroups.com>
> > > ps.com, “Pierre-Olivier Lemieux”
> > > > > > > > <pothekid@> wrote:
> > > > > > > > >
> > > > > > > > > Hi Soeren,
> > > > > > > > > thank you for you recommendations. It seems to
> > > > works
> > > > > > > now
> > > > > > > > for
> > > > > > > > > the abduction. The deltoid activity is not what I want
> > > > most,
> > > > > > so
> > > > > > > > I’ve
> > > > > > > > > just commented it out.
> > > > > > > > > I have an other question now. When I went to Aalborg,
> John
> > > > > > gave
> > > > > > > me
> > > > > > > > a
> > > > > > > > > folder with some special scripts. One of these
scripts is
> > > > > > > > > “ContactSurfaceLinPush”. Like it says, it was to
create a
> > > > > > pushing
> > > > > > > > > force on a contact node (I guess). However, I have some
> > > > > > > > difficulties
> > > > > > > > > to understand this script. Also, it works with a
constant
> > > > > > radius
> > > > > > > > > humeral head, but not for my elliptic shape. Do you
think
> > > > this
> > > > > > is
> > > > > > > > > possible ?
> > > > > > > > >
> > > > > > > > > You can check the folder “AcromionHumerusContact” in
the
> > > > > > bottom
> > > > > > > of
> > > > > > > > my
> > > > > > > > > main script (The file is
“PO_Lemieux_shoulder2D.zip”). I
> > > > will
> > > > > > > send
> > > > > > > > you
> > > > > > > > > the special script, because I don’t know who has
written
> > > > it.
> > > > > > > > >
> > > > > > > > > Thank you again,
> > > > > > > > >
> > > > > > > > > Pierre-Olivier
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > — In anyscript@yahoogrou
> > <mailto:anyscript%40yahoogroups.com>
> > > ps.com, “AnyBody Support”
> > > > <support@>
> > > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > Hi Pierre
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > I think there is a simple solution to your problem….
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > The reason why you are getting this strange
solution is
> > > > that
> > > > > > > the
> > > > > > > > > analysis
> > > > > > > > > > has not been finished due to the inverse analysis,
this
> > > > is
> > > > > > as
> > > > > > > you
> > > > > > > > > expect.
> > > > > > > > > > The abduction angle you find by taking the max
value of
> > > > the
> > > > > > > > > abduction angle
> > > > > > > > > > function. This is fine if the analysis had finished
> > > > correctly
> > > > > > > > > because then
> > > > > > > > > > it would look at all the values in the output
function
> > > > (nStep
> > > > > > > > > values) and
> > > > > > > > > > find the maximum one. When the analysis stops it will
> > > > still
> > > > > > > look
> > > > > > > > at
> > > > > > > > > these
> > > > > > > > > > nStep values, but now some of these can
> > > > contain “garbage”
> > > > > > > > numbers.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > So the remedy in this case is to change the output
> > > > function
> > > > > > in
> > > > > > > > the
> > > > > > > > > > parameterstudy to the following
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > > > > >
> > > > > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > > > > >
> > > > > > > > > > };
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > This function do not take the max of any values it
will
> > > > just
> > > > > > > > return
> > > > > > > > > the last
> > > > > > > > > > one … and this is what you would like in this case I
> > > > guess.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > There will be the same kind of problems with your
other
> > > > > > output
> > > > > > > > > function in
> > > > > > > > > > the parameter study as I see it. The Abduction
angle is
> > > > > > > reported
> > > > > > > > ok
> > > > > > > > > but if
> > > > > > > > > > you did the same with the deltoid activity it
would not
> > > > work
> > > > > > I
> > > > > > > > believe
> > > > > > > > > > because this value is not calculated in the last step
> > > > > > because
> > > > > > > it
> > > > > > > > > fails in
> > > > > > > > > > inverse analysis, it goes ok with the abduction angle
> > > > > > because
> > > > > > > the
> > > > > > > > > kinematics
> > > > > > > > > > has been solved ok.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > So using the function
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > > > > >
> > > > > > > > > > Val = max(…Study.MaxActivity());
> > > > > > > > > >
> > > > > > > > > > };
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > I am not really sure what you get since you take the
> max
> > > > of
> > > > > > > > values
> > > > > > > > > which are
> > > > > > > > > > initialized, and this may give strange results. So I
> > > > think
> > > > > > you
> > > > > > > > should
> > > > > > > > > > consider exporting these numbers using an output file
> > > > and
> > > > > > then
> > > > > > > > > process them
> > > > > > > > > > externally.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > I hope this helps you move on.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Otherwise please write again.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Best regards
> > > > > > > > > >
> > > > > > > > > > Søren, AnyBody Support
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > _____
> > > > > > > > > >
> > > > > > > > > > From: anyscript@yahoogrou
> > <mailto:anyscript%40yahoogroups.com>
> > > ps.com
> > > > > > > > [mailto:anyscript@yahoogrou
> > <mailto:anyscript%40yahoogroups.com>
> > > ps.com]
> > > > > > > > > On Behalf
> > > > > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > > > > Sent: 07 February 2008 18:46
> > > > > > > > > > To: anyscript@yahoogrou
> > <mailto:anyscript%40yahoogroups.com>
> > > ps.com
> > > > > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Hi guys,
> > > > > > > > > > I’m still working with anybody to finish the first
part
> > > > of
> > > > > > > > > > my simulations in 2 dimensions. After some
revisions of
> > > > the
> > > > > > > > model,
> > > > > > > > > > i’ve found a big error in it.
> > > > > > > > > > If you don’t remember, I try to simulate the
migration
> > > > of
> > > > > > the
> > > > > > > > humeral
> > > > > > > > > > head, in the case of a massive rotator cuff tear.
> So, my
> > > > > > model
> > > > > > > > allows
> > > > > > > > > > a translation of the humerus upward and a permanent
> > > > contact
> > > > > > of
> > > > > > > > the
> > > > > > > > > > prosthetic head on the acromion. This contact is
> allowed
> > > > by
> > > > > > a
> > > > > > > > driver
> > > > > > > > > > (acromion driver), related to mathematical
> properties of
> > > > the
> > > > > > > > elliptic
> > > > > > > > > > shape. Because this contact is between a
prosthesis and
> > > > a
> > > > > > > bone,
> > > > > > > > it
> > > > > > > > > > can’t supply a pulling force (just pushing force is
> > > > allowed)
> > > > > > > (It
> > > > > > > > was
> > > > > > > > > > the error !!). To correct that, I have switched
off the
> > > > > > > reaction
> > > > > > > > of
> > > > > > > > > > the driver and put a general “only pushing” muscle on
> > > > it. So
> > > > > > > > now, the
> > > > > > > > > > abduction can goes until a certain degree and after
> > > > that,
> > > > > > the
> > > > > > > > geometry
> > > > > > > > > > is not able to carry the movement, and the simulation
> > > > stops.
> > > > > > > It
> > > > > > > > is
> > > > > > > > > > exactly that I want because it directly shows if the
> > > > > > geometry
> > > > > > > is
> > > > > > > > > > efficient or not.
> > > > > > > > > >
> > > > > > > > > > My problem is when I try to perform a parametric
> > > > simulation.
> > > > > > I
> > > > > > > > look on
> > > > > > > > > > the maximum abduction reached during the simulation
> > > > > > (kinematic
> > > > > > > > > > rotational measure). The results are very strange
and I
> > > > > > think
> > > > > > > > that
> > > > > > > > > > they are not representative, probably because the
> > > > simulation
> > > > > > > > stops
> > > > > > > > > > with an error. So, if I would get rid of this
error by
> > > > > > changing
> > > > > > > > > > something on the model, it would maybe works.
> > > > > > > > > >
> > > > > > > > > > Maybe you have a little idea of what I should do (I
> > > > > > hope …).
> > > > > > > I
> > > > > > > > send
> > > > > > > > > > you my model and a picture of the results.
> > > > > > > > > >
> > > > > > > > > > Thank you in advance for your support and say
hello to
> > > > > > > everyone
> > > > > > > > of
> > > > > > > > > > Anybody for me :wink:
> > > > > > > > > >
> > > > > > > > > > bye bye
> > > > > > > > > >
> > > > > > > > > > Pierre
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > [Non-text portions of this message have been removed]
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> > > [Non-text portions of this message have been removed]
> > >
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
>
>
>
>
>
> [Non-text portions of this message have been removed]
>

Hi Pierre,

There is a good explanation of how AnyBody perform the muscle
calculation in this tutorial:
http://www.anybodytech.com/691.0.html

Hope you will find there what you want.

Best regards,
Sylvain, AnyBody Support.

— In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
<pothekid@…> wrote:
>
> Hi Soren,
> there is no change of geometry during abduction. It’s surely
> just a codec differences or the video encryption method in Matlab.
The
> geometry changes only during the parameters study.
>
> My question was more about how Anybody do the calculations. Does it
> make a static calculation or a dynamic one ? I mean, does the
program
> compute the minimal force to have equilibrium or a more complex
> calculation ?
>
> I ask this question because I have to understand how the program
works
> in order to be able to explain it in my paper.
>
> Maybe you can refer me to an article in the Documentation repository
> of Anybody that explain how AnyBody perfom the muscle calculation. I
> know about the muscle recruitment, but not about the force itself.
>
> I hope that is more clear for you.
>
> Thank you again
>
> Pierre
>
> — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
wrote:
> >
> > Hi Pierre
> >
> >
> >
> > I have seen the video and have a question about the GH head
shape.
> I do not
> > understand why the GH head changes its shape while the analysis is
> running,
> > initially it has a long narrow shape and in the end it looks more
> compressed
> > in shape. Could it be graphic related and just something seen on
> this video?
> >
> >
> >
> >
> > In AnyBody such a change in the shape is not possible while the
model is
> > running, there would have to be several segments to replicate
this.
> >
> >
> >
> > I understand your point of not replicating the same optimization
in
> AnyBody
> > and Matlab, but if you plan to impose the results found in matlab
on the
> > AnyBody model it will be important that the models gives the same
> results.
> >
> >
> >
> > Please write again if you have further questions, I was a bit
unsure
> if the
> > last part of your posting was a question.
> >
> >
> >
> > Best regards
> >
> > Søren, AnyBody Support
> >
> >
> >
> >
> >
> > _____
> >
> > From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com]
> On Behalf
> > Of Pierre-Olivier Lemieux
> > Sent: 19 March 2008 19:22
> > To: anyscript@yahoogroups.com
> > Subject: [AnyScript] Re: shoulder 2D model
> >
> >
> >
> > Hi Soren,
> > the Matlab routine (which I’ve created entirely) is pretty
> > simple. For each positions, it perform a calculation of the lever
arm
> > and the angle of the upper part of the muscle to separate the X
and Y
> > direction of the muscle force. When the contact between the
prosthesis
> > and the acromion occurs, the acromial reaction is possible and is
> > drawn on the figure. There is no recruitment muscle because there
is
> > only one muscle in my routine (deltoid).
> >
> > The strength model is a constant force model. Like you can see,
the
> > muscle wrapping is done by using a thin rope between the origin
and
> > insertion point.
> >
> > I send you a little video of all that under (GH_Movement.zip).
> >
> > I understand your idea about creating the same routine in
Anybody, but
> > I don’t see any interest about doing that if the results between
> > AnyBody and Matlab are the same.
> >
> > My idea was rather to find the correct movement pattern in term of
> > prosthetic dimensions in Matlab and then put this movement into my
> > AnyBody model, to find the deltoid forces. By obtaining the same
> > results in AnyBody and Matlab, I think this is a way to verify the
> > accuracy of my findings… What do you think about that ?
> >
> > I have try to get the same models between AnyBody and Matlab. To
do
> > so, I’ve put the static friction coefficient to 0 and put a
constant
> > force model for the deltoid. Thus, I think that the differences
are
> > just in the WeakMuscle definition. In my Matlab routine, there is
no
> > WeakMuscle because the acromion force give us a hint that
something
> > don’t work during the first abduction degrees (check the
results.jpg).
> >
> > I hope that was more clear for you.
> >
> > Thank you very much.
> >
> > Pierre
> >
> > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com,
> > “AnyBody Support” <support@> wrote:
> > >
> > > Hi Pierre
> > >
> > >
> > >
> > > I think I understand what your algorithm is doing, it finds the
> minimum
> > > deltoid force and if there is a force unbalance it moves the
humeral
> > until
> > > balance is obtained.
> > >
> > >
> > >
> > > Using the build in optimizer in AnyBody something similar
should be
> > possible
> > > I guess, but it will be a slightly differently approach.
Basically
> > you will
> > > need a model that will always be able to balance itself through
> > artificial
> > > joint reactions, but through the optimization you can change the
> > motion so
> > > that it tries to minimize those reactions.
> > >
> > >
> > >
> > > 1 you will need the extra muscle that ensures that a force
balance can
> > > always be obtained.
> > >
> > > 2 a design variable has to be defined, this is the translation,
> > maybe this
> > > should be done using an interpolation function…
> > >
> > > 3 an objective function has to be setup, here I would choose to
> > minimize the
> > > forces in the artificial muscles which you did not want to
become
> > active. So
> > > you will be minimizing these reaction forces by moving the
humeral
> > head to
> > > another position.
> > >
> > >
> > >
> > > There is a tutorial of parameter and optimization studies it
might be
> > > helpful.
> > >
> > >
> > >
> > > I can not judge if the MatLab code is ok sorry, I can think of
the
> > following
> > > questions
> > >
> > > 1 Are there any differences in the models, that in anyway could
> justify
> > > these differences?
> > >
> > > 2 What about muscles wrapping, how is this done in MatLab…
> > >
> > > 3 Muscles strength models
> > >
> > > 4 Recruitment criteria?
> > >
> > > Etc…
> > >
> > >
> > >
> > >
> > >
> > > Best regards
> > >
> > > Søren, AnyBody Support
> > >
> > >
> > >
> > >
> > >
> > > _____
> > >
> > > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com
> > [mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com]
> > On Behalf
> > > Of Pierre-Olivier Lemieux
> > > Sent: 18 March 2008 19:18
> > > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com
> > > Subject: [AnyScript] Re: shoulder 2D model
> > >
> > >
> > >
> > > Hi Soren,
> > > thank you for your support. Now I have a model that represent
> > > more my pathology and I have also created a Matlab algorithm
that find
> > > the movement of the humeral head and import it into my AnyBody
model.
> > >
> > > My Matlab algorithm compute the minimum force in the deltoid to
> > > perform an increment of abduction with a moment balance
(constant
> > > velocity). If there is a non-equilibrium of the forces and a
degree of
> > > freedom in the direction of the force, there is automatically an
> > > increment of displacement. This is the case for the vertical
> > > displacement in my model.
> > >
> > > Now, I want to know how Anybody solve a problem. I know that
for each
> > > step time, it use the min/max criterion to find the minimum
muscle
> > > activity. Does it works like my Matlab routine ?
> > >
> > > I have compared the Matlab results from those obtained in
Anybody from
> > > the same movement and in a lot of situation it gives me similar
> > > results. However, there is some differences that I’m not able to
> > > explain. Do you think that my Matlab routine is well made ?
> > >
> > > I send you my results (Matlab & AnyBody) for a particular case
under
> > > (PO_Lemieux_shoulder_model_March_18). Just take a look and give
me
> > > your idea about it.
> > >
> > > Thank you again.
> > >
> > > Pierre
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > > “AnyBody Support” <support@> wrote:
> > > >
> > > > Hi Pierre
> > > >
> > > >
> > > >
> > > > The contact force you have applied works on the contact
segment.
> This
> > > > element will need to be carried by the driver otherwise the
model
> > > will be
> > > > unbalanced and unable to solve; it can not be left unbalanced.
> > > >
> > > > The contact force you have applied can only do a pushing
force,
> so the
> > > > reactions you will see in this contact driver will only be in
one
> > > direction.
> > > >
> > > >
> > > >
> > > > The weak muscles also need to be there, there can not be dof
in the
> > > model
> > > > which are unbalanced. Even if these are supposed to have
force, it
> > > will lead
> > > > to numeric problems if they are left unbalanced.
> > > >
> > > >
> > > >
> > > > The reason why the weak muscles are needed must be a moment
balance
> > > issue
> > > > there appears to be situation where the deltoid muscle it self
> can not
> > > > balance the upper arm. To me it sounds reasonable, these weak
> muscles
> > > > replicated the joint reactions up/down and these would always
be non
> > > zero.
> > > > In you had more muscles in the model these might be able to
> > control this
> > > > up/down dofs., and the weak muscles could be excluded.
> > > >
> > > >
> > > >
> > > > Best regards
> > > >
> > > > Søren
> > > >
> > > > _____
> > > >
> > > > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com
> > > [mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com]
> > > On Behalf
> > > > Of Pierre-Olivier Lemieux
> > > > Sent: 20 February 2008 03:31
> > > > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
ps.com
> > > > Subject: [AnyScript] Re: shoulder 2D model
> > > >
> > > >
> > > >
> > > > Hi again Sylvain,
> > > > my model works well now with the Reaction.Type turned
> > > > on within the Contact driver. However, it makes this reaction
> able to
> > > > pull or push. For some set-up of the parameters of the
ellipse,
> I got
> > > > negative forces for the Contact driver. It tells me that the
> permanent
> > > > contact with the acromion is not valid in all the case. Maybe
I
> should
> > > > know the real displacement in term of the elliptic shape,
prior to
> > > > proceed to the inverse analysis.
> > > >
> > > > Also, it is not only the deltoid that pulls on the humeral
head,
> it is
> > > > also the WeakMuscles. These muscles are not there normally and
> when I
> > > > comment them, it gives me a “Muscle recruitment” error if the
tStart
> > > > is 0. Thus, I want to know why the deltoid can’t do the
complete
> > > > abduction by itself ?
> > > >
> > > > Thank you again.
> > > >
> > > > Pierre-Olivier
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%
40yahoogroups.com>
> > ps.com,
> > > > “AnyBody Support” <support@> wrote:
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Hi,
> > > > >
> > > > > The reason you cannot see the reaction force of
> > > > > ContactSurfaceLinPush is because the ContactSeg you created
is
> not
> > > > > fully balanced. I was effectively talking about adding some
> > > > > AnyReacForce between the ContactSeg and the humerus, so
that the
> > > > > ContactSeg is carried in all directions in term of forces
and it
> > can
> > > > > transmit the reaction forces from the acromion point to the
> humerus
> > > > > head.
> > > > > But it’s not the only way to do it: by adding a prismatic
> joint you
> > > > > drive the ContactSeg in five directions, you just have to
> switch on
> > > > > the ReactionType of the Ellipse2ContactDriver to carry the
> load of
> > > > > the segment in the sliding direction also. Now you will be
> able to
> > > > > see appear the reaction force at the contact point.
> > > > >
> > > > > Best regards.
> > > > > Sylvain, AnyBody Support
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%
40yahoogroups.com>
> > > ps.com,
> > > > “Pierre-Olivier Lemieux”
> > > > > <pothekid@> wrote:
> > > > > >
> > > > > > Hi Sylvain,
> > > > > > I’ve made the changes that you told me about, but I’m
> > > > > not
> > > > > > able to make my model works well. I don’t have any
> > > > > > “ContactSurfaceLinPush” reaction forces and friction
forces.
> > > > > >
> > > > > > In Excel, I’ve calculated the displacement of the humeral
> head in
> > > > > term
> > > > > > of static equations for the abduction and put those values
> in the
> > > > > > model (“SliderDriver” and “AbductionDriver”). With these
> values,
> > > > > the
> > > > > > displacement is upward at the beginning of abduction and
> downward
> > > > > at
> > > > > > the end. So, the contact between the acromion and humeral
> head is
> > > > > not
> > > > > > always there. For this reason, the “ContactSurfaceLinPush”
> is very
> > > > > > useful for me.
> > > > > >
> > > > > > I’m not sure to understand well when you talk about
adding some
> > > > > > reaction forces. Is it the “AnyReacForce” object ? If it
is the
> > > > > case,
> > > > > > can you help me to write it correctly ?
> > > > > >
> > > > > > My new model is named “PO_Lemieux_shoulder_3”.
> > > > > >
> > > > > > thank you for your support.
> > > > > >
> > > > > > Pierre-Olivier
> > > > > >
> > > > > > — In anyscript@yahoogrou <mailto:anyscript%
40yahoogroups.com>
> > > ps.com,
> > > > “AnyBody Support” <support@>
> > > > > wrote:
> > > > > > >
> > > > > > > Hi Pierre,
> > > > > > >
> > > > > > > In the file ContactSurfaceLinPush the object Base
define the
> > > > > node
> > > > > > > that is applying the force. The object Target defines
the
> node
> > > > > where
> > > > > > > the force is applied to. So by switching Base and Target
> object
> > > > > you
> > > > > > > are now applying the reaction forces from the center of
the
> > > > > > > ellipsoid to p12. And the reaction forces are displayed
in
> the
> > > > > Base
> > > > > > > frame (ellipsoid frame in this case) that’s why the
arrows
> > > > > follow
> > > > > > > the abduction angle.
> > > > > > >
> > > > > > > This can be improved by applying the reaction forces
from
> > P12 to
> > > > > a
> > > > > > > floating point on the external shape of the ellipsoid,
where
> > the
> > > > > > > contact really occurs. You can create a segment (with no
> mass)
> > > > > that
> > > > > > > you drive to slide on the ellipsoid shape as you did
with the
> > > > > > > AcromionDriver, and you set the distance between one
point of
> > > > > this
> > > > > > > segment and P12 to 0. Then you have to create some
reaction
> > > > > forces
> > > > > > > between this segment and the ellipsoid to transmit all
the
> > > > > forces.
> > > > > > > So you will now have a floating contact point on the
> ellipsoid
> > > > > > > shape. By setting the Base to the new segment you
should be
> > able
> > > > > to
> > > > > > > draw the reaction force vectors in the tangential plane
of
> the
> > > > > shape.
> > > > > > >
> > > > > > > About the ContactRotPush, this applies a moment between
two
> > > > > segments
> > > > > > > in contact. There are no friction forces, so this may
not be
> > > > > what
> > > > > > > you need.
> > > > > > >
> > > > > > > For the external pushing force of ContactSurfaceLinPush
you
> > talk
> > > > > > > about: this function actually use 5 muscles. One pushing
> in the
> > > > > > > normal direction of the surface and 4 others creating
the
> > > > > friction
> > > > > > > forces in the plane of the surface combined with normal
> force;
> > > > > > > please see this link where there is a short description
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > http://www.anybodyt
> > > <http://www.anybodyt <http://www.anybodyt
> > <http://www.anybodytech.com/116.0.html?&tx_ttnews>
> > ech.com/116.0.html?&tx_ttnews>
> > > ech.com/116.0.html?&tx_ttnews>
> > > > ech.com/116.0.html?&tx_ttnews[backPid]
> > > > > > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > I understand you would like to activate only the
friction
> > > > > muscles?
> > > > > > > That is not possible, the five muscles are linked and
working
> > > > > > > together.
> > > > > > >
> > > > > > > And for the strange behaviour you noticed when you
change the
> > > > > > > deltoid origin, well i don’t think it’s so strange.
> Because by
> > > > > > > changing the origin of the muscle you change the force
it
> will
> > > > > have
> > > > > > > to develop, you also change the reaction forces in the
> contact
> > > > > > > point. But i think you don’t have a big interest in
changing
> > the
> > > > > > > muscle origin and you should just keep it in its normal
value.
> > > > > > >
> > > > > > > It’s correct that you did not find repository 7, it is
not
> > > > > public, I
> > > > > > > forgot this, sorry. You should look in the repository
6, here
> > > > > you
> > > > > > > will find the file PedalDemoConditional in ARep\Aalborg.
> > > > > > >
> > > > > > > Best Regards
> > > > > > > Sylvain, AnyBodySupport
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > — In anyscript@yahoogrou
> <mailto:anyscript%40yahoogroups.com>
> > > > ps.com, “Pierre-Olivier Lemieux”
> > > > > > > <pothekid@> wrote:
> > > > > > > >
> > > > > > > > Hi Sylvain,
> > > > > > > > thank you for your support. I’ve worked around
> > > > > > > > the “ContactLinePush” problem all the week-end and
I’ve
> found
> > > > > that
> > > > > > > > by swithching the “Base” and “Target” objects, the
friction
> > > > > > > appears.
> > > > > > > > However, it gives me too high results because the
switch
> > mixed
> > > > > up
> > > > > > > > all the calculations. For exemple, the resulting
friction
> > > > > force is
> > > > > > > > equal to the normal force, that is not correct. Also,
the
> > > > > arrows
> > > > > > > > rotate following the abduction angle. Maybe a
> > “ContactRotPush”
> > > > > > > would
> > > > > > > > perform better ?
> > > > > > > > So, I guess that I’m on a good way to find a solution,
> but I
> > > > > still
> > > > > > > > need to understand how this script works, and what
are the
> > > > > > > > accepted “RefFrame” for the “Base” and “Target”
objects.
> > > > > > > >
> > > > > > > > Also, in the present case, there is an external
pushing
> force
> > > > > > > > (ContactLinePush) on the shoulder upward during all
> abduction
> > > > > to
> > > > > > > > keep the contact between the acromion and the
ellipse.
> > > > > > > > However, in the real case, the deltoid, while
performing
> the
> > > > > > > > abduction alone, pulls on the humerus, instead
> > > > > > > of “ContactLinePush”,
> > > > > > > > and creates a contact force between the acromion and
> humeral
> > > > > head
> > > > > > > > (that should be the ContactLinePush). I’ve made an
> > > > > experimental
> > > > > > > set-
> > > > > > > > up that has shown me these results.
> > > > > > > >
> > > > > > > > Also, I’ve noticed another strange behavior. For
exemple,
> > when
> > > > > I
> > > > > > > use
> > > > > > > > the acromion contact point P12 : (0,0.039,0) and
deltoid
> > > > > origin
> > > > > > > > point P8 : (0,0.050,0) and use the “ContactLinPush”
script,
> > > > > the
> > > > > > > > results are very different from using the same P12,
but
> > > > > changing
> > > > > > > P8
> > > > > > > > to a closer distance (0,0.038,0) from P12. Note that
the
> > first
> > > > > set
> > > > > > > > of values for P8 and P12 are the ones that I need.
> > > > > > > >
> > > > > > > > So, if you can help me understanding these problems,
it
> would
> > > > > help
> > > > > > > > me a lot.
> > > > > > > >
> > > > > > > > Have a good week and thank you again.
> > > > > > > >
> > > > > > > > Pierre.
> > > > > > > >
> > > > > > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > > > > > >
> > > > > > > > — In anyscript@yahoogrou
> > <mailto:anyscript%40yahoogroups.com>
> > > > ps.com, “AnyBody Support” <support@>
> > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > Hi Pierre-Olivier
> > > > > > > > >
> > > > > > > > > I will try to give you some more information on the
file
> > > > > > > > > ContactSurfaceLinPush, this file can create a
conditional
> > > > > > > contact
> > > > > > > > > with pushing muscles. If the two contact points are
close
> > > > > enough
> > > > > > > > > (this distance is set by the user) then the muscles
will
> > > > > have a
> > > > > > > > high
> > > > > > > > > strength and can create the contact force. If the
two
> > > > > contact
> > > > > > > > points
> > > > > > > > > are to far from each other, the muscles will have
no
> > > > > strength at
> > > > > > > > > all, and there can be no contact force.
> > > > > > > > > But I am not sure if this utility is useful for your
> model
> > > > > > > because
> > > > > > > > > you want a permanent contact of the humerus head?
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > The file also holds another utility which is the
> ability to
> > > > > > > create
> > > > > > > > > normal reaction force and friction force at the
contact
> > > > > point.
> > > > > > > > This
> > > > > > > > > could maybe be interesting for your model. But you
> have to
> > > > > take
> > > > > > > > care
> > > > > > > > > to apply those forces to the acromion contact
point. You
> > > > > > > actually
> > > > > > > > > applied them to the center of the humerus head
instead of
> > > > > the
> > > > > > > > > contact point.
> > > > > > > > >
> > > > > > > > > I tried running the files you uploaded and it is
working
> > > > > with
> > > > > > > the
> > > > > > > > > elliptic shape without doing any changes. However
the
> model
> > > > > is
> > > > > > > now
> > > > > > > > > fully balanced and it is not possible anymore to
see that
> > > > > point
> > > > > > > > you
> > > > > > > > > was interested in the last time (where the geometry
> cannot
> > > > > carry
> > > > > > > > the
> > > > > > > > > load) to plot the max abduction.
> > > > > > > > >
> > > > > > > > > So the solution of recreating the humeral contact
> > depends on
> > > > > the
> > > > > > > > > simulation you want to perform
> > > > > > > > >
> > > > > > > > > An example of using ContactSurfaceLinPush is
available in
> > > > > the
> > > > > > > > > repository
7/Application/Examples/PedalDemoConditional,
> > as I
> > > > > > > > recall
> > > > > > > > > it the contact muscles are defined in the
> > JointAndDriver.any
> > > > > > > file.
> > > > > > > > >
> > > > > > > > > Best regards,
> > > > > > > > > Sylvain, AnyBody Support
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > — In anyscript@yahoogrou
> > > <mailto:anyscript%40yahoogroups.com>
> > > > ps.com, “Pierre-Olivier Lemieux”
> > > > > > > > > <pothekid@> wrote:
> > > > > > > > > >
> > > > > > > > > > Hi Soeren,
> > > > > > > > > > thank you for you recommendations. It seems to
> > > > > works
> > > > > > > > now
> > > > > > > > > for
> > > > > > > > > > the abduction. The deltoid activity is not what I
want
> > > > > most,
> > > > > > > so
> > > > > > > > > I’ve
> > > > > > > > > > just commented it out.
> > > > > > > > > > I have an other question now. When I went to
Aalborg,
> > John
> > > > > > > gave
> > > > > > > > me
> > > > > > > > > a
> > > > > > > > > > folder with some special scripts. One of these
> scripts is
> > > > > > > > > > “ContactSurfaceLinPush”. Like it says, it was to
> create a
> > > > > > > pushing
> > > > > > > > > > force on a contact node (I guess). However, I
have some
> > > > > > > > > difficulties
> > > > > > > > > > to understand this script. Also, it works with a
> constant
> > > > > > > radius
> > > > > > > > > > humeral head, but not for my elliptic shape. Do
you
> think
> > > > > this
> > > > > > > is
> > > > > > > > > > possible ?
> > > > > > > > > >
> > > > > > > > > > You can check the folder “AcromionHumerusContact”
in
> the
> > > > > > > bottom
> > > > > > > > of
> > > > > > > > > my
> > > > > > > > > > main script (The file is
> “PO_Lemieux_shoulder2D.zip”). I
> > > > > will
> > > > > > > > send
> > > > > > > > > you
> > > > > > > > > > the special script, because I don’t know who has
> written
> > > > > it.
> > > > > > > > > >
> > > > > > > > > > Thank you again,
> > > > > > > > > >
> > > > > > > > > > Pierre-Olivier
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > — In anyscript@yahoogrou
> > > <mailto:anyscript%40yahoogroups.com>
> > > > ps.com, “AnyBody Support”
> > > > > <support@>
> > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > Hi Pierre
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > I think there is a simple solution to your
problem….
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > The reason why you are getting this strange
> solution is
> > > > > that
> > > > > > > > the
> > > > > > > > > > analysis
> > > > > > > > > > > has not been finished due to the inverse
analysis,
> this
> > > > > is
> > > > > > > as
> > > > > > > > you
> > > > > > > > > > expect.
> > > > > > > > > > > The abduction angle you find by taking the max
> value of
> > > > > the
> > > > > > > > > > abduction angle
> > > > > > > > > > > function. This is fine if the analysis had
finished
> > > > > correctly
> > > > > > > > > > because then
> > > > > > > > > > > it would look at all the values in the output
> function
> > > > > (nStep
> > > > > > > > > > values) and
> > > > > > > > > > > find the maximum one. When the analysis stops
it will
> > > > > still
> > > > > > > > look
> > > > > > > > > at
> > > > > > > > > > these
> > > > > > > > > > > nStep values, but now some of these can
> > > > > contain “garbage”
> > > > > > > > > numbers.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > So the remedy in this case is to change the
output
> > > > > function
> > > > > > > in
> > > > > > > > > the
> > > > > > > > > > > parameterstudy to the following
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > > > > > >
> > > > > > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > > > > > >
> > > > > > > > > > > };
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > This function do not take the max of any values
it
> will
> > > > > just
> > > > > > > > > return
> > > > > > > > > > the last
> > > > > > > > > > > one … and this is what you would like in this
case I
> > > > > guess.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > There will be the same kind of problems with
your
> other
> > > > > > > output
> > > > > > > > > > function in
> > > > > > > > > > > the parameter study as I see it. The Abduction
> angle is
> > > > > > > > reported
> > > > > > > > > ok
> > > > > > > > > > but if
> > > > > > > > > > > you did the same with the deltoid activity it
> would not
> > > > > work
> > > > > > > I
> > > > > > > > > believe
> > > > > > > > > > > because this value is not calculated in the
last step
> > > > > > > because
> > > > > > > > it
> > > > > > > > > > fails in
> > > > > > > > > > > inverse analysis, it goes ok with the abduction
angle
> > > > > > > because
> > > > > > > > the
> > > > > > > > > > kinematics
> > > > > > > > > > > has been solved ok.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > So using the function
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > > > > > >
> > > > > > > > > > > Val = max(…Study.MaxActivity());
> > > > > > > > > > >
> > > > > > > > > > > };
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > I am not really sure what you get since you
take the
> > max
> > > > > of
> > > > > > > > > values
> > > > > > > > > > which are
> > > > > > > > > > > initialized, and this may give strange results.
So I
> > > > > think
> > > > > > > you
> > > > > > > > > should
> > > > > > > > > > > consider exporting these numbers using an
output file
> > > > > and
> > > > > > > then
> > > > > > > > > > process them
> > > > > > > > > > > externally.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > I hope this helps you move on.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Otherwise please write again.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Best regards
> > > > > > > > > > >
> > > > > > > > > > > Søren, AnyBody Support
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > _____
> > > > > > > > > > >
> > > > > > > > > > > From: anyscript@yahoogrou
> > > <mailto:anyscript%40yahoogroups.com>
> > > > ps.com
> > > > > > > > > [mailto:anyscript@yahoogrou
> > > <mailto:anyscript%40yahoogroups.com>
> > > > ps.com]
> > > > > > > > > > On Behalf
> > > > > > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > > > > > Sent: 07 February 2008 18:46
> > > > > > > > > > > To: anyscript@yahoogrou
> > > <mailto:anyscript%40yahoogroups.com>
> > > > ps.com
> > > > > > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Hi guys,
> > > > > > > > > > > I’m still working with anybody to finish the
first
> part
> > > > > of
> > > > > > > > > > > my simulations in 2 dimensions. After some
> revisions of
> > > > > the
> > > > > > > > > model,
> > > > > > > > > > > i’ve found a big error in it.
> > > > > > > > > > > If you don’t remember, I try to simulate the
> migration
> > > > > of
> > > > > > > the
> > > > > > > > > humeral
> > > > > > > > > > > head, in the case of a massive rotator cuff
tear.
> > So, my
> > > > > > > model
> > > > > > > > > allows
> > > > > > > > > > > a translation of the humerus upward and a
permanent
> > > > > contact
> > > > > > > of
> > > > > > > > > the
> > > > > > > > > > > prosthetic head on the acromion. This contact is
> > allowed
> > > > > by
> > > > > > > a
> > > > > > > > > driver
> > > > > > > > > > > (acromion driver), related to mathematical
> > properties of
> > > > > the
> > > > > > > > > elliptic
> > > > > > > > > > > shape. Because this contact is between a
> prosthesis and
> > > > > a
> > > > > > > > bone,
> > > > > > > > > it
> > > > > > > > > > > can’t supply a pulling force (just pushing
force is
> > > > > allowed)
> > > > > > > > (It
> > > > > > > > > was
> > > > > > > > > > > the error !!). To correct that, I have switched
> off the
> > > > > > > > reaction
> > > > > > > > > of
> > > > > > > > > > > the driver and put a general “only pushing”
muscle on
> > > > > it. So
> > > > > > > > > now, the
> > > > > > > > > > > abduction can goes until a certain degree and
after
> > > > > that,
> > > > > > > the
> > > > > > > > > geometry
> > > > > > > > > > > is not able to carry the movement, and the
simulation
> > > > > stops.
> > > > > > > > It
> > > > > > > > > is
> > > > > > > > > > > exactly that I want because it directly shows
if the
> > > > > > > geometry
> > > > > > > > is
> > > > > > > > > > > efficient or not.
> > > > > > > > > > >
> > > > > > > > > > > My problem is when I try to perform a
parametric
> > > > > simulation.
> > > > > > > I
> > > > > > > > > look on
> > > > > > > > > > > the maximum abduction reached during the
simulation
> > > > > > > (kinematic
> > > > > > > > > > > rotational measure). The results are very
strange
> and I
> > > > > > > think
> > > > > > > > > that
> > > > > > > > > > > they are not representative, probably because
the
> > > > > simulation
> > > > > > > > > stops
> > > > > > > > > > > with an error. So, if I would get rid of this
> error by
> > > > > > > changing
> > > > > > > > > > > something on the model, it would maybe works.
> > > > > > > > > > >
> > > > > > > > > > > Maybe you have a little idea of what I should
do (I
> > > > > > > hope …).
> > > > > > > > I
> > > > > > > > > send
> > > > > > > > > > > you my model and a picture of the results.
> > > > > > > > > > >
> > > > > > > > > > > Thank you in advance for your support and say
> hello to
> > > > > > > > everyone
> > > > > > > > > of
> > > > > > > > > > > Anybody for me :wink:
> > > > > > > > > > >
> > > > > > > > > > > bye bye
> > > > > > > > > > >
> > > > > > > > > > > Pierre
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > [Non-text portions of this message have been
removed]
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > [Non-text portions of this message have been removed]
> > > >
> > >
> > >
> > >
> > >
> > >
> > > [Non-text portions of this message have been removed]
> > >
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
>

Hi Sylvain,
I’ve found what I was searching for in the Nikravesh
textbook (Planar multibody dynamics) that you have put the reference
under FAQs in the publications section.

This book explain how to apply joint coordinate method works and also
the kinematic equations. It also explain how to apply the forward and
inverse dynamic.

Do you think that is feasible to create a 2D model in Matlab that work
in forward dynamic ? Do you work on that for further version ?

My idea is to find a movement for the shoulder that rely upon the
deltoid activity, knowing that this muscle is the only one that makes
the movement in case of a massive rotator cuff tear.

Thank you for you support

Pierre

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Pierre,
>
> There is a good explanation of how AnyBody perform the muscle
> calculation in this tutorial:
> http://www.anybodytech.com/691.0.html
>
> Hope you will find there what you want.
>
> Best regards,
> Sylvain, AnyBody Support.
>
>
>
>
> — In anyscript@yahoogroups.com, “Pierre-Olivier Lemieux”
> <pothekid@> wrote:
> >
> > Hi Soren,
> > there is no change of geometry during abduction. It’s surely
> > just a codec differences or the video encryption method in Matlab.
> The
> > geometry changes only during the parameters study.
> >
> > My question was more about how Anybody do the calculations. Does it
> > make a static calculation or a dynamic one ? I mean, does the
> program
> > compute the minimal force to have equilibrium or a more complex
> > calculation ?
> >
> > I ask this question because I have to understand how the program
> works
> > in order to be able to explain it in my paper.
> >
> > Maybe you can refer me to an article in the Documentation repository
> > of Anybody that explain how AnyBody perfom the muscle calculation. I
> > know about the muscle recruitment, but not about the force itself.
> >
> > I hope that is more clear for you.
> >
> > Thank you again
> >
> > Pierre
> >
> > — In anyscript@yahoogroups.com, “AnyBody Support” <support@>
> wrote:
> > >
> > > Hi Pierre
> > >
> > >
> > >
> > > I have seen the video and have a question about the GH head
> shape.
> > I do not
> > > understand why the GH head changes its shape while the analysis is
> > running,
> > > initially it has a long narrow shape and in the end it looks more
> > compressed
> > > in shape. Could it be graphic related and just something seen on
> > this video?
> > >
> > >
> > >
> > >
> > > In AnyBody such a change in the shape is not possible while the
> model is
> > > running, there would have to be several segments to replicate
> this.
> > >
> > >
> > >
> > > I understand your point of not replicating the same optimization
> in
> > AnyBody
> > > and Matlab, but if you plan to impose the results found in matlab
> on the
> > > AnyBody model it will be important that the models gives the same
> > results.
> > >
> > >
> > >
> > > Please write again if you have further questions, I was a bit
> unsure
> > if the
> > > last part of your posting was a question.
> > >
> > >
> > >
> > > Best regards
> > >
> > > Søren, AnyBody Support
> > >
> > >
> > >
> > >
> > >
> > > _____
> > >
> > > From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com]
> > On Behalf
> > > Of Pierre-Olivier Lemieux
> > > Sent: 19 March 2008 19:22
> > > To: anyscript@yahoogroups.com
> > > Subject: [AnyScript] Re: shoulder 2D model
> > >
> > >
> > >
> > > Hi Soren,
> > > the Matlab routine (which I’ve created entirely) is pretty
> > > simple. For each positions, it perform a calculation of the lever
> arm
> > > and the angle of the upper part of the muscle to separate the X
> and Y
> > > direction of the muscle force. When the contact between the
> prosthesis
> > > and the acromion occurs, the acromial reaction is possible and is
> > > drawn on the figure. There is no recruitment muscle because there
> is
> > > only one muscle in my routine (deltoid).
> > >
> > > The strength model is a constant force model. Like you can see,
> the
> > > muscle wrapping is done by using a thin rope between the origin
> and
> > > insertion point.
> > >
> > > I send you a little video of all that under (GH_Movement.zip).
> > >
> > > I understand your idea about creating the same routine in
> Anybody, but
> > > I don’t see any interest about doing that if the results between
> > > AnyBody and Matlab are the same.
> > >
> > > My idea was rather to find the correct movement pattern in term of
> > > prosthetic dimensions in Matlab and then put this movement into my
> > > AnyBody model, to find the deltoid forces. By obtaining the same
> > > results in AnyBody and Matlab, I think this is a way to verify the
> > > accuracy of my findings… What do you think about that ?
> > >
> > > I have try to get the same models between AnyBody and Matlab. To
> do
> > > so, I’ve put the static friction coefficient to 0 and put a
> constant
> > > force model for the deltoid. Thus, I think that the differences
> are
> > > just in the WeakMuscle definition. In my Matlab routine, there is
> no
> > > WeakMuscle because the acromion force give us a hint that
> something
> > > don’t work during the first abduction degrees (check the
> results.jpg).
> > >
> > > I hope that was more clear for you.
> > >
> > > Thank you very much.
> > >
> > > Pierre
> > >
> > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com,
> > > “AnyBody Support” <support@> wrote:
> > > >
> > > > Hi Pierre
> > > >
> > > >
> > > >
> > > > I think I understand what your algorithm is doing, it finds the
> > minimum
> > > > deltoid force and if there is a force unbalance it moves the
> humeral
> > > until
> > > > balance is obtained.
> > > >
> > > >
> > > >
> > > > Using the build in optimizer in AnyBody something similar
> should be
> > > possible
> > > > I guess, but it will be a slightly differently approach.
> Basically
> > > you will
> > > > need a model that will always be able to balance itself through
> > > artificial
> > > > joint reactions, but through the optimization you can change the
> > > motion so
> > > > that it tries to minimize those reactions.
> > > >
> > > >
> > > >
> > > > 1 you will need the extra muscle that ensures that a force
> balance can
> > > > always be obtained.
> > > >
> > > > 2 a design variable has to be defined, this is the translation,
> > > maybe this
> > > > should be done using an interpolation function…
> > > >
> > > > 3 an objective function has to be setup, here I would choose to
> > > minimize the
> > > > forces in the artificial muscles which you did not want to
> become
> > > active. So
> > > > you will be minimizing these reaction forces by moving the
> humeral
> > > head to
> > > > another position.
> > > >
> > > >
> > > >
> > > > There is a tutorial of parameter and optimization studies it
> might be
> > > > helpful.
> > > >
> > > >
> > > >
> > > > I can not judge if the MatLab code is ok sorry, I can think of
> the
> > > following
> > > > questions
> > > >
> > > > 1 Are there any differences in the models, that in anyway could
> > justify
> > > > these differences?
> > > >
> > > > 2 What about muscles wrapping, how is this done in MatLab…
> > > >
> > > > 3 Muscles strength models
> > > >
> > > > 4 Recruitment criteria?
> > > >
> > > > Etc…
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Best regards
> > > >
> > > > Søren, AnyBody Support
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > _____
> > > >
> > > > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com
> > > [mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com]
> > > On Behalf
> > > > Of Pierre-Olivier Lemieux
> > > > Sent: 18 March 2008 19:18
> > > > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com
> > > > Subject: [AnyScript] Re: shoulder 2D model
> > > >
> > > >
> > > >
> > > > Hi Soren,
> > > > thank you for your support. Now I have a model that represent
> > > > more my pathology and I have also created a Matlab algorithm
> that find
> > > > the movement of the humeral head and import it into my AnyBody
> model.
> > > >
> > > > My Matlab algorithm compute the minimum force in the deltoid to
> > > > perform an increment of abduction with a moment balance
> (constant
> > > > velocity). If there is a non-equilibrium of the forces and a
> degree of
> > > > freedom in the direction of the force, there is automatically an
> > > > increment of displacement. This is the case for the vertical
> > > > displacement in my model.
> > > >
> > > > Now, I want to know how Anybody solve a problem. I know that
> for each
> > > > step time, it use the min/max criterion to find the minimum
> muscle
> > > > activity. Does it works like my Matlab routine ?
> > > >
> > > > I have compared the Matlab results from those obtained in
> Anybody from
> > > > the same movement and in a lot of situation it gives me similar
> > > > results. However, there is some differences that I’m not able to
> > > > explain. Do you think that my Matlab routine is well made ?
> > > >
> > > > I send you my results (Matlab & AnyBody) for a particular case
> under
> > > > (PO_Lemieux_shoulder_model_March_18). Just take a look and give
> me
> > > > your idea about it.
> > > >
> > > > Thank you again.
> > > >
> > > > Pierre
> > > >
> > > > — In anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> > ps.com,
> > > > “AnyBody Support” <support@> wrote:
> > > > >
> > > > > Hi Pierre
> > > > >
> > > > >
> > > > >
> > > > > The contact force you have applied works on the contact
> segment.
> > This
> > > > > element will need to be carried by the driver otherwise the
> model
> > > > will be
> > > > > unbalanced and unable to solve; it can not be left unbalanced.
> > > > >
> > > > > The contact force you have applied can only do a pushing
> force,
> > so the
> > > > > reactions you will see in this contact driver will only be in
> one
> > > > direction.
> > > > >
> > > > >
> > > > >
> > > > > The weak muscles also need to be there, there can not be dof
> in the
> > > > model
> > > > > which are unbalanced. Even if these are supposed to have
> force, it
> > > > will lead
> > > > > to numeric problems if they are left unbalanced.
> > > > >
> > > > >
> > > > >
> > > > > The reason why the weak muscles are needed must be a moment
> balance
> > > > issue
> > > > > there appears to be situation where the deltoid muscle it self
> > can not
> > > > > balance the upper arm. To me it sounds reasonable, these weak
> > muscles
> > > > > replicated the joint reactions up/down and these would always
> be non
> > > > zero.
> > > > > In you had more muscles in the model these might be able to
> > > control this
> > > > > up/down dofs., and the weak muscles could be excluded.
> > > > >
> > > > >
> > > > >
> > > > > Best regards
> > > > >
> > > > > Søren
> > > > >
> > > > > _____
> > > > >
> > > > > From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> > ps.com
> > > > [mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> > ps.com]
> > > > On Behalf
> > > > > Of Pierre-Olivier Lemieux
> > > > > Sent: 20 February 2008 03:31
> > > > > To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com>
> ps.com
> > > > > Subject: [AnyScript] Re: shoulder 2D model
> > > > >
> > > > >
> > > > >
> > > > > Hi again Sylvain,
> > > > > my model works well now with the Reaction.Type turned
> > > > > on within the Contact driver. However, it makes this reaction
> > able to
> > > > > pull or push. For some set-up of the parameters of the
> ellipse,
> > I got
> > > > > negative forces for the Contact driver. It tells me that the
> > permanent
> > > > > contact with the acromion is not valid in all the case. Maybe
> I
> > should
> > > > > know the real displacement in term of the elliptic shape,
> prior to
> > > > > proceed to the inverse analysis.
> > > > >
> > > > > Also, it is not only the deltoid that pulls on the humeral
> head,
> > it is
> > > > > also the WeakMuscles. These muscles are not there normally and
> > when I
> > > > > comment them, it gives me a “Muscle recruitment” error if the
> tStart
> > > > > is 0. Thus, I want to know why the deltoid can’t do the
> complete
> > > > > abduction by itself ?
> > > > >
> > > > > Thank you again.
> > > > >
> > > > > Pierre-Olivier
> > > > >
> > > > > — In anyscript@yahoogrou <mailto:anyscript%
> 40yahoogroups.com>
> > > ps.com,
> > > > > “AnyBody Support” <support@> wrote:
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > Hi,
> > > > > >
> > > > > > The reason you cannot see the reaction force of
> > > > > > ContactSurfaceLinPush is because the ContactSeg you created
> is
> > not
> > > > > > fully balanced. I was effectively talking about adding some
> > > > > > AnyReacForce between the ContactSeg and the humerus, so
> that the
> > > > > > ContactSeg is carried in all directions in term of forces
> and it
> > > can
> > > > > > transmit the reaction forces from the acromion point to the
> > humerus
> > > > > > head.
> > > > > > But it’s not the only way to do it: by adding a prismatic
> > joint you
> > > > > > drive the ContactSeg in five directions, you just have to
> > switch on
> > > > > > the ReactionType of the Ellipse2ContactDriver to carry the
> > load of
> > > > > > the segment in the sliding direction also. Now you will be
> > able to
> > > > > > see appear the reaction force at the contact point.
> > > > > >
> > > > > > Best regards.
> > > > > > Sylvain, AnyBody Support
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > — In anyscript@yahoogrou <mailto:anyscript%
> 40yahoogroups.com>
> > > > ps.com,
> > > > > “Pierre-Olivier Lemieux”
> > > > > > <pothekid@> wrote:
> > > > > > >
> > > > > > > Hi Sylvain,
> > > > > > > I’ve made the changes that you told me about, but I’m
> > > > > > not
> > > > > > > able to make my model works well. I don’t have any
> > > > > > > “ContactSurfaceLinPush” reaction forces and friction
> forces.
> > > > > > >
> > > > > > > In Excel, I’ve calculated the displacement of the humeral
> > head in
> > > > > > term
> > > > > > > of static equations for the abduction and put those values
> > in the
> > > > > > > model (“SliderDriver” and “AbductionDriver”). With these
> > values,
> > > > > > the
> > > > > > > displacement is upward at the beginning of abduction and
> > downward
> > > > > > at
> > > > > > > the end. So, the contact between the acromion and humeral
> > head is
> > > > > > not
> > > > > > > always there. For this reason, the “ContactSurfaceLinPush”
> > is very
> > > > > > > useful for me.
> > > > > > >
> > > > > > > I’m not sure to understand well when you talk about
> adding some
> > > > > > > reaction forces. Is it the “AnyReacForce” object ? If it
> is the
> > > > > > case,
> > > > > > > can you help me to write it correctly ?
> > > > > > >
> > > > > > > My new model is named “PO_Lemieux_shoulder_3”.
> > > > > > >
> > > > > > > thank you for your support.
> > > > > > >
> > > > > > > Pierre-Olivier
> > > > > > >
> > > > > > > — In anyscript@yahoogrou <mailto:anyscript%
> 40yahoogroups.com>
> > > > ps.com,
> > > > > “AnyBody Support” <support@>
> > > > > > wrote:
> > > > > > > >
> > > > > > > > Hi Pierre,
> > > > > > > >
> > > > > > > > In the file ContactSurfaceLinPush the object Base
> define the
> > > > > > node
> > > > > > > > that is applying the force. The object Target defines
> the
> > node
> > > > > > where
> > > > > > > > the force is applied to. So by switching Base and Target
> > object
> > > > > > you
> > > > > > > > are now applying the reaction forces from the center of
> the
> > > > > > > > ellipsoid to p12. And the reaction forces are displayed
> in
> > the
> > > > > > Base
> > > > > > > > frame (ellipsoid frame in this case) that’s why the
> arrows
> > > > > > follow
> > > > > > > > the abduction angle.
> > > > > > > >
> > > > > > > > This can be improved by applying the reaction forces
> from
> > > P12 to
> > > > > > a
> > > > > > > > floating point on the external shape of the ellipsoid,
> where
> > > the
> > > > > > > > contact really occurs. You can create a segment (with no
> > mass)
> > > > > > that
> > > > > > > > you drive to slide on the ellipsoid shape as you did
> with the
> > > > > > > > AcromionDriver, and you set the distance between one
> point of
> > > > > > this
> > > > > > > > segment and P12 to 0. Then you have to create some
> reaction
> > > > > > forces
> > > > > > > > between this segment and the ellipsoid to transmit all
> the
> > > > > > forces.
> > > > > > > > So you will now have a floating contact point on the
> > ellipsoid
> > > > > > > > shape. By setting the Base to the new segment you
> should be
> > > able
> > > > > > to
> > > > > > > > draw the reaction force vectors in the tangential plane
> of
> > the
> > > > > > shape.
> > > > > > > >
> > > > > > > > About the ContactRotPush, this applies a moment between
> two
> > > > > > segments
> > > > > > > > in contact. There are no friction forces, so this may
> not be
> > > > > > what
> > > > > > > > you need.
> > > > > > > >
> > > > > > > > For the external pushing force of ContactSurfaceLinPush
> you
> > > talk
> > > > > > > > about: this function actually use 5 muscles. One pushing
> > in the
> > > > > > > > normal direction of the surface and 4 others creating
> the
> > > > > > friction
> > > > > > > > forces in the plane of the surface combined with normal
> > force;
> > > > > > > > please see this link where there is a short description
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > http://www.anybodyt
> > > > <http://www.anybodyt <http://www.anybodyt
> > > <http://www.anybodytech.com/116.0.html?&tx_ttnews>
> > > ech.com/116.0.html?&tx_ttnews>
> > > > ech.com/116.0.html?&tx_ttnews>
> > > > > ech.com/116.0.html?&tx_ttnews[backPid]
> > > > > > > > =37&tx_ttnews[tt_news]=23&cHash=c92c2826e9
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I understand you would like to activate only the
> friction
> > > > > > muscles?
> > > > > > > > That is not possible, the five muscles are linked and
> working
> > > > > > > > together.
> > > > > > > >
> > > > > > > > And for the strange behaviour you noticed when you
> change the
> > > > > > > > deltoid origin, well i don’t think it’s so strange.
> > Because by
> > > > > > > > changing the origin of the muscle you change the force
> it
> > will
> > > > > > have
> > > > > > > > to develop, you also change the reaction forces in the
> > contact
> > > > > > > > point. But i think you don’t have a big interest in
> changing
> > > the
> > > > > > > > muscle origin and you should just keep it in its normal
> value.
> > > > > > > >
> > > > > > > > It’s correct that you did not find repository 7, it is
> not
> > > > > > public, I
> > > > > > > > forgot this, sorry. You should look in the repository
> 6, here
> > > > > > you
> > > > > > > > will find the file PedalDemoConditional in ARep\Aalborg.
> > > > > > > >
> > > > > > > > Best Regards
> > > > > > > > Sylvain, AnyBodySupport
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > — In anyscript@yahoogrou
> > <mailto:anyscript%40yahoogroups.com>
> > > > > ps.com, “Pierre-Olivier Lemieux”
> > > > > > > > <pothekid@> wrote:
> > > > > > > > >
> > > > > > > > > Hi Sylvain,
> > > > > > > > > thank you for your support. I’ve worked around
> > > > > > > > > the “ContactLinePush” problem all the week-end and
> I’ve
> > found
> > > > > > that
> > > > > > > > > by swithching the “Base” and “Target” objects, the
> friction
> > > > > > > > appears.
> > > > > > > > > However, it gives me too high results because the
> switch
> > > mixed
> > > > > > up
> > > > > > > > > all the calculations. For exemple, the resulting
> friction
> > > > > > force is
> > > > > > > > > equal to the normal force, that is not correct. Also,
> the
> > > > > > arrows
> > > > > > > > > rotate following the abduction angle. Maybe a
> > > “ContactRotPush”
> > > > > > > > would
> > > > > > > > > perform better ?
> > > > > > > > > So, I guess that I’m on a good way to find a solution,
> > but I
> > > > > > still
> > > > > > > > > need to understand how this script works, and what
> are the
> > > > > > > > > accepted “RefFrame” for the “Base” and “Target”
> objects.
> > > > > > > > >
> > > > > > > > > Also, in the present case, there is an external
> pushing
> > force
> > > > > > > > > (ContactLinePush) on the shoulder upward during all
> > abduction
> > > > > > to
> > > > > > > > > keep the contact between the acromion and the
> ellipse.
> > > > > > > > > However, in the real case, the deltoid, while
> performing
> > the
> > > > > > > > > abduction alone, pulls on the humerus, instead
> > > > > > > > of “ContactLinePush”,
> > > > > > > > > and creates a contact force between the acromion and
> > humeral
> > > > > > head
> > > > > > > > > (that should be the ContactLinePush). I’ve made an
> > > > > > experimental
> > > > > > > > set-
> > > > > > > > > up that has shown me these results.
> > > > > > > > >
> > > > > > > > > Also, I’ve noticed another strange behavior. For
> exemple,
> > > when
> > > > > > I
> > > > > > > > use
> > > > > > > > > the acromion contact point P12 : (0,0.039,0) and
> deltoid
> > > > > > origin
> > > > > > > > > point P8 : (0,0.050,0) and use the “ContactLinPush”
> script,
> > > > > > the
> > > > > > > > > results are very different from using the same P12,
> but
> > > > > > changing
> > > > > > > > P8
> > > > > > > > > to a closer distance (0,0.038,0) from P12. Note that
> the
> > > first
> > > > > > set
> > > > > > > > > of values for P8 and P12 are the ones that I need.
> > > > > > > > >
> > > > > > > > > So, if you can help me understanding these problems,
> it
> > would
> > > > > > help
> > > > > > > > > me a lot.
> > > > > > > > >
> > > > > > > > > Have a good week and thank you again.
> > > > > > > > >
> > > > > > > > > Pierre.
> > > > > > > > >
> > > > > > > > > P.S. : I’ve not found the repository 7, is it normal ?
> > > > > > > > >
> > > > > > > > > — In anyscript@yahoogrou
> > > <mailto:anyscript%40yahoogroups.com>
> > > > > ps.com, “AnyBody Support” <support@>
> > > > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > Hi Pierre-Olivier
> > > > > > > > > >
> > > > > > > > > > I will try to give you some more information on the
> file
> > > > > > > > > > ContactSurfaceLinPush, this file can create a
> conditional
> > > > > > > > contact
> > > > > > > > > > with pushing muscles. If the two contact points are
> close
> > > > > > enough
> > > > > > > > > > (this distance is set by the user) then the muscles
> will
> > > > > > have a
> > > > > > > > > high
> > > > > > > > > > strength and can create the contact force. If the
> two
> > > > > > contact
> > > > > > > > > points
> > > > > > > > > > are to far from each other, the muscles will have
> no
> > > > > > strength at
> > > > > > > > > > all, and there can be no contact force.
> > > > > > > > > > But I am not sure if this utility is useful for your
> > model
> > > > > > > > because
> > > > > > > > > > you want a permanent contact of the humerus head?
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > The file also holds another utility which is the
> > ability to
> > > > > > > > create
> > > > > > > > > > normal reaction force and friction force at the
> contact
> > > > > > point.
> > > > > > > > > This
> > > > > > > > > > could maybe be interesting for your model. But you
> > have to
> > > > > > take
> > > > > > > > > care
> > > > > > > > > > to apply those forces to the acromion contact
> point. You
> > > > > > > > actually
> > > > > > > > > > applied them to the center of the humerus head
> instead of
> > > > > > the
> > > > > > > > > > contact point.
> > > > > > > > > >
> > > > > > > > > > I tried running the files you uploaded and it is
> working
> > > > > > with
> > > > > > > > the
> > > > > > > > > > elliptic shape without doing any changes. However
> the
> > model
> > > > > > is
> > > > > > > > now
> > > > > > > > > > fully balanced and it is not possible anymore to
> see that
> > > > > > point
> > > > > > > > > you
> > > > > > > > > > was interested in the last time (where the geometry
> > cannot
> > > > > > carry
> > > > > > > > > the
> > > > > > > > > > load) to plot the max abduction.
> > > > > > > > > >
> > > > > > > > > > So the solution of recreating the humeral contact
> > > depends on
> > > > > > the
> > > > > > > > > > simulation you want to perform
> > > > > > > > > >
> > > > > > > > > > An example of using ContactSurfaceLinPush is
> available in
> > > > > > the
> > > > > > > > > > repository
> 7/Application/Examples/PedalDemoConditional,
> > > as I
> > > > > > > > > recall
> > > > > > > > > > it the contact muscles are defined in the
> > > JointAndDriver.any
> > > > > > > > file.
> > > > > > > > > >
> > > > > > > > > > Best regards,
> > > > > > > > > > Sylvain, AnyBody Support
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > — In anyscript@yahoogrou
> > > > <mailto:anyscript%40yahoogroups.com>
> > > > > ps.com, “Pierre-Olivier Lemieux”
> > > > > > > > > > <pothekid@> wrote:
> > > > > > > > > > >
> > > > > > > > > > > Hi Soeren,
> > > > > > > > > > > thank you for you recommendations. It seems to
> > > > > > works
> > > > > > > > > now
> > > > > > > > > > for
> > > > > > > > > > > the abduction. The deltoid activity is not what I
> want
> > > > > > most,
> > > > > > > > so
> > > > > > > > > > I’ve
> > > > > > > > > > > just commented it out.
> > > > > > > > > > > I have an other question now. When I went to
> Aalborg,
> > > John
> > > > > > > > gave
> > > > > > > > > me
> > > > > > > > > > a
> > > > > > > > > > > folder with some special scripts. One of these
> > scripts is
> > > > > > > > > > > “ContactSurfaceLinPush”. Like it says, it was to
> > create a
> > > > > > > > pushing
> > > > > > > > > > > force on a contact node (I guess). However, I
> have some
> > > > > > > > > > difficulties
> > > > > > > > > > > to understand this script. Also, it works with a
> > constant
> > > > > > > > radius
> > > > > > > > > > > humeral head, but not for my elliptic shape. Do
> you
> > think
> > > > > > this
> > > > > > > > is
> > > > > > > > > > > possible ?
> > > > > > > > > > >
> > > > > > > > > > > You can check the folder “AcromionHumerusContact”
> in
> > the
> > > > > > > > bottom
> > > > > > > > > of
> > > > > > > > > > my
> > > > > > > > > > > main script (The file is
> > “PO_Lemieux_shoulder2D.zip”). I
> > > > > > will
> > > > > > > > > send
> > > > > > > > > > you
> > > > > > > > > > > the special script, because I don’t know who has
> > written
> > > > > > it.
> > > > > > > > > > >
> > > > > > > > > > > Thank you again,
> > > > > > > > > > >
> > > > > > > > > > > Pierre-Olivier
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > — In anyscript@yahoogrou
> > > > <mailto:anyscript%40yahoogroups.com>
> > > > > ps.com, “AnyBody Support”
> > > > > > <support@>
> > > > > > > > > > wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > Hi Pierre
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > I think there is a simple solution to your
> problem….
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > The reason why you are getting this strange
> > solution is
> > > > > > that
> > > > > > > > > the
> > > > > > > > > > > analysis
> > > > > > > > > > > > has not been finished due to the inverse
> analysis,
> > this
> > > > > > is
> > > > > > > > as
> > > > > > > > > you
> > > > > > > > > > > expect.
> > > > > > > > > > > > The abduction angle you find by taking the max
> > value of
> > > > > > the
> > > > > > > > > > > abduction angle
> > > > > > > > > > > > function. This is fine if the analysis had
> finished
> > > > > > correctly
> > > > > > > > > > > because then
> > > > > > > > > > > > it would look at all the values in the output
> > function
> > > > > > (nStep
> > > > > > > > > > > values) and
> > > > > > > > > > > > find the maximum one. When the analysis stops
> it will
> > > > > > still
> > > > > > > > > look
> > > > > > > > > > at
> > > > > > > > > > > these
> > > > > > > > > > > > nStep values, but now some of these can
> > > > > > contain “garbage”
> > > > > > > > > > numbers.
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > So the remedy in this case is to change the
> output
> > > > > > function
> > > > > > > > in
> > > > > > > > > > the
> > > > > > > > > > > > parameterstudy to the following
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > AnyDesMeasure AbductionMax = {
> > > > > > > > > > > >
> > > > > > > > > > > > Val = -Main.MyModel.GH.Pos[0];
> > > > > > > > > > > >
> > > > > > > > > > > > };
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > This function do not take the max of any values
> it
> > will
> > > > > > just
> > > > > > > > > > return
> > > > > > > > > > > the last
> > > > > > > > > > > > one … and this is what you would like in this
> case I
> > > > > > guess.
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > There will be the same kind of problems with
> your
> > other
> > > > > > > > output
> > > > > > > > > > > function in
> > > > > > > > > > > > the parameter study as I see it. The Abduction
> > angle is
> > > > > > > > > reported
> > > > > > > > > > ok
> > > > > > > > > > > but if
> > > > > > > > > > > > you did the same with the deltoid activity it
> > would not
> > > > > > work
> > > > > > > > I
> > > > > > > > > > believe
> > > > > > > > > > > > because this value is not calculated in the
> last step
> > > > > > > > because
> > > > > > > > > it
> > > > > > > > > > > fails in
> > > > > > > > > > > > inverse analysis, it goes ok with the abduction
> angle
> > > > > > > > because
> > > > > > > > > the
> > > > > > > > > > > kinematics
> > > > > > > > > > > > has been solved ok.
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > So using the function
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > AnyDesMeasure DeltoidActivity = {
> > > > > > > > > > > >
> > > > > > > > > > > > Val = max(…Study.MaxActivity());
> > > > > > > > > > > >
> > > > > > > > > > > > };
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > I am not really sure what you get since you
> take the
> > > max
> > > > > > of
> > > > > > > > > > values
> > > > > > > > > > > which are
> > > > > > > > > > > > initialized, and this may give strange results.
> So I
> > > > > > think
> > > > > > > > you
> > > > > > > > > > should
> > > > > > > > > > > > consider exporting these numbers using an
> output file
> > > > > > and
> > > > > > > > then
> > > > > > > > > > > process them
> > > > > > > > > > > > externally.
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > I hope this helps you move on.
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Otherwise please write again.
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Best regards
> > > > > > > > > > > >
> > > > > > > > > > > > Søren, AnyBody Support
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > _____
> > > > > > > > > > > >
> > > > > > > > > > > > From: anyscript@yahoogrou
> > > > <mailto:anyscript%40yahoogroups.com>
> > > > > ps.com
> > > > > > > > > > [mailto:anyscript@yahoogrou
> > > > <mailto:anyscript%40yahoogroups.com>
> > > > > ps.com]
> > > > > > > > > > > On Behalf
> > > > > > > > > > > > Of Pierre-Olivier Lemieux
> > > > > > > > > > > > Sent: 07 February 2008 18:46
> > > > > > > > > > > > To: anyscript@yahoogrou
> > > > <mailto:anyscript%40yahoogroups.com>
> > > > > ps.com
> > > > > > > > > > > > Subject: [AnyScript] shoulder 2D model
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Hi guys,
> > > > > > > > > > > > I’m still working with anybody to finish the
> first
> > part
> > > > > > of
> > > > > > > > > > > > my simulations in 2 dimensions. After some
> > revisions of
> > > > > > the
> > > > > > > > > > model,
> > > > > > > > > > > > i’ve found a big error in it.
> > > > > > > > > > > > If you don’t remember, I try to simulate the
> > migration
> > > > > > of
> > > > > > > > the
> > > > > > > > > > humeral
> > > > > > > > > > > > head, in the case of a massive rotator cuff
> tear.
> > > So, my
> > > > > > > > model
> > > > > > > > > > allows
> > > > > > > > > > > > a translation of the humerus upward and a
> permanent
> > > > > > contact
> > > > > > > > of
> > > > > > > > > > the
> > > > > > > > > > > > prosthetic head on the acromion. This contact is
> > > allowed
> > > > > > by
> > > > > > > > a
> > > > > > > > > > driver
> > > > > > > > > > > > (acromion driver), related to mathematical
> > > properties of
> > > > > > the
> > > > > > > > > > elliptic
> > > > > > > > > > > > shape. Because this contact is between a
> > prosthesis and
> > > > > > a
> > > > > > > > > bone,
> > > > > > > > > > it
> > > > > > > > > > > > can’t supply a pulling force (just pushing
> force is
> > > > > > allowed)
> > > > > > > > > (It
> > > > > > > > > > was
> > > > > > > > > > > > the error !!). To correct that, I have switched
> > off the
> > > > > > > > > reaction
> > > > > > > > > > of
> > > > > > > > > > > > the driver and put a general “only pushing”
> muscle on
> > > > > > it. So
> > > > > > > > > > now, the
> > > > > > > > > > > > abduction can goes until a certain degree and
> after
> > > > > > that,
> > > > > > > > the
> > > > > > > > > > geometry
> > > > > > > > > > > > is not able to carry the movement, and the
> simulation
> > > > > > stops.
> > > > > > > > > It
> > > > > > > > > > is
> > > > > > > > > > > > exactly that I want because it directly shows
> if the
> > > > > > > > geometry
> > > > > > > > > is
> > > > > > > > > > > > efficient or not.
> > > > > > > > > > > >
> > > > > > > > > > > > My problem is when I try to perform a
> parametric
> > > > > > simulation.
> > > > > > > > I
> > > > > > > > > > look on
> > > > > > > > > > > > the maximum abduction reached during the
> simulation
> > > > > > > > (kinematic
> > > > > > > > > > > > rotational measure). The results are very
> strange
> > and I
> > > > > > > > think
> > > > > > > > > > that
> > > > > > > > > > > > they are not representative, probably because
> the
> > > > > > simulation
> > > > > > > > > > stops
> > > > > > > > > > > > with an error. So, if I would get rid of this
> > error by
> > > > > > > > changing
> > > > > > > > > > > > something on the model, it would maybe works.
> > > > > > > > > > > >
> > > > > > > > > > > > Maybe you have a little idea of what I should
> do (I
> > > > > > > > hope …).
> > > > > > > > > I
> > > > > > > > > > send
> > > > > > > > > > > > you my model and a picture of the results.
> > > > > > > > > > > >
> > > > > > > > > > > > Thank you in advance for your support and say
> > hello to
> > > > > > > > > everyone
> > > > > > > > > > of
> > > > > > > > > > > > Anybody for me :wink:
> > > > > > > > > > > >
> > > > > > > > > > > > bye bye
> > > > > > > > > > > >
> > > > > > > > > > > > Pierre
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > [Non-text portions of this message have been
> removed]
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > [Non-text portions of this message have been removed]
> > > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > [Non-text portions of this message have been removed]
> > > >
> > >
> > >
> > >
> > >
> > >
> > > [Non-text portions of this message have been removed]
> > >
> >
>