Colliding blocks

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • Tim
    Junior Member
    • May 2012
    • 11

    Colliding blocks

    I want to create a simple scenario with one block moving into (but not through) another with a set force, and observing the stress / strain on each block. However, when I try to set this up in PreView and then run it in FEBio, I always get error terminations, usually from negative Jacobians. Is a scenario like this possible in PreView? I can't figure out what I'm doing incorrectly and fear that it's beyond what PreView can handle.
  • maas
    Lead Code Developer
    • Nov 2007
    • 3400

    #2
    Hi Tim,

    For a force-driven contact problem, it is usually necessary to position the objects such that they are initially in contact. If not, the problem may be ill-defined and fail to converge. If you can't get it to work, feel free to upload your file and we can take a look to see what the problem could be.

    Cheers,

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

    Comment

    • Tim
      Junior Member
      • May 2012
      • 11

      #3
      Hi Steve,
      Thanks for the help. I'll set up the system differently later today and write how it went tomorrow. I'll also upload a sample late tomorrow, I'm on the countryside now and have bad internet connection.

      I'm a little concerned about your description, though. I eventually want to move up to three irregular objects (X, Y, and Z) set in a row. The idea was to have X push against Y, which then in turn would be pushed against Z (by the original movement of X). While this could be set up so X, Y, Z begin in contact, in vivo there is a small amount of sliding between them, and I was hoping to observe the stresses over time as this slipping and the deformation of the objects (due to pressure from the push) happened.

      I have made movement occur across two objects using a contact (I believe tied interface, need search my trials more to find it). That might work for connecting them in a series. I actually like this idea, I'll try it and let you know.

      Apologies for the stream of conscious post

      Best,
      Tim

      Comment

      • Tim
        Junior Member
        • May 2012
        • 11

        #4
        Hi Steve,
        Thank you for waiting. Here are some samples of what I'm talking about.
        Test.prv and the associated run is how I am trying to set up the following scenario: Block A pushes Block B into Block C. The value of the Surface Traction, materials, etc, were arbitrarily put in. I was using it to learn the capabilities of PreView, FEBio, and PostView. This scenario works, and I'm able to run it with a normal termination and find the stress and strain I'm interested in.
        However, when I use more complicated objects imported from Amira, FEBio reports only a long string of negative Jacobian errors, even though I have not entered any boundary conditions, loads, etc (it usually crashes while trying to export if I do that). The readout said that the FEBio found 2480400 initially inverted elements and the run will be aborted. I tried selecting all the elements using the Mesh function and then choosing Invert, but FEBio had the same problem. How can I solve this to run my object from Amira?
        All the best,
        Tim

        Files: I tried uploading the files, but the test files were slightly too large (1.18 MB and 1.26 MB for the .feb and .prv, respectively), and the files from Amira were far too large (43.6 MB and 59.51 MB for the .feb and .prv, respectively). The files are located in my dropbox folder here:

        Comment

        • Tim
          Junior Member
          • May 2012
          • 11

          #5
          Smaller

          Here is a very reduced object from Amira, but still gives only negative Jacobians when run in FEBio, maybe a little easier to deal with.
          Thank you,
          Tim

          nothing.feb

          Comment

          • maas
            Lead Code Developer
            • Nov 2007
            • 3400

            #6
            Hi Tim,

            The problem is that your shells have zero thickness. To assign a thickness to a shell model, select the model and open the Mesh panel. Then, press the element sub-object button and select your shell elements. Finally, find the shell thickness modifier button, enter a value and press Apply. This should resolve the initial negative jacobians. Let me know if that did the trick.

            Cheers,

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

            Comment

            • Tim
              Junior Member
              • May 2012
              • 11

              #7
              Hi Steve,
              I tried what you said, and it reduced the number of initially inverted elements, but I tried several levels of thickness and all still led to the run being aborted from inverted elements. My tries included extremes of both very thick and very thin shells, and on both the larger file and the extremely reduced file. I'll attach the reduced file here, and put the larger file (name amirashell.feb) in the dropbox folder: https://www.dropbox.com/sh/nxothasbvpku0ad/mrxLAwIvsS
              Thank you,
              Tim
              simple.feb

              Comment

              • maas
                Lead Code Developer
                • Nov 2007
                • 3400

                #8
                Hi Tim,

                I took a closer look at your amira file and I think there may be some issues with the geometry. You have a ton of slivers in your model, which I think are the cause of the problem. I'm not familiar with Amira's mesing capabilities but you may want to go back to Amira and see if you can get rid of these slivers.

                The other thing I am wondering is if you really want to use shells. It looks like you are trying to model some solid geometry but you only have a surface definition. I do believe that Amira can create tetrahedral meshes so you may want to look into that as well. In PreView we also have a tet-mesher available, but I tried it on your model and it cannot generate a tet-mesh or your surface geometry (I assume because of the many slivers). Keep us posted on your progress.

                Cheers,

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

                Comment

                • Tim
                  Junior Member
                  • May 2012
                  • 11

                  #9
                  Hi Steve,
                  So, success and failure. I found the mistake in Amira and have a tetrahedral mesh instead of a surface now. It works as long as everything remains static. However, PreView keeps crashing during the export (but not saving) sometimes after deleting certain faces. Do you know how I can stop it from crashing? I'll put two files online, one normal one (NewAmira), one that crashes every time I try to export (Crashes.prv) and one that doesn't crash, even after deleting faces (NoCrash). NoCrash arbitrary divides the long thin section, Crashes divides the long thin section from the thicker section underneath.
                  I'm also still getting negative Jacobians when movement occurs, but I believe you're right in that the slivers are causing that problem. I separated off a very small area that had no slivers and was able to have it apply force on a block (without slivers) and on the long thin section here (with section and slivers locked from moving), similar to the test runs with blocks I sent before.
                  I don't suppose PreView has a handy way or removing slivers? I tried with Amira yesterday and could get them away. Will try again later today.
                  All the best, and thank you for answering my posts so quickly
                  Tim
                  Files: https://www.dropbox.com/sh/nxothasbvpku0ad/mrxLAwIvsS

                  Comment

                  • maas
                    Lead Code Developer
                    • Nov 2007
                    • 3400

                    #10
                    Hi Tim,

                    I confirmed that your file is crashing on export. It appears that there is some data corruption going on when exporting the traction load, but I'm not sure yet what's causing it. I'll take a closer look and let you know what I find.

                    Cheers,

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

                    Comment

                    • maas
                      Lead Code Developer
                      • Nov 2007
                      • 3400

                      #11
                      Hi Tim,

                      As I suspected, the problem lies in the traction load which is referencing surfaces 365-724. However, for some reason I don't understand, the actual surface id's start at 2992. When PreView attempted to export the data it was dereferncing surface 365 which does not exist and thus crashes. Since I do not know how the surface id's got messed up, there is not much I can do. I have added a warning message to PreView when this situation occurs again, so it at least it won't crash.

                      On your end, try to setup the problem again from scratch and if PreView still crashes try to send me a detailed description of the steps that you took so I can recreate the problem on my end.

                      Thanks,

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

                      Comment

                      • Tim
                        Junior Member
                        • May 2012
                        • 11

                        #12
                        Hi Steve,
                        Thanks for the info. I've ran the program from scratch again (after trying to fix some of the slivers within Amira) and written the steps down. Unfortunately Amira isn't the best at removing slivers, but at least the simulation has gone further within Preview now. Crashes aren't happening (unless I attempt to export while some faces have not been assigned boundary conditions). I'm still getting negative Jacobians when an object moves, however this only happens when *some* of the faces move. If I assign those faces a boundary condition of zero displacement in X, Y, and Z, the rest of the object moves and becomes "stretched" as it's still attached in places to the unmoving faces.
                        All the best,
                        Tim
                        Location of files (the .unv file and a PreView file): https://www.dropbox.com/sh/nxothasbvpku0ad/mrxLAwIvsS

                        Steps taken:

                        import "easy.unv"
                        Using Mesh -> Select elements, with Select Connected Max angle: 360 on and Ignore interior off, click once on long thin rod, click Detach and name Skull
                        Repeat for the bottom most piece, naming LPJ
                        Repeat for the two middle pieces together, name UPJ
                        Delete object Simple
                        Add material neo-Hookean with density 1, Young's modulus 15, and Poisson's ratio 0.49. Assign to all objects
                        Use select object to move LPJ away from UPJ and Skull
                        Select faces -> Select all faces on UPJ and Skull -> Add boundary condition ("bc1"), Zero Displacement for x, y, z
                        *Repeat to add boundary condition ("bc2") to all faces in LPJ, Zero Displacement in x, y, z
                        *Repeat to add boundary condition ("bc3") to just the large face from LPJ (this face number changes each time. Here it's given 907).
                        *Delete face 907 from bc2
                        Add load "Traction load" to face 907 in LPJ, Traction vector x: 0, y: -1, z: 0
                        Add step, structural mechanics, in Time Stepping change Time Steps to 30 and max retries to 15

                        (* these three steps must be done to make sure the main part of LPJ can move, but if the small sections move there are negative Jacobians)

                        Export and run FEBio program

                        Problem:
                        The faces in LPJ that are fixed for x: 0, y: 0, z: 0 of course don't move, and this causes the LPJ object to stretch out instead of move as one block. If all faces in LPJ are fixed only in X and Z, FEBio finds negative Jacobians and has an error termination. If the LPJ are not given any boundary conditions (except for the large face, 907), Preview crashes upon export.

                        I tried making a Tied Interface between 907 as a master and the rest of the LPJ as a slave just to see what would happen, but it gave negative Jacobians again

                        Comment

                        • Tim
                          Junior Member
                          • May 2012
                          • 11

                          #13
                          Hi Steve,
                          Quick update: It is definitely the "stray" faces (the smaller faces that aren't selected when using Select Face with the Main Toolbar and clicking on the large face) that are causing a problem. Along with them causing negative Jacobians and an error termination when they aren't constrained in the direction of movement as I described above, I made another test. I manually deleted them all from one object ("skull") and deleted the other two objects ("UPJ" and "LPJ"). After that I was able to apply boundary conditions, loads, have movement, etc, with "skull" by using "Select Faces" in the Command Window with the Context Selector on Mesh.
                          Quick side question: By any chance do you know an easy way to delete the "stray" faces? Manually tracking them all down to delete was quite a pain.
                          All the best,
                          Tim
                          Link: https://www.dropbox.com/sh/nxothasbvpku0ad/mrxLAwIvsS
                          file name: skull.prv

                          Comment

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