10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-11-12 17:13:54 +01:00

Added ezfio_defaults in data

This commit is contained in:
Anthony Scemama 2014-07-29 14:23:33 +02:00
parent 61771af83a
commit 942b9339c6
17 changed files with 507 additions and 478 deletions

34
data/ezfio_defaults Normal file
View File

@ -0,0 +1,34 @@
bielec_integrals
read_ao_integrals False
read_mo_integrals False
write_ao_integrals False
write_mo_integrals False
threshold_ao 1.e-12
threshold_mo 1.e-12
direct False
cis_dressed
n_state_cis 10
n_core_cis 0
n_act_cis mo_basis_mo_tot_num
mp2_dressing False
standard_doubles True
en_2_2 False
determinants
n_states 1
n_det_max_jacobi 5000
threshold_generators 1.0
threshold_selectors 1.0
read_wf False
full_ci
n_det_max_fci 1000000
pt2_max 1.e-4
do_pt2_end True
hartree_fock
n_it_scf_max 200
thresh_scf 1.e-10

141
scripts/ezfio_with_default.py Executable file
View File

@ -0,0 +1,141 @@
#!/usr/bin/env python
__author__ = "Anthony Scemama"
__date__ = "Tue Jul 29 12:20:00 CEST 2014"
"""
Creates the provider of a variable that has to be
fetched from the EZFIO file.
"""
import sys
import os
class EZFIO_Provider(object):
data = """BEGIN_PROVIDER [ %(type)s, %(name)s ]
implicit none
BEGIN_DOC
! %(doc)s
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_%(ezfio_dir)s_%(ezfio_name)s(has)
if (has) then
call ezfio_get_%(ezfio_dir)s_%(ezfio_name)s(%(name)s)
else
%(default)s
endif
%(write)s
END_PROVIDER
"""
write_correspondance = {
"integer" : "write_int",
"logical" : "write_bool",
"double precision" : "write_double" }
def __init__(self):
self.values = "type doc default name ezfio_dir ezfio_name write output".split()
for v in self.values:
exec "self.%s = None"%(v) in locals()
def __repr__(self):
self.get_default()
self.set_write()
for v in self.values:
exec "test = self.%s is None"%(v) in locals()
if test:
print >>sys.stderr, "Error : %s is not set in ezfio_with_default.py"%(v)
for v in self.values:
exec "x = str(self.%s)"%(v) in locals()
print >>sys.stderr, "%s : %s"%(v, x)
sys.exit(1)
return self.data%self.__dict__
def set_write(self):
self.write = ""
if self.type in self.write_correspondance:
write = self.write_correspondance[self.type]
output = self.output
name = self.name
self.write = """
call write_time(%(output)s)
call %(write)s(%(output)s, %(name)s, &
'%(name)s')
"""%locals()
def set_type(self,t):
self.type = t.lower()
def set_doc(self,t):
self.doc = t.replace('\n', '\n! ')
def set_name(self,t):
self.name = t
def set_ezfio_dir(self,t):
self.ezfio_dir = t.lower()
def set_ezfio_name(self,t):
self.ezfio_name = t.lower()
def set_output(self,t):
self.output = t
def set_default(self,t):
self.default = t
def get_default(self):
filename = '/'.join( [os.environ['QPACKAGE_ROOT'], 'data', 'ezfio_defaults'] )
file = open(filename,'r')
lines = file.readlines()
file.close()
# Search directory
for k,line in enumerate(lines):
if line[0] != ' ':
if line.strip().lower() == self.ezfio_dir:
break
if k+1 == len(lines):
return
# Search name
while k < len(lines):
k+=1
buffer = lines[k].split()
if len(buffer) == 0:
return
if buffer[0].lower() == self.ezfio_name:
break
v = buffer[1]
name = self.name
try:
v_eval = eval(v)
if type(v_eval) == bool:
v = '.%s.'%(v)
elif type(v_eval) == float:
v = v.replace('e','d')
v = v.replace('E','D')
v = "%(name)s = %(v)s"%locals()
except:
v = "call ezfio_get_%(v)s(%(name)s)"%locals()
self.default = v
def test_module():
T = EZFIO_Provider()
T.set_type ( "double precision" )
T.set_name ( "thresh_SCF" )
T.set_doc ( "Threshold on the convergence of the Hartree Fock energy" )
T.set_ezfio_dir ( "Hartree_Fock" )
T.set_ezfio_name( "thresh_SCF" )
T.set_output ( "output_Hartree_Fock" )
print T
if __name__ == '__main__':
test_module()

