Large Model Conversion Dyna -> FEBio

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • lancef
    Member
    • Jul 2016
    • 31

    Large Model Conversion Dyna -> FEBio

    Hello!

    My team and I are working on a large, high-fidelity upper body model. We've been developing this model in LS-DYNA but have decided to make the switch to FEBio for several great reasons

    As we've been working on this conversion, we've run into a few issues/feature requests/etc. I'm going to list them here and am happy to follow-up with more specifics on these tasks.

    1) Is there a way to define a general contact implementation that automatically assigns contact between all parts in the model? This model has 150+ parts with as many contact pairs. Manually defining each contact may be problematic.

    2) The shell thicknesses seem to be lost in the direct import of the .k file to PreView. We've written a script to do some of the conversion prior to importing into PreView, but the shell thickness issue keeps occurring. With so many different shell parts, what is the recommended way to get these shell thicknesses properly assigned to each part? Is this something that needs to be done manually in PreView using the shell thickness tool? I selected one of the shell parts, used this tool with a value of "1", exported the resulting .feb file, but the shell thickness didn't update from 0.

    3) With the second point, we may want to quickly change shell thickness in a parametric study, and the ability to quickly control shell thickness in each part would be great.

    4) Can FEBio handle initial overclosures? Does it matter if the overclosure occurs between a rigid part and a deformable part? We are likely to have some overclosure between rigid vertebral bodies and deformable discs.

    I've attached a picture to this thread to give you some context of the caliber of model we're working with. We are very excited about getting this thing up and running in FEBio! Thanks for all the hard work on this code - truly amazing stuff, and things are only getting better.

    Thank you,
    LanceUpper_Body_Model.PNG
  • ateshian
    Developer
    • Dec 2007
    • 1853

    #2
    Hi Lance,

    1) Is there a way to define a general contact implementation that automatically assigns contact between all parts in the model? This model has 150+ parts with as many contact pairs. Manually defining each contact may be problematic.
    No, currently there is no way to do that automatically.
    2) The shell thicknesses seem to be lost in the direct import of the .k file to PreView. We've written a script to do some of the conversion prior to importing into PreView, but the shell thickness issue keeps occurring. With so many different shell parts, what is the recommended way to get these shell thicknesses properly assigned to each part? Is this something that needs to be done manually in PreView using the shell thickness tool? I selected one of the shell parts, used this tool with a value of "1", exported the resulting .feb file, but the shell thickness didn't update from 0.
    Using FEBioStudio, I am able to successfully import LS-DYNA files that include shells with different thicknesses. Can you share a sample file that reproduces the issues you are encountering? That would help us fix any bugs in the code.
    3) With the second point, we may want to quickly change shell thickness in a parametric study, and the ability to quickly control shell thickness in each part would be great.
    Since FEBio allows each shell element to have different thicknesses at each node, it is not practical to create a tool in FEBioStudio that could reproduce that flexibility. However, from the Model tree you can select a part that consists of shells (assuming the part name tells you that it has shells) and hide all other parts (Edit->Hide Unselected), then select all the elements in that part (not faces) and use the Mesh inspector tool to view the Shell thickness. If you want to change that thickness, use Edit Mesh->Shell Thickness. After entering the desired thickness and clicking Apply, you can verify in the Mesh Inspector window that the shell thickness has been changed to the value you picked.
    4) Can FEBio handle initial overclosures? Does it matter if the overclosure occurs between a rigid part and a deformable part? We are likely to have some overclosure between rigid vertebral bodies and deformable discs.
    There is no FEBioStudio tool for automatically dealing with mesh overclosures. One would need to set up an initial contact analysis to push surfaces back until they mate properly, then save this deformed mesh as the new starting mesh in an analysis. That would be tricky.

    Best,

    Gerard

    Comment

    • maas
      Lead Code Developer
      • Nov 2007
      • 3480

      #3
      Hi Lance,

      Glad to hear you decided to switch to FEBio

      We'll be happy to help convert this model to FEBio, although some aspects will be more difficult to address than others.

      1. This one will be tricky, but it has been on our mind for a while, so I'd be happy to take a stab at this. Are the contact definitions in the LSDYNA file? If so, perhaps in the mean time we can look into reading them in from the .k file.
      2. Similarly, if the shell thickness is in the .k file, then we can probably easily support reading that into FEBioStudio.
      3. This depends a bit on how you wish to do the parametric study. FEBioStudio does not support automated parametric studies. If you are planning to do this via a script, then you'll have to modify the FEBio input files directly.
      4. I assume that you mean that contacting surfaces may initially overlap? As long as the overlap isn't too big, this shouldn't cause any issues. In FEBio, the contact algorithms will try to eliminate this initial overlap. Some contact algorithms allow you to move the nodes so that the initial overlap is eliminated. The effect of this will depend on how big the overlap is, so you might have to try it and see what happens.

      Also, if memory serves, LSDYNA is an explicit FE code, right? In FEBio, we have an explicit solver, but I would have to take a closer look to see how well it would work. Is it your intention to run this model with an explicit solver in FEBio, or did you want to try an implicit solver?

      Best,

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

      Comment

      • lancef
        Member
        • Jul 2016
        • 31

        #4
        Gerard and Steve,

        Thanks for getting back to me so quickly on this. Before I get into too many details in response to your questions - do you recommend we perform this work in FEBioStudio? Will this software package be the most supported moving forward? Right now I've been primarily operating in PreView.

        I'm really excited about working with you all on this!
        Lance

        Comment

        • ateshian
          Developer
          • Dec 2007
          • 1853

          #5
          Hi Lance,

          Going forward, we have ceased the development of PreView and are focusing exclusively on FEBioStudio. I strongly recommend that you switch over. In principle, all of PreView's functionality is available in FEBioStudio. If anything doesn't work properly, it is a bug and you should let us know so that we can fix it.

          Best,

          Gerard

          Comment

          • lancef
            Member
            • Jul 2016
            • 31

            #6
            Gerard and Steve,

            Good to know - FEBioStudio it is!

            After working through some of these issues, I've been able to clear some up. The shell thicknesses have been appropriately assigned, and we're confident moving forward adjusting these in the future. As far as a general contact implementation goes - something like that would be fantastic in the future. In the meantime, we'll simplify the model a bit to avoid defining 150+ contact definitions.

            I didn't realize FEBio had an explicit solver. How can I invoke this? It would be interesting to compare between FEBio and LS-DYNA.

            Also, I'm running a stripped down model in FEBioStudio right now, and I'm getting negative jacobian errors, but it's not listing the element that is creating the issue. Is this a bug, or does this occur with something specific?

            Thanks,
            Lance

            Comment

            • ateshian
              Developer
              • Dec 2007
              • 1853

              #7
              Hi Lance,

              In the configuration file (febio.xml) you can add <output_negative_jacobians>1</output_negative_jacobians> to display the list of elements with negative jacobians.

              Best,

              Gerard

              Comment

              • lancef
                Member
                • Jul 2016
                • 31

                #8
                Gerard,

                Thank you! Exactly what I was looking for.

                Lance

                Comment

                Working...
                X