Brusselator

class otp.brusselator.BrusselatorProblem

Bases: otp.Problem

A two-variable model for an autocatalytic reaction.

The Brusselator chemical reaction [LN71] is given by

\[\begin{split} \ce{ A &-> X \\ B + X &-> Y + D \\ 2X + Y &-> 3X \\ X &-> E } \end{split}\]

With the assumption that all reaction rates are one and the concentrations of \(\ce{A}\) and \(\ce{B}\) are constant parameters, this system can be modeled by the following two differential equations [HNW93] (pp. 115-116):

\[\begin{split} X' &= A + X^2 Y - B X - X \\ Y' &= B X - X^2 Y. \end{split}\]

Here, \(X\) and \(Y\) are concentrations of autocatylitic species of interest. Equations for species \(\ce{D}\) and \(\ce{E}\) are not necessary as they can be deduced from \(X\) and \(Y\).

Notes

Type

ODE

Number of Variables

2

Stiff

not typically, depending on \(A\) and \(B\)

Example

>>> problem = otp.brusselator.presets.Canonical;
>>> problem.TimeSpan(end) = 15;
>>> sol = problem.solve();
>>> problem.plotPhaseSpace(sol);
Constructor Summary
BrusselatorProblem(timeSpan, y0, parameters)

Create a Brusselator problem object.

Parameters:
Property Summary
RHSLinear

Right-hand side containing the linear terms \([-(B + 1) X, B X]^T\).

See also

RHSNonlinear

RHSNonlinear

Right-hand side containing the nonlinear terms \([A + X^2 Y, -X^2 Y]^T\).

See also

RHSLinear

Parameters

class otp.brusselator.BrusselatorParameters

Bases: otp.Parameters

Parameters for the Brusselator problem.

Constructor Summary
BrusselatorParameters(varargin)

Create a Brusselator parameters object.

Parameters:

varargin – A variable number of name-value pairs. A name can be any property of this class, and the subsequent value initializes that property.

Property Summary
A

The concentration of excess reactant \(\ce{A}\) in the Brusselator reaction.

B

The concentration of excess reactant \(\ce{B}\) in the Brusselator reaction.

Presets

class otp.brusselator.presets.HairerNorsettWanner

Bases: otp.brusselator.BrusselatorProblem

Brusselator preset proposed in [HNW93] (pg. 170) with \(t \in [0, 20]\), \(y_0 = [1.5, 3]^T\). The parameter \(A = 1\) and \(B = 3\) yield a periodic solution.

Constructor Summary
HairerNorsettWanner()

Create the Hairer­–Norsett–Wanner Brusselator problem object.

class otp.brusselator.presets.Canonical

Bases: otp.brusselator.BrusselatorProblem

Brusselator preset proposed in [LN71] (pg. 269) with \(y_0 = [0, 0]^T\), \(A = 1\), and \(B = 3\). No time span is specified, so we take \(t ∈ [0, 20]\). The solution asymptotically approaches a limit cycle.

Constructor Summary
Canonical(varargin)

Create the canonical Brusselator problem object.

Parameters:

varargin

A variable number of name-value pairs. The accepted names are

  • A – Value of \(A\).

  • B – Value of \(B\).

class otp.brusselator.presets.Spiral

Bases: otp.brusselator.BrusselatorProblem

Brusselator preset with a stable spiral phase plot. It uses time span \(t ∈ [0, 30]\), initial conditions \(y_0 = [1, 1]^T\), and parameters \(A = 1\) and \(B = 1.7\).

Constructor Summary
Spiral()

Create the spiral Brusselator problem object.

class otp.brusselator.presets.SteadyState

Bases: otp.brusselator.BrusselatorProblem

Brusselator preset proposed in [LN71] (pg. 269) with \(y_0 = [A, B/A]^T\), \(A = 1\), and \(B = 3\). No time span is specified, so we take \(t ∈ [0, 20]\). The solution is constant in time.

Constructor Summary
SteadyState(varargin)

Create the steady state Brusselator problem object.

Parameters:

varargin

A variable number of name-value pairs. The accepted names are

  • A – Value of \(A\).

  • B – Value of \(B\).