-ts_gl_type <type> | - the class of general linear method (irks) | |

-ts_gl_rtol <tol> | - relative error | |

-ts_gl_atol <tol> | - absolute error | |

-ts_gl_min_order <p> | - minimum order method to consider (default=1) | |

-ts_gl_max_order <p> | - maximum order method to consider (default=3) | |

-ts_gl_start_order <p> | - order of starting method (default=1) | |

-ts_gl_complete <method> | - method to use for completing the step (rescale-and-modify or rescale) | |

-ts_adapt_type <method> | - adaptive controller to use (none step both) |

Diagonally implicit general linear (DIGL) methods are a generalization of diagonally implicit Runge-Kutta (DIRK). They are represented by the tableau

A | U ------- B | V

combined with a vector c of abscissa. "Diagonally implicit" means that A is lower triangular. A step of the general method reads

[ Y ] = [A U] [ Y' ] [X^k] = [B V] [X^{k-1}]

where Y is the multivector of stage values, Y' is the multivector of stage derivatives, X^k is the Nordsieck vector of the solution at step k. The Nordsieck vector consists of the first r moments of the solution, given by

X = [x_0,x_1,...,x_{r-1}] = [x, h x', h^2 x'', ..., h^{r-1} x^{(r-1)} ]

If A is lower triangular, we can solve the stages (Y,Y') sequentially

y_i = h sum_{j=0}^{s-1} (a_ij y'_j) + sum_{j=0}^{r-1} u_ij x_j, i=0,...,{s-1}

and then construct the pieces to carry to the next step

xx_i = h sum_{j=0}^{s-1} b_ij y'_j + sum_{j=0}^{r-1} v_ij x_j, i=0,...,{r-1}

Note that when the equations are cast in implicit form, we are using the stage equation to define y'_i in terms of y_i and known stuff (y_j for j<i and x_j for all j).

Error estimation

At present, the most attractive GL methods for stiff problems are singly diagonally implicit schemes which posses Inherent Runge-Kutta Stability (IRKS). These methods have r=s, the number of items passed between steps is equal to the number of stages. The order and stage-order are one less than the number of stages. We use the error estimates in the 2007 paper which provide the following estimates

h^{p+1} X^{(p+1)} = phi_0^T Y' + [0 psi_0^T] Xold h^{p+2} X^{(p+2)} = phi_1^T Y' + [0 psi_1^T] Xold h^{p+2} (dx'/dx) X^{(p+1)} = phi_2^T Y' + [0 psi_2^T] Xold

These estimates are accurate to O(h^{p+3}).

Changing the step size

We use the generalized "rescale and modify" scheme, see equation (4.5) of the 2007 paper.

John Butcher, Numerical methods for ordinary differential equations, second edition, Wiley, 2009.

** Level:beginner
Location:**src/ts/impls/implicit/gl/gl.c

Index of all TS routines

Table of Contents for all manual pages

Index of all manual pages