C ORDVEC SOURCE CHAT 05/01/13 02:06:17 5004 C ORDVEC SOURCE WP 23/08/94 C SUBROUTINE ORDVEC ( IPLVAL, IPLVEC ) ************************************************************************ * * GRAAMO * ----------- * * FONCTION: * --------- * * -- TRI D'UNE LISTE DE VECTEURS PROPRES. LES VECEURS PROPRES DONT * LES VALEURS PROPRES ASSOCIEES SONT LES PLUS PETITES EN MODULE * SONT PLACES EN PREMIER DANS LA LISTE -- * * MODE D'APPEL: * ------------- * * CALL ORDVEC ( IPLVAL, IPLVEC ) * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * IPLVAL ENTIER (E) POINTEUR DE L'OBJET 'LISTREEL' CONTENANT * LA SUITE DE 'FLOTTANTS' A TRIER * (S) POINTEUR DE L'OBJET 'LISTREEL' CONTENANT * LA SUITE DE 'FLOTTANTS' TRIES * * IPLVEC ENTIER (E) POINTEUR DE L'OBJET 'LISTCHPO' CONTENANT * LA SUITE DE 'CHPOINT' ASSOCIE A IPLVAL. * (S) MEME CHOSE, MAIS TRIEE. * * * MODE DE FONCTIONNEMENT: * ----------------------- * * TRI A BULLES. ( LA LISTE EST PETITE ! ) * * AUTEUR, DATE DE CREATION: * ------------------------- * * A.M. JOLIVALT, W. PASILLAS 06 / 07 / 94. ( ESOPE ) * *************************************************** ****** * SUBROUTINES: * SWAP ( ECHANGE DES TERMES DANS LES LISTES ) * ORDVEC ( TRI A BULLES ) ****** ****** * -- ON EFFECTUE UN TRI A BULLES -- ****** SUBROUTINE ORDVEC ( IPLVAL, IPLVEC ) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCOPTIO -INC SMLCHPO -INC SMLREEL POINTEUR IPLVAL.MLREEL, IPLVEC.MLCHPO REAL*8 XVAL1, XVAL2 INTEGER ILDIM, IB100 LOGICAL BSWAP SEGACT ,IPLVAL ILDIM = IPLVAL.PROG(/1) SEGDES, IPLVAL 10 CONTINUE BSWAP = .FALSE. DO 100 IB100 = 1, ILDIM - 1 SEGACT ,IPLVAL XVAL1 = IPLVAL.PROG( IB100 ) XVAL2 = IPLVAL.PROG( IB100 + 1 ) SEGDES, IPLVAL IF ( ABS(XVAL1) .GT. ABS(XVAL2) ) THEN CALL SWAP( IB100, IPLVAL, IPLVEC ) IF ( IERR .NE. 0 ) RETURN BSWAP = .TRUE. ENDIF 100 CONTINUE IF ( BSWAP ) GOTO 10 SEGDES, IPLVAL RETURN END