trpmor
C TRPMOR SOURCE CHAT 05/01/13 03:52:18 5004 $ TRA,XTRA, $ IMPR,IRET) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : TRPMOR C PROJET : Noyau linéaire NLIN C DESCRIPTION : Profil Morse de C => profil Morse de Ct C C Construit la transposée d'un profil Morse d'une matrice C "carrée" (i.e. il faut que : $ max_i LIS(i) \leq n $) C C LANGAGE : Fortran 77 (sauf E/S) C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELE PAR : MAKPMT C*********************************************************************** C ENTREES : N, NLIS, LIS, XLIS C SORTIES : TRA, XTRA C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 13/12/99, version initiale C HISTORIQUE : v1, 13/12/99, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO * INTEGER N,NLIS INTEGER XLIS(N+1),LIS(NLIS),XTRA(N+1),TRA(NLIS) INTEGER IMPR,IRET * INTEGER I,ILIS,L,J,JSTRT,JSTOP,ICOL,JCOL * * Executable statements * IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans trpmor' * * Initialisation des sorties (supposée faite) * * DO 1 I=1,N * XTRA(I)=0 * 1 CONTINUE * * On utilise XTRA(1...N) tel que XTRA(i) = le nombre d'occurence de i * dans LIS * DO 3 ILIS=1,NLIS ICOL=LIS(ILIS) XTRA(ICOL)=XTRA(ICOL)+1 3 CONTINUE * * D'où l'on déduit XTRA, liste de repérage sur TRA * L=1 DO 5 I=1,N L=L+XTRA(I) XTRA(I)=L-XTRA(I) 5 CONTINUE XTRA(N+1)=L * * XTRA nous sert maintenant de liste de pointeurs courant * dans le tableau TRA que l'on remplit * DO 7 I=1,N JSTRT=XLIS(I) JSTOP=XLIS(I+1)-1 DO 72 J=JSTRT,JSTOP JCOL=LIS(J) TRA(XTRA(JCOL))=I XTRA(JCOL)=XTRA(JCOL)+1 72 CONTINUE 7 CONTINUE * * On reconstitue XTRA, liste de repérage sur TRA * DO 9 I=N,2,-1 XTRA(I)=XTRA(I-1) 9 CONTINUE XTRA(1)=1 * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine trpmor' RETURN * * End of subroutine TRPMOR * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales