carputils.mesh
.Ringcarputils.mesh.
Ring
(radius, thickness=None, height=None, div_transmural=1, div_circum=None, div_height=1, *args, **kwargs)Generate a mesh of a ring/cylindrical shell.
This class describes a tissue ring, and generates the described mesh. For example, to define a ring with a 5mm internal radius:
>>> geom = Ring(5)
By default, the thickness of the ring is 1/5 of the radius, and the height is the same as the thickness. These can be controlled exactly with the corresponding paramters:
>>> geom = Ring(5, thickness=0.5, height=0.7)
Discretisation of the ring is done into hexahedra, with one hex across both
the thickness and height. The circumferential discretisation is chosen to
ensure as regular aspect hexahedra as possible. If a tetrahedral mesh is
generated, these hexahedra are further subdivided into tets. Discretisation
can be controlled with the division div_
parameters:
>>> geom = Ring(5, 2, 0.7, div_transmural=3)
The ring’s fibre directions are, by default, oriented in the
circumferential direction. To control the fibre direction, pass a function
as the fibre_rule
argument that itself takes a normalised transmural
distance and returns a helix angle in radians:
>>> rule = lambda t: (1 - t)/2
>>> geom = Ring(5, 2, 0.7, fibre_rule=rule)
carputils.mesh.ring.linear_fibre_rule()
provides a convenient method
to generate such rules. For example, to generate a +60/-60 degrees linear
fibre rule:
>>> rule = linear_fibre_rule(60, -60)
>>> geom = Ring(5, 2, 7, fibre_rule=rule)
To generate the actual mesh, use the generate_carp()
and
generate_vtk()
methods.
cavity_volume
()Calculate the volume of the cavity analytically.
The actual volume may be less due to discretisation effects.
with_resolution
(radius, resolution, height=None, wallthickness=None, **kwargs)Simplified interface to generate ring with target resolution.