C CP2TR2    SOURCE    GOUNAND   24/09/06    21:15:03     12004          
      SUBROUTINE CP2TR2(ILMOTS,IMEL,MCHPOI,MTRAV)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER (I-N)
C***********************************************************************
C NOM         : CP2TR2
C DESCRIPTION : Transformation d'un chpoint MYCHPO
C               en un objet MTRAV MYMTRA plus commode
C               LISCOM et MELEME sont les composantes et points
C               qui nous intéressent.
C               On ne veut pas plusieurs numéros d'harmonique
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 VERSION    : v1, 11/04/2008, version initiale
C HISTORIQUE : v1, 11/04/2008, 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 SMCOORD
*
-INC SMCHPOI
-INC TMTRAV
-INC SMLMOTS
-INC SMELEME
-INC SMLENTI
      POINTEUR KRIGEO.MLENTI
*
* Executable statements
*
      IF (ILMOTS.EQ.0.AND.IMEL.EQ.0) THEN
         CALL TRACHP(MCHPOI,MTRAV)
         RETURN
      ENDIF
      IF (ILMOTS.EQ.0) THEN
         CALL EXTR11(MCHPOI,MLMOTS)
         IF (IERR.NE.0) RETURN
      ELSE
         MLMOTS=ILMOTS
      ENDIF
      IF (IMEL.EQ.0) THEN
         IMUL=0
         CALL EXTR21(MCHPOI,IMUL,MELEME)
         IF (IERR.NE.0) RETURN
      ELSE
         MELEME=IMEL
      ENDIF
*
* Initialisation de l'objet MTRAV
*
      SEGACT MELEME
      NNNOE=NUM(/2)
      SEGACT MLMOTS
      JGM=MOTS(/2)
      NNIN=JGM
      SEGINI MTRAV
      DO ININ=1,NNIN
         INCO(ININ)=MOTS(ININ)
      ENDDO
      DO INNOE=1,NNNOE
         IGEO(INNOE)=NUM(1,INNOE)
      ENDDO
*
* Remplissage de l'objet MTRAV
*
*  Création du segment de répérage dans IGEO
      NTOGPO=nbpts
      JG=NTOGPO
      SEGINI,KRIGEO
      DO INNOE=1,NNNOE
         KRIGEO.LECT(IGEO(INNOE))=INNOE
      ENDDO
*  Parcours de l'objet champoint
      SEGACT MCHPOI
      NSOUPO=IPCHP(/1)
      NHARMO=-10
      DO ISOUPO=1,NSOUPO
         MSOUPO=IPCHP(ISOUPO)
         SEGACT MSOUPO
         NC=NOCOMP(/2)
*   Création du segment de repérage dans les noms d'inconnues
         DO IC=1,NC
            ININ=0
            DO JNIN=1,NNIN
               IF (INCO(JNIN).EQ.NOCOMP(IC)) THEN
                  ININ=JNIN
                  GOTO 2
               ENDIF
            ENDDO
 2          CONTINUE
            IF (JNIN.NE.0) THEN
               IF(NHARMO.EQ.-10) THEN
                  NHARMO=NOHARM(IC)
               ELSE
                  IF (NOHARM(IC).NE.NHARMO) THEN
                     CALL ERREUR(435)
                     RETURN
                  ENDIF
               ENDIF
               IPT1= IGEOC
               SEGACT IPT1
               MPOVAL=IPOVAL
               SEGACT MPOVAL
               N=VPOCHA(/1)
               DO I=1,N
                  IGLOB=IPT1.NUM(1,I)
                  INNOE=KRIGEO.LECT(IGLOB)
                  IF (INNOE.NE.0) THEN
                     IBIN(ININ,INNOE)=1
                     BB(ININ,INNOE)=VPOCHA(I,IC)
                  ENDIF
               ENDDO
            ENDIF
         ENDDO
      ENDDO
      IF(NHARMO.NE.-10) THEN
         DO ININ=1,NNIN
            NHAR(ININ)=NHARMO
         ENDDO
      ENDIF
      SEGSUP KRIGEO
*
* Normal termination
*
      RETURN
*
* End of subroutine CP2TR2
*
      END
 
