mirror of
https://github.com/LCPQ/quantum_package
synced 2024-08-30 16:13:42 +02:00
Merge branch 'master' of github.com:LCPQ/quantum_package
This commit is contained in:
commit
69c38b2b24
@ -203,5 +203,8 @@ def main():
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
try:
|
||||
main()
|
||||
except:
|
||||
pass
|
||||
|
||||
|
@ -5,9 +5,6 @@
|
||||
# Mon Apr 7 15:41:19 CEST 2014
|
||||
|
||||
QPACKAGE_ROOT=${PWD}
|
||||
echo $QPACKAGE_ROOT
|
||||
IRPF90=${QPACKAGE_ROOT}/irpf90/bin/irpf90
|
||||
echo $IRPF90
|
||||
|
||||
if [[ -z ${IRPF90} ]] ;
|
||||
then
|
||||
@ -18,9 +15,7 @@ then
|
||||
echo "Error in IRPF90 installation"
|
||||
exit 1
|
||||
fi
|
||||
rm -rf EZFIO
|
||||
fi
|
||||
echo $IRPF90
|
||||
|
||||
cat << EOF > quantum_package.rc
|
||||
export IRPF90=${IRPF90}
|
||||
@ -28,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
|
||||
@ -39,6 +36,6 @@ fi
|
||||
|
||||
if [[ ! -d ${QPACKAGE_ROOT}/EZFIO ]]
|
||||
then
|
||||
echo "Error in EZFIO installation"
|
||||
echo "Error in IRPF90 installation"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -4,10 +4,9 @@ program cisd
|
||||
|
||||
print *, 'HF = ', HF_energy
|
||||
print *, 'N_states = ', N_states
|
||||
N_det = 1
|
||||
touch psi_det psi_coef N_det
|
||||
call H_apply_cisd
|
||||
! do i=1,N_det
|
||||
! print '(100(X,O32))', det_connections(:,i)
|
||||
! enddo
|
||||
print *, 'N_det = ', N_det
|
||||
do i = 1,N_states
|
||||
print *, 'energy = ',CI_energy(i)
|
||||
|
@ -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
|
||||
|
@ -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, &
|
||||
|
@ -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 ref_bitmask_energy
|
||||
|
||||
nmax = ( N_det_generators/nproc ) *nproc
|
||||
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>`_
|
||||
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
|
||||
|
@ -48,7 +48,7 @@ subroutine davidson_diag(dets_in,u_in,energies,dim_in,sze,N_st,Nint,iunit)
|
||||
ASSERT (sze > 0)
|
||||
ASSERT (Nint > 0)
|
||||
ASSERT (Nint == N_int)
|
||||
PROVIDE ref_bitmask_energy
|
||||
PROVIDE ref_bitmask_energy mo_bielec_integrals_in_map
|
||||
allocate(H_jj(sze))
|
||||
|
||||
!$OMP PARALLEL DEFAULT(NONE) &
|
||||
|
@ -1,12 +1,12 @@
|
||||
determinants
|
||||
N_int integer
|
||||
n_int integer
|
||||
bit_kind integer
|
||||
mo_label character*(64)
|
||||
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
|
||||
threshold_selectors double precision
|
||||
|
||||
|
@ -12,8 +12,8 @@ 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
|
||||
call write_int(output_dets,N_states,'Number of states')
|
||||
ASSERT (N_states > 0)
|
||||
END_PROVIDER
|
||||
|
||||
@ -23,14 +23,24 @@ BEGIN_PROVIDER [ integer, N_det ]
|
||||
! Number of determinants in the wave function
|
||||
END_DOC
|
||||
logical :: exists
|
||||
character*64 :: label
|
||||
PROVIDE ezfio_filename
|
||||
call ezfio_has_determinants_n_det(exists)
|
||||
if (exists) then
|
||||
if (exists) then
|
||||
call ezfio_has_determinants_mo_label(exists)
|
||||
if (exists) then
|
||||
call ezfio_get_determinants_mo_label(label)
|
||||
exists = (label == mo_label)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
if (exists) then
|
||||
call ezfio_get_determinants_n_det(N_det)
|
||||
else
|
||||
N_det = 1
|
||||
call ezfio_set_determinants_n_det(N_det)
|
||||
endif
|
||||
call write_int(output_dets,N_det,'Number of determinants')
|
||||
ASSERT (N_det > 0)
|
||||
END_PROVIDER
|
||||
|
||||
@ -46,9 +56,9 @@ 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
|
||||
call write_int(output_dets,N_det_max_jacobi,'Lapack diagonalization up to')
|
||||
ASSERT (N_det_max_jacobi > 0)
|
||||
END_PROVIDER
|
||||
|
||||
@ -58,49 +68,147 @@ 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)
|
||||
call write_int(output_dets,psi_det_size,'Dimension of the psi arrays')
|
||||
|
||||
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
|
||||
character*64 :: label
|
||||
|
||||
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)
|
||||
if (exists) then
|
||||
call ezfio_has_determinants_mo_label(exists)
|
||||
if (exists) then
|
||||
call ezfio_get_determinants_mo_label(label)
|
||||
exists = (label == mo_label)
|
||||
endif
|
||||
endif
|
||||
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
|
||||
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
|
||||
integer :: i,k, N_int2
|
||||
logical :: exists
|
||||
double precision, allocatable :: psi_coef_read(:,:)
|
||||
character*(64) :: label
|
||||
|
||||
call ezfio_has_determinants_psi_coef(exists)
|
||||
if (exists) then
|
||||
call ezfio_has_determinants_mo_label(exists)
|
||||
if (exists) then
|
||||
call ezfio_get_determinants_mo_label(label)
|
||||
exists = (label == mo_label)
|
||||
endif
|
||||
endif
|
||||
|
||||
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
|
||||
endif
|
||||
do i=1,N_states
|
||||
psi_coef(i,i) = 1.d0
|
||||
enddo
|
||||
|
||||
endif
|
||||
|
||||
do i=1,N_states
|
||||
psi_coef(i,i) = 1.d0
|
||||
enddo
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
@ -206,3 +314,54 @@ 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)
|
||||
call ezfio_set_determinants_mo_label(mo_label)
|
||||
|
||||
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_sorted(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)
|
||||
call write_int(output_dets,N_det,'Saved determinants')
|
||||
deallocate (psi_coef_save)
|
||||
end
|
||||
|
||||
|
@ -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
|
||||
|
@ -11,9 +11,10 @@ program cisd
|
||||
|
||||
pt2 = 1.d0
|
||||
diag_algorithm = "Lapack"
|
||||
do while (maxval(abs(pt2(1:N_st))) > 1.d-3)
|
||||
do while (maxval(abs(pt2(1:N_st))) > 1.d-4)
|
||||
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
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -125,3 +125,7 @@ test:
|
||||
# Dummy rule to enable to force recompilation
|
||||
FORCE:
|
||||
|
||||
clena: clean
|
||||
|
||||
vercylean: veryclean
|
||||
veryclena: veryclean
|
||||
|
@ -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
|
||||
|
@ -91,34 +91,34 @@ Documentation
|
||||
`ao_nucl_elec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L1>`_
|
||||
interaction nuclear electron
|
||||
|
||||
`give_polynom_mult_center_mono_elec <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L157>`_
|
||||
`give_polynom_mult_center_mono_elec <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L161>`_
|
||||
Undocumented
|
||||
|
||||
`i_x1_pol_mult_mono_elec <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L285>`_
|
||||
`i_x1_pol_mult_mono_elec <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L289>`_
|
||||
Undocumented
|
||||
|
||||
`i_x2_pol_mult_mono_elec <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L357>`_
|
||||
`i_x2_pol_mult_mono_elec <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L361>`_
|
||||
Undocumented
|
||||
|
||||
`int_gaus_pol <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L428>`_
|
||||
`int_gaus_pol <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L432>`_
|
||||
Undocumented
|
||||
|
||||
`nai_pol_mult <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L82>`_
|
||||
Undocumented
|
||||
|
||||
`v_e_n <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L409>`_
|
||||
`v_e_n <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L413>`_
|
||||
Undocumented
|
||||
|
||||
`v_phi <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L473>`_
|
||||
`v_phi <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L477>`_
|
||||
Undocumented
|
||||
|
||||
`v_r <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L457>`_
|
||||
`v_r <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L461>`_
|
||||
Undocumented
|
||||
|
||||
`v_theta <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L486>`_
|
||||
`v_theta <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L490>`_
|
||||
Undocumented
|
||||
|
||||
`wallis <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L502>`_
|
||||
`wallis <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_ao_ints.irp.f#L506>`_
|
||||
Undocumented
|
||||
|
||||
`mo_nucl_elec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts/pot_mo_ints.irp.f#L1>`_
|
||||
|
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user