View File

@ -179,26 +179,5 @@ Documentation
`mo_bielec_integrals_index <http://github.com/LCPQ/quantum_package/tree/master/src/BiInts/mo_bi_integrals.irp.f#L1>`_
Computes an unique index for i,j,k,l integrals
`ao_integrals_threshold <http://github.com/LCPQ/quantum_package/tree/master/src/BiInts/options.irp.f#L69>`_
If <pq|rs> < ao_integrals_threshold, <pq|rs> = 0
`do_direct_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/BiInts/options.irp.f#L105>`_
If True, compute integrals on the fly
`mo_integrals_threshold <http://github.com/LCPQ/quantum_package/tree/master/src/BiInts/options.irp.f#L87>`_
If <ij|kl> < mo_integrals_threshold, <ij|kl> = 0
`read_ao_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/BiInts/options.irp.f#L52>`_
If true, read AO integrals in EZFIO
`read_mo_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/BiInts/options.irp.f#L35>`_
If true, read MO integrals in EZFIO
`write_ao_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/BiInts/options.irp.f#L18>`_
If true, write AO integrals in EZFIO
`write_mo_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/BiInts/options.irp.f#L1>`_
If true, write MO integrals in EZFIO

View File

@ -1,120 +1,46 @@
BEGIN_PROVIDER [ logical, write_mo_integrals ]
implicit none
BEGIN_DOC
! If true, write MO integrals in EZFIO
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_bielec_integrals_write_mo_integrals(has)
if (has) then
call ezfio_get_bielec_integrals_write_mo_integrals(write_mo_integrals)
else
write_mo_integrals = .False.
endif
END_PROVIDER
BEGIN_SHELL [ /usr/bin/python ]
from ezfio_with_default import EZFIO_Provider
T = EZFIO_Provider()
T.set_type ( "logical" )
T.set_name ( "do_direct_integrals" )
T.set_doc ( "If true, compute integrals on the fly" )
T.set_ezfio_dir ( "bielec_integrals" )
T.set_ezfio_name( "direct" )
T.set_output ( "output_biints" )
print T
BEGIN_PROVIDER [ logical, write_ao_integrals ]
implicit none
BEGIN_DOC
! If true, write AO integrals in EZFIO
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_bielec_integrals_write_ao_integrals(has)
if (has) then
call ezfio_get_bielec_integrals_write_ao_integrals(write_ao_integrals)
else
write_ao_integrals = .False.
endif
END_PROVIDER
T.set_type ( "logical" )
T.set_name ( "write_mo_integrals" )
T.set_doc ( "If true, write MO integrals in EZFIO" )
T.set_ezfio_name( "write_mo_integrals" )
print T
BEGIN_PROVIDER [ logical, read_mo_integrals ]
implicit none
BEGIN_DOC
! If true, read MO integrals in EZFIO
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_bielec_integrals_read_mo_integrals(has)
if (has) then
call ezfio_get_bielec_integrals_read_mo_integrals(read_mo_integrals)
else
read_mo_integrals = .False.
endif
END_PROVIDER
T.set_name ( "write_ao_integrals" )
T.set_doc ( "If true, write AO integrals in EZFIO" )
T.set_ezfio_name( "write_ao_integrals" )
print T
BEGIN_PROVIDER [ logical, read_ao_integrals ]
implicit none
BEGIN_DOC
! If true, read AO integrals in EZFIO
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_bielec_integrals_read_ao_integrals(has)
if (has) then
call ezfio_get_bielec_integrals_read_ao_integrals(read_ao_integrals)
else
read_ao_integrals = .False.
endif
END_PROVIDER
T.set_name ( "read_mo_integrals" )
T.set_doc ( "If true, read MO integrals in EZFIO" )
T.set_ezfio_name( "read_mo_integrals" )
print T
BEGIN_PROVIDER [ double precision, ao_integrals_threshold ]
implicit none
BEGIN_DOC
! If <pq|rs> < ao_integrals_threshold, <pq|rs> = 0
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_bielec_integrals_threshold_ao(has)
if (has) then
call ezfio_get_bielec_integrals_threshold_ao(ao_integrals_threshold)
else
ao_integrals_threshold = 1.d-12
endif
END_PROVIDER
T.set_name ( "read_ao_integrals" )
T.set_doc ( "If true, read AO integrals in EZFIO" )
T.set_ezfio_name( "read_ao_integrals" )
print T
T.set_type ( "double precision" )
T.set_name ( "ao_integrals_threshold" )
T.set_doc ( "If <pq|rs> < ao_integrals_threshold, <pq|rs> = 0" )
T.set_ezfio_name( "threshold_ao" )
print T
T.set_name ( "mo_integrals_threshold" )
T.set_doc ( "If <ij|kl> < mo_integrals_threshold, <ij|kl> = 0" )
T.set_ezfio_name( "threshold_mo" )
print T
END_SHELL
BEGIN_PROVIDER [ double precision, mo_integrals_threshold ]
implicit none
BEGIN_DOC
! If <ij|kl> < mo_integrals_threshold, <ij|kl> = 0
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_bielec_integrals_threshold_mo(has)
if (has) then
call ezfio_get_bielec_integrals_threshold_mo(mo_integrals_threshold)
else
mo_integrals_threshold = 1.d-11
endif
END_PROVIDER
BEGIN_PROVIDER [ logical, do_direct_integrals ]
implicit none
BEGIN_DOC
! If True, compute integrals on the fly
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_bielec_integrals_direct(has)
if (has) then
call ezfio_get_bielec_integrals_direct(do_direct_integrals)
else
do_direct_integrals = .False.
endif
END_PROVIDER

