Requirements

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

Febio_Begin.png

Sofa_Begin.png

Deformed

Febio_Final.png

Sofa_Final.png

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.

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

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.

MeshToFebio.py

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.

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>

Specifications/IndentationModeling (last edited 2017-02-01 18:40:35 by landisb)