Télécharger exinck.eso

Retour à la liste

Numérotation des lignes :

exinck
  1. C EXINCK SOURCE CB215821 20/11/04 21:16:59 10766
  2. SUBROUTINE EXINCK(MATIN,LINCP,LINCD,MATOUT,IMPR,IRET)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : EXINCK
  7. C DESCRIPTION : Extrait d'un MATRIK la sous-matrice
  8. C d'inconnues primales et duales celles données
  9. C en argument CH*4
  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 MATRIK2 = 'KOPS' 'EXTRINCO' MATRIK1 LMOT1 LMOT2 ;
  24. C
  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. POINTEUR MATIN.MATRIK
  43. POINTEUR MATOUT.MATRIK
  44. POINTEUR IMATIN.IMATRI
  45. POINTEUR IMATOU.IMATRI
  46. -INC SMLMOTS
  47. POINTEUR LINCP.MLMOTS
  48. POINTEUR LINCD.MLMOTS
  49. *
  50. LOGICAL OKP,OKD,OKT
  51. *
  52. INTEGER IMPR,IRET
  53. *
  54. CHARACTER*(LOCOMP) MOTP,MOTD
  55. PARAMETER (NMOT=2)
  56. *
  57. * Executable statements
  58. *
  59. IMPR=0
  60. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans exinck.eso'
  61. C SEGPRT,LINCP
  62. C SEGPRT,LINCD
  63. *
  64. *
  65. *
  66. SEGACT LINCP
  67. SEGACT LINCD
  68. SEGACT,MATIN
  69. NMATRI=MATIN.IRIGEL(/2)
  70. NRIGE=MATIN.IRIGEL(/1)
  71. NKID=MATIN.KIDMAT(/1)
  72. NKMT=MATIN.KKMMT(/1)
  73. *
  74. SEGINI,MATOUT
  75. IMOU=0
  76. DO IMIN=1,NMATRI
  77. * WRITE(IOIMP,*) 'IMIN=',IMIN
  78. IMATIN=MATIN.IRIGEL(4,IMIN)
  79. SEGACT IMATIN
  80. NBSOUS=IMATIN.LIZAFM(/1)
  81. NBMIN=IMATIN.LIZAFM(/2)
  82. NBMOU=0
  83. *
  84. * Y a-t-il des inconnues intéressantes ?
  85. *
  86. DO IBMIN=1,NBMIN
  87. MOTP=IMATIN.LISPRI(IBMIN)(1:4)
  88. MOTD=IMATIN.LISDUA(IBMIN)(1:4)
  89. CALL FIMOT2(MOTP,LINCP.MOTS,LINCP.MOTS(/2),IMOTP,
  90. $ IMPR,IRET)
  91. IF (IRET.NE.0) GOTO 9999
  92. CALL FIMOT2(MOTD,LINCD.MOTS,LINCD.MOTS(/2),IMOTD,
  93. $ IMPR,IRET)
  94. IF (IRET.NE.0) GOTO 9999
  95. OKP = (IMOTP.NE.0)
  96. OKD = (IMOTD.NE.0)
  97. OKT =(OKP.AND.OKD)
  98. IF (OKT) NBMOU=NBMOU+1
  99. C WRITE(IOIMP,*) 'IMOTP=',IMOTP,' IMOTD=',IMOTD
  100. C WRITE(IOIMP,*) 'MOTP=',MOTP,' MOTD=',MOTD,' OKT=',OKT
  101. ENDDO
  102. * WRITE(IOIMP,*) 'toto NBMOU=',NBMOU
  103. *
  104. * Si oui, on remplit, sinon on passe à la suite
  105. *
  106. IF (NBMOU.GT.0) THEN
  107. NBME=NBMOU
  108. SEGINI,IMATOU
  109. IBMOU=0
  110. DO IBMIN=1,NBMIN
  111. MOTP=IMATIN.LISPRI(IBMIN)(1:4)
  112. MOTD=IMATIN.LISDUA(IBMIN)(1:4)
  113. CALL FIMOT2(MOTP,LINCP.MOTS,LINCP.MOTS(/2),IMOTP,
  114. $ IMPR,IRET)
  115. IF (IRET.NE.0) GOTO 9999
  116. CALL FIMOT2(MOTD,LINCD.MOTS,LINCD.MOTS(/2),IMOTD,
  117. $ IMPR,IRET)
  118. IF (IRET.NE.0) GOTO 9999
  119. OKP = (IMOTP.NE.0)
  120. OKD = (IMOTD.NE.0)
  121. OKT =(OKP.AND.OKD)
  122. IF (OKT) THEN
  123. IBMOU=IBMOU+1
  124. IMATOU.LISPRI(IBMOU)=IMATIN.LISPRI(IBMIN)
  125. IMATOU.LISDUA(IBMOU)=IMATIN.LISDUA(IBMIN)
  126. DO IBSOUS=1,NBSOUS
  127. IMATOU.LIZAFM(IBSOUS,IBMOU)=
  128. $ IMATIN.LIZAFM(IBSOUS,IBMIN)
  129. ENDDO
  130. ENDIF
  131. ENDDO
  132. IMATOU.KSPGP=IMATIN.KSPGP
  133. IMATOU.KSPGD=IMATIN.KSPGD
  134. SEGDES,IMATOU
  135. IMOU=IMOU+1
  136. * WRITE(IOIMP,*) 'IMOU=',IMOU
  137. DO IRIGE=1,7
  138. MATOUT.IRIGEL(IRIGE,IMOU)=MATIN.IRIGEL(IRIGE,IMIN)
  139. ENDDO
  140. MATOUT.IRIGEL(4,IMOU)=IMATOU
  141. ENDIF
  142. SEGDES IMATIN
  143. ENDDO
  144. * WRITE(IOIMP,*) 'tutu'
  145. *
  146. * Ajuster les dimensions
  147. *
  148. NMATRI=IMOU
  149. SEGADJ,MATOUT
  150. SEGDES MATOUT
  151. SEGDES MATIN
  152. SEGDES LINCD
  153. SEGDES LINCP
  154. *
  155. * Normal termination
  156. *
  157. * IRET=0
  158. RETURN
  159. *
  160. * Format handling
  161. *
  162. *
  163. * Error handling
  164. *
  165. 9999 CONTINUE
  166. * IRET=1
  167. WRITE(IOIMP,*) 'An error was detected in subroutine exinck'
  168. CALL ERREUR(5)
  169. RETURN
  170. *
  171. * End of subroutine EXINCK
  172. *
  173. END
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  

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