Robertson

class otp.robertson.RobertsonProblem

Bases: otp.Problem

A simple, stiff chemical reaction.

The Robertson problem [Rob66] is a simple, stiff chemical reaction that models the concentrations of chemical species \(\ce{A}\), \(\ce{B}\), and \(\ce{C}\) involved in the reactions

\[\begin{split} \ce{ A &->[$k_1$] B \\ B + B &->[$k_2$] C + B \\ B + C &->[$k_3$] A + C } \end{split}\]

These correspond to the ODE system,

\[\begin{split} y_1' &= -k_1 y_1 + k_3 y_2 y_3, \\ y_2' &= k_1 y_1 - k_2 y_2^2 - k_3 y_2 y_3, \\ y_3' &= k_2 y_2^2. \end{split}\]

The reaction rates \(k_1\), \(k_2\), and \(k_3\) often range from slow to very fast which makes the problem challenging. This has made it a popular test for implicit time-stepping schemes.

Notes

Type

ODE

Number of Variables

3

Stiff

typically, depending on \(k_1\), \(k_2\), and \(k_3\)

Example

>>> problem = otp.robertson.presets.Canonical;
>>> problem.Parameters.K1 = 100;
>>> problem.Parameters.K2 = 1000;
>>> problem.Parameters.K3 = 1000;
>>> sol = problem.solve();
>>> problem.plot(sol)
Constructor Summary
RobertsonProblem(timeSpan, y0, parameters)

Create a Robertson problem object.

Parameters:
  • timeSpan (numeric(1, 2)) – The start and final time.

  • y0 (numeric(3, 1)) – The initial conditions.

  • parameters (otp.robertson.RobertsonParameters) – The parameters.

Parameters

class otp.robertson.RobertsonParameters

Bases: otp.Parameters

Parameters for the Robertson problem.

Constructor Summary
RobertsonParameters(varargin)

Create a Robertson 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
K1

The reaction rate \(k_1\).

K2

The reaction rate \(k_2\).

K3

The reaction rate \(k_3\).

Presets

class otp.robertson.presets.ROBER

Bases: otp.robertson.RobertsonProblem

The Robertson configuration from [HW96] (p. 144). This differs from otp.robertson.presets.Canonical only in the time span which is extended to \([0, 10^{11}]\). This presents a challenge for numerical integrators to preserve solution positivity.

Constructor Summary
ROBER()

Create the ROBER Robertson problem object.

class otp.robertson.presets.Canonical

Bases: otp.robertson.RobertsonProblem

The original configuration [Rob66] with \(t ∈ [0, 40]\), \(y_0 = [1, 0, 0]^T\), and parameters

\[\begin{split} k_1 &= 4 \times 10^{-2}, \\ k_2 &= 3 \times 10^7, \\ k_3 &= 10^4. \end{split}\]

Constructor Summary
Canonical(varargin)

Create the canonical Robertson problem object.

Parameters:

varargin

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

  • K1 – Value of \(k_1\).

  • K2 – Value of \(k_2\).

  • K3 – Value of \(k_3\).