1 : C VALPRO SOURCE CHAT 05/01/13 04:01:08 5004 2 : SUBROUTINE VALPRO 3 : ************************************************************************ 4 : * 5 : * V A L P R O 6 : * ----------- 7 : * 8 : * SOUS-PROGRAMME ASSOCIE A L'OPERATEUR "VALPROPRE" 9 : * 10 : * FONCTION: 11 : * --------- 12 : * 13 : * CALCULER LES VALEURS PROPRES D'UNE MATRICE TRIDIAGONALE DE LA 14 : * FORME: 15 : * 16 : * | A1 1 0 0 0 0 | 17 : * | B1 A2 1 0 0 0 | 18 : * | 0 B2 A3 1 0 0 | 19 : * | 0 0 B3 A4 1 0 | 20 : * | 0 0 0 B4 A5 1 | 21 : * | 0 0 0 0 B5 A6 | 22 : * 23 : * PHRASE D'APPEL (EN GIBIANE): 24 : * ---------------------------- 25 : * 26 : * |ABSOLU | 27 : * VV = VALPROPRE AA BB (ITERATIO II) (| | EE) ; 28 : * |RELATIF| 29 : * 30 : * LES PARENTHESES INDIQUANT DES OPERANDES FACULTATIFS. 31 : * 32 : * OPERANDES ET RESULTATS: 33 : * ----------------------- 34 : * 35 : * AA 'LISTREEL' TERMES DE LA DIAGONALE DE LA MATRICE. 36 : * BB 'LISTREEL' TERMES DE LA SOUS-DIAGONALE DE LA MATRICE. 37 : * ITERATIO 'MOT ' MOT-CLE INDIQUANT QUE L'ON FOURNIT LE 38 : * NOMBRE MAXIMUM D'ITERATIONS A FAIRE DANS LES 39 : * CALCULS. 40 : * II 'ENTIER ' NOMBRE MAXIMUM D'ITERATIONS PERMIS DANS LES 41 : * CALCULS. 42 : * ABSOLU 'MOT ' MOT-CLE INDIQUANT QUE L'ON FOURNIT LA 43 : * PRECISION ABSOLUE DE CONVERGENCE. 44 : * RELATIF 'MOT ' MOT-CLE INDIQUANT QUE L'ON FOURNIT LA 45 : * PRECISION RELATIVE DE CONVERGENCE. 46 : * EE 'FLOTTANT' PRECISION DE CONVERGENCE. 47 : * VV 'LISTREEL' LISTE DES VALEURS PROPRES, DANS L'ORDRE DE 48 : * CALCUL. 49 : * 50 : * LES MOTS-CLES "ABSOLU" ET "RELATIF" S'EXCLUENT MUTUELLEMENT. 51 : * 52 : * LEXIQUE: (ORDRE ALPHABETIQUE) 53 : * -------- 54 : * 55 : * IPDIAG ENTIER POINTEUR SUR L'OBJET "AA". 56 : * IPSOUS ENTIER POINTEUR SUR L'OBJET "BB". 57 : * IPVALP ENTIER POINTEUR SUR L'OBJET "VV". 58 : * LUPARM LOGIQUE TABLEAU DONT L'ELEMENT N."I" INDIQUE PAR "VRAI" 59 : * OU "FAUX" SI LE PARAMETRE DE CALCUL NUMEROTE "I" 60 : * A DEJA ETE DONNE. 61 : * NBITER ENTIER NOMBRE MAXIMUM D'ITERATIONS PERMISES. 62 : * NUMPAR ENTIER NUMERO COURANT DE PARAMETRE DE CALCUL. 63 : * PRECI1 REEL DP PRECISION ABSOLUE DE CONVERGENCE, OU BIEN "0". 64 : * PRECI2 REEL DP PRECISION RELATIVE DE CONVERGENCE, OU BIEN "0". 65 : * 66 : * AUTEUR, DATE DE CREATION: 67 : * ------------------------- 68 : * 69 : * PASCAL MANIGOT 27 FEVRIER 1985 70 : * 71 : * LANGAGE: 72 : * -------- 73 : * 74 : * FORTRAN77 + EXTENSION: CARACTERES MIS DANS DES ENTIERS 75 : * 76 : ************************************************************************ 77 : * 78 : IMPLICIT INTEGER(I-N) 79 : -INC CCOPTIO 80 : * 81 : REAL*8 PRECI1,PRECI2,XMINIM 82 : * 83 : PARAMETER (NBMOTS = 3) 84 : PARAMETER (NBPARM = 2) 85 : * 86 : LOGICAL LUPARM(NBPARM) 87 : * 88 : CHARACTER*4 LISMOT(NBMOTS) 89 : * 90 : DATA LISMOT/'ITER','ABSO','RELA'/ 91 : * 92 : * -- LECTURE DES PARAMETRES DE CALCUL -- 93 : * 94 : DO 100 IB100=1,NBPARM 95 : LUPARM(IB100) = .FALSE. 96 : 100 CONTINUE 97 : * END DO 98 : * 99 : DO 200 IB200=1,NBPARM 100 : * 101 : ICODE = 0 102 : NBMOT = NBMOTS 102 : CALL LIRMOT (LISMOT,NBMOT,NUMLIS,ICODE) 103 : IF (NUMLIS.EQ.0) GO TO 200 104 : * 105 : IF (NUMLIS .GT. 2) THEN 106 : NUMPAR = NUMLIS - 1 107 : ELSE 108 : NUMPAR = NUMLIS 109 : END IF 110 : * 111 : IF (LUPARM(NUMPAR)) THEN 112 : NUMERR = 202 112 : CALL ERREUR (NUMERR) 113 : RETURN 114 : END IF 115 : LUPARM(NUMPAR) = .TRUE. 116 : * 117 : IF (NUMLIS .EQ. 1) THEN 118 : ICODE = 1 119 : MINIME = 1 120 : * LECTURE D'UN 'ENTIER' POSITIF: 120 : CALL LIRE03 (MINIME,NBITER,ICODE,IRETOU) 121 : IF (IERR .NE. 0) RETURN 122 : ELSE IF (NUMLIS .EQ. 2) THEN 123 : ICODE = 1 124 : XMINIM = 0.D0 125 : * LECTURE D'UN 'FLOTTANT' POSITIF: 125 : CALL LIRE04 (XMINIM,PRECI1,0,ICODE,IRETOU) 126 : IF (IERR .NE. 0) RETURN 127 : PRECI2 = 0.D0 128 : ELSE IF (NUMLIS .EQ. 3) THEN 129 : ICODE = 1 130 : XMINIM = 0.D0 131 : * LECTURE D'UN 'FLOTTANT' POSITIF: 131 : CALL LIRE04 (XMINIM,PRECI2,0,ICODE,IRETOU) 132 : IF (IERR .NE. 0) RETURN 133 : PRECI1 = 0.D0 134 : END IF 135 : * 136 : 200 CONTINUE 137 : * END DO 138 : * 139 : * RQ: ON NE TESTE PAS SI TOUS LES PARAMETRES NECESSAIRES ONT ETE 140 : * LUS. "VALPR1" DOIT CONTENIR DES TESTS ET DES VALEURS DE 141 : * REMPLACEMENT. 142 : * 143 : * -- LECTURE DE LA MATRICE TRIDIAGONALE NON SYMETRIQUE -- 144 : * 145 : * LECTURE DES TERMES DIAGONAUX: 146 : ICODE = 1 146 : CALL LIROBJ ('LISTREEL',IPDIAG,ICODE,IRETOU) 147 : IF (IERR .NE. 0) RETURN 148 : * 149 : * LECTURE DES TERMES SOUS-DIAGONAUX: 150 : ICODE = 1 150 : CALL LIROBJ ('LISTREEL',IPSOUS,ICODE,IRETOU) 151 : IF (IERR .NE. 0) RETURN 152 : * 153 : * -- CALCUL DES VALEURS PROPRES -- 154 : * 154 : CALL VALPR1 (IPDIAG,IPSOUS,NBITER,PRECI1,PRECI2, IPVALP) 155 : IF (IERR .NE. 0) RETURN 156 : * 156 : CALL ECROBJ ('LISTREEL',IPVALP) 157 : * 158 : END 159 :
© Cast3M 2003 - All rights reserved.
Disclaimer