2D Reaction-Diffusion: Activator-Inhibitor

Open in Morpheus

Persistent Identifier

Use this permanent link to cite or share this Morpheus model:


A 2D activator-inhibitor model (Gierer and Meinhardt, 1972).

Stripe pattern generated by 2D Gierer-Meinhardt model.
Stripe pattern generated by 2D Gierer-Meinhardt model.


This model uses a standard Lattice with square structure and periodic boundary conditions.

The PDE defined two species or Layers $A$ (activator) and $I$ (inhibitor) with resp. low and high Diffusion rates. The reaction part of the equations are defined in the System.

The results are visualized using the Gnuplotter.

Things to try

  • Alter the level of saturation of the activator by changing kappa (for example, using a ParamSweep). By changing this parameter, the model can generate stripes, nets and spots.


A. Gierer, H. Meinhardt: A Theory of Biological Pattern Formation. Kybernetik 12: 30-39, 1972.


Get this model via:

XML Preview

<MorpheusModel version="3">
        <Field symbol="a" value="rand_norm(0.5,0.1)" name="activator">
            <Diffusion rate="0.02"/>
        <Field symbol="i" value="0.1" name="inhibitor">
            <Diffusion rate="1"/>
        <System solver="runge-kutta" time-step="5" name="Meinhardt">
            <Constant symbol="rho" value="0.001"/>
            <Constant symbol="rho_a" value="0.001"/>
            <Constant symbol="mu_i" value="0.03"/>
            <Constant symbol="mu_a" value="0.02"/>
            <Constant symbol="kappa" value="0.10"/>
            <DiffEqn symbol-ref="a">
                <Expression>(rho/i)*((a^2)/(1 + kappa*a^2)) - mu_a * a + rho_a</Expression>
            <DiffEqn symbol-ref="i">
                <Expression>rho*((a^2)/(1+kappa*a^2)) - mu_i *i</Expression>
        <Lattice class="square">
            <Size symbol="size" value="150 150 0"/>
            <NodeLength value="1"/>
                <Condition boundary="x" type="periodic"/>
                <Condition boundary="y" type="periodic"/>
        <SpaceSymbol symbol="space"/>
        <StartTime value="0"/>
        <StopTime value="12500"/>
        <SaveInterval value="0"/>
        <RandomSeed value="2"/>
        <TimeSymbol symbol="time"/>
        <Gnuplotter time-step="500" decorate="false">
            <Terminal size="400 400 0" name="png"/>
                <Field symbol-ref="a" min="0"/>
        <Logger time-step="250">
                <Symbol symbol-ref="a"/>
                <TextOutput file-format="csv"/>
                <Plot time-step="0">
                    <Style style="lines" line-width="5.0"/>
                    <Terminal terminal="png"/>
                        <Symbol symbol-ref="space.x"/>
                    <Y-axis minimum="0" maximum="3">
                        <Symbol symbol-ref="a"/>
                        <Symbol symbol-ref="i"/>
                        <Time mode="current"/>
                <Slice value="size.y/2" axis="y"/>
        <Logger time-step="100">
                <Symbol symbol-ref="a"/>
                <TextOutput file-format="matrix"/>
                <SurfacePlot time-step="500">
                        <Symbol symbol-ref="a"/>
                    <Terminal terminal="png"/>
                <Slice value="size.y/2" axis="y"/>


Files associated with this model: