Contents
Requirements
FEBio v2.5.0 - FEBio is an open-source software for nonlinear finite element analysis in biomechanics and biophysics http://febio.org/
PreView v1.18.0 – PreView is the pre-processor software developed for setting up FEBio simulations http://febio.org/preview/
PostView v1.9.1 – PostView is the post-processor software developed to visualize FEBio results http://febio.org/postview/
SOFA Framework v15.12 - SOFA is an open-source software for real time medical simulation https://www.sofa-framework.org/
Simple Indentation Model
Set Up
The simple Indentation test takes a 30 x 30 x 10 mm deformable box and a slightly curved rigid indenting surface.
The base of the boxed is held completely unmoving. The indentor is moved into contact with the box by a controlled displacement and contact is continued until the box is compressed to half of its original thickness(5mm). The force required for this compression is a key measure.
FEBio Simulations
The setup is simulated run multiple times with the mesh of the box altered to be of hexahedral and tetrahedral elements at different stages of refinement. This allows us to determine if the topology of the mesh has an influence on the outcome and except when the mesh is extremely coarse the force required to reach this displacement is quite similar (less than 5%).
SOFA Framework Simulation
The SOFA Framework prioritizes speed and stability to produce real-time medical simulation. However it is important for us to understand the differences that such a focus can influence. An identical mesh used with FEBio was used in the Sofa framework.
|
FEBio |
SOFA |
Starting |
|
|
Deformed |
|
|
The comparison looks quite similar with the differences being primarily due to the 3D rendering and lighting. But there is also a small but noticeable offset in the symmetry.
However when looking at displacement of the indentor with respect to the applied force some differences can be seen. Here Sofa is using a TetrahedronFEMForceField (that is linear elastic) and FEBio is using a neo-Hookean material. In both cases the materials have been set to have Poisson's Ratio 0.3 with Young's Modulus set to 10 MPa.
-- aerdemir 2016-05-27 11:52:08 What are the exact material models and coefficients for the models? Is it neo-Hookean in FEBio? If so, is it fully incompressible? Is it linear elastic in SOFA? What is the Poison's ratio?
Cylindrical Leg Indentation Model
Input
-- aerdemir 2016-02-29 23:34:55 For this specification surface geometry of skin, fat, muscle, bone, material properties, and indenter specifics. It will be useful to mention in what format these come. Also, when referring to software, please also make a note version. It does not matter which version you use, we just need to report it.
Tissue material properties are those found to be optimal in paper by Petre et al. http://www.ncbi.nlm.nih.gov/pubmed/23699713
- Cylindrical assumptions for basic geometry. Each layer is axially aligned tube with constant radius.
Procedures
-- aerdemir 2016-02-29 23:34:55 Ben, we need to detail model generation steps, e.g. geometry generation, meshing, assembly, material property assessment, definition of loading and boundary conditions, simulation, extraction of simulation results.
Geometry Creation in PreView
- Create Tubes
- Click on the Geometry Panel
- Select Tube
- Enter parameter for inner radius, outer radius and height
- Click create
- Repeat for muscle, fat, and skin
- Create Elliptical Indentor
- Still on the geometry panel select Ellipsoid
- Enter parameters a=9, b=24,c=1, W=1 (loosely sized based on ultrasound probe)
- Click create
- Change the selection panel to rotate and rotate the ellipsoid 90 degrees about the global y axis.
- If necessary, switch the selection tool to translate to move the ellipsoid adjacent to the skin cylindrical surface.
- Create Mesh
- Make sure the geometric object to be meshed is selected. It will have a white bounding box drawn around it if it is.
- Switch to the Mesh panel
- Hexahedral, the default mesher, suits our needs.
- Set the mesh parameters:
- Muscle cylinder: 8 slices, 4 segments, 24 stacks
- Fat cylinder: 15 slices, 3 segments, 30 stacks
- Skin cylinder: 20 slices, 3 segments, 45 stacks
- Indentor ellipsoid: 1 divisions, 3 slices, 3 stacks
- Click apply
- Add Materials
- Select the Model Viewer panel
Right click on Materials>Add Materials
- Assign mechanical properties
- Assign Geometry to material, the color will change to show assignment
- Add Step
Right click Steps>Add Step
- Select Structural Mechanics
- Change step properties to suit preferences
- Add Boundary Conditions and Constraints
- Constraints are for Rigid bodies (i.e. the Elliptical Indentor), BCs (Boundary Conditions) for deformable bodies
- Add Constraints to limit degrees of freedom to X only during Initial. (Testing has shown that limiting all degrees of freedom does not cause problems as adding a displacement will temporarily override the limit.)
- Add Boundary conditions to hold the leg in place during Initial
- Add Constraint to displace the Indentor in the X direction During the added Step 1.
- Add Contact
- Add Contact between the Indentor and the skin surface
- Sliding interface, Lagrangian multipliers, Step 1
- Add Contact, Tied Interface between adjacent tubes. Muscle-Fat and Fat-Skin, Langrange Multipliers help the result.
- Output Request
Right click > Edit
- Select reaction forces
- Export FEBio input file
Using External Meshes to Create FEBio Input File
PreView allows for external meshes to be imported and used. Instead of the first three step above File>Import will allow the user to import a mesh to be used as described above.
Alternatively a python script has been developed to read external meshes and generate the input file directly. This script uses some naming conventions to create node sets and surfaces. And also to generate boundary conditions. Currently external meshes can be stl and gmsh(.msh) formats.
Run FEBio simulation
FEBio runs from the command line. Once launched it will continue to completion or non-convergence unless interrupted by the user.
Post-process Result with PostView
When FEBio simulates it will write results to an output file, extension .xplt, that can be visualized with the help of the PostView program distributed with FEBio.
Output
-- aerdemir 2016-02-29 23:34:55 We need to detail output metrics in here, e.g. indentation forces, tissue thickness change, etc.
- The simulation results show the indentation of the multiple layers of the leg.
InSitu Strain Modeling
Requires the PreStrain plugin for Febio
In order to use the PreStrain plugin you must use a prestrain material. The plug documentation explains the details, but effectively the definition is similar
<material id="2" name="Hook" type="neo-Hookean"> <density>1</density> <E>100</E> <v>0.3</v> </material>\
becomes
<material id="2" name ="Hook" type="prestrain elastic"> <prestrain type="prestrain gradient"/> <elastic type="neo-Hookean"> <density>1</density> <E>100</E> <v>0.3</v> </elastic> <prestrain type="prestrain gradient"> <F0>0.8,0,0,0,1.1,0,0,0,1.1</F0> </prestrain> </material>
If the prestrain is to be applied on an element by element basis it may be left out of the material definition and instead included in the Geometry section as element data.
<ElementData> <element id="1"><F0>1.1,-0.1,0.1,-0.1,1.3,0.1,-0.2,-0.1,0.7</F0></element> <element id="2"><F0>1.2,-0.2,0.5,-0.2,1.1,0.5,-0.7,-0.3,0.7</F0></element> ...etc... </ElementData>
If the prestrain is unknown, but the loading is known instead omit the prestrain sections and apply a constraint in the first Step. This will hold the geometry constant and calculate the train necessary to maintain the configuration. A second Step can then be used for the simulation of interest.
<Step name="Step01"> <Module type="solid"/> <Control> <time_steps>1</time_steps> <step_size>1</step_size> <analysis type="static"/> </Control> <Constraints> <constraint type="prestrain"> <tolerance>0.01</tolerance> <update>1</update> </constraint> </Constraints> <Loads> <body_load type="const"> <z lc="1">0.1</z> </body_load> </Loads> </Step>