PyOIF (Python Object-in-fluid) is a module in ESPResSo software package for simulating elastic objects immersed in a fluid. It has a fast computational core that can be run in parallel and a user-friendly python scripting interface for setting up the simulations. The description of the implementation and functionality is available in our PyOIF user guide. More detailed information about the model, background and applications can be found in the book Computational Blood Cell Mechanics.
- Cells modelled as membranes encapsulating their inner cytoplasm
- Fully two-way interaction between cells and surrounding fluid
- Parallelisable (thus well-scalable)
- Different cell types available
- Complete information about the cell deformation
- Different fluid viscosity inside and outside the cell (under development)
- Open source under GNU General Public License
The initial geometry of each elastic object is defined in two files:
- nodes.dat that contains coordinates of the mesh points
- triangles.dat that contains triangular incidences
Meshes with several different densities:
- rbcs.zip – biconcave discoid surface of a red blood cell triangulated with different numbers of points. The triangulation is two dimensional: each triangle edge is shared by two triangles.
- spheres.zip – surface of a sphere triangulated with different numbers of points. The triangulation is two dimensional: each triangle edge is shared by two triangles.
- solid-ball.zip – three dimensional mesh consisting of tetrahedra filling a ball. An edge can be shared by more than two triangles. The elastic parameters kb and kv should not be used with these meshes.
- ellipsoids.zip – surface of an ellipsoid is triangulated with different numbers of points. The triangulation is two dimensional: each triangle edge is shared by two triangles. Two semi-axes of each ellipsoid have the same length and one has a different length. The name of each mesh-file includes the ratio of the semi-axes, where „p“ represents the decimal point.
Other meshes can be generated (e.g. in GMSH) and will work with PyOIF as long as they are in the required format.
- one_cell.py – simple script with one cell (described in user guide)
- two_cells_with_boundaries.py – more complex script with two cells and boundaries
- random_seeding.py – full version of the example script with random seeding of cells
- cell_wall.py – simple script that can be used for calibration of cell-wall interaction
- cell_cell.py – simple script that can be used for calibration of cell-cell interaction
- stretching.py – script for simulation of optical tweezers stretching experiment
- check_flow.py – script for checking fluid flow through the membrane
The default PyOIF output for visualisations are .vtk files that can be displayed and animated in ParaView.
We are always happy to hear from the users of PyOIF. So if there is a functionality you would like to see in the future (e.g. we are currently working on adding the option to set a different inner viscosity for cells) or if you need help with setting up your PyOIF simulations, feel free to contact us.
PyOIF is a free open-source software, however we would greatly appreciate if you could cite the following in the published documents:
- I. Jančigová, K. Kovalčíková, R. Weeber, I. Cimrák: PyOIF: Computational tool for modelling of multi-cell flows in complex geometries, PLoS Computational Biology, 16(10): e1008249, 2020. https://doi.org/10.1371/journal.pcbi.1008249
- tcl implementation of an older model: I. Cimrák, M. Gusenbauer, I. Jančigová, An ESPResSo implementation of elastic objects immersed in a fluid, Computer Physics Communications, 2014, 185, (3), 900-907.