View File

@ -24,10 +24,22 @@ Documentation
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
`cis_dt <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/CIS_DT_lapack.irp.f#L1>`_
Undocumented
`cis_d <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/CIS_D_lapack.irp.f#L1>`_
Undocumented
`cis_full <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/CIS_full.irp.f#L1>`_
Undocumented
`save_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/CIS_full.irp.f#L7>`_
Undocumented
`coefs_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/CIS_providers.irp.f#L105>`_
the first states of the CIS matrix
`diag_elements <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/CIS_providers.irp.f#L317>`_
`diag_elements <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/CIS_providers.irp.f#L340>`_
Array of the energy of the CIS determinants ordered in the CIS matrix
`eigenvalues_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/CIS_providers.irp.f#L104>`_
@ -75,57 +87,59 @@ Documentation
`s_2_cis_dress_d_dt <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/CIS_providers.irp.f#L199>`_
The first states of the CIS matrix dressed by the doubles and the disconnected triples
`diag_elements_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L420>`_
Array of the energy of the CIS determinants sorted by energy and
Index in the CIS matrix
`diag_elements_sorted_index <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L421>`_
Array of the energy of the CIS determinants sorted by energy and
Index in the CIS matrix
`diexcitation <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L1563>`_
Undocumented
`dress_by_doubles <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L672>`_
Undocumented
`dress_t_con <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L1048>`_
Generating all the Triples and, in the loops, the connected Singles
`dress_t_discon <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L621>`_
Calculation of the dressing by the disconnected Triples, via the impossible
`dress_t_discon_array_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L622>`_
Calculation of the dressing by the disconnected Triples, via the impossible
`eigenvalues_dressed_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L451>`_
The first states of the dressed CIS matrix
`en2_corr_energy <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L142>`_
`en2_corr_energy <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/EN2.irp.f#L2>`_
Calculation of the EN2 correlation energy (EN2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp_EN, h_imp_EN, hp_imp_EN)
`h_imp_en <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/EN2.irp.f#L4>`_
Calculation of the EN2 correlation energy (EN2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp_EN, h_imp_EN, hp_imp_EN)
`hp_imp_en <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/EN2.irp.f#L5>`_
Calculation of the EN2 correlation energy (EN2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp_EN, h_imp_EN, hp_imp_EN)
`p_imp_en <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/EN2.irp.f#L3>`_
Calculation of the EN2 correlation energy (EN2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp_EN, h_imp_EN, hp_imp_EN)
`diag_elements_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L157>`_
Array of the energy of the CIS determinants sorted by energy and
Index in the CIS matrix
`diag_elements_sorted_index <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L158>`_
Array of the energy of the CIS determinants sorted by energy and
Index in the CIS matrix
`dress_by_doubles <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L406>`_
Undocumented
`dress_t_con <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L782>`_
Generating all the Triples and, in the loops, the connected Singles
`dress_t_discon <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L358>`_
Calculation of the dressing by the disconnected Triples, via the impossible
`dress_t_discon_array_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L359>`_
Calculation of the dressing by the disconnected Triples, via the impossible
`eigenvalues_dressed_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L188>`_
The first states of the dressed CIS matrix
`h_imp <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L3>`_
Calculation of the MP2 correlation energy (MP2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp, h_imp, hp_imp)
`h_imp_en <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L144>`_
Calculation of the EN2 correlation energy (EN2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp_EN, h_imp_EN, hp_imp_EN)
`hp_imp <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L4>`_
Calculation of the MP2 correlation energy (MP2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp, h_imp, hp_imp)
`hp_imp_en <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L145>`_
Calculation of the EN2 correlation energy (EN2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp_EN, h_imp_EN, hp_imp_EN)
`mp2_corr_energy <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L1>`_
Calculation of the MP2 correlation energy (MP2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
@ -136,12 +150,7 @@ Documentation
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp, h_imp, hp_imp)
`p_imp_en <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L143>`_
Calculation of the EN2 correlation energy (EN2_corr_energy)
and calculation of the contribution of the disconnected Triples on the
Singles, via the impossible (p_imp_EN, h_imp_EN, hp_imp_EN)
`size_psi_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L407>`_
`size_psi_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/MP2.irp.f#L144>`_
Definition of the size of the CIS vector
`get_dm_from_psi <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/density_matrix_suroutine.irp.f#L2>`_
@ -214,20 +223,11 @@ Documentation
.br
CIS_states_properties(i,1:6) = the same but for the hole state i
`mp2_dressing <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/options.irp.f#L55>`_
Number of states asked for the CIS vector
`diexcitation <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/repeat_all_doubles.irp.f#L129>`_
Undocumented
`n_act_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/options.irp.f#L37>`_
Number of states asked for the CIS vector
`n_core_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/options.irp.f#L19>`_
Number of states asked for the CIS vector
`n_state_cis <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/options.irp.f#L1>`_
Number of states asked for the CIS vector
`standard_doubles <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/options.irp.f#L73>`_
Number of states asked for the CIS vector
`repeat_all_doubles <http://github.com/LCPQ/quantum_package/tree/master/src/CIS_dressed/repeat_all_doubles.irp.f#L1>`_
Undocumented

