* Bug #11193 fixed (bis) - Lincos did not honor context values. 62/10362/3
Clément DAVID [Wed, 30 Jan 2013 16:04:40 +0000 (17:04 +0100)]
 - implement context handling on steadycos
 - test_run("scicos", ['lincos' 'steadycos']);

Change-Id: I10dfe51bb0b914a81aa7db2dae5673fb0e97bf29

scilab/modules/scicos/macros/scicos_auto/lincos.sci
scilab/modules/scicos/macros/scicos_auto/steadycos.sci
scilab/modules/scicos/tests/unit_tests/lincos.dia.ref
scilab/modules/scicos/tests/unit_tests/lincos.tst
scilab/modules/scicos/tests/unit_tests/steadycos.dia.ref
scilab/modules/scicos/tests/unit_tests/steadycos.tst

index 48bb727..38f4650 100644 (file)
@@ -86,10 +86,13 @@ end
 if rhs < 1 then
   error(msprintf(gettext("%s: Wrong number of input argument(s): At least %d expected.\n"), "lincos", 1));
 end
-if typeof(scs_m)<>"diagram" then
+if typeof(scs_m)<>"diagram" & typeof(scs_m)<>"cpr" then
   error(msprintf(gettext("%s: Wrong type for input argument #%d: A diagram expected.\n"), "lincos", 1));
 end
 
+// compile and post-process the diagram
+if typeof(scs_m)=="diagram" then
+
 // Propagate context through all blocks
 %state0     = list();
 needcompile = 4;
@@ -165,7 +168,10 @@ end
 if ~ok then
   error(msprintf(gettext("%s: Diagram does not compile in pass %d.\n"),"lincos",2))
 end
+
+// compile and post-process the diagram end
+end 
+
 sim   = %cpr.sim;
 state = %cpr.state;
 //
index 68a21bc..1f95ad3 100644 (file)
@@ -73,10 +73,27 @@ end
 if rhs < 1 then
   error(msprintf(gettext("%s: Wrong number of input argument(s): At least %d expected.\n"), "steadycos", 1));
 end
-if typeof(scs_m)<>"diagram" then
+if typeof(scs_m)<>"diagram" & typeof(scs_m)<>"cpr" then
   error(msprintf(gettext("%s: Wrong type for input argument #%d: A diagram expected.\n"), "steadycos", 1));
 end
 
+// compile and post-process the diagram
+if typeof(scs_m)=="diagram" then
+
+// Propagate context through all blocks
+%state0     = list();
+needcompile = 4;
+%cpr        = struct();
+%cpr.state  = %state0;
+%scicos_context = struct();
+context = scs_m.props.context;
+
+[%scicos_context, ierr] = script2var(context, %scicos_context);
+[scs_m,%cpr,needcompile,ok] = do_eval(scs_m, %cpr, %scicos_context);
+if ~ok then
+    error(msprintf(gettext("%s: Error during block parameters evaluation.\n"), "lincos"));
+end
+
 IN  = [];
 OUT = [];
 
@@ -136,7 +153,11 @@ if %cpr==list() then
 end
 if ~ok then
   error(msprintf(gettext("%s: Diagram does not compile in pass %d.\n"),"steadycos",2));
+end
+
+// compile and post-process the diagram end
 end 
+
 sim=%cpr.sim;state=%cpr.state;
 //
 inplnk=sim.inplnk;inpptr=sim.inpptr;
@@ -232,7 +253,7 @@ zer(Indy) = 0;
 err       = zer.*(Y-y);
 f=.5*(norm(xp,2)+norm(err,2));
 
-sys = lincos(scs_m,X,U,param); //** lincos is used here 
+sys = lincos(%cpr,X,U,param); //** lincos is used here 
 
 g  = xp'*[sys.B(:,Indu) sys.A(:,Indx)] - err'*[sys.D(:,Indu) sys.C(:,Indx)];
 
index 96f48f7..ba3b419 100644 (file)
@@ -6,14 +6,22 @@
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 // <-- ENGLISH IMPOSED -->
+// <-- XCOS TEST -->
 ilib_verbose(0);
+prot=funcprot();
+funcprot(0);
 exec("SCI/modules/xcos/demos/PENDULUM_ANIM.sci");
 exec("SCI/modules/xcos/demos/anim_pen.sci");
+funcprot(prot);
 load("SCI/modules/scicos/tests/unit_tests/pendulum_anim45.cos");
+// CBLOCK parameters
 M=10;
 m=3;
 l=3;
-ph=0.1; 
+ph=0.1;
+// INTEGRALs parameters
+z0=-4;
+th0=0.02;
 scs_m = scs_m.objs(5).model.rpar;
 [X,U,Y,XP] = steadycos(scs_m,[],[],[],[],1,1:$);
 sys = lincos(scs_m,X,U);
index b9e0e13..62386be 100644 (file)
@@ -7,15 +7,26 @@
 // =============================================================================
 
 // <-- ENGLISH IMPOSED -->
+// <-- XCOS TEST -->
 ilib_verbose(0);
 
+prot=funcprot();
+funcprot(0);
 exec("SCI/modules/xcos/demos/PENDULUM_ANIM.sci");
 exec("SCI/modules/xcos/demos/anim_pen.sci");
+funcprot(prot);
 load("SCI/modules/scicos/tests/unit_tests/pendulum_anim45.cos");
+
+// CBLOCK parameters
 M=10;
 m=3;
 l=3;
-ph=0.1; 
+ph=0.1;
+
+// INTEGRALs parameters
+z0=-4;
+th0=0.02;
+
 scs_m = scs_m.objs(5).model.rpar;
 [X,U,Y,XP] = steadycos(scs_m,[],[],[],[],1,1:$);
 sys = lincos(scs_m,X,U);
index ffd6914..aebb64b 100644 (file)
@@ -6,13 +6,21 @@
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 // <-- ENGLISH IMPOSED -->
+// <-- XCOS TEST -->
 ilib_verbose(0);
+prot=funcprot();
+funcprot(0);
 exec("SCI/modules/xcos/demos/PENDULUM_ANIM.sci");
 exec("SCI/modules/xcos/demos/anim_pen.sci");
+funcprot(prot);
 load("SCI/modules/scicos/tests/unit_tests/pendulum_anim45.cos");
+// CBLOCK parameters
 M=10;
 m=3;
 l=3;
-ph=0.1; 
+ph=0.1;
+// INTEGRALs parameters
+z0=-4;
+th0=0.02;
 scs_m = scs_m.objs(5).model.rpar;
 [X,U,Y,XP] = steadycos(scs_m,[],[],[],[],1,1:$);
index 91b888a..400d673 100644 (file)
@@ -7,16 +7,26 @@
 // =============================================================================
 
 // <-- ENGLISH IMPOSED -->
-
+// <-- XCOS TEST -->
 ilib_verbose(0);
 
+prot=funcprot();
+funcprot(0);
 exec("SCI/modules/xcos/demos/PENDULUM_ANIM.sci");
 exec("SCI/modules/xcos/demos/anim_pen.sci");
+funcprot(prot);
 load("SCI/modules/scicos/tests/unit_tests/pendulum_anim45.cos");
+
+// CBLOCK parameters
 M=10;
 m=3;
 l=3;
-ph=0.1; 
+ph=0.1;
+
+// INTEGRALs parameters
+z0=-4;
+th0=0.02;
+
 scs_m = scs_m.objs(5).model.rpar;
 [X,U,Y,XP] = steadycos(scs_m,[],[],[],[],1,1:$);