Merge pull request #65 from scemama/master
Cleaning and Davidson in MRCC
@ -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
|
||||
|
@ -10,6 +10,10 @@
|
||||
* Bash
|
||||
* Patch (for opam)
|
||||
|
||||
## Optional
|
||||
|
||||
* graphviz
|
||||
|
||||
|
||||
## Standard installation
|
||||
|
||||
|
@ -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
|
@ -1,4 +0,0 @@
|
||||
cisd_selected
|
||||
n_det_max_cisd 10000
|
||||
pt2_max 1.e-4
|
||||
|
@ -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
@ -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()
|
@ -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 _|_
|
||||
# _|_ | | | |_
|
||||
|
@ -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()
|
||||
|
@ -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"
|
@ -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):
|
||||
|
@ -16,6 +16,7 @@ fi
|
||||
|
||||
cd ${QPACKAGE_ROOT}
|
||||
|
||||
rm -f l${QPACKAGE_ROOT}/bin/m4
|
||||
if [[ -z ${M4} ]]
|
||||
then
|
||||
rm -f -- bin/m4
|
||||
|
@ -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__':
|
||||
|
@ -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',
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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)):
|
||||
|
@ -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 ]]
|
||||
|
@ -1 +1 @@
|
||||
Nuclei
|
||||
Nuclei Utils
|
||||
|
@ -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
After Width: | Height: | Size: 15 KiB |
@ -1 +0,0 @@
|
||||
MonoInts Bitmask
|
@ -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
|
||||
|
@ -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
|
||||
|
BIN
src/Bitmask/tree_dependancy.png
Normal file
After Width: | Height: | Size: 28 KiB |
@ -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"
|
||||
|
@ -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>`_
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
BIN
src/CAS_SD/tree_dependancy.png
Normal file
After Width: | Height: | Size: 106 KiB |
@ -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
After Width: | Height: | Size: 90 KiB |
@ -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>`_
|
||||
|
||||
|
BIN
src/CID_SC2_selected/tree_dependancy.png
Normal file
After Width: | Height: | Size: 113 KiB |
@ -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>`_
|
||||
|
||||
|
BIN
src/CID_selected/tree_dependancy.png
Normal file
After Width: | Height: | Size: 107 KiB |
@ -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
After Width: | Height: | Size: 90 KiB |
@ -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/CISD/tree_dependancy.png
Normal file
After Width: | Height: | Size: 90 KiB |
@ -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
|
||||
|
@ -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>`_
|
||||
|
||||
|
@ -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
|
||||
|
BIN
src/CISD_SC2_selected/tree_dependancy.png
Normal file
After Width: | Height: | Size: 114 KiB |
@ -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>`_
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
cisd_selected
|
||||
n_det_max_cisd integer
|
||||
pt2_max double precision
|
@ -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)
|
||||
|
@ -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
|
||||
|
BIN
src/CISD_selected/tree_dependancy.png
Normal file
After Width: | Height: | Size: 108 KiB |
@ -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>`_
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
BIN
src/DDCI_selected/tree_dependancy.png
Normal file
After Width: | Height: | Size: 106 KiB |
1
src/DensityFit/NEEDED_CHILDREN_MODULES
Normal file
@ -0,0 +1 @@
|
||||
AOs Pseudo
|
70
src/DensityFit/README.rst
Normal 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>`_
|
||||
|
12
src/DensityFit/aux_basis.ezfio_config
Normal 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)
|
||||
|
||||
|
130
src/DensityFit/aux_basis.irp.f
Normal 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
|
66
src/DensityFit/overlap.irp.f
Normal 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
|
||||
|
||||
|
||||
|
BIN
src/DensityFit/tree_dependancy.png
Normal file
After Width: | Height: | Size: 25 KiB |
@ -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
|
||||
|
@ -1 +1 @@
|
||||
Bielec_integrals
|
||||
Integrals_Monoelec Integrals_Bielec
|
@ -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
|
||||
|
||||
|
@ -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
|
BIN
src/Determinants/tree_dependancy.png
Normal file
After Width: | Height: | Size: 59 KiB |
@ -1 +1 @@
|
||||
Output
|
||||
Ezfio_files
|
||||
|
@ -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
|
||||
=============
|
||||
|
BIN
src/Electrons/tree_dependancy.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -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')
|
BIN
src/Ezfio_files/tree_dependancy.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
@ -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>`_
|
||||
|
||||
|
BIN
src/FCIdump/tree_dependancy.png
Normal file
After Width: | Height: | Size: 63 KiB |
@ -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
|
||||
|
@ -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>`_
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
BIN
src/Full_CI/tree_dependancy.png
Normal file
After Width: | Height: | Size: 104 KiB |
@ -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>`_
|
||||
|
||||
|
BIN
src/Generators_CAS/tree_dependancy.png
Normal file
After Width: | Height: | Size: 65 KiB |
@ -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>`_
|
||||
|
||||
|
BIN
src/Generators_full/tree_dependancy.png
Normal file
After Width: | Height: | Size: 76 KiB |
@ -1 +1 @@
|
||||
Bielec_integrals MOGuess
|
||||
Integrals_Bielec MOGuess
|
||||
|
@ -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
|
||||
|
BIN
src/Hartree_Fock/tree_dependancy.png
Normal file
After Width: | Height: | Size: 64 KiB |
1
src/Integrals_Bielec/NEEDED_CHILDREN_MODULES
Normal file
@ -0,0 +1 @@
|
||||
Pseudo MOs Bitmask
|
@ -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
|
||||
|
||||
|
@ -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
|
@ -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, &
|
@ -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
|
||||
|
||||
|
BIN
src/Integrals_Bielec/tree_dependancy.png
Normal file
After Width: | Height: | Size: 44 KiB |
6
src/Integrals_Monoelec/Makefile
Normal 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
|
1
src/Integrals_Monoelec/NEEDED_CHILDREN_MODULES
Normal file
@ -0,0 +1 @@
|
||||
MOs Pseudo
|