Télécharger trmors.eso

Retour à la liste

Numérotation des lignes :

trmors
  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.  
  24. -INC PPARAM
  25. -INC CCOPTIO
  26. *
  27. INTEGER N,NLIS
  28. INTEGER XLIS(N+1),LIS(NLIS),XTRA(N+1),TRA(NLIS)
  29. REAL*8 ALIS(NLIS),ATRA(NLIS)
  30. INTEGER IMPR,IRET
  31. *
  32. INTEGER I,ILIS,L,J,JSTRT,JSTOP,ICOL,JCOL
  33. *
  34. * Executable statements
  35. *
  36. * WRITE(IOIMP,*) 'Entrée dans trmors'
  37. *
  38. * Initialisation des sorties (supposée faite)
  39. *
  40. * DO 1 I=1,N
  41. * XTRA(I)=0
  42. * 1 CONTINUE
  43. *
  44. * On utilise XTRA(1...N) tel que XTRA(i) = le nombre d'occurence de i
  45. * dans LIS
  46. *
  47. DO 3 ILIS=1,NLIS
  48. ICOL=LIS(ILIS)
  49. XTRA(ICOL)=XTRA(ICOL)+1
  50. 3 CONTINUE
  51. *
  52. * D'où l'on déduit XTRA, liste de repérage sur TRA
  53. *
  54. L=1
  55. DO 5 I=1,N
  56. L=L+XTRA(I)
  57. XTRA(I)=L-XTRA(I)
  58. 5 CONTINUE
  59. XTRA(N+1)=L
  60. *
  61. * XTRA nous sert maintenant de liste de pointeurs courant
  62. * dans le tableau TRA que l'on remplit
  63. *
  64. DO 7 I=1,N
  65. JSTRT=XLIS(I)
  66. JSTOP=XLIS(I+1)-1
  67. DO 72 J=JSTRT,JSTOP
  68. JCOL=LIS(J)
  69. ATRA(XTRA(JCOL))=ALIS(J)
  70. TRA(XTRA(JCOL))=I
  71. XTRA(JCOL)=XTRA(JCOL)+1
  72. 72 CONTINUE
  73. 7 CONTINUE
  74. *
  75. * On reconstitue XTRA, liste de repérage sur TRA
  76. *
  77. DO 9 I=N,2,-1
  78. XTRA(I)=XTRA(I-1)
  79. 9 CONTINUE
  80. XTRA(1)=1
  81. RETURN
  82. *
  83. * End of subroutine TRMORS
  84. *
  85. END
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales