Differences between revisions 11 and 12
Revision 11 as of 2015-09-16 19:48:50
Size: 7902
Comment:
Revision 12 as of 2015-09-16 20:17:20
Size: 9226
Comment:
Deletions are marked like this. Additions are marked like this.
Line 69: Line 69:
  * Surface tab: Select "Load" from drop-down menu (e.g. femur.stl)   * Surface tab: select "Load" from drop-down menu (e.g. femur.stl).
Line 71: Line 71:
  * Click on name of loaded surface geometry in Object Manager
  * e.g. set Opacity to 0.5 (out of 1.0 = opaque)
  * Click on name of loaded surface geometry in Object Manager.
  * e.g. set Opacity to 0.5 (out of 1.0 = opaque).
Line 74: Line 74:
  * Block(s) tab: Select "Create" from drop-down menu
  * Select "Create block from surface bounds"
  * Click "Apply"
  * Block(s) tab: select "Create" from drop-down menu.
  * Select "Create block from surface bounds".
  * Click "Apply".
Line 78: Line 78:
  * Block(s) tab: Select "Build/Edit" from drop-down menu
  * Click hand button
  * Block(s) tab: select "Build/Edit" from drop-down menu.
  * Click hand button.
Line 81: Line 81:
   * Rotate view (left mouse button outside of block geometry)
   * Move node in planes perpendicular to view
   * Rotate view orthogonal to first view
   * Move node to final desired location
   * Click "Cancel" to finish
   * Rotate view (left mouse button outside of block geometry).
   * Move node in planes perpendicular to view.
   * Rotate view orthogonal to first view.
   * Move node to final desired location.
   * Click "Cancel" to finish.
Line 87: Line 87:
  * Block(s) tab: Select "Build/Edit" from drop-down menu
  * Iteratively partition block and edit/move newly created nodes
   * Click "Split" button
   * Select an edge perpendicular to desired block partitioning dimension (turns green when selected)
   * Click "Apply"
   * Iteratively move nodes (as in prior step)
  * Block(s) tab: select "Build/Edit" from drop-down menu.
  * Iteratively partition block and edit/move newly created nodes:
   * Click "Split" button.
   * Select an edge perpendicular to desired block partitioning dimension (turns green when selected).
   * Click "Apply".
   * Iteratively move nodes (as in prior step).
  * Click "Cancel" to finish.
 1. Save block IF desired:
  * Block(s) tab: select "Save" from drop-down menu.
  * Select desired "Building Block" in drop-down menu.
  * Click "Apply".
  * Name "File name" as desired.
  * Click "Save".
 1. Assign Mesh Seeds:
  * Mesh tab: select "Assign/Edit Mesh Seeds" from drop-down menu.
  * Select "Element Length" from drop-down menu.
  * Click "Apply".
  * Iteratively refine seed sizes:
   * Select a block edge in the 3D view to refine seeding for a particular partition of the block (vectors showing partition dimension will appear, i.e. Rx (red), Ry (green), Rz (blue)).
   * Make desired partition dimension seeding either smaller or larger to decrease or increase the seed size respectively.
   * Click "Cancel" to finish.
 1. Create mesh:
  * Mesh tab: select "Create" from drop-down menu.
  * Select "Surface Mesh", select "quad" (square).
  * Specify "Node" and "Element" Label names.
  * Click "Apply".
 1. Export mesh:
  * Mesh tab: select "Export ABAQUS File" from drop-down menu.
  * Select desired "Mesh" in drop-down menu.
  * Click "Apply".
  * Name "File name" as desired.
  * Click "Save".
Line 96: Line 122:
IA-FEMesh surface mesh: attachment:femur_IA-FEMesh_SurfMesh.py IA-FEMesh surface mesh: attachment:femur_IA-FEMesh_SurfMesh.vtk
Line 104: Line 130:

See Quadrilateral Meshing section above.
Line 187: Line 216:
 1. Export mesh:
  * Select mesh name in Geometry hierarchy window.
  * File ->

TableOfContents()

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

