C DBBCH     SOURCE    CB215821  20/11/25    13:24:04     10792          
*  dualise les valeurs d'un champ en fonction d'un meleme de dedoublement de noeuds
*
      subroutine dbbch(mchpoi,ipt8)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)

-INC PPARAM
-INC CCOPTIO
-INC SMELEME
-INC SMCHPOI
-INC SMCOORD
      segment trav
      integer lag1(nbpts)
      integer lag2(nbpts)
      endsegment
*  ne fonctionne que pour des LX, on suppose qu'il n'y a qu'une include
*  par noeud dédoublé
*  on verifie que le noeud dedouble n'est pas deja dans le champ
      if (ipt8.eq.0) return
      segini trav
      segact mchpoi,ipt8
*     call ecchpo(mchpoi,0)
*     call ecmail(ipt8,0)
      segact mchpoi,ipt8
      do 300 i=1,ipt8.num(/2)
      lag1(ipt8.num(1,i))=ipt8.num(2,i)
 300  continue
      do 310 isoupo=1,ipchp(/1)
      msoupo=ipchp(isoupo)
       segact msoupo
       if (nocomp(/2).ne.1) goto 310
       if (nocomp(1).ne.'FLX') goto 310
       meleme=igeoc
       segact meleme
       do 311 i=1,num(/2)
        lag2(num(1,i))=i
 311   continue
 310  continue
      do 10 isoupo=1,ipchp(/1)
       msoupo=ipchp(isoupo)
       segact msoupo*mod
       if (nocomp(/2).ne.1) goto 10
       if (nocomp(1).ne.'FLX') goto 10
       meleme=igeoc
       mpoval=ipoval
       segact meleme,mpoval*mod
       nbnn=num(/1)
       nbelem=num(/2)
       nbele=nbelem
       nbsous=0
       nbref=0
       segini,ipt1=meleme
       segdes meleme
       meleme=ipt1
       igeoc=meleme
* on fait les meleme et mpoval 2 fois plus grand et ont les ajuste a la fin
       nbelem=nbelem*2
       segadj meleme
       n=nbelem
       nc=1
       segadj mpoval
       nbelem=nbele
       do 100 j=1,nbele
       if (lag1(num(1,j)).eq.0) goto 110
*      write (6,*) ' num lag1 lag2 ',num(1,j),lag1(num(1,j)),
*    > lag2(lag1(num(1,j)))
       if (lag2(lag1(num(1,j))).ne.0) then
*       write (6,*) ' vpocha ',vpocha(j,1),
*    >        vpocha(lag2(lag1(num(1,j))),1)
        interr(1)=lag1(num(1,j))
        interr(2)=lag2(lag1(num(1,j)))
        call erreur(1001)
        goto 110
        endif
        nbelem=nbelem+1
        num(1,nbelem)=lag1(num(1,j))
        vpocha(nbelem,1)=vpocha(j,1)
*     write (6,*) ' noeu ',num(1,j),' valeur ',vpocha(j,1),num(1,nbelem)
        goto 100
 110   continue
 100   continue
        segadj meleme
        n=nbelem
        nc=1
        segadj mpoval
  10   continue
       segsup trav
       return
       end





 
 
 
