C CLICHM    SOURCE    PV        17/12/05    21:15:16     9646           
      subroutine clichm(pChelm,jcolac)
C=======================================================================
C     COLlaborateur LIer CHamp par eleMent
C     Remplace dans un objet CHPO, les pointeurs vers la pile de
C     communication par les pointeurs esope correspondant.
C=======================================================================
      integer ipoPi,iPoint
      integer iCons,nbCons
      integer nbComp,iComp
      integer iNo,iEl,iTyp
      integer nNoEli,nbEli
      character*16 tyComp
      character*8 typNom
      integer nconch

-INC PPARAM
-INC CCOPTIO
-INC SMCHAML
-INC TMCOLAC
      pointeur pChelm.MCHELM
      pointeur pChaml.MCHAML
      pointeur pElval.MELVAL
      pointeur jcolac.ICOLAC
      pointeur pile.ITLACC

C      write(ioimp,*) 'Entre dans CLICHM'
      if (pChelm.ne.0) then
         segact pChelm*mod
         nbCons=pChelm.imache(/1)
C         write(ioimp,*) 'nbSoup',nbCons
C        Restauration des maillages
         pile=jcolac.kcola(1)
         do iCons=1,nbCons
            iPoPi=pChelm.imache(iCons)
C            write(ioimp,*) 'Position dans la pile: ',iPoPi
            iPoint=pile.itlac(iPoPi)
C            write(ioimp,*) 'Pointeur: ',iPoint
            pChelm.imache(iCons)=iPoint
         enddo
         pile=jcolac.kcola(40)
         do iCons=1,nbCons
            iPoPi=pChelm.infche(iCons,4)
C            write(ioimp,*) 'Position dans la pile: ',iPoPi
            iPoint=pile.itlac(iPoPi)
C            write(ioimp,*) 'Pointeur: ',iPoint
            pChelm.infche(iCons,4)=iPoint
         enddo
         do iCons=1,nbCons
            pChaml=pChelm.ichaml(iCons)
C            write(ioimp,*) 'pChaml',pChaml
            segact pChaml
            nbComp=pChaml.ielval(/1)
            do iComp=1,nbComp
               tyComp=pChaml.typche(iComp)
               if(tyComp(1:6).ne.'real*8') then
                  typNom(1:8)=tyComp(9:16)
                  call typfil(typNom,iTyp)
                  if(iTyp.gt.0) then
                     pile=jcolac.kcola(iTyp)
                     pElval= pChaml.ielval(iComp)
                     segact pElval*mod
                     nNoEli=pElval.ielche(/1)
                     nbEli  =pElval.ielche(/2)
                     do iEl=1,nbEli
                        do iNo=1,nNoEli
                           iPoPi=pElval.ielche(iNo,iEl)
                           iPoint=pile.itlac(iPoPi)
                           pElval.ielche(iNo,iEl)=iPoint
                        enddo
                     enddo
                     segdes pElval
                  endif
               endif
            enddo
            segdes pChaml
         enddo

         segdes pChelm
      else
         write(ioimp,*) 'Erreur: pointeur vers un objet CHEML nul'
         call erreur(5)
      endif
C      write(ioimp,*) 'Sortie de CLICHM'
      end


 
 
