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