C IDCOMP    SOURCE    CB215821  20/11/25    13:30:07     10792          
      SUBROUTINE IDCOMP(CMOT,MLMOTS)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER (I-N)
C***********************************************************************
C NOM         : IDCOMP
C DESCRIPTION : Renvoie une liste de noms de composantes de l'inconnue
C               demandée (pour l'instant 'DEPL' et 'FORC')
C
C               Cette subroutine est copiée de bloque.eso
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 ENTREES            : CMOT
C ENTREES/SORTIES    :
C SORTIES            : MLMOTS
C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
C***********************************************************************
C VERSION    : v1, 07/10/2005, version initiale
C HISTORIQUE : v1, 07/10/2005, création
C HISTORIQUE :
C HISTORIQUE :
C***********************************************************************

-INC PPARAM
-INC CCOPTIO
-INC SMLMOTS
*
      CHARACTER*(LOCOMP)   MODEPL(6),MODEDU(6)
      CHARACTER*(LOCOMP)   MODE1D(2),MOFO1D(2)
      CHARACTER*(*) CMOT
*
      DATA MODEPL / 'UX  ','UY  ','UZ  ','UR  ','UZ  ','UT  ' /
      DATA MODEDU / 'FX  ','FY  ','FZ  ','FR  ','FZ  ','FT  ' /
C Tableaux MODE1D et MOFO1D sont utilises pour certains modes 1D
      DATA MODE1D / 'UX  ','UZ  ' /
      DATA MOFO1D / 'FX  ','FZ  ' /
*
* Executable statements
*
      IF (CMOT.EQ.'DEPL'.OR.CMOT.EQ.'FORC') THEN
         JGN=LOCOMP
         JGM=0
         SEGINI MLMOTS
C  Quelques initialisations selon le type de probleme
C  Cas IDIM = 1 :
C  ISPE1D = 1 si IDIM=1 et IFOUR=9 ou 10, car les noms de DDL primaux et
C  variables duales ne sont pas dans l'ordre "classique" (un traitement
C  specifique est alors necessaire).
         ISPE1D=0
C  Deformations planes ou contraintes planes ou defo. plane gene :
         IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-3) THEN
            LDEPL=2
            IADEPL=0
C  Axisymetrique :
         ELSEIF (IFOUR.EQ.0) THEN
            LDEPL=2
            IADEPL=3
C  Fourier :
         ELSEIF (IFOUR.EQ.1) THEN
            LDEPL=3
            IADEPL=3
C  Tridimensionnel :
         ELSEIF (IFOUR.EQ.2) THEN
            LDEPL=3
            IADEPL=0
C  Massif 1D (IDIM=1) :
         ELSEIF (IFOUR.GE.3.AND.IFOUR.LE.15) THEN
            IF (IFOUR.LE.6) THEN
               LDEPL=1
               IADEPL=0
            ELSEIF (IFOUR.GE.7.AND.IFOUR.LE.10) THEN
               LDEPL=2
               IADEPL=0
               IF (IFOUR.EQ.9.OR.IFOUR.EQ.10) ISPE1D=1
            ELSEIF (IFOUR.EQ.11) THEN
               LDEPL=3
               IADEPL=0
            ELSE IF (IFOUR.EQ.15) THEN
               LDEPL=2
               IADEPL=3
            ELSE
               LDEPL=1
               IADEPL=3
            ENDIF
C  Autres cas :
         ELSE
            LDEPL=0
            IADEPL=0
         ENDIF
C  Cas particulier pour certains modes de IDIM=1
         IF (ISPE1D.EQ.1) THEN
            DO I=1,LDEPL
               IF (CMOT.EQ.'DEPL') THEN
                  MOTS(**)=MODE1D(IADEPL+I)
               ELSE
                  MOTS(**)=MOFO1D(IADEPL+I)
               ENDIF
            ENDDO
C  Cas general
         ELSE
            DO I=1,LDEPL
               IF (CMOT.EQ.'DEPL') THEN
                  MOTS(**)=MODEPL(IADEPL+I)
               ELSE
                  MOTS(**)=MODEDU(IADEPL+I)
               ENDIF
            ENDDO
         ENDIF
         SEGDES MLMOTS
      ELSE
         MOTERR=CMOT
         CALL ERREUR(927)
      ENDIF
      RETURN
*
* End of subroutine IDCOMP
*
      END
 
