trmors
C TRMORS SOURCE GOUNAND 13/01/09 21:15:00 7661 $ ATRA,TRA,XTRA) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : TRMORS C PROJET : Noyau linéaire NLIN C DESCRIPTION : C => Ct en format Morse C C Construit la transposée d'une matrice Morse 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 VERSION : v1, 13/12/99, version initiale C HISTORIQUE : v1, 13/12/99, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** -INC PPARAM -INC CCOPTIO * INTEGER N,NLIS INTEGER XLIS(N+1),LIS(NLIS),XTRA(N+1),TRA(NLIS) REAL*8 ALIS(NLIS),ATRA(NLIS) INTEGER IMPR,IRET * INTEGER I,ILIS,L,J,JSTRT,JSTOP,ICOL,JCOL * * Executable statements * * WRITE(IOIMP,*) 'Entrée dans trmors' * * 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) ATRA(XTRA(JCOL))=ALIS(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 RETURN * * End of subroutine TRMORS * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales