Download exinck.eso

Back to the list

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

© Cast3M 2003 - All rights reserved.
Disclaimer