Include(Infrastructure/AuxiliarySoftware, "Infrastructure", 2, from="= Geometry & Mesh Generation & Manipulation =", to="= Scripting & Numerical Analysis =")


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 + rounded STL:

Software: IA-FEMesh, Version 1.0

Method: Quadrilateral Surface Meshing

Input: rounded STL triangulated surface geometry (i.e. no sharp edges in STL surface geometry)

Example Files:

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

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

NOTES: block edges should be tangential to and circumscribed about surface geometry

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

  1. Run IA-FEMesh.
  2. Load surface geometry:
    • Surface tab: select "Load" from drop-down menu (e.g. femur.stl).
  3. Change surface geometry opacity:
    • Click on name of loaded surface geometry in Object Manager.
    • e.g. set Opacity to 0.5 (out of 1.0 = opaque).
  4. Create a basic block:
    • Block(s) tab: select "Create" from drop-down menu.
    • Select "Create block from surface bounds".
    • Click "Apply".
  5. Move basic block nodes to project to desire locations on surface:
    • Block(s) tab: select "Build/Edit" from drop-down menu.
    • Click hand button.
    • Iteratively refine node positions:
      • Rotate view (left mouse button outside of block geometry).
      • Move node in planes perpendicular to view.
      • Rotate view orthogonal to first view.
      • Move node to final desired location.
      • Click "Cancel" to finish.
  6. Partition block to refine block geometry to match surface geometry:
    • Block(s) tab: select "Build/Edit" from drop-down menu.
    • Iteratively partition block and edit/move newly created nodes:
      • Click "Split" button.
      • Select an edge perpendicular to desired block partitioning dimension (turns green when selected).
      • Click "Apply".
      • Iteratively move nodes (as in prior step).
    • Click "Cancel" to finish.
  7. Save block IF desired:
    • Block(s) tab: select "Save" from drop-down menu.
    • Select desired "Building Block" in drop-down menu.
    • Click "Apply".
    • Name "File name" as desired.
    • Click "Save".
  8. Assign Mesh Seeds:
    • Mesh tab: select "Assign/Edit Mesh Seeds" from drop-down menu.
    • Select "Element Length" from drop-down menu.
    • Click "Apply".
    • Iteratively refine seed sizes:
      • Select a block edge in the 3D view to refine seeding for a particular partition of the block (vectors showing partition dimension will appear, i.e. Rx (red), Ry (green), Rz (blue)).
      • Make desired partition dimension seeding either smaller or larger to decrease or increase the seed size respectively.
      • Click "Cancel" to finish.
  9. Create mesh:
    • Mesh tab: select "Create" from drop-down menu.
    • Select "Surface Mesh", select "quad" (square).
    • Specify "Node" and "Element" Label names.
    • Click "Apply".
  10. Export mesh:
    • Mesh tab: select "Export ABAQUS File" from drop-down menu.
    • Select desired "Mesh" in drop-down menu.
    • Click "Apply".
    • Name "File name" as desired.
    • Click "Save".

Example file results:

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

HEXAHEDRAL MESHING

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

IA-FEMesh + STL:

See Quadrilateral Meshing section above.

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

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

    • If warned to "take units in account", select "Yes".
  4. If geometry is not visible in OCC 3D scene viewer:
    • click 'Global Panning" button in OCC viewer.
  5. 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.
  6. To volumetrically render the geometry, select:
    • View -> Display Mode -> Shading With Edges

  7. Check geometry information:
    • Measures -> What is

    • Need to REPAIR the geometry IF:
      1. faces are not watertight
      2. it is NOT a solid.
      3. it does NOT have: 8 vertices, 12 edges, 6 wires, 6 faces.
  8. IF geometry REPAIR is needed:
    1. 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_#
    2. 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
    3. 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

  9. Explode edges from solid geometry:
    • New Entity -> Explode

    • Select Sub-shape Types: Edge
  10. Activate the Mesh module.
  11. 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
  12. 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
  13. Calculate mesh:
    • Mesh -> Compute

  14. Export mesh:
    • Select mesh name in Geometry hierarchy window.
    • File ->

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)

Specifications/MeshGeneration (last edited 2019-06-25 17:20:14 by klonowe)