2D reaction-diffusion: Activator-Inhibitor

Introduction

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

Stripe pattern generated by 2D Gierer-Meinhardt model

Model description

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.

Model

In Morpheus GUI: Examples 🠒 PDE 🠒 ActivatorInhibitor_2D.xml.

<MorpheusModel version="3">
    <Description>
        <Title>Example-ActivatorInhibitor-2D</Title>
        <Details></Details>
    </Description>
    <Global>
        <Field symbol="a" value="rand_norm(0.5,0.1)" name="activator">
            <Diffusion rate="0.02"/>
        </Field>
        <Field symbol="i" value="0.1" name="inhibitor">
            <Diffusion rate="1"/>
        </Field>
        <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>
            <DiffEqn symbol-ref="i">
                <Expression>rho*((a^2)/(1+kappa*a^2)) - mu_i *i</Expression>
            </DiffEqn>
        </System>
    </Global>
    <Space>
        <Lattice class="square">
            <Size symbol="size" value="150 150 0"/>
            <NodeLength value="1"/>
            <BoundaryConditions>
                <Condition boundary="x" type="periodic"/>
                <Condition boundary="y" type="periodic"/>
            </BoundaryConditions>
            <Neighborhood>
                <Order>1</Order>
            </Neighborhood>
        </Lattice>
        <SpaceSymbol symbol="space"/>
    </Space>
    <Time>
        <StartTime value="0"/>
        <StopTime value="12500"/>
        <SaveInterval value="0"/>
        <RandomSeed value="2"/>
        <TimeSymbol symbol="time"/>
    </Time>
    <Analysis>
        <Gnuplotter time-step="500" decorate="false">
            <Terminal size="400 400 0" name="png"/>
            <Plot>
                <Field symbol-ref="a" min="0"/>
            </Plot>
        </Gnuplotter>
        <Logger time-step="250">
            <Input>
                <Symbol symbol-ref="a"/>
            </Input>
            <Output>
                <TextOutput file-format="csv"/>
            </Output>
            <Plots>
                <Plot time-step="0">
                    <Style style="lines" line-width="5.0"/>
                    <Terminal terminal="png"/>
                    <X-axis>
                        <Symbol symbol-ref="space.x"/>
                    </X-axis>
                    <Y-axis minimum="0" maximum="3">
                        <Symbol symbol-ref="a"/>
                    </Y-axis>
                    <Color-bar>
                        <Symbol symbol-ref="i"/>
                    </Color-bar>
                    <Range>
                        <Data/>
                        <Time mode="current"/>
                    </Range>
                </Plot>
            </Plots>
            <Restriction>
                <Slice value="size.y/2" axis="y"/>
            </Restriction>
        </Logger>
        <Logger time-step="100">
            <Input>
                <Symbol symbol-ref="a"/>
            </Input>
            <Output>
                <TextOutput file-format="matrix"/>
            </Output>
            <Plots>
                <SurfacePlot time-step="500">
                    <Color-bar>
                        <Symbol symbol-ref="a"/>
                    </Color-bar>
                    <Terminal terminal="png"/>
                </SurfacePlot>
            </Plots>
            <Restriction>
                <Slice value="size.y/2" axis="y"/>
            </Restriction>
        </Logger>
    </Analysis>
</MorpheusModel>

Reference

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

Previous
Next