10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-08-16 01:28:39 +02:00

Merge pull request #65 from scemama/master

Cleaning and Davidson in MRCC
This commit is contained in:
Thomas Applencourt 2015-05-21 13:54:58 +02:00
commit e8a3b20cd5
166 changed files with 2169 additions and 876 deletions

View File

@ -7,6 +7,7 @@ python:
before_script:
- sudo apt-get update
- sudo apt-get install gfortran liblapack-dev
- sudo apt-get install graphviz
script:
- ./setup_environment.sh --robot

View File

@ -10,6 +10,10 @@
* Bash
* Patch (for opam)
## Optional
* graphviz
## Standard installation

View File

@ -1,61 +0,0 @@
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
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
cas_sd
n_det_max_cas_sd 100000
pt2_max 1.e-4
do_pt2_end true
var_pt2_ratio 0.75
all_singles
n_det_max_fci 50000
pt2_max 1.e-8
do_pt2_end false
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

View File

@ -1,4 +0,0 @@
cisd_selected
n_det_max_cisd 10000
pt2_max 1.e-4

View File

@ -14,7 +14,7 @@ let spec =
+> flag "m" (optional_with_default 1 int)
~doc:"int Spin multiplicity (2S+1) of the molecule. Default is 1."
+> flag "p" no_arg
~doc:"Using pseudo."
~doc:"Using pseudopotentials"
+> anon ("xyz_file" %: string)
;;

62
scripts/cache_compile.py Executable file
View File

@ -0,0 +1,62 @@
#!/usr/bin/env python
import os
import sys
import shelve
import hashlib
import re
r = re.compile(ur'-c\s+(\S+\.[fF]90)\s+-o\s+(\S+\.o)')
p = re.compile(ur'-I IRPF90_temp/\S*\s+')
mod = re.compile(ur'module\s+(?P<mod>\S+).+end\s?module\s+(?P=mod)?', re.MULTILINE | re.IGNORECASE)
TMPDIR="/tmp/qp_compiler/"
def main():
# Create temp directory
if "qp_compiler" not in os.listdir("/tmp"):
os.mkdir("/tmp/qp_compiler/")
line = sys.argv[1:]
command = " ".join(line)
command_clean = p.sub('',command)
try:
match = r.search(command_clean)
input = match.group(1)
output = match.group(2)
except:
os.system(command)
return
m = hashlib.md5()
# Fread : read input
with open(input,'r') as file:
fread = file.read()
m.update( " ".join( [ command, fread ] ))
# Md5 Key containing command + content of Fread
key = TMPDIR+m.hexdigest()
try:
# Try to return the content of the .o file
with open(key,'r') as file:
result = file.read()
except IOError:
# Compile the file -> .o
os.system(command)
# Read the .o
with open(output,'r') as file:
result = file.read()
# Copy the .o in database
if not mod.search(fread.replace('\n',' ')):
with open(key,'w') as file:
file.write(result)
else:
print input+' -> module'
else:
# Write the .o file
with open(output,'w') as file:
file.write(result)
if __name__ == '__main__':
main()

View File