View File

@ -1,104 +1,40 @@
BEGIN_PROVIDER [ integer , n_state_cis ]
implicit none
BEGIN_DOC
! Number of states asked for the CIS vector
END_DOC
BEGIN_SHELL [ /usr/bin/python ]
from ezfio_with_default import EZFIO_Provider
T = EZFIO_Provider()
T.set_type ( "integer" )
T.set_name ( "n_state_cis" )
T.set_doc ( "Number of states asked for the CIS vector" )
T.set_ezfio_dir ( "cis_dressed" )
T.set_ezfio_name( "n_state_cis" )
T.set_output ( "output_CIS" )
print T
logical :: has
PROVIDE ezfio_filename
call ezfio_has_cis_dressed_n_state_cis(has)
if (has) then
call ezfio_get_cis_dressed_n_state_cis(n_state_cis)
else
n_state_cis = 10
call ezfio_set_cis_dressed_n_state_cis(n_state_cis)
endif
T.set_name ( "n_core_cis" )
T.set_doc ( "Number of core orbitals in the dressed CIS" )
T.set_ezfio_name( "n_core_cis" )
print T
END_PROVIDER
T.set_name ( "n_act_cis" )
T.set_doc ( "Number of active orbitals in the dressed CIS" )
T.set_ezfio_name( "n_act_cis" )
print T
BEGIN_PROVIDER [ integer , n_core_cis]
implicit none
BEGIN_DOC
! Number of states asked for the CIS vector
END_DOC
T.set_type ( "logical" )
T.set_name ( "mp2_dressing" )
T.set_doc ( "If true, use MP2 dressing in the dressed CIS" )
T.set_ezfio_name( "mp2_dressing" )
print T
logical :: has
PROVIDE ezfio_filename
call ezfio_has_cis_dressed_n_core_cis(has)
if (has) then
call ezfio_get_cis_dressed_n_core_cis(n_core_cis)
else
n_core_cis = 0
endif
T.set_name ( "standard_doubles" )
T.set_doc ( "If true, use standard doubles in the dressed CIS" )
T.set_ezfio_name( "standard_doubles" )
print T
END_PROVIDER
T.set_name ( "en_2_2" )
T.set_doc ( "TODO")
T.set_ezfio_name( "en_2_2" )
print T
BEGIN_PROVIDER [ integer , n_act_cis]
implicit none
BEGIN_DOC
! Number of states asked for the CIS vector
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_cis_dressed_n_act_cis(has)
if (has) then
call ezfio_get_cis_dressed_n_act_cis(n_act_cis)
else
n_act_cis = mo_tot_num
endif
END_PROVIDER
BEGIN_PROVIDER [ logical , mp2_dressing]
implicit none
BEGIN_DOC
! Number of states asked for the CIS vector
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_cis_dressed_mp2_dressing(has)
if (has) then
call ezfio_get_cis_dressed_mp2_dressing(mp2_dressing)
else
mp2_dressing = .False.
endif
END_PROVIDER
BEGIN_PROVIDER [ logical , standard_doubles]
implicit none
BEGIN_DOC
! Number of states asked for the CIS vector
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_cis_dressed_standard_doubles(has)
if (has) then
call ezfio_get_cis_dressed_standard_doubles(standard_doubles)
else
standard_doubles = .True.
endif
END_PROVIDER
END_SHELL
BEGIN_PROVIDER [ logical , en_2_2]
implicit none
BEGIN_DOC
! Number of states asked for the CIS vector
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_cis_dressed_en_2_2(has)
if (has) then
call ezfio_get_cis_dressed_en_2_2(en_2_2)
else
en_2_2 = .False.
endif
END_PROVIDER

