Scicos tests: relieving compilation
[scilab.git] / scilab / modules / scicos / tests / unit_tests / DDaskrN_Platform.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- ENGLISH IMPOSED -->
9 // <-- XCOS TEST -->
10
11 // Import diagram
12 loadScicos();
13 loadXcosLibs();
14 assert_checktrue(importXcosDiagram("SCI/modules/xcos/tests/unit_tests/DDaskr_Platform_test.zcos"));
15
16 // Redefining messagebox() to avoid popup
17 prot = funcprot();
18 funcprot(0);
19 function messagebox(msg, msg_title)
20  disp(msg);
21 endfunction
22 funcprot(prot);
23 Info = scicos_simulate(scs_m, list(), 'nw');
24
25 // looking for the CLOCK_f/EVTDLY_f to update period
26 for path_1=1:length(scs_m.objs)
27     if typeof(scs_m.objs(path_1))=="Block" & scs_m.objs(path_1).gui=="CLOCK_c" then
28         CLOCK_f_scs_m = scs_m.objs(path_1).model.rpar;
29         break;
30     end
31 end
32 for path_2=1:length(CLOCK_f_scs_m)
33     if typeof(CLOCK_f_scs_m.objs(path_2))=="Block" & CLOCK_f_scs_m.objs(path_2).gui=="EVTDLY_c" then
34         EVTDLY_f_blk = CLOCK_f_scs_m.objs(path_2);
35         break;
36     end
37 end
38
39 for i=1:3  // 'max step size' = 10^-i, precision
40
41     // Start by updating the clock block period (sampling)
42     scs_m.objs(path_1).model.rpar.objs(path_2).graphics.exprs = [string(5*(10^-i));"0"];
43
44     // Modify solver + run DDaskr + save results
45     scs_m.props.tol(6) = 101;     // Solver
46     scicos_simulate(scs_m, Info, 'nw'); // DDaskr
47     ddaskrval = res.values;       // Results
48     time = res.time;              // Time
49
50     // Modify solver + run IDA + save results
51     scs_m.props.tol(6) = 100;     // Solver
52     scicos_simulate(scs_m, Info, 'nw'); // IDA
53     idaval = res.values;          // Results
54
55     // Compare results
56     compa = abs(ddaskrval-idaval);
57
58     // Extract mean, standard deviation, maximum
59     mea = mean(compa);
60     [maxi, indexMaxi] = max(compa);
61     stdeviation = st_deviation(compa);
62
63     // Verifying closeness of the results
64     assert_checktrue(maxi <= 10^-(i+3));
65     assert_checktrue(mea <= 10^-(i+3));
66     assert_checktrue(stdeviation <= 10^-(i+3));
67
68 end