Skip to content
Σ.𝕊.
Go back

Impasse Points

A Python implementation of the Rabier-Rheinboldt algorithm for integrating differential-algebraic equations (DAEs) through singularities.

PythonDAENumerical MethodsSingularities

Overview

Impasse Points is a Python implementation of the Rabier & Rheinboldt (1994) algorithm for integrating semi-explicit differential-algebraic equations (DAEs) through singularities.

A1(x)x˙=G1(x)G2(x)=0\begin{aligned} A_1(x) \dot{x} &= G_1(x) \\ G_2(x) &= 0 \end{aligned}

An impasse point is a singularity at which the algebraic constraints prevent the solution from continuing beyond a certain time TT^*, even though the solution remains bounded. These singularities often indicate that the model is idealized. Standard solvers fail at impasse points. This algorithm detects them by monitoring a scalar γ\gamma that vanishes when the system becomes singular, and can traverse the singularity to explore other solution branches using a pseudo-time reparametrization.

Key Features

Singularity Traversal

The algorithm enables integration through impasse points using:

  • Pseudo-time parametrization: Replaces physical time tt with a pseudo-time ss where dt/ds=γ(x)dt/ds = \gamma(x). As the system approaches an impasse point, γ0\gamma \to 0 but the solution in pseudo-time remains smooth.
  • Augmented system formulation: Adds normalization conditions to handle rank-deficient matrices, inspired by numerical bifurcation theory.
  • Gamma sign monitoring: Detects impasse points by tracking sign changes in γ\gamma, which vanishes at singularities.

Numerical Methods

  • Constraint projection: Newton iteration to maintain solutions on the constraint manifold
  • QR factorization: Computes orthonormal bases for tangent and normal spaces
  • Adaptive integration: DOPRI5 Runge-Kutta with error control

Reference

P.J. Rabier and W.C. Rheinboldt, On the Computation of Impasse Points of Quasi-Linear Differential-Algebraic Equations, Mathematics of Computation, Vol. 62, No. 205, pp. 133-154, January 1994.