      subroutine build_det_coeffs
      use orbitals_module
      use confs_module
      implicit none
      double precision tota
      integer i,imol,jmol,kmol,lmol
      if(uhf) then 
         nmola=n_alpha
      endif
c     allocate(indij(nmola))
      do i=1,nmola
         indij(i)=(i-1)*(nmola+nmola-i)/2
      enddo
      if(open_shell) then
         allocate(ia(nmol),pa(nmol),iaa(nmol*(nmol+1)/2))
         allocate(jaa(nmol*(nmol+1)/2),kaa(nmol*(nmol+1)/2))
         allocate(laa(nmol*(nmol+1)/2),paa(nmol*(nmol+1)/2))
         allocate(ib(nmol),pb(nmol),ibb(nmol*(nmol+1)/2))
         allocate(jbb(nmol*(nmol+1)/2),kbb(nmol*(nmol+1)/2))
         allocate(lbb(nmol*(nmol+1)/2),pbb(nmol*(nmol+1)/2))
         if(uhf) then
            na=0
            nb=0
            naa=0
            nbb=0
            nmola=n_alpha
            do imol=1,n_alpha
               if(occ(1,imol).gt.0.0d0) then
                  na=na+1
                  pa(na)=1.0d0
                  if(ifno) then
                     pa(na)=occ(1,imol)
                  endif
                  ia(na)=indij(imol)+imol
                  do jmol=imol,nmol
                     if(occ(1,jmol).gt.0.0d0) then
                        naa=naa+1
                        paa(naa)=1.0d0
                        iaa(naa)=imol
                        jaa(naa)=jmol
                        kaa(naa)=imol
                        laa(naa)=jmol
                        if(ifno) then
                           tota=occ(1,jmol)*occ(1,imol)
                           paa(naa)=tota
                        endif
                     endif
                  enddo
               endif
            enddo
            do imol=n_alpha+1,n_alpha+n_beta
               if(occ(2,imol).gt.0.0d0) then
                  nb=nb+1
                  pb(nb)=1.0d0
                  if(ifno) then
                     pb(nb)=occ(2,imol)
                  endif
                  ib(nb)=indij(imol-n_alpha)+imol-n_alpha
                  do jmol=imol,n_alpha+n_beta
                     if(occ(2,jmol).gt.0.0d0) then
                        nbb=nbb+1
                        pbb(nbb)=1.0d0
                        ibb(nbb)=imol-n_alpha
                        jbb(nbb)=jmol-n_alpha
                        kbb(nbb)=imol-n_alpha
                        lbb(nbb)=jmol-n_alpha
                        if(ifno) then
                           tota=occ(2,imol)*occ(2,jmol)
                           pbb(nbb)=tota
                        endif
                     endif
                  enddo
               endif
            enddo
         else
            na=0
            nb=0
            naa=0
            nbb=0
            nmola=nmol
            do imol=1,nmol
               if(occ(1,imol).gt.0.0d0) then
                  na=na+1
                  pa(na)=1.0d0
                  ia(na)=indij(imol)+imol
                  do jmol=imol,nmol
                     if(occ(1,jmol).gt.0.0d0) then
                        naa=naa+1
                        paa(naa)=1.0d0
                        iaa(naa)=imol
                        jaa(naa)=jmol
                        kaa(naa)=imol
                        laa(naa)=jmol
                     endif
                  enddo
               endif
            enddo
            do imol=1,nmol
               if(occ(2,imol).gt.0.0d0) then
                  nb=nb+1
                  pb(nb)=1.0d0
                  ib(nb)=indij(imol)+imol
                  do jmol=imol,nmol
                     if(occ(2,jmol).gt.0.0d0) then
                        nbb=nbb+1
                        pbb(nbb)=1.0d0
                        ibb(nbb)=imol
                        jbb(nbb)=jmol
                        kbb(nbb)=imol
                        lbb(nbb)=jmol
                     endif
                  enddo
               endif
            enddo
         endif
      else
        if(ifno) then
        allocate(ia(nmol),pa(nmol),iaa(nmol*(nmol+1)))
        allocate(jaa(nmol*(nmol+1)),kaa(nmol*(nmol+1)))
        allocate(laa(nmol*(nmol+1)),paa(nmol*(nmol+1)))
        allocate(ib(nmol),pb(nmol),ibb(nmol*(nmol+1)))
        allocate(jbb(nmol*(nmol+1)),kbb(nmol*(nmol+1)))
        allocate(lbb(nmol*(nmol+1)),pbb(nmol*(nmol+1)))
        else
        allocate(ia(nmol),pa(nmol),iaa(nmol*(nmol+1)/2))
        allocate(jaa(nmol*(nmol+1)/2),kaa(nmol*(nmol+1)/2))
        allocate(laa(nmol*(nmol+1)/2),paa(nmol*(nmol+1)/2))
        allocate(ib(nmol),pb(nmol),ibb(nmol*(nmol+1)/2))
        allocate(jbb(nmol*(nmol+1)/2),kbb(nmol*(nmol+1)/2))
        allocate(lbb(nmol*(nmol+1)/2),pbb(nmol*(nmol+1)/2))
        endif
        na=0
        nb=0
        naa=0
        nbb=0
        nab=0
        nmola=nmol
        do imol=1,nmol
           if(occ(1,imol).gt.0.0d0) then
              na=na+1
              pa(na)=1.0d0
              if(ifno) then
                 pa(na)=occ(1,imol)
              endif
              ia(na)=indij(imol)+imol
              do jmol=imol,nmol
                 if(occ(1,jmol).gt.0.0d0) then
                    naa=naa+1
                    paa(naa)=1.0d0
                    iaa(naa)=imol
                    jaa(naa)=jmol
                    kaa(naa)=imol
                    laa(naa)=jmol
                    if(ifno) then
                       tota=occ(1,jmol)*occ(1,imol)
                       paa(naa)=tota
                    endif
                 endif
              enddo
           endif
        enddo
      endif
      close(unit=12)
      return
      end   