@ -197,7 +197,7 @@ def get_dict_config_file(config_file_path, module_lower):
* equal to MODULE_lower name by default.
- interface : The provider is a imput or a output
- default : The default value /!\ stored in a Type named type!
if interface == output
if interface == input
- size : Is the string read in ezfio.cgf who containt the size information
(like 1 or =sum(ao_num))
"""
@ -230,7 +230,8 @@ def get_dict_config_file(config_file_path, module_lower):
# Create the dictionary who containt the value per default
d_default = {"ezfio_name": pvd,
"ezfio_dir": module_lower}
"ezfio_dir": module_lower,
"size": "1"}
# Check if type if avalaible
type_ = config_file.get(section, "type")
@ -274,6 +275,8 @@ def get_dict_config_file(config_file_path, module_lower):
def create_ezfio_provider(dict_ezfio_cfg):
import re
"""
From dict d[provider_name] = {type,
doc,
@ -286,12 +289,13 @@ def create_ezfio_provider(dict_ezfio_cfg):
output = output_dict_info['ezfio_dir'
return [code, ...]
"""
from ezfio_generate_provider import EZFIO_Provider
dict_code_provider = dict()
ez_p = EZFIO_Provider()
for provider_name, dict_info in dict_ezfio_cfg.iteritems():
if "default" in dict_info:
if "input" in dict_info["interface"]:
ez_p.set_type(dict_info['type'].fortran)
ez_p.set_name(provider_name)
ez_p.set_doc(dict_info['doc'])
@ -299,6 +303,9 @@ def create_ezfio_provider(dict_ezfio_cfg):
ez_p.set_ezfio_name(dict_info['ezfio_name'])
ez_p.set_output("output_%s" % dict_info['ezfio_dir'])
# (nuclei.nucl_num,pseudo.klocmax) => (nucl_num,klocmax)
ez_p.set_size(re.sub(r'\w+\.', "", dict_info['size']))
dict_code_provider[provider_name] = str(ez_p) + "\n"
return dict_code_provider
@ -342,15 +349,32 @@ def create_ezfio_stuff(dict_ezfio_cfg, config_or_default="config"):
def size_format_to_ezfio(size_raw):
"""
If size_raw == "=" is a formula -> do nothing; return
Else convert the born of a multidimential array
(12,begin:end) into (12,begin+end+1) for example
If the value are between parenthses -> do nothing; return
Else put it in parenthsesis
"""
size_raw = str(size_raw)
if any([size_raw.startswith('='),
size_raw.startswith("(") and size_raw.endswith(")")]):
if size_raw.startswith('='):
size_convert = size_raw
else:
size_raw = provider_info["size"].translate(None, "()")
size_raw = size_raw.replace('.', '_')
a_size_raw = []
for dim in size_raw.split(","):
try:
(begin, end) = map(str.strip, dim.split(":"))
except ValueError:
a_size_raw.append(dim)
else:
if begin[0] == '-':
a_size_raw.append("{0}+{1}+1".format(end, begin[1:]))
else:
a_size_raw.append("{0}-{1}+1".format(end, begin))
size_raw = ",".join(a_size_raw)
size_convert = "({0})".format(size_raw)
return size_convert
@ -719,7 +743,6 @@ def save_ocaml_qp_edit(str_ocaml_qp_edit):
if __name__ == "__main__":
arguments = docopt(__doc__)
# ___
# | ._ o _|_
# _|_ | | | |_

View File

@ -10,10 +10,11 @@ fetched from the EZFIO file.
import sys
class EZFIO_Provider(object):
data = """
BEGIN_PROVIDER [ %(type)s, %(name)s ]
BEGIN_PROVIDER [ %(type)s, %(name)s %(size)s ]
implicit none
BEGIN_DOC
! %(doc)s
@ -48,6 +49,9 @@ END_PROVIDER
msg = "Error : %s is not set in EZFIO.cfg" % (v)
print >>sys.stderr, msg
sys.exit(1)
if "size" not in self.__dict__:
self.__dict__["size"] = ""
return self.data % self.__dict__
def set_write(self):
@ -83,6 +87,12 @@ END_PROVIDER
def set_output(self, t):
self.output = t
def set_size(self, t):
if t != "1":
self.size = ", " + t
else:
self.size = ""
def test_module():
T = EZFIO_Provider()

View File

@ -15,10 +15,10 @@ mv $1/hartree_Fock/thresh_SCF $1/hartree_fock/thresh_scf 2> /dev/null
# Set disk_acess
echo "Change {read,write}_ao_integrals > disk_access_ao_integrals"
biint=$1/bielec_integrals
biint=$1/Integrals_bielec
if [[ -f $biint/read_ao_integrals ]]; then
if [[ `cat $1/bielec_integrals/read_ao_integrals` -eq "T" ]]
if [[ `cat $1/Integrals_bielec/read_ao_integrals` -eq "T" ]]
then
echo "Read" > $biint/disk_access_ao_integrals
@ -33,4 +33,6 @@ if [[ -f $biint/read_ao_integrals ]]; then
rm $biint/read_ao_integrals $biint/write_ao_integrals $biint/write_ao_intergals 2> /dev/null
fi
mv $1/MonoInts $1/Integrals_Monoelec
echo "Done"

View File

@ -273,7 +273,7 @@ def write_ezfio(res, filename):
# \_| |___/\___|\__,_|\__,_|\___/
#
ezfio.set_pseudo_integrals_do_pseudo(False)
ezfio.set_pseudo_do_pseudo(False)
def get_full_path(file_path):

View File

@ -16,6 +16,7 @@ fi
cd ${QPACKAGE_ROOT}
rm -f l${QPACKAGE_ROOT}/bin/m4
if [[ -z ${M4} ]]
then
rm -f -- bin/m4

View File

@ -121,7 +121,12 @@ def create_png_from_path(path):
"path = /home/razoa/quantum_package/src/Molden/NEEDED_CHILDREN_MODULES"
l_module = os.path.split(path)[0].split("/")[-1]
create_png([l_module])
import pydot
try:
create_png([l_module])
except pydot.InvocationException:
pass
def create_png(l_module):
@ -154,8 +159,10 @@ def create_png(l_module):
draw_module_edge(module, d_ref[module])
# Save
path = '{0}.png'.format("_".join(l_module))
print "png saved in {0}".format(path)
path = '{0}.png'.format("tree_dependancy")
# path = '{0}.png'.format("_".join(l_module))
# print "png saved in {0}".format(path)
graph.write_png(path)
if __name__ == '__main__':

View File

@ -31,7 +31,8 @@ import sys
try:
import dot_parser
except Exception as e:
print >> sys.stderr, "Couldn't import dot_parser, loading of dot files will not be possible."
pass
# print >> sys.stderr, "Couldn't import dot_parser, loading of dot files will not be possible."
GRAPH_ATTRIBUTES = set(['Damping', 'K', 'URL', 'aspect', 'bb', 'bgcolor',

View File

@ -186,7 +186,7 @@ def add_zero(array, size, type):
def make_it_square(matrix, dim, type=float):
"""
matix the matrix to squate
matix the matrix to square
dim array [lmax, kmax]
type the null value you want
[[[28.59107316], [19.37583724]], [[50.25646328]]]
@ -311,11 +311,11 @@ if __name__ == "__main__":
# ~#~#~#~#~ #
klocmax = max([len(i) for i in v_k])
ezfio.pseudo_integrals_klocmax = klocmax
ezfio.pseudo_pseudo_klocmax = klocmax
ezfio.pseudo_integrals_v_k = zip(*v_k)
ezfio.pseudo_integrals_n_k = zip(*n_k)
ezfio.pseudo_integrals_dz_k = zip(*dz_k)
ezfio.pseudo_pseudo_v_k = zip(*v_k)
ezfio.pseudo_pseudo_n_k = zip(*n_k)
ezfio.pseudo_pseudo_dz_k = zip(*dz_k)
# ~#~#~#~#~#~#~#~#~ #
# N o n _ L o c a l #
@ -324,15 +324,15 @@ if __name__ == "__main__":
lmax = max([len(i) for i in v_kl])
kmax = max([len(sublist) for list_ in v_kl for sublist in list_])
ezfio.pseudo_integrals_lmaxpo = lmax
ezfio.pseudo_integrals_kmax = kmax
ezfio.pseudo_pseudo_lmax = lmax - 1
ezfio.pseudo_pseudo_kmax = kmax
v_kl = make_it_square(v_kl, [lmax, kmax])
n_kl = make_it_square(n_kl, [lmax, kmax], int)
dz_kl = make_it_square(dz_kl, [lmax, kmax])
ezfio.pseudo_integrals_v_kl = zip(*v_kl)
ezfio.pseudo_integrals_n_kl = zip(*n_kl)
ezfio.pseudo_integrals_dz_kl = zip(*dz_kl)
ezfio.pseudo_pseudo_v_kl = zip(*v_kl)
ezfio.pseudo_pseudo_n_kl = zip(*n_kl)
ezfio.pseudo_pseudo_dz_kl = zip(*dz_kl)
ezfio.pseudo_integrals_do_pseudo = True
ezfio.pseudo_do_pseudo = True

View File

@ -66,3 +66,6 @@ ${QPACKAGE_ROOT}/scripts/module/create_Makefile_depend.sh
# Update EZFIO interface
${QPACKAGE_ROOT}/scripts/ezfio_interface/ei_handler.py
# Create png
${QPACKAGE_ROOT}/scripts/module/module_handler.py create_png

View File

@ -2,7 +2,7 @@
"""Updates the README.rst file as the include directive is disabled on GitHub."""
__date__ = "Thu Apr 3 23:06:18 CEST 2014"
__author__ = "Anthony Scemama <scemama@irsamc.ups-tlse.fr>"
__author__ = "Anthony Scemama<scemama@irsamc.ups-tlse.fr> & TApplencourt "
README = "README.rst"
@ -21,12 +21,6 @@ header = """
"""
try:
# subprocess.check_output("git status".split())
has_git = True
except OSError:
has_git = False
def fetch_splitted_data():
"""Read the README.rst file and split it in strings:
@ -87,10 +81,12 @@ def update_needed(data):
modules = file.read()
file.close()
header_image = ".. image:: tree_dependancy.png\n\n"
if modules.strip() != "":
modules = ['* `%s <%s%s>`_' % (x, URL, x) for x in modules.split()]
modules = "\n".join(modules)
modules = Needed_key + header + modules + '\n\n'
modules = Needed_key + header + header_image + modules + '\n\n'
has_modules = False
for i in range(len(data)):

View File

@ -28,7 +28,7 @@ EOF
source quantum_package.rc
mkdir -p install_logs
echo "${BLUE}===== Installing IRPF90 ===== ${BLACK}"
${QPACKAGE_ROOT}/scripts/install/install_irpf90.sh | tee ${QPACKAGE_ROOT}/install_logs/install_irpf90.log
if [[ ! -d ${QPACKAGE_ROOT}/irpf90 ]] || [[ ! -x ${QPACKAGE_ROOT}/bin/irpf90 ]] || [[ ! -x ${QPACKAGE_ROOT}/bin/irpman ]]

View File

@ -1 +1 @@
Nuclei
Nuclei Utils

View File

@ -39,7 +39,10 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Nuclei <http://github.com/LCPQ/quantum_package/tree/master/src/Nuclei>`_
* `Utils <http://github.com/LCPQ/quantum_package/tree/master/src/Utils>`_
Documentation
=============
@ -144,5 +147,11 @@ Documentation
Per convention, for P,D,F and G AOs, we take the index
of the AO with the the corresponding power in the "X" axis
`n_pt_max_i_x <http://github.com/LCPQ/quantum_package/tree/master/src/AOs/dimensions_integrals.irp.f#L2>`_
Undocumented
`n_pt_max_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/AOs/dimensions_integrals.irp.f#L1>`_
Undocumented

BIN
src/AOs/tree_dependancy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1 +0,0 @@
MonoInts Bitmask

View File

@ -40,6 +40,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `MOs <http://github.com/LCPQ/quantum_package/tree/master/src/MOs>`_
Documentation

View File

@ -8,4 +8,4 @@ module bitmasks
integer, parameter :: d_part2 = 4
integer, parameter :: s_hole = 5
integer, parameter :: s_part = 6
end module
end module bitmasks

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1,29 +1,3 @@
[N_det_max_cas_sd]
type: Det_number_max
doc: Max number of determinants in the wave function
interface: input
default: 10000
[do_pt2_end]
type: logical
doc: If true, compute the PT2 at the end of the selection
interface: input
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
interface: input
default: 0.0001
[var_pt2_ratio]
type: Normalized_float
doc: The selection process stops when the energy ratio variational/(variational+PT2)
is equal to var_pt2_ratio
interface: input
default: 0.75
[energy]
type: double precision
doc: "Calculated CAS-SD energy"

View File

@ -24,6 +24,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Perturbation <http://github.com/LCPQ/quantum_package/tree/master/src/Perturbation>`_
* `Selectors_full <http://github.com/LCPQ/quantum_package/tree/master/src/Selectors_full>`_
* `Generators_CAS <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_CAS>`_

View File

@ -13,12 +13,12 @@ program full_ci
N_det_old = 0
pt2 = 1.d0
diag_algorithm = "Lapack"
if (N_det > n_det_max_cas_sd) then
if (N_det > N_det_max) then
call diagonalize_CI
call save_wavefunction
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_cas_sd
N_det = N_det_max
soft_touch N_det psi_det psi_coef
call diagonalize_CI
call save_wavefunction
@ -30,7 +30,7 @@ program full_ci
print *, '-----'
endif
do while (N_det < n_det_max_cas_sd.and.maxval(abs(pt2(1:N_st))) > pt2_max)
do while (N_det < N_det_max.and.maxval(abs(pt2(1:N_st))) > pt2_max)
N_det_old = N_det
call H_apply_CAS_SD(pt2, norm_pert, H_pert_diag, N_st)
@ -38,10 +38,10 @@ program full_ci
PROVIDE psi_det
PROVIDE psi_det_sorted
if (N_det > n_det_max_cas_sd) then
if (N_det > N_det_max) then
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_cas_sd
N_det = N_det_max
soft_touch N_det psi_det psi_coef
endif
call diagonalize_CI

View File

@ -12,12 +12,12 @@ program full_ci
pt2 = 1.d0
diag_algorithm = "Lapack"
if (N_det > n_det_max_cas_sd) then
if (N_det > N_det_max) then
call diagonalize_CI
call save_wavefunction
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_cas_sd
N_det = N_det_max
soft_touch N_det psi_det psi_coef
call diagonalize_CI
call save_wavefunction
@ -29,17 +29,17 @@ program full_ci
print *, '-----'
endif
do while (N_det < n_det_max_cas_sd.and.maxval(abs(pt2(1:N_st))) > pt2_max)
do while (N_det < N_det_max.and.maxval(abs(pt2(1:N_st))) > pt2_max)
call H_apply_CAS_SD_selected(pt2, norm_pert, H_pert_diag, N_st)
PROVIDE psi_coef
PROVIDE psi_det
PROVIDE psi_det_sorted
if (N_det > n_det_max_cas_sd) then
if (N_det > N_det_max) then
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_cas_sd
N_det = N_det_max
soft_touch N_det psi_det psi_coef
endif
call diagonalize_CI

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

View File

@ -15,6 +15,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Selectors_full <http://github.com/LCPQ/quantum_package/tree/master/src/Selectors_full>`_
* `SingleRefMethod <http://github.com/LCPQ/quantum_package/tree/master/src/SingleRefMethod>`_

BIN
src/CID/tree_dependancy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View File

@ -19,5 +19,7 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `CID_selected <http://github.com/LCPQ/quantum_package/tree/master/src/CID_selected>`_

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@ -22,6 +22,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Perturbation <http://github.com/LCPQ/quantum_package/tree/master/src/Perturbation>`_
* `CID <http://github.com/LCPQ/quantum_package/tree/master/src/CID>`_

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

View File

@ -31,6 +31,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Selectors_full <http://github.com/LCPQ/quantum_package/tree/master/src/Selectors_full>`_
* `SingleRefMethod <http://github.com/LCPQ/quantum_package/tree/master/src/SingleRefMethod>`_

BIN
src/CIS/tree_dependancy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View File

@ -15,6 +15,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Selectors_full <http://github.com/LCPQ/quantum_package/tree/master/src/Selectors_full>`_
* `SingleRefMethod <http://github.com/LCPQ/quantum_package/tree/master/src/SingleRefMethod>`_

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View File

@ -1,22 +1,3 @@
[N_det_max_cisd_sc2]
type: Det_number_max
doc: Max number of determinants
interface: input
default: 10000
[do_pt2_end]
type: logical
doc: If true, compute the PT2 at the end of the selection
interface: input
default: True
[PT2_max]
type: PT2_energy
doc: The selection process stops when the largest PT2 (for all the states) is lower
than abs(pt2_max)
interface: input
default: 0.0001
[energy]
type: double precision
doc: Calculated CISD_SC2 energy of ground_state

View File

@ -19,5 +19,7 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `CISD_selected <http://github.com/LCPQ/quantum_package/tree/master/src/CISD_selected>`_

View File

@ -15,12 +15,12 @@ program cisd_sc2_selected
E_old(1) = HF_energy
davidson_threshold = 1.d-10
if (N_det > n_det_max_cisd_sc2) then
if (N_det > N_det_max) then
call diagonalize_CI_SC2
call save_wavefunction
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_cisd_sc2
N_det = N_det_max
soft_touch N_det psi_det psi_coef
call diagonalize_CI
call save_wavefunction
@ -34,7 +34,7 @@ program cisd_sc2_selected
integer :: i_count
i_count = 0
do while (N_det < n_det_max_cisd_sc2.and.maxval(abs(pt2(1:N_st))) > pt2_max)
do while (N_det < N_det_max.and.maxval(abs(pt2(1:N_st))) > pt2_max)
print*,'----'
print*,''
call H_apply_SC2_selected(pt2, norm_pert, H_pert_diag, N_st)
@ -70,7 +70,7 @@ program cisd_sc2_selected
call ezfio_set_full_ci_energy(CI_SC2_energy(1))
enddo
N_det = min(n_det_max_cisd_sc2,N_det)
N_det = min(N_det_max,N_det)
davidson_threshold = 1.d-10
touch N_det psi_det psi_coef davidson_threshold davidson_criterion
call diagonalize_CI_SC2

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

View File

@ -14,12 +14,6 @@ Documentation
`cisd <http://github.com/LCPQ/quantum_package/tree/master/src/CISD_selected/cisd_selection.irp.f#L1>`_
Undocumented
`n_det_max_cisd <http://github.com/LCPQ/quantum_package/tree/master/src/CISD_selected/options.irp.f#L1>`_
Get n_det_max_cisd from EZFIO file
`pt2_max <http://github.com/LCPQ/quantum_package/tree/master/src/CISD_selected/options.irp.f#L18>`_
Get pt2_max from EZFIO file
Needed Modules
@ -28,6 +22,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Perturbation <http://github.com/LCPQ/quantum_package/tree/master/src/Perturbation>`_
* `CISD <http://github.com/LCPQ/quantum_package/tree/master/src/CISD>`_

View File

@ -1,3 +0,0 @@
cisd_selected
n_det_max_cisd integer
pt2_max double precision

View File

@ -18,7 +18,7 @@ program cisd
print *, 'E = ', CI_energy(i)
enddo
E_old = CI_energy
do while (maxval(abs(pt2(1:N_st))) > pt2_max.and.n_det < n_det_max_cisd)
do while (maxval(abs(pt2(1:N_st))) > pt2_max.and.n_det < N_det_max)
print*,'----'
print*,''
call H_apply_cisd_selection(perturbation,pt2, norm_pert, H_pert_diag, N_st)
@ -38,7 +38,7 @@ program cisd
exit
endif
enddo
N_det = min(N_det,n_det_max_cisd)
N_det = min(N_det,N_det_max)
touch N_det psi_det psi_coef
call diagonalize_CI
deallocate(pt2,norm_pert,H_pert_diag)

View File

@ -1,34 +0,0 @@
BEGIN_PROVIDER [ integer, n_det_max_cisd ]
implicit none
BEGIN_DOC
! Get n_det_max_cisd from EZFIO file
END_DOC
logical :: has_n_det_max_cisd
PROVIDE ezfio_filename
call ezfio_has_cisd_selected_n_det_max_cisd(has_n_det_max_cisd)
if (has_n_det_max_cisd) then
call ezfio_get_cisd_selected_n_det_max_cisd(n_det_max_cisd)
else
n_det_max_cisd = 30000
call ezfio_set_cisd_selected_n_det_max_cisd(n_det_max_cisd)
endif
print*,'n_det_max_cisd = ',n_det_max_cisd
END_PROVIDER
BEGIN_PROVIDER [ double precision , pt2_max ]
implicit none
BEGIN_DOC
! Get pt2_max from EZFIO file
END_DOC
logical :: has_pt2_max
PROVIDE ezfio_filename
call ezfio_has_cisd_selected_pt2_max(has_pt2_max)
if (has_pt2_max) then
call ezfio_get_cisd_selected_pt2_max(pt2_max)
else
pt2_max = 1.d-9
call ezfio_set_cisd_selected_pt2_max(pt2_max)
endif
print*,'pt2_max = ',pt2_max
END_PROVIDER

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View File

@ -19,6 +19,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Perturbation <http://github.com/LCPQ/quantum_package/tree/master/src/Perturbation>`_
* `Selectors_full <http://github.com/LCPQ/quantum_package/tree/master/src/Selectors_full>`_
* `Generators_CAS <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_CAS>`_

View File

@ -11,12 +11,12 @@ program full_ci
pt2 = 1.d0
diag_algorithm = "Lapack"
if (N_det > n_det_max_fci) then
if (N_det > N_det_max) then
call diagonalize_CI
call save_wavefunction
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_fci
N_det = N_det_max
soft_touch N_det psi_det psi_coef
call diagonalize_CI
call save_wavefunction
@ -28,17 +28,17 @@ program full_ci
print *, '-----'
endif
do while (N_det < n_det_max_fci.and.maxval(abs(pt2(1:N_st))) > pt2_max)
do while (N_det < N_det_max.and.maxval(abs(pt2(1:N_st))) > pt2_max)
call H_apply_DDCI_selection(pt2, norm_pert, H_pert_diag, N_st)
PROVIDE psi_coef
PROVIDE psi_det
PROVIDE psi_det_sorted
if (N_det > n_det_max_fci) then
if (N_det > N_det_max) then
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_fci
N_det = N_det_max
soft_touch N_det psi_det psi_coef
endif
call diagonalize_CI

View File

@ -1,32 +0,0 @@
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
T.set_type ( "double precision" )
T.set_name ( "var_pt2_ratio" )
T.set_doc ( """The selection process stops when the energy ratio variational/(variational+PT2)
is equal to var_pt2_ratio""" )
T.set_ezfio_name( "var_pt2_ratio" )
print T
END_SHELL

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

View File

@ -0,0 +1 @@
AOs Pseudo

70
src/DensityFit/README.rst Normal file
View File

@ -0,0 +1,70 @@
=================
DensityFit Module
=================
In this module, the basis of all the products of atomic orbitals is built.
Documentation
=============
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
`aux_basis_coef <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L94>`_
Exponents and coefficients of the auxiliary basis
`aux_basis_coef_transp <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L37>`_
Exponents of the auxiliary basis
`aux_basis_expo <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L93>`_
Exponents and coefficients of the auxiliary basis
`aux_basis_expo_transp <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L36>`_
Exponents of the auxiliary basis
`aux_basis_idx <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L20>`_
aux_basis_idx(k) -> i,j
`aux_basis_nucl <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L40>`_
Exponents of the auxiliary basis
`aux_basis_num <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L2>`_
Number of auxiliary basis functions
`aux_basis_num_8 <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L3>`_
Number of auxiliary basis functions
`aux_basis_num_sqrt <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L1>`_
Number of auxiliary basis functions
`aux_basis_overlap_matrix <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L69>`_
Auxiliary basis set
`aux_basis_power <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L39>`_
Exponents of the auxiliary basis
`aux_basis_prim_num <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L38>`_
Exponents of the auxiliary basis
`aux_basis_prim_num_max <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L111>`_
= ao_prim_num_max
`save_aux_basis <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/aux_basis.irp.f#L120>`_
Undocumented
`aux_basis_four_overlap <http://github.com/LCPQ/quantum_package/tree/master/src/DensityFit/overlap.irp.f#L1>`_
\int \chi_i(r) \chi_j(r) \chi_k(r) \chi_l(r) dr
Needed Modules
==============
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
* `Pseudo <http://github.com/LCPQ/quantum_package/tree/master/src/Pseudo>`_

View File

@ -0,0 +1,12 @@
aux_basis
aux_basis_num integer
aux_basis_num_sqrt integer
aux_basis_idx integer (2,aux_basis_aux_basis_num)
aux_basis_prim_num integer (aux_basis_aux_basis_num_sqrt)
aux_basis_nucl integer (aux_basis_aux_basis_num_sqrt)
aux_basis_power integer (aux_basis_aux_basis_num_sqrt,3)
aux_basis_prim_num_max integer = maxval(aux_basis_aux_basis_prim_num)
aux_basis_coef double precision (aux_basis_aux_basis_num_sqrt,aux_basis_aux_basis_prim_num_max)
aux_basis_expo double precision (aux_basis_aux_basis_num_sqrt,aux_basis_aux_basis_prim_num_max)

View File

@ -0,0 +1,130 @@
BEGIN_PROVIDER [ integer, aux_basis_num_sqrt ]
&BEGIN_PROVIDER [ integer, aux_basis_num ]
&BEGIN_PROVIDER [ integer, aux_basis_num_8 ]
implicit none
BEGIN_DOC
! Number of auxiliary basis functions
END_DOC
integer :: align_double
if (do_pseudo) then
! aux_basis_num_sqrt = ao_num + ao_pseudo_num
aux_basis_num_sqrt = ao_num
else
endif
aux_basis_num = aux_basis_num_sqrt * (aux_basis_num_sqrt+1)/2
aux_basis_num_8 = align_double(aux_basis_num)
END_PROVIDER
BEGIN_PROVIDER [ integer, aux_basis_idx, (2,aux_basis_num) ]
implicit none
BEGIN_DOC
! aux_basis_idx(k) -> i,j
END_DOC
integer :: i,j,k
k=0
do j=1,aux_basis_num_sqrt
do i=1,j
k = k+1
aux_basis_idx(1,k) = i
aux_basis_idx(2,k) = j
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, aux_basis_expo_transp, (ao_prim_num_max_align,aux_basis_num_sqrt) ]
&BEGIN_PROVIDER [ double precision, aux_basis_coef_transp, (ao_prim_num_max_align,aux_basis_num_sqrt) ]
&BEGIN_PROVIDER [ integer, aux_basis_prim_num, (aux_basis_num_sqrt) ]
&BEGIN_PROVIDER [ integer, aux_basis_power, (aux_basis_num_sqrt,3) ]
&BEGIN_PROVIDER [ integer, aux_basis_nucl, (aux_basis_num_sqrt) ]
implicit none
BEGIN_DOC
! Exponents of the auxiliary basis
END_DOC
integer :: i,j
do j=1,ao_num
do i=1,ao_prim_num_max
aux_basis_expo_transp(i,j) = ao_expo_ordered_transp(i,j)
aux_basis_coef_transp(i,j) = ao_coef_normalized_ordered_transp(i,j)
enddo
enddo
do i=1,ao_num
aux_basis_prim_num(i) = ao_prim_num(i)
aux_basis_nucl(i) = ao_nucl(i)
aux_basis_power(i,1:3) = ao_power(i,1:3)
enddo
! do j=1,ao_pseudo_num
! aux_basis_expo_transp(1,ao_num+j) = 0.5d0*pseudo_ao_expo(j)
! aux_basis_coef_transp(1,ao_num+j) = 1.d0
! aux_basis_power(ao_num+j,1:3) = 0
! aux_basis_prim_num(ao_num+j) = 1
! aux_basis_nucl(ao_num+j) = pseudo_ao_nucl(j)
! enddo
END_PROVIDER
BEGIN_PROVIDER [ double precision, aux_basis_overlap_matrix, (aux_basis_num_8,aux_basis_num) ]
implicit none
BEGIN_DOC
! Auxiliary basis set
END_DOC
integer :: m,n,i,j,k,l
double precision :: aux_basis_four_overlap
aux_basis_overlap_matrix(1,1) = aux_basis_four_overlap(1,1,1,1)
!$OMP PARALLEL DO PRIVATE(i,j,k,l,m,n) SCHEDULE(GUIDED)
do m=1,aux_basis_num
i = aux_basis_idx(1,m)
j = aux_basis_idx(2,m)
do n=1,m
k = aux_basis_idx(1,n)
l = aux_basis_idx(2,n)
aux_basis_overlap_matrix(m,n) = aux_basis_four_overlap(i,j,k,l)
aux_basis_overlap_matrix(n,m) = aux_basis_overlap_matrix(m,n)
enddo
enddo
!$OMP END PARALLEL DO
END_PROVIDER
BEGIN_PROVIDER [ double precision, aux_basis_expo, (aux_basis_num_sqrt,aux_basis_prim_num_max) ]
&BEGIN_PROVIDER [ double precision, aux_basis_coef, (aux_basis_num_sqrt,aux_basis_prim_num_max) ]
implicit none
BEGIN_DOC
! Exponents and coefficients of the auxiliary basis
END_DOC
integer :: i,j
aux_basis_expo = 0.d0
aux_basis_coef = 0.d0
do j=1,aux_basis_num_sqrt
do i=1,aux_basis_prim_num(j)
aux_basis_expo(j,i) = aux_basis_expo_transp(i,j)
aux_basis_coef(j,i) = aux_basis_coef_transp(i,j)
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ integer, aux_basis_prim_num_max ]
implicit none
BEGIN_DOC
! = ao_prim_num_max
END_DOC
aux_basis_prim_num_max = ao_prim_num_max
END_PROVIDER
subroutine save_aux_basis
implicit none
call ezfio_set_aux_basis_aux_basis_num(aux_basis_num)
call ezfio_set_aux_basis_aux_basis_num_sqrt(aux_basis_num_sqrt)
call ezfio_set_aux_basis_aux_basis_idx(aux_basis_idx)
call ezfio_set_aux_basis_aux_basis_prim_num(aux_basis_prim_num)
call ezfio_set_aux_basis_aux_basis_nucl(aux_basis_nucl)
call ezfio_set_aux_basis_aux_basis_power(aux_basis_power)
call ezfio_set_aux_basis_aux_basis_coef(aux_basis_coef)
call ezfio_set_aux_basis_aux_basis_expo(aux_basis_expo)
end

View File

@ -0,0 +1,66 @@
double precision function aux_basis_four_overlap(i,j,k,l)
implicit none
BEGIN_DOC
! \int \chi_i(r) \chi_j(r) \chi_k(r) \chi_l(r) dr
END_DOC
integer,intent(in) :: i,j,k,l
integer :: p,q,r,s
double precision :: I_center(3),J_center(3),K_center(3),L_center(3)
integer :: num_i,num_j,num_k,num_l,dim1,I_power(3),J_power(3),K_power(3),L_power(3)
double precision :: overlap_x,overlap_y,overlap_z, overlap
include 'include/constants.F'
double precision :: P_new(0:max_dim,3),P_center(3),fact_p,pp
double precision :: Q_new(0:max_dim,3),Q_center(3),fact_q,qq
integer :: iorder_p(3), iorder_q(3)
dim1 = n_pt_max_integrals
num_i = aux_basis_nucl(i)
num_j = aux_basis_nucl(j)
num_k = aux_basis_nucl(k)
num_l = aux_basis_nucl(l)
aux_basis_four_overlap = 0.d0
do p = 1, 3
I_power(p) = aux_basis_power(i,p)
J_power(p) = aux_basis_power(j,p)
K_power(p) = aux_basis_power(k,p)
L_power(p) = aux_basis_power(l,p)
I_center(p) = nucl_coord(num_i,p)
J_center(p) = nucl_coord(num_j,p)
K_center(p) = nucl_coord(num_k,p)
L_center(p) = nucl_coord(num_l,p)
enddo
do p = 1, aux_basis_prim_num(i)
double precision :: coef1
coef1 = aux_basis_coef_transp(p,i)
do q = 1, aux_basis_prim_num(j)
call give_explicit_poly_and_gaussian(P_new,P_center,pp,fact_p,iorder_p,&
aux_basis_expo_transp(p,i),aux_basis_expo_transp(q,j), &
I_power,J_power,I_center,J_center,dim1)
double precision :: coef2
coef2 = coef1*aux_basis_coef_transp(q,j)*fact_p
do r = 1, aux_basis_prim_num(k)
double precision :: coef3
coef3 = coef2*aux_basis_coef_transp(r,k)
do s = 1, aux_basis_prim_num(l)
double precision :: general_primitive_integral
call give_explicit_poly_and_gaussian(Q_new,Q_center,qq,fact_q,iorder_q, &
aux_basis_expo_transp(r,k),aux_basis_expo_transp(s,l), &
K_power,L_power,K_center,L_center,dim1)
double precision :: coef4
coef4 = coef3*aux_basis_coef_transp(s,l)*fact_q
call overlap_gaussian_xyz(P_center,Q_center,pp,qq,iorder_p,iorder_q,overlap_x,overlap_y,overlap_z,overlap,dim1)
aux_basis_four_overlap += coef4 * overlap
enddo ! s
enddo ! r
enddo ! q
enddo ! p
end
! TODO : Schwartz acceleration

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -1,15 +1,27 @@
[N_det_max]
type: Det_number_max
doc: Max number of determinants in the wave function
interface: input
default: 10000
[N_det_max_property]
type: Det_number_max
doc: Max number of determinants in the wave function when you select for a given property
interface: input
default: 10000
[N_det_max_jacobi]
type: Det_number_max
doc: Maximum number of determinants diagonalized by Jacobi
interface: input
default: 1000
[N_states]
type: States_number
doc: Number of states to consider
interface: input
default: 1
[N_det_max_jacobi]
type: Strictly_positive_int
doc: Maximum number of determinants diagonalized by Jacobi
interface: input
default: 1000
[read_wf]
type: logical
doc: If true, read the wave function from the EZFIO file
@ -40,9 +52,6 @@ doc: Thresholds on selectors (fraction of the norm)
interface: input
default: 0.999
# Only create the ezfio_config, (no Input_* and no PROVIDER)
[n_states_diag]
type: integer
doc: n_states_diag
@ -72,13 +81,13 @@ type: integer
interface: OCaml
doc: psi_coef
type: double precision
size: (determinants_n_det,determinants_n_states)
size: (determinants.n_det,determinants.n_states)
[psi_det]
interface: OCaml
doc: psi_det
type: integer*8
size: (determinants_n_int*determinants_bit_kind/8,2,determinants_n_det)
size: (determinants.n_int*determinants.bit_kind/8,2,determinants.n_det)
[det_num]
interface: OCaml
@ -89,13 +98,13 @@ type: integer
interface: OCaml
doc: det_occ
type: integer
size: (electrons_elec_alpha_num,determinants_det_num,2)
size: (electrons.elec_alpha_num,determinants.det_num,2)
[det_coef]
interface: OCaml
doc: det_coef
type: double precision
size: (determinants_det_num)
size: (determinants.det_num)
[expected_s2]
interface: OCaml

View File

@ -1 +1 @@
Bielec_integrals
Integrals_Monoelec Integrals_Bielec

View File

@ -32,7 +32,10 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
.. image:: tree_dependancy.png
* `Integrals_Monoelec <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Monoelec>`_
* `Integrals_Bielec <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec>`_
Documentation
=============
@ -529,12 +532,6 @@ Documentation
`save_casino <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/save_for_casino.irp.f#L1>`_
Undocumented
`save_dets_qmcchem <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/save_for_qmcchem.irp.f#L1>`_
Undocumented
`save_for_qmc <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/save_for_qmcchem.irp.f#L46>`_
Undocumented
`save_natorb <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/save_natorb.irp.f#L1>`_
Undocumented

View File

@ -1,51 +0,0 @@
subroutine save_dets_qmcchem
use bitmasks
implicit none
character :: c(mo_tot_num)
integer :: i,k
integer, allocatable :: occ(:,:,:), occ_tmp(:,:)
!DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: occ, occ_tmp
call ezfio_set_determinants_det_num(N_det)
call ezfio_set_determinants_det_coef(psi_coef_sorted(1,1))
allocate (occ(elec_alpha_num,N_det,2))
! OMP PARALLEL DEFAULT(NONE) &
! OMP PRIVATE(occ_tmp,i,k)&
! OMP SHARED(N_det,psi_det_sorted,elec_alpha_num, &
! OMP occ,elec_beta_num,N_int)
allocate (occ_tmp(N_int*bit_kind_size,2))
occ_tmp = 0
! OMP DO
do i=1,N_det
call bitstring_to_list(psi_det_sorted(1,1,i), occ_tmp(1,1), elec_alpha_num, N_int )
call bitstring_to_list(psi_det_sorted(1,2,i), occ_tmp(1,2), elec_beta_num, N_int )
do k=1,elec_alpha_num
occ(k,i,1) = occ_tmp(k,1)
occ(k,i,2) = occ_tmp(k,2)
enddo
enddo
! OMP END DO
deallocate(occ_tmp)
! OMP END PARALLEL
call ezfio_set_determinants_det_occ(occ)
call write_int(output_determinants,N_det,'Determinants saved for QMC')
deallocate(occ)
open(unit=31,file=trim(ezfio_filename)//'/mo_basis/mo_classif')
write(31,'(I1)') 1
write(31,*) mo_tot_num
do i=1,mo_tot_num
write(31,'(A)') 'a'
enddo
close(31)
call system('gzip -f '//trim(ezfio_filename)//'/mo_basis/mo_classif')
end
program save_for_qmc
read_wf = .True.
TOUCH read_wf
! call save_dets_qmcchem
call write_spindeterminants
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View File

@ -1 +1 @@
Output
Ezfio_files

View File

@ -24,7 +24,9 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
* `Output <http://github.com/LCPQ/quantum_package/tree/master/src/Output>`_
.. image:: tree_dependancy.png
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
Documentation
=============

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -28,6 +28,24 @@ Documentation
'x' : READ/WRITE, FORMATTED
.br
`output_cpu_time_0 <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files/output.irp.f#L2>`_
Initial CPU and wall times when printing in the output files
`output_wall_time_0 <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files/output.irp.f#L1>`_
Initial CPU and wall times when printing in the output files
`write_bool <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files/output.irp.f#L88>`_
Write an logical value in output
`write_double <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files/output.irp.f#L58>`_
Write a double precision value in output
`write_int <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files/output.irp.f#L73>`_
Write an integer value in output
`write_time <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files/output.irp.f#L42>`_
Write a time stamp in the output for chronological reconstruction

View File

@ -20,8 +20,8 @@ BEGIN_SHELL [ /bin/bash ]
! Output file for $NAME
END_DOC
PROVIDE output_wall_time_0 output_cpu_time_0 ezfio_filename
integer :: getUnitAndOpen
call ezfio_set_output_empty(.False.)
! integer :: getUnitAndOpen
! call ezfio_set_output_empty(.False.)
IRP_IF COARRAY
if (this_image() == 1) then
output_$NAME = 6 !getUnitAndOpen(trim(ezfio_filename)//'/output/'//'$NAME.rst','a')

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -10,9 +10,6 @@ Documentation
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
`fcidump <http://github.com/LCPQ/quantum_package/tree/master/src/FCIdump/fcidump.irp.f#L1>`_
Undocumented
Needed Modules
@ -21,5 +18,7 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -1,35 +1,3 @@
[N_det_max_fci]
type: Det_number_max
doc: Max number of determinants in the wave function
interface: input
default: 10000
[N_det_max_fci_property]
type: Det_number_max
doc: Max number of determinants in the wave function when you select for a given property
interface: input
default: 10000
[do_pt2_end]
type: logical
doc: If true, compute the PT2 at the end of the selection
interface: input
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
interface: input
default: 0.0001
[var_pt2_ratio]
type: Normalized_float
doc: The selection process stops when the energy ratio variational/(variational+PT2)
is equal to var_pt2_ratio
interface: input
default: 0.75
[energy]
type: double precision
doc: Calculated Selected FCI energy

View File

@ -24,6 +24,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Perturbation <http://github.com/LCPQ/quantum_package/tree/master/src/Perturbation>`_
* `Selectors_full <http://github.com/LCPQ/quantum_package/tree/master/src/Selectors_full>`_
* `Generators_full <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full>`_

View File

@ -11,12 +11,12 @@ program full_ci
pt2 = 1.d0
diag_algorithm = "Lapack"
if (N_det > n_det_max_fci) then
if (N_det > N_det_max) then
call diagonalize_CI
call save_wavefunction
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_fci
N_det = N_det_max
soft_touch N_det psi_det psi_coef
call diagonalize_CI
call save_wavefunction
@ -38,7 +38,7 @@ program full_ci
integer :: n_det_before
print*,'Beginning the selection ...'
do while (N_det < n_det_max_fci.and.maxval(abs(pt2(1:N_st))) > pt2_max)
do while (N_det < N_det_max.and.maxval(abs(pt2(1:N_st))) > pt2_max)
n_det_before = N_det
call H_apply_FCI(pt2, norm_pert, H_pert_diag, N_st)
@ -46,10 +46,10 @@ program full_ci
PROVIDE psi_det
PROVIDE psi_det_sorted
if (N_det > n_det_max_fci) then
if (N_det > N_det_max) then
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_fci
N_det = N_det_max
soft_touch N_det psi_det psi_coef
endif
call diagonalize_CI
@ -68,7 +68,7 @@ program full_ci
exit
endif
enddo
N_det = min(n_det_max_fci,N_det)
N_det = min(N_det_max,N_det)
touch N_det psi_det psi_coef
call diagonalize_CI
if(do_pt2_end)then

View File

@ -11,12 +11,12 @@ program full_ci
pt2 = 1.d0
diag_algorithm = "Lapack"
if (N_det > n_det_max_fci) then
if (N_det > N_det_max) then
call diagonalize_CI
call save_wavefunction
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_fci
N_det = N_det_max
soft_touch N_det psi_det psi_coef
call diagonalize_CI
call save_wavefunction
@ -38,7 +38,7 @@ program full_ci
integer :: n_det_before
print*,'Beginning the selection ...'
do while (N_det < n_det_max_fci.and.maxval(abs(pt2(1:N_st))) > pt2_max)
do while (N_det < N_det_max.and.maxval(abs(pt2(1:N_st))) > pt2_max)
n_det_before = N_det
call H_apply_FCI_no_skip(pt2, norm_pert, H_pert_diag, N_st)
@ -46,10 +46,10 @@ program full_ci
PROVIDE psi_det
PROVIDE psi_det_sorted
if (N_det > n_det_max_fci) then
if (N_det > N_det_max) then
psi_det = psi_det_sorted
psi_coef = psi_coef_sorted
N_det = n_det_max_fci
N_det = N_det_max
soft_touch N_det psi_det psi_coef
endif
call diagonalize_CI
@ -68,7 +68,7 @@ program full_ci
exit
endif
enddo
N_det = min(n_det_max_fci,N_det)
N_det = min(N_det_max,N_det)
touch N_det psi_det psi_coef
call diagonalize_CI
if(do_pt2_end)then

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

View File

@ -43,5 +43,7 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -40,6 +40,8 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
.. image:: tree_dependancy.png
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -1 +1 @@
Bielec_integrals MOGuess
Integrals_Bielec MOGuess

View File

@ -10,7 +10,9 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
.. image:: tree_dependancy.png
* `Integrals_Bielec <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec>`_
* `MOGuess <http://github.com/LCPQ/quantum_package/tree/master/src/MOGuess>`_
Documentation

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -0,0 +1 @@
Pseudo MOs Bitmask

View File

@ -16,7 +16,10 @@ Needed Modules
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
* `MonoInts <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts>`_
.. image:: tree_dependancy.png
* `Pseudo <http://github.com/LCPQ/quantum_package/tree/master/src/Pseudo>`_
* `MOs <http://github.com/LCPQ/quantum_package/tree/master/src/MOs>`_
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
Documentation
@ -25,192 +28,192 @@ Documentation
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
`ao_bielec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L1>`_
`ao_bielec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L1>`_
integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
`ao_bielec_integral_schwartz <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L491>`_
`ao_bielec_integral_schwartz <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L489>`_
Needed to compute Schwartz inequalities
`ao_bielec_integral_schwartz_accel <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L107>`_
`ao_bielec_integral_schwartz_accel <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L107>`_
integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
`ao_bielec_integrals_in_map <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L322>`_
`ao_bielec_integrals_in_map <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L322>`_
Map of Atomic integrals
i(r1) j(r2) 1/r12 k(r1) l(r2)
`ao_l4 <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L279>`_
`ao_l4 <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L279>`_
Computes the product of l values of i,j,k,and l
`compute_ao_bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L290>`_
`compute_ao_bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L290>`_
Compute AO 1/r12 integrals for all i and fixed j,k,l
`eri <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L654>`_
`eri <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L652>`_
ATOMIC PRIMTIVE bielectronic integral between the 4 primitives ::
primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2)
primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2)
primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2)
primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2)
`general_primitive_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L516>`_
`general_primitive_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L514>`_
Computes the integral <pq|rs> where p,q,r,s are Gaussian primitives
`give_polynom_mult_center_x <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L852>`_
`give_polynom_mult_center_x <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L850>`_
subroutine that returns the explicit polynom in term of the "t"
variable of the following polynomw :
I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q)
`i_x1_new <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L773>`_
`i_x1_new <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L771>`_
recursive function involved in the bielectronic integral
`i_x1_pol_mult <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L915>`_
`i_x1_pol_mult <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L913>`_
recursive function involved in the bielectronic integral
`i_x1_pol_mult_a1 <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L1035>`_
`i_x1_pol_mult_a1 <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L1033>`_
recursive function involved in the bielectronic integral
`i_x1_pol_mult_a2 <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L1089>`_
`i_x1_pol_mult_a2 <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L1087>`_
recursive function involved in the bielectronic integral
`i_x1_pol_mult_recurs <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L949>`_
`i_x1_pol_mult_recurs <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L947>`_
recursive function involved in the bielectronic integral
`i_x2_new <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L808>`_
`i_x2_new <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L806>`_
recursive function involved in the bielectronic integral
`i_x2_pol_mult <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L1151>`_
`i_x2_pol_mult <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L1149>`_
recursive function involved in the bielectronic integral
`integrale_new <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L699>`_
`integrale_new <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L697>`_
calculate the integral of the polynom ::
I_x1(a_x+b_x, c_x+d_x,p,q) * I_x1(a_y+b_y, c_y+d_y,p,q) * I_x1(a_z+b_z, c_z+d_z,p,q)
between ( 0 ; 1)
`n_pt_sup <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/ao_bi_integrals.irp.f#L838>`_
`n_pt_sup <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/ao_bi_integrals.irp.f#L836>`_
Returns the upper boundary of the degree of the polynomial involved in the
bielctronic integral :
Ix(a_x,b_x,c_x,d_x) * Iy(a_y,b_y,c_y,d_y) * Iz(a_z,b_z,c_z,d_z)
`gauleg <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/gauss_legendre.irp.f#L29>`_
`gauleg <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/gauss_legendre.irp.f#L29>`_
Gauss-Legendre
`gauleg_t2 <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/gauss_legendre.irp.f#L10>`_
`gauleg_t2 <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/gauss_legendre.irp.f#L10>`_
t_w(i,1,k) = w(i)
t_w(i,2,k) = t(i)
`gauleg_w <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/gauss_legendre.irp.f#L11>`_
`gauleg_w <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/gauss_legendre.irp.f#L11>`_
t_w(i,1,k) = w(i)
t_w(i,2,k) = t(i)
`n_pt_max_integrals_16 <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/gauss_legendre.irp.f#L1>`_
`n_pt_max_integrals_16 <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/gauss_legendre.irp.f#L1>`_
Aligned n_pt_max_integrals
`ao_integrals_map <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L6>`_
`ao_integrals_map <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L6>`_
AO integrals
`bielec_integrals_index <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L19>`_
`bielec_integrals_index <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L19>`_
Undocumented
`bielec_integrals_index_reverse <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L36>`_
`bielec_integrals_index_reverse <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L36>`_
Undocumented
`clear_ao_map <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L223>`_
`clear_ao_map <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L223>`_
Frees the memory of the AO map
`clear_mo_map <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L399>`_
`clear_mo_map <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L399>`_
Frees the memory of the MO map
`get_ao_bielec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L113>`_
`get_ao_bielec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L113>`_
Gets one AO bi-electronic integral from the AO map
`get_ao_bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L137>`_
`get_ao_bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L137>`_
Gets multiple AO bi-electronic integral from the AO map .
All i are retrieved for j,k,l fixed.
`get_ao_bielec_integrals_non_zero <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L172>`_
`get_ao_bielec_integrals_non_zero <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L172>`_
Gets multiple AO bi-electronic integral from the AO map .
All non-zero i are retrieved for j,k,l fixed.
`get_ao_map_size <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L214>`_
`get_ao_map_size <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L214>`_
Returns the number of elements in the AO map
`get_mo_bielec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L281>`_
`get_mo_bielec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L281>`_
Returns one integral <ij|kl> in the MO basis
`get_mo_bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L310>`_
`get_mo_bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L310>`_
Returns multiple integrals <ij|kl> in the MO basis, all
i for j,k,l fixed.
`get_mo_bielec_integrals_existing_ik <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L341>`_
`get_mo_bielec_integrals_existing_ik <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L341>`_
Returns multiple integrals <ij|kl> in the MO basis, all
i(1)j(1) 1/r12 k(2)l(2)
i for j,k,l fixed.
`get_mo_map_size <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L391>`_
`get_mo_map_size <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L391>`_
Return the number of elements in the MO map
`insert_into_ao_integrals_map <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L250>`_
`insert_into_ao_integrals_map <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L250>`_
Create new entry into AO map
`insert_into_mo_integrals_map <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L265>`_
`insert_into_mo_integrals_map <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L265>`_
Create new entry into MO map, or accumulate in an existing entry
`mo_bielec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L298>`_
`mo_bielec_integral <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L298>`_
Returns one integral <ij|kl> in the MO basis
`mo_integrals_map <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/map_integrals.irp.f#L237>`_
`mo_integrals_map <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/map_integrals.irp.f#L237>`_
MO integrals
`add_integrals_to_map <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/mo_bi_integrals.irp.f#L42>`_
`add_integrals_to_map <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/mo_bi_integrals.irp.f#L42>`_
Adds integrals to tha MO map according to some bitmask
`mo_bielec_integral_jj <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/mo_bi_integrals.irp.f#L465>`_
`mo_bielec_integral_jj <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/mo_bi_integrals.irp.f#L465>`_
mo_bielec_integral_jj(i,j) = J_ij
mo_bielec_integral_jj_exchange(i,j) = K_ij
mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij
`mo_bielec_integral_jj_anti <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/mo_bi_integrals.irp.f#L467>`_
`mo_bielec_integral_jj_anti <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/mo_bi_integrals.irp.f#L467>`_
mo_bielec_integral_jj(i,j) = J_ij
mo_bielec_integral_jj_exchange(i,j) = K_ij
mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij
`mo_bielec_integral_jj_anti_from_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/mo_bi_integrals.irp.f#L327>`_
`mo_bielec_integral_jj_anti_from_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/mo_bi_integrals.irp.f#L327>`_
mo_bielec_integral_jj_from_ao(i,j) = J_ij
mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij
mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij
`mo_bielec_integral_jj_exchange <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/mo_bi_integrals.irp.f#L466>`_
`mo_bielec_integral_jj_exchange <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/mo_bi_integrals.irp.f#L466>`_
mo_bielec_integral_jj(i,j) = J_ij
mo_bielec_integral_jj_exchange(i,j) = K_ij
mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij
`mo_bielec_integral_jj_exchange_from_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/mo_bi_integrals.irp.f#L326>`_
`mo_bielec_integral_jj_exchange_from_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/mo_bi_integrals.irp.f#L326>`_
mo_bielec_integral_jj_from_ao(i,j) = J_ij
mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij
mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij
`mo_bielec_integral_jj_from_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/mo_bi_integrals.irp.f#L325>`_
`mo_bielec_integral_jj_from_ao <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/mo_bi_integrals.irp.f#L325>`_
mo_bielec_integral_jj_from_ao(i,j) = J_ij
mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij
mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij
`mo_bielec_integrals_in_map <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/mo_bi_integrals.irp.f#L22>`_
`mo_bielec_integrals_in_map <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/mo_bi_integrals.irp.f#L22>`_
If True, the map of MO bielectronic integrals is provided
`mo_bielec_integrals_index <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/mo_bi_integrals.irp.f#L1>`_
`mo_bielec_integrals_index <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/mo_bi_integrals.irp.f#L1>`_
Computes an unique index for i,j,k,l integrals
`read_ao_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/read_write.irp.f#L1>`_
`read_ao_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/read_write.irp.f#L1>`_
One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals
`read_mo_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/read_write.irp.f#L2>`_
`read_mo_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/read_write.irp.f#L2>`_
One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals
`write_ao_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/read_write.irp.f#L3>`_
`write_ao_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/read_write.irp.f#L3>`_
One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals
`write_mo_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals/read_write.irp.f#L4>`_
`write_mo_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Integrals_Bielec/read_write.irp.f#L4>`_
One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals

