Download trmors.eso

Back to the list

   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