Tuomas Tallinen
Academy Research Fellow
Soft Matter Mechanics

Here are source codes for some of our numerical models. All codes are written in C++ and parallelized via MPI or OpenMP. The codes use vector and matrix functions from vema.h, but are stand-alone otherwise. The codes are certainly not black boxes; code-level tweaking is needed between applications.

Growing soft solids


Codes modeling morphogenesis and mechanical pattern formation, based on the explicit finite element method

Soft surface 2D: A growing soft layer with free surface in a simple 2D-setup. Models surface instability and formation of folds, gyri, sulci etc. Minimal implementation (no parallelization) using triangular finite elements and an explicit solver to minimize deformation energy.

Code: Gyrus.cpp

Soft surface 3D: A growing (or swelling) soft layer with free surface in 3D for modeling pattern formation in layered systems. Implements large strain tetrahedral elements on a triangle-prism mesh. The surface is self-avoiding via node-face contact processing. Parallelized via MPI. We have used variants of this code in our brain gyrification and gut morphogenesis works, whose supplementary informations provide details of the model.

Code: Layers3D.cpp

Brain folder: A finite strain solid with differential surface growth on arbitrary geometries (e.g., an MRI-image). Uses constant strain tetrahedral finite elements with nodal pressure formulation. Inelastic effects, such as stress relaxation and feedback, are accounted for by multiplicative decomposition of the deformation gradient. Loads the initial mesh from a file that can be exported from, e.g., Netgen. Parallelized via OpenMP.

Code: Brains.cpp

Thin sheets


Codes for crumpling, wrinkling and tearing of thins sheets, developed mainly during my Ph.D. thesis work

Membrane with thermal fluctuations: A hexagonally shaped self-avoiding membrane is discretized to a triangular lattice of nodes, each having only translational degrees of freedom. Elasticity of the sheet is provided by springs connecting neighboring nodes and bending stiffness between adjacent triangles. Langevin dynamics is applied to model thermal fluctuations. We used this code to study thermal and mechanical stability of membranes.

Code: Membrane.cpp
Code and parameters: membrane.zip

Crumpling of an elasto-plastic sheet: The sheet is discretized to a triangular lattice of nodes, each having translational and rotational degrees of freedom. The nodes are connected by two-node beam-like elastic-plastic elements. The sheet is self-avoiding, implemented by repulsive point-triangle and edge-edge contacts. We have used this code to study elastic and elasto-plastic crumpling. We also used this code with a random lattice in our tearing work.

Code: Crump.cpp
Code and parameters: crump.zip