1 : C TRMORS SOURCE GOUNAND 13/01/09 21:15:00 7661 2 : SUBROUTINE TRMORS(N,NLIS,ALIS,LIS,XLIS, 3 : $ ATRA,TRA,XTRA) 4 : IMPLICIT INTEGER(I-N) 5 : IMPLICIT REAL*8 (A-H,O-Z) 6 : C*********************************************************************** 7 : C NOM : TRMORS 8 : C PROJET : Noyau linéaire NLIN 9 : C DESCRIPTION : C => Ct en format Morse 10 : C 11 : C Construit la transposée d'une matrice Morse 12 : C "carrée" (i.e. il faut que : $ max_i LIS(i) \leq n $) 13 : C 14 : C LANGAGE : Fortran 77 (sauf E/S) 15 : C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) 16 : C mél : gounand@semt2.smts.cea.fr 17 : C*********************************************************************** 18 : C VERSION : v1, 13/12/99, version initiale 19 : C HISTORIQUE : v1, 13/12/99, création 20 : C HISTORIQUE : 21 : C HISTORIQUE : 22 : C*********************************************************************** 23 : -INC CCOPTIO 24 : * 25 : INTEGER N,NLIS 26 : INTEGER XLIS(N+1),LIS(NLIS),XTRA(N+1),TRA(NLIS) 27 : REAL*8 ALIS(NLIS),ATRA(NLIS) 28 : INTEGER IMPR,IRET 29 : * 30 : INTEGER I,ILIS,L,J,JSTRT,JSTOP,ICOL,JCOL 31 : * 32 : * Executable statements 33 : * 34 : * WRITE(IOIMP,*) 'Entrée dans trmors' 35 : * 36 : * Initialisation des sorties (supposée faite) 37 : * 38 : * DO 1 I=1,N 39 : * XTRA(I)=0 40 : * 1 CONTINUE 41 : * 42 : * On utilise XTRA(1...N) tel que XTRA(i) = le nombre d'occurence de i 43 : * dans LIS 44 : * 45 : DO 3 ILIS=1,NLIS 46 : ICOL=LIS(ILIS) 47 : XTRA(ICOL)=XTRA(ICOL)+1 48 : 3 CONTINUE 49 : * 50 : * D'où l'on déduit XTRA, liste de repérage sur TRA 51 : * 52 : L=1 53 : DO 5 I=1,N 54 : L=L+XTRA(I) 55 : XTRA(I)=L-XTRA(I) 56 : 5 CONTINUE 57 : XTRA(N+1)=L 58 : * 59 : * XTRA nous sert maintenant de liste de pointeurs courant 60 : * dans le tableau TRA que l'on remplit 61 : * 62 : DO 7 I=1,N 63 : JSTRT=XLIS(I) 64 : JSTOP=XLIS(I+1)-1 65 : DO 72 J=JSTRT,JSTOP 66 : JCOL=LIS(J) 67 : ATRA(XTRA(JCOL))=ALIS(J) 68 : TRA(XTRA(JCOL))=I 69 : XTRA(JCOL)=XTRA(JCOL)+1 70 : 72 CONTINUE 71 : 7 CONTINUE 72 : * 73 : * On reconstitue XTRA, liste de repérage sur TRA 74 : * 75 : DO 9 I=N,2,-1 76 : XTRA(I)=XTRA(I-1) 77 : 9 CONTINUE 78 : XTRA(1)=1 79 : RETURN 80 : * 81 : * End of subroutine TRMORS 82 : * 83 : END 84 : 85 : 86 : 87 : 88 : 89 :
© Cast3M 2003 - All rights reserved.
Disclaimer