This example shows self-organized collective motion of cells as a result of persistence (‘cellular inertia’). A similar model has recently been used by Czirók et al. (2013).

Persistence of individual cells causes self-organized collective motion.

Model description

The model uses the Persistence plugin that causes cells to prefer to move in their current direction. The direction is stored in a PropertyVector that is used to plot the color and arrows in Gnuplotter.

The model is simulated in a circular domain with constant boundary conditinos, which can be set up in Lattice/Domain/Circle. The value for the constant boundary is specified in CPM/BoundaryValue.

Things to try

  • Change the boundary conditions from circular=constant to $x/y$=periodic and observe the resulting collective motion.
  • Change the decay-time of Persistence (specifying the ‘memory’).


In Morpheus GUI: Examples 🠒 CPM 🠒 Persistence_2D.xml.

<MorpheusModel version="3">
        <VariableVector symbol="d" value="0.0, 0.0, 0.0" name="Moving direction"/>
        <Constant symbol="density" value="0.012"/>
        <Lattice class="square">
            <Size symbol="size" value="200, 200, 0"/>
            <Domain boundary-type="constant">
                <Circle diameter="200"/>
        <SpaceSymbol symbol="space"/>
        <TimeSymbol symbol="time"/>
        <StartTime value="0"/>
        <StopTime value="5000"/>
        <RandomSeed value="4"/>
        <CellType class="biological" name="obstacle">
        <CellType class="biological" name="ct1">
            <PropertyVector symbol="d" value="0.0, 0.0, 0.0" name="Moving direction"/>
            <Property symbol="s" value="5"/>
            <VolumeConstraint target="100" strength="1"/>
            <SurfaceConstraint target="0.9" mode="aspherity" strength="1"/>
            <PersistentMotion protrusion="true" decay-time="50" strength="s"/>
            <MotilityReporter time-step="50">
                <Velocity symbol-ref="d"/>
        <CellType class="medium" name="medium"/>
            <Contact type1="ct1" type2="medium" value="16"/>
            <Contact type1="ct1" type2="ct1" value="1"/>
        <MonteCarloSampler stepper="edgelist">
            <MCSDuration value="1"/>
            <MetropolisKinetics temperature="10"/>
        <ShapeSurface scaling="norm">
        <Population size="1" type="obstacle">
            <InitCellObjects mode="distance">
                <Arrangement repetitions="1, 1, 1" displacements="1, 1, 1">
                    <Box size="20,30,0" origin="130,100,0"/>
        <Population size="0" type="ct1">
            <InitCircle mode="regular" number-of-cells="400">
                <Dimensions radius="100" center="100, 100, 0"/>
        <Gnuplotter time-step="100">
            <Terminal size="1000 600 0" name="png"/>
                <Cells value=""/>
                <!--    <Disabled>
        <CellArrows style="1" orientation="3 * d / d.abs"/>
                <Cells value="d.phi" min="0.0" max="6.28">
                        <Color value="6.28" color="red"/>
                        <Color value="3.14" color="blue"/>
                        <Color value="0.0" color="red"/>
                <CellArrows style="1" orientation="3 * d / d.abs"/>
        <Logger time-step="10">
                <Symbol symbol-ref=""/>
                <Symbol symbol-ref=""/>
                <TextOutput file-separation="cell"/>
                <Plot time-step="50">
                    <Style style="lines" line-width="2.0"/>
                    <Terminal terminal="png"/>
                    <X-axis minimum="0.0" maximum="size.x">
                        <Symbol symbol-ref=""/>
                    <Y-axis minimum="0.0" maximum="size.y">
                        <Symbol symbol-ref=""/>
                        <Symbol symbol-ref="time"/>
                        <Time mode="history" history="50"/>


A. Czirók, K. Varga, E. Méhes, A. Szabó: Collective cell streams in epithelial monolayers depend on cell adhesion. New J. Phys. 15 (7): 075006, 2013.