View File

@ -50,21 +50,18 @@ Documentation
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
`copy_h_apply_buffer_to_wf <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L113>`_
`copy_h_apply_buffer_to_wf <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L95>`_
Copies the H_apply buffer to psi_coef. You need to touch psi_det, psi_coef and N_det
after calling this function.
`fill_h_apply_buffer_no_selection <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L199>`_
`fill_h_apply_buffer_no_selection <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L181>`_
Fill the H_apply buffer with determiants for CISD
`h_apply_buffer_allocated <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L14>`_
Buffer of determinants/coefficients/perturbative energy for H_apply.
Uninitialized. Filled by H_apply subroutines.
`h_apply_threshold <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L45>`_
Theshold on | <Di|H|Dj> |
`resize_h_apply_buffer <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L63>`_
`resize_h_apply_buffer <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L45>`_
Undocumented
`cisd_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/SC2.irp.f#L1>`_
@ -170,58 +167,52 @@ Documentation
`state_average_weight <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L108>`_
Weights in the state-average calculation of the density matrix
`det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L330>`_
`det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L295>`_
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#L3>`_
Number of determinants in the wave function
`n_det_max_jacobi <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L52>`_
Maximum number of determinants diagonalized my jacobi
`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#L243>`_
`psi_average_norm_contrib <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L208>`_
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#L264>`_
`psi_average_norm_contrib_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L229>`_
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#L188>`_
`psi_coef <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L153>`_
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#L263>`_
`psi_coef_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L228>`_
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#L294>`_
`psi_coef_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L259>`_
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
`psi_det <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L88>`_
`psi_det <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L53>`_
The wave function determinants. Initialized with Hartree-Fock if the EZFIO file
is empty
`psi_det_size <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L70>`_
`psi_det_size <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L35>`_
Size of the psi_det/psi_coef arrays
`psi_det_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L262>`_
`psi_det_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L227>`_
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#L293>`_
`psi_det_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L258>`_
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#L139>`_
`read_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L104>`_
Reads the determinants from the EZFIO file
`save_wavefunction <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L345>`_
`save_wavefunction <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L310>`_
Save the wave function into the EZFIO file
`save_wavefunction_general <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L354>`_
`save_wavefunction_general <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L319>`_
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>`_
@ -316,9 +307,6 @@ Documentation
.br
to repeat the excitations
`read_wf <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/parameters.irp.f#L1>`_
If true, read the wave function from the EZFIO file
`get_s2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/s2.irp.f#L1>`_
Returns <S^2>

