Télécharger extipd.eso

Retour à la liste

Numérotation des lignes :

extipd
  1. C EXTIPD SOURCE PV 20/09/26 21:16:51 10724
  2. SUBROUTINE EXTIPD
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : EXTIPD
  7. C DESCRIPTION : Extrait les noms d'inconnues primales ou duales
  8. C d'un MATRIK, on réduit à CH*4 pour des raisons
  9. C de compatibilité
  10. C
  11. C
  12. C LANGAGE : ESOPE
  13. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  14. C mél : gounand@semt2.smts.cea.fr
  15. C***********************************************************************
  16. C APPELES :
  17. C APPELES (E/S) :
  18. C APPELES (BLAS) :
  19. C APPELES (CALCUL) :
  20. C APPELE PAR :
  21. C***********************************************************************
  22. C SYNTAXE GIBIANE :
  23. C LMOT1 = 'KOPS' 'EXTRINPR' MATRIK1 ;
  24. C LMOT1 = 'KOPS' 'EXTRINDU' MATRIK1 ;
  25. C ENTREES :
  26. C ENTREES/SORTIES :
  27. C SORTIES :
  28. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  29. C***********************************************************************
  30. C VERSION : v1, 10/05/2006, version initiale
  31. C HISTORIQUE : v1, 10/05/2006, création
  32. C HISTORIQUE :
  33. C HISTORIQUE :
  34. C***********************************************************************
  35. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  36. C en cas de modification de ce sous-programme afin de faciliter
  37. C la maintenance !
  38. C***********************************************************************
  39.  
  40. -INC PPARAM
  41. -INC CCOPTIO
  42. -INC SMLMOTS
  43. POINTEUR LINC.MLMOTS
  44. POINTEUR LINC2.MLMOTS
  45. *
  46. INTEGER IMPR,IRET
  47. *
  48. * Executable statements
  49. *
  50. IMPR=0
  51. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans extipd.eso'
  52. CALL LIROBJ('MATRIK ',MATRIK,1,IRETOU)
  53. IF (IERR.NE.0) RETURN
  54. * D'abord les primales puis les duales
  55. * On renverse l'ordre car ecrobj écrit sur une pile
  56. DO IPRIDU=2,1,-1
  57. *
  58. * Dim max de LINC
  59. *
  60. JGM=0
  61. SEGACT MATRIK
  62. NMAT=IRIGEL(/2)
  63. DO IMAT=1,NMAT
  64. IMATRI=IRIGEL(4,IMAT)
  65. SEGACT IMATRI
  66. JGM=JGM+LIZAFM(/2)
  67. ENDDO
  68. *
  69. * Remplissage de LINC
  70. *
  71. JGN=4
  72. IGM=0
  73. SEGINI LINC
  74. DO IMAT=1,NMAT
  75. IMATRI=IRIGEL(4,IMAT)
  76. NBME=LIZAFM(/2)
  77. DO IBME=1,NBME
  78. IGM=IGM+1
  79. IF (IPRIDU.EQ.1) THEN
  80. LINC.MOTS(IGM)=LISPRI(IBME)
  81. ELSEIF (IPRIDU.EQ.2) THEN
  82. LINC.MOTS(IGM)=LISDUA(IBME)
  83. ELSE
  84. GOTO 9999
  85. ENDIF
  86. ENDDO
  87. SEGDES IMATRI
  88. ENDDO
  89. SEGDES MATRIK
  90. *
  91. * Enlever les doublons dans LINC
  92. *
  93. SEGINI,LINC2=LINC
  94. CALL CUNIQ(LINC2.MOTS,LINC2.MOTS(/1),LINC2.MOTS(/2),
  95. $ LINC.MOTS,NIUNIQ,
  96. $ IMPR,IRET)
  97. IF (IRET.NE.0) GOTO 9999
  98. JGN=4
  99. JGM=NIUNIQ
  100. SEGADJ,LINC
  101. SEGSUP LINC2
  102. SEGDES LINC
  103. CALL ECROBJ('LISTMOTS',LINC)
  104. ENDDO
  105. *
  106. * Normal termination
  107. *
  108. * IRET=0
  109. RETURN
  110. *
  111. * Format handling
  112. *
  113. *
  114. * Error handling
  115. *
  116. 9999 CONTINUE
  117. * IRET=1
  118. WRITE(IOIMP,*) 'An error was detected in subroutine extipd'
  119. CALL ERREUR(5)
  120. RETURN
  121. *
  122. * End of subroutine EXTIPD
  123. *
  124. END
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  

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