2D Reaction-Diffusion: Activator-Inhibitor

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:

  • Morpheus-Link or
  • Morpheus GUI: ExamplesPDEActivatorInhibitor_2D.xml or
  •  Download: ActivatorInhibitor_2D.xml
  • 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: