C MACHI2    SOURCE    BP208322  15/06/22    21:20:27     8543
      SUBROUTINE MACHI2(IKAS)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C***********************************************************************
C NOM         : MACHI2
C DESCRIPTION : Changement de noms d'inconnues duales
C               d'une matrice (type MATRIK) pour qu'ils soient
C               identiques aux noms d'inconnues primales
C               IKAS=1
C               ou pour qu'ils correspondent aux noms d'inconnues
C               primales (noms standard CASTEM)
C               IKAS=2
C
C
C
C LANGAGE     : ESOPE
C AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
C               mél : gounand@semt2.smts.cea.fr
C***********************************************************************
C APPELES          :
C APPELES (E/S)    :
C APPELES (BLAS)   :
C APPELES (CALCUL) :
C APPELE PAR       :
C***********************************************************************
C SYNTAXE GIBIANE    :
C    MATRIK2  = 'KOPS'  'NINCDUPR'  MATRIK1 ;
C ENTREES            : -
C ENTREES/SORTIES    : -
C SORTIES            : -
C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
C***********************************************************************
C VERSION    : v1, 22/02/2006, version initiale
C HISTORIQUE : v1, 22/02/2006, création
C HISTORIQUE :
C HISTORIQUE :
C***********************************************************************
C Prière de PRENDRE LE TEMPS de compléter les commentaires
C en cas de modification de ce sous-programme afin de faciliter
C la maintenance !
C***********************************************************************

-INC PPARAM
-INC CCOPTIO
-INC CCHAMP
-INC SMLMOTS
      POINTEUR PRI.MLMOTS
      POINTEUR DUA.MLMOTS
      CHARACTER*8 MTYP,TYPE
      CHARACTER*8 BLAN,TYCHPO,TYLMOT,TYMATK,TYRIGI
*
* Executable statements
*
      BLAN='        '
      TYCHPO='CHPOINT '
      TYLMOT='LISTMOTS'
      TYMATK='MATRIK  '
      TYRIGI='RIGIDITE'
* On construit les noms primaux et duaux en recopiant NOMDD et NOMDU
* de CCHAMP
*
      JGN=4
      JGM=LNOMDD
      SEGINI PRI
      DO IGM=1,JGM
         PRI.MOTS(IGM)=NOMDD(IGM)
      ENDDO
      SEGDES PRI
      JGN=4
      JGM=LNOMDU
      SEGINI DUA
      DO IGM=1,JGM
         DUA.MOTS(IGM)=NOMDU(IGM)
      ENDDO
      SEGDES DUA
      TYPE=BLAN
      CALL QUETYP(TYPE,1,IRET)
      IF (TYPE.EQ.TYCHPO) THEN
         MTYP=TYLMOT
         IF (IKAS.EQ.1) THEN
            CALL ECROBJ(MTYP,PRI)
            CALL ECROBJ(MTYP,DUA)
         ELSEIF (IKAS.EQ.2) THEN
            CALL ECROBJ(MTYP,DUA)
            CALL ECROBJ(MTYP,PRI)
         ELSE
            CALL ERREUR(5)
            RETURN
         ENDIF
         CALL NOMC
      ELSEIF (TYPE.EQ.TYMATK.OR.TYPE.EQ.TYRIGI) THEN
         MTYP=TYLMOT
         IF (IKAS.EQ.1) THEN
            CALL ECROBJ(MTYP,PRI)
            CALL ECROBJ(MTYP,DUA)
            CALL ECROBJ(MTYP,PRI)
            CALL ECROBJ(MTYP,PRI)
         ELSEIF (IKAS.EQ.2) THEN
            CALL ECROBJ(MTYP,DUA)
            CALL ECROBJ(MTYP,PRI)
            CALL ECROBJ(MTYP,PRI)
            CALL ECROBJ(MTYP,PRI)
         ELSE
            CALL ERREUR(5)
            RETURN
         ENDIF
         CALL MACHIN
      ELSE
         MOTERR(1:8)=TYPE
*  39 2
*On ne veut pas d'objet de type %m1:8
         CALL ERREUR(131)
      ENDIF
*
* Normal termination
*
      RETURN
*
* Format handling
*
*
* Error handling
*
 9999 CONTINUE
      WRITE(IOIMP,*) 'An error was detected in subroutine machi2'
      CALL ERREUR(5)
      RETURN
*
* End of subroutine MACHI2
*
      END