View File

@ -1,22 +1,5 @@
use bitmasks
BEGIN_PROVIDER [ integer, N_states ]
implicit none
BEGIN_DOC
! Number of states to consider
END_DOC
logical :: exists
PROVIDE ezfio_filename
call ezfio_has_determinants_n_states(exists)
if (exists) then
call ezfio_get_determinants_n_states(N_states)
else
N_states = 1
endif
call write_int(output_dets,N_states,'Number of states')
ASSERT (N_states > 0)
END_PROVIDER
BEGIN_PROVIDER [ integer, N_det ]
implicit none
BEGIN_DOC
@ -49,24 +32,6 @@ BEGIN_PROVIDER [ integer, N_det ]
END_PROVIDER
BEGIN_PROVIDER [ integer, N_det_max_jacobi ]
implicit none
BEGIN_DOC
! Maximum number of determinants diagonalized my jacobi
END_DOC
logical :: exists
PROVIDE ezfio_filename
call ezfio_has_determinants_n_det_max_jacobi(exists)
if (exists) then
call ezfio_get_determinants_n_det_max_jacobi(N_det_max_jacobi)
else
N_det_max_jacobi = 5000
endif
call write_int(output_dets,N_det_max_jacobi,'Lapack diagonalization up to')
ASSERT (N_det_max_jacobi > 0)
END_PROVIDER
BEGIN_PROVIDER [ integer, psi_det_size ]
implicit none
BEGIN_DOC

25
src/Dets/options.irp.f Normal file
View File

@ -0,0 +1,25 @@
BEGIN_SHELL [ /usr/bin/python ]
from ezfio_with_default import EZFIO_Provider
T = EZFIO_Provider()
T.set_type ( "integer" )
T.set_name ( "N_states" )
T.set_doc ( "Number of states to consider" )
T.set_ezfio_dir ( "determinants" )
T.set_ezfio_name( "N_states" )
T.set_output ( "output_dets" )
print T
T.set_name ( "N_det_max_jacobi" )
T.set_doc ( "Maximum number of determinants diagonalized by Jacobi" )
T.set_ezfio_name( "N_det_max_jacobi" )
print T
T.set_type ( "logical" )
T.set_name ( "read_wf" )
T.set_doc ( "If true, read the wave function from the EZFIO file" )
T.set_ezfio_name( "read_wf" )
T.set_output ( "output_dets" )
print T
END_SHELL

View File

@ -1,16 +0,0 @@
BEGIN_PROVIDER [ logical , read_wf ]
implicit none
BEGIN_DOC
! If true, read the wave function from the EZFIO file
END_DOC
logical :: exists
PROVIDE ezfio_filename
call ezfio_has_determinants_read_wf(exists)
if (exists) then
call ezfio_get_determinants_read_wf(read_wf)
else
read_wf = .True.
endif
!call write_i(output_determinants,read_wf,' computes the PT2 at the end of the selection ')
END_PROVIDER

View File

@ -10,16 +10,6 @@ Documentation
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
`do_pt2_end <http://github.com/LCPQ/quantum_package/tree/master/src/Full_CI/parameters.irp.f#L19>`_
if True then compute the PT2 when the selection process is finished
`n_det_max_fci <http://github.com/LCPQ/quantum_package/tree/master/src/Full_CI/parameters.irp.f#L1>`_
Max number od determinants in the wave function
`pt2_max <http://github.com/LCPQ/quantum_package/tree/master/src/Full_CI/parameters.irp.f#L36>`_
The selection process stops when the largest PT2 (for all the states) is lower than pt2_max
in absolute value
Needed Modules

25
src/Full_CI/options.irp.f Normal file
View File

