Download clmors.eso

Back to the list

   1 : C CLMORS    SOURCE    MAGN      09/07/30    21:16:28     6458           
   2 :       SUBROUTINE CLMORS(KMORS,KISA,IMPR,IRET)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : C***********************************************************************
   6 : C NOM         : CLMORS
   7 : C DESCRIPTION :
   8 : C     Nettoyage d'un objet de type Matrice Morse :
   9 : C     on supprime les ZERO stockées.
  10 : C     ATTENTION, on ne nettoie pas les valeurs "proches" de zero,
  11 : C     on nettoie celle qui y ont été mises explicitement
  12 : C     (i.e. qui ne sont pas le résultat d'un calcul)
  13 : C
  14 : C
  15 : C LANGAGE     : ESOPE
  16 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF)
  17 : C               mél : gounand@semt2.smts.cea.fr
  18 : C***********************************************************************
  19 : C APPELES (E/S) : ECMORS
  20 : C***********************************************************************
  21 : C ENTREES            : IMPR
  22 : C ENTREES/SORTIES    : KMORS, KISA
  23 : C SORTIES            : -
  24 : C CODE RETOUR (IRET) : -
  25 : C     PMORS  : pointeurs sur segment PMORS de l'include SMMATRIK
  26 : C              profil de la matrice Morse à traiter
  27 : C     IZA    : pointeurs sur segment IZA de l'include SMMATRIK
  28 : C              valeurs de la matrice Morse.
  29 : C***********************************************************************
  30 : C VERSION    : v1, 01/04/98, version initiale
  31 : C HISTORIQUE : v1, 01/04/98, création
  32 : C HISTORIQUE :     15/06/98, modif : non-suppression des zéros
  33 : C                                    sur la diagonale.
  34 : C HISTORIQUE :
  35 : C
  36 : C***********************************************************************
  37 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  38 : C en cas de modification de ce sous-programme afin de faciliter
  39 : C la maintenance !
  40 : C***********************************************************************
  41 : *     
  42 : * Nettoyage d'un objet de type Matrice Morse
  43 : * i.e. on supprimme les ZERO stockées
  44 : * ATTENTION, on ne nettoie pas les valeurs "proches" de zero,
  45 : * on nettoie celle qui y ont été mises explicitement
  46 : * (i.e. qui ne sont pas le résultat d'un calcul)
  47 : *     
  48 : -INC CCOPTIO
  49 :       INTEGER IMPR,IRET
  50 : -INC SMMATRIK
  51 :       INTEGER NBVA
  52 :       INTEGER NJA,NTT
  53 :       POINTEUR KMORS.PMORS
  54 :       POINTEUR KISA.IZA
  55 : *     
  56 : *
  57 : *     .. Variables locales
  58 : *     .. Parameters ..
  59 :       REAL*8             ZERO
  60 :       PARAMETER        ( ZERO = 0.0D+0 )
  61 : *     ..
  62 :       INTEGER ICOL,INTT
  63 :       INTEGER NBZER
  64 :       INTEGER NBZER2
  65 :       IF (IMPR.GT.5) THEN
  66 :          WRITE(IOIMP,*) 'clmors : nettoyage de la matrice morse',
  67 :      $        ' de pointeurs',KMORS,KISA
  68 :          IF (IMPR.GT.7) THEN
  69 :             WRITE(IOIMP,*) 'Avant :'
  69 :             CALL ECMORS(KMORS,KISA,(IMPR-1))
  70 :          ENDIF
  71 :       ENDIF
  72 :       SEGACT KMORS*MOD
  73 :       SEGACT KISA*MOD
  74 :       NTT=KMORS.IA(/1)-1
  75 :       NJA=KMORS.JA(/1)
  76 :       NBZER=0
  77 :       DO 1 INTT=1,NTT
  78 :          NBZER2=NBZER
  79 :          DO 11 ICOL=KMORS.IA(INTT),(KMORS.IA(INTT+1)-1)
  80 :             IF (KISA.A(ICOL).EQ.ZERO.AND.KMORS.JA(ICOL).NE.INTT) THEN
  81 :                NBZER=NBZER+1
  82 :             ELSE
  83 :                KMORS.JA(ICOL-NBZER)=KMORS.JA(ICOL)
  84 :                KISA.A(ICOL-NBZER)= KISA.A(ICOL)
  85 :             ENDIF
  86 :  11      CONTINUE
  87 :          KMORS.IA(INTT)=KMORS.IA(INTT)-NBZER2
  88 :  1    CONTINUE
  89 :       KMORS.IA(NTT+1)=KMORS.IA(NTT+1)-NBZER
  90 :       NJA=NJA-NBZER
  91 :       SEGADJ KMORS
  92 :       NBVA=NJA
  93 :       SEGADJ KISA
  94 :       SEGDES KMORS
  95 :       SEGDES KISA
  96 :       IF (IMPR.GT.5) THEN
  97 :          IF (IMPR.GT.7) THEN
  98 :             WRITE(IOIMP,*) 'Après :'
  98 :             CALL ECMORS(KMORS,KISA,(IMPR-1))
  99 :          ENDIF
 100 :          WRITE(IOIMP,*) 'Nombre de zéros éliminés  :',NBZER
 101 :       ENDIF
 102 : *
 103 : *     Terminaison normale
 104 : *
 105 :       IRET=0
 106 :       RETURN
 107 : *
 108 : *     End of CLMORS
 109 : *
 110 :       END
 111 : 
 112 :  
 113 :  
 114 :  
 115 :  
 116 :  
 117 :  
 118 :  
 119 :  

© Cast3M 2003 - All rights reserved.
Disclaimer