Life X - idealized_LV

Life X - idealized_LVΒΆ

Life X recently published their own implementation of the LDRB algorithm and with that they also publushed a lot of example meshes. This demo aims to try out this implementation of the LDRB algorithm on these example meshes. The LifeX example meshes can be found at https://zenodo.org/record/5810269#.YeEjWi8w1B0, which also contains a DOI: https://doi.org/10.5281/zenodo.5810269.

This demo assumes that you have downloaded the folder with the meshes in the same format as they are uploaded on zenodo, so that the gmsh files are located in a folder called lifex_fiber_generation_examples/mesh.

First we import the necessary packages. Note that we also import meshio which is used for converted from .msh (gmsh) to .xdmf (FEnICS).

import dolfin
import ldrb

Load the mesh and markers.

mesh, ffun, markers = ldrb.gmsh2dolfin(
    "lifex_fiber_generation_examples/mesh/idealized_LV.msh",
)

Here the markers are actually parsed with meshio, but they have the wrong name so we just rename them

ldrb_markers = {
    "epi": markers["Epicardium"][0],
    "lv": markers["Endocardium"][0],
    "base": markers["Basal plane"][0],
}

Select linear langange elements

fiber_space = "P_1"

Compute the fiber-sheet system

fiber, sheet, sheet_normal = ldrb.dolfin_ldrb(
    mesh=mesh,
    fiber_space=fiber_space,
    ffun=ffun,
    markers=ldrb_markers,
    alpha_endo_lv=60,  # Fiber angle on the endocardium
    alpha_epi_lv=-60,  # Fiber angle on the epicardium
    beta_endo_lv=0,  # Sheet angle on the endocardium
    beta_epi_lv=0,  # Sheet angle on the epicardium
)

And save the results

with dolfin.XDMFFile(mesh.mpi_comm(), "idealized_LV_fiber.xdmf") as xdmf:
    xdmf.write(fiber)

_