-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