mirror of
https://github.com/LCPQ/quantum_package
synced 2024-09-01 17:13:42 +02:00
Merge branch 'master' of github.com:LCPQ/quantum_package
This commit is contained in:
commit
fd5a6ce174
@ -203,5 +203,8 @@ def main():
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
main()
|
main()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@ -23,7 +23,9 @@ export QPACKAGE_ROOT=${QPACKAGE_ROOT}
|
|||||||
export PYTHONPATH+=:\${QPACKAGE_ROOT}/scripts
|
export PYTHONPATH+=:\${QPACKAGE_ROOT}/scripts
|
||||||
export PATH+=:\${QPACKAGE_ROOT}/scripts
|
export PATH+=:\${QPACKAGE_ROOT}/scripts
|
||||||
export PATH+=:\${QPACKAGE_ROOT}/bin
|
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
|
EOF
|
||||||
|
|
||||||
source quantum_package.rc
|
source quantum_package.rc
|
||||||
|
@ -11,7 +11,6 @@ BEGIN_PROVIDER [ logical, write_mo_integrals ]
|
|||||||
call ezfio_get_bielec_integrals_write_mo_integrals(write_mo_integrals)
|
call ezfio_get_bielec_integrals_write_mo_integrals(write_mo_integrals)
|
||||||
else
|
else
|
||||||
write_mo_integrals = .False.
|
write_mo_integrals = .False.
|
||||||
call ezfio_set_bielec_integrals_write_mo_integrals(write_mo_integrals)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -29,7 +28,6 @@ BEGIN_PROVIDER [ logical, write_ao_integrals ]
|
|||||||
call ezfio_get_bielec_integrals_write_ao_integrals(write_ao_integrals)
|
call ezfio_get_bielec_integrals_write_ao_integrals(write_ao_integrals)
|
||||||
else
|
else
|
||||||
write_ao_integrals = .False.
|
write_ao_integrals = .False.
|
||||||
call ezfio_set_bielec_integrals_write_ao_integrals(write_ao_integrals)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -47,7 +45,6 @@ BEGIN_PROVIDER [ logical, read_mo_integrals ]
|
|||||||
call ezfio_get_bielec_integrals_read_mo_integrals(read_mo_integrals)
|
call ezfio_get_bielec_integrals_read_mo_integrals(read_mo_integrals)
|
||||||
else
|
else
|
||||||
read_mo_integrals = .False.
|
read_mo_integrals = .False.
|
||||||
call ezfio_set_bielec_integrals_read_mo_integrals(read_mo_integrals)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -65,7 +62,6 @@ BEGIN_PROVIDER [ logical, read_ao_integrals ]
|
|||||||
call ezfio_get_bielec_integrals_read_ao_integrals(read_ao_integrals)
|
call ezfio_get_bielec_integrals_read_ao_integrals(read_ao_integrals)
|
||||||
else
|
else
|
||||||
read_ao_integrals = .False.
|
read_ao_integrals = .False.
|
||||||
call ezfio_set_bielec_integrals_read_ao_integrals(read_ao_integrals)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -82,8 +78,7 @@ BEGIN_PROVIDER [ double precision, ao_integrals_threshold ]
|
|||||||
if (has) then
|
if (has) then
|
||||||
call ezfio_get_bielec_integrals_threshold_ao(ao_integrals_threshold)
|
call ezfio_get_bielec_integrals_threshold_ao(ao_integrals_threshold)
|
||||||
else
|
else
|
||||||
ao_integrals_threshold = 1.d-15
|
ao_integrals_threshold = 1.d-12
|
||||||
call ezfio_set_bielec_integrals_threshold_ao(ao_integrals_threshold)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -102,7 +97,6 @@ BEGIN_PROVIDER [ double precision, mo_integrals_threshold ]
|
|||||||
call ezfio_get_bielec_integrals_threshold_mo(mo_integrals_threshold)
|
call ezfio_get_bielec_integrals_threshold_mo(mo_integrals_threshold)
|
||||||
else
|
else
|
||||||
mo_integrals_threshold = 1.d-11
|
mo_integrals_threshold = 1.d-11
|
||||||
call ezfio_set_bielec_integrals_threshold_mo(mo_integrals_threshold)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -121,7 +115,6 @@ BEGIN_PROVIDER [ logical, do_direct_integrals ]
|
|||||||
call ezfio_get_bielec_integrals_direct(do_direct_integrals)
|
call ezfio_get_bielec_integrals_direct(do_direct_integrals)
|
||||||
else
|
else
|
||||||
do_direct_integrals = .False.
|
do_direct_integrals = .False.
|
||||||
call ezfio_set_bielec_integrals_direct(do_direct_integrals)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
@ -80,9 +80,6 @@ BEGIN_PROVIDER [ integer, N_generators_bitmask ]
|
|||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
N_generators_bitmask = 1
|
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
|
endif
|
||||||
ASSERT (N_generators_bitmask > 0)
|
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)
|
generators_bitmask(:,ispin,d_part2,k) = full_ijkl_bitmask(:,d_part2)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
call ezfio_set_bitmasks_generators(generators_bitmask)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -148,9 +144,6 @@ BEGIN_PROVIDER [ integer, N_reference_bitmask ]
|
|||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
N_reference_bitmask = 1
|
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
|
endif
|
||||||
ASSERT (N_reference_bitmask > 0)
|
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_part1,1) = iand(not(HF_bitmask(:,:)),full_ijkl_bitmask(:,:))
|
||||||
reference_bitmask(:,:,d_hole2,1) = HF_bitmask
|
reference_bitmask(:,:,d_hole2,1) = HF_bitmask
|
||||||
reference_bitmask(:,:,d_part2,1) = iand(not(HF_bitmask(:,:)),full_ijkl_bitmask(:,:))
|
reference_bitmask(:,:,d_part2,1) = iand(not(HF_bitmask(:,:)),full_ijkl_bitmask(:,:))
|
||||||
call ezfio_set_bitmasks_reference(reference_bitmask)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
@ -11,7 +11,6 @@ BEGIN_PROVIDER [ integer , n_state_cis ]
|
|||||||
call ezfio_get_cis_dressed_n_state_cis(n_state_cis)
|
call ezfio_get_cis_dressed_n_state_cis(n_state_cis)
|
||||||
else
|
else
|
||||||
n_state_cis = 5
|
n_state_cis = 5
|
||||||
call ezfio_set_cis_dressed_n_state_cis(n_state_cis)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -29,7 +28,6 @@ BEGIN_PROVIDER [ integer , n_core_cis]
|
|||||||
call ezfio_get_cis_dressed_n_core_cis(n_core_cis)
|
call ezfio_get_cis_dressed_n_core_cis(n_core_cis)
|
||||||
else
|
else
|
||||||
n_core_cis = 0
|
n_core_cis = 0
|
||||||
call ezfio_set_cis_dressed_n_core_cis(n_core_cis)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -47,7 +45,6 @@ BEGIN_PROVIDER [ integer , n_act_cis]
|
|||||||
call ezfio_get_cis_dressed_n_act_cis(n_act_cis)
|
call ezfio_get_cis_dressed_n_act_cis(n_act_cis)
|
||||||
else
|
else
|
||||||
n_act_cis = mo_tot_num
|
n_act_cis = mo_tot_num
|
||||||
call ezfio_set_cis_dressed_n_act_cis(n_act_cis)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -65,7 +62,6 @@ BEGIN_PROVIDER [ logical , mp2_dressing]
|
|||||||
call ezfio_get_cis_dressed_mp2_dressing(mp2_dressing)
|
call ezfio_get_cis_dressed_mp2_dressing(mp2_dressing)
|
||||||
else
|
else
|
||||||
mp2_dressing = .False.
|
mp2_dressing = .False.
|
||||||
call ezfio_set_cis_dressed_mp2_dressing(mp2_dressing)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -83,7 +79,6 @@ BEGIN_PROVIDER [ logical , standard_doubles]
|
|||||||
call ezfio_get_cis_dressed_standard_doubles(standard_doubles)
|
call ezfio_get_cis_dressed_standard_doubles(standard_doubles)
|
||||||
else
|
else
|
||||||
standard_doubles = .True.
|
standard_doubles = .True.
|
||||||
call ezfio_set_cis_dressed_standard_doubles(standard_doubles)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
@ -53,7 +53,6 @@ BEGIN_PROVIDER [ double precision, H_apply_threshold ]
|
|||||||
call ezfio_get_determinants_H_apply_threshold(H_apply_threshold)
|
call ezfio_get_determinants_H_apply_threshold(H_apply_threshold)
|
||||||
else
|
else
|
||||||
H_apply_threshold = 1.d-10
|
H_apply_threshold = 1.d-10
|
||||||
call ezfio_set_determinants_H_apply_threshold(H_apply_threshold)
|
|
||||||
endif
|
endif
|
||||||
call write_time(output_Dets)
|
call write_time(output_Dets)
|
||||||
call write_double(output_Dets, H_apply_threshold, &
|
call write_double(output_Dets, H_apply_threshold, &
|
||||||
|
@ -31,10 +31,9 @@ subroutine $subroutine_diexc(key_in, hole_1,particl_1, hole_2, particl_2, i_gene
|
|||||||
integer :: iproc
|
integer :: iproc
|
||||||
integer(omp_lock_kind), save :: lck, ifirst=0
|
integer(omp_lock_kind), save :: lck, ifirst=0
|
||||||
if (ifirst == 0) then
|
if (ifirst == 0) then
|
||||||
ifirst=1
|
|
||||||
!$ call omp_init_lock(lck)
|
!$ call omp_init_lock(lck)
|
||||||
|
ifirst=1
|
||||||
endif
|
endif
|
||||||
PROVIDE H_apply_threshold
|
|
||||||
|
|
||||||
$initialization
|
$initialization
|
||||||
|
|
||||||
@ -279,7 +278,6 @@ subroutine $subroutine_monoexc(key_in, hole_1,particl_1,i_generator $parameters
|
|||||||
ifirst=1
|
ifirst=1
|
||||||
!$ call omp_init_lock(lck)
|
!$ call omp_init_lock(lck)
|
||||||
endif
|
endif
|
||||||
PROVIDE H_apply_threshold
|
|
||||||
|
|
||||||
$initialization
|
$initialization
|
||||||
|
|
||||||
@ -383,7 +381,7 @@ subroutine $subroutine($params_main)
|
|||||||
integer :: ispin, k
|
integer :: ispin, k
|
||||||
|
|
||||||
PROVIDE H_apply_buffer_allocated mo_bielec_integrals_in_map N_det_selectors psi_generators
|
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
|
nmax = ( N_det_generators/nproc ) *nproc
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
|
@ -152,7 +152,7 @@ Documentation
|
|||||||
`davidson_threshold <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/davidson.irp.f#L374>`_
|
`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 ]
|
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
|
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>`_
|
`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>`_
|
`n_states <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L3>`_
|
||||||
Number of states to consider
|
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
|
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)
|
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
|
The wave function coefficients. Initialized with Hartree-Fock if the EZFIO file
|
||||||
is empty
|
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)
|
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.
|
Determinants on which we apply <i|H|psi> for perturbation.
|
||||||
o They are sorted by determinants interpreted as integers. Useful
|
o They are sorted by determinants interpreted as integers. Useful
|
||||||
to accelerate the search of a determinant
|
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>`_
|
`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
|
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)
|
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.
|
Determinants on which we apply <i|H|psi> for perturbation.
|
||||||
o They are sorted by determinants interpreted as integers. Useful
|
o They are sorted by determinants interpreted as integers. Useful
|
||||||
to accelerate the search of a determinant
|
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 <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(:,1,i) is the bitmask for holes of excitation 1
|
||||||
double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1
|
double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
determinants
|
determinants
|
||||||
N_int integer
|
n_int integer
|
||||||
bit_kind integer
|
bit_kind integer
|
||||||
n_det integer
|
n_det integer
|
||||||
n_states integer
|
n_states integer
|
||||||
psi_coef double precision (determinants_n_det,determinants_n_states)
|
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
|
H_apply_threshold double precision
|
||||||
n_det_max_jacobi integer
|
n_det_max_jacobi integer
|
||||||
threshold_generators double precision
|
threshold_generators double precision
|
||||||
|
@ -12,7 +12,6 @@ BEGIN_PROVIDER [ integer, N_states ]
|
|||||||
call ezfio_get_determinants_n_states(N_states)
|
call ezfio_get_determinants_n_states(N_states)
|
||||||
else
|
else
|
||||||
N_states = 1
|
N_states = 1
|
||||||
call ezfio_set_determinants_n_states(N_states)
|
|
||||||
endif
|
endif
|
||||||
ASSERT (N_states > 0)
|
ASSERT (N_states > 0)
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -29,7 +28,6 @@ BEGIN_PROVIDER [ integer, N_det ]
|
|||||||
call ezfio_get_determinants_n_det(N_det)
|
call ezfio_get_determinants_n_det(N_det)
|
||||||
else
|
else
|
||||||
N_det = 1
|
N_det = 1
|
||||||
call ezfio_set_determinants_n_det(N_det)
|
|
||||||
endif
|
endif
|
||||||
ASSERT (N_det > 0)
|
ASSERT (N_det > 0)
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -46,8 +44,7 @@ BEGIN_PROVIDER [ integer, N_det_max_jacobi ]
|
|||||||
if (exists) then
|
if (exists) then
|
||||||
call ezfio_get_determinants_n_det_max_jacobi(N_det_max_jacobi)
|
call ezfio_get_determinants_n_det_max_jacobi(N_det_max_jacobi)
|
||||||
else
|
else
|
||||||
N_det_max_jacobi = 1500
|
N_det_max_jacobi = 2000
|
||||||
call ezfio_set_determinants_n_det_max_jacobi(N_det_max_jacobi)
|
|
||||||
endif
|
endif
|
||||||
ASSERT (N_det_max_jacobi > 0)
|
ASSERT (N_det_max_jacobi > 0)
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -58,7 +55,16 @@ BEGIN_PROVIDER [ integer, psi_det_size ]
|
|||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Size of the psi_det/psi_coef arrays
|
! Size of the psi_det/psi_coef arrays
|
||||||
END_DOC
|
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
|
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) ]
|
||||||
@ -67,22 +73,79 @@ END_PROVIDER
|
|||||||
! The wave function determinants. Initialized with Hartree-Fock if the EZFIO file
|
! The wave function determinants. Initialized with Hartree-Fock if the EZFIO file
|
||||||
! is empty
|
! is empty
|
||||||
END_DOC
|
END_DOC
|
||||||
|
integer :: i
|
||||||
|
logical :: exists
|
||||||
|
|
||||||
integer, save :: ifirst = 0
|
call ezfio_has_determinants_N_int(exists)
|
||||||
|
if (exists) then
|
||||||
if (ifirst == 0) then
|
call ezfio_has_determinants_bit_kind(exists)
|
||||||
ifirst = 1
|
if (exists) then
|
||||||
psi_det = 0_bit_kind
|
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
|
endif
|
||||||
|
|
||||||
integer :: i
|
if (exists) then
|
||||||
|
call read_dets(psi_det,N_int,N_det)
|
||||||
|
else
|
||||||
|
psi_det = 0_bit_kind
|
||||||
do i=1,N_int
|
do i=1,N_int
|
||||||
psi_det(i,1,1) = HF_bitmask(i,1)
|
psi_det(i,1,1) = HF_bitmask(i,1)
|
||||||
psi_det(i,2,1) = HF_bitmask(i,2)
|
psi_det(i,2,1) = HF_bitmask(i,2)
|
||||||
enddo
|
enddo
|
||||||
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
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) ]
|
BEGIN_PROVIDER [ double precision, psi_coef, (psi_det_size,N_states) ]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -90,18 +153,33 @@ BEGIN_PROVIDER [ double precision, psi_coef, (psi_det_size,N_states) ]
|
|||||||
! is empty
|
! is empty
|
||||||
END_DOC
|
END_DOC
|
||||||
|
|
||||||
integer, save :: ifirst = 0
|
integer :: i,k, N_int2
|
||||||
integer :: i
|
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
|
||||||
|
|
||||||
if (ifirst == 0) then
|
|
||||||
ifirst = 1
|
|
||||||
psi_coef = 0.d0
|
psi_coef = 0.d0
|
||||||
endif
|
|
||||||
|
|
||||||
do i=1,N_states
|
do i=1,N_states
|
||||||
psi_coef(i,i) = 1.d0
|
psi_coef(i,i) = 1.d0
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
END_PROVIDER
|
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)))
|
det_search_key = ieor(det_search_key,iand(det(i,1),det(i,2)))
|
||||||
enddo
|
enddo
|
||||||
end
|
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
|
||||||
|
|
||||||
|
@ -10,9 +10,6 @@ Documentation
|
|||||||
.. Do not edit this section. It was auto-generated from the
|
.. Do not edit this section. It was auto-generated from the
|
||||||
.. NEEDED_MODULES file.
|
.. NEEDED_MODULES file.
|
||||||
|
|
||||||
`cisd <http://github.com/LCPQ/quantum_package/tree/master/src/Full_CI/full_ci.irp.f#L1>`_
|
|
||||||
Undocumented
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Needed Modules
|
Needed Modules
|
||||||
|
@ -14,6 +14,7 @@ program cisd
|
|||||||
do while (maxval(abs(pt2(1:N_st))) > 1.d-3)
|
do while (maxval(abs(pt2(1:N_st))) > 1.d-3)
|
||||||
call H_apply_FCI(pt2, norm_pert, H_pert_diag, N_st)
|
call H_apply_FCI(pt2, norm_pert, H_pert_diag, N_st)
|
||||||
call diagonalize_CI
|
call diagonalize_CI
|
||||||
|
call save_wavefunction
|
||||||
print *, 'N_det = ', N_det
|
print *, 'N_det = ', N_det
|
||||||
print *, 'N_states = ', N_states
|
print *, 'N_states = ', N_states
|
||||||
print *, 'PT2 = ', pt2
|
print *, 'PT2 = ', pt2
|
||||||
|
@ -13,7 +13,6 @@ BEGIN_PROVIDER [ double precision, threshold_generators ]
|
|||||||
call ezfio_get_determinants_threshold_generators(threshold_generators)
|
call ezfio_get_determinants_threshold_generators(threshold_generators)
|
||||||
else
|
else
|
||||||
threshold_generators = 0.99d0
|
threshold_generators = 0.99d0
|
||||||
call ezfio_set_determinants_threshold_generators(threshold_generators)
|
|
||||||
endif
|
endif
|
||||||
ASSERT (N_det > 0)
|
ASSERT (N_det > 0)
|
||||||
call write_double(output_Dets,threshold_generators,'Threshold on generators')
|
call write_double(output_Dets,threshold_generators,'Threshold on generators')
|
||||||
|
@ -11,7 +11,6 @@ BEGIN_PROVIDER [ double precision,thresh_SCF ]
|
|||||||
call ezfio_get_Hartree_Fock_thresh_SCF(thresh_SCF)
|
call ezfio_get_Hartree_Fock_thresh_SCF(thresh_SCF)
|
||||||
else
|
else
|
||||||
thresh_SCF = 1.d-10
|
thresh_SCF = 1.d-10
|
||||||
call ezfio_set_Hartree_Fock_thresh_SCF(thresh_SCF)
|
|
||||||
endif
|
endif
|
||||||
call write_time(output_Hartree_Fock)
|
call write_time(output_Hartree_Fock)
|
||||||
call write_double(output_Hartree_Fock, thresh_SCF, &
|
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)
|
call ezfio_get_Hartree_Fock_n_it_scf_max(n_it_scf_max)
|
||||||
else
|
else
|
||||||
n_it_scf_max = 30
|
n_it_scf_max = 30
|
||||||
call ezfio_set_Hartree_Fock_n_it_scf_max(n_it_scf_max)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -51,7 +49,6 @@ BEGIN_PROVIDER [ logical, do_DIIS ]
|
|||||||
call ezfio_get_Hartree_Fock_DIIS(do_DIIS)
|
call ezfio_get_Hartree_Fock_DIIS(do_DIIS)
|
||||||
else
|
else
|
||||||
do_DIIS = .False.
|
do_DIIS = .False.
|
||||||
call ezfio_set_Hartree_Fock_DIIS(do_DIIS)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
@ -39,7 +39,6 @@ END_PROVIDER
|
|||||||
call ezfio_get_mo_basis_mo_label(mo_label)
|
call ezfio_get_mo_basis_mo_label(mo_label)
|
||||||
else
|
else
|
||||||
mo_label = 'no_label'
|
mo_label = 'no_label'
|
||||||
call ezfio_set_mo_basis_mo_label(mo_label)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! Coefs
|
! Coefs
|
||||||
|
@ -125,3 +125,7 @@ test:
|
|||||||
# Dummy rule to enable to force recompilation
|
# Dummy rule to enable to force recompilation
|
||||||
FORCE:
|
FORCE:
|
||||||
|
|
||||||
|
clena: clean
|
||||||
|
|
||||||
|
vercylean: veryclean
|
||||||
|
veryclena: veryclean
|
||||||
|
@ -5,7 +5,7 @@ DEBUG = 0
|
|||||||
IRPF90_FLAGS+= --align=32
|
IRPF90_FLAGS+= --align=32
|
||||||
FC = ifort -g
|
FC = ifort -g
|
||||||
FCFLAGS=
|
FCFLAGS=
|
||||||
FCFLAGS+= -axAVX,SSE4.3
|
FCFLAGS+= -axAVX,SSE4.2
|
||||||
FCFLAGS+= -O2
|
FCFLAGS+= -O2
|
||||||
FCFLAGS+= -ip
|
FCFLAGS+= -ip
|
||||||
FCFLAGS+= -opt-prefetch
|
FCFLAGS+= -opt-prefetch
|
||||||
|
@ -13,7 +13,6 @@ BEGIN_PROVIDER [ double precision, threshold_selectors ]
|
|||||||
call ezfio_get_determinants_threshold_selectors(threshold_selectors)
|
call ezfio_get_determinants_threshold_selectors(threshold_selectors)
|
||||||
else
|
else
|
||||||
threshold_selectors = 0.99d0
|
threshold_selectors = 0.99d0
|
||||||
call ezfio_set_determinants_threshold_selectors(threshold_selectors)
|
|
||||||
endif
|
endif
|
||||||
ASSERT (N_det > 0)
|
ASSERT (N_det > 0)
|
||||||
call write_double(output_Dets,threshold_selectors,'Threshold on selectors')
|
call write_double(output_Dets,threshold_selectors,'Threshold on selectors')
|
||||||
|
Loading…
Reference in New Issue
Block a user