      subroutine mix_dens1
      use module
      IMPLICIT REAL*8(A-H,O-X,Z),logical*1(y)
      character(80) name,name_tmp
      real(8),allocatable,dimension(:,:) :: dens

! ecrit sur disque les matrices densite de l'iteration en cours
! but : faire la moyenne des matrices densites de 2 iterations
! successives
! ne marche pas car les matrices densite sont ecrites, pour 2
! iterations successives, dans des jeux l'orbitales differentes
      if(amix==0.d0) return


      norb=sum(isym(1:nsym))
      allocate(dens(norb,norb))

      name='DENS'
      name_tmp='DENS_TMP'
      do imat=1,nmat
         write(name(5:7),'(i3.3)') imat
         write(name_tmp(9:11),'(i3.3)') imat

         open(99,file=name,status='old',form='unformatted')
         open(98,file=name_tmp,status='unknown',form='unformatted')
         do k=1,netat(imat)
            read(99) dens
            write(98) dens
         enddo
         close(98)
         close(99)
      enddo

      deallocate(dens)
      end




      subroutine mix_dens2
      use module
      use mod_lirorb
      use mod_script
      IMPLICIT REAL*8(A-H,O-X,Z),logical*1(y)
      character(80) name,name_tmp,name_orb
      real(8),allocatable,dimension(:,:) :: dens1,dens2
      real(8),allocatable,dimension(:,:,:) :: dens3
      dimension isym_loc(8)
      allocatable ii(:)
      norb=sum(isym(1:nsym))
      allocate(dens1(norb,norb))
      allocate(dens2(norb,norb))
      allocate(dens3(norb,norb,maxval(netat(1:nmat))))
      allocate(ii(norb))

! melange les matrices densite de l'iteration en cours et de
! l'iteration precedente
! but : faire la moyenne des matrices densites de 2 iterations
! successives
! ne marche pas car les matrices densite sont ecrites, pour 2
! iterations successives, dans des jeux l'orbitales differentes
! Il faudrait reecrire la matrice densite de l'iteration precedente
! dans la base des orbitales de l'iteration en cours
      if(amix==0.d0) return



      name='DENS'
      name_tmp='DENS_TMP'
      name_orb='LOCORB2_'
      do imat=1,nmat
         write(name(5:7),'(i3.3)') imat
         write(name_tmp(9:11),'(i3.3)') imat

         open(99,file=name,status='old',form='unformatted')
         open(98,file=name_tmp,status='old',form='unformatted')
         n=0
         do n=1,netat(imat)
            read(98) dens1
            read(99) dens2
            dens3(:,:,n)=dens1
         enddo
         rewind(99)
         do n=1,netat(imat)
            write(99) dens3(:,:,n)
         enddo
         close(99)
         close(98)
!
!        lecture des orbitales de l'iteration precedente
         if(iter<10) then
            write(name_orb(9:9),'(i1)') iter-1
         else if(iter<100) then
            write(name_orb(9:10),'(i2)') iter-1
         else if(iter<1000) then
            write(name_orb(9:11),'(i3)') iter-1
         endif
         !open(99,file=name_orb,status='old',form='formatted')
         call lirorb(name_orb,norb_loc,nsym_loc,isym_loc,98,99)
         rewind 98
         dens2=0.d0
         dens1=0.d0
         print*,'densite'
         call mscript(dens3(:,:,1))
         do is=1,nsym
            ndims=isym(is)
            read(98) dens1(1:ndims,1:ndims)
!           dens1 contient les orbitales lues sur INPORB
            print*,'ORB lues, sym',is
            call mscript(dens1(1:ndims,1:ndims))
            n=0
            do k=1,norb
               if(itsym(k).eq.is) then
                  n=n+1
                  ii(n)=k
               endif
            enddo
            print'(a,20i3)','ii',ii(1:n)
            do k=1,ndims
                dens2(isymt(is)+1:isymt(is+1),ii(k))=dens1(:,k)
            !dens2(:,ii(1:ndims))=dens1(:,1:ndims)
            enddo
          enddo
      enddo
         print*,'orb'
      call mscript(dens2)
      stop

      deallocate(dens1,dens2)
      end
