# Target Outcome

Finite element mesh of a tissue of interest ready for model development:

- node definitions
- element definitions
- node set definitions
- element set definitions
- surface set definitions

# Prerequisites

## Previous Protocols

For more details, see ["Specifications/GeometryGeneration"].

# Protocols

## Input

- Explicit surface representation of tissue of interest; in STL format in MRI coordinate system (processed with volume preserving smoothing)
Parametric surface representation of tissue of interest in IGES & STP format in MRI coordinate system (processed with volume preserving smoothing)

Parametric solid model of tissue of interest in IGES & STP format in MRI coordinate system (processed with volume preserving smoothing)

## Meshing Techniques

-- ["aerdemir"] DateTime(2013-12-30T15:14:36Z) This section may list general purpose procedures and alternatives to utilize the same input to reach the same output. Procedures optimized for specific tissues should also be provided in here.

### TETRAHEDRAL MESHING

### QUADRILATERAL MESHING

*Model components:* rigid bodies, shell (i.e. bone: femur, tibia, patella)

#### IA-FEMesh + STL:

* Software:* IA-FEMesh, Version 1.0

* Method:* Quadrilateral Surface Meshing

* Input:* STL triangulated surface geometry

**Example Files:**

OpenKnee, Gen. 1 model, femoral geometry (w/o holes): attachment:femur.igs,

IA-FEMesh block: attachment:femur_IA-FEMesh_Block.py

* LIMITATION:* not able to control projection of block edge elements nodes to geometric edges!

- Run IA-FEMesh

**Example file results:**

IA-FEMesh surface mesh: attachment:femur_IA-FEMesh_SurfMesh.py

### HEXAHEDRAL MESHING

**Model components:** deformable bodies, volumetric (i.e. cartilage, ligaments, menisci)

#### IA-FEMesh + STL:

#### Salome Sub-Meshing + Hex-topology IGES:

* Software:* Salome 7.5.1

* Method:* Hexahedral Sub-Meshing (NOTE: tried Salome HEXABLOCK meshing, but face elements were twisted due to edge curvature)

* Input:* IGES parametric surface/volume geometry with hexahedral topology (i.e. 8 nodes, 12 edges, 6 faces)

**Example Files:**

OpenKnee, Gen. 1 model, lateral tibia cartilage geometry: attachment:lat_tibial_cartilage.igs,

Salome meshing script: attachment:lat_tibial_cartilage_Salome_HEX.py

- Run Salome.
- Activate "New" Geometry Module.
- Load IGES file:
File -> Import -> IGES (e.g. lat_tibial_cartilage.igs)

- If warned to "take units in account", select "Yes".

- If geometry is not visible in OCC 3D scene viewer:
- click 'Global Panning" button in OCC viewer.

- If 3D view manipulation shortcut + mouse button control is not working:
- click "Rotation" button in OCC viewer and rotate view a little, then shorcut + mouse will work.

- To volumetrically render the geometry, select:
View -> Display Mode -> Shading With Edges

- Check geometry information:
Measures -> What is

- Need to REPAIR the geometry IF:
- faces are not watertight
- it is NOT a solid.
- it does NOT have: 8 vertices, 12 edges, 6 wires, 6 faces.

- IF geometry REPAIR is needed:
- IF edges of faces are not watertight, SEW the geometry:
Repair -> Sewing

- Select shape: loaded geometry (e.g. lat_tibial_cartilage_1)
- Iteratively reduce the tolerance (from 1e-7) one order of magnitude at a time until geometry is valid:
- Check "What is" geometry until the result has: 6 wires, 6 faces, 1 shell.
- e.g. 1e-5 works with example geometry (lat_tibial_cartilage_1)

- OUTPUT GEOMETRY NAME: Sewing_#

- IF geometry is NOT SOLID:
New Entity -> Build -> Solid

- Select sewing: Sewing_#
- Check "What is" geometry: 6 wires, 6 faces, 1 shell, 1 solid.
- OUTPUT GEOMETRY NAME: Solid_1

- IF geometry has MORE THAN 8 vertices OR 6 edges:
Repair -> Remove Extra Edges

- Select: Solid_1
- Check "What is" geometry: 8 vertices, 12 edges, 6 wires, 6 faces, 1 shell, 1 solid.
OUTPUT GEOMETRY NAME: NoExtraEdges_1

- IF edges of faces are not watertight, SEW the geometry:
- Explode edges from solid geometry:
New Entity -> Explode

- Select Sub-shape Types: Edge

- Activate the Mesh module.
- Create a new mesh:
Mesh -> Create Mesh

Geometry: NoExtraEdges_1

- Mesh type: Hexahedral
- 3D tab:
- Algorithm: Hexahedron (i,j,k)

- 2D tab:
- Algorithm: Quadrangle (Mapping)
- Hypothesis:
- Transition: Standard

- Create 3 sub-meshes for each set of 4 matching hex-mesh block dimension edges:
Mesh -> Create Sub-mesh

Name: SubMesh_<dim> (e.g. SubMesh_z -or- SubMesh_3)

- Mesh: Mesh_1
- Geometry: interactively select 4 corresponding edges in Geometry hierarchy window
- use Shift or Ctrl to select multiple edges at once
e.g. for SubMesh_z, select: Edge_1, Edge_2, Edge_9, Edge_10

e.g. for SubMesh_x, select: Edge_3, Edge_4, Edge_11, Edge_12

e.g. for SubMesh_y, select: Edge_5, Edge_6, Edge_7, Edge_8

- 1D tab:
- Algorithm: Wire Discretisation
- Hypothesis: Nb. Segments
Name: Nb. Segments_<dim> (e.g. Nb. Segments_z)

Number of Segments: <desired #> (e.g. z = 3, x = 50, y = 50)

- Type of distribution: Equidistant distribution
- NOTE: create new Hypothesis for each block dimension: x,y,z

- Calculate mesh:
Mesh -> Compute

**Example file results:**

attachment:lat_tibial_cartilage_Salome_HEX.png

#### Salome + STL:

## Output

- Finite element mesh of tissue of interest; in human readable format, e.g., Abaqus input (INP) file, XML file, or as open format binary files, e.g., MED file, including
- node definitions (numbering and coordinates)
- element definitions (numbering, element-specific node numbers and connectivity)
- node set definitions (set name(s) and relevant node numbers)
- element set definitions (set name(s) and relevant element numbers)
- face definitions (numbering, face-specific node numbers and connectivity)
- surface set definitions (set name(s) and relevant face numbers)