Télécharger respowns.procedur

Retour à la liste

Numérotation des lignes :

  1. * RESPOWNS PROCEDUR JC220346 12/09/12 21:15:08 7501
  2. *********************************************************************
  3. * DATE 15/05/90
  4. * Procedure RESPOWNS
  5. *
  6. * PSNS = RESPOWNS RSNS M FREQ (OPTION);
  7. *********************************************************************
  8. * objet :
  9. *
  10. * Calcul du spectre de puissance PSNS (objet de type EVOLUTION
  11. * comportant une unique courbe) d'un signal stationaire "virtuel"
  12. * de duree TE associe a un spectres de reponse RSNS (objet de type
  13. * EVOLUTION comportant une courbe) correspondant a un amortissement
  14. * AMOR, et a N courbes de modulation M (objet de type EVOLUTIO com-
  15. * portant N courbes) aux bandes de frequence indiquees dans FREQ
  16. * (objet de type LISTREEL). La bande de frequence de la i-eme fonction
  17. * M est donnee par le i-eme (frequence inferieure) et le i+1-eme
  18. * (frequence superieure) element de OM.
  19. *
  20. * Les fonctions de modulation doivent toute demarer au meme instant TI
  21. * et s'achever au meme instant TF. La duree du signal TE est evidemment
  22. * donnee par TF-TI. La frequence de coupure de PSNS est donee par la
  23. * valeur maximale de FREQ.
  24. *
  25. * Pour stabiliser le processus de convergence, les iteration
  26. * s'effectuent en utilant le filtre de Hanning (HANN).
  27. *********************************************************************
  28. * options :
  29. *
  30. * Les options sont contenues dans OPTION (objet de type TABLE).
  31. *
  32. * OPTION.'GPRP'= objet de type MOT representant la grandeur
  33. * physique de reponse : ACCE(leration), VITE(sse)
  34. * ou DEPL(acement relatif). Le defaut est ACCE.
  35. *
  36. * OPTION.'GPAB'= objet de type MOT representant la grandeur
  37. * physique en abscisse de la reponse: PERI(ode)
  38. * ou FREQ(uence). Le defaut est PERI.
  39. *
  40. * OPTION.'AMOR'= objet de type FLOTTANT specifiant l'amortissement
  41. * AMOR. Le defaut est 0.05.
  42. *
  43. * OPTION.'ONDE'= objet de type FLOTTANT indiquant le temps de base
  44. * a utiliser pour un calcul compatible ondelette.
  45. * La presence de ce parametre indique que l'option
  46. * 'ONDE' de l'operateur PRNS est choisi.
  47. *
  48. * OPTION.'FFPS'= objet de type LISTREEL donnant le reticule de
  49. * calcul en frequence du spectre de puissance. Le
  50. * defaut usuel est une progression geometrique entre
  51. * 1/TE et la frequence de coupure dont la raison
  52. * est (1+2*KSI), ou KSI=MIN AMOR.
  53. * WARNING: dans le cas ondelette FFPS est necessairement
  54. * determine a partir de FREQ
  55. *
  56. * OPTION.'TTRS'= objet de type LISTREEL donnant le reticule de
  57. * calcul en periode du spectre de reponse. Le
  58. * defaut est celui de l'operateur PSRS.
  59. * WARNING: dans le cas ondelette TTRS est necessairement
  60. * egal a FFPS
  61. *
  62. * OPTION.'DIST'= objet de type MOT representant le type de
  63. * distribution choisi pour evaluer le lieu des
  64. * maxima du spectre de reponse: NEG1 ou NEG2 pour la
  65. * distribution de Newmark/Gumble 1 avec substitution
  66. * ou dichotomie. Le defaut est NEG1.
  67. *
  68. * OPTION.'JMAX'= objet de type ENTIER representant le nombre
  69. * maximum d'iteration autorise. Le defaut est 15.
  70. *
  71. * OPTION.'JHAN'= objet de type ENTIER representant le nombre
  72. * d'iteration comportant le filtrage de Hanning.
  73. * le defaut est JMAX.
  74. * WARNING: dans le cas ondelette JHANN est necessairement
  75. * nul
  76. *
  77. * OPTION.'EMAX'= objet de type REEL representant la limite de
  78. * convergence de l'erreur. Le defaut est 1.E-2.
  79. *
  80. * OPTION.'NBPR'= objet de type ENTIER indiquant le nombre de processus
  81. * stationnaires associe au calcul de spectre de reponse.
  82. * Le defaut est celui de l'operateur PRNS.
  83. * WARNING: dans le cas ondelette NBPR est necessairement
  84. * determine a partir de M
  85. *
  86. * OPTION.'NBIN'= objet de type ENTIER indiquant le nombre de points
  87. * d'integration temporelle associe a chaque processus
  88. * stationnaire. Le defaut est celui de l'operateur PRNS.
  89. * WARNING: dans le cas ondelette NBIN est necessairement
  90. * determine a partir de M
  91. *
  92. * OPTION.'TPLU'= objet de type FLOTTANT indiquant la duree d'integration
  93. * additionelle relative au modulations non stationnaire. Le
  94. * defaut est 20 sec.
  95. *
  96. * OPTION.'LIST'= objet de type LOGIQUE indiquant la possibilite
  97. * d'affichage du processus de convergence. Le
  98. * defaut est FAUX.
  99. *
  100. * OPTION.'ONDE'= objet de type FLOTTANT indiquant la periode
  101. * d'echantillonage associee a la premiere fonction de
  102. * modulation. La presence de ce parametre indique un
  103. * calcul par ondelette: dans ce cas PSNS contient autant de
  104. * point que de bande de frequence et M la modelisation des
  105. * des coefficient en ondelette: la premiere courbe est le
  106. * residu, et les suivantes sont relatives a chaque niveau
  107. * de decomposition (des basses vers les hautes frequences).
  108. *
  109. *********************************************************************
  110. 'DEBPROC' RESPOWNS RSNS*'EVOLUTION' M*'EVOLUTION' FREQ*'LISTREEL'
  111. OPTION/'TABLE';
  112. *
  113. ******* INITIALISATION **********************************************
  114. *
  115. *
  116. *------ Reprise de la table d'entre et/ou introduction des defauts
  117. *
  118. 'SI' ('NON' ('EXISTE' OPTION));
  119. LOPTION=FAUX;
  120. 'SINON';
  121. LOPTION=VRAI;
  122. 'FINSI';
  123. *
  124. LOK=VRAI;
  125. *
  126. GPRP='ACCE';GPAB='PERI';
  127. AMOR=0.05;
  128. LONDELET=FAUX;TONDE='TEXT' ' ';
  129. LFFPS=FAUX;LTTRS=FAUX;
  130. DIST='NEG2';
  131. JMAX=15;JHAN=JMAX;EMAX=1.E-2;
  132. TNBIN='TEXT' ' ';TNBPR='TEXT' ' '; TTPLU='TEXT' ' ';
  133. LLIST=FAUX;
  134. 'SI' LOPTION;
  135. 'SI' ('EXISTE' OPTION 'GPRP'); GPRP='TEXT' OPTION.'GPRP'; 'FINSI';
  136. 'SI' ('EXISTE' OPTION 'GPAB'); GPAB=OPTION.'GPAB'; 'FINSI';
  137. 'SI' ('EXISTE' OPTION 'AMOR'); AMOR=OPTION.'AMOR'; 'FINSI';
  138. 'SI' ('EXISTE' OPTION 'ONDE'); TONDE='TEXT' 'ONDE' OPTION.'ONDE';
  139. LONDELET=VRAI ; 'FINSI';
  140. 'SI' ('NON' LONDELET);
  141. 'SI' ('EXISTE' OPTION 'FFPS');
  142. LFFPS=VRAI;
  143. FFPS=OPTION.'FFPS';
  144. DFFPS='DIMENSION' FFPS;
  145. 'FINSI';
  146. 'SI' ('EXISTE' OPTION 'TTRS');
  147. LTTRS=VRAI;
  148. TTRS=OPTION.'TTRS';
  149. 'FINSI';
  150. 'FINSI';
  151. 'SI' ('EXISTE' OPTION 'DIST'); DIST=OPTION.'DIST'; 'FINSI';
  152. 'SI' ('EXISTE' OPTION 'JMAX'); JMAX=OPTION.'JMAX';
  153. JHAN=JMAX; 'FINSI';
  154. 'SI' ('EXISTE' OPTION 'EMAX'); EMAX=OPTION.'EMAX'; 'FINSI';
  155. 'SI' ('EXISTE' OPTION 'JHAN'); JHAN=OPTION.'JHAN'; 'FINSI';
  156. 'SI' ('EXISTE' OPTION 'NBPR'); TNBPR='TEXT' 'NBPR' OPTION.'NBPR';
  157. 'FINSI';
  158. 'SI' ('EXISTE' OPTION 'NBIN'); TNBIN='TEXT' 'NBIN' OPTION.'NBIN';
  159. 'FINSI';
  160. 'SI' ('EXISTE' OPTION 'TPLU'); TTPLU='TEXT' 'TPLU' OPTION.'TPLU';
  161. 'FINSI';
  162. 'SI' ('EXISTE' OPTION 'LIST'); LLIST=OPTION.'LIST'; 'FINSI';
  163. 'FINSI';
  164. *
  165. RSOPTIO='TEXT' TNBIN TNBPR TTPLU TONDE;
  166. *
  167. *'MESSAGE' 'Fin de la reprise';
  168. *
  169. *------ Constante relative a la phase de Hanning
  170. NHANN=3;
  171. *
  172. *------ Calcul de TE et de la frequence de coupure FRCO
  173. *
  174. FRMIN='EXTRAIRE' FREQ 1;
  175. NBFREQ='DIMENSION' FREQ;
  176. FRCO='EXTRAIRE' FREQ NBFREQ;
  177. NBMODU= NBFREQ - 1;
  178. *
  179. TEMPS='EXTRAIRE' M 'ABSC' 1; NBTEMPS='DIMENSION' TEMPS;
  180. TE=('EXTRAIRE' TEMPS NBTEMPS) - ('EXTRAIRE' TEMPS 1);
  181. *
  182. *------ Grille PS et RS pour le calcul par ondelette
  183. *
  184. 'SI' (LONDELET);
  185. LFFPS=VRAI; LTTRS=VRAI; JHAN=0;
  186. DFFPS=NBMODU;
  187. J=0; FFPS= 'PROG' NBMODU*0;
  188. FFINB=FRMIN;
  189. 'REPETER' LAFFPS NBMODU;
  190. J=J+1; FINIB=FFINB;
  191. FFINB='EXTRAIRE' FREQ (J+1);
  192. 'REMPLACER' FFPS J ((FINIB+FFINB) / 2);
  193. 'FIN' LAFFPS;
  194. *
  195. 'REMPLACER' FFPS 1 FRMIN;
  196. 'MESSAGE' 'DECENTRAGE DE LA PREMIERE BANDE';
  197. *
  198. TTRSA='PROG' NBMODU*1;
  199. TTRS= 'ORDONNER' (TTRSA/FFPS) ;
  200. 'FINSI';
  201. *
  202. *------ Verification de la grille du RS (defaut ou donnee)
  203. *
  204. 'SI' (LTTRS);
  205. *------ On teste les bornes dans le cas non ondelette
  206. 'SI' ('NON' LONDELET);
  207. TTMIN='EXTRAIRE' TTRS 1;
  208. NBTTRS='DIMENSION' TTRS;TTMAX='EXTRAIRE' TTRS NBTTRS;
  209. 'SI' ( (1/TTMAX) '>EG' (FRMIN - 1.D-6) );
  210. LOK=FAUX;
  211. 'MESSAGE' 'LA PERIODE MAXI DE RSPS EST TROP PETITE (FREQ)';
  212. 'FINSI';
  213. 'SI' ( (1/TTMIN) '<EG' (FRCO + 1.D-6) );
  214. LOK=FAUX;
  215. 'MESSAGE' 'LA PERIODE MINI DE RSPS EST TROP GRANDE (FREQ)';
  216. 'FINSI';
  217. 'FINSI';
  218. 'SINON';
  219. * 'SI' ( (1/TE) '>EG' (FRMIN - 1.D-6) );
  220. 'SI' ( (1/TE) '>EG' (FRMIN + 1.D-6) );
  221. LOK=FAUX;
  222. 'MESSAGE' 'LA FREQUENCE MINI LIEE A TE EST TROP GRANDE (FREQ)';
  223. 'FINSI';
  224. * 'SI' ( 25.D0 '<EG' (FRCO + 1.D-6) );
  225. 'SI' ( 25.D0 '<EG' (FRCO - 1.D-6) );
  226. LOK=FAUX;
  227. 'MESSAGE' 'LA FREQUENCE MAXI (25Hz) EST TROP PETITE (FREQ)';
  228. 'FINSI';
  229. 'FINSI';
  230. 'SI' ('NON' LOK);
  231. 'MESSAGE' '----> PB AVEC IPOL';
  232. 'FINSI';
  233. *
  234. *------ Generation de la grille des frequence du PS
  235. *------ ou verification de la grille par defaut
  236. *
  237. 'SI' LOK;
  238. 'SI' ('NON' LFFPS);
  239. FXXX= FRMIN;
  240. FFPS= 'PROG' FXXX ;
  241. UNPXI=1. + (2. * );
  242. J=1;
  243. 'REPETER' LAB1;
  244. FXXX=FXXX * UNPXI;
  245. 'SI' ( FXXX '>EG' FRCO );
  246. 'QUITTER' LAB1;
  247. 'FINSI';
  248. J=J+1;
  249. FFPS='INSERER' FFPS J FXXX;
    <'li>
    'FIN' LAB1;
  250. DFFPS=J+1;
  251. FFPS = 'INSERER' FFPS DFFPS FRCO;
  252. *'MESSAGE' 'Fin de la generation de FFPS';
  253. 'FINSI';
  254. *------ On duplique FFPS (pour mieux detruire l'objet interpole)
  255. FFRS= 'COPIER' FFPS;
  256. *------ On teste les bornes dans le cas non ondelette
  257. 'SI' ('NON' LONDELET);
  258. FRMINB='EXTRAIRE' FFRS 1;
  259. 'SI' ( ('ABS' (FRMINB-FRMIN)) '>EG' 1.E-5);
  260. LOK=FAUX;
  261. 'MESSAGE' 'LA FREQUENCE MINI DE FFPS EST INCOHERENTE (FREQ)';
  262. 'FINSI';
  263. FRCOB='EXTRAIRE' FFRS DFFPS;
  264. 'SI' ( ('ABS' (FRCOB-FRCO)) '>EG' 1.E-5);
  265. LOK=FAUX;
  266. 'MESSAGE' 'LA FREQUENCE MAX DE FFPS EST INCOHERENTE (FREQ)';
  267. 'FINSI';
  268. 'FINSI';
  269. *------ On detruit FFRS et eventuellement FFPS en cas d'erreur
  270. 'FINSI';
  271. *
  272. *------ Creation de l'objet evolution contenant le RS
  273. *------ interpole sur la grille FFPS
  274. *------ Calcul des references d'erreur
  275. *
  276. 'SI' LOK;
  277. *------ Si le RS est donne en periode on interpole sur une grille
  278. *------ de periode
  279. 'SI' ( 'EGA' GPAB 'PERI' );
  280. FFPEA='PROG' DFFPS*1;
  281. FFPE= 'ORDONNER' (FFPEA/FFRS) ;
  282. GRITER=FFPE;
  283. 'SINON';
  284. GRITER=FFRS;
  285. 'FINSI';
  286. *'MESSAGE' 'Fin de generation/recuperation de GRITER';
  287. *------ Min/Max de GRITER
  288. XMIGR='EXTRAIRE' GRITER 1;
  289. XMAGR='EXTRAIRE' GRITER DFFPS;
  290. *------ Extraction des courbes
  291. ABSI= 'EXTRAIRE' RSNS 'ABSC' 1;
  292. ORDI= 'EXTRAIRE' RSNS 'ORDO' 1;
  293. *'MESSAGE' ' fin extraction';
  294. *------ Interpolation (on blinde pour que GRITER soit tjs dedans
  295. RSTER= 'IPOL' GRITER ABSI ORDI;
  296. *'MESSAGE' ' fin interpolation';
  297. *------ Si le RS est donne en periode on le restitue en frequence
  298. 'SI' ( 'EGA' GPAB 'PERI' );
  299. RSTERB=PROG;
  300. JF=0;JT=DFFPS+1;
  301. 'REPETER' LAB3 DFFPS;
  302. JT=JT-1; RS='EXTRAIRE' RSTER JT;
  303. JF=JF+1;RSTERB ='INSERER' RSTERB JF RS;
  304. 'FIN' LAB3;
  305. RSTER=RSTERB;
  306. *'MESSAGE' ' fin restitution en frequence';
  307. 'FINSI';
  308. *------ On calcul la reference d'erreur
  309. ERRN='MAXI' RSTER;
  310. *------ On genere la courbe RS interpole
  311. RSINTERF='EVOL' 'MANU' 'Freq' FFRS 'RSinter' RSTER;
  312. *'MESSAGE' ' fin concatenation dans RSINTERF';
  313. *
  314. *------ On initialise le PS
  315. *
  316. J=0;
  317. PS=PROG;
  318. 'REPETER' LAB5 DFFPS;
  319. J=J+1;
  320. PS='INSERER' PS J (1.);
  321. 'FIN' LAB5;
  322. PSNS='EVOL' 'MANU' 'Freq' FFPS 'Power Spect.' PS;
  323. *'MESSAGE' 'fin initialisation PS';
  324. *
  325. 'SI' LLIST;
  326. 'MESSAGE' 'procedure RESPOWNS';
  327. 'FINSI';
  328. *
  329. ******* CALCUL ******************************************************
  330. *
  331. LHANN=VRAI;
  332. ERRP=0.;
  333. JCALC=0;
  334. 'REPETER' CALCUL;
  335. JCALC=JCALC+1;
  336. *'MESSAGE' 'Boucle de calcul: Iteration ' JCALC;
  337. *
  338. *------ On calcul le RS (en frequence) associe au PS
  339. *
  340. 'SI' LTTRS;
  341. RSNSC= 'PRNS' PSNS M FREQ AMOR TTRS GPRP DIST 'FREQ'
  342. RSOPTIO;
  343. 'SINON';
  344. RSNSC= 'PRNS' PSNS M FREQ AMOR GPRP DIST 'FREQ'
  345. RSOPTIO;
  346. 'FINSI';
  347. *'MESSAGE' ' Fin du calcul du RS';
  348. *
  349. *------ On interpole le RS sur la grille du PS
  350. *
  351. *------ Extraction des abscisses/ordonnees
  352. ABSI= 'EXTRAIRE' RSNSC 'ABSC' 1;
  353. ORDI= 'EXTRAIRE' RSNSC 'ORDO' 1;
  354. *'MESSAGE' ' Fin extraction RS Calcule';
  355. *------ Interpolation
  356. RSCJ= 'IPOL' FFRS ABSI ORDI;
  357. *'MESSAGE' ' Fin interpolation';
  358. *------ Extraction du RS de consigne
  359. RSJ = 'EXTRAIRE' RSINTERF 'ORDO' 1;
  360. *'MESSAGE' ' Fin extraction RS Consigne';
  361. *------ Calcul du rapport du calcul a la consigne
  362. RAP = RSJ / RSCJ;
  363. *'MESSAGE' ' Fin calcul amplification RAPJ';
  364. *------ Determination de l'erreur absolue;
  365. ERRRA1 = RSJ - RSCJ;
  366. ERRRA2 = 'ABS' ERRRA1;
  367. ERRA = 'MAXI' ERRRA2;
  368. *'MESSAGE' ' Fin calcul amplification RAP';
  369. *------ calcul des coefficients
  370. COEF = RAP ** 2;
  371. *'MESSAGE' ' Fin calcul amplification reelle COEF';
  372. *------ calcul d'erreur
  373. ERR = ERRA / ERRN;
  374. *'MESSAGE' ' Fin calcul mesure scalaire d"erreur';
  375. 'SI' LLIST;
  376. 'MESSAGE' 'step' JCALC ' ---> mesure d"erreur=' ERR;
  377. 'FINSI';
  378. *------ nouveau PS;
  379. PSO = 'EXTRAIRE' PSNS 'ORDO' 1;
  380. PS = COEF * PSO;
  381. PSNS='EVOL' 'MANU' 'Freq' FFPS 'Power Spect.' PS;
  382. *'MESSAGE' ' Fin calcul nouveau PS';
  383. *------ fin du calcul???
  384. XCONV1=ERR;XCONV2=(ABS (ERRP - ERR))/ERR;
  385. 'SI' (XCONV1 '>' XCONV2);
  386. XCONV=XCONV2;
  387. 'SINON';
  388. XCONV=XCONV1;
  389. 'FINSI';
  390. 'SI' (XCONV '<' EMAX);
  391. 'QUITTER' CALCUL;
  392. 'FINSI';
  393. ERRP=ERR;
  394. *'MESSAGE' ' Fin test d"erreur';
  395. *------ fin du calcul en erreur ???
  396. 'SI' (JCALC '>EG' JMAX); 'QUITTER' CALCUL; 'FINSI';
  397. *------ filtrage
  398. 'SI' (JCALC '>EG' JHAN); LHANN=FAUX; 'FINSI';
  399. 'SI' LHANN;
  400. PSPB= 'HANN' PSNS NHANN;
  401. PSNS=PSPB;
  402. *'MESSAGE' ' Fin filtrage';
  403. 'FINSI';
  404. 'FIN' CALCUL;
  405. *'MESSAGE' ' Fin boucle de calcul';
  406. *
  407. ******* SORTIE ******************************************************
  408. *
  409. 'FINSI';
  410. 'FINPROC' PSNS;
  411.  
  412.  

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