0ac931e0c25773cb5a74ce08bbe8848c340ce126
[scilab.git] / scilab / modules / scicos / tests / unit_tests / sciblk2.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2015 - Scilab Enterprises - Paul Bignier
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- XCOS TEST -->
9 // Load and run a diagram that calls a Scilab macro (tkscaleblk.sci)
10 exec("SCI/modules/scicos/tests/unit_tests/bug_8348.cosf", -1);
11 // Call sciblk2 instead of sciblk4
12 scs_m.objs(1).model.sim = list("tkscaleblk", 3);
13 scs_m.props.tf = 100;
14 // Rewrite tkscaleblk so it minds sciblk2's syntax
15 wMode = warning("query");
16 warning("off")
17 function [xd, tvec, z, x, outptr] = tkscaleblk(flag, nevprt, t, x, z, rpar, ipar, inptr)
18     outptr = list();
19     if flag == 1 then
20         // Output update
21         slider = get("-38f07e57:12bd41b596e:-7f2b#slider");
22         if slider <> [] then
23             // Calculate real value
24             value = get(slider,"value") / rpar(3);
25             w = get("-38f07e57:12bd41b596e:-7f2b");
26             if w <> [] then
27                 set(w, "info_message", string(value));
28             end
29             outptr = list(value);
30         end
31     elseif flag == 4 then
32         // Initialization
33         // If already exists (stopped) then reuse
34         f = get("-38f07e57:12bd41b596e:-7f2b");
35         if f <> [] then
36             return;
37         end
38         f = figure("Figure_name", "TK Source: " + "", ...
39         "dockable", "off", ...
40         "infobar_visible" , "on", ...
41         "toolbar", "none", ...
42         "menubar_visible", "off", ...
43         "menubar", "none", ...
44         "backgroundcolor", [1 1 1], ...
45         "default_axes", "off", ...
46         "figure_size", [180 350], ...
47         "layout", "border", ...
48         "figure_position", [40 40], ...
49         "Tag", "-38f07e57:12bd41b596e:-7f2b");
50         frame_slider = uicontrol(f, ...
51         "style", "frame", ...
52         "constraints", createConstraints("border", "left", [180, 0]), ...
53         "border", createBorder("line", "lightGray", 1), ...
54         "backgroundcolor", [1 1 1], ...
55         "layout", "gridbag");
56         // Slider
57         bounds = rpar(1:2);
58         initial = mean(bounds);
59         uicontrol(frame_slider, ...
60         "Style", "slider", ...
61         "Tag", "-38f07e57:12bd41b596e:-7f2b#slider", ...
62         "Min", bounds(1), ...
63         "Max", bounds(2), ...
64         "Value", initial, ...
65         "Position", [0 0 10 20], ...
66         "SliderStep", [rpar(3) 2*rpar(3)]);
67         frame_label = uicontrol(frame_slider, ...
68         "style", "frame", ...
69         "constraints", createConstraints("border", "right"), ...
70         "backgroundcolor", [1 1 1], ...
71         "layout", "gridbag");
72         // Labels
73         labels = string([bounds(2) ; ...
74         mean([bounds(2) initial])  ; ...
75         initial                    ; ...
76         mean([bounds(1) initial])  ; ...
77         bounds(1)]);
78         labels = "<html>" + strcat(labels, "<br /><br /><br />") + "</html>";
79         uicontrol(frame_label, ...
80         "Style", "text", ...
81         "String", labels(1), ...
82         "FontWeight", "bold", ...
83         "backgroundcolor", [1 1 1]);
84         // Update default value
85         outptr = list(initial / rpar(3));
86     elseif flag == 5 then
87         // Ending
88         f = get("-38f07e57:12bd41b596e:-7f2b");
89         if f <> [] then
90             close(f);
91         end
92     end
93     xd = 0;
94     tvec = [];
95 endfunction
96 warning(wMode);
97 cpr = scicos_simulate(scs_m);
98 cpr229 = [ ...
99 1;
100 5.5;
101 5.5;
102 5.5];
103 // Check the sensitive value of the continuous state
104 assert_checkalmostequal(list2vec(cpr(2)(2)(9)), cpr229);
105 close(gcf());
106 // Load and run a diagram that calls a Scilab macro (anim_pen.sci)
107 exec("SCI/modules/scicos/tests/unit_tests/pendulum_anim5.cosf", -1);
108 // Call sciblk2 instead of sciblk4
109 scs_m.objs(8).model.sim = list("anim_pen", 3);
110 // Rewrite anim_pen so it minds sciblk2's syntax
111 wMode = warning("query");
112 warning("off")
113 function [xd, tvec, z, x, outptr] = anim_pen(flag, nevprt, t, x, z, rpar, ipar, inptr)
114     win=20000+curblock()
115     if flag<>4 then
116         H=scf(win)
117     end
118     xold=z
119     plen=rpar(1)*1.6;
120     csiz=rpar(2)/4;
121     phi=rpar(3);
122     rcirc=csiz/3;
123     if flag==4 then
124         //** INIT
125         scf(win);
126         set("figure_style","new")
127         H=scf(win)
128         clf(H)
129         Axe=H.children
130         Axe.data_bounds=rpar(4:7)
131         Axe.isoview="on"
132         S=[cos(phi),-sin(phi);sin(phi),cos(phi)]
133         XY=S*[rpar(4),rpar(5);-csiz,-csiz]
134         gca().foreground = 3;
135         xsegs(XY(1,:),XY(2,:)-rcirc)
136         xTemp=0;
137         theta=0;
138         x1=xTemp-csiz;
139         x2=xTemp+csiz;
140         y1=-csiz;
141         y2=csiz
142         XY=S*[x1 x2 x2 x1 x1;y1,y1,y2,y2,y1]
143         gca().foreground = 5;
144         xfpoly(XY(1,:),XY(2,:))// cart
145         gca().foreground = 2;
146         xfarc(XY(1,1),XY(2,1),rcirc,rcirc,0,360*64) //wheel
147         xfarc(XY(1,2),XY(2,2),rcirc,rcirc,0,360*64) //wheel
148         XY=S*[xTemp,xTemp+plen*sin(theta);0,0+plen*cos(theta)]//pendulum
149         xsegs(XY(1,:),XY(2,:))
150     elseif flag==2 then
151         //** UPDATE
152         Axe=H.children
153         xTemp=inptr(1)(1)
154         theta=inptr(2)(1)
155         drawlater();
156         XY=Axe.children(4).data'+ [cos(phi)*(xTemp-xold);sin(phi)*(xTemp-xold)]*ones(1,5)
157         Axe.children(4).data=XY'
158         Axe.children(3).data(1)=XY(1,1)
159         Axe.children(3).data(2)=XY(2,1)
160         XY=Axe.children(4).data'+ [cos(phi)*(xTemp-xold-rcirc);sin(phi)*(xTemp-xold-rcirc)]*ones(1,5)
161         Axe.children(2).data(1)=XY(1,2)
162         Axe.children(2).data(2)=XY(2,2)
163         x1=xTemp*cos(phi);
164         y1=xTemp*sin(phi)
165         XY=[x1,x1+plen*sin(theta);y1,y1+plen*cos(theta)]
166         Axe.children(1).data=XY'
167         drawnow();
168         z=xTemp
169     end
170     xd = 0;
171     tvec = [];
172     outptr = list();
173 endfunction
174 warning(wMode);
175 cpr = scicos_simulate(scs_m);
176  INTEGRAL('set') : Type erroné du paramètre 'Initial Condition' du bloc 
177   : vec(-1) attendu, z0 obtenu                                         
178  INTEGRAL('set') : Type erroné du paramètre 'Initial Condition' du bloc 
179   : vec(-1) attendu, th0 obtenu                                           Génère un fichier loader
180    Génère un Makefile
181    Exécute le Makefile
182    Compilation de inv_pend.c
183    Construit une bibliothèque partagée (Veuillez patienter)
184    Génère un fichier cleaner
185 Bibliothèque partagée chargée.
186 Édition de liens effectuée.
187  INTEGRAL('set') : Type erroné du paramètre 'Initial Condition' du bloc 
188   : vec(-1) attendu, z0 obtenu                                         
189  INTEGRAL('set') : Type erroné du paramètre 'Initial Condition' du bloc 
190   : vec(-1) attendu, th0 obtenu                                        
191 cpr229 = [ ...
192 -0.00000010072892435; ...
193 -0.0000000093251865; ...
194 12.731754622278423; ...
195 0.00000000775393652; ...
196 -0.00000007274473145; ...
197 0.00000008598899216; ...
198 -0.00000000636625628; ...
199 -0.00000010072892435;
200 -0.0000000093251865; ...
201 -0.00000100269157242; ...
202 12.7317556249699955; ];
203 // Check the sensitive value of the continuous state
204 assert_checkalmostequal(list2vec(cpr(2)(2)(9)), cpr229, [], 1e9);