subroutine print_sl_eigenvecs() use bit_rep_data, only: nifd use util_mod, only: get_free_unit integer :: ndets_this_proc, ndets_tot integer :: k, idet, iproc, iunit, ierr ndets_this_proc = ndets_sl(iProcIndex) ndets_tot = sum(ndets_sl) allocate(full_eigenvecs(ndets_this_proc, ndets_tot)) ! The following operation returns the components of the eigenvectors in ! the full basis in the columns of full_eigenvecs. ! sl_hamil will now store the eigenvectors in the Lanczos basis in its ! columns. sl_vecs stores the components of the Lanczos vectors in the ! full basis in its columns. full_eigenvecs = matmul(sl_vecs, sl_hamil) if (iProcIndex == root) then iunit = get_free_unit() open(iunit, file='EIGENVECS', status='replace', recl=50000) end if do iproc = 0, nProcessors - 1 if (iproc == iProcIndex) then do idet = 1, ndets_this_proc do k = 0, nifd write(iunit, '(i12)', advance='no') sl_ilut_list(k, idet) end do do k = 1, n_lanc_vecs_sl write(iunit, '(f18.8)', advance='no') full_eigenvecs(idet, k) end do write(iunit, '()') end do end if call MPIBarrier(ierr) end do if (iProcIndex == root) close(iunit) deallocate(full_eigenvecs) end subroutine print_sl_eigenvecs