mirror of
https://github.com/LCPQ/quantum_package
synced 2024-10-19 22:41:48 +02:00
Working on doc
This commit is contained in:
parent
e03930e8b6
commit
2929828ae3
1
data/.gitignore
vendored
1
data/.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
executables
|
||||
ezfio_defaults
|
||||
list_element.txt
|
||||
|
44
data/module_gitignore
Normal file
44
data/module_gitignore
Normal file
@ -0,0 +1,44 @@
|
||||
IRPF90_temp/
|
||||
IRPF90_man/
|
||||
irpf90.make
|
||||
irpf90_entities
|
||||
tags
|
||||
AO_Basis
|
||||
AO_one_e_integrals
|
||||
Bitmask
|
||||
CIS
|
||||
CISD
|
||||
Davidson
|
||||
DavidsonDressed
|
||||
DavidsonUndressed
|
||||
Determinants
|
||||
Dressing
|
||||
dummy
|
||||
Electrons
|
||||
Ezfio_files
|
||||
FCI
|
||||
FourIdx
|
||||
Generators_CAS
|
||||
Generators_full
|
||||
gitignore
|
||||
Hartree_Fock
|
||||
Integrals_Bielec
|
||||
Iterations
|
||||
MO_Basis
|
||||
MOGuess
|
||||
MO_one_e_integrals
|
||||
MPI
|
||||
MRPT_Utils
|
||||
Nuclei
|
||||
Perturbation
|
||||
Pseudo
|
||||
Psiref_CAS
|
||||
Psiref_Utils
|
||||
Selectors_CASSD
|
||||
Selectors_full
|
||||
Selectors_Utils
|
||||
SingleRefMethod
|
||||
Slave
|
||||
Tools
|
||||
Utils
|
||||
ZMQ
|
2
docs/.gitignore
vendored
Normal file
2
docs/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
build
|
@ -1,4 +1,4 @@
|
||||
#!/bin/env python2
|
||||
#!/usr/bin/env python2
|
||||
|
||||
from __future__ import print_function
|
||||
import os
|
||||
@ -38,9 +38,9 @@ def generate_modules(abs_module, entities):
|
||||
|
||||
providers = []
|
||||
subroutines = []
|
||||
for k in entities:
|
||||
for k in sorted(entities.keys()):
|
||||
e = entities[k]
|
||||
if e["module"] == module:
|
||||
if e["module"].lower() == module.lower():
|
||||
if "/" not in e["file"] and e["file"] != "ezfio_interface.irp.f":
|
||||
if e["type"] == 's':
|
||||
subroutines.append(e)
|
||||
@ -51,13 +51,13 @@ def generate_modules(abs_module, entities):
|
||||
rst += [ "", "Providers", "---------", "" ]
|
||||
for p in providers:
|
||||
rst += [ """
|
||||
.. option:: %s
|
||||
.. c:var:: %s
|
||||
|
||||
.. code:: text
|
||||
|
||||
%s
|
||||
|
||||
File: %s
|
||||
File: :file:`%s`
|
||||
|
||||
%s
|
||||
|
||||
@ -65,7 +65,31 @@ def generate_modules(abs_module, entities):
|
||||
""" % ( p["name"],
|
||||
"\n ".join(p["decl"]),
|
||||
p["file"],
|
||||
" ".join(p["doc"]).replace(".br","\n"),
|
||||
" ".join(p["doc"]).replace("\n ","\n "),
|
||||
) ]
|
||||
|
||||
|
||||
|
||||
if subroutines:
|
||||
rst += [ "", "Subroutines / functions", "-----------------------", "" ]
|
||||
for p in subroutines:
|
||||
rst += [ """
|
||||
|
||||
.. c:function:: %s
|
||||
|
||||
.. code:: text
|
||||
|
||||
%s
|
||||
|
||||
File: :file:`%s`
|
||||
|
||||
%s
|
||||
|
||||
|
||||
""" % ( p["name"],
|
||||
"\n ".join(p["decl"]),
|
||||
p["file"],
|
||||
" ".join(p["doc"]).replace("\n ","\n "),
|
||||
) ]
|
||||
|
||||
|
||||
@ -114,11 +138,14 @@ def generate_providers(abs_module):
|
||||
state = 3
|
||||
continue
|
||||
if line.startswith(".SH Need"):
|
||||
break
|
||||
state = 0
|
||||
continue
|
||||
if line.startswith(".SH Instability"):
|
||||
break
|
||||
state = 0
|
||||
continue
|
||||
if line.startswith(".SH Call"):
|
||||
break
|
||||
state = 0
|
||||
continue
|
||||
|
||||
if state == 1:
|
||||
entity["decl"] += [ line ]
|
||||
@ -129,17 +156,49 @@ def generate_providers(abs_module):
|
||||
else:
|
||||
entity["type"] = 'p'
|
||||
elif state == 2:
|
||||
if line.startswith(".br"):
|
||||
line = "\n"
|
||||
entity["doc"] += [ line ]
|
||||
elif state == 3:
|
||||
if line.startswith(".br"):
|
||||
continue
|
||||
entity["file"] = line
|
||||
entity["file"] = line.split("/")[-1]
|
||||
try:
|
||||
entity["module"] = line.split("/")[-2]
|
||||
except: pass
|
||||
break
|
||||
|
||||
entities [ entity["name"] ] = entity
|
||||
|
||||
return entities
|
||||
|
||||
|
||||
def generate_index(entities):
|
||||
|
||||
rst_file = os.path.join('programmers_guide','index_providers.rst')
|
||||
|
||||
with open(rst_file,'w') as f:
|
||||
rst = [ "Index of Providers",
|
||||
"------------------",
|
||||
"" ]
|
||||
|
||||
for e in sorted(entities.keys()):
|
||||
e = entities[e]
|
||||
if e["type"] == 'p':
|
||||
rst.append("* :c:data:`%s`" % (e["name"]))
|
||||
|
||||
rst += [ "",
|
||||
"Index of Subroutines/Functions",
|
||||
"------------------------------",
|
||||
"" ]
|
||||
|
||||
for e in sorted(entities.keys()):
|
||||
e = entities[e]
|
||||
if e["type"] == 's':
|
||||
rst.append("* :c:func:`%s`" % (e["name"]))
|
||||
|
||||
f.write("\n".join(rst))
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
@ -159,8 +218,14 @@ def main():
|
||||
if read_entities:
|
||||
for k in read_entities:
|
||||
entities[k] = read_entities[k]
|
||||
|
||||
for abs_module in os.listdir(SRC):
|
||||
abs_module = os.path.join(SRC,abs_module)
|
||||
if os.path.exists( os.path.join(abs_module, "README.rst") ):
|
||||
generate_modules(abs_module,entities)
|
||||
|
||||
generate_index(entities)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
@ -89,3 +89,460 @@ EZFIO parameters
|
||||
If |true|, use |AOs| in Cartesian coordinates (6d,10f,...)
|
||||
|
||||
Default: false
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: ao_coef_normalization_factor
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max)
|
||||
double precision, allocatable :: ao_coef_normalization_factor (ao_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Coefficients including the AO normalization
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_coef_normalization_libint_factor
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_coef_normalization_libint_factor (ao_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Coefficients including the AO normalization
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_coef_normalized
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max)
|
||||
double precision, allocatable :: ao_coef_normalization_factor (ao_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Coefficients including the AO normalization
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_coef_normalized_ordered
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max)
|
||||
double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Sorted primitives to accelerate 4 index MO transformation
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_coef_normalized_ordered_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_coef_normalized_ordered_transp (ao_prim_num_max,ao_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Transposed ao_coef_normalized_ordered
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_expo_ordered
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max)
|
||||
double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Sorted primitives to accelerate 4 index MO transformation
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_expo_ordered_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_expo_ordered_transp (ao_prim_num_max,ao_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Transposed ao_expo_ordered
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_l
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: ao_l (ao_num)
|
||||
integer :: ao_l_max
|
||||
character*(128), allocatable :: ao_l_char (ao_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
ao_l = l value of the AO: a+b+c in x^a y^b z^c
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_l_char
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: ao_l (ao_num)
|
||||
integer :: ao_l_max
|
||||
character*(128), allocatable :: ao_l_char (ao_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
ao_l = l value of the AO: a+b+c in x^a y^b z^c
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_l_char_space
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(4), allocatable :: ao_l_char_space (ao_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_l_max
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: ao_l (ao_num)
|
||||
integer :: ao_l_max
|
||||
character*(128), allocatable :: ao_l_char (ao_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
ao_l = l value of the AO: a+b+c in x^a y^b z^c
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_prim_num_max
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: ao_prim_num_max
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
max number of primitives
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_0
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_0 (1,1)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=0
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_1
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_1 (3,3)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=1
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_2
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_2 (6,5)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=2
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_3
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_3 (10,7)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=3
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_4
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_4 (15,9)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=4
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_5
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_5 (21,11)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=5
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_6
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_6 (28,13)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=6
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_7
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_7 (36,15)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=7
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_8
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_8 (45,17)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=8
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: cart_to_sphe_9
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: cart_to_sphe_9 (55,19)
|
||||
|
||||
File: :file:`spherical_to_cartesian.irp.f`
|
||||
|
||||
Spherical -> Cartesian Transformation matrix for l=9
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: l_to_charater
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128), allocatable :: l_to_charater (0:7)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
character corresponding to the "L" value of an AO orbital
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_aos_max
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: nucl_n_aos (nucl_num)
|
||||
integer :: n_aos_max
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Number of AOs per atom
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_pt_max_i_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: n_pt_max_integrals
|
||||
integer :: n_pt_max_i_x
|
||||
|
||||
File: :file:`dimensions_integrals.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_pt_max_integrals
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: n_pt_max_integrals
|
||||
integer :: n_pt_max_i_x
|
||||
|
||||
File: :file:`dimensions_integrals.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_aos
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: nucl_aos (nucl_num,N_AOs_max)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
List of AOs attached on each atom
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_list_shell_aos
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max)
|
||||
integer, allocatable :: nucl_num_shell_aos (nucl_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Index of the shell type Aos and of the corresponding Aos 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
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_n_aos
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: nucl_n_aos (nucl_num)
|
||||
integer :: n_aos_max
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Number of AOs per atom
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_num_shell_aos
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max)
|
||||
integer, allocatable :: nucl_num_shell_aos (nucl_num)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Index of the shell type Aos and of the corresponding Aos 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
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: ao_power_index
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function ao_power_index(nx,ny,nz)
|
||||
|
||||
File: :file:`aos.irp.f`
|
||||
|
||||
Unique index given to a triplet of powers:
|
||||
1/2 (l-n_x)*(l-n_x+1) + n_z + 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: ao_value
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function ao_value(i,r)
|
||||
|
||||
File: :file:`aos_value.irp.f`
|
||||
|
||||
return the value of the ith ao at point r
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: give_all_aos_at_r
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine give_all_aos_at_r(r,aos_array)
|
||||
|
||||
File: :file:`aos_value.irp.f`
|
||||
|
||||
gives the values of aos at a given point r
|
||||
|
||||
|
||||
|
@ -41,3 +41,880 @@ EZFIO parameters
|
||||
Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ]
|
||||
|
||||
Default: None
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: ao_cart_to_sphe_coef
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num)
|
||||
integer :: ao_cart_to_sphe_num
|
||||
|
||||
File: :file:`ao_ortho_canonical.irp.f`
|
||||
|
||||
ao_cart_to_sphe coefficients of the current basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_cart_to_sphe_inv
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_cart_to_sphe_inv (ao_cart_to_sphe_num,ao_num)
|
||||
|
||||
File: :file:`ao_ortho_canonical.irp.f`
|
||||
|
||||
AO_cart_to_sphe_coef^(-1)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_cart_to_sphe_num
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num)
|
||||
integer :: ao_cart_to_sphe_num
|
||||
|
||||
File: :file:`ao_ortho_canonical.irp.f`
|
||||
|
||||
ao_cart_to_sphe coefficients of the current basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_cart_to_sphe_overlap
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_cart_to_sphe_overlap (ao_cart_to_sphe_num,ao_cart_to_sphe_num)
|
||||
|
||||
File: :file:`ao_ortho_canonical.irp.f`
|
||||
|
||||
AO overlap matrix in the spherical basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_deriv2_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_deriv2_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv2_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv2_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`kin_ao_ints.irp.f`
|
||||
|
||||
Second derivatives matrix elements in the |AO| basis.
|
||||
math:`{\tt ao_deriv2_x} = \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_deriv2_y
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_deriv2_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv2_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv2_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`kin_ao_ints.irp.f`
|
||||
|
||||
Second derivatives matrix elements in the |AO| basis.
|
||||
math:`{\tt ao_deriv2_x} = \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_deriv2_z
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_deriv2_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv2_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv2_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`kin_ao_ints.irp.f`
|
||||
|
||||
Second derivatives matrix elements in the |AO| basis.
|
||||
math:`{\tt ao_deriv2_x} = \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_deriv_1_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
array of the integrals of AO_i * d/dx AO_j array of the integrals of AO_i * d/dy AO_j array of the integrals of AO_i * d/dz AO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_deriv_1_y
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
array of the integrals of AO_i * d/dx AO_j array of the integrals of AO_i * d/dy AO_j array of the integrals of AO_i * d/dz AO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_deriv_1_z
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
array of the integrals of AO_i * d/dx AO_j array of the integrals of AO_i * d/dy AO_j array of the integrals of AO_i * d/dz AO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_dipole_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_dipole_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_dipole_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_dipole_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
array of the integrals of AO_i * x AO_j array of the integrals of AO_i * y AO_j array of the integrals of AO_i * z AO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_dipole_y
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_dipole_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_dipole_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_dipole_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
array of the integrals of AO_i * x AO_j array of the integrals of AO_i * y AO_j array of the integrals of AO_i * z AO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_dipole_z
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_dipole_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_dipole_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_dipole_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
array of the integrals of AO_i * x AO_j array of the integrals of AO_i * y AO_j array of the integrals of AO_i * z AO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_kinetic_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_kinetic_integral (ao_num,ao_num)
|
||||
|
||||
File: :file:`kin_ao_ints.irp.f`
|
||||
|
||||
Array of the priminitve basis kinetic integrals.
|
||||
:math:`\langle \chi_i |\hat{T}| \chi_j \rangle`
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_mono_elec_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_mono_elec_integral (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_mono_elec_integral_diag (ao_num)
|
||||
|
||||
File: :file:`ao_mono_ints.irp.f`
|
||||
|
||||
array of the mono electronic hamiltonian on the AOs basis : sum of the kinetic and nuclear electronic potential
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_mono_elec_integral_diag
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_mono_elec_integral (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_mono_elec_integral_diag (ao_num)
|
||||
|
||||
File: :file:`ao_mono_ints.irp.f`
|
||||
|
||||
array of the mono electronic hamiltonian on the AOs basis : sum of the kinetic and nuclear electronic potential
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_nucl_elec_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_nucl_elec_integral (ao_num,ao_num)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Nucleus-electron interaction, in the |AO| basis set.
|
||||
:math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle`
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_nucl_elec_integral_per_atom
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_nucl_elec_integral_per_atom (ao_num,ao_num,nucl_num)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Nucleus-electron interaction in the |AO| basis set, per atom A.
|
||||
:math:`\langle \chi_i | -\frac{1}{|r-R_A|} | \chi_j \rangle`
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_ortho_canonical_coef
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num)
|
||||
integer :: ao_ortho_canonical_num
|
||||
|
||||
File: :file:`ao_ortho_canonical.irp.f`
|
||||
|
||||
matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_ortho_canonical_coef_inv
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_ortho_canonical_coef_inv (ao_num,ao_num)
|
||||
|
||||
File: :file:`ao_ortho_canonical.irp.f`
|
||||
|
||||
ao_ortho_canonical_coef^(-1)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_ortho_canonical_num
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num)
|
||||
integer :: ao_ortho_canonical_num
|
||||
|
||||
File: :file:`ao_ortho_canonical.irp.f`
|
||||
|
||||
matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_ortho_canonical_overlap
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_ortho_canonical_overlap (ao_ortho_canonical_num,ao_ortho_canonical_num)
|
||||
|
||||
File: :file:`ao_ortho_canonical.irp.f`
|
||||
|
||||
overlap matrix of the ao_ortho_canonical. Expected to be the Identity
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_overlap
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_overlap (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`ao_overlap.irp.f`
|
||||
|
||||
Overlap between atomic basis functions: :math:`\int \chi_i(r) \chi_j(r) dr)`
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_overlap_abs
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_overlap_abs (ao_num,ao_num)
|
||||
|
||||
File: :file:`ao_overlap.irp.f`
|
||||
|
||||
Overlap between absolute value of atomic basis functions: :math:`\int |\chi_i(r)| |\chi_j(r)| dr)`
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_overlap_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_overlap (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`ao_overlap.irp.f`
|
||||
|
||||
Overlap between atomic basis functions: :math:`\int \chi_i(r) \chi_j(r) dr)`
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_overlap_y
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_overlap (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`ao_overlap.irp.f`
|
||||
|
||||
Overlap between atomic basis functions: :math:`\int \chi_i(r) \chi_j(r) dr)`
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_overlap_z
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_overlap (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_overlap_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`ao_overlap.irp.f`
|
||||
|
||||
Overlap between atomic basis functions: :math:`\int \chi_i(r) \chi_j(r) dr)`
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_pseudo_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_pseudo_integral (ao_num,ao_num)
|
||||
|
||||
File: :file:`pot_ao_pseudo_ints.irp.f`
|
||||
|
||||
Pseudo-potential integrals
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_pseudo_integral_local
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_pseudo_integral_local (ao_num,ao_num)
|
||||
|
||||
File: :file:`pot_ao_pseudo_ints.irp.f`
|
||||
|
||||
Local pseudo-potential
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_pseudo_integral_non_local
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_pseudo_integral_non_local (ao_num,ao_num)
|
||||
|
||||
File: :file:`pot_ao_pseudo_ints.irp.f`
|
||||
|
||||
Local pseudo-potential
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_spread_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_spread_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_spread_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_spread_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
array of the integrals of AO_i * x^2 AO_j array of the integrals of AO_i * y^2 AO_j array of the integrals of AO_i * z^2 AO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_spread_y
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_spread_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_spread_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_spread_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
array of the integrals of AO_i * x^2 AO_j array of the integrals of AO_i * y^2 AO_j array of the integrals of AO_i * z^2 AO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_spread_z
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_spread_x (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_spread_y (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_spread_z (ao_num,ao_num)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
array of the integrals of AO_i * x^2 AO_j array of the integrals of AO_i * y^2 AO_j array of the integrals of AO_i * z^2 AO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: i_x1_pol_mult_mono_elec
|
||||
|
||||
.. code:: text
|
||||
|
||||
recursive subroutine I_x1_pol_mult_mono_elec(a,c,R1x,R1xp,R2x,d,nd,n_pt_in)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Recursive routine involved in the electron-nucleus potential
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: i_x2_pol_mult_mono_elec
|
||||
|
||||
.. code:: text
|
||||
|
||||
recursive subroutine I_x2_pol_mult_mono_elec(c,R1x,R1xp,R2x,d,nd,dim)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Recursive routine involved in the electron-nucleus potential
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pseudo_dz_k_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num)
|
||||
integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num)
|
||||
double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num)
|
||||
|
||||
File: :file:`pot_ao_pseudo_ints.irp.f`
|
||||
|
||||
Transposed arrays for pseudopotentials
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pseudo_dz_kl_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num)
|
||||
integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num)
|
||||
double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num)
|
||||
|
||||
File: :file:`pot_ao_pseudo_ints.irp.f`
|
||||
|
||||
Transposed arrays for pseudopotentials
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pseudo_n_k_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num)
|
||||
integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num)
|
||||
double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num)
|
||||
|
||||
File: :file:`pot_ao_pseudo_ints.irp.f`
|
||||
|
||||
Transposed arrays for pseudopotentials
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pseudo_n_kl_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num)
|
||||
integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num)
|
||||
double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num)
|
||||
|
||||
File: :file:`pot_ao_pseudo_ints.irp.f`
|
||||
|
||||
Transposed arrays for pseudopotentials
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pseudo_v_k_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num)
|
||||
integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num)
|
||||
double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num)
|
||||
|
||||
File: :file:`pot_ao_pseudo_ints.irp.f`
|
||||
|
||||
Transposed arrays for pseudopotentials
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pseudo_v_kl_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num)
|
||||
integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num)
|
||||
double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num)
|
||||
|
||||
File: :file:`pot_ao_pseudo_ints.irp.f`
|
||||
|
||||
Transposed arrays for pseudopotentials
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: read_ao_one_integrals
|
||||
|
||||
.. code:: text
|
||||
|
||||
logical :: read_ao_one_integrals
|
||||
logical :: write_ao_one_integrals
|
||||
|
||||
File: :file:`read_write.irp.f`
|
||||
|
||||
One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: s_half
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: s_half (ao_num,ao_num)
|
||||
|
||||
File: :file:`ao_overlap.irp.f`
|
||||
|
||||
S^{1/2}
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: s_half_inv
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: s_half_inv (AO_num,AO_num)
|
||||
|
||||
File: :file:`ao_overlap.irp.f`
|
||||
|
||||
Matrix X = S^{-1/2} obtained by SVD
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: s_inv
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: s_inv (ao_num,ao_num)
|
||||
|
||||
File: :file:`ao_overlap.irp.f`
|
||||
|
||||
S^-1
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: write_ao_one_integrals
|
||||
|
||||
.. code:: text
|
||||
|
||||
logical :: read_ao_one_integrals
|
||||
logical :: write_ao_one_integrals
|
||||
|
||||
File: :file:`read_write.irp.f`
|
||||
|
||||
One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: give_polynom_mult_center_mono_elec
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine give_polynom_mult_center_mono_elec(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Returns the explicit polynomial in terms of the "t" variable of the following
|
||||
:math:`I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q)`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: int_gaus_pol
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function int_gaus_pol(alpha,n)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Computes the integral:
|
||||
:math:`\int_{-\infty}^{\infty} x^n \exp(-\alpha x^2) dx`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: nai_pol_mult
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Computes the electron-nucleus attraction with two primitves.
|
||||
:math:`\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: overlap_bourrin_deriv_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine overlap_bourrin_deriv_x(i_component,A_center,B_center,alpha,beta,power_A,power_B,dx,lower_exp_val,overlap_x,nx)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: overlap_bourrin_dipole
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine overlap_bourrin_dipole(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: overlap_bourrin_spread
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine overlap_bourrin_spread(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: overlap_bourrin_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine overlap_bourrin_x(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: overlap_bourrin_x_abs
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine overlap_bourrin_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: power
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function power(n,x)
|
||||
|
||||
File: :file:`spread_dipole_ao.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: v_e_n
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function V_e_n(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Primitve nuclear attraction between the two primitves centered on the same atom.
|
||||
primitive_1 = x**(a_x) y**(a_y) z**(a_z) exp(-alpha * r**2)
|
||||
primitive_2 = x**(b_x) y**(b_y) z**(b_z) exp(- beta * r**2)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: v_phi
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function V_phi(n,m)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Computes the angular "phi" part of the nuclear attraction integral:
|
||||
:math:`\int_{0}^{2 \pi} \cos(\phi)^n \sin(\phi)^m d\phi`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: v_r
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function V_r(n,alpha)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Computes the radial part of the nuclear attraction integral:
|
||||
:math:`\int_{0}^{\infty} r^n \exp(-\alpha r^2) dr`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: v_theta
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function V_theta(n,m)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Computes the angular "theta" part of the nuclear attraction integral:
|
||||
:math:`\int_{0}^{\pi} \cos(\theta)^n \sin(\theta)^m d\theta`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: wallis
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function Wallis(n)
|
||||
|
||||
File: :file:`pot_ao_ints.irp.f`
|
||||
|
||||
Wallis integral:
|
||||
:math:`\int_{0}^{\pi} \cos(\theta)^n d\theta`
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -27,3 +27,91 @@ EZFIO parameters
|
||||
|
||||
Variational CIS energy
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: cis
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine cis
|
||||
|
||||
File: :file:`CIS.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cis
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cis()
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cis_diexc
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cis_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cis_diexcorg
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cis_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cis_diexcp
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cis_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cis_monoexc
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cis_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided.
|
||||
|
||||
|
||||
|
@ -27,3 +27,77 @@ EZFIO parameters
|
||||
|
||||
Variational CISD energy
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cisd
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cisd()
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cisd_diexc
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cisd_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cisd_diexcorg
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cisd_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cisd_diexcp
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_apply_cisd_monoexc
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
|
||||
|
||||
File: :file:`H_apply.irp.f_shell_8`
|
||||
|
||||
Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided.
|
||||
|
||||
|
||||
|
@ -56,3 +56,497 @@ EZFIO parameters
|
||||
If |true|, use the distributed algorithm
|
||||
|
||||
Default: True
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: ci_eigenvectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ci_electronic_energy (N_states_diag)
|
||||
double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag)
|
||||
double precision, allocatable :: ci_eigenvectors_s2 (N_states_diag)
|
||||
|
||||
File: :file:`diagonalize_CI.irp.f`
|
||||
|
||||
Eigenvectors/values of the CI matrix
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ci_eigenvectors_s2
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ci_electronic_energy (N_states_diag)
|
||||
double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag)
|
||||
double precision, allocatable :: ci_eigenvectors_s2 (N_states_diag)
|
||||
|
||||
File: :file:`diagonalize_CI.irp.f`
|
||||
|
||||
Eigenvectors/values of the CI matrix
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ci_electronic_energy
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ci_electronic_energy (N_states_diag)
|
||||
double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag)
|
||||
double precision, allocatable :: ci_eigenvectors_s2 (N_states_diag)
|
||||
|
||||
File: :file:`diagonalize_CI.irp.f`
|
||||
|
||||
Eigenvectors/values of the CI matrix
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ci_energy
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ci_energy (N_states_diag)
|
||||
|
||||
File: :file:`diagonalize_CI.irp.f`
|
||||
|
||||
N_states lowest eigenvalues of the CI matrix
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: davidson_criterion
|
||||
|
||||
.. code:: text
|
||||
|
||||
character(64) :: davidson_criterion
|
||||
|
||||
File: :file:`parameters.irp.f`
|
||||
|
||||
Can be : [ energy | residual | both | wall_time | cpu_time | iterations ]
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: dressed_column_idx
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: dressed_column_idx (N_states)
|
||||
|
||||
File: :file:`diagonalization_hs2_dressed.irp.f`
|
||||
|
||||
Index of the dressed columns
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_states_diag
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: n_states_diag
|
||||
|
||||
File: :file:`input.irp.f`
|
||||
|
||||
Number of states to consider during the Davdison diagonalization
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nthreads_davidson
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: nthreads_davidson
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
Number of threads for Davdison
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_energy
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_energy (N_states)
|
||||
|
||||
File: :file:`u0Hu0.irp.f`
|
||||
|
||||
Energy of the current wave function
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_energy_with_nucl_rep
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_energy_with_nucl_rep (N_states)
|
||||
|
||||
File: :file:`u0Hu0.irp.f`
|
||||
|
||||
Energy of the wave function with the nuclear repulsion energy.
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_collector
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_collector(zmq_to_qp_run_socket, zmq_socket_pull, v0, s0, sze, N_st)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_converged
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_converged(energy,residual,wall,iterations,cpu,N_st,converged)
|
||||
|
||||
File: :file:`parameters.irp.f`
|
||||
|
||||
True if the Davidson algorithm is converged
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_diag_hjj_sjj
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_st,N_st_diag,Nint,dressing_state,converged)
|
||||
|
||||
File: :file:`diagonalization_hs2_dressed.irp.f`
|
||||
|
||||
Davidson diagonalization with specific diagonal elements of the H matrix
|
||||
H_jj : specific diagonal H matrix elements to diagonalize de Davidson
|
||||
S2_out : Output : s^2
|
||||
dets_in : bitmasks corresponding to determinants
|
||||
u_in : guess coefficients on the various states. Overwritten on exit
|
||||
dim_in : leftmost dimension of u_in
|
||||
sze : Number of determinants
|
||||
N_st : Number of eigenstates
|
||||
N_st_diag : Number of states in which H is diagonalized. Assumed > sze
|
||||
Initial guess vectors are not necessarily orthonormal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_diag_hs2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_diag_hs2(dets_in,u_in,s2_out,dim_in,energies,sze,N_st,N_st_diag,Nint,dressing_state)
|
||||
|
||||
File: :file:`diagonalization_hs2_dressed.irp.f`
|
||||
|
||||
Davidson diagonalization.
|
||||
dets_in : bitmasks corresponding to determinants
|
||||
u_in : guess coefficients on the various states. Overwritten on exit
|
||||
dim_in : leftmost dimension of u_in
|
||||
sze : Number of determinants
|
||||
N_st : Number of eigenstates
|
||||
Initial guess vectors are not necessarily orthonormal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_pull_results
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_pull_results(zmq_socket_pull, v_t, s_t, imin, imax, task_id)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_push_results
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_push_results(zmq_socket_push, v_t, s_t, imin, imax, task_id)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_run_slave
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_run_slave(thread,iproc)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_slave_inproc
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_slave_inproc(i)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_slave_tcp
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_slave_tcp(i)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: davidson_slave_work
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: diagonalize_ci
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine diagonalize_CI
|
||||
|
||||
File: :file:`diagonalize_CI.irp.f`
|
||||
|
||||
Replace the coefficients of the CI states by the coefficients of the eigenstates of the CI matrix
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: find_reference
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine find_reference(thresh,n_ref,result)
|
||||
|
||||
File: :file:`find_reference.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_s2_u_0_nstates_openmp
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze)
|
||||
|
||||
File: :file:`u0Hu0.irp.f`
|
||||
|
||||
Computes v_0 = H|u_0> and s_0 = S^2 |u_0>
|
||||
Assumes that the determinants are in psi_det
|
||||
istart, iend, ishift, istep are used in ZMQ parallelization.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_s2_u_0_nstates_openmp_work
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_S2_u_0_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||
|
||||
File: :file:`u0Hu0.irp.f`
|
||||
|
||||
Computes v_t = H|u_t> and s_t = S^2 |u_t>
|
||||
Default should be 1,N_det,0,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_s2_u_0_nstates_openmp_work_1
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||
|
||||
File: :file:`u0Hu0.irp.f_template_468`
|
||||
|
||||
Computes v_t = H|u_t> and s_t = S^2 |u_t>
|
||||
Default should be 1,N_det,0,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_s2_u_0_nstates_openmp_work_2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||
|
||||
File: :file:`u0Hu0.irp.f_template_468`
|
||||
|
||||
Computes v_t = H|u_t> and s_t = S^2 |u_t>
|
||||
Default should be 1,N_det,0,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_s2_u_0_nstates_openmp_work_3
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||
|
||||
File: :file:`u0Hu0.irp.f_template_468`
|
||||
|
||||
Computes v_t = H|u_t> and s_t = S^2 |u_t>
|
||||
Default should be 1,N_det,0,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_s2_u_0_nstates_openmp_work_4
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||
|
||||
File: :file:`u0Hu0.irp.f_template_468`
|
||||
|
||||
Computes v_t = H|u_t> and s_t = S^2 |u_t>
|
||||
Default should be 1,N_det,0,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_s2_u_0_nstates_openmp_work_n_int
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
|
||||
|
||||
File: :file:`u0Hu0.irp.f_template_468`
|
||||
|
||||
Computes v_t = H|u_t> and s_t = S^2 |u_t>
|
||||
Default should be 1,N_det,0,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: h_s2_u_0_nstates_zmq
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
Computes v_0 = H|u_0> and s_0 = S^2 |u_0>
|
||||
n : number of determinants
|
||||
H_jj : array of <j|H|j>
|
||||
S2_jj : array of <j|S^2|j>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: u_0_h_u_0
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine u_0_H_u_0(e_0,u_0,n,keys_tmp,Nint,N_st,sze)
|
||||
|
||||
File: :file:`u0Hu0.irp.f`
|
||||
|
||||
Computes e_0 = <u_0|H|u_0>/<u_0|u_0>
|
||||
n : number of determinants
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_n_states_diag
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_N_states_diag(zmq_to_qp_run_socket, worker_id)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
Get N_states_diag from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put_n_states_diag
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put_N_states_diag(zmq_to_qp_run_socket,worker_id)
|
||||
|
||||
File: :file:`davidson_parallel.irp.f`
|
||||
|
||||
Put N_states_diag on the qp_run scheduler
|
||||
|
||||
|
||||
|
@ -11,3 +11,35 @@ DavidsonUndressed
|
||||
Module for main files Davidson's algorithm with no dressing.
|
||||
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: dressing_column_h
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: dressing_column_h (N_det,N_states)
|
||||
double precision, allocatable :: dressing_column_s (N_det,N_states)
|
||||
|
||||
File: :file:`null_dressing_vector.irp.f`
|
||||
|
||||
Null dressing vectors
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: dressing_column_s
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: dressing_column_h (N_det,N_states)
|
||||
double precision, allocatable :: dressing_column_s (N_det,N_states)
|
||||
|
||||
File: :file:`null_dressing_vector.irp.f`
|
||||
|
||||
Null dressing vectors
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -42,3 +42,35 @@ EZFIO parameters
|
||||
Numbers total of electrons (alpha + beta)
|
||||
|
||||
Default: = electrons.elec_alpha_num + electrons.elec_beta_num
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: elec_num
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: elec_num
|
||||
integer, allocatable :: elec_num_tab (2)
|
||||
|
||||
File: :file:`electrons.irp.f`
|
||||
|
||||
Numbers of alpha ("up") , beta ("down") and total electrons
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: elec_num_tab
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: elec_num
|
||||
integer, allocatable :: elec_num_tab (2)
|
||||
|
||||
File: :file:`electrons.irp.f`
|
||||
|
||||
Numbers of alpha ("up") , beta ("down") and total electrons
|
||||
|
||||
|
||||
|
@ -13,3 +13,137 @@ This modules essentially contains the name of the |EZFIO| directory in the
|
||||
command-line, or as the :envvar:`QP_INPUT` environment variable.
|
||||
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: ezfio_filename
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: ezfio_filename
|
||||
|
||||
File: :file:`ezfio.irp.f`
|
||||
|
||||
Name of EZFIO file. It is obtained from the QPACKAGE_INPUT environment variable if it is set, or as the 1st argument of the command line.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ezfio_work_dir
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: ezfio_work_dir
|
||||
|
||||
File: :file:`ezfio.irp.f`
|
||||
|
||||
EZFIO/work/
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: output_cpu_time_0
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: output_wall_time_0
|
||||
double precision :: output_cpu_time_0
|
||||
|
||||
File: :file:`output.irp.f`
|
||||
|
||||
Initial CPU and wall times when printing in the output files
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: output_wall_time_0
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: output_wall_time_0
|
||||
double precision :: output_cpu_time_0
|
||||
|
||||
File: :file:`output.irp.f`
|
||||
|
||||
Initial CPU and wall times when printing in the output files
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: getunitandopen
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function getUnitAndOpen(f,mode)
|
||||
|
||||
File: :file:`get_unit_and_open.irp.f`
|
||||
|
||||
:f: file name
|
||||
:mode: 'R' : READ, UNFORMATTED 'W' : WRITE, UNFORMATTED 'r' : READ, FORMATTED 'w' : WRITE, FORMATTED 'a' : APPEND, FORMATTED 'x' : READ/WRITE, FORMATTED
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: write_bool
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine write_bool(iunit,value,label)
|
||||
|
||||
File: :file:`output.irp.f`
|
||||
|
||||
Write an logical value in output
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: write_double
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine write_double(iunit,value,label)
|
||||
|
||||
File: :file:`output.irp.f`
|
||||
|
||||
Write a double precision value in output
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: write_int
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine write_int(iunit,value,label)
|
||||
|
||||
File: :file:`output.irp.f`
|
||||
|
||||
Write an integer value in output
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: write_time
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine write_time(iunit)
|
||||
|
||||
File: :file:`output.irp.f`
|
||||
|
||||
Write a time stamp in the output for chronological reconstruction
|
||||
|
||||
|
||||
|
@ -137,235 +137,785 @@ Providers
|
||||
---------
|
||||
|
||||
|
||||
.. option:: pt2_e0_denominator
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_e0_denominator (N_states)
|
||||
|
||||
File: energy.irp.f
|
||||
|
||||
E0 in the denominator of the PT2
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_u_0
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_r
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: pt2_j (N_det_generators)
|
||||
integer, allocatable :: pt2_r (N_det_generators)
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_w
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_u
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_u (N_det_generators)
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_j
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: pt2_j (N_det_generators)
|
||||
integer, allocatable :: pt2_r (N_det_generators)
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_f
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: pt2_f (N_det_generators)
|
||||
integer :: pt2_n_tasks_max
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_cw
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_w_t
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_n_tasks
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: pt2_n_tasks
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
Number of parallel tasks for the Monte Carlo
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_n_0
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_n_tasks_max
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: pt2_f (N_det_generators)
|
||||
integer :: pt2_n_tasks_max
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_n_teeth
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: pt2_n_teeth
|
||||
integer :: pt2_mindetinfirstteeth
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: initialize_pt2_e0_denominator
|
||||
.. c:var:: initialize_pt2_e0_denominator
|
||||
|
||||
.. code:: text
|
||||
|
||||
logical :: initialize_pt2_e0_denominator
|
||||
|
||||
File: energy.irp.f
|
||||
File: :file:`energy.irp.f`
|
||||
|
||||
If true, initialize pt2_E0_denominator
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_mindetinfirstteeth
|
||||
.. c:var:: pt2_cw
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_e0_denominator
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_e0_denominator (N_states)
|
||||
|
||||
File: :file:`energy.irp.f`
|
||||
|
||||
E0 in the denominator of the PT2
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_f
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: pt2_f (N_det_generators)
|
||||
integer :: pt2_n_tasks_max
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_j
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: pt2_j (N_det_generators)
|
||||
integer, allocatable :: pt2_r (N_det_generators)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_mindetinfirstteeth
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: pt2_n_teeth
|
||||
integer :: pt2_mindetinfirstteeth
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: pt2_stoch_istate
|
||||
.. c:var:: pt2_n_0
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_n_tasks
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: pt2_n_tasks
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
Number of parallel tasks for the Monte Carlo
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_n_tasks_max
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: pt2_f (N_det_generators)
|
||||
integer :: pt2_n_tasks_max
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_n_teeth
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: pt2_n_teeth
|
||||
integer :: pt2_mindetinfirstteeth
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_r
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: pt2_j (N_det_generators)
|
||||
integer, allocatable :: pt2_r (N_det_generators)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_stoch_istate
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: pt2_stoch_istate
|
||||
|
||||
File: pt2_stoch_routines.irp.f
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
State for stochatsic PT2
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_u
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_u (N_det_generators)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_u_0
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_w
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: pt2_w_t
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: pt2_w (N_det_generators)
|
||||
double precision, allocatable :: pt2_cw (0:N_det_generators)
|
||||
double precision :: pt2_w_t
|
||||
double precision :: pt2_u_0
|
||||
integer, allocatable :: pt2_n_0 (pt2_N_teeth+1)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: add_to_selection_buffer
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine add_to_selection_buffer(b, det, val)
|
||||
|
||||
File: :file:`selection_buffer.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: bitstring_to_list_in_selection
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine bitstring_to_list_in_selection( string, list, n_elements, Nint)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
Gives the inidices(+1) of the bits set to 1 in the bit string
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: create_selection_buffer
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine create_selection_buffer(N, siz_, res)
|
||||
|
||||
File: :file:`selection_buffer.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: delete_selection_buffer
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine delete_selection_buffer(b)
|
||||
|
||||
File: :file:`selection_buffer.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: fci_zmq
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine fci_zmq
|
||||
|
||||
File: :file:`FCI.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: fill_buffer_double
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2, variance, norm, mat, buf)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_d0
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_d1
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_d2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_m0
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine get_m0(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_m1
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine get_m1(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_m2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine get_m2(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_mask_phase
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine get_mask_phase(det1, pm, Nint)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_phase_bi
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function get_phase_bi(phasemask, s1, s2, h1, p1, h2, p2, Nint)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: make_selection_buffer_s2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine make_selection_buffer_s2(b)
|
||||
|
||||
File: :file:`selection_buffer.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: merge_selection_buffers
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine merge_selection_buffers(b1, b2)
|
||||
|
||||
File: :file:`selection_buffer.irp.f`
|
||||
|
||||
Merges the selection buffers b1 and b2 into b2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: past_d1
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine past_d1(bannedOrb, p)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: past_d2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine past_d2(banned, p, sp)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_collector
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2, error, variance, norm)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_find_sample
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function pt2_find_sample(v, w)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_find_sample_lr
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function pt2_find_sample_lr(v, w, l_in, r_in)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_slave_inproc
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_slave_inproc(i)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_stoch
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_stoch
|
||||
|
||||
File: :file:`PT2.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pull_pt2_results
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pull_pt2_results(zmq_socket_pull, index, pt2, variance, norm, task_id, n_tasks)
|
||||
|
||||
File: :file:`run_pt2_slave.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pull_selection_results
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pull_selection_results(zmq_socket_pull, pt2, variance, norm, val, det, N, task_id, ntask)
|
||||
|
||||
File: :file:`run_selection_slave.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: push_pt2_results
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine push_pt2_results(zmq_socket_push, index, pt2, variance, norm, task_id, n_tasks)
|
||||
|
||||
File: :file:`run_pt2_slave.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: push_selection_results
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine push_selection_results(zmq_socket_push, pt2, variance, norm, b, task_id, ntask)
|
||||
|
||||
File: :file:`run_selection_slave.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: run_pt2_slave
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine run_pt2_slave(thread,iproc,energy)
|
||||
|
||||
File: :file:`run_pt2_slave.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: run_selection_slave
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine run_selection_slave(thread,iproc,energy)
|
||||
|
||||
File: :file:`run_selection_slave.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: select_connected
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine select_connected(i_generator,E0,pt2,variance,norm,b,subset,csubset)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: select_singles_and_doubles
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,variance,norm,buf,subset,csubset)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
WARNING /!\ : It is assumed that the generators and selectors are psi_det_sorted
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: selection_collector
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine selection_collector(zmq_socket_pull, b, N, pt2, variance, norm)
|
||||
|
||||
File: :file:`zmq_selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: selection_slave_inproc
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine selection_slave_inproc(i)
|
||||
|
||||
File: :file:`zmq_selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: sort_selection_buffer
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine sort_selection_buffer(b)
|
||||
|
||||
File: :file:`selection_buffer.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: splash_pq
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: spot_isinwf
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: testteethbuilding
|
||||
|
||||
.. code:: text
|
||||
|
||||
logical function testTeethBuilding(minF, N)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_pt2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm)
|
||||
|
||||
File: :file:`pt2_stoch_routines.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_selection
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine ZMQ_selection(N_in, pt2, variance, norm)
|
||||
|
||||
File: :file:`zmq_selection.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -11,3 +11,21 @@ FourIdx
|
||||
Four-index transformation.
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: four_idx
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine four_idx
|
||||
|
||||
File: :file:`Four_idx_transform.irp.f`
|
||||
|
||||
4-index transformation from AO to MO integrals
|
||||
|
||||
|
||||
|
@ -14,3 +14,132 @@ variational space.
|
||||
This module is intended to be included in the :file:`NEED` file to define
|
||||
a full set of generators.
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: degree_max_generators
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: degree_max_generators
|
||||
|
||||
File: :file:`generators.irp.f`
|
||||
|
||||
Max degree of excitation (respect to HF) of the generators
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_det_generators
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: n_det_generators
|
||||
|
||||
File: :file:`generators.irp.f`
|
||||
|
||||
For Single reference wave functions, the number of generators is 1 : the Hartree-Fock determinant
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_coef_generators
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_coef_generators (psi_det_size,N_states)
|
||||
|
||||
File: :file:`generators.irp.f`
|
||||
|
||||
For Single reference wave functions, the generator is the Hartree-Fock determinant
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_coef_sorted_gen
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
|
||||
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
|
||||
|
||||
File: :file:`generators.irp.f`
|
||||
|
||||
For Single reference wave functions, the generator is the Hartree-Fock determinant
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_det_generators
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_coef_generators (psi_det_size,N_states)
|
||||
|
||||
File: :file:`generators.irp.f`
|
||||
|
||||
For Single reference wave functions, the generator is the Hartree-Fock determinant
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_det_sorted_gen
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
|
||||
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
|
||||
|
||||
File: :file:`generators.irp.f`
|
||||
|
||||
For Single reference wave functions, the generator is the Hartree-Fock determinant
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_det_sorted_gen_order
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
|
||||
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
|
||||
|
||||
File: :file:`generators.irp.f`
|
||||
|
||||
For Single reference wave functions, the generator is the Hartree-Fock determinant
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: select_max
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: select_max (size_select_max)
|
||||
|
||||
File: :file:`generators.irp.f`
|
||||
|
||||
Memo to skip useless selectors
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: size_select_max
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: size_select_max
|
||||
|
||||
File: :file:`generators.irp.f`
|
||||
|
||||
Size of the select_max array
|
||||
|
||||
|
||||
|
@ -101,20 +101,104 @@ Providers
|
||||
---------
|
||||
|
||||
|
||||
.. option:: fock_matrix_mo_alpha
|
||||
.. c:var:: ao_bi_elec_integral_alpha
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_mo_alpha (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Fock matrix on the MO basis
|
||||
Alpha Fock matrix in AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: extrapolate_fock_matrix
|
||||
.. c:var:: ao_bi_elec_integral_beta
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
|
||||
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Alpha Fock matrix in AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: diagonal_fock_matrix_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: diagonal_fock_matrix_mo (mo_tot_num)
|
||||
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_tot_num)
|
||||
|
||||
File: :file:`diagonalize_fock.irp.f`
|
||||
|
||||
Diagonal Fock matrix in the MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: diagonal_fock_matrix_mo_sum
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: diagonal_fock_matrix_mo_sum (mo_tot_num)
|
||||
|
||||
File: :file:`diagonalize_fock.irp.f`
|
||||
|
||||
diagonal element of the fock matrix calculated as the sum over all the interactions with all the electrons in the RHF determinant diagonal_Fock_matrix_mo_sum(i) = sum_{j=1, N_elec} 2 J_ij -K_ij
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: eigenvalues_fock_matrix_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
|
||||
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
|
||||
|
||||
File: :file:`DIIS.irp.f`
|
||||
|
||||
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: eigenvectors_fock_matrix_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
|
||||
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
|
||||
|
||||
File: :file:`DIIS.irp.f`
|
||||
|
||||
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: eigenvectors_fock_matrix_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: diagonal_fock_matrix_mo (mo_tot_num)
|
||||
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_tot_num)
|
||||
|
||||
File: :file:`diagonalize_fock.irp.f`
|
||||
|
||||
Diagonal Fock matrix in the MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: extrapolate_fock_matrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
@ -124,286 +208,290 @@ Providers
|
||||
iteration_SCF,dim_DIIS &
|
||||
)
|
||||
|
||||
File: Roothaan_Hall_SCF.irp.f
|
||||
File: :file:`Roothaan_Hall_SCF.irp.f`
|
||||
|
||||
Compute the extrapolated Fock matrix using the DIIS procedure
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: fock_matrix_ao_alpha
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
|
||||
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
|
||||
Alpha Fock matrix in AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: hf_energy
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: hf_energy
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
|
||||
Hartree-Fock energy
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: fock_matrix_diag_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num)
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
|
||||
Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is
|
||||
| F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K |
|
||||
F = 1/2 (Fa + Fb)
|
||||
K = Fb - Fa
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: fock_matrix_ao_beta
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
|
||||
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
|
||||
Alpha Fock matrix in AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: hf_density_matrix_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: hf_density_matrix_ao (ao_num,ao_num)
|
||||
|
||||
File: HF_density_matrix_ao.irp.f
|
||||
|
||||
S^{-1}.P.S^{-1} where P = C.C^t
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: fps_spf_matrix_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num)
|
||||
|
||||
File: DIIS.irp.f
|
||||
|
||||
Commutator FPS - SPF
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: threshold_diis_nonzero
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: threshold_diis_nonzero
|
||||
|
||||
File: DIIS.irp.f
|
||||
|
||||
If threshold_DIIS is zero, choose sqrt(thresh_scf)
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: ao_bi_elec_integral_alpha
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
|
||||
Alpha Fock matrix in AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: eigenvectors_fock_matrix_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
|
||||
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
|
||||
|
||||
File: DIIS.irp.f
|
||||
|
||||
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: fock_matrix_mo_beta
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_mo_beta (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
|
||||
Fock matrix on the MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: eigenvectors_fock_matrix_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: diagonal_fock_matrix_mo (mo_tot_num)
|
||||
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_tot_num)
|
||||
|
||||
File: diagonalize_fock.irp.f
|
||||
|
||||
Diagonal Fock matrix in the MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: fock_matrix_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num)
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
|
||||
Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is
|
||||
| F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K |
|
||||
F = 1/2 (Fa + Fb)
|
||||
K = Fb - Fa
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: fps_spf_matrix_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fps_spf_matrix_mo (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: DIIS.irp.f
|
||||
|
||||
Commutator FPS - SPF in MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: diagonal_fock_matrix_mo_sum
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: diagonal_fock_matrix_mo_sum (mo_tot_num)
|
||||
|
||||
File: diagonalize_fock.irp.f
|
||||
|
||||
diagonal element of the fock matrix calculated as the sum over all the interactions with all the electrons in the RHF determinant diagonal_Fock_matrix_mo_sum(i) = sum_{j=1, N_elec} 2 J_ij -K_ij
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: hf_density_matrix_ao_alpha
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: hf_density_matrix_ao_alpha (ao_num,ao_num)
|
||||
|
||||
File: HF_density_matrix_ao.irp.f
|
||||
|
||||
S^{-1}.P_alpha.S^{-1}
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: hf_density_matrix_ao_beta
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: hf_density_matrix_ao_beta (ao_num,ao_num)
|
||||
|
||||
File: HF_density_matrix_ao.irp.f
|
||||
|
||||
S^{-1}.P_beta.S^{-1}
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: eigenvalues_fock_matrix_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
|
||||
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
|
||||
|
||||
File: DIIS.irp.f
|
||||
|
||||
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: ao_bi_elec_integral_beta
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
|
||||
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
|
||||
Alpha Fock matrix in AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: fock_matrix_ao
|
||||
.. c:var:: fock_matrix_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_ao (ao_num,ao_num)
|
||||
|
||||
File: Fock_matrix.irp.f
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Fock matrix in AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. option:: diagonal_fock_matrix_mo
|
||||
.. c:var:: fock_matrix_ao_alpha
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: diagonal_fock_matrix_mo (mo_tot_num)
|
||||
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_tot_num)
|
||||
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
|
||||
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
|
||||
|
||||
File: diagonalize_fock.irp.f
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Diagonal Fock matrix in the MO basis
|
||||
Alpha Fock matrix in AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: fock_matrix_ao_beta
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
|
||||
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
|
||||
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Alpha Fock matrix in AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: fock_matrix_diag_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num)
|
||||
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is
|
||||
| F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K |
|
||||
F = 1/2 (Fa + Fb)
|
||||
K = Fb - Fa
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: fock_matrix_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num)
|
||||
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is
|
||||
| F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K |
|
||||
F = 1/2 (Fa + Fb)
|
||||
K = Fb - Fa
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: fock_matrix_mo_alpha
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_mo_alpha (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Fock matrix on the MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: fock_matrix_mo_beta
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fock_matrix_mo_beta (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Fock matrix on the MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: fps_spf_matrix_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num)
|
||||
|
||||
File: :file:`DIIS.irp.f`
|
||||
|
||||
Commutator FPS - SPF
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: fps_spf_matrix_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: fps_spf_matrix_mo (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`DIIS.irp.f`
|
||||
|
||||
Commutator FPS - SPF in MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: hf_density_matrix_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: hf_density_matrix_ao (ao_num,ao_num)
|
||||
|
||||
File: :file:`HF_density_matrix_ao.irp.f`
|
||||
|
||||
S^{-1}.P.S^{-1} where P = C.C^t
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: hf_density_matrix_ao_alpha
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: hf_density_matrix_ao_alpha (ao_num,ao_num)
|
||||
|
||||
File: :file:`HF_density_matrix_ao.irp.f`
|
||||
|
||||
S^{-1}.P_alpha.S^{-1}
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: hf_density_matrix_ao_beta
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: hf_density_matrix_ao_beta (ao_num,ao_num)
|
||||
|
||||
File: :file:`HF_density_matrix_ao.irp.f`
|
||||
|
||||
S^{-1}.P_beta.S^{-1}
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: hf_energy
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: hf_energy
|
||||
|
||||
File: :file:`Fock_matrix.irp.f`
|
||||
|
||||
Hartree-Fock energy
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: threshold_diis_nonzero
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: threshold_diis_nonzero
|
||||
|
||||
File: :file:`DIIS.irp.f`
|
||||
|
||||
If threshold_DIIS is zero, choose sqrt(thresh_scf)
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: create_guess
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine create_guess
|
||||
|
||||
File: :file:`SCF.irp.f`
|
||||
|
||||
Create a MO guess if no MOs are present in the EZFIO directory
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: damping_scf
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine damping_SCF
|
||||
|
||||
File: :file:`damping_SCF.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: huckel_guess
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine huckel_guess
|
||||
|
||||
File: :file:`huckel.irp.f`
|
||||
|
||||
Build the MOs using the extended Huckel model
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: roothaan_hall_scf
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine Roothaan_Hall_SCF
|
||||
|
||||
File: :file:`Roothaan_Hall_SCF.irp.f`
|
||||
|
||||
Roothaan-Hall algorithm for SCF Hartree-Fock calculation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: run
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine run
|
||||
|
||||
File: :file:`SCF.irp.f`
|
||||
|
||||
Run SCF calculation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: scf
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine scf
|
||||
|
||||
File: :file:`SCF.irp.f`
|
||||
|
||||
Produce `Hartree_Fock` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: hartree_fock.energy optional: mo_basis.mo_coef
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -35,3 +35,79 @@ EZFIO parameters
|
||||
|
||||
The |PT2| correction at each iteration
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: extrapolated_energy
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: extrapolated_energy (N_iter,N_states)
|
||||
|
||||
File: :file:`iterations.irp.f`
|
||||
|
||||
Extrapolated energy, using E_var = f(PT2) where PT2=0
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_iter
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: n_iter
|
||||
|
||||
File: :file:`io.irp.f`
|
||||
|
||||
number of iterations
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: print_extrapolated_energy
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine print_extrapolated_energy(e_,pt2_)
|
||||
|
||||
File: :file:`print_extrapolation.irp.f`
|
||||
|
||||
Print the extrapolated energy in the output
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: print_summary
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine print_summary(e_,pt2_,error_,variance_,norm_)
|
||||
|
||||
File: :file:`print_summary.irp.f`
|
||||
|
||||
Print the extrapolated energy in the output
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: save_iterations
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine save_iterations(e_, pt2_,n_)
|
||||
|
||||
File: :file:`iterations.irp.f`
|
||||
|
||||
Update the energy in the EZFIO file.
|
||||
|
||||
|
||||
|
@ -63,3 +63,287 @@ EZFIO parameters
|
||||
|
||||
MD5 checksum characterizing the |AO| basis set.
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: mo_coef
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_coef (ao_num,mo_tot_num)
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
Molecular orbital coefficients on AO basis set mo_coef(i,j) = coefficient of the ith ao on the jth mo mo_label : Label characterizing the MOS (local, canonical, natural, etc)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_coef_in_ao_ortho_basis
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_tot_num)
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
MO coefficients in orthogonalized AO basis
|
||||
C^(-1).C_mo
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_coef_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_coef_transp (mo_tot_num,ao_num)
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
Molecular orbital coefficients on AO basis set
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_label
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(64) :: mo_label
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
Molecular orbital coefficients on AO basis set mo_coef(i,j) = coefficient of the ith ao on the jth mo mo_label : Label characterizing the MOS (local, canonical, natural, etc)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_num
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: mo_num
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
mo_tot_num without the highest deleted MOs
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_occ
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_occ (mo_tot_num)
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
MO occupation numbers
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_tot_num
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: mo_tot_num
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
Number of MOs
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: ao_ortho_cano_to_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine ao_ortho_cano_to_ao(A_ao,LDA_ao,A,LDA)
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
Transform A from the AO basis to the orthogonal AO basis
|
||||
C^(-1).A_ao.Ct^(-1)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: ao_to_mo
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine ao_to_mo(A_ao,LDA_ao,A_mo,LDA_mo)
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
Transform A from the AO basis to the MO basis
|
||||
Ct.A_ao.C
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: give_all_mos_at_r
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine give_all_mos_at_r(r,mos_array)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: give_specific_mos_at_r
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine give_specific_mos_at_r(r,mos_array, mo_coef_specific)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: mix_mo_jk
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine mix_mo_jk(j,k)
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
subroutine that rotates the jth MO with the kth MO to give two new MO's that are '+' = 1/sqrt(2) (|j> + |k>) '-' = 1/sqrt(2) (|j> - |k>) by convention, the '+' MO is in the lower index (min(j,k)) by convention, the '-' MO is in the greater index (max(j,k))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: mo_as_eigvectors_of_mo_matrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: mo_as_eigvectors_of_mo_matrix_sort_by_observable
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine mo_as_eigvectors_of_mo_matrix_sort_by_observable(matrix,observable,n,m,label)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: mo_as_svd_vectors_of_mo_matrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: mo_sort_by_observable
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine mo_sort_by_observable(observable,label)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: mo_to_ao_no_overlap
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)
|
||||
|
||||
File: :file:`mos.irp.f`
|
||||
|
||||
Transform A from the MO basis to the S^-1 AO basis Useful for density matrix
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: save_mos
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine save_mos
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: save_mos_truncated
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine save_mos_truncated(n)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -36,3 +36,249 @@ EZFIO parameters
|
||||
Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ]
|
||||
|
||||
Default: None
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: mo_dipole_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_dipole_x (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_dipole_y (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_dipole_z (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`spread_dipole_mo.irp.f`
|
||||
|
||||
array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_dipole_y
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_dipole_x (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_dipole_y (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_dipole_z (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`spread_dipole_mo.irp.f`
|
||||
|
||||
array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_dipole_z
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_dipole_x (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_dipole_y (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_dipole_z (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`spread_dipole_mo.irp.f`
|
||||
|
||||
array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_kinetic_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_kinetic_integral (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`kin_mo_ints.irp.f`
|
||||
|
||||
Kinetic energy integrals in the MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_mono_elec_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_mono_elec_integral (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`mo_mono_ints.irp.f`
|
||||
|
||||
array of the mono electronic hamiltonian on the MOs basis : sum of the kinetic and nuclear electronic potential (and pseudo potential if needed)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_nucl_elec_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_nucl_elec_integral (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`pot_mo_ints.irp.f`
|
||||
|
||||
interaction nuclear electron on the MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_nucl_elec_integral_per_atom
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_nucl_elec_integral_per_atom (mo_tot_num,mo_tot_num,nucl_num)
|
||||
|
||||
File: :file:`pot_mo_ints.irp.f`
|
||||
|
||||
mo_nucl_elec_integral_per_atom(i,j,k) = -<MO(i)|1/|r-Rk|MO(j)> where Rk is the geometry of the kth atom
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_overlap
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_overlap (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`mo_overlap.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_pseudo_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_pseudo_integral (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`pot_mo_pseudo_ints.irp.f`
|
||||
|
||||
interaction nuclear electron on the MO basis
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_spread_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_spread_x (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_spread_y (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_spread_z (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`spread_dipole_mo.irp.f`
|
||||
|
||||
array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_spread_y
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_spread_x (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_spread_y (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_spread_z (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`spread_dipole_mo.irp.f`
|
||||
|
||||
array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mo_spread_z
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: mo_spread_x (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_spread_y (mo_tot_num,mo_tot_num)
|
||||
double precision, allocatable :: mo_spread_z (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`spread_dipole_mo.irp.f`
|
||||
|
||||
array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: read_mo_one_integrals
|
||||
|
||||
.. code:: text
|
||||
|
||||
logical :: read_mo_one_integrals
|
||||
logical :: write_mo_one_integrals
|
||||
|
||||
File: :file:`read_write.irp.f`
|
||||
|
||||
One level of abstraction for disk_access_mo_integrals
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: s_mo_coef
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: s_mo_coef (ao_num,mo_tot_num)
|
||||
|
||||
File: :file:`ao_to_mo.irp.f`
|
||||
|
||||
Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: write_mo_one_integrals
|
||||
|
||||
.. code:: text
|
||||
|
||||
logical :: read_mo_one_integrals
|
||||
logical :: write_mo_one_integrals
|
||||
|
||||
File: :file:`read_write.irp.f`
|
||||
|
||||
One level of abstraction for disk_access_mo_integrals
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: mo_to_ao
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao)
|
||||
|
||||
File: :file:`ao_to_mo.irp.f`
|
||||
|
||||
Transform A from the MO basis to the AO basis
|
||||
(S.C).A_mo.(S.C)t
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: orthonormalize_mos
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine orthonormalize_mos
|
||||
|
||||
File: :file:`orthonormalize.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -11,3 +11,77 @@ MOGuess
|
||||
Guess for |MOs|.
|
||||
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: ao_ortho_canonical_nucl_elec_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_ortho_canonical_nucl_elec_integral (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`pot_mo_ortho_canonical_ints.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_ortho_lowdin_coef
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_ortho_lowdin_coef (ao_num,ao_num)
|
||||
|
||||
File: :file:`mo_ortho_lowdin.irp.f`
|
||||
|
||||
matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_lowdin_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_lowdin orbital
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_ortho_lowdin_nucl_elec_integral
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_ortho_lowdin_nucl_elec_integral (mo_tot_num,mo_tot_num)
|
||||
|
||||
File: :file:`pot_mo_ortho_lowdin_ints.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_ortho_lowdin_overlap
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ao_ortho_lowdin_overlap (ao_num,ao_num)
|
||||
|
||||
File: :file:`mo_ortho_lowdin.irp.f`
|
||||
|
||||
overlap matrix of the ao_ortho_lowdin supposed to be the Identity
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: hcore_guess
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine hcore_guess
|
||||
|
||||
File: :file:`h_core_guess_routine.irp.f`
|
||||
|
||||
Produce `H_core` MO orbital
|
||||
|
||||
|
||||
|
@ -10,3 +10,107 @@ MPI
|
||||
|
||||
Contains all the functions and providers for parallelization with |MPI|.
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: mpi_initialized
|
||||
|
||||
.. code:: text
|
||||
|
||||
logical :: mpi_initialized
|
||||
|
||||
File: :file:`mpi.irp.f`
|
||||
|
||||
Always true. Initialized MPI
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mpi_master
|
||||
|
||||
.. code:: text
|
||||
|
||||
logical :: mpi_master
|
||||
|
||||
File: :file:`mpi.irp.f`
|
||||
|
||||
If true, rank is zero
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mpi_rank
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: mpi_rank
|
||||
integer :: mpi_size
|
||||
|
||||
File: :file:`mpi.irp.f`
|
||||
|
||||
Rank of MPI process and number of MPI processes
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: mpi_size
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: mpi_rank
|
||||
integer :: mpi_size
|
||||
|
||||
File: :file:`mpi.irp.f`
|
||||
|
||||
Rank of MPI process and number of MPI processes
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: broadcast_chunks_double
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine broadcast_chunks_double(A, LDA)
|
||||
|
||||
File: :file:`mpi.irp.f_template_97`
|
||||
|
||||
Broadcast with chunks of ~2GB
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: broadcast_chunks_integer
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine broadcast_chunks_integer(A, LDA)
|
||||
|
||||
File: :file:`mpi.irp.f_template_97`
|
||||
|
||||
Broadcast with chunks of ~2GB
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: broadcast_chunks_integer8
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine broadcast_chunks_integer8(A, LDA)
|
||||
|
||||
File: :file:`mpi.irp.f_template_97`
|
||||
|
||||
Broadcast with chunks of ~2GB
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -48,3 +48,304 @@ EZFIO parameters
|
||||
|
||||
Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|)
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: center_of_mass
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: center_of_mass (3)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
Center of mass of the molecule
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: element_mass
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(4), allocatable :: element_name (0:127)
|
||||
double precision, allocatable :: element_mass (0:127)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
Array of the name of element, sorted by nuclear charge (integer)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: element_name
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(4), allocatable :: element_name (0:127)
|
||||
double precision, allocatable :: element_mass (0:127)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
Array of the name of element, sorted by nuclear charge (integer)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: inertia_tensor
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: inertia_tensor (3,3)
|
||||
|
||||
File: :file:`inertia.irp.f`
|
||||
|
||||
Inertia tensor
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: inertia_tensor_eigenvalues
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
|
||||
double precision, allocatable :: inertia_tensor_eigenvalues (3)
|
||||
|
||||
File: :file:`inertia.irp.f`
|
||||
|
||||
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: inertia_tensor_eigenvectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
|
||||
double precision, allocatable :: inertia_tensor_eigenvalues (3)
|
||||
|
||||
File: :file:`inertia.irp.f`
|
||||
|
||||
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_coord
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: nucl_coord (nucl_num,3)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
Nuclear coordinates in the format (:, {x,y,z})
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_coord_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: nucl_coord_transp (3,nucl_num)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
Transposed array of nucl_coord
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_dist
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_dist_2
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_dist_vec_x
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_dist_vec_y
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nucl_dist_vec_z
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: nuclear_repulsion
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: nuclear_repulsion
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
Nuclear repulsion energy
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: positive_charge_barycentre
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: positive_charge_barycentre (3)
|
||||
|
||||
File: :file:`nuclei.irp.f`
|
||||
|
||||
Centroid of the positive charges
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: slater_bragg_radii
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: slater_bragg_radii (100)
|
||||
|
||||
File: :file:`atomic_radii.irp.f`
|
||||
|
||||
atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater execpt for the Hydrogen atom where we took the value of Becke (1988, JCP)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: slater_bragg_radii_per_atom
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num)
|
||||
|
||||
File: :file:`atomic_radii.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: slater_bragg_radii_per_atom_ua
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num)
|
||||
|
||||
File: :file:`atomic_radii.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: slater_bragg_radii_ua
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: slater_bragg_radii_ua (100)
|
||||
|
||||
File: :file:`atomic_radii.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: slater_bragg_type_inter_distance
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num)
|
||||
|
||||
File: :file:`atomic_radii.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: slater_bragg_type_inter_distance_ua
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num)
|
||||
|
||||
File: :file:`atomic_radii.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -107,3 +107,694 @@ EZFIO parameters
|
||||
Type of zeroth-order Hamiltonian [ EN | Barycentric | Variance | SOP ]
|
||||
|
||||
Default: EN
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: fill_h_apply_buffer_selection
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, &
|
||||
N_st,Nint,iproc,select_max_out)
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
Fill the H_apply buffer with determiants for the selection
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: max_exc_pert
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: max_exc_pert
|
||||
|
||||
File: :file:`exc_max.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: selection_criterion
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: selection_criterion
|
||||
double precision :: selection_criterion_min
|
||||
double precision :: selection_criterion_factor
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
Threshold to select determinants. Set by selection routines.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: selection_criterion_factor
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: selection_criterion
|
||||
double precision :: selection_criterion_min
|
||||
double precision :: selection_criterion_factor
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
Threshold to select determinants. Set by selection routines.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: selection_criterion_min
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: selection_criterion
|
||||
double precision :: selection_criterion_min
|
||||
double precision :: selection_criterion_factor
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
Threshold to select determinants. Set by selection routines.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: var_pt2_ratio
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: var_pt2_ratio
|
||||
|
||||
File: :file:`var_pt2_ratio_provider.irp.f`
|
||||
|
||||
The selection process stops when the energy ratio variational/(variational+PT2) is equal to var_pt2_ratio
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: i_h_psi_pert_new_minilist
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine i_H_psi_pert_new_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array,coef_pert)
|
||||
|
||||
File: :file:`pt2_new.irp.f`
|
||||
|
||||
Computes <i|H|Psi> = \sum_J c_J <i|H|J>.
|
||||
Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The |J> are searched in short pre-computed lists.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_decontracted
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_decontracted(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``decontracted`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_dummy
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_epstein_nesbet
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_sc2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_epstein_nesbet_sc2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_sc2`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_sc2_no_projected
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_epstein_nesbet_sc2_no_projected(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_sc2_no_projected`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_sc2_projected
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_epstein_nesbet_sc2_projected(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_sc2_projected`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_h_core
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_h_core(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_moller_plesset
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_moller_plesset_general
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_moller_plesset_general(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``moller_plesset_general`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_by_mono_qdpt
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_by_mono_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_decontracted
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_decontracted(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``decontracted`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_dummy
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_epstein_nesbet
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_epstein_nesbet_2x2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_epstein_nesbet_2x2_no_ci_diag
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_epstein_nesbet_sc2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_epstein_nesbet_sc2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_sc2`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_epstein_nesbet_sc2_no_projected
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_epstein_nesbet_sc2_no_projected(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_sc2_no_projected`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_epstein_nesbet_sc2_projected
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_epstein_nesbet_sc2_projected(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``epstein_nesbet_sc2_projected`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_h_core
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_h_core(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_moller_plesset
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_moller_plesset_general
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_moller_plesset_general(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``moller_plesset_general`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: perturb_buffer_qdpt
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine perturb_buffer_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||
|
||||
File: :file:`perturbation.irp.f_shell_13`
|
||||
|
||||
Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply routine.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_decontracted
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_decontracted (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_dummy
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_dummy (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
Dummy perturbation to add all connected determinants.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_epstein_nesbet
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_epstein_nesbet (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
|
||||
for the various N_st states.
|
||||
c_pert(i) = <psi(i)|H|det_pert>/( E(i) - <det_pert|H|det_pert> )
|
||||
e_2_pert(i) = <psi(i)|H|det_pert>^2/( E(i) - <det_pert|H|det_pert> )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_epstein_nesbet_2x2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_epstein_nesbet_2x2 (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
|
||||
for the various N_st states.
|
||||
e_2_pert(i) = 0.5 * (( <det_pert|H|det_pert> - E(i) ) - sqrt( ( <det_pert|H|det_pert> - E(i)) ^2 + 4 <psi(i)|H|det_pert>^2 )
|
||||
c_pert(i) = e_2_pert(i)/ <psi(i)|H|det_pert>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_epstein_nesbet_2x2_no_ci_diag
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_epstein_nesbet_2x2_no_ci_diag(electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
|
||||
for the various N_st states.
|
||||
e_2_pert(i) = 0.5 * (( <det_pert|H|det_pert> - E(i) ) - sqrt( ( <det_pert|H|det_pert> - E(i)) ^2 + 4 <psi(i)|H|det_pert>^2 )
|
||||
c_pert(i) = e_2_pert(i)/ <psi(i)|H|det_pert>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_epstein_nesbet_sc2
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_epstein_nesbet_sc2 (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
|
||||
for the various N_st states, but with the CISD_SC2 energies and coefficients
|
||||
c_pert(i) = <psi(i)|H|det_pert>/( E(i) - <det_pert|H|det_pert> )
|
||||
e_2_pert(i) = <psi(i)|H|det_pert>^2/( E(i) - <det_pert|H|det_pert> )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_epstein_nesbet_sc2_no_projected
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_epstein_nesbet_SC2_no_projected (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
compute the Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
|
||||
for the various N_st states,
|
||||
but with the correction in the denominator
|
||||
comming from the interaction of that determinant with all the others determinants
|
||||
that can be repeated by repeating all the double excitations
|
||||
: you repeat all the correlation energy already taken into account in electronic_energy(1)
|
||||
that could be repeated to this determinant.
|
||||
In addition, for the perturbative energetic contribution you have the standard second order
|
||||
e_2_pert = <psi_i|H|det_pert>^2/(Delta_E)
|
||||
and also the purely projected contribution
|
||||
H_pert_diag = <HF|H|det_pert> c_pert
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_epstein_nesbet_sc2_projected
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_epstein_nesbet_SC2_projected (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
compute the Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
|
||||
for the various N_st states,
|
||||
but with the correction in the denominator
|
||||
comming from the interaction of that determinant with all the others determinants
|
||||
that can be repeated by repeating all the double excitations
|
||||
: you repeat all the correlation energy already taken into account in electronic_energy(1)
|
||||
that could be repeated to this determinant.
|
||||
In addition, for the perturbative energetic contribution you have the standard second order
|
||||
e_2_pert = <psi_i|H|det_pert>^2/(Delta_E)
|
||||
and also the purely projected contribution
|
||||
H_pert_diag = <HF|H|det_pert> c_pert
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_h_core
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_h_core(det_pert,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pert_single.irp.f`
|
||||
|
||||
compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
|
||||
for the various N_st states.
|
||||
c_pert(i) = <psi(i)|H|det_pert>/( E(i) - <det_pert|H|det_pert> )
|
||||
e_2_pert(i) = <psi(i)|H|det_pert>^2/( E(i) - <det_pert|H|det_pert> )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_moller_plesset
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_moller_plesset (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
compute the standard Moller-Plesset perturbative first order coefficient and second order energetic contribution
|
||||
for the various n_st states.
|
||||
c_pert(i) = <psi(i)|H|det_pert>/(difference of orbital energies)
|
||||
e_2_pert(i) = <psi(i)|H|det_pert>^2/(difference of orbital energies)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_moller_plesset_general
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_moller_plesset_general (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
compute the general Moller-Plesset perturbative first order coefficient and second order energetic contribution
|
||||
for the various n_st states.
|
||||
c_pert(i) = <psi(i)|H|det_pert>/(difference of orbital energies)
|
||||
e_2_pert(i) = <psi(i)|H|det_pert>^2/(difference of orbital energies)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: pt2_qdpt
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine pt2_qdpt (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||
|
||||
File: :file:`pt2_equations.irp.f_template_606`
|
||||
|
||||
compute the QDPT first order coefficient and second order energetic contribution
|
||||
for the various N_st states.
|
||||
c_pert(i) = <psi(i)|H|det_pert>/( <psi(i)|H|psi(i)> - <det_pert|H|det_pert> )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: remove_small_contributions
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine remove_small_contributions
|
||||
|
||||
File: :file:`selection.irp.f`
|
||||
|
||||
Remove determinants with small contributions. N_states is assumed to be provided.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: repeat_all_e_corr
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision function repeat_all_e_corr(key_in)
|
||||
|
||||
File: :file:`pert_sc2.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -12,3 +12,166 @@ Reference wave function is defined as a |CAS| wave function.
|
||||
This module is required for |CAS-SD|, |MRPT| or |MRCC|.
|
||||
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: idx_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_ref_coef (psi_det_size,n_states)
|
||||
integer, allocatable :: idx_ref (psi_det_size)
|
||||
integer :: n_det_ref
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: inv_norm_psi_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: norm_psi_ref (N_states)
|
||||
double precision, allocatable :: inv_norm_psi_ref (N_states)
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_det_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_ref_coef (psi_det_size,n_states)
|
||||
integer, allocatable :: idx_ref (psi_det_size)
|
||||
integer :: n_det_ref
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: norm_psi_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: norm_psi_ref (N_states)
|
||||
double precision, allocatable :: inv_norm_psi_ref (N_states)
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_non_ref_coef_interm_norm
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_non_ref_coef_interm_norm (N_det_non_ref,N_states)
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_ref_coef (psi_det_size,n_states)
|
||||
integer, allocatable :: idx_ref (psi_det_size)
|
||||
integer :: n_det_ref
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_coef
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_ref_coef (psi_det_size,n_states)
|
||||
integer, allocatable :: idx_ref (psi_det_size)
|
||||
integer :: n_det_ref
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_coef_interm_norm
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_ref_coef_interm_norm (N_det_ref,N_states)
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_coef_inv
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_ref_coef_inv (psi_det_size,n_states)
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
1/psi_ref_coef
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_coef_restart
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_ref_restart (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_ref_coef_restart (psi_det_size,n_states)
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
Projection of the CAS wave function on the restart wave function.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_restart
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_ref_restart (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_ref_coef_restart (psi_det_size,n_states)
|
||||
|
||||
File: :file:`psi_ref.irp.f`
|
||||
|
||||
Projection of the CAS wave function on the restart wave function.
|
||||
|
||||
|
||||
|
@ -14,3 +14,369 @@ needs to be loaded with any `psi_ref_*` module.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: h_matrix_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: h_matrix_ref (N_det_ref,N_det_ref)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: holes_operators
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: holes_operators (N_int,2)
|
||||
integer(bit_kind), allocatable :: particles_operators (N_int,2)
|
||||
|
||||
File: :file:`psi_ref_excitations_operators.irp.f`
|
||||
|
||||
holes_operators represents an array of integers where all the holes have been done going from psi_ref to psi_non_ref particles_operators represents an array of integers where all the particles have been done going from psi_ref to psi_non_ref
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: idx_non_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
|
||||
integer, allocatable :: idx_non_ref (psi_det_size)
|
||||
integer, allocatable :: idx_non_ref_rev (psi_det_size)
|
||||
integer :: n_det_non_ref
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: idx_non_ref_from_sorted
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: idx_non_ref_from_sorted (N_det)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: idx_non_ref_rev
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
|
||||
integer, allocatable :: idx_non_ref (psi_det_size)
|
||||
integer, allocatable :: idx_non_ref_rev (psi_det_size)
|
||||
integer :: n_det_non_ref
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_det_non_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
|
||||
integer, allocatable :: idx_non_ref (psi_det_size)
|
||||
integer, allocatable :: idx_non_ref_rev (psi_det_size)
|
||||
integer :: n_det_non_ref
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: particles_operators
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: holes_operators (N_int,2)
|
||||
integer(bit_kind), allocatable :: particles_operators (N_int,2)
|
||||
|
||||
File: :file:`psi_ref_excitations_operators.irp.f`
|
||||
|
||||
holes_operators represents an array of integers where all the holes have been done going from psi_ref to psi_non_ref particles_operators represents an array of integers where all the particles have been done going from psi_ref to psi_non_ref
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_non_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
|
||||
integer, allocatable :: idx_non_ref (psi_det_size)
|
||||
integer, allocatable :: idx_non_ref_rev (psi_det_size)
|
||||
integer :: n_det_non_ref
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_non_ref_coef
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
|
||||
integer, allocatable :: idx_non_ref (psi_det_size)
|
||||
integer, allocatable :: idx_non_ref_rev (psi_det_size)
|
||||
integer :: n_det_non_ref
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_non_ref_coef_restart
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_non_ref_restart (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_non_ref_coef_restart (psi_det_size,n_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. But this is with respect to the restart wave function.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_non_ref_coef_sorted_bit
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_non_ref_sorted_bit (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_non_ref_coef_sorted_bit (psi_det_size,N_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Reference determinants sorted to accelerate the search of a random determinant in the wave function.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_non_ref_coef_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_non_ref_coef_transp (n_states,psi_det_size)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Transposed psi_non_ref_coef
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_non_ref_restart
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_non_ref_restart (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_non_ref_coef_restart (psi_det_size,n_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. But this is with respect to the restart wave function.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_non_ref_sorted_bit
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_non_ref_sorted_bit (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_non_ref_coef_sorted_bit (psi_det_size,N_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Reference determinants sorted to accelerate the search of a random determinant in the wave function.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_coef_diagonalized
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_ref_coef_diagonalized (N_det_ref,N_states)
|
||||
double precision, allocatable :: psi_ref_energy_diagonalized (N_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_coef_normalized
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_ref_coef_normalized (psi_det_size,n_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Normalized coefficients of the reference
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_coef_sorted_bit
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_ref_sorted_bit (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_ref_coef_sorted_bit (psi_det_size,N_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Reference determinants sorted to accelerate the search of a random determinant in the wave function.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_coef_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_ref_coef_transp (n_states,psi_det_size)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Transposed psi_ref_coef
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_energy
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_ref_energy (N_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_energy_diagonalized
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_ref_coef_diagonalized (N_det_ref,N_states)
|
||||
double precision, allocatable :: psi_ref_energy_diagonalized (N_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_ref_sorted_bit
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_ref_sorted_bit (N_int,2,psi_det_size)
|
||||
double precision, allocatable :: psi_ref_coef_sorted_bit (psi_det_size,N_states)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Reference determinants sorted to accelerate the search of a random determinant in the wave function.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: ref_hamiltonian_matrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: ref_hamiltonian_matrix (n_det_ref,n_det_ref)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
H matrix in the Reference space
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: extract_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine extract_ref
|
||||
|
||||
File: :file:`extract_ref.irp.f`
|
||||
|
||||
Replaces the total wave function by the normalized projection on the reference
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_index_in_psi_ref_sorted_bit
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function get_index_in_psi_ref_sorted_bit(key,Nint)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
Returns the index of the determinant in the ``psi_ref_sorted_bit`` array
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: is_in_psi_ref
|
||||
|
||||
.. code:: text
|
||||
|
||||
logical function is_in_psi_ref(key,Nint)
|
||||
|
||||
File: :file:`psi_ref_utils.irp.f`
|
||||
|
||||
True if the determinant ``det`` is in the wave function
|
||||
|
||||
|
||||
|
@ -12,3 +12,48 @@ All the determinants are possible selectors. Only the largest contributions are
|
||||
a threshold is applied to the squared norm of the wave function, with the :option:`determinants
|
||||
threshold_selectors` flag.
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: n_det_selectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: n_det_selectors
|
||||
|
||||
File: :file:`selectors.irp.f`
|
||||
|
||||
For Single reference wave functions, the number of selectors is 1 : the Hartree-Fock determinant
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_selectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size)
|
||||
double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states)
|
||||
|
||||
File: :file:`selectors.irp.f`
|
||||
|
||||
Determinants on which we apply <i|H|psi> for perturbation.
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_selectors_coef
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size)
|
||||
double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states)
|
||||
|
||||
File: :file:`selectors.irp.f`
|
||||
|
||||
Determinants on which we apply <i|H|psi> for perturbation.
|
||||
|
||||
|
||||
|
@ -11,3 +11,352 @@ Selectors_Utils
|
||||
Helper functions for selectors.
|
||||
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: coef_hf_selector
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: coef_hf_selector
|
||||
double precision :: inv_selectors_coef_hf
|
||||
double precision :: inv_selectors_coef_hf_squared
|
||||
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||
double precision :: e_corr_double_only
|
||||
double precision :: e_corr_second_order
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
energy of correlation per determinant respect to the Hartree Fock determinant
|
||||
for the all the double excitations in the selectors determinants
|
||||
E_corr_per_selectors(i) = <D_i|H|HF> * c(D_i)/c(HF) if |D_i> is a double excitation
|
||||
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: delta_e_per_selector
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: coef_hf_selector
|
||||
double precision :: inv_selectors_coef_hf
|
||||
double precision :: inv_selectors_coef_hf_squared
|
||||
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||
double precision :: e_corr_double_only
|
||||
double precision :: e_corr_second_order
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
energy of correlation per determinant respect to the Hartree Fock determinant
|
||||
for the all the double excitations in the selectors determinants
|
||||
E_corr_per_selectors(i) = <D_i|H|HF> * c(D_i)/c(HF) if |D_i> is a double excitation
|
||||
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: double_index_selectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
|
||||
integer, allocatable :: double_index_selectors (N_det_selectors)
|
||||
integer :: n_double_selectors
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
degree of excitation respect to Hartree Fock for the wave function
|
||||
for the all the selectors determinants
|
||||
double_index_selectors = list of the index of the double excitations
|
||||
n_double_selectors = number of double excitations in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: e_corr_double_only
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: coef_hf_selector
|
||||
double precision :: inv_selectors_coef_hf
|
||||
double precision :: inv_selectors_coef_hf_squared
|
||||
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||
double precision :: e_corr_double_only
|
||||
double precision :: e_corr_second_order
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
energy of correlation per determinant respect to the Hartree Fock determinant
|
||||
for the all the double excitations in the selectors determinants
|
||||
E_corr_per_selectors(i) = <D_i|H|HF> * c(D_i)/c(HF) if |D_i> is a double excitation
|
||||
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: e_corr_per_selectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: coef_hf_selector
|
||||
double precision :: inv_selectors_coef_hf
|
||||
double precision :: inv_selectors_coef_hf_squared
|
||||
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||
double precision :: e_corr_double_only
|
||||
double precision :: e_corr_second_order
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
energy of correlation per determinant respect to the Hartree Fock determinant
|
||||
for the all the double excitations in the selectors determinants
|
||||
E_corr_per_selectors(i) = <D_i|H|HF> * c(D_i)/c(HF) if |D_i> is a double excitation
|
||||
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: e_corr_second_order
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: coef_hf_selector
|
||||
double precision :: inv_selectors_coef_hf
|
||||
double precision :: inv_selectors_coef_hf_squared
|
||||
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||
double precision :: e_corr_double_only
|
||||
double precision :: e_corr_second_order
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
energy of correlation per determinant respect to the Hartree Fock determinant
|
||||
for the all the double excitations in the selectors determinants
|
||||
E_corr_per_selectors(i) = <D_i|H|HF> * c(D_i)/c(HF) if |D_i> is a double excitation
|
||||
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: exc_degree_per_selectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
|
||||
integer, allocatable :: double_index_selectors (N_det_selectors)
|
||||
integer :: n_double_selectors
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
degree of excitation respect to Hartree Fock for the wave function
|
||||
for the all the selectors determinants
|
||||
double_index_selectors = list of the index of the double excitations
|
||||
n_double_selectors = number of double excitations in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: i_h_hf_per_selectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: coef_hf_selector
|
||||
double precision :: inv_selectors_coef_hf
|
||||
double precision :: inv_selectors_coef_hf_squared
|
||||
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||
double precision :: e_corr_double_only
|
||||
double precision :: e_corr_second_order
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
energy of correlation per determinant respect to the Hartree Fock determinant
|
||||
for the all the double excitations in the selectors determinants
|
||||
E_corr_per_selectors(i) = <D_i|H|HF> * c(D_i)/c(HF) if |D_i> is a double excitation
|
||||
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: inv_selectors_coef_hf
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: coef_hf_selector
|
||||
double precision :: inv_selectors_coef_hf
|
||||
double precision :: inv_selectors_coef_hf_squared
|
||||
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||
double precision :: e_corr_double_only
|
||||
double precision :: e_corr_second_order
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
energy of correlation per determinant respect to the Hartree Fock determinant
|
||||
for the all the double excitations in the selectors determinants
|
||||
E_corr_per_selectors(i) = <D_i|H|HF> * c(D_i)/c(HF) if |D_i> is a double excitation
|
||||
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: inv_selectors_coef_hf_squared
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision :: coef_hf_selector
|
||||
double precision :: inv_selectors_coef_hf
|
||||
double precision :: inv_selectors_coef_hf_squared
|
||||
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||
double precision :: e_corr_double_only
|
||||
double precision :: e_corr_second_order
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
energy of correlation per determinant respect to the Hartree Fock determinant
|
||||
for the all the double excitations in the selectors determinants
|
||||
E_corr_per_selectors(i) = <D_i|H|HF> * c(D_i)/c(HF) if |D_i> is a double excitation
|
||||
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_double_selectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
|
||||
integer, allocatable :: double_index_selectors (N_det_selectors)
|
||||
integer :: n_double_selectors
|
||||
|
||||
File: :file:`e_corr_selectors.irp.f`
|
||||
|
||||
degree of excitation respect to Hartree Fock for the wave function
|
||||
for the all the selectors determinants
|
||||
double_index_selectors = list of the index of the double excitations
|
||||
n_double_selectors = number of double excitations in the selectors determinants
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_selectors_coef_transp
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size)
|
||||
|
||||
File: :file:`selectors.irp.f`
|
||||
|
||||
Transposed psi_selectors
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_selectors_diag_h_mat
|
||||
|
||||
.. code:: text
|
||||
|
||||
double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size)
|
||||
|
||||
File: :file:`selectors.irp.f`
|
||||
|
||||
Diagonal elements of the H matrix for each selectors
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: psi_selectors_size
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer :: psi_selectors_size
|
||||
|
||||
File: :file:`selectors.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_n_det_generators
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id)
|
||||
|
||||
File: :file:`zmq.irp.f_template_102`
|
||||
|
||||
Get N_det_generators from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_n_det_selectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id)
|
||||
|
||||
File: :file:`zmq.irp.f_template_102`
|
||||
|
||||
Get N_det_selectors from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put_n_det_generators
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id)
|
||||
|
||||
File: :file:`zmq.irp.f_template_102`
|
||||
|
||||
Put N_det_generators on the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put_n_det_selectors
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id)
|
||||
|
||||
File: :file:`zmq.irp.f_template_102`
|
||||
|
||||
Put N_det_selectors on the qp_run scheduler
|
||||
|
||||
|
||||
|
@ -11,3 +11,63 @@ Slave
|
||||
Slave processes for distributed parallelism.
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: provide_everything
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine provide_everything
|
||||
|
||||
File: :file:`slave_cipsi.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: qp_ao_ints
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine qp_ao_ints
|
||||
|
||||
File: :file:`slave_eri.irp.f`
|
||||
|
||||
Slave for electron repulsion integrals
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: run_wf
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine run_wf
|
||||
|
||||
File: :file:`slave_cipsi.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: slave
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine slave
|
||||
|
||||
File: :file:`slave_cipsi.irp.f`
|
||||
|
||||
Helper program for distributed parallelism
|
||||
|
||||
|
||||
|
@ -10,3 +10,119 @@ Tools
|
||||
|
||||
Useful tools are grouped in this module.
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: fcidump
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine fcidump
|
||||
|
||||
File: :file:`fcidump.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: print_mos
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine print_mos
|
||||
|
||||
File: :file:`molden.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: save_natorb
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine save_natorb
|
||||
|
||||
File: :file:`save_natorb.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: save_ortho_mos
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine save_ortho_mos
|
||||
|
||||
File: :file:`save_ortho_mos.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: write_ao_basis
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine write_Ao_basis(i_unit_output)
|
||||
|
||||
File: :file:`molden.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: write_geometry
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine write_geometry(i_unit_output)
|
||||
|
||||
File: :file:`molden.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: write_intro_gamess
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine write_intro_gamess(i_unit_output)
|
||||
|
||||
File: :file:`molden.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: write_mo_basis
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine write_Mo_basis(i_unit_output)
|
||||
|
||||
File: :file:`molden.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -12,3 +12,874 @@ Definition of |ZeroMQ| sockets and messages.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
|
||||
.. c:var:: qp_run_address
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: qp_run_address
|
||||
integer :: zmq_port_start
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Address of the qp_run socket Example : tcp://130.120.229.139:12345
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_context
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(ZMQ_PTR) :: zmq_context
|
||||
integer(omp_lock_kind) :: zmq_lock
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Context for the ZeroMQ library
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_lock
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer(ZMQ_PTR) :: zmq_context
|
||||
integer(omp_lock_kind) :: zmq_lock
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Context for the ZeroMQ library
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_port_start
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: qp_run_address
|
||||
integer :: zmq_port_start
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Address of the qp_run socket Example : tcp://130.120.229.139:12345
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_socket_pair_inproc_address
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: zmq_socket_pull_tcp_address
|
||||
character*(128) :: zmq_socket_pair_inproc_address
|
||||
character*(128) :: zmq_socket_push_tcp_address
|
||||
character*(128) :: zmq_socket_pull_inproc_address
|
||||
character*(128) :: zmq_socket_push_inproc_address
|
||||
character*(128) :: zmq_socket_sub_tcp_address
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket which pulls the results (2)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_socket_pull_inproc_address
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: zmq_socket_pull_tcp_address
|
||||
character*(128) :: zmq_socket_pair_inproc_address
|
||||
character*(128) :: zmq_socket_push_tcp_address
|
||||
character*(128) :: zmq_socket_pull_inproc_address
|
||||
character*(128) :: zmq_socket_push_inproc_address
|
||||
character*(128) :: zmq_socket_sub_tcp_address
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket which pulls the results (2)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_socket_pull_tcp_address
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: zmq_socket_pull_tcp_address
|
||||
character*(128) :: zmq_socket_pair_inproc_address
|
||||
character*(128) :: zmq_socket_push_tcp_address
|
||||
character*(128) :: zmq_socket_pull_inproc_address
|
||||
character*(128) :: zmq_socket_push_inproc_address
|
||||
character*(128) :: zmq_socket_sub_tcp_address
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket which pulls the results (2)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_socket_push_inproc_address
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: zmq_socket_pull_tcp_address
|
||||
character*(128) :: zmq_socket_pair_inproc_address
|
||||
character*(128) :: zmq_socket_push_tcp_address
|
||||
character*(128) :: zmq_socket_pull_inproc_address
|
||||
character*(128) :: zmq_socket_push_inproc_address
|
||||
character*(128) :: zmq_socket_sub_tcp_address
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket which pulls the results (2)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_socket_push_tcp_address
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: zmq_socket_pull_tcp_address
|
||||
character*(128) :: zmq_socket_pair_inproc_address
|
||||
character*(128) :: zmq_socket_push_tcp_address
|
||||
character*(128) :: zmq_socket_pull_inproc_address
|
||||
character*(128) :: zmq_socket_push_inproc_address
|
||||
character*(128) :: zmq_socket_sub_tcp_address
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket which pulls the results (2)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_socket_sub_tcp_address
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: zmq_socket_pull_tcp_address
|
||||
character*(128) :: zmq_socket_pair_inproc_address
|
||||
character*(128) :: zmq_socket_push_tcp_address
|
||||
character*(128) :: zmq_socket_pull_inproc_address
|
||||
character*(128) :: zmq_socket_push_inproc_address
|
||||
character*(128) :: zmq_socket_sub_tcp_address
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket which pulls the results (2)
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:var:: zmq_state
|
||||
|
||||
.. code:: text
|
||||
|
||||
character*(128) :: zmq_state
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Threads executing work through the ZeroMQ interface
|
||||
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
|
||||
|
||||
.. c:function:: add_task_to_taskserver
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function add_task_to_taskserver(zmq_to_qp_run_socket,task)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Get a task from the task server
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: connect_to_taskserver
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Connect to the task server and obtain the worker ID
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: disconnect_from_taskserver
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function disconnect_from_taskserver(zmq_to_qp_run_socket, worker_id)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Disconnect from the task server
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: disconnect_from_taskserver_state
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function disconnect_from_taskserver_state(zmq_to_qp_run_socket, worker_id, state)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Disconnect from the task server
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: end_parallel_job
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine end_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
End a new parallel job with name 'name'. The slave tasks execute subroutine 'slave'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: end_zmq_pair_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine end_zmq_pair_socket(zmq_socket_pair)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Terminate socket on which the results are sent.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: end_zmq_pull_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine end_zmq_pull_socket(zmq_socket_pull)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Terminate socket on which the results are sent.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: end_zmq_push_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine end_zmq_push_socket(zmq_socket_push,thread)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Terminate socket on which the results are sent.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: end_zmq_sub_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine end_zmq_sub_socket(zmq_socket_sub)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Terminate socket on which the results are sent.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: end_zmq_to_qp_run_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Terminate the socket from the application to qp_run
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_task_from_taskserver
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function get_task_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Get a task from the task server
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: get_tasks_from_taskserver
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function get_tasks_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task,n_tasks)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Get multiple tasks from the task server
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: new_parallel_job
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Start a new parallel job with name 'name'. The slave tasks execute subroutine 'slave'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: new_zmq_pair_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
function new_zmq_pair_socket(bind)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket on which the collector and the main communicate
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: new_zmq_pull_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
function new_zmq_pull_socket()
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket on which the results are sent. If thread is 1, use inproc
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: new_zmq_push_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
function new_zmq_push_socket(thread)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket on which the results are sent. If thread is 1, use inproc
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: new_zmq_sub_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
function new_zmq_sub_socket()
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket to read the state published by the Task server
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: new_zmq_to_qp_run_socket
|
||||
|
||||
.. code:: text
|
||||
|
||||
function new_zmq_to_qp_run_socket()
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket on which the qp_run process replies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: reset_zmq_addresses
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine reset_zmq_addresses
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Socket which pulls the results (2)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: switch_qp_run_to_master
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine switch_qp_run_to_master
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Address of the master qp_run socket Example : tcp://130.120.229.139:12345
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: task_done_to_taskserver
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function task_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Get a task from the task server
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: tasks_done_to_taskserver
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function tasks_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id, n_tasks)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Get a task from the task server
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: wait_for_next_state
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine wait_for_next_state(state)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: wait_for_state
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine wait_for_state(state_wait,state)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Wait for the ZMQ state to be ready
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: wait_for_states
|
||||
|
||||
.. code:: text
|
||||
|
||||
subroutine wait_for_states(state_wait,state,n)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Wait for the ZMQ state to be ready
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_abort
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_abort(zmq_to_qp_run_socket)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Aborts a running parallel computation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_delete_task
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_delete_tasks
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_delete_tasks_async_recv
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_delete_tasks_async_recv(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_delete_tasks_async_send
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_delete_tasks_async_send(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get8_dvector
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Get a float vector from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get8_ivector
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Get a vector of integers from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_dmatrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Get a float vector from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_dvector
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Get a float vector from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_i8matrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Get a float vector from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_imatrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Get a float vector from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_int
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_int(zmq_to_qp_run_socket, worker_id, name, x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Get a vector of integers from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_int_nompi
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_int_nompi(zmq_to_qp_run_socket, worker_id, name, x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Get a vector of integers from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_get_ivector
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_get_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Get a vector of integers from the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_port
|
||||
|
||||
.. code:: text
|
||||
|
||||
function zmq_port(ishift)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Return the value of the ZMQ port from the corresponding integer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put8_dvector
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Put a float vector on the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put8_ivector
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Put a vector of integers on the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put_dmatrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Put a float vector on the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put_dvector
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Put a float vector on the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put_i8matrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Put a float vector on the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put_imatrix
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Put a float vector on the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put_int
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put_int(zmq_to_qp_run_socket, worker_id, name, x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Put a vector of integers on the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_put_ivector
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_put_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
|
||||
|
||||
File: :file:`put_get.irp.f`
|
||||
|
||||
Put a vector of integers on the qp_run scheduler
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. c:function:: zmq_set_running
|
||||
|
||||
.. code:: text
|
||||
|
||||
integer function zmq_set_running(zmq_to_qp_run_socket)
|
||||
|
||||
File: :file:`utils.irp.f`
|
||||
|
||||
Set the job to Running in QP-run
|
||||
|
||||
|
||||
|
@ -12,23 +12,9 @@ Index of Modules
|
||||
/modules/*
|
||||
|
||||
|
||||
Index of Providers
|
||||
------------------
|
||||
.. Auto-generated file
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:glob:
|
||||
|
||||
/providers/*
|
||||
.. include:: index_providers.rst
|
||||
|
||||
|
||||
Index of Subroutines/Functions
|
||||
------------------------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:glob:
|
||||
|
||||
/subroutines/*
|
||||
|
||||
|
||||
|
1307
docs/source/programmers_guide/index_providers.rst
Normal file
1307
docs/source/programmers_guide/index_providers.rst
Normal file
File diff suppressed because it is too large
Load Diff
1
include/.gitignore
vendored
1
include/.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
zmq.h
|
||||
zmq_utils.h
|
||||
f77_zmq_free.h
|
||||
|
@ -1,7 +1,7 @@
|
||||
BEGIN_PROVIDER [ integer, ao_prim_num_max ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! max number of primitives
|
||||
! Max number of primitives.
|
||||
END_DOC
|
||||
ao_prim_num_max = maxval(ao_prim_num)
|
||||
END_PROVIDER
|
||||
@ -10,7 +10,7 @@ END_PROVIDER
|
||||
&BEGIN_PROVIDER [ double precision, ao_coef_normalization_factor, (ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Coefficients including the AO normalization
|
||||
! Coefficients including the |AO| normalization
|
||||
END_DOC
|
||||
double precision :: norm,overlap_x,overlap_y,overlap_z,C_A(3), c
|
||||
integer :: l, powA(3), nz
|
||||
@ -46,7 +46,7 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ double precision, ao_coef_normalization_libint_factor, (ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Coefficients including the AO normalization
|
||||
! |AO| normalization for interfacing with libint
|
||||
END_DOC
|
||||
double precision :: norm,overlap_x,overlap_y,overlap_z,C_A(3), c
|
||||
integer :: l, powA(3), nz
|
||||
@ -80,7 +80,7 @@ END_PROVIDER
|
||||
&BEGIN_PROVIDER [ double precision, ao_expo_ordered, (ao_num,ao_prim_num_max) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Sorted primitives to accelerate 4 index MO transformation
|
||||
! Sorted primitives to accelerate 4 index |MO| transformation
|
||||
END_DOC
|
||||
|
||||
integer :: iorder(ao_prim_num_max)
|
||||
@ -105,7 +105,7 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ double precision, ao_coef_normalized_ordered_transp, (ao_prim_num_max,ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Transposed ao_coef_normalized_ordered
|
||||
! Transposed :c:var:`ao_coef_normalized_ordered`
|
||||
END_DOC
|
||||
integer :: i,j
|
||||
do j=1, ao_num
|
||||
@ -119,7 +119,7 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ double precision, ao_expo_ordered_transp, (ao_prim_num_max,ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Transposed ao_expo_ordered
|
||||
! Transposed :c:var:`ao_expo_ordered`
|
||||
END_DOC
|
||||
integer :: i,j
|
||||
do j=1, ao_num
|
||||
@ -135,7 +135,7 @@ END_PROVIDER
|
||||
&BEGIN_PROVIDER [ character*(128), ao_l_char, (ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! ao_l = l value of the AO: a+b+c in x^a y^b z^c
|
||||
! :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c`
|
||||
END_DOC
|
||||
integer :: i
|
||||
do i=1,ao_num
|
||||
@ -151,7 +151,7 @@ integer function ao_power_index(nx,ny,nz)
|
||||
BEGIN_DOC
|
||||
! Unique index given to a triplet of powers:
|
||||
!
|
||||
! 1/2 (l-n_x)*(l-n_x+1) + n_z + 1
|
||||
! :math:`\frac{1}{2} (l-n_x) (l-n_x+1) + n_z + 1`
|
||||
END_DOC
|
||||
integer :: l
|
||||
l = nx + ny + nz
|
||||
@ -161,7 +161,7 @@ end
|
||||
|
||||
BEGIN_PROVIDER [ character*(128), l_to_charater, (0:7)]
|
||||
BEGIN_DOC
|
||||
! character corresponding to the "L" value of an AO orbital
|
||||
! Character corresponding to the "l" value of an |AO|
|
||||
END_DOC
|
||||
implicit none
|
||||
l_to_charater(0)='S'
|
||||
@ -178,10 +178,10 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ integer, Nucl_N_Aos, (nucl_num)]
|
||||
&BEGIN_PROVIDER [ integer, N_AOs_max ]
|
||||
implicit none
|
||||
integer :: i
|
||||
BEGIN_DOC
|
||||
! Number of AOs per atom
|
||||
! Number of |AOs| per atom
|
||||
END_DOC
|
||||
integer :: i
|
||||
Nucl_N_Aos = 0
|
||||
do i = 1, ao_num
|
||||
Nucl_N_Aos(ao_nucl(i)) +=1
|
||||
@ -192,7 +192,7 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ integer, Nucl_Aos, (nucl_num,N_AOs_max)]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! List of AOs attached on each atom
|
||||
! List of |AOs| centered on each atom
|
||||
END_DOC
|
||||
integer :: i
|
||||
integer, allocatable :: nucl_tmp(:)
|
||||
@ -212,9 +212,9 @@ END_PROVIDER
|
||||
implicit none
|
||||
integer :: i,j,k
|
||||
BEGIN_DOC
|
||||
! Index of the shell type Aos and of the corresponding Aos
|
||||
! 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
|
||||
! Index of the shell type |AOs| and of the corresponding |AOs|
|
||||
! By convention, for p,d,f and g |AOs|, we take the index
|
||||
! of the |AO| with the the corresponding power in the x axis
|
||||
END_DOC
|
||||
do i = 1, nucl_num
|
||||
Nucl_num_shell_Aos(i) = 0
|
||||
@ -258,6 +258,9 @@ END_PROVIDER
|
||||
|
||||
BEGIN_PROVIDER [ character*(4), ao_l_char_space, (ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Converts an l value to a string
|
||||
END_DOC
|
||||
integer :: i
|
||||
character*(4) :: give_ao_character_space
|
||||
do i=1,ao_num
|
||||
|
@ -1,7 +1,7 @@
|
||||
double precision function ao_value(i,r)
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! return the value of the ith ao at point r
|
||||
! Returns the value of the i-th |AO| at point r
|
||||
END_DOC
|
||||
double precision, intent(in) :: r(3)
|
||||
integer, intent(in) :: i
|
||||
@ -34,7 +34,7 @@ end
|
||||
subroutine give_all_aos_at_r(r,aos_array)
|
||||
implicit none
|
||||
BEGIN_dOC
|
||||
! gives the values of aos at a given point r
|
||||
! Gives the values of |AOs| at a given point r
|
||||
END_DOC
|
||||
double precision, intent(in) :: r(3)
|
||||
double precision, intent(out) :: aos_array(ao_num)
|
||||
@ -44,5 +44,4 @@ subroutine give_all_aos_at_r(r,aos_array)
|
||||
aos_array(i) = ao_value(i,r)
|
||||
enddo
|
||||
|
||||
|
||||
end
|
||||
|
@ -1,6 +1,9 @@
|
||||
BEGIN_PROVIDER [ integer, n_pt_max_integrals ]
|
||||
&BEGIN_PROVIDER [ integer, n_pt_max_i_x]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Number of points used in the numerical integrations.
|
||||
END_DOC
|
||||
integer :: n_pt_sup
|
||||
integer :: prim_power_l_max
|
||||
include 'Utils/constants.include.F'
|
||||
|
@ -1 +1,2 @@
|
||||
AO_Basis Pseudo
|
||||
AO_Basis
|
||||
Pseudo
|
||||
|
@ -3,8 +3,7 @@
|
||||
implicit none
|
||||
integer :: i,j,n,l
|
||||
BEGIN_DOC
|
||||
! array of the mono electronic hamiltonian on the AOs basis
|
||||
! : sum of the kinetic and nuclear electronic potential
|
||||
! Array of the one-electron Hamiltonian on the |AO| basis.
|
||||
END_DOC
|
||||
do j = 1, ao_num
|
||||
do i = 1, ao_num
|
||||
|
@ -2,7 +2,8 @@
|
||||
&BEGIN_PROVIDER [ integer, ao_cart_to_sphe_num ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! ao_cart_to_sphe coefficients of the current basis set
|
||||
! Coefficients to go from cartesian to spherical coordinates in the current
|
||||
! basis set
|
||||
END_DOC
|
||||
integer :: i
|
||||
integer, external :: ao_power_index
|
||||
@ -49,7 +50,7 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ double precision, ao_cart_to_sphe_overlap, (ao_cart_to_sphe_num,ao_cart_to_sphe_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! AO overlap matrix in the spherical basis set
|
||||
! |AO| overlap matrix in the spherical basis set
|
||||
END_DOC
|
||||
double precision, allocatable :: S(:,:)
|
||||
allocate (S(ao_cart_to_sphe_num,ao_num))
|
||||
@ -71,7 +72,7 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ double precision, ao_cart_to_sphe_inv, (ao_cart_to_sphe_num,ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! AO_cart_to_sphe_coef^(-1)
|
||||
! Inverse of :c:var:`ao_cart_to_sphe_coef`
|
||||
END_DOC
|
||||
|
||||
call get_pseudo_inverse(ao_cart_to_sphe_coef,size(ao_cart_to_sphe_coef,1),&
|
||||
|
@ -5,7 +5,8 @@
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Overlap between atomic basis functions:
|
||||
! :math:`\int \chi_i(r) \chi_j(r) dr)`
|
||||
!
|
||||
! :math:`\int \chi_i(r) \chi_j(r) dr`
|
||||
END_DOC
|
||||
integer :: i,j,n,l
|
||||
double precision :: f
|
||||
@ -73,8 +74,9 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ double precision, ao_overlap_abs,(ao_num,ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Overlap between absolute value of atomic basis functions:
|
||||
! :math:`\int |\chi_i(r)| |\chi_j(r)| dr)`
|
||||
! Overlap between absolute values of atomic basis functions:
|
||||
!
|
||||
! :math:`\int |\chi_i(r)| |\chi_j(r)| dr`
|
||||
END_DOC
|
||||
integer :: i,j,n,l
|
||||
double precision :: f
|
||||
@ -127,7 +129,7 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ double precision, S_inv,(ao_num,ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! S^-1
|
||||
! Inverse of the overlap matrix
|
||||
END_DOC
|
||||
call get_pseudo_inverse(ao_overlap,size(ao_overlap,1),ao_num,ao_num,S_inv,size(S_inv,1))
|
||||
END_PROVIDER
|
||||
@ -135,7 +137,7 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ double precision, S_half_inv, (AO_num,AO_num) ]
|
||||
|
||||
BEGIN_DOC
|
||||
! Matrix X = S^{-1/2} obtained by SVD
|
||||
! :math:`X = S^{-1/2}` obtained by SVD
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
@ -194,7 +196,7 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [ double precision, S_half, (ao_num,ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! S^{1/2}
|
||||
! :math:`S^{1/2}`
|
||||
END_DOC
|
||||
|
||||
integer :: i,j,k
|
||||
|
@ -2,6 +2,13 @@
|
||||
&BEGIN_PROVIDER [ double precision, ao_deriv2_y,(ao_num,ao_num) ]
|
||||
&BEGIN_PROVIDER [ double precision, ao_deriv2_z,(ao_num,ao_num) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Second derivative matrix elements in the |AO| basis.
|
||||
!
|
||||
! :math:`{\tt ao_deriv2_x} =
|
||||
! \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle`
|
||||
!
|
||||
END_DOC
|
||||
integer :: i,j,n,l
|
||||
double precision :: f
|
||||
integer :: dim1
|
||||
@ -12,12 +19,6 @@
|
||||
integer :: power_A(3), power_B(3)
|
||||
double precision :: d_a_2,d_2
|
||||
dim1=100
|
||||
BEGIN_DOC
|
||||
! second derivatives matrix elements in the ao basis
|
||||
! .. math::
|
||||
!
|
||||
! {\tt ao_deriv2_x} = \langle \chi_i(x,y,z) \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle
|
||||
END_DOC
|
||||
|
||||
! -- Dummy call to provide everything
|
||||
A_center(:) = 0.d0
|
||||
@ -61,9 +62,6 @@
|
||||
beta = ao_expo_ordered_transp(l,i)
|
||||
call overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,power_B,overlap_x0,overlap_y0,overlap_z0,overlap,dim1)
|
||||
c = ao_coef_normalized_ordered_transp(n,j) * ao_coef_normalized_ordered_transp(l,i)
|
||||
! if (abs(c) < 1.d-8) then
|
||||
! cycle
|
||||
! endif
|
||||
|
||||
power_A(1) = power_A(1)-2
|
||||
if (power_A(1)>-1) then
|
||||
@ -122,8 +120,9 @@ END_PROVIDER
|
||||
BEGIN_PROVIDER [double precision, ao_kinetic_integral, (ao_num,ao_num)]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! array of the priminitve basis kinetic integrals
|
||||
! \langle \chi_i |\hat{T}| \chi_j \rangle
|
||||
! Kinetic energy integrals in the |AO| basis.
|
||||
!
|
||||
! :math:`\langle \chi_i |\hat{T}| \chi_j \rangle`
|
||||
END_DOC
|
||||
integer :: i,j,k,l
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num,ao_num)]
|
||||
BEGIN_DOC
|
||||
! interaction nuclear electron
|
||||
! Nucleus-electron interaction, in the |AO| basis set.
|
||||
!
|
||||
! :math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle`
|
||||
END_DOC
|
||||
implicit none
|
||||
double precision :: alpha, beta, gama, delta
|
||||
@ -59,11 +61,13 @@ BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num,ao_num)]
|
||||
|
||||
C_center(1:3) = nucl_coord(k,1:3)
|
||||
|
||||
c = c - Z*NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in)
|
||||
c = c - Z * NAI_pol_mult(A_center,B_center, &
|
||||
power_A,power_B,alpha,beta,C_center,n_pt_in)
|
||||
|
||||
enddo
|
||||
ao_nucl_elec_integral(i,j) = ao_nucl_elec_integral(i,j) +&
|
||||
ao_coef_normalized_ordered_transp(l,j)*ao_coef_normalized_ordered_transp(m,i)*c
|
||||
ao_nucl_elec_integral(i,j) = ao_nucl_elec_integral(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
@ -77,13 +81,13 @@ BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num,ao_num)]
|
||||
print *, 'AO N-e integrals written to disk'
|
||||
endif
|
||||
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral_per_atom, (ao_num,ao_num,nucl_num)]
|
||||
BEGIN_DOC
|
||||
! ao_nucl_elec_integral_per_atom(i,j,k) = -<AO(i)|1/|r-Rk|AO(j)>
|
||||
! where Rk is the geometry of the kth atom
|
||||
! Nucleus-electron interaction in the |AO| basis set, per atom A.
|
||||
!
|
||||
! :math:`\langle \chi_i | -\frac{1}{|r-R_A|} | \chi_j \rangle`
|
||||
END_DOC
|
||||
implicit none
|
||||
double precision :: alpha, beta, gama, delta
|
||||
@ -130,8 +134,10 @@ END_PROVIDER
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
do m=1,ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
c = c + NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in) &
|
||||
* ao_coef_normalized_ordered_transp(l,j)*ao_coef_normalized_ordered_transp(m,i)
|
||||
c = c + NAI_pol_mult(A_center,B_center,power_A,power_B, &
|
||||
alpha,beta,C_center,n_pt_in) &
|
||||
* ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i)
|
||||
enddo
|
||||
enddo
|
||||
ao_nucl_elec_integral_per_atom(i,j,k) = -c
|
||||
@ -146,8 +152,11 @@ END_PROVIDER
|
||||
|
||||
|
||||
double precision function NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in)
|
||||
! function that calculate the folowing integral :
|
||||
! int{dr} of (x-A_x)^ax (x-B_X)^bx exp(-alpha (x-A_x)^2 - beta (x-B_x)^2 ) 1/(r-R_c)
|
||||
BEGIN_DOC
|
||||
! Computes the electron-nucleus attraction with two primitves.
|
||||
!
|
||||
! :math:`\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle`
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: n_pt_in
|
||||
@ -169,11 +178,11 @@ include 'Utils/constants.include.F'
|
||||
(A_center(3)/=C_center(3))) then
|
||||
continue
|
||||
else
|
||||
NAI_pol_mult = V_e_n(power_A(1),power_A(2),power_A(3),power_B(1),power_B(2),power_B(3),alpha,beta)
|
||||
NAI_pol_mult = V_e_n(power_A(1),power_A(2),power_A(3), &
|
||||
power_B(1),power_B(2),power_B(3),alpha,beta)
|
||||
return
|
||||
endif
|
||||
p = alpha + beta
|
||||
! print*, "a"
|
||||
p_inv = 1.d0/p
|
||||
rho = alpha * beta * p_inv
|
||||
dist = 0.d0
|
||||
@ -226,10 +235,12 @@ end
|
||||
|
||||
|
||||
subroutine give_polynom_mult_center_mono_elec(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out)
|
||||
!!!! 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)
|
||||
!!!! it is for the nuclear electron atraction
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Returns the explicit polynomial in terms of the "t" variable of the following
|
||||
!
|
||||
! :math:`I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q)`
|
||||
END_DOC
|
||||
integer, intent(in) :: n_pt_in
|
||||
integer,intent(out) :: n_pt_out
|
||||
double precision, intent(in) :: A_center(3), B_center(3),C_center(3)
|
||||
@ -242,9 +253,9 @@ double precision :: d2(0:n_pt_in)
|
||||
double precision :: d3(0:n_pt_in)
|
||||
double precision :: accu, pq_inv, p10_1, p10_2, p01_1, p01_2
|
||||
double precision :: p,P_center(3),rho,p_inv,p_inv_2
|
||||
!print*,'n_pt_in = ',n_pt_in
|
||||
|
||||
accu = 0.d0
|
||||
!COMPTEUR irp_rdtsc1 = irp_rdtsc()
|
||||
|
||||
ASSERT (n_pt_in > 1)
|
||||
p = alpha+beta
|
||||
p_inv = 1.d0/p
|
||||
@ -252,21 +263,20 @@ double precision :: p,P_center(3),rho,p_inv,p_inv_2
|
||||
do i =1, 3
|
||||
P_center(i) = (alpha * A_center(i) + beta * B_center(i)) * p_inv
|
||||
enddo
|
||||
! print*,'passed the P_center'
|
||||
|
||||
double precision :: R1x(0:2), B01(0:2), R1xp(0:2),R2x(0:2)
|
||||
R1x(0) = (P_center(1) - A_center(1))
|
||||
R1x(1) = 0.d0
|
||||
R1x(2) = -(P_center(1) - C_center(1))
|
||||
! R1x = (P_x - A_x) - (P_x - C_x) t^2
|
||||
|
||||
R1xp(0) = (P_center(1) - B_center(1))
|
||||
R1xp(1) = 0.d0
|
||||
R1xp(2) =-(P_center(1) - C_center(1))
|
||||
!R1xp = (P_x - B_x) - (P_x - C_x) t^2
|
||||
|
||||
R2x(0) = p_inv_2
|
||||
R2x(1) = 0.d0
|
||||
R2x(2) = -p_inv_2
|
||||
!R2x = 0.5 / p - 0.5/p t^2
|
||||
|
||||
do i = 0,n_pt_in
|
||||
d(i) = 0.d0
|
||||
enddo
|
||||
@ -286,7 +296,7 @@ double precision :: p,P_center(3),rho,p_inv,p_inv_2
|
||||
a_x = power_A(1)
|
||||
b_x = power_B(1)
|
||||
call I_x1_pol_mult_mono_elec(a_x,b_x,R1x,R1xp,R2x,d1,n_pt1,n_pt_in)
|
||||
! print*,'passed the first I_x1'
|
||||
|
||||
if(n_pt1<0)then
|
||||
n_pt_out = -1
|
||||
do i = 0,n_pt_in
|
||||
@ -298,15 +308,15 @@ double precision :: p,P_center(3),rho,p_inv,p_inv_2
|
||||
R1x(0) = (P_center(2) - A_center(2))
|
||||
R1x(1) = 0.d0
|
||||
R1x(2) = -(P_center(2) - C_center(2))
|
||||
! R1x = (P_x - A_x) - (P_x - C_x) t^2
|
||||
|
||||
R1xp(0) = (P_center(2) - B_center(2))
|
||||
R1xp(1) = 0.d0
|
||||
R1xp(2) =-(P_center(2) - C_center(2))
|
||||
!R1xp = (P_x - B_x) - (P_x - C_x) t^2
|
||||
|
||||
a_y = power_A(2)
|
||||
b_y = power_B(2)
|
||||
call I_x1_pol_mult_mono_elec(a_y,b_y,R1x,R1xp,R2x,d2,n_pt2,n_pt_in)
|
||||
! print*,'passed the second I_x1'
|
||||
|
||||
if(n_pt2<0)then
|
||||
n_pt_out = -1
|
||||
do i = 0,n_pt_in
|
||||
@ -319,18 +329,16 @@ double precision :: p,P_center(3),rho,p_inv,p_inv_2
|
||||
R1x(0) = (P_center(3) - A_center(3))
|
||||
R1x(1) = 0.d0
|
||||
R1x(2) = -(P_center(3) - C_center(3))
|
||||
! R1x = (P_x - A_x) - (P_x - C_x) t^2
|
||||
|
||||
R1xp(0) = (P_center(3) - B_center(3))
|
||||
R1xp(1) = 0.d0
|
||||
R1xp(2) =-(P_center(3) - C_center(3))
|
||||
!R2x = 0.5 / p - 0.5/p t^2
|
||||
|
||||
a_z = power_A(3)
|
||||
b_z = power_B(3)
|
||||
|
||||
! print*,'a_z = ',a_z
|
||||
! print*,'b_z = ',b_z
|
||||
call I_x1_pol_mult_mono_elec(a_z,b_z,R1x,R1xp,R2x,d3,n_pt3,n_pt_in)
|
||||
! print*,'passed the third I_x1'
|
||||
|
||||
if(n_pt3<0)then
|
||||
n_pt_out = -1
|
||||
do i = 0,n_pt_in
|
||||
@ -354,8 +362,10 @@ end
|
||||
|
||||
|
||||
recursive subroutine I_x1_pol_mult_mono_elec(a,c,R1x,R1xp,R2x,d,nd,n_pt_in)
|
||||
!!!! recursive function involved in the electron nucleus potential
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Recursive routine involved in the electron-nucleus potential
|
||||
END_DOC
|
||||
integer , intent(in) :: n_pt_in
|
||||
double precision,intent(inout) :: d(0:n_pt_in)
|
||||
integer,intent(inout) :: nd
|
||||
@ -379,7 +389,6 @@ recursive subroutine I_x1_pol_mult_mono_elec(a,c,R1x,R1xp,R2x,d,nd,n_pt_in)
|
||||
return
|
||||
else if ((a==0).and.(c.ne.0)) then
|
||||
call I_x2_pol_mult_mono_elec(c,R1x,R1xp,R2x,d,nd,n_pt_in)
|
||||
! print*,'nd 0,c',nd
|
||||
else if (a==1) then
|
||||
nx = nd
|
||||
do ix=0,n_pt_in
|
||||
@ -401,19 +410,16 @@ recursive subroutine I_x1_pol_mult_mono_elec(a,c,R1x,R1xp,R2x,d,nd,n_pt_in)
|
||||
enddo
|
||||
nx = 0
|
||||
call I_x1_pol_mult_mono_elec(a-2,c,R1x,R1xp,R2x,X,nx,n_pt_in)
|
||||
! print*,'nx a-2,c= ',nx
|
||||
do ix=0,nx
|
||||
X(ix) *= dble(a-1)
|
||||
enddo
|
||||
call multiply_poly(X,nx,R2x,2,d,nd)
|
||||
! print*,'nd out = ',nd
|
||||
|
||||
nx = nd
|
||||
do ix=0,n_pt_in
|
||||
X(ix) = 0.d0
|
||||
enddo
|
||||
call I_x1_pol_mult_mono_elec(a-1,c-1,R1x,R1xp,R2x,X,nx,n_pt_in)
|
||||
! print*,'nx a-1,c-1 = ',nx
|
||||
do ix=0,nx
|
||||
X(ix) *= dble(c)
|
||||
enddo
|
||||
@ -426,6 +432,9 @@ end
|
||||
|
||||
recursive subroutine I_x2_pol_mult_mono_elec(c,R1x,R1xp,R2x,d,nd,dim)
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Recursive routine involved in the electron-nucleus potential
|
||||
END_DOC
|
||||
integer , intent(in) :: dim
|
||||
include 'Utils/constants.include.F'
|
||||
double precision :: d(0:max_dim)
|
||||
@ -433,13 +442,10 @@ recursive subroutine I_x2_pol_mult_mono_elec(c,R1x,R1xp,R2x,d,nd,dim)
|
||||
integer, intent(in) :: c
|
||||
double precision, intent(in) :: R1x(0:2),R1xp(0:2),R2x(0:2)
|
||||
integer :: i
|
||||
!print*,'X2,c = ',c
|
||||
!print*,'nd_in = ',nd
|
||||
|
||||
if(c==0) then
|
||||
nd = 0
|
||||
d(0) = 1.d0
|
||||
! print*,'nd IX2 = ',nd
|
||||
return
|
||||
elseif ((nd<0).or.(c<0))then
|
||||
nd = -1
|
||||
@ -454,22 +460,16 @@ recursive subroutine I_x2_pol_mult_mono_elec(c,R1x,R1xp,R2x,d,nd,dim)
|
||||
enddo
|
||||
nx = 0
|
||||
call I_x1_pol_mult_mono_elec(0,c-2,R1x,R1xp,R2x,X,nx,dim)
|
||||
! print*,'nx 0,c-2 = ',nx
|
||||
do ix=0,nx
|
||||
X(ix) *= dble(c-1)
|
||||
enddo
|
||||
call multiply_poly(X,nx,R2x,2,d,nd)
|
||||
! print*,'nd = ',nd
|
||||
ny = 0
|
||||
do ix=0,dim
|
||||
Y(ix) = 0.d0
|
||||
enddo
|
||||
|
||||
call I_x1_pol_mult_mono_elec(0,c-1,R1x,R1xp,R2x,Y,ny,dim)
|
||||
! print*,'ny = ',ny
|
||||
! do ix=0,ny
|
||||
! print*,'Y(ix) = ',Y(ix)
|
||||
! enddo
|
||||
if(ny.ge.0)then
|
||||
call multiply_poly(Y,ny,R1xp,2,d,nd)
|
||||
endif
|
||||
@ -478,9 +478,13 @@ end
|
||||
|
||||
double precision function V_e_n(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta)
|
||||
implicit none
|
||||
!!! primitve nuclear attraction between the two primitves centered on the same atom ::
|
||||
!!!! primitive_1 = x**(a_x) y**(a_y) z**(a_z) exp(-alpha * r**2)
|
||||
!!!! primitive_2 = x**(b_x) y**(b_y) z**(b_z) exp(- beta * r**2)
|
||||
BEGIN_DOC
|
||||
! Primitve nuclear attraction between the two primitves centered on the same atom.
|
||||
!
|
||||
! primitive_1 = x**(a_x) y**(a_y) z**(a_z) exp(-alpha * r**2)
|
||||
!
|
||||
! primitive_2 = x**(b_x) y**(b_y) z**(b_z) exp(- beta * r**2)
|
||||
END_DOC
|
||||
integer :: a_x,a_y,a_z,b_x,b_y,b_z
|
||||
double precision :: alpha,beta
|
||||
double precision :: V_r, V_phi, V_theta
|
||||
@ -488,28 +492,25 @@ if(iand((a_x+b_x),1)==1.or.iand(a_y+b_y,1)==1.or.iand((a_z+b_z),1)==1)then
|
||||
V_e_n = 0.d0
|
||||
else
|
||||
V_e_n = V_r(a_x+b_x+a_y+b_y+a_z+b_z+1,alpha+beta) &
|
||||
& * V_phi(a_x+b_x,a_y+b_y) &
|
||||
& * V_theta(a_z+b_z,a_x+b_x+a_y+b_y+1)
|
||||
* V_phi(a_x+b_x,a_y+b_y) &
|
||||
* V_theta(a_z+b_z,a_x+b_x+a_y+b_y+1)
|
||||
endif
|
||||
|
||||
end
|
||||
|
||||
|
||||
double precision function int_gaus_pol(alpha,n)
|
||||
!!!! calculate the integral of
|
||||
!! integral on "x" with boundaries (- infinity; + infinity) of [ x**n exp(-alpha * x**2) ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Computes the integral:
|
||||
!
|
||||
! :math:`\int_{-\infty}^{\infty} x^n \exp(-\alpha x^2) dx`
|
||||
END_DOC
|
||||
double precision :: alpha
|
||||
integer :: n
|
||||
double precision :: dble_fact
|
||||
include 'Utils/constants.include.F'
|
||||
|
||||
!if(iand(n,1).eq.1)then
|
||||
! int_gaus_pol= 0.d0
|
||||
!else
|
||||
! int_gaus_pol = dsqrt(pi/alpha) * dble_fact(n -1)/(alpha+alpha)**(n/2)
|
||||
!endif
|
||||
|
||||
int_gaus_pol = 0.d0
|
||||
if(iand(n,1).eq.0)then
|
||||
int_gaus_pol = dsqrt(alpha/pi)
|
||||
@ -525,10 +526,13 @@ include 'Utils/constants.include.F'
|
||||
end
|
||||
|
||||
double precision function V_r(n,alpha)
|
||||
!!!! calculate the radial part of the nuclear attraction integral which is the following integral :
|
||||
!! integral on "r" with boundaries ( 0 ; + infinity) of [ r**n exp(-alpha * r**2) ]
|
||||
!!! CAUTION :: this function requires the constant sqpi = dsqrt(pi)
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Computes the radial part of the nuclear attraction integral:
|
||||
!
|
||||
! :math:`\int_{0}^{\infty} r^n \exp(-\alpha r^2) dr`
|
||||
!
|
||||
END_DOC
|
||||
double precision :: alpha, fact
|
||||
integer :: n
|
||||
include 'Utils/constants.include.F'
|
||||
@ -542,8 +546,11 @@ end
|
||||
|
||||
double precision function V_phi(n,m)
|
||||
implicit none
|
||||
!!!! calculate the angular "phi" part of the nuclear attraction integral wich is the following integral :
|
||||
!! integral on "phi" with boundaries ( 0 ; 2 pi) of [ cos(phi) **n sin(phi) **m ]
|
||||
BEGIN_DOC
|
||||
! Computes the angular "phi" part of the nuclear attraction integral:
|
||||
!
|
||||
! :math:`\int_{0}^{2 \pi} \cos(\phi)^n \sin(\phi)^m d\phi`
|
||||
END_DOC
|
||||
integer :: n,m, i
|
||||
double precision :: prod, Wallis
|
||||
prod = 1.d0
|
||||
@ -553,10 +560,14 @@ double precision :: prod, Wallis
|
||||
V_phi = 4.d0 * prod * Wallis(m)
|
||||
end
|
||||
|
||||
|
||||
double precision function V_theta(n,m)
|
||||
implicit none
|
||||
!!!! calculate the angular "theta" part of the nuclear attraction integral wich is the following integral :
|
||||
!! integral on "theta" with boundaries ( 0 ; pi) of [ cos(theta) **n sin(theta) **m ]
|
||||
BEGIN_DOC
|
||||
! Computes the angular "theta" part of the nuclear attraction integral:
|
||||
!
|
||||
! :math:`\int_{0}^{\pi} \cos(\theta)^n \sin(\theta)^m d\theta`
|
||||
END_DOC
|
||||
integer :: n,m,i
|
||||
double precision :: Wallis, prod
|
||||
include 'Utils/constants.include.F'
|
||||
@ -570,9 +581,12 @@ end
|
||||
|
||||
|
||||
double precision function Wallis(n)
|
||||
!!!! calculate the Wallis integral :
|
||||
!! integral on "theta" with boundaries ( 0 ; pi/2) of [ cos(theta) **n ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Wallis integral:
|
||||
!
|
||||
! :math:`\int_{0}^{\pi} \cos(\theta)^n d\theta`
|
||||
END_DOC
|
||||
double precision :: fact
|
||||
integer :: n,p
|
||||
include 'Utils/constants.include.F'
|
||||
|
@ -1,7 +1,7 @@
|
||||
BEGIN_PROVIDER [ double precision, ao_pseudo_integral, (ao_num,ao_num)]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Pseudo-potential integrals
|
||||
! Pseudo-potential integrals in the |AO| basis set.
|
||||
END_DOC
|
||||
|
||||
if (read_ao_one_integrals) then
|
||||
@ -137,7 +137,7 @@ BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num,ao_num)]
|
||||
BEGIN_PROVIDER [ double precision, ao_pseudo_integral_non_local, (ao_num,ao_num)]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
! Local pseudo-potential
|
||||
! Non-local pseudo-potential
|
||||
END_DOC
|
||||
include 'Utils/constants.include.F'
|
||||
double precision :: alpha, beta, gama, delta
|
||||
|
@ -2,7 +2,7 @@
|
||||
&BEGIN_PROVIDER [ logical, write_ao_one_integrals ]
|
||||
|
||||
BEGIN_DOC
|
||||
! One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals
|
||||
! If |true|, read/write one-electrons from/to disk.
|
||||
END_DOC
|
||||
implicit none
|
||||
|
||||
|
@ -2,9 +2,11 @@
|
||||
&BEGIN_PROVIDER [ double precision, ao_spread_y, (ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [ double precision, ao_spread_z, (ao_num,ao_num)]
|
||||
BEGIN_DOC
|
||||
! array of the integrals of AO_i * x^2 AO_j
|
||||
! array of the integrals of AO_i * y^2 AO_j
|
||||
! array of the integrals of AO_i * z^2 AO_j
|
||||
! * array of the integrals of AO_i * x^2 AO_j
|
||||
!
|
||||
! * array of the integrals of AO_i * y^2 AO_j
|
||||
!
|
||||
! * array of the integrals of AO_i * z^2 AO_j
|
||||
END_DOC
|
||||
implicit none
|
||||
integer :: i,j,n,l
|
||||
@ -73,9 +75,11 @@
|
||||
&BEGIN_PROVIDER [ double precision, ao_dipole_y, (ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [ double precision, ao_dipole_z, (ao_num,ao_num)]
|
||||
BEGIN_DOC
|
||||
! array of the integrals of AO_i * x AO_j
|
||||
! array of the integrals of AO_i * y AO_j
|
||||
! array of the integrals of AO_i * z AO_j
|
||||
! * array of the integrals of AO_i * x AO_j
|
||||
!
|
||||
! * array of the integrals of AO_i * y AO_j
|
||||
!
|
||||
! * array of the integrals of AO_i * z AO_j
|
||||
END_DOC
|
||||
implicit none
|
||||
integer :: i,j,n,l
|
||||
@ -143,9 +147,11 @@
|
||||
&BEGIN_PROVIDER [ double precision, ao_deriv_1_y, (ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [ double precision, ao_deriv_1_z, (ao_num,ao_num)]
|
||||
BEGIN_DOC
|
||||
! array of the integrals of AO_i * d/dx AO_j
|
||||
! array of the integrals of AO_i * d/dy AO_j
|
||||
! array of the integrals of AO_i * d/dz AO_j
|
||||
! * array of the integrals of AO_i * d/dx AO_j
|
||||
!
|
||||
! * array of the integrals of AO_i * d/dy AO_j
|
||||
!
|
||||
! * array of the integrals of AO_i * d/dz AO_j
|
||||
END_DOC
|
||||
implicit none
|
||||
integer :: i,j,n,l
|
||||
@ -214,47 +220,9 @@
|
||||
|
||||
|
||||
|
||||
subroutine overlap_bourrin_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
|
||||
implicit none
|
||||
! compute the following integral :
|
||||
! int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) ]
|
||||
integer :: i,j,k,l
|
||||
integer,intent(in) :: power_A,power_B
|
||||
double precision, intent(in) :: lower_exp_val
|
||||
double precision,intent(in) :: A_center, B_center,alpha,beta
|
||||
double precision, intent(out) :: overlap_x,dx
|
||||
integer, intent(in) :: nx
|
||||
double precision :: x_min,x_max,domain,x,power,factor,dist,p,p_inv,rho
|
||||
double precision :: P_center,pouet_timy
|
||||
if(power_A.lt.0.or.power_B.lt.0)then
|
||||
overlap_x = 0.d0
|
||||
dx = 0.d0
|
||||
return
|
||||
endif
|
||||
p = alpha + beta
|
||||
p_inv= 1.d0/p
|
||||
rho = alpha * beta * p_inv
|
||||
dist = (A_center - B_center)*(A_center - B_center)
|
||||
P_center = (alpha * A_center + beta * B_center) * p_inv
|
||||
factor = dexp(-rho * dist)
|
||||
pouet_timy = dsqrt(lower_exp_val/p)
|
||||
x_min = P_center - pouet_timy
|
||||
x_max = P_center + pouet_timy
|
||||
!print*,'xmin = ',x_min
|
||||
!print*,'xmax = ',x_max
|
||||
domain = x_max-x_min
|
||||
dx = domain/dble(nx)
|
||||
overlap_x = 0.d0
|
||||
x = x_min
|
||||
do i = 1, nx
|
||||
x += dx
|
||||
overlap_x += (power(power_A,x-A_center) * power(power_B,x-B_center)) * dexp(-p * (x-P_center)*(x-P_center))
|
||||
enddo
|
||||
overlap_x *= factor * dx
|
||||
end
|
||||
|
||||
subroutine overlap_bourrin_spread(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
|
||||
! compute the following integral :
|
||||
! Computes the following integral :
|
||||
! int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) * x ]
|
||||
! needed for the dipole and those things
|
||||
implicit none
|
||||
@ -264,7 +232,7 @@ end
|
||||
double precision,intent(in) :: A_center, B_center,alpha,beta
|
||||
double precision, intent(out) :: overlap_x,dx
|
||||
integer, intent(in) :: nx
|
||||
double precision :: x_min,x_max,domain,x,power,factor,dist,p,p_inv,rho
|
||||
double precision :: x_min,x_max,domain,x,factor,dist,p,p_inv,rho
|
||||
double precision :: P_center,pouet_timy
|
||||
if(power_A.lt.0.or.power_B.lt.0)then
|
||||
overlap_x = 0.d0
|
||||
@ -292,19 +260,12 @@ end
|
||||
x = x_min
|
||||
do i = 1, nx
|
||||
x += dx
|
||||
overlap_x += power(power_A,x-A_center) * power(power_B,x-B_center) * dexp(-p * (x-P_center)*(x-P_center)) * x * x
|
||||
overlap_x += (x-A_center)**(power_A) * (x-B_center)**(power_B) * dexp(-p * (x-P_center)*(x-P_center)) * x * x
|
||||
enddo
|
||||
overlap_x *= factor * dx
|
||||
|
||||
end
|
||||
|
||||
double precision function power(n,x)
|
||||
implicit none
|
||||
integer :: i,n
|
||||
double precision :: x,accu
|
||||
power = x**n
|
||||
return
|
||||
end
|
||||
|
||||
subroutine overlap_bourrin_dipole(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
|
||||
! compute the following integral :
|
||||
@ -317,7 +278,7 @@ end
|
||||
double precision,intent(in) :: A_center, B_center,alpha,beta
|
||||
double precision, intent(out) :: overlap_x,dx
|
||||
integer, intent(in) :: nx
|
||||
double precision :: x_min,x_max,domain,x,power,factor,dist,p,p_inv,rho
|
||||
double precision :: x_min,x_max,domain,x,factor,dist,p,p_inv,rho
|
||||
double precision :: P_center
|
||||
if(power_A.lt.0.or.power_B.lt.0)then
|
||||
overlap_x = 0.d0
|
||||
@ -347,7 +308,7 @@ end
|
||||
x = x_min
|
||||
do i = 1, nx
|
||||
x += dx
|
||||
overlap_x += power(power_A,x-A_center) * power(power_B,x-B_center) * dexp(-p * (x-P_center)*(x-P_center)) * x
|
||||
overlap_x += (x-A_center)**(power_A) * (x-B_center)**(power_B) * dexp(-p * (x-P_center)*(x-P_center)) * x
|
||||
enddo
|
||||
overlap_x *= factor * dx
|
||||
|
||||
@ -378,7 +339,7 @@ end
|
||||
double precision,intent(in) :: A_center, B_center,alpha,beta
|
||||
double precision, intent(out) :: overlap_x,dx
|
||||
integer, intent(in) :: nx
|
||||
double precision :: x_min,x_max,domain,x,power,factor,dist,p,p_inv,rho
|
||||
double precision :: x_min,x_max,domain,x,factor,dist,p,p_inv,rho
|
||||
double precision :: P_center,pouet_timy
|
||||
if(power_A.lt.0.or.power_B.lt.0)then
|
||||
overlap_x = 0.d0
|
||||
@ -406,7 +367,7 @@ end
|
||||
x = x_min
|
||||
do i = 1, nx
|
||||
x += dx
|
||||
overlap_x += power(power_A,x-A_center) * power(power_B,x-B_center) * dexp(-p * (x-P_center)*(x-P_center))
|
||||
overlap_x += (x-A_center)**(power_A) * (x-B_center)**(power_B) * dexp(-p * (x-P_center)*(x-P_center))
|
||||
enddo
|
||||
overlap_x *= factor * dx
|
||||
end
|
||||
|
@ -1 +1,3 @@
|
||||
Selectors_full SingleRefMethod DavidsonUndressed
|
||||
Selectors_full
|
||||
SingleRefMethod
|
||||
DavidsonUndressed
|
||||
|
@ -1 +1,3 @@
|
||||
Selectors_full SingleRefMethod DavidsonUndressed
|
||||
Selectors_full
|
||||
SingleRefMethod
|
||||
DavidsonUndressed
|
||||
|
@ -1 +1,3 @@
|
||||
MO_Basis MO_one_e_integrals Integrals_Bielec
|
||||
MO_Basis
|
||||
MO_one_e_integrals
|
||||
Integrals_Bielec
|
||||
|
@ -1 +1,7 @@
|
||||
Perturbation Selectors_full Generators_full ZMQ MPI DavidsonUndressed Iterations
|
||||
Perturbation
|
||||
Selectors_full
|
||||
Generators_full
|
||||
ZMQ
|
||||
MPI
|
||||
DavidsonUndressed
|
||||
Iterations
|
||||
|
@ -1 +1,2 @@
|
||||
Determinants Hartree_Fock
|
||||
Determinants
|
||||
Hartree_Fock
|
||||
|
@ -1 +1,4 @@
|
||||
Integrals_Bielec AO_one_e_integrals MOGuess Bitmask
|
||||
Integrals_Bielec
|
||||
AO_one_e_integrals
|
||||
MOGuess
|
||||
Bitmask
|
||||
|
@ -1 +1,7 @@
|
||||
AO_one_e_integrals MO_one_e_integrals Pseudo Bitmask ZMQ AO_Basis MO_Basis
|
||||
AO_one_e_integrals
|
||||
MO_one_e_integrals
|
||||
Pseudo
|
||||
Bitmask
|
||||
ZMQ
|
||||
AO_Basis
|
||||
MO_Basis
|
||||
|
@ -1 +1,2 @@
|
||||
MO_Basis MO_one_e_integrals
|
||||
MO_Basis
|
||||
MO_one_e_integrals
|
||||
|
@ -1 +1,3 @@
|
||||
AO_Basis AO_one_e_integrals Electrons
|
||||
AO_Basis
|
||||
AO_one_e_integrals
|
||||
Electrons
|
||||
|
@ -1 +1,3 @@
|
||||
AO_one_e_integrals MO_Basis Pseudo
|
||||
AO_one_e_integrals
|
||||
MO_Basis
|
||||
Pseudo
|
||||
|
@ -1 +1,3 @@
|
||||
Determinants Davidson Psiref_CAS
|
||||
Determinants
|
||||
Davidson
|
||||
Psiref_CAS
|
||||
|
@ -1 +1,2 @@
|
||||
Ezfio_files Utils
|
||||
Ezfio_files
|
||||
Utils
|
||||
|
@ -1 +1,4 @@
|
||||
Determinants Hartree_Fock Davidson MRPT_Utils
|
||||
Determinants
|
||||
Hartree_Fock
|
||||
Davidson
|
||||
MRPT_Utils
|
||||
|
@ -1 +1,2 @@
|
||||
Bitmask Determinants
|
||||
Bitmask
|
||||
Determinants
|
||||
|
@ -1 +1,3 @@
|
||||
Determinants Hartree_Fock Selectors_Utils
|
||||
Determinants
|
||||
Hartree_Fock
|
||||
Selectors_Utils
|
||||
|
@ -1 +1,2 @@
|
||||
FCI MPI
|
||||
FCI
|
||||
MPI
|
||||
|
@ -1 +1,34 @@
|
||||
AO_Basis AO_one_e_integrals Bitmask CIS CISD Davidson DavidsonDressed DavidsonUndressed Determinants Dressing Electrons Ezfio_files FCI FourIdx Generators_CAS Generators_full Hartree_Fock Integrals_Bielec MO_Basis MOGuess MO_one_e_integrals MPI Nuclei Perturbation Pseudo Psiref_CAS Psiref_Utils Selectors_CASSD Selectors_full Selectors_Utils SingleRefMethod Utils ZMQ MRPT_Utils
|
||||
AO_Basis
|
||||
AO_one_e_integrals
|
||||
Bitmask
|
||||
CIS
|
||||
CISD
|
||||
Davidson
|
||||
DavidsonDressed
|
||||
DavidsonUndressed
|
||||
Determinants
|
||||
Dressing
|
||||
Electrons
|
||||
Ezfio_files
|
||||
FCI
|
||||
FourIdx
|
||||
Generators_CAS
|
||||
Generators_full
|
||||
Hartree_Fock
|
||||
Integrals_Bielec
|
||||
MO_Basis
|
||||
MOGuess
|
||||
MO_one_e_integrals
|
||||
MPI
|
||||
Nuclei
|
||||
Perturbation
|
||||
Pseudo
|
||||
Psiref_CAS
|
||||
Psiref_Utils
|
||||
Selectors_CASSD
|
||||
Selectors_full
|
||||
Selectors_Utils
|
||||
SingleRefMethod
|
||||
Utils
|
||||
ZMQ
|
||||
MRPT_Utils
|
||||
|
Loading…
Reference in New Issue
Block a user