Sliding interface soft tissue indentation

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • kevinmattheusmoerman
    Member
    • Sep 2010
    • 65

    Sliding interface soft tissue indentation

    Contact problems, indentation of cylinder

    I have some “sliding interface contact” issues with the attached models (~14mm indentation of a nearly incompressible cylindrical silicone gel with supported sides and central hole). I’ve tried different meshes/contact parameters but little success so far. The attached simple model runs okay but have not been able to recreate this with my more realistic model.

    1) The model (e.g. HEX_MODEL_half_size4_4470el_v2.prv) does not run with the auto penalty option. FEBio shuts down with the error message: “The application has requested the Runtime to terminate it in an unusual way. Please contact the application’s support team for more information”

    2) What type of contact would be best for this model?

    3) Augmented Lagrange contact seems to “pulsate”. Does this mean the penalty factor is too low? Also sometimes there is a sudden shift of elements (only noticed this with Augmented Lagrange contact), where something suddenly gives and the elements slide along the indentor surface.

    4) How do you recommend “tweaking” the various parameters? I’ve tried using a simple model to get the parameters to work but they don’t seem to translate well to say a model with a slightly finer mesh.

    5) Does it matter whether a geometry feature style surfaces (labelled in blue) are chosen or mesh feature (faces, e.g. a specific selection of element faces) style surfaces (labelled in red) for contact? I would imaging the latter is best since you can select a specific region of the model so FEBio does not have to check all outer surface nodes for contact but only the ones composing the selected region.

    6) Sometimes the contact does not work at all (see model HEX_MODEL_half_size8_720el_ref_7680el.prv) even though I think I’ve set it up okay.

    7) So far none of my models have run to full depth (~14mm from initial). Can you see any obvious reasons related to my modelling approach why this would be?

    8) I’ve tried modifying the load application curve, so that the initial gap is crossed quickly, then the contact is established slowly, then the speed increases and then decreases again towards the end where the high amount of deformation is hard to solve. Is this a sensible approach? e.g. equation 0.05+0.95*(sin(t*(0.5*pi))^2)

    9) I’ve tried different mesh densities. The coarser model I’ve attached ran quite far (91%) before it failed so I thought I’d try a denser mesh however this took almost 14 hours and got stuck much sooner. Am I doing something wrong?

    10) Do you think the near in-compressibility is an issue for the contact?

    Just some general comments:

    Preview
    - Ctrl+R is a short cut for add rigid constraint, not Run

    Postview
    - Many display settings (contour, mesh-on etc. ) are not kept when updating
    - Transparency is not computed correctly for multiple parts and meshes of underlying part are not visible through transparent part.
    - The total displacement contour is incorrect the first time you apply it (looks like x-displacement). If I try say the real x-displacement and then go back it looks correct.
    - Iso-surfaces are not cut by cutting planes
    - I’ve tried simple models with tetrahedral elements. Apart from the fact that they might be naturally harder to get to work the contour plots of stress (e.g. 1st principal stress) are very asymmetric and unrealistic. Is this purely an issue of tetrahedral elements or are there some stress visualisation issues related to tetrahedrons (e.g. compare the simple models)?

    Thanks a lot, kind regards,



    Kevin Moerman
  • kevinmattheusmoerman
    Member
    • Sep 2010
    • 65

    #2
    Atachments wouldn't upload at this time. Will try to post them again later.

    Kevin

    Comment

    • maas
      Lead Code Developer
      • Nov 2007
      • 3400

      #3
      Hi Kevin,

      I have been trying to run your models but have not been very successful. I will continue to play around with them, but here are already some comments in the hope that they might be useful.

      1) My version of FEBio does not crash with the auto penalty option on. You might need to update your version. However, there is still an issue with rigid bodies and auto-penalty so it is not recommended to use auto-penalty if you are using rigid bodies as well.

      2) In general it's been my experience that the facet-on-facet gives the best overall performance. You can also try sliding2 (which actually is the biphasic contact in PreView), since in case of large compression, this method sometimes does better than the facet-on-facet, although your model will run a lot slower.

      3) The jumping you mention I believe comes from the coarse mesh trying to slide across an area with high curvature. There might be several low energy states that the nonlinear solver is jumping between. I think decreasing the mesh size should get rid of that.

      4) I made a few changes in parameters. First, your load ends at time 1, but your model continues to run to time 6.25. So I changed the number of the timesteps to 100 with time step size of 0.01. I changed the max time step in the auto-time stepper to 0.01 and the min size to 0.002. For max_retries you want to choose a small value (e.g. 5). The optimal number of iterations I changed to 50. Since the model uses augmeted lagrangian it is expected that the number of iterations per time step will increase. I like a rather large value because it will recover the initial time step quicker after a time step fails.
      For your contact, I was trying with the "facet-to-facet sliding" method. I first used penalty method with a penalty from 0.001 to 1. This didn't work very well at larger compressions, so I'm now trying with augmented lagrangian. That's kinda were I am right now. I'll let you know if I have a model that runs all the way.

      5) I modified your contact surfaces using element facets (red colored) because I could reduce the contact size that way. For small problems, I usually don't care, but for larger problems, I try to reduce the contact size as much as possible to save some computational time.

      6) Again, you may need to update your FEBio version

      7) I'm not sure. One of the things I would try is reduce the number of elements on the flat parts of your rigid indenter. The reason is that every time a slave node jumps across a master facet, it introduces a discontinuity in the stiffness matrix, which may destabilize the system. You can reduce these jumps by either reducing your time step size or, (especially in flat areas), reduce the number of elements. I have been trying to reduce the time step size, and this has helped somewhat, but maybe you can try reducing the number of elements on the indenter.

      8) I defined an initial jump in your loadcurve as well. But that's just because nothing happens in the first few time steps. Decreasing the rate of load near the end might be good idea although I haven't tried it.

      9) Your mesh density may definitely have an effect, but one of the things I would look into is the element distribution. At the edges of the indenter some of your hex elements become extremely distorted at high indentations. Some of the interior edge angles are becoming nearly 180 degrees, which obviously won't help. See if you can use a butter-fly mesh instead near the area of indentation. This will prevent elements from getting distorted too much.

      10) It is my experience that contact models indeed tend to run more difficultly with stiffer materials.

      Thanks for your other suggestions for PostView and PreView. Would you mind making those feature requests or bug reports so they will stay on my radar

      I hope this is somewhat useful. Let me know if you have any further questions.

      Cheers,

      Steve.
      Department of Bioengineering, University of Utah
      Scientific Computing and Imaging institute, University of Utah

      Comment

      • kevinmattheusmoerman
        Member
        • Sep 2010
        • 65

        #4
        Further contact issues

        Thanks for all your suggestions!

        I now have a basic model that runs to full depth (HEX_MODEL_half_size4_4470el_coarse_indentor_v7_3. prv) using your suggestions. Perhaps the main improvements that did the job were a coarser indentor and to adjust the “Optimum number of iterations”. The parameters (e.g. contact and iteration parameters) are very sensitive though and I can hardly get anything else to converge.

        I also tried to make a finer mesh model because the deformation in the coarse model is quite large. However I still have some of the issues I mentioned before, even though I updated to all the most recent versions (although I had to install XP 32-bit but I have VISTA 32-bit). With the finer mesh model (HEX_MODEL_half_size4_4470el_ref_24362el_coarse_in dentor_v1.prv) contact just wont work (it seems like it does not have contact set-up at all with full penetration and no force acting on the system).

        I also want to include a (polyethylene) skin layer (e.g. shell layer) with shared nodes on the cylindrical gel surface. I’ve attempted to do this in the model HEX_MODEL_half_size4_4470el_coarse_indentor_skin_v 8_1.prv where I extracted the layer but if I try to weld/attach the layer Preview stops working or FEBio crashes when I attempt to run the job. I tried the tied contact option and that would work but obviously shared nodes is better. Am I doing something wrong here?

        Thanks again for you help,


        Kevin

        P.S. I'll e-mail you the models.

        Comment

        • kevinmattheusmoerman
          Member
          • Sep 2010
          • 65

          #5
          I just tried modifying the material parameters in model HEX_MODEL_half_size4_4470el_coarse_indentor_v7_3.p rv to C1=0.0004479, C2=6.8535e-005, and k=1.7211. Now however it fails. If I reduce k a 100 times it does run. So the compressibility is also important. However low k values or not so realisitic for this material...

          Comment

          • kevinmattheusmoerman
            Member
            • Sep 2010
            • 65

            #6
            If I try a time step of 0.01 it fails around 83%, then I decided to try 0.0001, and increase the number of retries and reduce the minimum allowed timestep and then it fails at 70%. This seems counter intuitive, I tell it to take smaller steps and try more often with a smaller minimum step,.. it should get further right?

            Comment

            • weiss
              Moderator
              • Nov 2007
              • 124

              #7
              Hi Kevin - in the future, please do not post requests for help to the Tutorials section of the forums. Post your requests in the FEBio Projects Subforum
              Jeffrey A. Weiss
              Professor, Department of Biomedical Engineering, University of Utah
              Director, Musculoskeletal Research Laboratories
              jeff.weiss@utah.edu

              Comment

              Working...
              X
              😀
              😂
              🥰
              😘
              🤢
              😎
              😞
              😡
              👍
              👎