BEGIN_PROVIDER [ double precision, t1_guess, (spin_occ_num,spin_vir_num) ] implicit none BEGIN_DOC ! Guess amplitudes for single excitations END_DOC t1_guess(:,:) = 0d0 if (cc_guess == 1) then integer :: iunit integer, external :: getunitandopen character :: check integer :: i, a double precision :: amplitude iunit = getunitandopen('t1','r') read(iunit,*) do read(iunit,*,err=10) i, a, amplitude i = 2*i-1 a = 2*a-1 - spin_occ_num t1_guess(i,a) = amplitude enddo 10 continue do read(iunit,*,end=20) i, a, amplitude i = 2*i a = 2*a - spin_occ_num t1_guess(i,a) = amplitude enddo 20 continue close(iunit) else if (cc_guess == 2) then call random_number(t1_guess) t1_guess *= 1.d-3 endif END_PROVIDER BEGIN_PROVIDER [ double precision, t2_guess, (spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num) ] implicit none BEGIN_DOC ! Guess amplitudes for double excitations END_DOC t2_guess(:,:,:,:) = -OOVV(:,:,:,:)/delta_OOVV(:,:,:,:) if (cc_guess == 1) then integer :: iunit integer, external :: getunitandopen character :: check integer :: i, j, a, b double precision :: amplitude iunit = getunitandopen('t2','r') read(iunit,*) do read(iunit,*,err=10) i, j, a, b, amplitude i = 2*i-1 j = 2*j-1 a = 2*a-1 - spin_occ_num b = 2*b-1 - spin_occ_num !100 format (4(I3,X), 2(F20.10,X)) !print 100, i,j,a,b,t2_guess(i,j,a,b) , amplitude t2_guess(i,j,a,b) = amplitude enddo 10 continue do read(iunit,*,err=20) i, j, a, b, amplitude i = 2*i j = 2*j a = 2*a - spin_occ_num b = 2*b - spin_occ_num !print 100, i,j,a,b,t2_guess(i,j,a,b) , amplitude t2_guess(i,j,a,b) = amplitude enddo 20 continue do read(iunit,*,end=30) i, j, a, b, amplitude i = 2*i-1 j = 2*j a = 2*a-1 - spin_occ_num b = 2*b - spin_occ_num !print 100, i,j,a,b,t2_guess(i,j,a,b) , amplitude t2_guess(i,j,a,b) = amplitude !print 100, i,j,a,b,t2_guess(i,j,b,a) , -amplitude t2_guess(i,j,b,a) = -amplitude i = i+1 j = j-1 a = a+1 b = b-1 !print 100, i,j,a,b,t2_guess(i,j,a,b) , amplitude t2_guess(i,j,a,b) = amplitude !print 100, i,j,a,b,t2_guess(i,j,b,a) , -amplitude t2_guess(i,j,b,a) = -amplitude enddo 30 continue close(iunit) else if (cc_guess == 2) then call random_number(t2_guess) t2_guess *= 1.d-3 endif END_PROVIDER