From 2d8b0089f396ef0213d77bac46bf7ce080aed8e1 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Sat, 13 Jan 2018 18:43:34 +0100 Subject: [PATCH] Fixes #223 (#226) --- plugins/read_integral/NEEDED_CHILDREN_MODULES | 2 +- .../read_integral/print_integrals_mo.irp.f | 14 ++++---- plugins/read_integral/read_integrals_mo.irp.f | 36 +++++++++++++++++++ 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/plugins/read_integral/NEEDED_CHILDREN_MODULES b/plugins/read_integral/NEEDED_CHILDREN_MODULES index e492a3ce..566762ba 100644 --- a/plugins/read_integral/NEEDED_CHILDREN_MODULES +++ b/plugins/read_integral/NEEDED_CHILDREN_MODULES @@ -1 +1 @@ -Integrals_Monoelec Integrals_Bielec +Integrals_Monoelec Integrals_Bielec Hartree_Fock diff --git a/plugins/read_integral/print_integrals_mo.irp.f b/plugins/read_integral/print_integrals_mo.irp.f index 45745c13..2381da52 100644 --- a/plugins/read_integral/print_integrals_mo.irp.f +++ b/plugins/read_integral/print_integrals_mo.irp.f @@ -44,14 +44,12 @@ program print_integrals do l=1,mo_tot_num do k=1,mo_tot_num do j=l,mo_tot_num - do i=k,mo_tot_num - if (i>=j) then - double precision :: get_mo_bielec_integral - integral = get_mo_bielec_integral(i,j,k,l,mo_integrals_map) - if (dabs(integral) > mo_integrals_threshold) then - write (iunit,'(4(I6,X),E25.15)') i,j,k,l, integral - endif - end if + do i=max(j,k),mo_tot_num + double precision :: get_mo_bielec_integral + integral = get_mo_bielec_integral(i,j,k,l,mo_integrals_map) + if (dabs(integral) > mo_integrals_threshold) then + write (iunit,'(4(I6,X),E25.15)') i,j,k,l, integral + endif enddo enddo enddo diff --git a/plugins/read_integral/read_integrals_mo.irp.f b/plugins/read_integral/read_integrals_mo.irp.f index a2d1cb6b..c021941c 100644 --- a/plugins/read_integral/read_integrals_mo.irp.f +++ b/plugins/read_integral/read_integrals_mo.irp.f @@ -5,8 +5,44 @@ program read_integrals ! - nuclear_mo ! - bielec_mo END_DOC + + integer :: iunit + integer :: getunitandopen + integer :: i,j,n + PROVIDE ezfio_filename call ezfio_set_integrals_monoelec_disk_access_mo_one_integrals("None") + + logical :: has + call ezfio_has_mo_basis_mo_tot_num(has) + if (.not.has) then + + iunit = getunitandopen('nuclear_mo','r') + n=0 + do + read (iunit,*,end=12) i + n = max(n,i) + enddo + 12 continue + close(iunit) + call ezfio_set_mo_basis_mo_tot_num(n) + + call ezfio_has_ao_basis_ao_num(has) + mo_label = "None" + if (has) then + call huckel_guess + else + call ezfio_set_ao_basis_ao_num(n) + double precision, allocatable :: X(:,:) + allocate (X(n,n)) + X = 0.d0 + do i=1,n + X(i,i) = 1.d0 + enddo + call ezfio_set_mo_basis_mo_coef(X) + call save_mos + endif + endif call run end