Télécharger clmors.eso

Retour à la liste

Numérotation des lignes :

clmors
  1. C CLMORS SOURCE PV 20/09/26 21:16:13 10724
  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.  
  49. -INC PPARAM
  50. -INC CCOPTIO
  51. INTEGER IMPR,IRET
  52. INTEGER NBVA
  53. INTEGER NJA,NTT
  54. POINTEUR KMORS.PMORS
  55. POINTEUR KISA.IZA
  56. *
  57. *
  58. * .. Variables locales
  59. * .. Parameters ..
  60. REAL*8 ZERO
  61. PARAMETER ( ZERO = 0.0D+0 )
  62. * ..
  63. INTEGER ICOL,INTT
  64. INTEGER NBZER
  65. INTEGER NBZER2
  66. IF (IMPR.GT.5) THEN
  67. WRITE(IOIMP,*) 'clmors : nettoyage de la matrice morse',
  68. $ ' de pointeurs',KMORS,KISA
  69. IF (IMPR.GT.7) THEN
  70. WRITE(IOIMP,*) 'Avant :'
  71. CALL ECMORS(KMORS,KISA,(IMPR-1))
  72. ENDIF
  73. ENDIF
  74. SEGACT KMORS*MOD
  75. SEGACT KISA*MOD
  76. NTT=KMORS.IA(/1)-1
  77. NJA=KMORS.JA(/1)
  78. NBZER=0
  79. DO 1 INTT=1,NTT
  80. NBZER2=NBZER
  81. DO 11 ICOL=KMORS.IA(INTT),(KMORS.IA(INTT+1)-1)
  82. IF (KISA.A(ICOL).EQ.ZERO.AND.KMORS.JA(ICOL).NE.INTT) THEN
  83. NBZER=NBZER+1
  84. ELSE
  85. KMORS.JA(ICOL-NBZER)=KMORS.JA(ICOL)
  86. KISA.A(ICOL-NBZER)= KISA.A(ICOL)
  87. ENDIF
  88. 11 CONTINUE
  89. KMORS.IA(INTT)=KMORS.IA(INTT)-NBZER2
  90. 1 CONTINUE
  91. KMORS.IA(NTT+1)=KMORS.IA(NTT+1)-NBZER
  92. NJA=NJA-NBZER
  93. SEGADJ KMORS
  94. NBVA=NJA
  95. SEGADJ KISA
  96. SEGDES KMORS
  97. SEGDES KISA
  98. IF (IMPR.GT.5) THEN
  99. IF (IMPR.GT.7) THEN
  100. WRITE(IOIMP,*) 'Après :'
  101. CALL ECMORS(KMORS,KISA,(IMPR-1))
  102. ENDIF
  103. WRITE(IOIMP,*) 'Nombre de zéros éliminés :',NBZER
  104. ENDIF
  105. *
  106. * Terminaison normale
  107. *
  108. IRET=0
  109. RETURN
  110. *
  111. * End of CLMORS
  112. *
  113. END
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  

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