petsc-3.12.4 2020-02-04
Report Typos and Errors

# TSROSW

ODE solver using Rosenbrock-W schemes These methods are intended for problems with well-separated time scales, especially when a slow scale is strongly nonlinear such that it is expensive to solve with a fully implicit method. The user should provide the stiff part of the equation using TSSetIFunction() and the non-stiff part with TSSetRHSFunction().

### Notes

This method currently only works with autonomous ODE and DAE.

Consider trying TSARKIMEX if the stiff part is strongly nonlinear.

### Developer Notes

Rosenbrock-W methods are typically specified for autonomous ODE

     udot = f(u)

by the stage equations

     k_i = h f(u_0 + sum_j alpha_ij k_j) + h J sum_j gamma_ij k_j

and step completion formula

     u_1 = u_0 + sum_j b_j k_j

with step size h and coefficients alpha_ij, gamma_ij, and b_i. Implementing the method in this form would require f(u) and the Jacobian J to be available, in addition to the shifted matrix I - h gamma_ii J. Following Hairer and Wanner, we define new variables for the stage equations

     y_i = gamma_ij k_j

The k_j can be recovered because Gamma is invertible. Let C be the lower triangular part of Gamma^{-1} and define

     A = Alpha Gamma^{-1}, bt^T = b^T Gamma^{-1}

to rewrite the method as

     [M/(h gamma_ii) - J] y_i = f(u_0 + sum_j a_ij y_j) + M sum_j (c_ij/h) y_j

     u_1 = u_0 + sum_j bt_j y_j

where we have introduced the mass matrix M. Continue by defining

     ydot_i = 1/(h gamma_ii) y_i - sum_j (c_ij/h) y_j

or, more compactly in tensor notation

     Ydot = 1/h (Gamma^{-1} \otimes I) Y .

Note that Gamma^{-1} is lower triangular. With this definition of Ydot in terms of known quantities and the current stage y_i, the stage equations reduce to performing one Newton step (typically with a lagged Jacobian) on the equation

     g(u_0 + sum_j a_ij y_j + y_i, ydot_i) = 0

with initial guess y_i = 0.

### See Also

TSCreate(), TS, TSSetType(), TSRosWSetType(), TSRosWRegister(), TSROSWTHETA1, TSROSWTHETA2, TSROSW2M, TSROSW2P, TSROSWRA3PW, TSROSWRA34PW2, TSROSWRODAS3,
TSROSWSANDU3, TSROSWASSP3P3S1C, TSROSWLASSP3P4S2C, TSROSWLLSSP3P4S2C, TSROSWGRK4T, TSROSWSHAMP4, TSROSWVELDD4, TSROSW4L

### Level

beginner

### Location

src/ts/impls/rosw/rosw.c

### Examples

src/ts/examples/tutorials/ex8.c.html
src/ts/examples/tutorials/ex40.c.html
src/ts/examples/tutorials/ex41.c.html
Index of all TS routines
Table of Contents for all manual pages
Index of all manual pages