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. * AMOR);
  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;
  250. 'FIN' LAB1;
  251. DFFPS=J+1;
  252. FFPS = 'INSERER' FFPS DFFPS FRCO;
  253. *'MESSAGE' 'Fin de la generation de FFPS';
  254. 'FINSI';
  255. *------ On duplique FFPS (pour mieux detruire l'objet interpole)
  256. FFRS= 'COPIER' FFPS;
  257. *------ On teste les bornes dans le cas non ondelette
  258. 'SI' ('NON' LONDELET);
  259. FRMINB='EXTRAIRE' FFRS 1;
  260. 'SI' ( ('ABS' (FRMINB-FRMIN)) '>EG' 1.E-5);
  261. LOK=FAUX;
  262. 'MESSAGE' 'LA FREQUENCE MINI DE FFPS EST INCOHERENTE (FREQ)';
  263. 'FINSI';
  264. FRCOB='EXTRAIRE' FFRS DFFPS;
  265. 'SI' ( ('ABS' (FRCOB-FRCO)) '>EG' 1.E-5);
  266. LOK=FAUX;
  267. 'MESSAGE' 'LA FREQUENCE MAX DE FFPS EST INCOHERENTE (FREQ)';
  268. 'FINSI';
  269. 'FINSI';
  270. *------ On detruit FFRS et eventuellement FFPS en cas d'erreur
  271. 'FINSI';
  272. *
  273. *------ Creation de l'objet evolution contenant le RS
  274. *------ interpole sur la grille FFPS
  275. *------ Calcul des references d'erreur
  276. *
  277. 'SI' LOK;
  278. *------ Si le RS est donne en periode on interpole sur une grille
  279. *------ de periode
  280. 'SI' ( 'EGA' GPAB 'PERI' );
  281. FFPEA='PROG' DFFPS*1;
  282. FFPE= 'ORDONNER' (FFPEA/FFRS) ;
  283. GRITER=FFPE;
  284. 'SINON';
  285. GRITER=FFRS;
  286. 'FINSI';
  287. *'MESSAGE' 'Fin de generation/recuperation de GRITER';
  288. *------ Min/Max de GRITER
  289. XMIGR='EXTRAIRE' GRITER 1;
  290. XMAGR='EXTRAIRE' GRITER DFFPS;
  291. *------ Extraction des courbes
  292. ABSI= 'EXTRAIRE' RSNS 'ABSC' 1;
  293. ORDI= 'EXTRAIRE' RSNS 'ORDO' 1;
  294. *'MESSAGE' ' fin extraction';
  295. *------ Interpolation (on blinde pour que GRITER soit tjs dedans
  296. RSTER= 'IPOL' GRITER ABSI ORDI;
  297. *'MESSAGE' ' fin interpolation';
  298. *------ Si le RS est donne en periode on le restitue en frequence
  299. 'SI' ( 'EGA' GPAB 'PERI' );
  300. RSTERB=PROG;
  301. JF=0;JT=DFFPS+1;
  302. 'REPETER' LAB3 DFFPS;
  303. JT=JT-1; RS='EXTRAIRE' RSTER JT;
  304. JF=JF+1;RSTERB ='INSERER' RSTERB JF RS;
  305. 'FIN' LAB3;
  306. RSTER=RSTERB;
  307. *'MESSAGE' ' fin restitution en frequence';
  308. 'FINSI';
  309. *------ On calcul la reference d'erreur
  310. ERRN='MAXI' RSTER;
  311. *------ On genere la courbe RS interpole
  312. RSINTERF='EVOL' 'MANU' 'Freq' FFRS 'RSinter' RSTER;
  313. *'MESSAGE' ' fin concatenation dans RSINTERF';
  314. *
  315. *------ On initialise le PS
  316. *
  317. J=0;
  318. PS=PROG;
  319. 'REPETER' LAB5 DFFPS;
  320. J=J+1;
  321. PS='INSERER' PS J (1.);
  322. 'FIN' LAB5;
  323. PSNS='EVOL' 'MANU' 'Freq' FFPS 'Power Spect.' PS;
  324. *'MESSAGE' 'fin initialisation PS';
  325. *
  326. 'SI' LLIST;
  327. 'MESSAGE' 'procedure RESPOWNS';
  328. 'FINSI';
  329. *
  330. ******* CALCUL ******************************************************
  331. *
  332. LHANN=VRAI;
  333. ERRP=0.;
  334. JCALC=0;
  335. 'REPETER' CALCUL;
  336. JCALC=JCALC+1;
  337. *'MESSAGE' 'Boucle de calcul: Iteration ' JCALC;
  338. *
  339. *------ On calcul le RS (en frequence) associe au PS
  340. *
  341. 'SI' LTTRS;
  342. RSNSC= 'PRNS' PSNS M FREQ AMOR TTRS GPRP DIST 'FREQ'
  343. RSOPTIO;
  344. 'SINON';
  345. RSNSC= 'PRNS' PSNS M FREQ AMOR GPRP DIST 'FREQ'
  346. RSOPTIO;
  347. 'FINSI';
  348. *'MESSAGE' ' Fin du calcul du RS';
  349. *
  350. *------ On interpole le RS sur la grille du PS
  351. *
  352. *------ Extraction des abscisses/ordonnees
  353. ABSI= 'EXTRAIRE' RSNSC 'ABSC' 1;
  354. ORDI= 'EXTRAIRE' RSNSC 'ORDO' 1;
  355. *'MESSAGE' ' Fin extraction RS Calcule';
  356. *------ Interpolation
  357. RSCJ= 'IPOL' FFRS ABSI ORDI;
  358. *'MESSAGE' ' Fin interpolation';
  359. *------ Extraction du RS de consigne
  360. RSJ = 'EXTRAIRE' RSINTERF 'ORDO' 1;
  361. *'MESSAGE' ' Fin extraction RS Consigne';
  362. *------ Calcul du rapport du calcul a la consigne
  363. RAP = RSJ / RSCJ;
  364. *'MESSAGE' ' Fin calcul amplification RAPJ';
  365. *------ Determination de l'erreur absolue;
  366. ERRRA1 = RSJ - RSCJ;
  367. ERRRA2 = 'ABS' ERRRA1;
  368. ERRA = 'MAXI' ERRRA2;
  369. *'MESSAGE' ' Fin calcul amplification RAP';
  370. *------ calcul des coefficients
  371. COEF = RAP ** 2;
  372. *'MESSAGE' ' Fin calcul amplification reelle COEF';
  373. *------ calcul d'erreur
  374. ERR = ERRA / ERRN;
  375. *'MESSAGE' ' Fin calcul mesure scalaire d"erreur';
  376. 'SI' LLIST;
  377. 'MESSAGE' 'step' JCALC ' ---> mesure d"erreur=' ERR;
  378. 'FINSI';
  379. *------ nouveau PS;
  380. PSO = 'EXTRAIRE' PSNS 'ORDO' 1;
  381. PS = COEF * PSO;
  382. PSNS='EVOL' 'MANU' 'Freq' FFPS 'Power Spect.' PS;
  383. *'MESSAGE' ' Fin calcul nouveau PS';
  384. *------ fin du calcul???
  385. XCONV1=ERR;XCONV2=(ABS (ERRP - ERR))/ERR;
  386. 'SI' (XCONV1 '>' XCONV2);
  387. XCONV=XCONV2;
  388. 'SINON';
  389. XCONV=XCONV1;
  390. 'FINSI';
  391. 'SI' (XCONV '<' EMAX);
  392. 'QUITTER' CALCUL;
  393. 'FINSI';
  394. ERRP=ERR;
  395. *'MESSAGE' ' Fin test d"erreur';
  396. *------ fin du calcul en erreur ???
  397. 'SI' (JCALC '>EG' JMAX); 'QUITTER' CALCUL; 'FINSI';
  398. *------ filtrage
  399. 'SI' (JCALC '>EG' JHAN); LHANN=FAUX; 'FINSI';
  400. 'SI' LHANN;
  401. PSPB= 'HANN' PSNS NHANN;
  402. PSNS=PSPB;
  403. *'MESSAGE' ' Fin filtrage';
  404. 'FINSI';
  405. 'FIN' CALCUL;
  406. *'MESSAGE' ' Fin boucle de calcul';
  407. *
  408. ******* SORTIE ******************************************************
  409. *
  410. 'FINSI';
  411. 'FINPROC' PSNS;
  412.  
  413.  

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