@ -0,0 +1,25 @@
BEGIN_SHELL [ /usr/bin/python ]
from ezfio_with_default import EZFIO_Provider
T = EZFIO_Provider()
T.set_type ( "integer" )
T.set_name ( "N_det_max_fci" )
T.set_doc ( "Max number of determinants in the wave function" )
T.set_ezfio_dir ( "full_ci" )
T.set_ezfio_name( "N_det_max_fci" )
T.set_output ( "output_full_ci" )
print T
T.set_type ( "logical" )
T.set_name ( "do_pt2_end" )
T.set_doc ( "If true, compute the PT2 at the end of the selection" )
T.set_ezfio_name( "do_pt2_end" )
print T
T.set_type ( "double precision" )
T.set_name ( "pt2_max" )
T.set_doc ( """The selection process stops when the largest PT2 (for all the states)
is lower than pt2_max in absolute value""" )
T.set_ezfio_name( "pt2_max" )
print T
END_SHELL

View File

@ -1,50 +0,0 @@
BEGIN_PROVIDER [ integer, N_det_max_fci ]
implicit none
BEGIN_DOC
! Max number od determinants in the wave function
END_DOC
logical :: exists
PROVIDE ezfio_filename
call ezfio_has_full_ci_n_det_max_fci(exists)
if (exists) then
call ezfio_get_full_ci_n_det_max_fci(n_det_max_fci)
else
n_det_max_fci = 10000
endif
call write_int(output_full_ci,n_det_max_fci,'Max number of determinants ')
ASSERT (n_det_max_fci > 0)
END_PROVIDER
BEGIN_PROVIDER [ logical , do_pt2_end ]
implicit none
BEGIN_DOC
! if True then compute the PT2 when the selection process is finished
END_DOC
logical :: exists
PROVIDE ezfio_filename
call ezfio_has_full_ci_do_pt2_end(exists)
if (exists) then
call ezfio_get_full_ci_do_pt2_end(do_pt2_end)
else
do_pt2_end = .True.
endif
!call write_i(output_full_ci,do_pt2_end,' computes the PT2 at the end of the selection ')
END_PROVIDER
BEGIN_PROVIDER [ double precision , pt2_max ]
implicit none
BEGIN_DOC
! The selection process stops when the largest PT2 (for all the states) is lower than pt2_max
! in absolute value
END_DOC
logical :: exists
PROVIDE ezfio_filename
call ezfio_has_full_ci_pt2_max(exists)
if (exists) then
call ezfio_get_full_ci_pt2_max(pt2_max)
else
pt2_max = 0.1d0
endif
END_PROVIDER

View File

@ -26,5 +26,106 @@ Documentation
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
`ao_bi_elec_integral_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L102>`_
Alpha Fock matrix in AO basis set
`ao_bi_elec_integral_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L103>`_
Alpha Fock matrix in AO basis set
`fock_matrix_alpha_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L83>`_
Alpha Fock matrix in AO basis set
`fock_matrix_alpha_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L194>`_
Fock matrix on the MO basis
`fock_matrix_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L242>`_
Fock matrix in AO basis set
`fock_matrix_beta_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L84>`_
Alpha Fock matrix in AO basis set
`fock_matrix_beta_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L214>`_
Fock matrix on the MO basis
`fock_matrix_diag_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L2>`_
Fock matrix on the MO basis.
For open shells, the ROHF Fock Matrix is
.br
| F-K | F + K/2 | F |
|---------------------------------|
| F + K/2 | F | F - K/2 |
|---------------------------------|
| F | F - K/2 | F + K |
.br
F = 1/2 (Fa + Fb)
.br
K = Fb - Fa
.br
`fock_matrix_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L1>`_
Fock matrix on the MO basis.
For open shells, the ROHF Fock Matrix is
.br
| F-K | F + K/2 | F |
|---------------------------------|
| F + K/2 | F | F - K/2 |
|---------------------------------|
| F | F - K/2 | F + K |
.br
F = 1/2 (Fa + Fb)
.br
K = Fb - Fa
.br
`fock_mo_to_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L285>`_
Undocumented
`hf_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/Fock_matrix.irp.f#L233>`_
Hartree-Fock energy
`hf_density_matrix_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/HF_density_matrix_ao.irp.f#L27>`_
Density matrix in the AO basis
`hf_density_matrix_ao_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/HF_density_matrix_ao.irp.f#L1>`_
Alpha density matrix in the AO basis
`hf_density_matrix_ao_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/HF_density_matrix_ao.irp.f#L14>`_
Beta density matrix in the AO basis
`run <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/SCF.irp.f#L7>`_
Undocumented
`scf <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/SCF.irp.f#L2>`_
Undocumented
`damping_scf <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/damping_SCF.irp.f#L1>`_
Undocumented
`diagonal_fock_matrix_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/diagonalize_fock.irp.f#L1>`_
Diagonal Fock matrix in the MO basis
`diagonal_fock_matrix_mo_sum <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/diagonalize_fock.irp.f#L57>`_
diagonal element of the fock matrix calculated as the sum over all the interactions
with all the electrons in the RHF determinant
diagonal_Fock_matrix_mo_sum(i) = sum_{j=1, N_elec} 2 J_ij -K_ij
`eigenvectors_fock_matrix_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/diagonalize_fock.irp.f#L2>`_
Diagonal Fock matrix in the MO basis
`bi_elec_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/ref_bitmask.irp.f#L5>`_
Energy of the reference bitmask used in Slater rules
`kinetic_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/ref_bitmask.irp.f#L3>`_
Energy of the reference bitmask used in Slater rules
`mono_elec_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/ref_bitmask.irp.f#L2>`_
Energy of the reference bitmask used in Slater rules
`nucl_elec_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/ref_bitmask.irp.f#L4>`_
Energy of the reference bitmask used in Slater rules
`ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock/ref_bitmask.irp.f#L1>`_
Energy of the reference bitmask used in Slater rules

