sespc4
C SESPC4 SOURCE CB215821 20/11/25 13:39:45 10792 C SESPA4 SOURCE CHAT 05/01/13 03:14:42 5004 C SESPA4 SOURCE WP 94/12/07 C SUBROUTINE SESPA4 ( IPLVEC, IPMPHI ) ************************************************************************ * * SESPC4 inspiré de SESPA4 * ----------- * * FONCTION: * --------- * * CALCUL D'UNE APPROXIMATION DES VECTEURS PROPRES, A PARTIR * DE LEUR PROJECTION IPMPHI SUR LE SOUS-ESPACE IPLVEC. * * MODE D'APPEL: * * CALL SESPA4 ( IPLVEC, IPMPHI ) * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * IPLVEC ENTIER (E) POINTEUR DE L'OBJET 'LISTCHPO' CONTENANT * (S) LA SUITE DE 'CHPOINT' X(i) * * IPMPHI ENTIER (E) POINTEUR SUR L'OBJET 'MATRIX' PHI * * * AUTEUR, DATE DE CREATION: * ------------------------- * * A.M. JOLIVALT, W. PASILLAS 29 / 07 / 94. ( ESOPE ) * ************************************************************ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMLCHPO * SEGMENT ,MATRIX * REAL*8 A(N,N) * ENDSEGMENT -INC SMRIGID -INC SMLREEL ****** * -- ARGUMENTS -- *** POINTEUR IPLVEC.MLCHPO * POINTEUR IPMPHI.MATRIX POINTEUR IPMPHI.XMATRI cbp POINTEUR ILAMBI.XMATRI POINTEUR ILAMBI.MLREEL ****** * -- VARIABLES LOCALES -- *** POINTEUR IPLVE1.MLCHPO INTEGER ILDIM, IPCHP1, IPCHPO, IPCHP2 CHARACTER*(LOCOMP) MOTCLE LOGICAL MODC ****** * -- CHAQUE VECTEUR DE IPLVE1 EST UNE COMBINAISON * LINEAIRE DES VECTEURS DE IPLVEC, PONDEREE PAR * LES COEFFICIENTS DE IPMPHI -- *** MODC = .false. N1 = 0 SEGINI ,IPLVE1 SEGACT ,IPLVEC ,IPMPHI c SEGACT ,ILAMBI ILDIM = IPLVEC.ICHPOI(/1) ***** on construit le IB100^ieme mode ******************************** DO 100 IB100 = 1, ILDIM IPCHP1 = IPLVEC.ICHPOI( 1 ) IF ( IERR .NE. 0 ) RETURN IPLVE1.ICHPOI(**) = IPCHPO *------ on somme les contributions des vecteurs ib200=1,ildim DO 200 IB200 = 2, ILDIM IPCHP1 = IPLVE1.ICHPOI( IB100 ) IPCHP2 = IPLVEC.ICHPOI( IB200 ) IF ( IERR .NE. 0 ) RETURN IPLVE1.ICHPOI( IB100 ) = IPCHPO IF ( IERR .NE. 0 ) RETURN 200 CONTINUE *------- Normalisation * on a deja construit les parties Reelles et Imaginaires du vecteur if(MODC) goto 90 c XVALPI = ILAMBI.RE(1, IB100,1) if(XVALPI .eq. 0.D0) then * il s agit d un mode Réel' MODC = .false. IPLVE1.ICHPOI( IB100 ) = IPCHP1 * il s'agit d'un mode Complexe => on stocke le vecteur Reel, * on calule le vecteur imaginaire, puis on normalise ce vecteur Complexe * enfin on les ecrit, avant de passer au(x) suivant(s) else * il s agit d un mode Complexe' MODC = .true. ICHP1R = IPCHPO endif goto 100 90 CONTINUE IPLVE1.ICHPOI( IB100 - 1 ) = ICHP2R IPLVE1.ICHPOI( IB100 ) = ICHP2I MODC = .false. 100 CONTINUE ***** fin de boucle sur les modes ************************************ ****** * -- ON DETRUIT IPLVEC -- *** DO 300 IB300 = 1, ILDIM IPCHPO = IPLVEC.ICHPOI( IB300 ) IF ( IERR .NE. 0 ) RETURN 300 CONTINUE IF ( IERR .NE. 0 ) RETURN ****** * -- ON RETOURNE IPLVEC -- *** IPLVEC = IPLVE1 SEGDES ,IPLVEC, IPMPHI SEGSUP ,IPMPHI RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales