Negative jacobians, but the elements look fine

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • jbucksot
    Junior Member
    • Apr 2023
    • 7

    Negative jacobians, but the elements look fine

    Hello!!

    I've been struggling with this same model for over a week now trying to get it to run to completion, but no matter what I do, it always fails somewhere along the way due to negative jacobians.
    It's a model of breasts deforming due to gravity, and it's consistently failing after hitting t=0.9.
    I've tried adjusting the tolerances, the step sizes, the cutback, and "Max updates," but nothing sees to help.

    I've got it set up to output the elements that are experiencing negative jacobians, and I've started following them from start to failure (or at least to the point just before failure).
    But everything seems perfectly fine. The elements' trajectories and shapes are behaving exactly as expected and they're nowhere near the point of turning inside out.
    I don't understand why everything would suddenly go off the rails stepping from t=0.9 to t=1.0 (or from t=0.9 to t=0.900098 on the last retry) when all the previous steps behaved perfectly and nothing seems out of the ordinary.

    I'm really hoping it's just something stupid and simple that I'm doing wrong, but I'm out of ideas.
    Could someone take a glance at this model and tell me if there's anything else I should change to allow it to run to completion.
    I'm posting it on google drive due to the file size limit.

    For reference, I'm running version 3.7.
  • ateshian
    Developer
    • Dec 2007
    • 1853

    #2
    Hi,

    The most likely explanation is that the deformations induced by gravity cause excessive distortion in some of the elements. Insteadyof fixing all displacement degrees of freedom in the "chest" domain, I fixed only the topmost Y-surface of that domain and got your model to run to completion with no other changes to your file. Of course, including degrees of freedom in the chest domain also increased the number of equations to solve to approximately 425 K. (Displaying the maximum principal Lagrange strain allowed me to identify the elements with the greatest distortion.)

    To run the model faster I switched the solver to mkl_dss (instead of the default pardiso solver -- this option is available in FEBioStudio 1.9, by editing the febio.xml configuration file, and in FEBioStudio 2.1 by selecting the solver directly in the model file).

    Best,

    Gerard

    Comment

    • jbucksot
      Junior Member
      • Apr 2023
      • 7

      #3
      Awesome! Runs for me as well!

      I'm still a bit confused though. I would not have expected that change in boundary condition to make much of a difference. It's not clear to me why I should do one or the other, besides the fact that one runs and the other doesn't.

      Additionally, from reading these forums, I was under the impression that when a negative jacobian is detected in an element, it means that the element turned inside-out. Is that not necessarily true?
      Is it possible to get a negative jacobian due to a large distortion even if that distortion is not so large that things turn inside-out?

      Any info is appreciated! And thank you for your help in getting it to run!

      Comment

      • ateshian
        Developer
        • Dec 2007
        • 1853

        #4
        Hi,

        A negative Jacobian typically means that an element got inverted, but on the way there, presumably it undergoes large deformations. So that's the reason I suggested looking at maximum principal strains (which are not strictly speaking measures of distortion).

        The reason that changing boundary conditions allowed your model to run is that some of the deformations produced by gravity were transferred to the chest tissue (which previously could not deform), and that probably reduced the amount of distortion in remaining tissues just enough to allow them to converge from time 0.9 to time 1.0. This is not a foolproof approach, it just happened to work here. (Think of having two springs in series: when subjected to a load, each spring deforms less than if one spring was made rigid).

        Best,

        Gerard

        Comment

        Working...
        X