contact penetration / contact force

Hi guys,
I have few questions concerning the FDK and contact.

  1. contact and FDK - my two stl surfaces go just through themselves (PressureModule = 100). If I increase the PressureModule, the inverse dynamics doesn’t even start. Or should I increase the ligament stiffness that I am using? But it is already 15000 :(.

The contact definition:
AnyForceSurfaceContact ContactForceTMJ_R = {
AnySurface &surfMaster = Main.Model.HumanModel.Seg.Skull.TMJ_NodeR_STL.FossaSTL;
AnySurface &surfSlave = Main.Model.HumanModel.Seg.Mandible.TMJ_NodeR_STL.CondyleSTL;
PressureModule = 1e3;
};

  1. Contact force - under which field do I find the actuall force in the joint (reaction force)? For some models that I tried it corresponded to the ligament force. But what is it for the model with contact (and STL files) definition?
  2. Somewhere on the forum I found, that another possibility would be to drive the bones so that they do not penetrate. That is quite ok for me, I can somehow prepare such curves. But what is than the force in the joint again? I used to use the transspherical joint, where I had one reaction force. Now I have similar model, but defined using the STL surfaces and one ligament. And I want to compare the resultant forces in the joint. Where do I find the reaction force for the contact?

Thanks for any advice
Michala

Hi Michala,

Just a quick comment. I think your pressure module is very low. With this value, you will need 1 m^3 of penetration volume to generate a contact force of 100 N. For our knee models, we have used pressure modules between 1e9-1e11 N/m^3.

The contact force can be located inside the contact force class. It will be in global coordinates though. You could create a force moment measure to measure the equivalent force and moment at any other desired point and transfer it to local coordinates if desired.

Best regards
Michael

Hi Michael,
thank you for you answer.
As I wrote, for my particular geometry, the higher PressureModule (more than 1e5) is not working (error for the inverse dynamics). I tried a different geometry (just an easy plane and sphere, to make thinks easy). Here I can easily define high PressureModule (1e11 and the inverse dynamics is still working). But it seems that the two stl files are not really taken into account. I use the contact force definition as mentioned in my first message. The two faces just go through themselves, the points associated with the two surfaces follow the same path as in my previous model, which was the easy FDK with a ligament.
What can be wrong?

In summary, what I did:

  1. working model, no FDK, two joints define as in Mark’s de Zee mandibular model (point on an inclined plane).
  2. FDK included, ligament established - spring based on the vertical displacement of the two TMJ nodes. Works fine.
  3. I added stl. file to the fossa (just a plane for now) and condyle (a sphere for now, but I have real geometries as well which I want to use later). I defined the contact force as mentioned above. PressureModule = 1e11. This still works, but the result is the same as in the case 2). No contact established.

Thanks for any advice.
Michala

Hi Michala,

Without having seen your model, I think three things could be going on:

[ol]
[li]The contact forces are somehow defined outside the study and therefore never taken into account. An easy way to check this would be to specify an initial condition where you know for sure that there is penetration at the first time step. For this situation, run only the initial condition and the contact force should be computed.[/li][li]An othe thing is that the normals of your STL surfaces could be pointing in the opposite direction, i.e. the normals have to point towards the contact area. I am not sure what mesh program you use, but it is possible to display the surface normals in the freeware Meshlab.[/li][li]Finally, your initial guess could be too far away from the solution (e.g. no contact at your specified initial condition), in which case the solver can overshoot the contact area because the stiffness is very low at this point.[/li][/ol]
Best regards
Michael

Hi,
here is what I found out - if I use unscaled geometry, I manage to let the contact work (I tried an easy example with two spheres. Sphere on plane is not working). But after I scale it (*0.1), it is not working any more. I see the penetration, but no contact force, nothing. Does anybody has similar problem? Is the only solution to do the new geometry already scaled , so that it has the proper size after it is loaded in AnyBody?

Michala

Hi Michala,

That does sound a little strange. We pretty much always use scaled geometries for the contact analysis (almost all of them come in mm, which we convert to m). Could you check your code or show it here so we could see what the problem is? (Before we try replicating the problem - we just may do it differently and not get the problem).

Thanks,
Pavel

Hi Michala,

It sounds to me like you have only scaled the drawing object but not the real geometric object - you need to set the scaling function of both. I have made that mistake myself previously.

Best regards
Michael

Hi guys,
thanks for the input.
Good point on “scaling the geometry not the drawing” - I haven’t thought about it like that (visually, everything looked good) … and you are right :wink: - for one of the segment I put the scaling only within the AnyDrawSurf and not AnySurfSTL !
Now it make sense. And it works.

For my own model, I prepared the stl files directly in proper dimension already and it works, now! So in the end, problem solved.

Thank you!

Michala