Demos: increased control panel.
[scilab.git] / scilab / modules / differential_equations / demos / levitron / levitron.dem.sce
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008 - INRIA - Serge Steer <Serge.Steer@scilab.org>
3 //
4 // This file is released under the 3-clause BSD license. See COPYING-BSD.
5
6 mode(-1)
7 exec SCI/modules/differential_equations/demos/levitron/levitron_gui.sci;
8 exec SCI/modules/differential_equations/demos/levitron/levitron.sci;
9
10
11 //Notations
12 //---------
13 //M:  The magnetic moment of the top
14 //Me: the net strength of the ring dipole
15 //R : the effective radius of the ring dipole (used as a normalization factor)
16 //A : transverse moment of inertia of the top
17 //C : polar  moment of inertia of the top
18 //m : the mass of the top
19 // x,y,z:    the coordinates of the center of mass of the top
20 //
21 // X=x/R, Y=y/R, Z=z/R, normalized coordinates
22 // a=A/(m*R^2)    normalized transverse moment of inertia of the top
23 // c=C/(m*R^2)    normalized polar  moment of inertia of the top
24 // Mc=(M*Me)/(4*%pi*m*g*R^4),   normalized magnetic moment of the top
25
26 //R=34.7d-3
27 //m=0.02135
28 //A=1.32d-6
29 //C=2.20d-6
30 //http://www.koepken.de/levitron/maglev.java
31
32 a=0.089;
33 c=0.139;
34 Mc=8.2;
35 //
36 %h=poly(0,"h");
37 Ph=(3*Mc*%h*(2*%h^2-3))^2-(1+%h^2)^7;
38 rPh=roots(Ph);
39 rPh=real(rPh(find(abs(imag(rPh))<0.00001& real(rPh)>0)));
40 mx=max(rPh);
41 mn=min(rPh);
42
43 h=1.74;//1.72;
44 Theta=0.005;
45 dTheta=0;
46 Psi=0;
47 dPsi=1.2;
48 Phi=0;
49 Omega_T=7.5;
50 dPhi=Omega_T-dPsi*cos(Theta);
51
52
53 q0=[0;    //X
54 0;    //Y
55 h;    //Z
56 Theta;
57 Phi;
58 Psi];
59 p0=[0;    //X'
60 0;    //Y'
61 0;    //Z'
62 a*dTheta;
63 dPsi*(a*sin(Theta)^2+c*cos(Theta)^2)+c*dPhi*cos(Theta)
64 c*(dPhi+dPsi*cos(Theta))]
65
66 demo_viewCode("levitron.dem.sce");
67 levitron_create_gui()
68 H=build_levitron(h);
69 y=[q0;p0];y0=y;y1=y;init=%t;state_changed=%f;
70 global y0 y1 state_changed init  Stop
71 update_height(1.72);
72 update_theta(0.28);
73 update_phi(0);
74 update_psi(0);
75 set_levitron(H,y);
76