You are on page 1of 16

COMPUTATIONAL

BIOMECHANICS
Understanding FEBio file format
WHAT IS FEBIO?
An open-source, nonlinear finite element solver that is
specifically designed for biomechanical applications.
Powerful tool for solving 3D problems in computational
biomechanics.
Resources available to download from http://febio.org.
Reference paper: Maas et al. (2012), FEBio: Finite
Elements for Biomechanics Journal of Biomechanical
Engineering Vol. 134

* Reader are strongly encouraged to refer to FEBio theory


and user manual to explore many more different
applications available in FEBio.
HOW IT WORKS
Generally, finite element modeling and simulation involves:

Design modeling Export model data Preview simulation


Define loading and and parameter in Run simulation result.
boundary condition. FEBio file format Export result data.
Meshing. (name.feb)
HOW IT WORKS
Often, it would be much easier to
control the parameter from the
febio text file instead of the GUI
(PreView).

FEBio sytax: xml


HOW IT WORKS
Say, the necessary parameter for a FE model is arranged in blocks.
Material properties Boundary condition
Nodes
Geometry Loading condition
Elements
Contact condition
Loading and boundary condition
Constraints

Sequence of loading Discrete data

Output required Load data


HEADER*
<?xml version="1.0" encoding="ISO-
For each block, it was defined First three line to tell the 8859-1"?>
system that this text file <febio_spec version="2.0">
by calling the respective is an .xml febio file <Module type="solid"/>
keyword and ended with <Globals>
<Constants>
</keyword> tag. Type of analysis:
solid
<T>0</T>
For example, the material biphasic <R>0</R>
solute <Fc>0</Fc>
block is defined by: multiphasic </Constants>
heat </Globals>
<Material>

<Material>
...
</Material> Material properties
</Material>

<Geometry>
Remark:
Geometry ...
Febio text editing can be performed basically in A NY text </Geometry>
editing software (eg. notepad, etc). However, use of Sublime
Text is r ecommended due to its friendly and practical user
experience.
File should be saved as filename.feb extension.
Now, consider a very simple FE model
Compression
100N

Hyperelastic
Bone Mooney-Rivlin
tissue
E=23.8MPa
C1=0.108MP
V = 0.4
C2=0.027

Fixed
Cubic block consists of three component
Component 1 ( Tissue) = 10 mm x 10 mm x 10 mm Meshed with
Component 2 ( Bone) = 10 mm x 10 mm x 5 mm hexahedral
element.
Defining material
<Material>
<material id=1 name=Tissue type=Mooney-Rivlin>
<density>1</density>
<c1>0.108</c1> First material (tissue)
<c2>0.027</c2> assigned to ID = 1
<k>0.37<k>
</material>

<material id=2 name=Bone type=isotropic elastic>


<density>1</density>
<E>23.8</E>
<v>0.4</v>
</material>
Second material (tissue)
assigned to ID = 2
</Material>
Defining geometry
<Geometry>
Geometry definition comprises
of the NODES and ELEMENTS <Nodes>
. 1
description. </Nodes>
Both description shall be <Elements >
enclosed within the GEOMETRY 2
block. </Elements>

</Geometry
Defining geometry - nodes
(0,5,5) (5,5,5)
<Nodes> 8 7
<node id="1">0, 0, 0</node> 10mm (0,5,0)
<node id="2">5, 0, 0</node> 4 3
<node id="3">5, 0, 5</node> 6
1 2 (5,5,0)
<node id="4">0, 5, 0</node> (5,0,0)
(0,0,0)
<node id="5">0, 0, 5</node>
<node id="6">5, 5, 0</node>
<node id="7">5, 5, 5</node> 20mm
(0,0,0)
<node id="8">0, 5, 5</node>
<node id=9>.
10mm

... Recall:
... Component 1 (Tissue) = 10 mm x 10 mm x 10 mm
</Nodes> Component 2 (Bone) = 10 mm x 10 mm x 5 mm
Defining geometry - elements
Material assignment for
respective element (based on
<Elements type="hex8" mat=1" elset=Element_tissue"> material block)
<elem id="1"> 1, 2, 4, 3, 5, 6, 7, 8</elem>
<elem id=2"> ... </elem>
<elem id=3> 13, 14, 2, 1, 15, 16, 6, 5 </elem>
9
<elem id=4"> ... </elem> 7 5
<elem id=5"> ... </elem> 10 4 3 6
<elem id=6"> ... </elem> 2 1 6 1 2
9
<elem id=7"> ... </elem> 1 2
3
16
<elem id=8"> ... </elem> 4 3 16 13 14
</Elements> 17 13 14

<Elements type="hex8" mat=2" elset=Element_bone">


<elem id=9"> </elem> Recall:
The component was meshed with hexahedral
element with 8 nodes. (code in febio: hex8)
</Elements>
Defining loading condition
<Loads>

<body_load type=constant>
<x lc=1>0.00</x> Compression
<y lc=2>100</y> 100N
<z lc=3>0.00</z>
</body_load>

</Loads>
lc : Indicate load curve
<Boundary>
incremental strategy for
<fix bc=xyz> convergence.
<node id=26/> By default, its a straight 33 32
<node id=27/> line curve passing two 29 28
points ( 0,0) and ( 1,1) 31

with x-axis represent 26 27

time unit, and y-axis
</fix> represent loading ratio. Fixed
</Boundary>
Defining contact condition
<Contact>
<contact type="sticky" name="Sticky01">
<laugon>0</laugon>
<tolerance>0.2</tolerance>
<penalty>1</penalty>
<minaug>0</minaug>
<maxaug>10</maxaug>

<surface type="master">
<quad4 id="1"> 29, 28, 32, 33</quad4>
<quad4 id="2"> </quad4> 15 16
14
13
</surface>
<surface type=slave> 33 32
<quad4 id="1"> 13, 14, 16, 15</quad4> 29 28
<quad4 id="2"> </quad4>

</surface>
<contact>
<Contact>
Defining load data
<LoadData>

<loadcurve id=1 type=smooth When defining loading


<point>0,0</point> condition (previous slide), the
<point>1,1</point>
</loadcurve>
load curve increment strategy
shall be employed to improve
<loadcurve id=2 type=smooth convergence.

</load curve> Meaning, from 0 to 1 time
<loadcurve id=3 type=smooth
unit, the load applied to the FE
model is in incremental
</load curve> manner. Loading ratio

<LoadData 1

Time unit
0 1
Defining step
<Step> Simulation that requires multiple
<Control> step shall be defined here. Any
<time_steps>200</time_steps> condition (eg. loading, boundary,
<step_size>0.005</step_size> etc) can be inserted in the step
<analysis type="static"></analysis>
block.
</Control>

</Step>
Defining output
<Output> Output to be displayed are:
<plotfile type="febio"> 1) Displacement
<var type="displacement"/> 2) Stress
<var type="stress"/>
</plotfile>
Refer to FEBio manual for
</Output>
different kind of output available.

You might also like