View File

@ -1,5 +1,4 @@
hartree_fock
thresh_scf double precision
n_it_scf_max integer
diis logical

View File

@ -1,55 +1,26 @@
BEGIN_PROVIDER [ double precision,thresh_SCF ]
implicit none
BEGIN_DOC
! Threshold on the convergence of the Hartree Fock energy
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_Hartree_Fock_thresh_SCF(has)
if (has) then
call ezfio_get_Hartree_Fock_thresh_SCF(thresh_SCF)
else
thresh_SCF = 1.d-10
endif
call write_time(output_Hartree_Fock)
call write_double(output_Hartree_Fock, thresh_SCF, &
'thresh_SCF')
BEGIN_SHELL [ /usr/bin/python ]
from ezfio_with_default import EZFIO_Provider
T = EZFIO_Provider()
T.set_type ( "double precision" )
T.set_name ( "thresh_SCF" )
T.set_doc ( "Threshold on the convergence of the Hartree Fock energy" )
T.set_ezfio_dir ( "Hartree_Fock" )
T.set_ezfio_name( "thresh_SCF" )
T.set_output ( "output_Hartree_Fock" )
print T
END_PROVIDER
BEGIN_PROVIDER [ integer, n_it_scf_max]
implicit none
BEGIN_DOC
! Maximum number of SCF iterations
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_Hartree_Fock_n_it_scf_max (has)
if (has) then
call ezfio_get_Hartree_Fock_n_it_scf_max(n_it_scf_max)
else
n_it_scf_max = 30
endif
END_PROVIDER
T = EZFIO_Provider()
T.set_type ( "integer" )
T.set_name ( "n_it_scf_max" )
T.set_doc ( "Maximum number of SCF iterations" )
T.set_ezfio_dir ( "Hartree_Fock" )
T.set_ezfio_name( "n_it_scf_max" )
T.set_output ( "output_Hartree_Fock" )
print T
BEGIN_PROVIDER [ logical, do_DIIS ]
implicit none
BEGIN_DOC
! If True, compute integrals on the fly
END_DOC
END_SHELL
logical :: has
PROVIDE ezfio_filename
call ezfio_has_Hartree_Fock_DIIS(has)
if (has) then
call ezfio_get_Hartree_Fock_DIIS(do_DIIS)
else
do_DIIS = .False.
endif
END_PROVIDER

View File

@ -85,3 +85,18 @@ subroutine write_int(iunit,value,label)
end
subroutine write_bool(iunit,value,label)
implicit none
BEGIN_DOC
! Write an logical value in output
END_DOC
integer, intent(in) :: iunit
logical :: value
character*(*) :: label
character*(64), parameter :: f = '(A50,L1)'
character*(50) :: newlabel
write(newlabel,'(A,A)') '* ',trim(label)
write(iunit,f) newlabel, value
end