View File

@ -349,7 +349,7 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
integer :: load_ao_integrals
print*,'Reading the AO integrals'
if (load_ao_integrals(trim(ezfio_filename)//'/work/ao_integrals.bin') == 0) then
write(output_bielec_integrals,*) 'AO integrals provided'
print*, 'AO integrals provided'
ao_bielec_integrals_in_map = .True.
return
endif
@ -367,7 +367,7 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
PROVIDE progress_bar
call omp_init_lock(lock)
lmax = ao_num*(ao_num+1)/2
write(output_bielec_integrals,*) 'Providing the AO integrals'
print*, 'Providing the AO integrals'
call wall_time(wall_0)
call wall_time(wall_1)
call cpu_time(cpu_1)
@ -378,7 +378,7 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
!$OMP DEFAULT(NONE) &
!$OMP SHARED (ao_num, jl_pairs, ao_integrals_map,thresh, &
!$OMP cpu_1,wall_1,lock, lmax,n_centers,ao_nucl, &
!$OMP ao_overlap_abs,ao_overlap,output_bielec_integrals,abort_here, &
!$OMP ao_overlap_abs,ao_overlap,abort_here, &
!$OMP wall_0,progress_bar,progress_value)
allocate(buffer_i(size_buffer))
@ -445,7 +445,7 @@ IRP_ENDIF
if (thread_num == 0) then
if (wall_2 - wall_0 > 1.d0) then
wall_0 = wall_2
write(output_bielec_integrals,*) 100.*float(kk)/float(lmax), '% in ', &
print*, 100.*float(kk)/float(lmax), '% in ', &
wall_2-wall_1, 's', map_mb(ao_integrals_map) ,'MB'
progress_value = dble(map_mb(ao_integrals_map))
endif
@ -462,32 +462,30 @@ IRP_ENDIF
stop 'Aborting in AO integrals calculation'
endif
IRP_IF COARRAY
write(output_bielec_integrals,*) 'Communicating the map'
print*, 'Communicating the map'
call communicate_ao_integrals()
IRP_ENDIF COARRAY
write(output_bielec_integrals,*) 'Sorting the map'
print*, 'Sorting the map'
call map_sort(ao_integrals_map)
call cpu_time(cpu_2)
call wall_time(wall_2)
integer(map_size_kind) :: get_ao_map_size, ao_map_size
ao_map_size = get_ao_map_size()
write(output_bielec_integrals,*) 'AO integrals provided:'
write(output_bielec_integrals,*) ' Size of AO map : ', map_mb(ao_integrals_map) ,'MB'
write(output_bielec_integrals,*) ' Number of AO integrals :', ao_map_size
write(output_bielec_integrals,*) ' cpu time :',cpu_2 - cpu_1, 's'
write(output_bielec_integrals,*) ' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1+tiny(1.d0)), ' )'
print*, 'AO integrals provided:'
print*, ' Size of AO map : ', map_mb(ao_integrals_map) ,'MB'
print*, ' Number of AO integrals :', ao_map_size
print*, ' cpu time :',cpu_2 - cpu_1, 's'
print*, ' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1+tiny(1.d0)), ' )'
ao_bielec_integrals_in_map = .True.
if (write_ao_integrals) then
call dump_ao_integrals(trim(ezfio_filename)//'/work/ao_integrals.bin')
call ezfio_set_bielec_integrals_disk_access_ao_integrals(.True.)
call ezfio_set_integrals_bielec_disk_access_ao_integrals(.True.)
endif
END_PROVIDER
BEGIN_PROVIDER [ double precision, ao_bielec_integral_schwartz,(ao_num,ao_num) ]
implicit none
BEGIN_DOC

View File

@ -13,7 +13,7 @@ BEGIN_PROVIDER [ type(map_type), ao_integrals_map ]
call bielec_integrals_index(ao_num,ao_num,ao_num,ao_num,key_max)
sze = key_max
call map_init(ao_integrals_map,sze)
write(output_bielec_integrals,*) 'AO map initialized'
print*, 'AO map initialized'
END_PROVIDER
subroutine bielec_integrals_index(i,j,k,l,i1)
@ -244,7 +244,7 @@ BEGIN_PROVIDER [ type(map_type), mo_integrals_map ]
call bielec_integrals_index(mo_tot_num,mo_tot_num,mo_tot_num,mo_tot_num,key_max)
sze = key_max
call map_init(mo_integrals_map,sze)
write(output_bielec_integrals,*) 'MO map initialized'
print*, 'MO map initialized'
END_PROVIDER
subroutine insert_into_ao_integrals_map(n_integrals, &

View File

@ -31,7 +31,7 @@ BEGIN_PROVIDER [ logical, mo_bielec_integrals_in_map ]
integer :: load_mo_integrals
print*,'Reading the MO integrals'
if (load_mo_integrals(trim(ezfio_filename)//'/work/mo_integrals.bin') == 0) then
write(output_bielec_integrals,*) 'MO integrals provided'
print*, 'MO integrals provided'
return
endif
endif
@ -84,8 +84,8 @@ subroutine add_integrals_to_map(mask_ijkl)
call bitstring_to_list( mask_ijkl(1,4), list_ijkl(1,4), n_l, N_int )
size_buffer = min(ao_num*ao_num*ao_num,16000000)
write(output_bielec_integrals,*) 'Providing the molecular integrals '
write(output_bielec_integrals,*) 'Buffers : ', 8.*(mo_tot_num_align*(n_j)*(n_k+1) + mo_tot_num_align +&
print*, 'Providing the molecular integrals '
print*, 'Buffers : ', 8.*(mo_tot_num_align*(n_j)*(n_k+1) + mo_tot_num_align +&
ao_num+ao_num*ao_num+ size_buffer*3)/(1024*1024), 'MB / core'
call wall_time(wall_1)
@ -99,7 +99,7 @@ subroutine add_integrals_to_map(mask_ijkl)
!$OMP wall_0,thread_num) &
!$OMP DEFAULT(NONE) &
!$OMP SHARED(size_buffer,ao_num,mo_tot_num,n_i,n_j,n_k,n_l,mo_tot_num_align,&
!$OMP mo_coef_transp,output_bielec_integrals, &
!$OMP mo_coef_transp, &
!$OMP mo_coef_transp_is_built, list_ijkl, &
!$OMP mo_coef_is_built, wall_1, abort_here, &
!$OMP mo_coef,mo_integrals_threshold,ao_integrals_map,mo_integrals_map,progress_bar,progress_value)
@ -272,7 +272,7 @@ IRP_ENDIF
if (thread_num == 0) then
if (wall_2 - wall_0 > 1.d0) then
wall_0 = wall_2
write(output_bielec_integrals,*) 100.*float(l1)/float(ao_num), '% in ', &
print*, 100.*float(l1)/float(ao_num), '% in ', &
wall_2-wall_1, 's', map_mb(mo_integrals_map) ,'MB'
progress_value = dble(map_mb(mo_integrals_map))
@ -291,7 +291,7 @@ IRP_ENDIF
stop 'Aborting in MO integrals calculation'
endif
IRP_IF COARRAY
write(output_bielec_integrals,*) 'Communicating the map'
print*, 'Communicating the map'
call communicate_mo_integrals()
IRP_ENDIF
call map_unique(mo_integrals_map)
@ -304,15 +304,15 @@ IRP_ENDIF
deallocate(list_ijkl)
write(output_bielec_integrals,*)'Molecular integrals provided:'
write(output_bielec_integrals,*)' Size of MO map ', map_mb(mo_integrals_map) ,'MB'
write(output_bielec_integrals,*)' Number of MO integrals: ', mo_map_size
write(output_bielec_integrals,*)' cpu time :',cpu_2 - cpu_1, 's'
write(output_bielec_integrals,*)' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1), ')'
print*,'Molecular integrals provided:'
print*,' Size of MO map ', map_mb(mo_integrals_map) ,'MB'
print*,' Number of MO integrals: ', mo_map_size
print*,' cpu time :',cpu_2 - cpu_1, 's'
print*,' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1), ')'
if (write_mo_integrals) then
call dump_mo_integrals(trim(ezfio_filename)//'/work/mo_integrals.bin')
call ezfio_set_bielec_integrals_disk_access_mo_integrals(.True.)
call ezfio_set_integrals_bielec_disk_access_mo_integrals(.True.)
endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -0,0 +1,6 @@
# Define here all new external source files and objects.Don't forget to prefix the
# object files with IRPF90_temp/
SRC=pseudopot.f90
OBJ=IRPF90_temp/pseudopot.o
include $(QPACKAGE_ROOT)/src/Makefile.common

View File

@ -0,0 +1 @@
MOs Pseudo

Some files were not shown because too many files have changed in this diff Show More