mirror of
https://github.com/LCPQ/quantum_package
synced 2025-01-10 21:18:29 +01:00
commit
d92047176e
5
.gitattributes
vendored
Normal file
5
.gitattributes
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
*.irp.f linguist-language=IRPF90
|
||||
*.f linguist-language=Fortran
|
||||
*.ml linguist-language=Ocaml
|
||||
*.sh linguist-language=Bash
|
||||
*.py linguist-language=Python
|
@ -4,6 +4,6 @@ determinants
|
||||
n_det_max_jacobi 1000
|
||||
threshold_generators 0.99
|
||||
threshold_selectors 0.999
|
||||
read_wf False
|
||||
s2_eig False
|
||||
only_single_double_dm False
|
||||
read_wf false
|
||||
s2_eig false
|
||||
only_single_double_dm false
|
||||
|
@ -1,60 +1,17 @@
|
||||
bielec_integrals
|
||||
read_ao_integrals False
|
||||
read_mo_integrals False
|
||||
write_ao_integrals False
|
||||
write_mo_integrals False
|
||||
threshold_ao 1.e-15
|
||||
threshold_mo 1.e-15
|
||||
direct False
|
||||
|
||||
cis_dressed
|
||||
n_state_cis 10
|
||||
n_core_cis 0
|
||||
n_act_cis mo_basis_mo_tot_num
|
||||
mp2_dressing False
|
||||
mp2_dressing false
|
||||
standard_doubles True
|
||||
en_2_2 False
|
||||
|
||||
determinants
|
||||
n_states 1
|
||||
n_states_diag determinants_n_states
|
||||
n_det_max_jacobi 1000
|
||||
threshold_generators 0.99
|
||||
threshold_selectors 0.999
|
||||
read_wf False
|
||||
s2_eig False
|
||||
only_single_double_dm False
|
||||
|
||||
full_ci
|
||||
n_det_max_fci 10000
|
||||
n_det_max_fci_property 50000
|
||||
pt2_max 1.e-4
|
||||
do_pt2_end True
|
||||
var_pt2_ratio 0.75
|
||||
en_2_2 false
|
||||
|
||||
all_singles
|
||||
n_det_max_fci 50000
|
||||
pt2_max 1.e-8
|
||||
do_pt2_end False
|
||||
do_pt2_end false
|
||||
|
||||
cassd
|
||||
n_det_max_cassd 10000
|
||||
pt2_max 1.e-4
|
||||
do_pt2_end True
|
||||
|
||||
hartree_fock
|
||||
n_it_scf_max 200
|
||||
thresh_scf 1.e-10
|
||||
guess "Huckel"
|
||||
|
||||
cisd_selected
|
||||
n_det_max_cisd 10000
|
||||
pt2_max 1.e-4
|
||||
|
||||
cisd_sc2_selected
|
||||
n_det_max_cisd_sc2 10000
|
||||
pt2_max 1.e-4
|
||||
do_pt2_end True
|
||||
|
||||
properties
|
||||
z_one_point 3.9
|
||||
|
@ -94,7 +94,7 @@ let get_ezfio_default_in_file ~directory ~data ~filename =
|
||||
match (String.lsplit2 ~on:' ' (String.strip line)) with
|
||||
| Some (l,r) ->
|
||||
if (l = data) then
|
||||
String.lowercase (String.strip r)
|
||||
String.strip r
|
||||
else
|
||||
find_data rest
|
||||
| None -> raise Not_found
|
||||
|
@ -20,6 +20,10 @@ let run exe ezfio_file =
|
||||
Printf.printf "===============\nQuantum Package\n===============\n\n";
|
||||
Printf.printf "Date : %s\n\n%!" (Time.to_string time_start);
|
||||
|
||||
match (Sys.command ("qp_edit -c "^ezfio_file)) with
|
||||
| 0 -> ()
|
||||
| i -> failwith "Error: Input inconsistent\n";
|
||||
;
|
||||
let exe =
|
||||
match (List.find ~f:(fun (x,_) -> x = exe) executables) with
|
||||
| None -> assert false
|
||||
|
@ -150,15 +150,12 @@ end = struct
|
||||
|
||||
let to_string = function
|
||||
| Huckel -> \"Huckel\"
|
||||
| HCore -> \"HCore\"
|
||||
| HCore -> \"Hcore\"
|
||||
|
||||
let of_string s =
|
||||
let s =
|
||||
String.lowercase s
|
||||
in
|
||||
match s with
|
||||
| \"huckel\" -> Huckel
|
||||
| \"hcore\" -> HCore
|
||||
| \"Huckel\" -> Huckel
|
||||
| \"Hcore\" -> HCore
|
||||
| _ -> failwith (\"Wrong Guess type : \"^s)
|
||||
|
||||
end
|
||||
@ -179,13 +176,10 @@ end = struct
|
||||
| Write -> \"Write\"
|
||||
| None -> \"None\"
|
||||
let of_string s =
|
||||
let s =
|
||||
String.lowercase s
|
||||
in
|
||||
match s with
|
||||
| \"read\" -> Read
|
||||
| \"write\" -> Write
|
||||
| \"none\" -> None
|
||||
| \"Read\" -> Read
|
||||
| \"Write\" -> Write
|
||||
| \"None\" -> None
|
||||
| _ -> failwith (\"Wrong IO type : \"^s)
|
||||
|
||||
end
|
||||
|
@ -12,8 +12,8 @@ By default all the option are executed.
|
||||
Options:
|
||||
-h --help
|
||||
--path The path of the `EZFIO.cfg`, by default will look in the ${pwd}
|
||||
--irpf90 Create the `ezfio_interface.ipf90`
|
||||
who containt all the provider needed
|
||||
--irpf90 Create the `ezfio_interface.irpf90`
|
||||
which contains all the providers needed
|
||||
(aka all with the `interface: input` parameter)
|
||||
in `${pwd}`
|
||||
--ezfio_config Create the `${module_lower}_ezfio_interface_config` in
|
||||
@ -28,7 +28,7 @@ Options:
|
||||
Format specification :
|
||||
[provider_name] | the name of the provider in irp.f90
|
||||
doc:{str} | Is the doc
|
||||
Type:{str} | Is a fancy_type support by the ocaml
|
||||
Type:{str} | Is a fancy_type supported by the ocaml
|
||||
ezfio_name:{str} | Will be the name of the file for the ezfio
|
||||
(optional by default is the name of the provider)
|
||||
interface:{str} | The provider is a imput or a output
|
||||
@ -67,13 +67,13 @@ Type = namedtuple('Type', 'fancy ocaml fortran')
|
||||
|
||||
def is_bool(str_):
|
||||
"""
|
||||
Take a string, if is a bool return the convert into
|
||||
fortran and ocaml one.
|
||||
Take a string, if is a bool return the conversion into
|
||||
fortran and ocaml.
|
||||
"""
|
||||
if str_.lower() in ['true', '.true.']:
|
||||
return Type(None, "True", ".True.")
|
||||
elif str_.lower() in ['false', '.False.']:
|
||||
return Type(None, "False", ".False")
|
||||
return Type(None, "true", ".True.")
|
||||
elif str_.lower() in ['false', '.false.']:
|
||||
return Type(None, "false", ".False")
|
||||
else:
|
||||
raise TypeError
|
||||
|
||||
@ -81,7 +81,7 @@ def is_bool(str_):
|
||||
def get_type_dict():
|
||||
"""
|
||||
This function makes the correspondance between the type of value read in
|
||||
ezfio.cfg into the f90 and Ocam Type
|
||||
ezfio.cfg into the f90 and Ocaml Type
|
||||
return fancy_type[fancy_type] = namedtuple('Type', 'ocaml fortran')
|
||||
For example fancy_type['Ndet'].fortran = interger
|
||||
.ocaml = int
|
||||
@ -154,7 +154,7 @@ def get_type_dict():
|
||||
# q p _ t y p e s _ g e n e r a t e #
|
||||
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
||||
|
||||
# Read the fancy_type, the ocaml. and convert the ocam to the fortran
|
||||
# Read the fancy_type, the ocaml. and convert the ocaml to the fortran
|
||||
for i in l_gen + l_un:
|
||||
str_fancy_type = i.split()[1].strip()
|
||||
str_ocaml_type = i.split()[3]
|
||||
|
@ -121,6 +121,8 @@ END_PROVIDER
|
||||
v = buffer[1]
|
||||
name = self.name
|
||||
try:
|
||||
true = True
|
||||
false = False
|
||||
v_eval = eval(v)
|
||||
if type(v_eval) == bool:
|
||||
v = '.%s.'%(v)
|
||||
|
@ -7,26 +7,26 @@ ezfio_name: direct
|
||||
|
||||
[disk_access_mo_integrals]
|
||||
type: Disk_access
|
||||
doc: Write, Read, None for MO integrals from disk (EZFIO folder)
|
||||
doc: Read/Write MO integrals from/to disk [ Write | Read | None ]
|
||||
interface: input
|
||||
default: None
|
||||
|
||||
[disk_access_ao_integrals]
|
||||
type: Disk_access
|
||||
doc: Write or Read or None for AO integrals from disk (EZFIO folder)
|
||||
doc: Read/Write AO integrals from/to disk [ Write | Read | None ]
|
||||
interface: input
|
||||
default: None
|
||||
|
||||
[ao_integrals_threshold]
|
||||
type: Threshold
|
||||
doc: If <pq|rs> < ao_integrals_threshold then <pq|rs> is null
|
||||
doc: If |<pq|rs>| < ao_integrals_threshold then <pq|rs> is zero
|
||||
interface: input
|
||||
default: 1.e-15
|
||||
ezfio_name: threshold_ao
|
||||
|
||||
[mo_integrals_threshold]
|
||||
type: Threshold
|
||||
doc: If <ij|kl> < ao_integrals_threshold then <pq|rs> is null
|
||||
doc: If |<ij|kl>| < ao_integrals_threshold then <pq|rs> is zero
|
||||
interface: input
|
||||
default: 1.e-15
|
||||
ezfio_name: threshold_mo
|
||||
ezfio_name: threshold_mo
|
||||
|
@ -13,8 +13,5 @@ program cisd
|
||||
print *, 'E_corr = ',CI_electronic_energy(i) - ref_bitmask_energy
|
||||
enddo
|
||||
|
||||
! call CISD_SC2(psi_det,psi_coef,eigvalues,size(psi_coef,1),N_det,N_states,N_int)
|
||||
! do i = 1, N_states
|
||||
! print*,'eigvalues(i) = ',eigvalues(i)
|
||||
! enddo
|
||||
call save_wavefunction
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
[N_det_max_cisd_sc2]
|
||||
type: Det_number_max
|
||||
doc: Get n_det_max_cisd_sc2 from EZFIO file
|
||||
doc: Max number of determinants
|
||||
interface: input
|
||||
default: 10000
|
||||
|
||||
@ -12,8 +12,8 @@ default: true
|
||||
|
||||
[PT2_max]
|
||||
type: PT2_energy
|
||||
doc: The selection process stops when the largest PT2 (for all the state) is lower
|
||||
than pt2_max in absolute value
|
||||
doc: The selection process stops when the largest PT2 (for all the states) is lower
|
||||
than abs(pt2_max)
|
||||
interface: input
|
||||
default: 0.0001
|
||||
|
||||
|
@ -3,7 +3,7 @@ program det_svd
|
||||
BEGIN_DOC
|
||||
! Computes the SVD of the Alpha x Beta determinant coefficient matrix
|
||||
END_DOC
|
||||
integer :: i,j
|
||||
integer :: i,j,k
|
||||
|
||||
read_wf = .True.
|
||||
TOUCH read_wf
|
||||
@ -40,17 +40,22 @@ program det_svd
|
||||
print *, 'N_det_alpha = ', N_det_alpha_unique
|
||||
print *, 'N_det_beta = ', N_det_beta_unique
|
||||
print *, ''
|
||||
|
||||
! do i=1,N_det_alpha_unique
|
||||
! do j=1,N_det_beta_unique
|
||||
! print *, i,j,psi_svd_matrix(i,j,:)
|
||||
! enddo
|
||||
! enddo
|
||||
|
||||
print *, ''
|
||||
call diagonalize_ci
|
||||
print *, 'Energy = ', ci_energy
|
||||
|
||||
do i=1,N_det_alpha_unique
|
||||
do j=1,N_det_beta_unique
|
||||
do k=1,N_states
|
||||
if (dabs(psi_svd_matrix(i,j,k)) < 1.d-15) then
|
||||
psi_svd_matrix(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
print *, ''
|
||||
print *, psi_svd_coefs(1:20,1)
|
||||
! call save_wavefunction
|
||||
call save_wavefunction
|
||||
|
||||
end
|
||||
|
@ -42,8 +42,10 @@ subroutine save_dets_qmcchem
|
||||
enddo
|
||||
close(31)
|
||||
call system('gzip -f '//trim(ezfio_filename)//'/mo_basis/mo_classif')
|
||||
|
||||
end
|
||||
|
||||
program save_for_qmc
|
||||
call save_dets_qmcchem
|
||||
call write_spindeterminants
|
||||
end
|
||||
|
@ -7,4 +7,8 @@ spindeterminants
|
||||
psi_det_alpha integer*8 (spindeterminants_n_int*spindeterminants_bit_kind/8,spindeterminants_n_det_alpha)
|
||||
psi_det_beta integer*8 (spindeterminants_n_int*spindeterminants_bit_kind/8,spindeterminants_n_det_beta)
|
||||
psi_coef_matrix double precision (spindeterminants_n_det_alpha,spindeterminants_n_det_beta,spindeterminants_n_states)
|
||||
n_svd_coefs integer
|
||||
psi_svd_alpha double precision (spindeterminants_n_det_alpha,spindeterminants_n_svd_coefs,spindeterminants_n_states)
|
||||
psi_svd_beta double precision (spindeterminants_n_det_beta,spindeterminants_n_svd_coefs,spindeterminants_n_states)
|
||||
psi_svd_coefs double precision (spindeterminants_n_svd_coefs,spindeterminants_n_states)
|
||||
|
||||
|
@ -26,7 +26,7 @@ subroutine write_spindeterminants
|
||||
enddo
|
||||
call ezfio_set_spindeterminants_psi_det_alpha(psi_det_alpha_unique)
|
||||
deallocate(tmpdet)
|
||||
|
||||
|
||||
allocate(tmpdet(N_int2,N_det_beta_unique))
|
||||
do i=1,N_det_beta_unique
|
||||
do k=1,N_int
|
||||
@ -38,7 +38,54 @@ subroutine write_spindeterminants
|
||||
enddo
|
||||
call ezfio_set_spindeterminants_psi_det_beta(psi_det_beta_unique)
|
||||
deallocate(tmpdet)
|
||||
|
||||
|
||||
call ezfio_set_spindeterminants_psi_coef_matrix(psi_svd_matrix)
|
||||
|
||||
integer :: n_svd_coefs
|
||||
double precision :: norm, f
|
||||
f = 1.d0/dble(N_states)
|
||||
norm = 1.d0
|
||||
do n_svd_coefs=1,N_det_alpha_unique
|
||||
do k=1,N_states
|
||||
norm -= psi_svd_coefs(n_svd_coefs,k)*psi_svd_coefs(n_svd_coefs,k)
|
||||
enddo
|
||||
if (norm < 1.d-6) then
|
||||
exit
|
||||
endif
|
||||
enddo
|
||||
n_svd_coefs -= 1
|
||||
call ezfio_set_spindeterminants_n_svd_coefs(n_svd_coefs)
|
||||
|
||||
double precision, allocatable :: dtmp(:,:,:)
|
||||
allocate(dtmp(N_det_alpha_unique,n_svd_coefs,N_states))
|
||||
do k=1,N_states
|
||||
do j=1,n_svd_coefs
|
||||
do i=1,N_det_alpha_unique
|
||||
dtmp(i,j,k) = psi_svd_alpha(i,j,k)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
call ezfio_set_spindeterminants_psi_svd_alpha(dtmp)
|
||||
deallocate(dtmp)
|
||||
|
||||
allocate(dtmp(N_det_beta_unique,n_svd_coefs,N_states))
|
||||
do k=1,N_states
|
||||
do j=1,n_svd_coefs
|
||||
do i=1,N_det_beta_unique
|
||||
dtmp(i,j,k) = psi_svd_beta(i,j,k)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
call ezfio_set_spindeterminants_psi_svd_beta(dtmp)
|
||||
deallocate(dtmp)
|
||||
|
||||
allocate(dtmp(n_svd_coefs,N_states,1))
|
||||
do k=1,N_states
|
||||
do j=1,n_svd_coefs
|
||||
dtmp(j,k,1) = psi_svd_coefs(j,k)
|
||||
enddo
|
||||
enddo
|
||||
call ezfio_set_spindeterminants_psi_svd_coefs(dtmp)
|
||||
deallocate(dtmp)
|
||||
|
||||
end
|
||||
|
@ -32,11 +32,11 @@ default: 0.75
|
||||
|
||||
[energy]
|
||||
type: double precision
|
||||
doc: "Calculated Full CI energy"
|
||||
doc: Calculated Selected FCI energy
|
||||
interface: output
|
||||
|
||||
[energy_pt2]
|
||||
type: double precision
|
||||
doc: "Calculated Full CI energy"
|
||||
doc: Calculated FCI energy + PT2
|
||||
interface: output
|
||||
|
||||
|
@ -12,7 +12,6 @@ subroutine run
|
||||
print *, N_det_cas
|
||||
print *, N_det_sd
|
||||
|
||||
! call update_generators
|
||||
integer :: i
|
||||
print *, 'CAS'
|
||||
print *, '==='
|
||||
@ -21,13 +20,13 @@ subroutine run
|
||||
call debug_det(psi_cas(1,1,i),N_int)
|
||||
enddo
|
||||
|
||||
! print *, 'SD'
|
||||
! print *, '=='
|
||||
! do i=1,N_det_sd
|
||||
! print *, psi_sd_coefs(i,:)
|
||||
! call debug_det(psi_sd(1,1,i),N_int)
|
||||
! enddo
|
||||
!
|
||||
print *, 'SD'
|
||||
print *, '=='
|
||||
do i=1,N_det_sd
|
||||
print *, psi_sd_coefs(i,:)
|
||||
call debug_det(psi_sd(1,1,i),N_int)
|
||||
enddo
|
||||
|
||||
print *, 'MRCC'
|
||||
print *, '===='
|
||||
print *, ci_energy(:)
|
||||
|
Loading…
Reference in New Issue
Block a user