C SESPA5 SOURCE CHAT 05/01/13 03:14:45 5004 C SESPA5 SOURCE WP 23/08/94 C SUBROUTINE SESPA5 ( IPLVA1, IPLVA2, IPLCH1, IPLCH2, C 1 IPMASS, BOOL, NBMOD ) ************************************************************************ * * SESPA5 * ----------- * * FONCTION: * --------- * * ON TEST LA CONVERGENCE DES ELEMENTS PROPRES: * - TEST SUR LA VALEUR PROPRE. * - TEST SUR LA MASSE GENERALISEE. * * MODE D'APPEL: * ------------- * * CALL SESPA5 ( IPLVA1,IPLVA2,IPLCH1,IPLCH2,IPMASS,BOOL,NBMOD ) * * AUTEUR, DATE DE CREATION: * ------------------------- * * A.M. JOLIVALT, W. PASILLAS 29 / 07 / 94. ( ESOPE ) * ************************************************************ SUBROUTINE SESPA5 ( IPLVA1, IPLVA2, IPLCH1, IPLCH2, 1 IPMASS, BOOL, NBMOD ) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCOPTIO -INC SMLREEL -INC SMLCHPO ****** * -- CONSTANTES -- *** PARAMETER ( PRECI1 = 1.0D-6 ) PARAMETER ( PRECI2 = 1.0D-6 ) ****** * -- ARGUMENTS -- *** POINTEUR IPLVA1.MLREEL, IPLVA2.MLREEL POINTEUR IPLCH1.MLCHPO, IPLCH2.MLCHPO INTEGER NBMOD, IPMASS LOGICAL BOOL ****** * -- VARIABLES LOCALES -- *** INTEGER IB100 REAL*8 ALPHA1, ALPHA2, RESIDU ****** * -- ON TRIE LES LISTES ( VOIR ORDVEC ) -- *** CALL ORDVEC ( IPLVA1, IPLCH1 ) IF ( IERR .NE. 0 ) RETURN CALL ORDVEC ( IPLVA2, IPLCH2 ) IF ( IERR .NE. 0 ) RETURN SEGACT ,IPLVA1, IPLVA2, IPLCH1, IPLCH2 BOOL = .TRUE. DO 100 IB100 = 1, NBMOD ****** * -- CONVERGENCE DE LA VALEUR PROPRE -- *** ALPHA1 = IPLVA1.PROG( IB100 ) ALPHA2 = IPLVA2.PROG( IB100 ) RESIDU = ABS( ALPHA2 - ALPHA1 ) IF ( RESIDU .GT. PRECI1 * ABS(ALPHA2) ) THEN BOOL = .FALSE. GOTO 110 ELSE ****** * -- CONVERGENCE DE LA MASSE GENERALISEE -- *** IPCHP1 = IPLCH1.ICHPOI( IB100 ) IPCHP2 = IPLCH2.ICHPOI( IB100 ) CALL XTMX ( IPCHP1, IPMASS, ALPHA1 ) IF ( IERR .NE. 0 ) RETURN CALL XTMX ( IPCHP2, IPMASS, ALPHA2 ) IF ( IERR .NE. 0 ) RETURN RESIDU = ABS( 1.0D0 - ABS( ALPHA1 / ALPHA2 ) ) IF ( RESIDU .GT. PRECI2 ) THEN BOOL = .FALSE. GOTO 110 ENDIF ENDIF 100 CONTINUE 110 CONTINUE SEGDES ,IPLVA1, IPLVA2, IPLCH1, IPLCH2 RETURN END