C CUPMEL    SOURCE    PV        17/12/05    21:15:48     9646           
      subroutine cupmel(bu,bufPos,pMelem)
C=======================================================================
C     COLlaborateur UnPAQuettage MELeme
C     lecture du maillage pMelem dans le buffer d'envoi bu
C=======================================================================
      integer nbnn, nbelem, nbsous, nbref
      integer bufPos
      integer lonBuf
      integer iNoeud,iRef,iSous
      integer iPoint
      integer jtypel

-INC PPARAM
-INC CCOPTIO
-INC SMELEME
C-INC TMCOLAC
      segment BUFFER
         character ffer(lonBuf)
      endsegment
      pointeur pMelem.MELEME
      pointeur bu.BUFFER

C      write(ioimp,*) 'Entre dans CUPMEL'
      lonBuf=bu.ffer(/2)
      jtypel=0
      call mpiupI(jtypel,1,bu,bufPos)

C      write(ioimp,*)'Lecture du type delement',jtypel
      call mpiupI(nbsous , 1,bu,bufPos)

C      write(ioimp,*)"nbsous",nbsous
      call mpiupI(nbref , 1,bu,bufPos)

C      write(ioimp,*)"nbref",nbref
      call mpiupI(nbnn , 1,bu,bufPos)

C      write(ioimp,*)"nbnn",nbnn
      call mpiupI(nbelem , 1,bu,bufPos)

C      write(ioimp,*)"nbelem",nbelem

      if (pMelem.ne.0) then
         segact pMelem*mod
         segadj pMelem
      else
         segini pMelem
      endif
      pMelem.itypel=jtypel
C Lecture de la position des sous-maillages dans la pile
      if(nbsous.gt.0) then
C            write(ioimp,*) 'Lecture de la position des sous-maillages dans
C     &la pile'
         call mpiupI( pMelem.lisous(1) , nbsous,bu,bufPos)

C            do iSous=1,nbsous
C               write(ioimp,*) 'Sous maillage :',iSous
C               iPoint=pMelem.lisous(iSous)
C               write(ioimp,*) 'Pointeur: ',iPoint
C            enddo
      else
C            write(ioimp,*) 'Pas de sous-maillages'
      endif
C Lecture de la position des references dans la pile
      if(nbref.gt.0) then
C            write(ioimp,*)'Lecture de la position des references dans la
C     &pile'
         call mpiupI( pMelem.lisref(1) , nbref,bu,bufPos)


C            do iRef=1,nbref
C               write(ioimp,*) 'Reference :',iRef
C               iPoint=pMelem.lisref(iRef)
C               write(ioimp,*) 'Pointeur: ',iPoint
C            enddo
      else
C            write(ioimp,*) 'Pas de references'
      endif
C Lecture de la connectivite
      if(nbelem.gt.0) then
C            write(ioimp,*) 'Lecture de la connectivite'
         call mpiupI( pMelem.num(1,1) , nbnn*nbelem,bu,bufPos)

C            write(ioimp,*) 'Lecture des couleurs'
         call mpiupI( pMelem.icolor(1), nbelem,bu,bufPos)

      else
         write(ioimp,*) 'Maillage vide sans element'
      endif

      segdes pMelem
C      write(ioimp,*) 'Sortie de CUPMEL'
      end


 
 
