maxevo
C MAXEVO SOURCE BP208322 16/11/18 21:19:08 9177 ************************************************************************ * * M A X E V O * ----------- * * FONCTION: * --------- * * ANALOGUE AU "MAX" FORTRAN, APPLIQUE AUX OBJETS "EVOLUTIO": * * CREER LA COURBE "ENVELOPPE" D'UN ENSEMBLE DE COURBES PAR * PRELEVEMENT, POUR CHAQUE ABSCISSE, DU MAXIMUM DES ORDONNEES DES * DIFFERENTES COURBES. * * MODULES UTILISES: * ----------------- * IMPLICIT INTEGER(I-N) -INC CCGEOME -INC SMEVOLL * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * ICOURB (E) OBJET "EVOLUTIO" COMPLEXE CONTENANT LA LISTE DES * COURBES DONT VEUT L'ENVELOPPE. * MAXEVO (S) OBJET "EVOLUTIO" SIMPLE CONTENANT L'ENVELOPPE. * * VARIABLES: * ---------- * POINTEUR MMAXI.MEVOLL,KMAXI.KEVOLL * * MODE DE FONCTIONNEMENT: * ----------------------- * * LA LISTE DES ABSCISSES DE L'ENVELOPPE EST LA REUNION DES ABSCISSES * DE DEFINITION DE CHAQUE COURBE. * * ON UTILISE L'INTERPOLATION ET L'EXTRAPOLATION LINEAIRES POUR * DETERMINER L'ENVELOPPE D'UN ENSEMBLE DE COURBES NON DEFINIES AUX * MEMES POINTS. * * ON SUPPOSE QUE CHAQUE COURBE EST DEFINIE PAR UNE SUITE DE COUPLES * FOURNIS PAR ABSCISSES STRICTEMENT CROISSANTES. * * REMARQUES: * ---------- * * ON TIENT COMPTE DU FAIT QUE LE SOUS-PROGRAMME D'INTERPOLATION * "INTE33" SAIT AUSSI EXTRAPOLER LINEAIREMENT. * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 9 SEPTEMBRE 1988 * * LANGAGE: * -------- * * ESOPE + FORTRAN77 * ************************************************************************ * MEVOLL = ICOURB SEGACT,MEVOLL NCOURB = IEVOLL(/1) * IF (NCOURB .LE. 0) THEN SEGDES,MEVOLL RETURN END IF * N = 1 SEGINI,MMAXI MAXEVO = MMAXI MMAXI.ITYEVO = ITYEVO MMAXI.IEVTEX = IEVTEX KEVOLL = IEVOLL(1) SEGINI,KMAXI=KEVOLL MMAXI.IEVOLL(1) = KMAXI KMAXI.NUMEVX = IDCOUL * IF (NCOURB .EQ. 1) THEN SEGDES,MMAXI,KMAXI SEGDES,MEVOLL RETURN END IF * KMAXI.KEVTEX = 'ENVELOPPE' * * * 1) CREATION DE LA LISTE DES ABSCISSES DE LA COURBE ENVELOPPE * SEGACT,KEVOLL IXX9 = IPROGX * DO 100 IB=2,NCOURB KEVOLL = IEVOLL(IB) SEGACT,KEVOLL IXX1 = IXX9 IXX2 = IPROGX IF (IB .GT. 2) THEN END IF 100 CONTINUE * END DO * KMAXI.IPROGX = IXX9 * ON NE DESACTIVE PAS LES "KEVOLL": ILS SERVENT CI-DESSOUS. * * * 2) CREATION DE LA LISTE DES ORDONNEES DE L'ENVELOPPE * DO 200 IB=1,NCOURB KEVOLL = IEVOLL(IB) * * DEFINITION DE LA COURBE "IB" AVEC LA PRECISION DE L'ENVELOPPE: IPR0GX = IPROGX IPR0GY = IPROGY * IF (IB .GT. 1) THEN * ENVELOPPE DES COURBES 1 A "IB": IYY9 = IYY2 ELSE IYY9 = IYY1 END IF * SEGDES,KEVOLL 200 CONTINUE * END DO * KMAXI.IPROGY = IYY9 * SEGDES,MEVOLL SEGDES,KMAXI,MMAXI * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales