10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-12-23 04:43:50 +01:00

Merge branch 'master' of github.com:LCPQ/quantum_package

This commit is contained in:
Anthony Scemama 2014-06-08 23:58:00 +02:00
commit fd5a6ce174
18 changed files with 193 additions and 82 deletions

View File

@ -203,5 +203,8 @@ def main():
if __name__ == '__main__':
main()
try:
main()
except:
pass

View File

@ -23,7 +23,9 @@ export QPACKAGE_ROOT=${QPACKAGE_ROOT}
export PYTHONPATH+=:\${QPACKAGE_ROOT}/scripts
export PATH+=:\${QPACKAGE_ROOT}/scripts
export PATH+=:\${QPACKAGE_ROOT}/bin
export QPACKAGE_CACHE_URL="http://qmcchem.ups-tlse.fr/files/scemama/quantum_package/cache"
export QPACKAGE_CACHE_URL="http://qmcchem.ups-tlse.fr/files/scemama/quantum_package/cache
export PATH+=:${QPACKAGE_ROOT}/irpf90/bin/
"
EOF
source quantum_package.rc

View File

@ -11,7 +11,6 @@ BEGIN_PROVIDER [ logical, write_mo_integrals ]
call ezfio_get_bielec_integrals_write_mo_integrals(write_mo_integrals)
else
write_mo_integrals = .False.
call ezfio_set_bielec_integrals_write_mo_integrals(write_mo_integrals)
endif
END_PROVIDER
@ -29,7 +28,6 @@ BEGIN_PROVIDER [ logical, write_ao_integrals ]
call ezfio_get_bielec_integrals_write_ao_integrals(write_ao_integrals)
else
write_ao_integrals = .False.
call ezfio_set_bielec_integrals_write_ao_integrals(write_ao_integrals)
endif
END_PROVIDER
@ -47,7 +45,6 @@ BEGIN_PROVIDER [ logical, read_mo_integrals ]
call ezfio_get_bielec_integrals_read_mo_integrals(read_mo_integrals)
else
read_mo_integrals = .False.
call ezfio_set_bielec_integrals_read_mo_integrals(read_mo_integrals)
endif
END_PROVIDER
@ -65,7 +62,6 @@ BEGIN_PROVIDER [ logical, read_ao_integrals ]
call ezfio_get_bielec_integrals_read_ao_integrals(read_ao_integrals)
else
read_ao_integrals = .False.
call ezfio_set_bielec_integrals_read_ao_integrals(read_ao_integrals)
endif
END_PROVIDER
@ -82,8 +78,7 @@ BEGIN_PROVIDER [ double precision, ao_integrals_threshold ]
if (has) then
call ezfio_get_bielec_integrals_threshold_ao(ao_integrals_threshold)
else
ao_integrals_threshold = 1.d-15
call ezfio_set_bielec_integrals_threshold_ao(ao_integrals_threshold)
ao_integrals_threshold = 1.d-12
endif
END_PROVIDER
@ -102,7 +97,6 @@ BEGIN_PROVIDER [ double precision, mo_integrals_threshold ]
call ezfio_get_bielec_integrals_threshold_mo(mo_integrals_threshold)
else
mo_integrals_threshold = 1.d-11
call ezfio_set_bielec_integrals_threshold_mo(mo_integrals_threshold)
endif
END_PROVIDER
@ -121,7 +115,6 @@ BEGIN_PROVIDER [ logical, do_direct_integrals ]
call ezfio_get_bielec_integrals_direct(do_direct_integrals)
else
do_direct_integrals = .False.
call ezfio_set_bielec_integrals_direct(do_direct_integrals)
endif
END_PROVIDER

View File

