      program OA_OAO
      use mod_lirorb
!     
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!     Lit un fichier d'orbitales ecrites en base d'OA (LOCORB)
!     Le reecrit en base d'OAO                        (NONORLOC)
!     
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!     
      IMPLICIT REAL*8(A-H,O-X,Z),logical*1(y)
      parameter (maxsym=8,maxorbcas=16)
      double precision, allocatable,dimension(:,:) ::
     *orb,oao,oaoinv
      double precision, allocatable,dimension(:) :: occao,occoao
      character(18),allocatable,dimension(:) :: tipoa,tipoao
      dimension isym(maxsym)
      character(80) aa
      print*,' '
      print*,'*******************************************************'
      print*,'======================================================='
      print*,'                       OA_OAO'
      print*,'======================================================='
      print*,'*******************************************************'
      print*,' '
      !
      ! Lecture de la matrice de transformation de base
      call lirorb('LOCOA',norb,nsym,isym,1,2,title=aa)
      print*,'fichier LOCOA :                      ',trim(aa)
      ! Lecture des orbitales en base OA
      call lirorb('LOCORB',norb,nsym,isym,3,2,ifiloc=4,ifillab=8
     *,title=aa)
      print*,'fichier LOCORB (orb en base d''OA) : ',trim(aa)
      open(9,status='scratch',form='unformatted')
      rewind 1
      rewind 3
      !
      ! Boucle sur les symetries
      do is=1,nsym
         ndims=isym(is)
         !
         ! Allocations
         allocate(orb(ndims,ndims))
         allocate(oao(ndims,ndims))
         allocate(oaoinv(ndims,ndims))
         allocate(occao(ndims))
         allocate(occoao(ndims))
         allocate(tipoa(ndims))
         allocate(tipoao(ndims))
         !
         ! Matrice de transformation de base
         read(1) oao
         call invert(oao,oaoinv,ndims)
         !
         ! Lecture des orbitales en base OA
         read(3) orb
         ! Changement de base
         orb=matmul(oaoinv,orb)
         write(9) orb
         deallocate(orb,oao,occao,tipoa,tipoao,oaoinv)
      enddo
      !
      ! Ecriture du fichier NONORLOC
      call ecriorb('* NONORLOC cree par OA_OAO','NONORLOC',
     *nsym,isym,9,2,ifiloc=4,ifillab=8)
      end
