Télécharger dessin.dgibi

Retour à la liste

Numérotation des lignes :

  1. * dessin.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *_____________________________________________________
  5. *
  6. * PROCEDURE WATERFALL (experimentale)
  7. *_____________________________________________________
  8. *
  9. * tracé Waterfall Cast3M (experimental) ____
  10. *
  11. * /\ .
  12. * _______/ \_/\____.-.._/ \__.---------._____
  13. *
  14. * /\
  15. * _____/\_/\____.-.._/ \__.--.------._____
  16. *
  17. DEBP WATERFALL ev1*'EVOLUTION' y1*'LISTREEL'
  18. moty1/'MOT' moopt1/'LISTMOTS' zcoef1/'FLOTTANT';
  19.  
  20. * initialisations
  21. ZLOGY = FAUX;
  22. * recup des entrees + verif
  23. n1 = DIME ev1;
  24. si (neg n1 (dime y1)); ERRE 625; finsi;
  25. si (neg (type moty1) (MOT 'MOT')); moty1='\c'; finsi;
  26. si (ega (type moopt1) (MOT 'LISTMOTS'));
  27. * veut-on changer l'echelle de y1
  28. * (sans toucher a celle des evolutions) ?
  29. ZLOGY = EXIS moopt1 'LOGY';
  30. finsi;
  31. si (neg (type zcoef1) (MOT 'FLOTTANT')); zcoef1=1.; finsi;
  32.  
  33. * calcul du facteur alpha
  34. * recherche de l'amplitude des evolutions
  35. lindic1 lx1 lf1 = MAXI 'ABS' ev1;
  36. * maxf1 = MAXI 'ABS' lf1;
  37. maxf1 = (SOMM (ABS lf1)) / n1;
  38. * recherche des espaces inter-y
  39. si ZLOGY;
  40. y1log = LOG y1;
  41. dy1 = ((maxi y1log) - (mini y1log)) / (n1 - 1);
  42. sinon;
  43. dy1 = ((maxi y1) - (mini y1)) / (n1 - 1);
  44. finsi;
  45. * calcul de alpha
  46. alpha1 = zcoef1 * dy1 / maxf1;
  47.  
  48. * creation d'une nouvelle evolution prete a tracer
  49. * recup des parametres de l'evolution de depart
  50. coco1 = EXTR ev1 'COUL';
  51. xlabel1 = EXTR ev1 'LEGX' 1;
  52. * ylabel1 = EXTR ev1 'LEGY' 1;
  53. * on ordonne selon y1 decroissant
  54. li1 = lect 1 pas 1 n1;
  55. y2 li2 = ORDO 'DECROISSANT' y1 li1;
  56. * boucle sur les evol elementaires --> nouvelle evol
  57. ev2 = VIDE 'EVOLUTIO';
  58. REPE BEV1 n1;
  59. * choix de l'evol a traiter en premier
  60. i2 = EXTR li2 &BEV1;
  61. y2j = EXTR y2 &BEV1;
  62. * dernier parametre : la couleur
  63. coco2 = EXTR coco1 i2;
  64. molege1 = CHAI moty1 '=' FORMAT '(G10.2)' y2j;
  65. * recup des listreels
  66. xprog2 = EXTR ev1 'ABSC' i2;
  67. fprog1 = EXTR ev1 'ORDO' i2;
  68. * application de alpha aux evolutions
  69. si ZLOGY;
  70. * de maniere a avoir LOG(f2) = LOG(y) + a*f1
  71. fprog2 = y2j * (exp (alpha1 * fprog1));
  72. sinon;
  73. * de maniere a avoir f2 = y + a*f1
  74. fprog2 = y2j + (alpha1 * fprog1);
  75. finsi;
  76. * stockage
  77. ev2 = ev2 et (EVOL coco2 'MANU' 'LEGE' molege1 xlabel1 xprog2 moty1 fprog2);
  78. FIN BEV1;
  79.  
  80. FINP ev2;
  81. *_____________________________________________________
  82. *_____________________________________________________
  83.  
  84.  
  85. *----------------------------------------------------------------------*
  86. * cas-test de la directive DESSIN. *
  87. *----------------------------------------------------------------------*
  88. OPTI 'TRAC' 'PSC' 'EPTR' 5 ;
  89. OPTI 'POTR' 'HELVETICA_16';
  90. * rem : il faudrait aussi tester avec
  91. * OPTI TRAC 'X';
  92. * OPTI TRAC 'OPEN' ;
  93.  
  94. *
  95. * ON TESTE D'ABORD LES ECHELLE ET GRADUATIONS ************************
  96. * (SP)
  97. EV1 = EVOL 'BLEU' 'MANU' (PROG -1. -0.5 0.5 1. 2.)
  98. (PROG 1.E-3 0. 0. 5.E-4 7E-2) ;
  99. DESS EV1 'TITR' ' Sans option' ;
  100.  
  101. DESS EV1 'XBOR' -1.5 2.5
  102. 'TITR' ' Bornes sur X [-1.5 2.5] ' ;
  103.  
  104. DESS EV1 'YBOR' -0.5E-2 7.5E-2
  105. 'TITR' ' Bornes sur Y [-0.5E-2 7.5E-2] ' ;
  106.  
  107. DESS EV1 'XBOR' -1.5 2.5 'YBOR' -0.5E-2 7.5E-2
  108. 'TITR' ' Bornes sur X & Y ' ;
  109.  
  110. DESS EV1 'XBOR' -1.5 2.5 'YBOR' -0.5E-2 7.5E-2
  111. 'XGRA' +0.5 'YGRA' +0.5E-2
  112. 'TITR' ' Bornes sur X-Y & les intervalles de graduations donnes ' ;
  113.  
  114. DESS EV1 'XBOR' -1.5 2.5 'YBOR' -0.5E-2 7.5E-2
  115. 'XGRA' +0.5 'YGRA' +0.5E-2
  116. 'AXES' 'GRIL' 'POIN'
  117. 'TITR' ' La grille & les axes en PLUS ' ;
  118.  
  119.  
  120. * ON TESTE ENSUITE D'AUTRES OPTIONS AVEC UN SYSTEME 2DDL **************
  121. * LEGENDE, TITRES, CENTREMENT, GRILLE ...
  122. * (BP)
  123. * w donné en rad/s
  124. T1=2.;
  125. w1=(2.*pi)/T1;
  126. T2=5.;
  127. w2=(2.*pi)/T2;
  128. xp = prog 0. PAS 0.1 20.;
  129.  
  130. * castem utilise les degrés
  131. yp = 100. * (sin ((180/pi)*w1*xp));
  132. yp2 = 110. * (sin ((180/pi)*w2*xp));
  133.  
  134. ev1 = evol bleu manu xp yp;
  135. ev2 = evol roug manu xp yp2;
  136.  
  137. tdess1 = tabl;
  138. tdess1 . 1 = mot ' REMP MARQ PLUS REGU';
  139. tdess1 . 'TITRE' = tabl;
  140. ent1 = enti w1;
  141. decim1 = (enti (10.*w1)) - (10*ent1);
  142. ent2 = enti w2;
  143. decim2 = (enti (10.*w2)) - (10*ent2);
  144. tdess1 . 'TITRE' . 1 = chai '\W=' ent1 '.' decim1 'rad.s^{-1}';
  145. tdess1 . 2 = mot 'MARQ ROND REGU';
  146. tdess1 . 'TITRE' . 2 = chai '\W=' ent2 '.' decim2 'rad.s^{-1}';
  147.  
  148. DESS (ev1 et ev2)
  149. 'TITR' 'Déplacement x_{\W}(t) = sin(\Wt)'
  150. 'TITX' 't(s)' 'POSX' 'CENT'
  151. 'TITY' 'Dépl u_{A}^{1} (m)' 'POSY' 'CENT'
  152. 'LEGE' 'SO' tdess1;
  153.  
  154. DESS (ev1 et ev2)
  155. 'TITR' 'Déplacement x_{\W}(t) = sin(\Wt)'
  156. 'TITX' 't(s)' 'POSX' 'CENT'
  157. 'YBOR' -110. 110. 'YGRA' 22
  158. 'TITY' 'Dépl u_{A} (m^{1})' 'POSY' 'CENT'
  159. 'LEGE' tdess1;
  160.  
  161. DESS (ev1 et ev2)
  162. 'TITR' 'Déplacement x_{\W}(t) = sin(\Wt)'
  163. 'TITX' 't(s)'
  164. 'XBOR' 0. T2
  165. 'YBOR' -110. 110. 'YGRA' 22.
  166. 'TITY' 'Déplacement x (m)'
  167. 'LEGE' tdess1;
  168.  
  169. *** systeme 2ddl : fonction de tranfert : amplitude et phase ***
  170. ev1tot = VIDE 'EVOLUTION';
  171. ev2tot = VIDE 'EVOLUTION';
  172. * liscoul = mots VIOL BLEU TURQ BLEU ORAN AZUR ROUG ;
  173. liscoul = mots VIOL BLEU TURQ OLIV ORAN AZUR ROUG ;
  174. tdess2 = tabl;
  175. tdess2 . 1 = mot 'MARQ PLUS REGU';
  176. tdess2 . 2 = mot 'MARQ ROND REGU';
  177. tdess2 . 3 = mot 'MARQ CROI REGU';
  178. tdess2 . 4 = mot 'MARQ CARR REGU';
  179. tdess2 . 5 = mot 'MARQ TRIU REGU';
  180. tdess2 . 6 = mot 'MARQ ETOI REGU';
  181. tdess2 . 7 = mot 'MARQ TRID REGU';
  182. tdess2 . 'TITRE' = tabl;
  183.  
  184. xi1 = 0.02 ; xi2 = 0.05;
  185. xi1p = prog 0.001 0.002 0.01 0.02 0.05 0.1 0.15 ;
  186. xi2p = xi1p * (xi2 / xi1);
  187.  
  188. nxi = dime xi1p;
  189. ixi = 0;
  190. repe Bxi nxi; ixi = ixi + 1 ;
  191.  
  192. xi1 = extr xi1p ixi;
  193. xi2 = extr xi2p ixi;
  194. mess ixi ' xi_1=' xi1 ' xi_2=' xi2 ;
  195.  
  196. moxi1 = chai (enti (1000 * (xi1 - (enti xi1))));
  197. si (ega (dime moxi1) 1); moxi1 = chai '00' moxi1; fins;
  198. si (ega (dime moxi1) 2); moxi1 = chai '0' moxi1; fins;
  199. moxi1 = chai (enti xi1) '.' moxi1;
  200. tdess2 . 'TITRE' . ixi = chai '\x_{1}=' (moxi1);
  201.  
  202. m1=2.; k1 = m1*(w1**2); c1 = 2.*xi1*w1*k1;
  203. m2=1.; k2 = m2*(w2**2); c2 = 2.*xi2*w2*k2;
  204. mess w1 m1 k1 c1;
  205. mess w2 m2 k2 c2;
  206.  
  207. wpadim = prog 0. PAS 0.002 2.;
  208. wp = w1 * wpadim;
  209. np = dime wp;
  210. unp = prog np*1.;
  211.  
  212. A_R = ((k1 + k2)*unp) - ((wp**2)*m1);
  213. A_I = wp*(c1 + c2);
  214. B_R = -1.*k2*unp;
  215. B_I = -1.*c2*wp;
  216. D_R = (k2*unp) - ((wp**2)*m2);
  217. D_I = wp*c2;
  218.  
  219. Den_R = (A_R*D_R) - (A_I*D_I) - (B_R**2) + (B_I**2) ;
  220. Den_I = (A_R*D_I) + (A_I*D_R) - (2.*B_R*B_I);
  221. Den2 = (Den_R**2) + (Den_I**2);
  222.  
  223. * pour simplifier on excite seulement en F1 et en phase
  224. F1_R = 1.;
  225. Num11_R = ((Den_R*D_R) - (Den_I*D_I)) * F1_R;
  226. Num11_I = ((Den_R*D_I) - (Den_I*D_R)) * F1_R;
  227. Num12_R = -1.*((Den_R*B_R) - (Den_I*B_I)) * F1_R;
  228. Num12_I = -1.*((Den_R*B_I) - (Den_I*B_R)) * F1_R;
  229.  
  230. X1_R = Num11_R / Den2;
  231. X1_I = Num11_I / Den2;
  232. X2_R = Num12_R / Den2;
  233. X2_I = Num12_I / Den2;
  234.  
  235. X1_AMP = ((X1_R**2)+(X1_I**2))**0.5;
  236. X1_PHA = ATG X1_I X1_R;
  237. X2_AMP = ((X2_R**2)+(X2_I**2))**0.5;
  238. X2_PHA = ATG X2_I X2_R;
  239.  
  240. ev1_amp = evol BLEU manu wpadim X1_AMP;
  241. ev2_amp = evol ROUG manu wpadim X2_AMP;
  242. ev1_pha = evol BLEU manu wpadim X1_PHA;
  243. ev2_pha = evol ROUG manu wpadim X2_PHA;
  244.  
  245. si (xi1 ega 0.02);
  246. tdess1 . 'TITRE' . 1 = mot 'X_{1}';
  247. tdess1 . 'TITRE' . 2 = mot 'X_{2}';
  248.  
  249. * 'Y LOG + titres X et Y centres + LEGE XY'
  250. tit2ddl = chai 'Système à 2ddl : '
  251. '\w_{1}=0.5 \w_{2}=0.2 \x_{1}=2% \x_{2}=5%';
  252. DESS (ev1_amp et ev2_amp)
  253. 'LOGY' 'YBOR' 1.E-3 1.E1
  254. 'GRIL' 'POIN' 'GRIS'
  255. 'TITR' tit2ddl
  256. 'TITX' '\W (Hz)' 'POSX' 'CENT'
  257. 'TITY' 'amplitude |x| (m)' 'POSY' 'CENT'
  258. 'LEGE' 'XY' 1.5 0.8 tdess1;
  259.  
  260. DESS (ev1_pha et ev2_pha)
  261. 'YBOR' -180. 180. 'YGRA' 90.
  262. 'GRIL' 'POIN' 'GRIS'
  263. 'TITR' tit2ddl
  264. 'TITX' '\W (Hz)' 'POSX' 'CENT'
  265. 'TITY' 'phase \j(x) (m)' 'POSY' 'CENT'
  266. 'LEGE' 'XY' 1.5 160 tdess1;
  267.  
  268. fins;
  269.  
  270. ev1tot = ev1tot et (ev1_amp coul (extr liscoul ixi));
  271. ev2tot = ev2tot et (ev2_amp coul (extr liscoul ixi));
  272.  
  273. fin Bxi;
  274.  
  275.  
  276. * ON CONTINUE AVEC D'AUTRES OPTIONS
  277. * (BP)
  278.  
  279. tit2 = chai 'Evolution avec l`amortissement \x';
  280. DESS ev1tot
  281. 'GRIL' 'POIN' 'GRIS' 'TITR' tit2
  282. 'LOGY'
  283. 'TITX' '\W (Hz)' 'POSX' 'CENT'
  284. 'TITY' '|X_{1}| (m)' 'POSY' 'CENT'
  285. 'LEGE' 'XY' 1.45 9. tdess2;
  286. *rem : 'amplitude |X_{1}| (m)' est trop long (limite a 20 caracteres)!
  287. * 'TITY' 'amplitude |X_{1}| (m)' 'POSY' 'CENT'
  288.  
  289. * test de loption LIGNE_VARIABLE
  290. * on définit les style des (np-1) segments
  291. * (=0 lign, =2 tirr, ... =5 pointilles)
  292. nps3 = np / 3;
  293. ltirr2 = lect nps3*0 nps3*5 (np - 1 - (2*nps3))*1;
  294. ltirr3 = lect nps3*1 nps3*2 (np - 1 - (2*nps3))*0;
  295. tdess2 . 'LIGNE_VARIABLE' = TABL;
  296. tdess2 . 'LIGNE_VARIABLE' . 2 = ltirr2;
  297. tdess2 . 'LIGNE_VARIABLE' . 3 = ltirr2;
  298. tdess2 . 'LIGNE_VARIABLE' . 5 = ltirr3;
  299. DESS ev1tot
  300. 'GRIL' 'POIN' 'GRIS' 'TITR' tit2
  301. LOGY
  302. 'TITX' '\W (Hz)' 'POSX' 'CENT'
  303. 'TITY' '|X_{1}| (m)' 'POSY' 'CENT'
  304. 'LEGE' 'XY' 1.45 9. tdess2;
  305.  
  306. * test pour faire des waterfall (+ option REMP BLAN)
  307. * (bp,2019)
  308. * dess ev1tot;
  309. ev1log = WATERFALL ev1tot xi1p '\x' (mots 'LOGY');
  310. repe Bxi nxi;
  311. tdess2 . &Bxi = CHAI tdess2 . &Bxi ' REMP BLAN';
  312. fin Bxi;
  313. dess ev1log 'LOGY' 'LEGE' tdess2;
  314.  
  315.  
  316. *----------------------------------------------------------------------*
  317. * cas-test de la directive @HISTOGR *
  318. *----------------------------------------------------------------------*
  319.  
  320. NN = 10000 ;
  321.  
  322. LTIRAG1 = BRUI 'BLAN' 'GAUS' 0. 2. NN ;
  323. LTIRAG1 = LTIRAG1 -
  324. (MASQ LTIRAG1 'INFERIEUR' 0.) ;
  325. LTIRAG1 = ENTI LTIRAG1 ;
  326.  
  327. IMIN1 = MINI LTIRAG1 ;
  328. NC = (MAXI LTIRAG1) - IMIN1 + 1 ;
  329. LCOMPT1 = PROG NC*0. ;
  330.  
  331. REPE BLOC1 NN ;
  332. IPOS1 =(EXTR LTIRAG1 &BLOC1)
  333. + 1 - IMIN1 ;
  334. ICOMPT1 = EXTR LCOMPT1 IPOS1 ;
  335. REMP LCOMPT1 IPOS1 (ICOMPT1 + 1.) ;
  336. FIN BLOC1 ;
  337.  
  338. TOPT1 = TABL ;
  339. TOPT1 . 'HPOS' = FLOT IMIN1 ;
  340. TOPT1 . 'DESS' = 'GRIL AXES' ;
  341. TOPT1 . 'COUL' = mot 'OCEA';
  342.  
  343. @HISTOGR LCOMPT1 TOPT1 FAUX ;
  344.  
  345.  
  346. *------------------------------------------------------*
  347. * Test des couleurs *
  348. *------------------------------------------------------*
  349.  
  350. coul3 = mots 'INDI' 'VIOL' 'MARI' 'BLEU' 'AZUR' 'CYAN'
  351. 'TURQ' 'OCEA' 'BOUT' 'VERT' 'OLIV' 'LIME'
  352. 'JAUN' 'OR' 'BRON'
  353. 'ORAN' 'CORA' 'ROUG' 'BRIQ'
  354. 'BRUN' 'CARA' 'BEIG' 'KAKI' 'POUR' 'ROSE' 'PEAU' 'LAVA'
  355. 'BLAN' 'GRIS' 'NOIR' ;
  356. n3 = dime coul3;
  357. xx = prog 0. 1.;
  358. yy = prog 1. 1.;
  359. ev = vide EVOLUTIO;
  360. T = tabl;
  361. repe b n3;
  362. c = extr coul3 &b;
  363. ev =ev et (evol c 'MANU' xx (&b * yy));
  364. T . &b = chai 'LABEL' ' ' c ' REGU';
  365. fin b;
  366.  
  367. dess ev T XBOR 0. 1.2;
  368.  
  369.  
  370. FIN ;
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales