Xcos solvers : Sundials explicit Runge-Kutta 4(5) implem and interface
[scilab.git] / scilab / modules / scicos / tests / unit_tests / ExpRK.tst
1
2 // =============================================================================
3 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4 // Copyright (C) 2012 - Scilab Enterprises - Paul Bignier
5 //
6 //  This file is distributed under the same license as the Scilab package.
7 // =============================================================================
8
9 // <-- ENGLISH IMPOSED -->
10
11 // Execute with exec("SCI/modules/scicos/tests/unit_tests/ExpRK.tst");
12 //  or test_run('scicos', 'ExpRK', ['no_check_error_output']);
13
14 // Import diagram
15 loadScicos();
16 loadXcosLibs();
17 assert_checktrue(importXcosDiagram("SCI/modules/xcos/tests/unit_tests/RK_test.zcos"));
18
19 for i=2:4  // 'max step size' = 10^-i, precision
20
21  // Start by updating the clock block period (sampling)
22  scs_m.objs(7).model.rpar(1) = 5*10^(-i);
23  scs_m.objs(8).model.rpar(1) = 5*10^(-i);
24
25  // Modify solver and 'max step size' + run ExpRK + save results
26  scs_m.props.tol(7) = 5*10^(-i); scs_m.props.tol(6) = 6;     // 'max step size' + solver
27  try scicos_simulate(scs_m); catch disp(lasterror()); end;   // ExpRK
28  rkval = res.values;   // Results
29  time = res.time;      // Time
30
31  // Modify solver and 'max step size' + run CVode + save results
32  scs_m.props.tol(7) = 0; scs_m.props.tol(6) = 1;
33  try scicos_simulate(scs_m, 'nw'); catch disp(lasterror()); end;
34  cvval = res.values;
35
36  // Compare results
37  compa = abs(rkval-cvval);
38
39  // Extract mean, standard deviation, maximum
40  mea = mean(compa);
41  [maxi, indexMaxi] = max(compa);
42  stdeviation = st_deviation(compa);
43
44  // Verifying closeness of the results
45  assert_checktrue(maxi <= 10^-(i+1));
46  assert_checktrue(mea <= 10^-(i+1));
47  assert_checktrue(stdeviation <= 10^-(i+2));
48
49 end