Télécharger hbm.procedur

Retour à la liste

Numérotation des lignes :

  1. * HBM PROCEDUR FANDEUR 22/01/19 21:15:07 11256
  2. *
  3. ************************************************************************
  4. * CREATION : 22/05/2014 Lihan XIE
  5. * MODIF : 06/01/2016 BP
  6. *
  7. * OBJET :
  8. *
  9. * - Construire les matrices caracteristiques (Matrice de MASSE,
  10. * RIGIDITE, AMORTISSEMENT, ...) pour toutes les harmoniques
  11. * sans modele
  12. * - Traduit la table de resultats demandés à CONTINU
  13. * (inconnues temporelles -> inconnues frequentielles)
  14. *
  15. *
  16. * ENTREE :
  17. *
  18. * TABHBM = TABLE
  19. *
  20. * . 'RIGIDITE_CONSTANTE' = K
  21. * . 'AMORTISSEMENT_CONSTANT' = C
  22. * . 'MASSE_CONSTANTE' = M
  23. * . 'BLOCAGES_MECANIQUES' = Kblocages
  24. * . 'RIGIDITE_CENTRIFUGE'
  25. * . 'CORIOLIS_CONSTANT'
  26. * . 'N_HARMONIQUE' = nombre d'harmoniques H
  27. * . 'RESULTATS' = table des resultats attendus
  28. * . i . 'POINT_MESURE' exprimés sur ddl temporel
  29. * . 'COMPOSANTES'
  30. * . 'COULEUR'
  31. * . 'TITRE'
  32. *
  33. *
  34. * Sortie :
  35. * _______
  36. *
  37. * TABHBM
  38. * . 'RIGIDITE_HBM' = K developpe en H harmoniques
  39. * . 'AMORTISSEMENT_HBM' = C developpe en H harmoniques
  40. * . 'MASSE_HBM' = M developpe en H harmoniques
  41. * . 'BLOCAGES_HBM' = Kblocages en H harmoniques
  42. * . 'CENTRIFUGE_HBM'
  43. * . 'CORIOLIS_HBM'
  44. *
  45. * . 'RESULTATS_HBM' = table des resultats attendus
  46. * . j . 'POINT_MESURE' exprimés sur ddl frequentiels
  47. * . 'COMPOSANTES'
  48. * . 'COULEUR'
  49. * . 'TITRE'
  50. * . 'RESULTATS'
  51. * . i . 'INDICES_HBM' = liste des indices j associe
  52. * au i^eme resultat
  53. *
  54. * . 'COMPOSANTES'
  55. * . 'DEPLACEMENT' = composantes dep temporelles (max.6)
  56. * . 'FORCE' = composantes for temporelles (max.6)
  57. * . 'DEPLACEMENT_HBM' = comp dep frequentielles
  58. * . 'FORCE_HBM' = comp for frequentielles
  59. * . 'HARM_DEPLACEMENT' = comp dep par ordre d'harmonique
  60. * . 'HARM_FORCE' = comp for par ordre d'harmonique
  61. *
  62. * Correspondance entre inconnues temporelles et frequentielles :
  63. * +-----------+--------------------------------------+
  64. * | domaine | domaine fréquentiel |
  65. * | temporel | k=0 k=1(cos) k=1(sin) ... |
  66. * +-----------+--------------------------------------+
  67. * | UX | U1 U4 V4 ... |
  68. * | UY | U2 U5 V5 ... |
  69. * | UZ | U3 U6 V6 ... |
  70. * +-----------+--------------------------------------+
  71. *
  72. *
  73. ***********************************************************************
  74. DEBPROC HBM TABHBM*'TABLE';
  75. * fldebug = vrai;
  76. fldebug = faux;
  77.  
  78. ************************************************************************
  79. * *
  80. * VERIFICATION DES DONNEES D'ENTREE + VALEURS PAR DEFAUT *
  81. * *
  82. ************************************************************************
  83.  
  84.  
  85. * lecture des matrices definies dans le domaine temporel ***************
  86.  
  87. SI (EXIS TABHBM 'RIGIDITE_CONSTANTE');
  88. RI1 = TABHBM . 'RIGIDITE_CONSTANTE';
  89. SINON;
  90. MESS 'IL MANQUE LA RIGIDITE'; ERRE 21;
  91. FINSI;
  92.  
  93. SI (EXIS TABHBM 'AMORTISSEMENT_CONSTANT');
  94. AMOR1 = TABHBM . 'AMORTISSEMENT_CONSTANT';
  95. SINON;
  96. AMOR1 = VIDE 'RIGIDITE'/'AMORTISSEMENT';
  97. MESS 'IL MANQUE L AMORTISSEMENT : on poursuit malgré tout...';
  98. FINSI;
  99.  
  100. SI (EXIS TABHBM 'MASSE_CONSTANTE');
  101. MASS1 = TABHBM . 'MASSE_CONSTANTE';
  102. SINON;
  103. MASS1 = VIDE 'RIGIDITE'/'MASSE';
  104. MESS 'IL MANQUE LA MASSE: on poursuit malgré tout...';
  105. FINSI;
  106.  
  107. SI (EXIS TABHBM 'BLOCAGES_MECANIQUES');
  108. KBLO1 = TABHBM . 'BLOCAGES_MECANIQUES';
  109. SINON;
  110. MESS 'IL MANQUE LES BLOCAGES_MECANIQUES : on poursuit malgré tout...';
  111. KBLO1 = VIDE 'RIGIDITE'/'RIGIDITE';
  112. TABHBM . 'BLOCAGES_MECANIQUES' = KBLO1 ;
  113. FINSI;
  114.  
  115. SI (EXIS TABHBM 'GYRO_CONSTANT');
  116. CG1 = TABHBM . 'GYRO_CONSTANT';
  117. SINON;
  118. CG1 = VIDE 'RIGIDITE'/'RIGIDITE';
  119. FINSI;
  120.  
  121. SI (EXIS TABHBM 'RIGIDITE_CENTRIFUGE');
  122. Kcen1 = TABHBM . 'RIGIDITE_CENTRIFUGE';
  123. SINON;
  124. Kcen1 = VIDE 'RIGIDITE'/'RIGIDITE';
  125. FINSI;
  126.  
  127. SI (EXIS TABHBM 'PRECONTRAINTE_CENTRIFUGE');
  128. Ksig1 = TABHBM . 'PRECONTRAINTE_CENTRIFUGE';
  129. SINON;
  130. Ksig1 = VIDE 'RIGIDITE'/'RIGIDITE';
  131. FINSI;
  132.  
  133. SI (EXIS TABHBM 'CORIOLIS_CONSTANT');
  134. Ccor1 = TABHBM . 'CORIOLIS_CONSTANT';
  135. SINON;
  136. Ccor1 = VIDE 'RIGIDITE'/'RIGIDITE';
  137. FINSI;
  138.  
  139. * lecture du nombre d'harmoniques **************************************
  140.  
  141. SI (EXIS TABHBM 'N_HARMONIQUE');
  142. nhbm = TABHBM . 'N_HARMONIQUE';
  143. SINON;
  144. MESS 'IL MANQUE LE NOMBRE D HARMONIQUE'; ERRE 21;
  145. FINSI;
  146.  
  147.  
  148. ************************************************************************
  149. * *
  150. * INITIALISATIONS *
  151. * *
  152. ************************************************************************
  153.  
  154. *composantes primales et duales temporelles ****************************
  155. rigtemp = RI1 'ET' KBLO1 ;
  156. NOMCOM = EXTR rigtemp 'COMP';
  157. NOMFOR = EXTR rigtemp 'COMP' 'DUAL';
  158. rigtemp = 1 ;
  159. TABHBM . 'COMPOSANTES' = TABLE;
  160. TABHBM . 'COMPOSANTES'. 'DEPLACEMENT' = NOMCOM;
  161. TABHBM . 'COMPOSANTES'. 'FORCE' = NOMFOR;
  162. *ncom = nombre de composantes par noeud
  163. ncom = DIME NOMCOM;
  164. si fldebug;
  165. mess 'composantes primales temporelles :'; list NOMCOM;
  166. mess 'composantes duales temporelles :'; list NOMFOR;
  167. finsi;
  168.  
  169. * des matrices etendues aux inconnues frequentielles *******************
  170. * type raideur
  171. Ktot = VIDE 'RIGIDITE'/'RIGIDITE';
  172. KBtot = VIDE 'RIGIDITE'/'RIGIDITE';
  173. KCtot = VIDE 'RIGIDITE'/'RIGIDITE';
  174. KStot = VIDE 'RIGIDITE'/'RIGIDITE';
  175. * type masse
  176. Mtot = VIDE 'RIGIDITE'/'MASSE';
  177. * type amortissement
  178. Atot = VIDE 'RIGIDITE'/'AMORTISSEMENT';
  179. Gtot = VIDE 'RIGIDITE'/'AMORTISSEMENT';
  180. Ctot = VIDE 'RIGIDITE'/'AMORTISSEMENT';
  181.  
  182. * + celles necessaires a l'analyse de stabilite par method de Hill
  183. * (procedure FLOQUET)
  184. * type masse
  185. Mtot1 = VIDE 'RIGIDITE';
  186. Mtot2 = VIDE 'RIGIDITE';
  187. * type amortissement
  188. Atot1 = VIDE 'RIGIDITE';
  189. Gtot1 = VIDE 'RIGIDITE';
  190. Ctot1 = VIDE 'RIGIDITE';
  191.  
  192. ************************************************************************
  193. * *
  194. * CONSTRUCTION DES MATRICES *
  195. * *
  196. ************************************************************************
  197.  
  198. MOTDEP0 = MOTS;
  199. MOTFOR0 = MOTS;
  200. NOMU = TABLE;
  201. NOMF = TABLE;
  202.  
  203.  
  204. * BOUCLE SUR LES HARMONIQUES -------------------------------------------
  205.  
  206. ik = -1;
  207. REPE bk (NHBM + 1); ik = ik + 1 ;
  208.  
  209. si fldebug; mess '---------- k=' ik '---------'; finsi;
  210.  
  211. ************ CAS HARMONIQUE 0 ************
  212.  
  213. SI (ik EGA 0);
  214.  
  215. * GENERATION DES NOMS DE COMPOSANTES EN FREQUENTIEL
  216. MOTDEP = MOTS; MOTFOR = MOTS;
  217. il = 0; ij = 0; ilx = 0;
  218. REPE bl ncom; il = il + 1 ;
  219. MOTCOM = EXTR NOMCOM il;
  220. SI (EGA MOTCOM (CHAI 'LX'));
  221. MOTDEP = MOTDEP ET (MOTS 'LX');
  222. MOTFOR = MOTFOR ET (MOTS 'FLX');
  223. ilx = 1;
  224. SINON;
  225. ij = ij + 1;
  226. motu = chai 'U' ij;
  227. motf = chai 'F' ij;
  228. MOTDEP = MOTDEP ET (MOTS motu);
  229. MOTFOR = MOTFOR ET (MOTS motf);
  230. FINSI;
  231. FIN bl ;
  232. NOMU . ik = MOTDEP; NOMF . ik = MOTFOR;
  233. MOTDEP0 = MOTDEP0 ET MOTDEP;
  234. MOTFOR0 = MOTFOR0 ET MOTFOR;
  235. si fldebug;
  236. mess 'composantes primales k=0 :'; list MOTDEP;
  237. mess 'composantes duales k=0 :'; list MOTFOR;
  238. finsi;
  239.  
  240. * GENERATION DES MATRICES FREQUENTIELLES pour ik=0
  241. * type raideur
  242. K_ik = CHAN 'INCO' RI1 NOMCOM MOTDEP NOMFOR MOTFOR;
  243. KB_ik = CHAN 'INCO' KBLO1 NOMCOM MOTDEP NOMFOR MOTFOR;
  244. KC_ik = CHAN 'INCO' Kcen1 NOMCOM MOTDEP NOMFOR MOTFOR;
  245. KS_ik = CHAN 'INCO' Ksig1 NOMCOM MOTDEP NOMFOR MOTFOR;
  246. A_ik = vide 'RIGIDITE';
  247. G_ik = A_ik;
  248. C_ik = A_ik;
  249. M_ik = A_ik;
  250. * type amortissement (seulement pour FLOQUET)
  251. A1_ik = CHAN 'INCO' AMOR1 NOMCOM MOTDEP NOMFOR MOTFOR;
  252. G1_ik = CHAN 'INCO' CG1 NOMCOM MOTDEP NOMFOR MOTFOR;
  253. C1_ik = CHAN 'INCO' Ccor1 NOMCOM MOTDEP NOMFOR MOTFOR;
  254. * type masse (seulement pour FLOQUET)
  255. M1_ik = A_ik;
  256. M2_ik = CHAN 'INCO' MASS1 NOMCOM MOTDEP NOMFOR MOTFOR;
  257.  
  258.  
  259. ************ CAS HARMONIQUE ik ************
  260. SINON;
  261.  
  262. * GENERATION DES NOMS DE COMPOSANTES EN FREQUENTIEL
  263. MOTDEPC = MOTS; MOTFORC = MOTS;
  264. MOTDEPS = MOTS; MOTFORS = MOTS;
  265. NOMIU = MOTS; NOMIF = MOTS;
  266. il = 0; ij = 0;
  267. REPE bl ncom; il = &bl ;
  268. MOTCOM = EXTR NOMCOM il;
  269. SI (EGA MOTCOM (CHAI 'LX'));
  270. * cas particulier du multiplicateur de Lagrange : le nom reste
  271. MOTDEPC = MOTDEPC ET (MOTS 'LX');
  272. MOTFORC = MOTFORC ET (MOTS 'FLX');
  273. MOTDEPS = MOTDEPS ET (MOTS 'LX');
  274. MOTFORS = MOTFORS ET (MOTS 'FLX');
  275. MOTIU = MOTIU ET (MOTS 'LX');
  276. NOMIF = NOMIF ET (MOTS 'FLX');
  277. SINON;
  278. ij = ij + 1;
  279. * nouveau nom U### pour cos (ik w t)
  280. motu = chai 'U' (ik * (ncom - ilx) + ij);
  281. motf = chai 'F' (ik * (ncom - ilx) + ij);
  282. MOTDEPC = MOTDEPC ET (MOTS motu) ;
  283. MOTFORC = MOTFORC ET (MOTS motf) ;
  284. * nouveau nom V### pour sin (ik w t)
  285. motv = chai 'V' (ik * (ncom - ilx) + ij);
  286. motg = chai 'G' (ik * (ncom - ilx) + ij);
  287. MOTDEPS = MOTDEPS ET (MOTS motv);
  288. MOTFORS = MOTFORS ET (MOTS motg);
  289. * on a besoin des composantes imaginaires issues de IMPE
  290. SI (ik EGA 1);
  291. MOTFOR=(EXTR NOMFOR il); LONFOR=MINI (LECT 3 (DIME MOTFOR)) ;
  292. MOTCOM=(EXTR NOMCOM il); LONCOM=MINI (LECT 3 (DIME MOTCOM)) ;
  293. MOTIF = chai 'I' (EXTR MOTFOR 1 LONFOR) ;'COMM' 'On ne garde que la chaine(1:LONFOR) et on place I devant';
  294. MOTIU = chai 'I' (EXTR MOTCOM 1 LONCOM) ;'COMM' 'On ne garde que la chaine(1:LONCOM) et on place I devant';
  295. NOMIU = NOMIU ET (MOTS MOTIU);
  296. NOMIF = NOMIF ET (MOTS MOTIF);
  297. FINSI;
  298. FINSI;
  299. FIN bl ;
  300. * table des nom d'inconnues frequentielles
  301. NOMU . ik = TABLE; NOMF . ik = TABLE;
  302. NOMU . ik . 'COS' = MOTDEPC; NOMF . ik . 'COS' = MOTFORC;
  303. NOMU . ik . 'SIN' = MOTDEPS; NOMF . ik . 'SIN' = MOTFORS;
  304. MOTDEP = MOTDEPC ET MOTDEPS; MOTFOR = MOTFORC ET MOTFORS;
  305. MOTDEP0 = MOTDEP0 ET MOTDEP; MOTFOR0 = MOTFOR0 ET MOTFOR;
  306. SI (ik EGA 1);
  307. NOMCOM = NOMCOM ET NOMIU; NOMFOR = NOMFOR ET NOMIF;
  308. FINSI;
  309. si fldebug;
  310. mess 'composantes primales k :'; list MOTDEP;
  311. mess 'composantes duales k :'; list MOTFOR;
  312. finsi;
  313.  
  314. * GENERATION DES MATRICES IMPEDANCES (1 seule fois)
  315. SI (ik EGA 1);
  316. * type raideur [ K 0 ; 0 K ]
  317. RI1_H = IMPE RI1 'RAIDEUR';
  318. KBLO1_H = IMPE KBLO1 'RAIDEUR';
  319. Kcen1_H = IMPE Kcen1 'RAIDEUR';
  320. Ksig1_H = IMPE Ksig1 'RAIDEUR';
  321. * type masse [ -M 0 ; 0 -M ]
  322. MASS1_H = IMPE MASS1 'MASSE';
  323. * type masse pour FLOQUET [ 0 -M ; M 0 ]
  324. MASS1_C = IMPE MASS1 'AMORTISSEMENT';
  325. * type amortissement [ 0 -C ; C 0 ]
  326. AMOR1_H = IMPE AMOR1 'AMORTISSEMENT';
  327. CG1_H = IMPE CG1 'AMORTISSEMENT';
  328. Ccor1_H = IMPE Ccor1 'AMORTISSEMENT';
  329. * type amortissement pour FLOQUET [ C 0 ; 0 C ]
  330. AMOR1_C = IMPE AMOR1 'RAIDEUR';
  331. CG1_C = IMPE CG1 'RAIDEUR';
  332. Ccor1_C = IMPE Ccor1 'RAIDEUR';
  333. FINSI;
  334.  
  335. * GENERATION DES MATRICES FREQUENTIELLES pour ik
  336. * DDL : U* IU* --> U### V###
  337. mik = -1.* ik ;
  338. m2ik = -2.* ik ;
  339. ik2 = ik**2;
  340. * type raideur
  341. K_ik = CHAN 'INCO' RI1_H NOMCOM MOTDEP NOMFOR MOTFOR;
  342. KB_ik = CHAN 'INCO' KBLO1_H NOMCOM MOTDEP NOMFOR MOTFOR 'DUPL';
  343. KC_ik = CHAN 'INCO' Kcen1_H NOMCOM MOTDEP NOMFOR MOTFOR;
  344. KS_ik = CHAN 'INCO' Ksig1_H NOMCOM MOTDEP NOMFOR MOTFOR;
  345. * type masse
  346. M_ik = CHAN 'INCO' (ik2 * MASS1_H) NOMCOM MOTDEP NOMFOR MOTFOR;
  347. * type amortissement
  348. A_ik = CHAN 'INCO' (mik * AMOR1_H) NOMCOM MOTDEP NOMFOR MOTFOR;
  349. G_ik = CHAN 'INCO' (mik * CG1_H) NOMCOM MOTDEP NOMFOR MOTFOR;
  350. C_ik = CHAN 'INCO' (mik * Ccor1_H) NOMCOM MOTDEP NOMFOR MOTFOR;
  351. * type masse (pour \Delta_1 de FLOQUET)
  352. M1_ik = CHAN 'INCO' (m2ik * MASS1_C) NOMCOM MOTDEP NOMFOR MOTFOR;
  353. * type amortissement (pour \Delta_1 de FLOQUET)
  354. A1_ik = CHAN 'INCO' AMOR1_C NOMCOM MOTDEP NOMFOR MOTFOR;
  355. G1_ik = CHAN 'INCO' CG1_C NOMCOM MOTDEP NOMFOR MOTFOR;
  356. C1_ik = CHAN 'INCO' Ccor1_C NOMCOM MOTDEP NOMFOR MOTFOR;
  357. * type masse (seulement pour \Delta_2 de FLOQUET)
  358. M2_ik = CHAN 'INCO' (-1.* MASS1_H) NOMCOM MOTDEP NOMFOR MOTFOR;
  359.  
  360. FINSI;
  361. ************ FIN DISTINCTION HARMONIQUE 0 et ik>0 ************
  362. * on somme sur ik
  363. Ktot = Ktot ET K_ik ;
  364. KBtot = KBtot ET KB_ik;
  365. KCtot = KCtot ET KC_ik;
  366. KStot = KStot ET KS_ik;
  367. Mtot = Mtot ET M_ik ;
  368. Atot = Atot ET (A_ik) ;
  369. Gtot = Gtot ET G_ik ;
  370. Ctot = Ctot ET C_ik ;
  371. * + celles necessaires a FLOQUET
  372. Mtot1 = Mtot1 ET (M1_ik);
  373. Mtot2 = Mtot2 ET M2_ik;
  374. Atot1 = Atot1 ET A1_ik;
  375. Gtot1 = Gtot1 ET G1_ik;
  376. Ctot1 = Ctot1 ET C1_ik;
  377.  
  378.  
  379. FIN bk;
  380. * FIN DE BOUCLE SUR LES HARMONIQUES ------------------------------------
  381.  
  382.  
  383.  
  384. ************************************************************************
  385. * *
  386. * STOCKAGE DES RESULTATS *
  387. * *
  388. ************************************************************************
  389.  
  390.  
  391. ************ MATRICES ************
  392.  
  393. * pour l'analyse harmonique :
  394.  
  395. TABHBM . 'RIGIDITE_HBM' = Ktot;
  396. TABHBM . 'BLOCAGES_HBM' = KBtot;
  397. TABHBM . 'AMORTISSEMENT_HBM' = Atot;
  398. TABHBM . 'CORIOLIS_HBM' = Gtot et Ctot;
  399. TABHBM . 'MASSE_HBM' = Mtot;
  400. TABHBM . 'CENTRIFUGE_HBM' = KCtot et KStot;
  401.  
  402. * pour l'analyse de stabilite (methode de Hill de FLOQUET):
  403. TABHBM . 'MASSE_HBM_1' = Mtot1;
  404. TABHBM . 'MASSE_HBM_2' = Mtot2;
  405. TABHBM . 'AMORTISSEMENT_HBM_1' = Atot1;
  406. TABHBM . 'CORIOLIS_HBM_1' = Gtot1 et Ctot1;
  407.  
  408.  
  409. ************ TABLEAU DES NOMS DE COMPOSANTES ************
  410.  
  411. TABHBM . 'COMPOSANTES'. 'DEPLACEMENT_HBM' = MOTDEP0;
  412. TABHBM . 'COMPOSANTES'. 'FORCE_HBM' = MOTFOR0;
  413. TABHBM . 'COMPOSANTES'. 'HARM_DEPLACEMENT' = NOMU;
  414. TABHBM . 'COMPOSANTES'. 'HARM_FORCE' = NOMF;
  415. COMPU = TABLE;
  416. COMPF = TABLE;
  417. REPE Bcomp ncom; in = &Bcomp;
  418. ICOMU = EXTR NOMCOM in;
  419. ICOMF = EXTR NOMFOR in;
  420. COMPU . ICOMU = MOTS (EXTR NOMU . 0 in);
  421. COMPF . ICOMF = MOTS (EXTR NOMF . 0 in);
  422. REPE Bhbm nhbm ; ih = &Bhbm;
  423. COMPU . ICOMU = COMPU . ICOMU
  424. ET (MOTS (EXTR NOMU . ih . 'COS' in))
  425. ET (MOTS (EXTR NOMU . ih . 'SIN' in)) ;
  426. COMPF . ICOMF = COMPF . ICOMF
  427. ET (MOTS (EXTR NOMF . ih . 'COS' in))
  428. ET (MOTS (EXTR NOMF . ih . 'SIN' in)) ;
  429. FIN Bhbm;
  430. FIN Bcomp;
  431. TABHBM . 'COMPOSANTES'. 'HARM_COMP_DEP' = COMPU;
  432. TABHBM . 'COMPOSANTES'. 'HARM_COMP_FOR' = COMPF;
  433.  
  434.  
  435. *********** DEFINITION DES NOMS DES INCONNUES PAR OPTI INCO ************
  436.  
  437. MOPRIM = MOTS ; MODUAL = MOTS;
  438. REPE BNOM (DIME MOTDEP0); in = &BNOM;
  439.  
  440. SI (NEG (EXTR MOTDEP0 in) 'LX ');
  441. MOPRIM = MOPRIM ET (MOTS (EXTR MOTDEP0 in));
  442. MODUAL = MODUAL ET (MOTS (EXTR MOTFOR0 in));
  443. FINSI;
  444. FIN BNOM;
  445.  
  446. OPTI INCO MOPRIM MODUAL;
  447.  
  448.  
  449. *********** CONSTRUCTION DU TABLEAU RESULTATS_HBM ***********
  450.  
  451. SI (EXIS TABHBM 'RESULTATS');
  452.  
  453. * tables des resultats temporels
  454. TRES1 = TABHBM . 'RESULTATS';
  455. nres1 = DIME TRES1;
  456. * tables des resultats frequentiels
  457. TABHBM . 'RESULTATS_HBM' = TABL;
  458. TRES2 = TABHBM . 'RESULTATS_HBM';
  459. * tables des titres pour l operateur DESSIN
  460. TRES1 . 'TITRE' = TABL;
  461.  
  462. ires2 = 0;
  463. ires1 = 0;
  464. REPE BRES1 nres1; ires1 = ires1 + 1;
  465. SI (NON (EXIS TRES1 ires1)); ITER BRES1; FINSI;
  466.  
  467. * - l indice existe : il faut travailler dessus :
  468.  
  469. * -titre :
  470. si (exis TRES1 . ires1 'TITRE');
  471. motit1 = TRES1 . ires1 . 'TITRE';
  472. sinon;
  473. motit1 = chai 'Resultat' ires1*4;;
  474. finsi;
  475. TRES1 . 'TITRE' . ires1 = motit1 ;
  476.  
  477. * -composante :
  478. si (non (exis TRES1 . ires1 'COMPOSANTE'));
  479. mess 'RESULTATS . 'ires1' . COMPOSANTE absente !!!'; erre 21;
  480. finsi;
  481. comp1 = TRES1 . ires1 . 'COMPOSANTE';
  482.  
  483. * -cas particulier FREQuence w inconnue :
  484. si (ega comp1 'FREQ');
  485. ires2 = ires2 + 1;
  486. TRES2 . ires2 = tabl;
  487. TRES2 . ires2 . 'COMPOSANTE' = comp1;
  488. si (exis TRES1 . ires1 'COULEUR');
  489. TRES2 . ires2 . 'COULEUR' = TRES1 . ires1 . 'COULEUR';
  490. finsi;
  491. iter BRES1;
  492. finsi;
  493.  
  494. * -cas "standard" :
  495. si (non (exis TRES1 . ires1 'POINT_MESURE'));
  496. mess 'RESULTATS . 'ires1' . POINT_MESURE absent !!!'; erre 21;
  497. finsi;
  498. pmes1 = TRES1 . ires1 . 'POINT_MESURE';
  499.  
  500. * il faut les harmoniques correspondantes
  501. si (non (exis COMPU comp1));
  502. mess 'RESULTATS . 'ires1' . COMPOSANTE inconnue !!!'; erre 21;
  503. finsi;
  504. U_HBM = COMPU . comp1;
  505. nU_HBM = dime U_HBM;
  506. si (neg nU_HBM (2*nhbm + 1));
  507. mess 'pb avec nombre de composantes'; erre 21;
  508. finsi;
  509.  
  510. * on va traiter toutes les composantes frequentielles relatives a
  511. * cette inconnue temporelle
  512. TRES1 . ires1 . 'INDICES_HBM' = lect;
  513. repe BU_HBM nU_HBM;
  514. ui = EXTR U_HBM &BU_HBM;
  515. ires2 = ires2 + 1;
  516. TRES2 . ires2 = tabl;
  517. TRES2 . ires2 . 'POINT_MESURE' = pmes1 ;
  518. TRES2 . ires2 . 'COMPOSANTE' = ui;
  519. si (exis TRES1 . ires1 'COULEUR_HBM');
  520. TRES2 . ires2 . 'COULEUR'
  521. = extr TRES1 . ires1 . 'COULEUR_HBM' &BU_HBM;
  522. sinon;
  523. si (exis TRES1 . ires1 'COULEUR');
  524. TRES2 . ires2 . 'COULEUR' = TRES1 . ires1 . 'COULEUR';
  525. finsi;
  526. finsi;
  527. si (EGA &BU_HBM 1);
  528. motit2 = chai comp1'_{k=0}';
  529. sinon;
  530. k = &BU_HBM / 2 ;
  531. si (MULT &BU_HBM 2);
  532. motit2 = chai comp1'^{cos}_{k='k'}';
  533. sinon;
  534. motit2 = chai comp1'^{sin}_{k='k'}';
  535. finsi;
  536. finsi;
  537. TRES2 . ires2 . 'TITRE' = motit2 ;
  538. MESS ires1 ': ' motit2 ' <--> ' ui;
  539. * pour + de facilite dans le post-traitement, on enregistre les
  540. * indices ires2 des harmoniques dans la table TRES1
  541. TRES1 . ires1 . 'INDICES_HBM'
  542. = TRES1 . ires1 . 'INDICES_HBM' et ires2;
  543. fin BU_HBM;
  544.  
  545. FIN BRES1;
  546.  
  547. FINSI;
  548.  
  549.  
  550. *********** PETIT FLAG POUR MARQUER LE PASSAGE DANS HBM ***********
  551.  
  552. TABHBM . 'HBM' = VRAI;
  553.  
  554.  
  555. FINPROC ;
  556.  

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