Mechanical (cell) models#
A mechanical model defines the constitutive (force) behaviour of a cell type.
You select one as the template argument to
hemocell.addCellType<Model>(name, constructType). All models live in the
mechanics/ directory, derive from CellMechanics, and implement a
ParticleMechanics method that computes the membrane forces from the cell’s
current shape (see The cell model).
Available models#
Class (header) |
Typical use |
Description |
|---|---|---|
|
Red blood cells |
The validated, optimised RBC model. Uses the link, area, bending, and
volume force terms ( |
|
Platelets (PLT) |
A simpler model for the small, stiff platelet, usually constructed with
|
|
White blood cells / nucleated cells |
Extends the RBC-style membrane with an inner rigid core
( |
|
Infected / stiffened RBCs |
An RBC variant with an additional inner-link term ( |
|
Rigid / passive particles |
A null model: |
Force coefficients#
The coefficients shared by the deformable models are set per cell type in the
CELL.xml file (see CELL.xml and CELL.pos):
kLink, kArea, kBend, kVolume, and (where used) k_inner_link /
k_inner_rigid. The hard limits on each deformation mode are compiled in as
the cellgroup constants in constant_defaults.h:
Constant |
Meaning |
|---|---|
|
Maximum volumetric change allowed (quasi-incompressibility). |
|
Maximum surface-area change allowed. |
|
Maximum bending angle for red/white blood cells. |
|
Maximum bending angle for platelets (much larger, ~near rigid). |
|
Maximum persistence length, allowing up to ~300 % stretching. |
Note
These constants were tuned for validated, stable behaviour and are stored as
squared values for efficiency. Changing them affects stability; see the
commentary in constant_defaults.h before adjusting.
Writing your own model#
To create a new constitutive model, duplicate an existing model’s .h and
.cpp (rbcHighOrderModel is the usual template), rename the class, and
re-implement ParticleMechanics with your force law. Any response that can be
expressed as a force as a function of deformation will work. Then use it via
addCellType<YourModel>(...). See the FAQ entries on adding constitutive models and internal structural
mechanics, and Custom cells and reading cells from STL.