Negative jacobian Error

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • Rooyan
    Member
    • Jun 2021
    • 59

    Negative jacobian Error

    Hello,

    I hope you are doing well.

    I have a model in which I assigned a damper and spring. When I imported the model into FEBio Studio, I encountered a message indicating that the materials for two nodes (the nodes defining the damper and spring) are not assigned to any parts. I am unsure if this message is a warning and why it is occurring. Last year, I ran the model with the same syntax and did not receive this message.

    Additionally, after running the model, I received a "Negative Jacobian Error" message, and I am not sure if it is related to the previous error message. I am unsure about the Negative Jacobian Error message as well. I have attached my model in this message.

    I would appreciate your help with this matter.

    Thank you very much for your response,

    Kind regards,
    Royan





    image.png
    Attached Files
  • maas
    Lead Code Developer
    • Nov 2007
    • 3613

    #2
    Hi Royan,

    You can ignore these warnings. FEBio Studio checks whether all materials are assigned to parts. However, rigid body materials can be used even if they are not assigned to parts, as in this model.
    As for the negative jacobians, I'm not sure, but I did notice that the shell thickness is set to 1, which seems like a really big value for the size of this model. Is that the intended value for the thickness? If not, then that might be part of the problem.

    Best,

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

    Comment

    • Rooyan
      Member
      • Jun 2021
      • 59

      #3
      Thank you very much for your response.

      I would like to mention that the shell elements are clamped. Therefore, I believe that the specific value may not be important. However I am trying to assign the lower thickness and investigate the results.

      Kind regards,
      Royan

      Comment

      • Rooyan
        Member
        • Jun 2021
        • 59

        #4
        Hello,

        I hope you are doing well.

        I would like to mention that I changed the thickness of the shell elements from 1 meter to both millimeters and micrometer, and in both cases, they failed with a negative Jacobian error message.

        I could not determine the reason for Negative Jacobian error message, and I would appreciate your help on this matter.

        I have also attached the file with the micrometer thickness for the shell elements.

        Thank you very much for your assistance.

        Kind regards,
        Royan
        Attached Files

        Comment

        • maas
          Lead Code Developer
          • Nov 2007
          • 3613

          #5
          Hi Royan,

          I made a few tweaks to the model:

          - Turned off the shell_normal_nodal flag for the shell part.
          - Turned off the symmetric_stiffness flag for the pressure load.
          - Set the plot_stride to 100 (this isn't necessary but makes the plot file size more manageable. Feel free to turn that back to 1 if you want all the time steps.)

          With these changes, the model seems to be running well. Please give it a try and let me know what you find.

          Best,

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

          Comment

          • Rooyan
            Member
            • Jun 2021
            • 59

            #6
            Thank you very much for that. I have some questions regarding that and I would appreciate your clarification and response.

            I checked the file, and I am using version 2 of the FEBio file. I noticed that you define the shell_normal_nodal flag in the following section in the FEBio version 4, whereas the manual mentions it should be defined in the control section.

            You also mentioned that I need to turn off the symmetric stiffness flag for the pressure to be set to zero. However, I now see that the symmetric stiffness flag in the file you attached is defined as <symmetric_stiffness></symmetric_stiffness> in the control section and as <symmetric_stiffness>0</symmetric_stiffness> in the load section. Previously, when I ran my model, FEBio gave a warning that, due to the spring (discrete element), I needed to turn off the symmetric stiffness in the control section.

            I would appreciate your advice on whether I need to turn off the symmetric stiffness in both the control section and the load section and do I need to define the shell_normal_nodal flag in control section.


            Manual section regarding the shell_normal flag syntax:
            ''When shell domains intersect such that three or more shell elements share the same edge, as
            in a T-connection, users should set shell_normal_nodal to 0 in the Control section. This setting
            ensures that the back face of a shell element is calculated using the front face normal, instead of
            nodal normals, since the latter would be ill-defined for nodes belonging to such an edge.
            Finally, please note that shell elements cannot be stacked in FEBio.''​

            Shell normal nodal flag set to zero in the below section in attached file in FEBio format 4:
            </Mesh>
            <MeshDomains>
            <ShellDomain name="tri6_m5" mat="Shell mat. 5" type="elastic-shell">
            <shell_thickness>0</shell_thickness>
            <shell_normal_nodal>0</shell_normal_nodal>
            </ShellDomain>
            <SolidDomain name="tet10_m1" mat="Tetr. mat. 1 Ligaments"/>
            <SolidDomain name="tet10_m2" mat="Tetr. mat. 2"/>
            <SolidDomain name="tet10_m3" mat="Tetr. mat. 3"/>
            <SolidDomain name="tet10_m4" mat="Tetr. mat. 4 ParsTensa"/>
            <SolidDomain name="tet10_m5" mat="Tetr. mat. 5 ParsFlaccida"/>
            </MeshDomains>
            <MeshData>​

            Thank you very much,

            Kind regards,
            Royan

            Comment

            • maas
              Lead Code Developer
              • Nov 2007
              • 3613

              #7
              Hi Royan,

              A few things changed in the feb4 file format, and the shell_normal_nodal flag was moved to the ShellDomain section. This allowed it to be specified for each shell domain individually, offering more flexibility to the user when to use this flag. I apologize that the documentation was never updated. I will fix that.

              The stiffness matrix for pressure loads can be symmetric or nonsymmetric, depending on whether its boundary is fixed or not. If you experience convergence problems, turning the symmetric stiffness flag off (for both the load and in the control settings) may help. Setting the flag off in the load is not sufficient, since the symmetry of the global stiffness matrix is determined by the control setting. Since it's easy to forget this, we've added a new value for the control setting, namely "preferred". This option will choose the symmetry based on the symmetric stiffness parameters of the individual model components. This way, turning off the symmetric stiffness flag will automatically result in a non-symmetric global stiffness matrix. If you want to give this a try, please update to the latest development version.

              I hope that clarifies things but let me know if you have any further questions.

              Best,

              Steve


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

              Comment

              • Rooyan
                Member
                • Jun 2021
                • 59

                #8
                Thank you very much for your response.

                Regarding the first part of your answer, I need to define the shell_normal_nodal flag in the FEBio 2 file format, as I am using FEBio 2. However, when I defined it in the control section, I received a message stating that the shell_normal_nodal tag was skipped as unknown. How can I correctly define this in the FEBio 2 format?

                Thank you for your help.

                Kind regards,
                Royan

                Comment

                • maas
                  Lead Code Developer
                  • Nov 2007
                  • 3613

                  #9
                  Hi Royan,

                  If memory serves, this flag was not available yet in FEBio2 since that version of FEBio was still using the old shell formulation. I think it was added at some point in FEBio3 after the "new" shell formulation was implemented.

                  Best,

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

                  Comment

                  Working...
                  X