envspe
C ENVSPE SOURCE CB215821 16/04/15 21:15:20 8907 SUBROUTINE ENVSPE ************************************************************************ * * E N V S P E * ----------- * * SOUS-PROGRAMME ASSOCIE A L'OPERATEUR "ENVELOPPE" * * FONCTION: * --------- * * CREER LE SPECTRE ENVELOPPE D'UNE SERIE DE SPECTRES D'OSCILLATEURS. * * CET OPERATEUR EST TRES ATTACHE A LA NOTION DE SPECTRE CAR IL * UTILISE L'INTERPOLATION LINEAIRE OU LOGARITHMIQUE DE FACON BIEN * SPECIFIQUE. * * PHRASE D'APPEL (EN GIBIANE): * ---------------------------- * * ENVLOP = 'ENVELOPPE' LIST_SPO ; * * OPERANDES ET RESULTATS: * ----------------------- * * LIST_SPO (TABLE) CONTIENT LES DIFFERENTS SPECTRES * -------- D'OSCILLATEUR (PAS FORCEMENT DEFINIS AUX * MEMES FREQUENCES, NI POUR LES MEMES * AMORTISSEMENTS): * LIST_SPO I 'SPECTRE = OBJET "EVOLUTIO" REPRESENTANT LE * I-EME "SPO". * LIST_SPO I 'AMORTISSEMENT' = OBJET "LISTREEL" DONNANT LES * AMORTISSEMENTS POUR CHAQUE COURBE * DE L'OBJET "EVOLUTIO" NUMERO "I". * * ENVLOP (TABLE) CONTIENT LE SPECTRE ENVELOPPE: * ------ * LIST_SPO 'SPECTRE' = OBJET "EVOLUTIO" REPRESENTANT LE * SPECTRE. * LIST_SPO 'AMORTISSEMENT' = OBJET "LISTREEL" DONNANT LES * AMORTISSEMENTS POUR CHAQUE COURBE * DE L'OBJET "EVOLUTIO". * * MODULES UTILISES: * ----------------- * IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMTABLE * * VARIABLES: * ---------- * * IPEVOL = SPECTRES D'OSCILLATEUR (OBJETS "EVOLUTIO"). * EN DERNIERE POSITION, ENVELOPPE. * IPAMOR = VALEURS DES AMORTISSEMENTS DE CHAQUE SPECTRE (OBJETS * "LISTREEL"). * REAL*8 X,XVALRE CHARACTER*1 C CHARACTER*8 TYPOBJ,CHARRE LOGICAL L,LOGIN,LOGRE SEGMENT,MSPECT INTEGER IPEVOL(NBSPEC+1),IPAMOR(NBSPEC+1) ENDSEGMENT * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 13 SEPTEMBRE 1988 * * LANGAGE: * -------- * * ESOPE + FORTRAN77 + EXTENSION: DECLARATION "REAL*8". * ************************************************************************ * I=0 X=0.D0 L=.FALSE. IF (IERR .NE. 0) RETURN * * NOMBRE DE SPECTRES D'OSCILLATEURS FOURNI: IF (NBSPEC .LE. 0) THEN RETURN END IF * * LA TABLE EST SUPPOSEE ETRE INDICEE PAR DES ENTIERS, A PARTIR DE 1. * ... CE QUE L'ON VA VERIFIER TOUT DE SUITE, EN MEME TEMPS QUE L'ON * RANGE LES SPECTRES SOUS UNE FORME INFORMATIQUEMENT PLUS PRATIQUE. * SEGINI,MSPECT * DO 100 IB=1,NBSPEC TYPOBJ = 'TABLE ' C IVALRE,XVALRE,CHARRE,LOGRE,ICOUR) IF (TYPOBJ.NE.'TABLE ') THEN MOTERR(1:8)=TYPOBJ(1:8) ENDIF IF (IERR .NE. 0) RETURN TYPOBJ = 'EVOLUTIO' C IVALRE,XVALRE,CHARRE,LOGRE,IPTR) IF (TYPOBJ.NE.'EVOLUTIO') THEN MOTERR(1:8)=TYPOBJ(1:8) ENDIF IF (IERR .NE. 0) RETURN IPEVOL(IB) = IPTR TYPOBJ = 'LISTREEL' C TYPOBJ,IVALRE,XVALRE,CHARRE,LOGRE,IPTR) IF (TYPOBJ.NE.'LISTREEL') THEN MOTERR(1:8)=TYPOBJ(1:8) ENDIF IF (IERR .NE. 0) RETURN IPAMOR(IB) = IPTR 100 CONTINUE * END DO * * CREATION DU SPECTRE ENVELOPPE: IF (IERR .NE. 0) RETURN * SEGACT,MSPECT IPEV0L = IPEVOL(NBSPEC+1) & 'EVOLUTIO',I,X,C,L,IPEV0L) IPAM0R = IPAMOR(NBSPEC+1) & 'LISTREEL',I,X,C,L,IPAM0R) * SEGSUP,MSPECT SEGDES,MTABLE * * ECRITURE DU SPECTRE ENVELOPPE: * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales