|
static void | radau2a::scale (const double *__restrict__ y0, const double *__restrict__ y, double *__restrict__ sc) |
| Computes error weight scaling from initial and current state. More...
|
|
static void | radau2a::scale_init (const double *__restrict__ y0, double *__restrict__ sc) |
| Computes error weight scaling from initial state. More...
|
|
static void | radau2a::RK_Decomp (const double H, double *__restrict__ E1, double complex *__restrict__ E2, const double *__restrict__ Jac, int *__restrict__ ipiv1, int *__restrict__ ipiv2, int *__restrict__ info) |
| Compute E1 & E2 matricies and their LU Decomposition. More...
|
|
static void | radau2a::RK_Make_Interpolate (const double *__restrict__ Z1, const double *__restrict__ Z2, const double *__restrict__ Z3, double *__restrict__ CONT) |
| Compute Quadaratic interpolate. More...
|
|
static void | radau2a::RK_Interpolate (const double H, const double Hold, double *__restrict__ Z1, double *__restrict__ Z2, double *__restrict__ Z3, const double *__restrict__ CONT) |
| Apply quadaratic interpolate to get initial values. More...
|
|
static void | radau2a::WADD (const double *__restrict__ X, const double *__restrict__ Y, double *__restrict__ Z) |
| Performs \(Z:= X + Y\) with unrolled (or at least bounds known at compile time) loops. More...
|
|
static void | radau2a::DAXPY3 (const double DA1, const double DA2, const double DA3, const double *__restrict__ DX, double *__restrict__ DY1, double *__restrict__ DY2, double *__restrict__ DY3) |
| Sepcialization of DAXPY with unrolled (or at least bounds known at compile time) loops. More...
|
|
static void | radau2a::RK_PrepareRHS (const double t, const double pr, const double H, const double *__restrict__ Y, const double *__restrict__ Z1, const double *__restrict__ Z2, const double *__restrict__ Z3, double *__restrict__ R1, double *__restrict__ R2, double *__restrict__ R3) |
| Prepare the right-hand side for Newton iterations: \(R = Z - hA * F\). More...
|
|
static void | radau2a::RK_Solve (const double H, double *__restrict__ E1, double complex *__restrict__ E2, double *__restrict__ R1, double *__restrict__ R2, double *__restrict__ R3, int *__restrict__ ipiv1, int *__restrict__ ipiv2) |
| Solves for the RHS values in the Newton iteration. More...
|
|
static double | radau2a::RK_ErrorNorm (const double *__restrict__ scale, double *__restrict__ DY) |
| Computes the scaled error norm from the given scale and DY vectors. More...
|
|
static double | radau2a::RK_ErrorEstimate (const double H, const double t, const double pr, const double *__restrict__ Y, const double *__restrict__ F0, const double *__restrict__ Z1, const double *__restrict__ Z2, const double *__restrict__ Z3, const double *__restrict__ scale, double *__restrict__ E1, int *__restrict__ ipiv1, const bool FirstStep, const bool Reject) |
| Computes and returns the error estimate for this step. More...
|
|
int | radau2a::integrate (const double t_start, const double t_end, const double pr, double *y) |
| 5th-order Radau2A CPU implementation More...
|
|
A Radau2A IRK implementation for C Adapted from Hairer and Wanner's RADAU5 code and the FATODE ODE integration library.
- Author
- Nicholas J. Curtis
- Date
- 03/16/2015
For full reference see:
G. Wanner, E. Hairer, Solving Ordinary Differential Equations II: Stiff and DifferentialAlgebraic Problems, 2nd Edition, Springer-Verlag, Berlin, 1996. doi:10.1007/978-3-642- 05221-7.
NOTE: all matricies stored in column major format!
Definition in file radau2a.c.