Skip to main content

Create meshes from segmented imaging data for finite element simulations using Gmsh.

Project description

biomesh

pipeline

:rocket: Installation

biomesh can be installed via pip as

pip install biomesh

If you want to generate a mesh with Gmsh, you also need to install the gmsh python library as

pip install gmsh

:book: Usage

biomesh is composed of multiple utilities for working with complex biomechanical geometries. Below are some common workflows

Generate a mesh from colored STL files

Colored STL-files (e.g., exported from Materialise 3-matic) can be used to generate a volume mesh. Although STL color encoding is not standardized, some software packages embed surface IDs in unused byte fields. biomesh leverages this to extract surface information.

:point_right: Generating a mesh from stl-files requires the gmsh Python package.

import biomesh

mesh = biomesh.mesh_colored_stl_files(
    "path/to/part1.stl",
    "path/to/part2.stl",
    "path/to/part3.stl",
    mesh_size=2.0
)

Alternatively, you can load the meshes from any format supported by meshio:

import meshio

meshio.read("path/to/mesh.vtu")

Convert linear to quadratic elements

Convert linear elements in your mesh to quadratic ones:

mesh = biomesh.lin_to_quad(mesh)

Reorder mesh nodes

Finite element solvers often benefit from reducing bandwidth in the system matrix. biomesh provides a node reordering algorithm based on Cuthill-McKee's algorithm to improve efficiency:

mesh = biomesh.reorder(mesh)

Merge multiple meshes

Combine several meshes into a single mesh object:

mesh_all = biomesh.merge(mesh1, mesh2, mesh3)

:warning: Overlapping points are not automatically merged.

Filter a mesh

Extract a subset of a mesh using flexible filters. For example, filtering by cell type:

# keep only hexahedral cells
filter_hex = lambda block : block.type == 'hexahedron'
mesh_filtered = biomesh.filter.by_cellblock(mesh, filter_hex)

# Get point mapping from old -> new IDs
point_mapping = biomesh.filter.points_map_by_cellblock(mesh, filter_hex)

Solve simple Laplace problem

biomesh can also solve basic Laplace problems, commonly used to estimate fiber directions with rule based methods.

dbc_nodes = np.array([0, 1, 2, 4])
dbc_values = np.array([0.0, 0.0, 1.0, 1.0])

phi = biomesh.solve(mesh, dbc_nodes, dbc_values)

# or equivalently
phi = biomesh.solve_onezero(mesh, np.array([2, 4]), np.array([0, 1]))

The result phi is the solution vector of the Laplace problem.

Finite Element Utilities

biomesh.fe provides helper functions for finite element analysis. For example, compute the nodal averaged gradient of a scalar field:

grad_phi = biomesh.fe.grad(mesh, phi)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

biomesh-0.5.1.tar.gz (99.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

biomesh-0.5.1-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file biomesh-0.5.1.tar.gz.

File metadata

  • Download URL: biomesh-0.5.1.tar.gz
  • Upload date:
  • Size: 99.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for biomesh-0.5.1.tar.gz
Algorithm Hash digest
SHA256 786ee32b57e67fdfa6f11462d41d6fd57576c5552aeedbca56fa9b8f437839b7
MD5 3801992b79ae9cdf16b78a9b1fe4fc6b
BLAKE2b-256 65dd591631408f164f8554d163d66a3875997574f4b2f0fb745697d07d6a24ea

See more details on using hashes here.

File details

Details for the file biomesh-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: biomesh-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for biomesh-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f42cd953dd5bd0e17a8c997cc8b6f50efd36f75245dcc759995a33bcb4154f0d
MD5 94c7a82e86a7064d79c2e9d1715a06f2
BLAKE2b-256 35ecb04a1e3e8e2ca0487b48688c4115899052e31ab9ce76457a570e45dda85b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page