@ -80,9 +80,6 @@ BEGIN_PROVIDER [ integer, N_generators_bitmask ]
endif
else
N_generators_bitmask = 1
call ezfio_set_bitmasks_N_int(N_int)
call ezfio_set_bitmasks_bit_kind(bit_kind)
call ezfio_set_bitmasks_N_mask_gen(N_generators_bitmask)
endif
ASSERT (N_generators_bitmask > 0)
@ -118,7 +115,6 @@ BEGIN_PROVIDER [ integer(bit_kind), generators_bitmask, (N_int,2,6,N_generators_
generators_bitmask(:,ispin,d_part2,k) = full_ijkl_bitmask(:,d_part2)
enddo
enddo
call ezfio_set_bitmasks_generators(generators_bitmask)
endif
END_PROVIDER
@ -148,9 +144,6 @@ BEGIN_PROVIDER [ integer, N_reference_bitmask ]
endif
else
N_reference_bitmask = 1
call ezfio_set_bitmasks_N_int(N_int)
call ezfio_set_bitmasks_bit_kind(bit_kind)
call ezfio_set_bitmasks_N_mask_ref(N_reference_bitmask)
endif
ASSERT (N_reference_bitmask > 0)
@ -174,7 +167,6 @@ BEGIN_PROVIDER [ integer(bit_kind), reference_bitmask, (N_int,2,2,N_reference_bi
reference_bitmask(:,:,d_part1,1) = iand(not(HF_bitmask(:,:)),full_ijkl_bitmask(:,:))
reference_bitmask(:,:,d_hole2,1) = HF_bitmask
reference_bitmask(:,:,d_part2,1) = iand(not(HF_bitmask(:,:)),full_ijkl_bitmask(:,:))
call ezfio_set_bitmasks_reference(reference_bitmask)
endif
END_PROVIDER

View File

@ -11,7 +11,6 @@ BEGIN_PROVIDER [ integer , n_state_cis ]
call ezfio_get_cis_dressed_n_state_cis(n_state_cis)
else
n_state_cis = 5
call ezfio_set_cis_dressed_n_state_cis(n_state_cis)
endif
END_PROVIDER
@ -29,7 +28,6 @@ BEGIN_PROVIDER [ integer , n_core_cis]
call ezfio_get_cis_dressed_n_core_cis(n_core_cis)
else
n_core_cis = 0
call ezfio_set_cis_dressed_n_core_cis(n_core_cis)
endif
END_PROVIDER
@ -47,7 +45,6 @@ BEGIN_PROVIDER [ integer , n_act_cis]
call ezfio_get_cis_dressed_n_act_cis(n_act_cis)
else
n_act_cis = mo_tot_num
call ezfio_set_cis_dressed_n_act_cis(n_act_cis)
endif
END_PROVIDER
@ -65,7 +62,6 @@ BEGIN_PROVIDER [ logical , mp2_dressing]
call ezfio_get_cis_dressed_mp2_dressing(mp2_dressing)
else
mp2_dressing = .False.
call ezfio_set_cis_dressed_mp2_dressing(mp2_dressing)
endif
END_PROVIDER
@ -83,7 +79,6 @@ BEGIN_PROVIDER [ logical , standard_doubles]
call ezfio_get_cis_dressed_standard_doubles(standard_doubles)
else
standard_doubles = .True.
call ezfio_set_cis_dressed_standard_doubles(standard_doubles)
endif
END_PROVIDER

View File

@ -53,7 +53,6 @@ BEGIN_PROVIDER [ double precision, H_apply_threshold ]
call ezfio_get_determinants_H_apply_threshold(H_apply_threshold)
else
H_apply_threshold = 1.d-10
call ezfio_set_determinants_H_apply_threshold(H_apply_threshold)
endif
call write_time(output_Dets)
call write_double(output_Dets, H_apply_threshold, &

View File

@ -31,10 +31,9 @@ subroutine $subroutine_diexc(key_in, hole_1,particl_1, hole_2, particl_2, i_gene
integer :: iproc
integer(omp_lock_kind), save :: lck, ifirst=0
if (ifirst == 0) then
ifirst=1
!$ call omp_init_lock(lck)
ifirst=1
endif
PROVIDE H_apply_threshold
$initialization
@ -279,7 +278,6 @@ subroutine $subroutine_monoexc(key_in, hole_1,particl_1,i_generator $parameters
ifirst=1
!$ call omp_init_lock(lck)
endif
PROVIDE H_apply_threshold
$initialization
@ -383,7 +381,7 @@ subroutine $subroutine($params_main)
integer :: ispin, k
PROVIDE H_apply_buffer_allocated mo_bielec_integrals_in_map N_det_selectors psi_generators
PROVIDE psi_det_sorted_bit coef_hf_selector
PROVIDE psi_det_sorted_bit coef_hf_selector psi_det psi_coef H_apply_threshold
nmax = ( N_det_generators/nproc ) *nproc
call wall_time(wall_1)

View File

@ -152,7 +152,7 @@ Documentation
`davidson_threshold <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/davidson.irp.f#L374>`_
Can be : [ energy | residual | both | wall_time | cpu_time | iterations ]
`det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L195>`_
`det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L273>`_
Return an integer*8 corresponding to a determinant index for searching
`n_det <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L20>`_
@ -164,20 +164,20 @@ Documentation
`n_states <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L3>`_
Number of states to consider
`psi_average_norm_contrib <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L108>`_
`psi_average_norm_contrib <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L186>`_
Contribution of determinants to the state-averaged density
`psi_average_norm_contrib_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L129>`_
`psi_average_norm_contrib_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L207>`_
Wave function sorted by determinants contribution to the norm (state-averaged)
`psi_coef <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L86>`_
`psi_coef <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L150>`_
The wave function coefficients. Initialized with Hartree-Fock if the EZFIO file
is empty
`psi_coef_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L128>`_
`psi_coef_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L206>`_
Wave function sorted by determinants contribution to the norm (state-averaged)
`psi_coef_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L159>`_
`psi_coef_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L237>`_
Determinants on which we apply <i|H|psi> for perturbation.
o They are sorted by determinants interpreted as integers. Useful
to accelerate the search of a determinant
@ -189,14 +189,20 @@ Documentation
`psi_det_size <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L56>`_
Size of the psi_det/psi_coef arrays
`psi_det_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L127>`_
`psi_det_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L205>`_
Wave function sorted by determinants contribution to the norm (state-averaged)
`psi_det_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L158>`_
`psi_det_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L236>`_
Determinants on which we apply <i|H|psi> for perturbation.
o They are sorted by determinants interpreted as integers. Useful
to accelerate the search of a determinant
`read_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L107>`_
Reads the determinants from the EZFIO file
`save_wavefunction <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L288>`_
Save the wave function into the EZFIO file
`double_exc_bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants_bitmasks.irp.f#L40>`_
double_exc_bitmask(:,1,i) is the bitmask for holes of excitation 1
double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1

View File

@ -1,10 +1,10 @@
determinants
N_int integer
n_int integer
bit_kind integer
n_det integer
n_states integer
psi_coef double precision (determinants_n_det,determinants_n_states)
psi_det integer*8 (determinants_N_int*determinants_bit_kind/8,2,determinants_n_det)
psi_det integer*8 (determinants_n_int*determinants_bit_kind/8,2,determinants_n_det)
H_apply_threshold double precision
n_det_max_jacobi integer
threshold_generators double precision

View File

@ -12,7 +12,6 @@ BEGIN_PROVIDER [ integer, N_states ]
call ezfio_get_determinants_n_states(N_states)
else
N_states = 1
call ezfio_set_determinants_n_states(N_states)
endif
ASSERT (N_states > 0)
END_PROVIDER
@ -29,7 +28,6 @@ BEGIN_PROVIDER [ integer, N_det ]
call ezfio_get_determinants_n_det(N_det)
else
N_det = 1
call ezfio_set_determinants_n_det(N_det)
endif
ASSERT (N_det > 0)
END_PROVIDER
@ -46,8 +44,7 @@ BEGIN_PROVIDER [ integer, N_det_max_jacobi ]
if (exists) then
call ezfio_get_determinants_n_det_max_jacobi(N_det_max_jacobi)
else
N_det_max_jacobi = 1500
call ezfio_set_determinants_n_det_max_jacobi(N_det_max_jacobi)
N_det_max_jacobi = 2000
endif
ASSERT (N_det_max_jacobi > 0)
END_PROVIDER
@ -58,50 +55,131 @@ BEGIN_PROVIDER [ integer, psi_det_size ]
BEGIN_DOC
! Size of the psi_det/psi_coef arrays
END_DOC
psi_det_size = 1000*N_states
PROVIDE ezfio_filename
logical :: exists
call ezfio_has_determinants_n_det(exists)
if (exists) then
call ezfio_get_determinants_n_det(psi_det_size)
else
psi_det_size = 1
endif
psi_det_size = max(psi_det_size,10000)
END_PROVIDER
BEGIN_PROVIDER [ integer(bit_kind), psi_det, (N_int,2,psi_det_size) ]
BEGIN_PROVIDER [ integer(bit_kind), psi_det, (N_int,2,psi_det_size) ]
implicit none
BEGIN_DOC
! The wave function determinants. Initialized with Hartree-Fock if the EZFIO file
! is empty
END_DOC
integer :: i
logical :: exists
integer, save :: ifirst = 0
call ezfio_has_determinants_N_int(exists)
if (exists) then
call ezfio_has_determinants_bit_kind(exists)
if (exists) then
call ezfio_has_determinants_N_det(exists)
if (exists) then
call ezfio_has_determinants_N_states(exists)
if (exists) then
call ezfio_has_determinants_psi_det(exists)
endif
endif
endif
endif
if (ifirst == 0) then
ifirst = 1
psi_det = 0_bit_kind
endif
integer :: i
do i=1,N_int
psi_det(i,1,1) = HF_bitmask(i,1)
psi_det(i,2,1) = HF_bitmask(i,2)
enddo
if (exists) then
call read_dets(psi_det,N_int,N_det)
else
psi_det = 0_bit_kind
do i=1,N_int
psi_det(i,1,1) = HF_bitmask(i,1)
psi_det(i,2,1) = HF_bitmask(i,2)
enddo
endif
END_PROVIDER
subroutine read_dets(det,Nint,Ndet)
use bitmasks
implicit none
BEGIN_DOC
! Reads the determinants from the EZFIO file
END_DOC
integer, intent(in) :: Nint,Ndet
integer(bit_kind), intent(out) :: det(Nint,2,Ndet)
integer*8, allocatable :: psi_det_read(:,:,:)
double precision, allocatable :: psi_coef_read(:,:)
integer*8 :: det_8(100)
integer(bit_kind) :: det_bk((100*8)/bit_kind)
integer :: N_int2
integer :: i,k
equivalence (det_8, det_bk)
call ezfio_get_determinants_N_int(N_int2)
ASSERT (N_int2 == Nint)
call ezfio_get_determinants_bit_kind(k)
ASSERT (k == bit_kind)
N_int2 = (Nint*bit_kind)/8
allocate (psi_det_read(N_int2,2,Ndet))
call ezfio_get_determinants_psi_det (psi_det_read)
do i=1,Ndet
do k=1,N_int2
det_8(k) = psi_det_read(k,1,i)
enddo
do k=1,Nint
det(k,1,i) = det_bk(k)
enddo
do k=1,N_int2
det_8(k) = psi_det_read(k,2,i)
enddo
do k=1,Nint
det(k,2,i) = det_bk(k)
enddo
enddo
deallocate(psi_det_read)
end
BEGIN_PROVIDER [ double precision, psi_coef, (psi_det_size,N_states) ]
implicit none
BEGIN_DOC
! The wave function coefficients. Initialized with Hartree-Fock if the EZFIO file
! is empty
END_DOC
integer, save :: ifirst = 0
integer :: i
if (ifirst == 0) then
ifirst = 1
implicit none
BEGIN_DOC
! The wave function coefficients. Initialized with Hartree-Fock if the EZFIO file
! is empty
END_DOC
integer :: i,k, N_int2
logical :: exists
double precision, allocatable :: psi_coef_read(:,:)
call ezfio_has_determinants_psi_coef(exists)
if (exists) then
allocate (psi_coef_read(N_det,N_states))
call ezfio_get_determinants_psi_coef(psi_coef_read)
do k=1,N_states
do i=1,N_det
psi_coef(i,k) = psi_coef_read(i,k)
enddo
enddo
deallocate(psi_coef_read)
else
psi_coef = 0.d0
endif
do i=1,N_states
psi_coef(i,i) = 1.d0
enddo
do i=1,N_states
psi_coef(i,i) = 1.d0
enddo
endif
END_PROVIDER
@ -206,3 +284,52 @@ integer*8 function det_search_key(det,Nint)
det_search_key = ieor(det_search_key,iand(det(i,1),det(i,2)))
enddo
end
subroutine save_wavefunction
implicit none
BEGIN_DOC
! Save the wave function into the EZFIO file
END_DOC
integer*8, allocatable :: psi_det_save(:,:,:)
double precision, allocatable :: psi_coef_save(:,:)
integer*8 :: det_8(100)
integer(bit_kind) :: det_bk((100*8)/bit_kind)
integer :: N_int2
equivalence (det_8, det_bk)
integer :: i,k
call ezfio_set_determinants_N_int(N_int)
call ezfio_set_determinants_bit_kind(bit_kind)
call ezfio_set_determinants_N_det(N_det)
call ezfio_set_determinants_N_states(N_states)
N_int2 = (N_int*bit_kind)/8
allocate (psi_det_save(N_int2,2,N_det))
do i=1,N_det
do k=1,N_int
det_bk(k) = psi_det_sorted(k,1,i)
enddo
do k=1,N_int2
psi_det_save(k,1,i) = det_8(k)
enddo
do k=1,N_int
det_bk(k) = psi_det(k,2,i)
enddo
do k=1,N_int2
psi_det_save(k,2,i) = det_8(k)
enddo
enddo
call ezfio_set_determinants_psi_det(psi_det_save)
deallocate (psi_det_save)
allocate (psi_coef_save(N_det,N_states))
do k=1,N_states
do i=1,N_det
psi_coef_save(i,k) = psi_coef_sorted(i,k)
enddo
enddo
call ezfio_set_determinants_psi_coef(psi_coef_save)
deallocate (psi_coef_save)
end

View File

@ -10,9 +10,6 @@ Documentation
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
`cisd <http://github.com/LCPQ/quantum_package/tree/master/src/Full_CI/full_ci.irp.f#L1>`_
Undocumented
Needed Modules

View File

@ -14,6 +14,7 @@ program cisd
do while (maxval(abs(pt2(1:N_st))) > 1.d-3)
call H_apply_FCI(pt2, norm_pert, H_pert_diag, N_st)
call diagonalize_CI
call save_wavefunction
print *, 'N_det = ', N_det
print *, 'N_states = ', N_states
print *, 'PT2 = ', pt2

View File

@ -13,7 +13,6 @@ BEGIN_PROVIDER [ double precision, threshold_generators ]
call ezfio_get_determinants_threshold_generators(threshold_generators)
else
threshold_generators = 0.99d0
call ezfio_set_determinants_threshold_generators(threshold_generators)
endif
ASSERT (N_det > 0)
call write_double(output_Dets,threshold_generators,'Threshold on generators')

View File

@ -11,7 +11,6 @@ BEGIN_PROVIDER [ double precision,thresh_SCF ]
call ezfio_get_Hartree_Fock_thresh_SCF(thresh_SCF)
else
thresh_SCF = 1.d-10
call ezfio_set_Hartree_Fock_thresh_SCF(thresh_SCF)
endif
call write_time(output_Hartree_Fock)
call write_double(output_Hartree_Fock, thresh_SCF, &
@ -32,7 +31,6 @@ BEGIN_PROVIDER [ integer, n_it_scf_max]
call ezfio_get_Hartree_Fock_n_it_scf_max(n_it_scf_max)
else
n_it_scf_max = 30
call ezfio_set_Hartree_Fock_n_it_scf_max(n_it_scf_max)
endif
END_PROVIDER
@ -51,7 +49,6 @@ BEGIN_PROVIDER [ logical, do_DIIS ]
call ezfio_get_Hartree_Fock_DIIS(do_DIIS)
else
do_DIIS = .False.
call ezfio_set_Hartree_Fock_DIIS(do_DIIS)
endif
END_PROVIDER

View File

@ -39,7 +39,6 @@ END_PROVIDER
call ezfio_get_mo_basis_mo_label(mo_label)
else
mo_label = 'no_label'
call ezfio_set_mo_basis_mo_label(mo_label)
endif
! Coefs

View File

@ -125,3 +125,7 @@ test:
# Dummy rule to enable to force recompilation
FORCE:
clena: clean
vercylean: veryclean
veryclena: veryclean

View File

@ -5,7 +5,7 @@ DEBUG = 0
IRPF90_FLAGS+= --align=32
FC = ifort -g
FCFLAGS=
FCFLAGS+= -axAVX,SSE4.3
FCFLAGS+= -axAVX,SSE4.2
FCFLAGS+= -O2
FCFLAGS+= -ip
FCFLAGS+= -opt-prefetch

View File

@ -13,7 +13,6 @@ BEGIN_PROVIDER [ double precision, threshold_selectors ]
call ezfio_get_determinants_threshold_selectors(threshold_selectors)
else
threshold_selectors = 0.99d0
call ezfio_set_determinants_threshold_selectors(threshold_selectors)
endif
ASSERT (N_det > 0)
call write_double(output_Dets,threshold_selectors,'Threshold on selectors')