petsc-3.7.1 2016-05-15
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 Many brnonlinear such that it is expensive to solve with a fully implicit method. The user should provide the stiff part Many brof the equation using TSSetIFunction() and the non-stiff part with TSSetRHSFunction(). Many br

Notes

This method currently only works with autonomous ODE and DAE. Many br

Consider trying TSARKIMEX if the stiff part is strongly nonlinear. Many br

Developer notes

Rosenbrock-W methods are typically specified for autonomous ODE Many br

 udot = f(u)

by the stage equations Many br

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

and step completion formula Many br

 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) Many brand the Jacobian J to be available, in addition to the shifted matrix I - h gamma_ii J. Following Hairer and Wanner, Many brwe define new variables for the stage equations Many br

 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 Many br

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

to rewrite the method as Many br

 [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 Many br

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

or, more compactly in tensor notation Many br

 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 Many brstage y_i, the stage equations reduce to performing one Newton step (typically with a lagged Jacobian) on the Many brequation Many br

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

with initial guess y_i = 0. Many br

Many br

See Also

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

Level:beginner
Location:
src/ts/impls/rosw/rosw.c
Index of all TS routines
Table of Contents for all manual pages
Index of all manual pages

Examples

src/ts/examples/tutorials/ex8.c.html
src/ts/examples/tutorials/ex40.c.html
src/ts/examples/tutorials/ex41.c.html