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:
timeSpan (
numeric(1, 2)
) – The start and final time.y0 (
numeric(2, 1)
) – The initial conditions.parameters (
otp.brusselator.BrusselatorParameters
) – The parameters.
- Property Summary
- RHSLinear
Right-hand side containing the linear terms \([-(B + 1) X, B X]^T\).
See also
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\).