Télécharger hbm_post.procedur

Retour à la liste

Numérotation des lignes :

  1. * HBM_POST PROCEDUR BP208322 16/09/01 21:15:04 9010
  2. *
  3. ************************************************************************
  4. * CREATION : 09/07/2015
  5. *
  6. * OBJET : - Traduit la table de resultats frequentiels fournis par
  7. * CONTINU en resultats temporels
  8. *
  9. * ENTREE :
  10. *
  11. * TABHBM = TABLE
  12. *
  13. * . 'N_HARMONIQUE' = nombre d'harmoniques
  14. * . 'RESULTATS' . i . 'POINT_MESURE' = resultats attendus
  15. * . 'COMPOSANTES' exprimé sur ddl temporel
  16. * . 'COULEUR'
  17. * . 'TITRE'
  18. * . 'INDICES_HBM' = liste des indices j associé au
  19. * i^eme resultat
  20. * . 'RESULTATS_HBM' . j . 'POINT_MESURE' = resultats attendus
  21. * . 'COMPOSANTES' exprimé sur ddl frequentiel
  22. * . 'COULEUR'
  23. * . 'TITRE'
  24. *
  25. *
  26. * SORTIE :
  27. *
  28. * TABHBM
  29. * . 'RESULTATS' . i . 'RESULTATS' = evolution X(w)
  30. *
  31. * TABHBM
  32. * . 'RESULTATS' . i . 'RESULTATS_TEMPORELS' . iw = evolution x(t/T)
  33. * . 'RESULTATS' . i . 'RESULTATS_TEMPORELS' . -iw = evolution 1/w * dx/dt(t/T
  34. *
  35. *
  36. ***********************************************************************
  37. DEBPROC HBM_POST TABHBM*'TABLE' LMOT1/'LISTMOTS';
  38.  
  39.  
  40. ************************************************************************
  41. * *
  42. * RECUPERATION DES DONNEES D'ENTREE + VALEURS PAR DEFAUT *
  43. * *
  44. ************************************************************************
  45.  
  46. * table des resultats temporels
  47. SI (NON (EXIS TABHBM 'RESULTATS'));
  48. MESS 'Il manque les RESULTATS'; erre 21;
  49. SINON;
  50. TRES1 = TABHBM . 'RESULTATS';
  51. FINSI;
  52.  
  53. * table des resultats frequentiels
  54. SI (NON (EXIS TABHBM 'RESULTATS_HBM'));
  55. MESS 'Il manque les RESULTATS_HBM'; erre 21;
  56. SINON;
  57. TRES2 = TABHBM . 'RESULTATS_HBM';
  58. FINSI;
  59.  
  60. * type des resultats temporels a calculer
  61. SI (NON (EXIS LMOT1));
  62. LMOT1 = MOTS 'MAXI';
  63. FINSI;
  64. FLMAXI = EXIS LMOT1 'MAXI';
  65. FLTEMP = EXIS LMOT1 'TEMP';
  66. FLVITE = EXIS LMOT1 'VITE';
  67. * si recuperation des resultats temporels, lesquels ?
  68. SI FLTEMP;
  69. SI (exis TABHBM 'PAS_SAUVES');
  70. SI (ega (TYPE TABHBM . 'PAS_SAUVES') 'ENTIER');
  71. ISAUV = TABHBM . 'PAS_SAUVES';
  72. SINON;
  73. si (ega TABHBM . 'PAS_SAUVES' 'TOUS'); ISAUV = 1; finsi;
  74. si (ega TABHBM . 'PAS_SAUVES' 'AUCUN'); ISAUV = NPAS; finsi;
  75. FINSI;
  76. SINON;
  77. ISAUV = 10;
  78. FINSI;
  79. FINSI;
  80.  
  81. SI (NON (EXIS TABHBM 'N_HARMONIQUE'));
  82. MESS 'Il manque le nombre d harmonique N_HARMONIQUE'; erre 21;
  83. SINON;
  84. nhbm = TABHBM . 'N_HARMONIQUE';
  85. FINSI;
  86.  
  87. SI (NON (EXIS TABHBM 'TEMPS_PROG'));
  88. MESS 'Il manque TEMPS_PROG !'; erre 21;
  89. SINON;
  90. wprog = TABHBM . 'TEMPS_PROG';
  91. FINSI;
  92.  
  93. * discretisation temporelle a adopter
  94. SI (NON (EXIS TABHBM 'N_PT_POST'));
  95. * on considère qu'il faut nbp=2**7=128 pour la plus petite harmonique !
  96. nbp = 2**7;
  97. n_pt = nbp * nhbm;
  98. TABHBM . 'N_PT_POST' = n_pt;
  99. SINON;
  100. n_pt = TABHBM . 'N_PT_POST';
  101. FINSI;
  102.  
  103.  
  104. ************************************************************************
  105. * *
  106. * PREPARATION DES FONCTIONS DU TEMPS *
  107. * *
  108. ************************************************************************
  109.  
  110. * discretisation temporelle :
  111. tamp = prog 0. PAS (360. / n_pt) 360.;
  112. tadim = (1./360.) * tamp;
  113. namp = dime tamp;
  114.  
  115. * creation d'une table des fonctions temporelles :
  116. TTPROG = tabl;
  117. TTPROG . 't/T' = tadim;
  118. * harmonique 0 : { ... 1 ... }
  119. ihbm = 1;
  120. TTPROG . ihbm = prog namp*1;
  121. repe BHBM nhbm;
  122. * harmonique k :
  123. ktamp = &BHBM * tamp;
  124. * harmonique k : { ... cos kwt_i ... }
  125. ihbm = ihbm + 1;
  126. TTPROG . ihbm = cos ktamp;
  127. * harmonique k : { ... sin kwt_i ... }
  128. ihbm = ihbm + 1;
  129. TTPROG . ihbm = sin ktamp;
  130. fin BHBM;
  131. * on ainsi construit :
  132. * TTPROG . 1 = { ... 1 ...}
  133. * . 2*k = { ... cos kwt ...}
  134. * . 2*k+1 = { ... sin kwt ...}
  135. * pour k = 1 ... nhbm
  136.  
  137. * creation d'une table des derivees des fonctions temporelles :
  138. si FLVITE;
  139. TTVITE = tabl;
  140. TTVITE . 't/T' = tadim;
  141. * harmonique 0 :
  142. ihbm = 1;
  143. TTVITE . ihbm = prog namp*0;
  144. repe BHBM nhbm;
  145. * harmonique k :
  146. ktamp = &BHBM * tamp;
  147. ihbm = ihbm + 1;
  148. TTVITE . ihbm = -1.* &BHBM * (sin ktamp);
  149. ihbm = ihbm + 1;
  150. TTVITE . ihbm = &BHBM * (cos ktamp);
  151. fin BHBM;
  152. * on ainsi construit :
  153. * TTVITE . 1 = { ... 0 ...}
  154. * . 2*k = { ... -k sin kwt ...}
  155. * . 2*k+1 = { ... k cos kwt ...}
  156. * pour k = 1 ... nhbm
  157. * rem : on n'a pas multiplié par kw mais seulement par k
  158. * --> ce qui signifie qu'on sort 1/w dx/dt
  159. quote = (EXTR (CHAI '''') 1 1);
  160. finsi;
  161.  
  162. * preparation des resultats
  163. SI (NON (EXIS TRES1 'RESULTATS')); TRES1 . 'RESULTATS' = TABL; FINSI;
  164. evtot = VIDE 'EVOLUTIO';
  165.  
  166. ************************************************************************
  167. * *
  168. * BOUCLE SUR LES RESULTATS *
  169. * *
  170. ************************************************************************
  171.  
  172. ires1 = 0;
  173. nres1 = DIME TRES1;
  174. REPE BRES1 nres1; ires1 = ires1 + 1;
  175.  
  176. * Le resultat existe t'il ?
  177. SI (NON (EXIS TRES1 ires1)); ITER BRES1; FINSI;
  178. coul1 = TRES1 . ires1 . 'COULEUR';
  179. tit1 = TRES1 . ires1 . 'TITRE';
  180. SI FLTEMP; TRES1 . ires1 . 'RESULTATS_TEMPORELS' = TABL; FINSI;
  181.  
  182. * BOUCLE sur les frequences d'excitation *******************************
  183.  
  184. SI FLMAXI; umaxp = prog; FINSI;
  185. nfreq = dime wprog;
  186. ifreq = 0;
  187. REPE BFFREQ nfreq; ifreq = ifreq + 1;
  188.  
  189. * BOUCLE sur les indices de la table frequentielle *******************
  190.  
  191. SI (NON (EXIS TRES1 . ires1 'INDICES_HBM'));
  192. MESS 'INDICES_HBM absent pour le 'ires1'ème résultat demandé !';
  193. ERRE 21;
  194. FINSI;
  195. n_HBM = DIME TRES1 . ires1 . 'INDICES_HBM';
  196.  
  197. * harmonique 0 :
  198. ihbm = 1;
  199. jres2 = EXTR TRES1 . ires1 . 'INDICES_HBM' ihbm;
  200. uval1 = EXTR TRES2 . jres2 . 'RESULTATS' ifreq;
  201. * on cree la listreel
  202. uval1p= prog uval1 ;
  203. * harmonique k :
  204. repe BHBM nhbm;
  205. * cos kwt
  206. ihbm = ihbm + 1;
  207. jres2c = EXTR TRES1 . ires1 . 'INDICES_HBM' ihbm;
  208. uval1c = EXTR TRES2 . jres2c . 'RESULTATS' ifreq;
  209. * sin kwt
  210. ihbm = ihbm + 1;
  211. jres2s = EXTR TRES1 . ires1 . 'INDICES_HBM' ihbm;
  212. uval1s = EXTR TRES2 . jres2s . 'RESULTATS' ifreq;
  213. * on met dans la listreel
  214. uval1p = uval1p et uval1c et uval1s;
  215. fin BHBM;
  216.  
  217. * COmbinaison LIneaire de :
  218. * + TTPROG . 1 = { ... 1 ...}
  219. * . 2*k = { ... cos kwt ...}
  220. * . 2*k+1 = { ... sin kwt ...}
  221. * * uval1p = { U0 U^cos_k=1 U^sin_k=1 ... U^cos_k=nhbm U^sin_k=nhbm }
  222. uytp = COLI TTPROG uval1p;
  223.  
  224. * Sauvegarde des resultats temporels ?
  225. SI FLTEMP;
  226. SI (MULT ifreq ISAUV);
  227. TRES1 . ires1 . 'RESULTATS_TEMPORELS' . ifreq
  228. = EVOL coul1 'MANU' 't/T' tadim tit1 uytp;
  229. SI FLVITE;
  230. vytp = COLI TTVITE uval1p;
  231. tit2 = chai 'tit1'quote'/\w';
  232. TRES1 . ires1 . 'RESULTATS_TEMPORELS' . (-1 * ifreq)
  233. = EVOL coul1 'MANU' 't/T' tadim tit2 vytp;
  234. FINSI;
  235. FINSI;
  236. FINSI;
  237.  
  238. SI FLMAXI; umaxp = umaxp et (MAXI uytp 'ABS') ; FINSI;
  239.  
  240. FIN BFFREQ;
  241. *********************** fin de boucle sur les pas de frequences calcules
  242.  
  243. SI FLMAXI;
  244. TRES1 . 'RESULTATS' . ires1 = umaxp;
  245. evtot = evtot et
  246. (EVOL coul1 'MANU' '\w' wprog (chai 'max|'tit1'(t)|') umaxp);
  247. FINSI;
  248.  
  249.  
  250. FIN BRES1;
  251. ******************** fin de boucle sur les resultats temporels a traiter
  252.  
  253. SI FLMAXI; TRES1 . 'RESULTATS_EVOL' = evtot; FINSI;
  254.  
  255.  
  256. FINPROC ;
  257.  
  258.  
  259.  
  260.  

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