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.