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.
Colliding blocks
Collapse
X
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
Comment