* RESPOWNS PROCEDUR JC220346 12/09/12 21:15:08 7501 ********************************************************************* * DATE 15/05/90 * Procedure RESPOWNS * * PSNS = RESPOWNS RSNS M FREQ (OPTION); ********************************************************************* * objet : * * Calcul du spectre de puissance PSNS (objet de type EVOLUTION * comportant une unique courbe) d'un signal stationaire "virtuel" * de duree TE associe a un spectres de reponse RSNS (objet de type * EVOLUTION comportant une courbe) correspondant a un amortissement * AMOR, et a N courbes de modulation M (objet de type EVOLUTIO com- * portant N courbes) aux bandes de frequence indiquees dans FREQ * (objet de type LISTREEL). La bande de frequence de la i-eme fonction * M est donnee par le i-eme (frequence inferieure) et le i+1-eme * (frequence superieure) element de OM. * * Les fonctions de modulation doivent toute demarer au meme instant TI * et s'achever au meme instant TF. La duree du signal TE est evidemment * donnee par TF-TI. La frequence de coupure de PSNS est donee par la * valeur maximale de FREQ. * * Pour stabiliser le processus de convergence, les iteration * s'effectuent en utilant le filtre de Hanning (HANN). ********************************************************************* * options : * * Les options sont contenues dans OPTION (objet de type TABLE). * * OPTION.'GPRP'= objet de type MOT representant la grandeur * physique de reponse : ACCE(leration), VITE(sse) * ou DEPL(acement relatif). Le defaut est ACCE. * * OPTION.'GPAB'= objet de type MOT representant la grandeur * physique en abscisse de la reponse: PERI(ode) * ou FREQ(uence). Le defaut est PERI. * * OPTION.'AMOR'= objet de type FLOTTANT specifiant l'amortissement * AMOR. Le defaut est 0.05. * * OPTION.'ONDE'= objet de type FLOTTANT indiquant le temps de base * a utiliser pour un calcul compatible ondelette. * La presence de ce parametre indique que l'option * 'ONDE' de l'operateur PRNS est choisi. * * OPTION.'FFPS'= objet de type LISTREEL donnant le reticule de * calcul en frequence du spectre de puissance. Le * defaut usuel est une progression geometrique entre * 1/TE et la frequence de coupure dont la raison * est (1+2*KSI), ou KSI=MIN AMOR. * WARNING: dans le cas ondelette FFPS est necessairement * determine a partir de FREQ * * OPTION.'TTRS'= objet de type LISTREEL donnant le reticule de * calcul en periode du spectre de reponse. Le * defaut est celui de l'operateur PSRS. * WARNING: dans le cas ondelette TTRS est necessairement * egal a FFPS * * OPTION.'DIST'= objet de type MOT representant le type de * distribution choisi pour evaluer le lieu des * maxima du spectre de reponse: NEG1 ou NEG2 pour la * distribution de Newmark/Gumble 1 avec substitution * ou dichotomie. Le defaut est NEG1. * * OPTION.'JMAX'= objet de type ENTIER representant le nombre * maximum d'iteration autorise. Le defaut est 15. * * OPTION.'JHAN'= objet de type ENTIER representant le nombre * d'iteration comportant le filtrage de Hanning. * le defaut est JMAX. * WARNING: dans le cas ondelette JHANN est necessairement * nul * * OPTION.'EMAX'= objet de type REEL representant la limite de * convergence de l'erreur. Le defaut est 1.E-2. * * OPTION.'NBPR'= objet de type ENTIER indiquant le nombre de processus * stationnaires associe au calcul de spectre de reponse. * Le defaut est celui de l'operateur PRNS. * WARNING: dans le cas ondelette NBPR est necessairement * determine a partir de M * * OPTION.'NBIN'= objet de type ENTIER indiquant le nombre de points * d'integration temporelle associe a chaque processus * stationnaire. Le defaut est celui de l'operateur PRNS. * WARNING: dans le cas ondelette NBIN est necessairement * determine a partir de M * * OPTION.'TPLU'= objet de type FLOTTANT indiquant la duree d'integration * additionelle relative au modulations non stationnaire. Le * defaut est 20 sec. * * OPTION.'LIST'= objet de type LOGIQUE indiquant la possibilite * d'affichage du processus de convergence. Le * defaut est FAUX. * * OPTION.'ONDE'= objet de type FLOTTANT indiquant la periode * d'echantillonage associee a la premiere fonction de * modulation. La presence de ce parametre indique un * calcul par ondelette: dans ce cas PSNS contient autant de * point que de bande de frequence et M la modelisation des * des coefficient en ondelette: la premiere courbe est le * residu, et les suivantes sont relatives a chaque niveau * de decomposition (des basses vers les hautes frequences). * ********************************************************************* OPTION/'TABLE'; * ******* INITIALISATION ********************************************** * * *------ Reprise de la table d'entre et/ou introduction des defauts * 'SI' ('NON' ('EXISTE' OPTION)); LOPTION=FAUX; 'SINON'; LOPTION=VRAI; 'FINSI'; * LOK=VRAI; * GPRP='ACCE';GPAB='PERI'; LFFPS=FAUX;LTTRS=FAUX; DIST='NEG2'; JMAX=15;JHAN=JMAX;EMAX=1.E-2; LLIST=FAUX; 'SI' LOPTION; 'SI' ('EXISTE' OPTION 'GPAB'); GPAB=OPTION.'GPAB'; 'FINSI'; LONDELET=VRAI ; 'FINSI'; 'SI' ('NON' LONDELET); 'SI' ('EXISTE' OPTION 'FFPS'); LFFPS=VRAI; FFPS=OPTION.'FFPS'; DFFPS='DIMENSION' FFPS; 'FINSI'; 'SI' ('EXISTE' OPTION 'TTRS'); LTTRS=VRAI; TTRS=OPTION.'TTRS'; 'FINSI'; 'FINSI'; 'SI' ('EXISTE' OPTION 'DIST'); DIST=OPTION.'DIST'; 'FINSI'; 'SI' ('EXISTE' OPTION 'JMAX'); JMAX=OPTION.'JMAX'; JHAN=JMAX; 'FINSI'; 'SI' ('EXISTE' OPTION 'EMAX'); EMAX=OPTION.'EMAX'; 'FINSI'; 'SI' ('EXISTE' OPTION 'JHAN'); JHAN=OPTION.'JHAN'; 'FINSI'; 'FINSI'; 'FINSI'; 'FINSI'; 'FINSI'; * * *'MESSAGE' 'Fin de la reprise'; * *------ Constante relative a la phase de Hanning NHANN=3; * *------ Calcul de TE et de la frequence de coupure FRCO * FRMIN='EXTRAIRE' FREQ 1; NBFREQ='DIMENSION' FREQ; FRCO='EXTRAIRE' FREQ NBFREQ; NBMODU= NBFREQ - 1; * TEMPS='EXTRAIRE' M 'ABSC' 1; NBTEMPS='DIMENSION' TEMPS; TE=('EXTRAIRE' TEMPS NBTEMPS) - ('EXTRAIRE' TEMPS 1); * *------ Grille PS et RS pour le calcul par ondelette * 'SI' (LONDELET); LFFPS=VRAI; LTTRS=VRAI; JHAN=0; DFFPS=NBMODU; FFINB=FRMIN; 'REPETER' LAFFPS NBMODU; J=J+1; FINIB=FFINB; FFINB='EXTRAIRE' FREQ (J+1); 'REMPLACER' FFPS J ((FINIB+FFINB) / 2); 'FIN' LAFFPS; * 'REMPLACER' FFPS 1 FRMIN; 'MESSAGE' 'DECENTRAGE DE LA PREMIERE BANDE'; * TTRS= 'ORDONNER' (TTRSA/FFPS) ; 'FINSI'; * *------ Verification de la grille du RS (defaut ou donnee) * 'SI' (LTTRS); *------ On teste les bornes dans le cas non ondelette 'SI' ('NON' LONDELET); TTMIN='EXTRAIRE' TTRS 1; NBTTRS='DIMENSION' TTRS;TTMAX='EXTRAIRE' TTRS NBTTRS; 'SI' ( (1/TTMAX) '>EG' (FRMIN - 1.D-6) ); LOK=FAUX; 'FINSI'; 'SI' ( (1/TTMIN) '<EG' (FRCO + 1.D-6) ); LOK=FAUX; 'FINSI'; 'FINSI'; 'SINON'; * 'SI' ( (1/TE) '>EG' (FRMIN - 1.D-6) ); 'SI' ( (1/TE) '>EG' (FRMIN + 1.D-6) ); LOK=FAUX; 'FINSI'; * 'SI' ( 25.D0 '<EG' (FRCO + 1.D-6) ); 'SI' ( 25.D0 '<EG' (FRCO - 1.D-6) ); LOK=FAUX; 'FINSI'; 'FINSI'; 'SI' ('NON' LOK); 'FINSI'; * *------ Generation de la grille des frequence du PS *------ ou verification de la grille par defaut * 'SI' LOK; 'SI' ('NON' LFFPS); FXXX= FRMIN; J=1; 'REPETER' LAB1; FXXX=FXXX * UNPXI; 'SI' ( FXXX '>EG' FRCO ); 'QUITTER' LAB1; 'FINSI'; J=J+1; FFPS='INSERER' FFPS J FXXX; 'FIN' LAB1; DFFPS=J+1; FFPS = 'INSERER' FFPS DFFPS FRCO; *'MESSAGE' 'Fin de la generation de FFPS'; 'FINSI'; *------ On duplique FFPS (pour mieux detruire l'objet interpole) FFRS= 'COPIER' FFPS; *------ On teste les bornes dans le cas non ondelette 'SI' ('NON' LONDELET); FRMINB='EXTRAIRE' FFRS 1; 'SI' ( ('ABS' (FRMINB-FRMIN)) '>EG' 1.E-5); LOK=FAUX; 'FINSI'; FRCOB='EXTRAIRE' FFRS DFFPS; 'SI' ( ('ABS' (FRCOB-FRCO)) '>EG' 1.E-5); LOK=FAUX; 'MESSAGE' 'LA FREQUENCE MAX DE FFPS EST INCOHERENTE (FREQ)'; 'FINSI'; 'FINSI'; *------ On detruit FFRS et eventuellement FFPS en cas d'erreur 'FINSI'; * *------ Creation de l'objet evolution contenant le RS *------ interpole sur la grille FFPS *------ Calcul des references d'erreur * 'SI' LOK; *------ Si le RS est donne en periode on interpole sur une grille *------ de periode 'SI' ( 'EGA' GPAB 'PERI' ); FFPE= 'ORDONNER' (FFPEA/FFRS) ; GRITER=FFPE; 'SINON'; GRITER=FFRS; 'FINSI'; *'MESSAGE' 'Fin de generation/recuperation de GRITER'; *------ Min/Max de GRITER XMIGR='EXTRAIRE' GRITER 1; XMAGR='EXTRAIRE' GRITER DFFPS; *------ Extraction des courbes ABSI= 'EXTRAIRE' RSNS 'ABSC' 1; *'MESSAGE' ' fin extraction'; *------ Interpolation (on blinde pour que GRITER soit tjs dedans *'MESSAGE' ' fin interpolation'; *------ Si le RS est donne en periode on le restitue en frequence 'SI' ( 'EGA' GPAB 'PERI' ); JF=0;JT=DFFPS+1; 'REPETER' LAB3 DFFPS; JT=JT-1; RS='EXTRAIRE' RSTER JT; JF=JF+1;RSTERB ='INSERER' RSTERB JF RS; 'FIN' LAB3; RSTER=RSTERB; *'MESSAGE' ' fin restitution en frequence'; 'FINSI'; *------ On calcul la reference d'erreur *------ On genere la courbe RS interpole *'MESSAGE' ' fin concatenation dans RSINTERF'; * *------ On initialise le PS * J=0; 'REPETER' LAB5 DFFPS; J=J+1; PS='INSERER' PS J (1.); 'FIN' LAB5; *'MESSAGE' 'fin initialisation PS'; * 'SI' LLIST; 'MESSAGE' 'procedure RESPOWNS'; 'FINSI'; * ******* CALCUL ****************************************************** * LHANN=VRAI; ERRP=0.; JCALC=0; 'REPETER' CALCUL; JCALC=JCALC+1; *'MESSAGE' 'Boucle de calcul: Iteration ' JCALC; * *------ On calcul le RS (en frequence) associe au PS * 'SI' LTTRS; RSOPTIO; 'SINON'; RSOPTIO; 'FINSI'; *'MESSAGE' ' Fin du calcul du RS'; * *------ On interpole le RS sur la grille du PS * *------ Extraction des abscisses/ordonnees ABSI= 'EXTRAIRE' RSNSC 'ABSC' 1; *'MESSAGE' ' Fin extraction RS Calcule'; *------ Interpolation *'MESSAGE' ' Fin interpolation'; *------ Extraction du RS de consigne *'MESSAGE' ' Fin extraction RS Consigne'; *------ Calcul du rapport du calcul a la consigne RAP = RSJ / RSCJ; *'MESSAGE' ' Fin calcul amplification RAPJ'; *------ Determination de l'erreur absolue; ERRRA1 = RSJ - RSCJ; ERRRA2 = 'ABS' ERRRA1; *'MESSAGE' ' Fin calcul amplification RAP'; *------ calcul des coefficients COEF = RAP ** 2; *'MESSAGE' ' Fin calcul amplification reelle COEF'; *------ calcul d'erreur ERR = ERRA / ERRN; *'MESSAGE' ' Fin calcul mesure scalaire d"erreur'; 'SI' LLIST; 'MESSAGE' 'step' JCALC ' ---> mesure d"erreur=' ERR; 'FINSI'; *------ nouveau PS; PS = COEF * PSO; *'MESSAGE' ' Fin calcul nouveau PS'; *------ fin du calcul??? XCONV1=ERR;XCONV2=(ABS (ERRP - ERR))/ERR; 'SI' (XCONV1 '>' XCONV2); XCONV=XCONV2; 'SINON'; XCONV=XCONV1; 'FINSI'; 'SI' (XCONV '<' EMAX); 'QUITTER' CALCUL; 'FINSI'; ERRP=ERR; *'MESSAGE' ' Fin test d"erreur'; *------ fin du calcul en erreur ??? 'SI' (JCALC '>EG' JMAX); 'QUITTER' CALCUL; 'FINSI'; *------ filtrage 'SI' (JCALC '>EG' JHAN); LHANN=FAUX; 'FINSI'; 'SI' LHANN; PSNS=PSPB; *'MESSAGE' ' Fin filtrage'; 'FINSI'; 'FIN' CALCUL; *'MESSAGE' ' Fin boucle de calcul'; * ******* SORTIE ****************************************************** * 'FINSI'; 'FINPROC' PSNS;
© Cast3M 2003 - Tous droits réservés.
Mentions légales