maxim1
C MAXIM1 SOURCE CB215821 23/07/12 21:15:08 11704 ************************************************************************ * * M A X I M 1 * ----------- * * FONCTION: * --------- * * RECHERCHER LA PLUS GRANDE VALEUR D'UN 'CHPOINT'. * * MODE D'APPEL: * ------------- * * CALL MAXIM1 (IPCHPO,IPLMOT,MOTCLE,IPLACE,PGRAND) * * ARGUMENTS: (E)=ENTREE (S)=SORTIE * ---------- * * CE SOUS-PROGRAMME UTILISE EVENTUELLEMENT UN SEGMENT "MTEMP2" * CREE PAR LE PROGRAMME APPELANT. * * IPCHPO ENTIER (E) POINTEUR SUR UN 'CHPOINT'. * IPLMOT ENTIER (E) POINTEUR SUR UN 'LISTMOTS', OU BIEN * NOMBRE EGAL A "0", SI L'ON PREND EN * CONSIDERATION TOUTES LES COMPOSANTES. * MOTCLE CHARACTER (E) INDIQUE PAR SON CONTENU ('AVEC' OU 'SANS') * SI LES NOMS CONTENUS DANS L'OBJET * 'LISTMOTS' SONT LES NOMS DES COMPOSANTES * A CONSIDERER ('AVEC') OU, AU CONTRAIRE, * A EXCLURE ('SANS') LORS DE LA RECHERCHE * DU MAXIMUM. * CONTENU SANS IMPORTANCE SI IPLMOT = 0 . * IPLACE ENTIER (E) POINTEUR DU SEGMENT "MTEMP2" DONNANT LA * PLACE DU MAXIMUM DANS LE CHPOINT. * = 0 SI CETTE PLACE N'EST PAS DEMANDEE. * SINON, UN SEGMENT "MTEMP2" A ETE CREE DANS * LE PROGRAMME APPELANT POUR METTRE "MAXSOU", * "MAXN" ET "MAXNC". * PGRAND REEL DP (S) PLUS GRANDE VALEUR (EN VALEUR ABSOLUE) * EXTRAITE DU 'CHPOINT'. * CETTE VALEUR EST RETOURNEE AVEC SON SIGNE. * * DICTIONNAIRE DES VARIABLES: (ORDRE ALPHABETIQUE) * --------------------------- * * AGRAND REEL DP VALEUR ABSOLUE DE "PGRAND". * DEDANS LOGIQUE INDIQUE PAR .TRUE. OU .FALSE. SI UN TYPE DE * COMPOSANTE DONNE DU 'CHPOINT' FAIT PARTIE OU * NON DES TYPES NOMMES DANS L'OBJET DE POINTEUR * "IPLMOT". * MAXN ENTIER ) VALEURS RESPECTIVES DE "N", "NC" ET "MSOUPO" * MAXNC ENTIER )) AU NIVEAU DU MAXIMUM DU CHPOINT. VOIR * MAXSOU ENTIER ) L'OBJET 'CHPOINT' POUR LA DEFINITION DES * VARIABLES SUS-NOMMEES. * NBRMOT ENTIER NOMBRE DE TYPES NOMMES DANS L'OBJET DE POINTEUR * "IPLMOT". * TRUFAL LOGIQUE CONTIENT LA VALEUR QUI DOIT ETRE DANS "DEDANS" * POUR FAIRE LA RECHERCHE DU MAXIMUM. * * SOUS-PROGRAMMES APPELES: * ------------------------ * * PARMI * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 5 NOVEMBRE 1984 * * LANGAGE: * -------- * * ESOPE + FORTRAN77 + EXTENSION: CARACTERES MIS DANS DES ENTIERS * ************************************************************************ * IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMCHPOI -INC SMLMOTS -INC CCREEL * REAL*8 PGRAND,AGRAND CHARACTER*(*) MOTCLE * LOGICAL DEDANS,TRUFAL * SEGMENT/MTEMP2/ (MAXSOU,MAXN,MAXNC) * * * IF (IPLMOT .EQ. 0) THEN * TRUFAL = DEDANS * ELSE * IF (MOTCLE .EQ. 'AVEC') THEN TRUFAL = .TRUE. ELSE IF (MOTCLE .EQ. 'SANS') THEN TRUFAL = .FALSE. ELSE * MOT-CLE NON RECONNU: MOTERR=MOTCLE RETURN END IF * MLMOTS = IPLMOT SEGACT,MLMOTS * END IF * * RQ: A CE NIVEAU, "MOTCLE" EST DIFFERENT DE "MOCLE1" ET DE "MOCLE2" * SI ET SEULEMENT SI IPLMOT = 0 . * * MCHPOI = IPCHPO SEGACT,MCHPOI NSOUPO = IPCHP(/1) AGRAND = -1.D0 PGRAND = 0.D0 * * pour l'optimiseur mtemp2=mchpoi IF (IPLACE .NE. 0) THEN MTEMP2 = IPLACE SEGACT,MTEMP2*MOD MAXSOU = 1 MAXN = 1 MAXNC = 1 END IF * IF (IPLMOT .NE. 0) THEN MLMOTS = IPLMOT SEGACT,MLMOTS END IF * * -- RECHERCHE DU MAXIMUM -- * DO 100 IB100=1,NSOUPO * MSOUPO = IPCHP(IB100) SEGACT,MSOUPO NC = NOCOMP(/2) MPOVAL = IPOVAL SEGACT,MPOVAL N = VPOCHA(/1) * DO 120 IB120=1,NC * IF (IPLMOT .NE. 0) THEN END IF * * SI LA COMPOSANTE NOCOMP(IB120) FAIT PARTIE DES COMPOSANTES * RETENUES POUR LA RECHERCHE DU MAXIMUM, ALORS... ** IF (DEDANS .EQV. TRUFAL) THEN ** (LIGNE CI-DESSUS INCOMPRISE PAR ESOPE 4.1.1 (MARS 84) ) & THEN DO 130 IB130=1,N * PB CFT115 COMME DANS MAXIN1 MPOVA1=MPOVAL IF (ABS(MPOVA1.VPOCHA(IB130,IB120)) .GT. AGRAND* > (1.D0-XZPREC)) & THEN IF (IPLACE .NE. 0) THEN MAXSOU = IB100 MAXN = IB130 MAXNC = IB120 END IF PGRAND = VPOCHA(IB130,IB120) AGRAND = ABS(PGRAND) END IF 130 CONTINUE * END DO END IF * 120 CONTINUE * END DO * * 100 CONTINUE * END DO * IF (IPLMOT .NE. 0) THEN MLMOTS = IPLMOT END IF IF (IPLACE .NE. 0) THEN MTEMP2 = IPLACE SEGDES,MTEMP2 END IF * * -- A-T-ON OBTENU UN MAXIMUM ? -- * IF (AGRAND .LT. 0.) THEN * SOIT LE 'CHPOINT' EST VIDE, SOIT LE 'LISTMOTS' CONTIENT DES * NOMS DE TYPE TELS QUE, ETANT DONNE LA VALEUR DU MOT-CLE, * TOUTES LES COMPOSANTES DU 'CHPOINT' SONT EXCLUES. RETURN END IF * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales