Documentation and reordering of AOs.

This commit is contained in:
Anthony Scemama 2019-01-18 01:15:15 +01:00
parent 67a51bfbf1
commit 5f0a6b4c27
115 changed files with 27609 additions and 6248 deletions

View File

@ -143,26 +143,11 @@ to Parameters (IRP) method.
* Extract the archive and go into the :file:`irpf90-*` directory to run
:command:`make`
* Create scripts to facilitate the access to :command:`irpf90` and
:command:`irpman` as follows
.. note::
.. code:: bash
The :envvar:`IRPF90_PATH` variable may need to be updated in the configuration
file :file:`${QP_ROOT}/etc/irpf90.rc`.
for i in irpf90 irpman irpf90_indent
do
cat << EOF > ${QP_ROOT}/bin/$i
#!/bin/sh
exec $PWD/bin/$i \$@
EOF
chmod +x ${QP_ROOT}/bin/$i
done
Otherwise, IRPF90 can be installed with PIP:
.. code:: bash
pip2 install --user irpf90
ZeroMQ and its Fortran binding

4
TODO
View File

@ -60,8 +60,8 @@ Parler dans le papier de rPT2
# Toto
qp_stop : pour forcer a terminer proprement le programme (kill clean)
Virer EMSL
Changer irpf90 pour qu'il produise des fichiers rst.
Re-design de qp command
S^2 en simple precision dans davidson

2
configure vendored
View File

@ -196,7 +196,7 @@ EOF
# When changing version of irpf90, don't forget to update etc/irpf90.rc
download \
"https://gitlab.com/scemama/irpf90/-/archive/v1.7.4/irpf90-v1.7.4.tar.gz" \
"https://gitlab.com/scemama/irpf90/-/archive/v1.7.5/irpf90-v1.7.5.tar.gz" \
"${QP_ROOT}"/external/irpf90.tar.gz
execute << EOF
cd "\${QP_ROOT}"/external

View File

@ -9,15 +9,16 @@ from module_handler import get_binaries
def generate_modules(abs_module, entities):
"""Generates the doc for modules"""
MODULE = os.path.split(abs_module)[-1]
module = MODULE.lower()
if module == "dummy":
return
with open( os.path.join(abs_module,'README.rst'), 'r' ) as f:
with open(os.path.join(abs_module, 'README.rst'), 'r') as f:
readme = f.read()
rst = [
".. _%s:"%(module), "",
".. _module_%s:"%(module), "",
".. program:: %s"%(module), "",
".. default-role:: option", "",
readme, "",
@ -25,19 +26,19 @@ def generate_modules(abs_module, entities):
EZFIO = os.path.join(abs_module,'EZFIO.cfg')
if os.path.exists(EZFIO):
rst += [ "", "EZFIO parameters", "----------------", "" ]
rst += ["", "EZFIO parameters", "----------------", ""]
config_file = ConfigParser.ConfigParser()
with open(EZFIO,'r') as f:
with open(EZFIO, 'r') as f:
config_file.readfp(f)
for section in config_file.sections():
doc = config_file.get(section,"doc")
doc = " " + doc.replace("\n","\n\n ")+"\n"
doc = config_file.get(section, "doc")
doc = " " + doc.replace("\n", "\n\n ")+"\n"
try:
default = config_file.get(section,"default")
default = config_file.get(section, "default")
default = " " + "Default: %s\n"%default
except:
default = ""
rst += [ ".. option:: %s\n"%(section), doc, default ]
rst += [".. option:: %s\n"%(section), doc, default]
providers = []
subroutines = {}
@ -50,7 +51,7 @@ def generate_modules(abs_module, entities):
elif e["type"] == 'p':
providers.append(e)
binaries = [ os.path.basename(f) for f in get_binaries(abs_module) ]
binaries = [os.path.basename(f) for f in get_binaries(abs_module)]
if binaries:
rst += ["", "Programs", "--------", ""]
@ -64,27 +65,9 @@ def generate_modules(abs_module, entities):
rst += [" * :ref:`%s`"%(b["name"])]
if providers:
rst += [ "", "Providers", "---------", "" ]
rst += ["", "Providers", "---------", ""]
for p in providers:
rst += [ """
.. c:var:: %s
.. code:: text
%s
File: :file:`%s`
%s
""" % ( p["name"],
"\n ".join(p["decl"]),
p["file"],
" ".join(p["doc"]).replace("\n ","\n "),
) ]
rst += [p["rst"]]
if subroutines:
rst += [ "", "Subroutines / functions", "-----------------------", "" ]
@ -92,46 +75,30 @@ def generate_modules(abs_module, entities):
p = subroutines[p]
if p["name"] in binaries:
continue
rst += [ """
rst += [p["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 "),
) ]
rst_file = os.path.join('modules',module+".rst")
rst_file = os.path.join('modules', module+".rst")
with open(rst_file,'w') as f:
f.write(" \n".join(rst))
f.write(" \n".join(rst))
for b in binaries:
rst = [
".. _.%s.:"%(b), "",
".. program:: %s"%(b), "",
"="*len(b), b, "="*len(b), "", "",
" ".join(subroutines[b]["doc"]), "",
"File: :file:`%s`"%(os.path.join(module, subroutines[b]["file"]))
]
rst_file = os.path.join('programs',b+".rst")
for b in subroutines:
if b not in binaries:
continue
p = subroutines[b]
rst = [".. _%s:"%(b), "",
".. program:: %s"%(b), "",
"="*len(b), b, "="*len(b), "", ""]
rst += [line[3:] for line in p["rst"].splitlines()[8:]]
rst_file = os.path.join('programs', b+".rst")
with open(rst_file,'w') as f:
f.write(" \n".join(rst))
def generate_providers(abs_module):
""" Reads the IRPF90_man pages and returns a dict of dicts describing the
providers.
"""
MODULE = os.path.split(abs_module)[-1]
module = MODULE.lower()
if module == "dummy":
@ -139,20 +106,23 @@ def generate_providers(abs_module):
files = {}
entities = {}
mandir = os.path.join(abs_module,'IRPF90_man')
mandir = os.path.join(abs_module, 'IRPF90_man')
if not os.path.exists(mandir):
return {}
for f in os.listdir(mandir):
filename = os.path.join(mandir,f)
if f.endswith('.rst'):
continue
filename = os.path.join(mandir, f)
if f not in files:
files[f] = 0
name = f.split('.')[0]
with open(os.path.join(mandir, name+".rst"), 'r') as g:
rst = g.read()
with open(filename, 'r') as f:
state = 0
entity = { "decl": [], "doc": [] ,
"name": name , "module": module }
entity = {"decl": [], "doc": [] ,
"name": name , "module": module, "rst":rst}
text=f.read()
text_old = None
while text_old != text:
@ -183,7 +153,7 @@ def generate_providers(abs_module):
continue
if state == 1:
entity["decl"] += [ line ]
entity["decl"] += [line]
if line.startswith("subroutine") \
or line.startswith("function ") \
or " function " in line:
@ -193,7 +163,7 @@ def generate_providers(abs_module):
elif state == 2:
if line.startswith(".br"):
line = "\n\n"
entity["doc"] += [ line ]
entity["doc"] += [line]
elif state == 3:
if line.startswith(".br"):
continue
@ -203,7 +173,7 @@ def generate_providers(abs_module):
except: pass
break
entities [ entity["name"] ] = entity
entities[entity["name"]] = entity
return entities

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
.. _ao_two_e_erf_ints:
.. _module_ao_two_e_erf_ints:
.. program:: ao_two_e_erf_ints
@ -45,381 +45,842 @@ EZFIO parameters
Providers
---------
.. c:var:: ao_integrals_erf_cache
.. code:: text
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_integrals_erf_cache (0:64*64*64*64)
File: :file:`map_integrals_erf.irp.f`
Cache of |AO| integrals for fast access
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache_min`
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_two_e_integrals_erf_in_map`
.. c:var:: ao_integrals_erf_cache_max
.. code:: text
integer :: ao_integrals_erf_cache_min
integer :: ao_integrals_erf_cache_max
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
integer :: ao_integrals_erf_cache_min
integer :: ao_integrals_erf_cache_max
File: :file:`map_integrals_erf.irp.f`
Min and max values of the AOs for which the integrals are in the cache
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache`
.. c:var:: ao_integrals_erf_cache_min
.. code:: text
integer :: ao_integrals_erf_cache_min
integer :: ao_integrals_erf_cache_max
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
integer :: ao_integrals_erf_cache_min
integer :: ao_integrals_erf_cache_max
File: :file:`map_integrals_erf.irp.f`
Min and max values of the AOs for which the integrals are in the cache
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache`
.. c:var:: ao_integrals_erf_map
.. code:: text
type(map_type) :: ao_integrals_erf_map
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
type(map_type) :: ao_integrals_erf_map
File: :file:`map_integrals_erf.irp.f`
|AO| integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
.. c:var:: ao_two_e_integral_erf_schwartz
.. code:: text
File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_two_e_integral_erf_schwartz (ao_num,ao_num)
File: :file:`providers_ao_erf.irp.f`
Needed to compute Schwartz inequalities
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
.. c:var:: ao_two_e_integrals_erf_in_map
.. code:: text
logical :: ao_two_e_integrals_erf_in_map
File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f`
File: :file:`providers_ao_erf.irp.f`
.. code:: fortran
Map of Atomic integrals i(r1) j(r2) 1/r12 k(r1) l(r2)
logical :: ao_two_e_integrals_erf_in_map
Map of Atomic integrals
i(r1) j(r2) 1/r12 k(r1) l(r2)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ezfio_filename`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`n_pt_max_integrals`
* :c:data:`nproc`
* :c:data:`nucl_coord`
* :c:data:`read_ao_two_e_integrals_erf`
* :c:data:`zmq_context`
* :c:data:`zmq_socket_pull_tcp_address`
* :c:data:`zmq_state`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
.. c:function:: general_primitive_integral_erf:
.. c:var:: general_primitive_integral_erf
.. code:: text
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
double precision function general_primitive_integral_erf(dim, &
P_new,P_center,fact_p,p,p_inv,iorder_p, &
Q_new,Q_center,fact_q,q,q_inv,iorder_q)
P_new,P_center,fact_p,p,p_inv,iorder_p, &
Q_new,Q_center,fact_q,q,q_inv,iorder_q)
File: :file:`two_e_integrals_erf.irp.f`
Computes the integral <pq|rs> where p,q,r,s are Gaussian primitives
Needs:
.. hlist::
:columns: 3
* :c:data:`mu_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`add_poly_multiply`
* :c:func:`give_polynom_mult_center_x`
* :c:func:`multiply_poly`
Subroutines / functions
-----------------------
.. c:function:: ao_two_e_integral_erf:
.. c:function:: ao_two_e_integral_erf
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
double precision function ao_two_e_integral_erf(i,j,k,l)
File: :file:`two_e_integrals_erf.irp.f`
integral of the AO basis <ik|jl> or (ij|kl) i(r1) j(r1) 1/r12 k(r2) l(r2)
integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
.. hlist::
:columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl`
* :c:data:`nucl_coord`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_explicit_poly_and_gaussian`
.. c:function:: ao_two_e_integral_schwartz_accel_erf:
.. c:function:: ao_two_e_integral_schwartz_accel_erf
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
double precision function ao_two_e_integral_schwartz_accel_erf(i,j,k,l)
File: :file:`two_e_integrals_erf.irp.f`
integral of the AO basis <ik|jl> or (ij|kl) i(r1) j(r1) 1/r12 k(r2) l(r2)
integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
.. hlist::
:columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl`
* :c:data:`nucl_coord`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_explicit_poly_and_gaussian`
.. c:function:: ao_two_e_integrals_erf_in_map_collector:
.. c:function:: ao_two_e_integrals_erf_in_map_collector
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: text
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_collector(zmq_socket_pull)
File: :file:`integrals_erf_in_map_slave.irp.f`
Collects results from the AO integral calculation
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_num`
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`end_zmq_to_qp_run_socket`
* :c:func:`insert_into_ao_integrals_erf_map`
.. c:function:: ao_two_e_integrals_erf_in_map_slave:
.. c:function:: ao_two_e_integrals_erf_in_map_slave
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: text
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_slave(thread,iproc)
File: :file:`integrals_erf_in_map_slave.irp.f`
Computes a buffer of integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave_inproc`
* :c:func:`ao_two_e_integrals_erf_in_map_slave_tcp`
Calls:
.. hlist::
:columns: 3
* :c:func:`compute_ao_integrals_erf_jl`
* :c:func:`end_zmq_push_socket`
* :c:func:`end_zmq_to_qp_run_socket`
* :c:func:`push_integrals`
.. c:function:: ao_two_e_integrals_erf_in_map_slave_inproc:
.. c:function:: ao_two_e_integrals_erf_in_map_slave_inproc
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: text
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_slave_inproc(i)
File: :file:`integrals_erf_in_map_slave.irp.f`
Computes a buffer of integrals. i is the ID of the current thread.
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
.. c:function:: ao_two_e_integrals_erf_in_map_slave_tcp:
.. c:function:: ao_two_e_integrals_erf_in_map_slave_tcp
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: text
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_slave_tcp(i)
File: :file:`integrals_erf_in_map_slave.irp.f`
Computes a buffer of integrals. i is the ID of the current thread.
Calls:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
.. c:function:: clear_ao_erf_map:
.. c:function:: clear_ao_erf_map
.. code:: text
subroutine clear_ao_erf_map
File: :file:`map_integrals_erf.irp.f`
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
Frees the memory of the |AO| map
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_deinit`
.. c:function:: compute_ao_integrals_erf_jl:
.. c:function:: compute_ao_integrals_erf_jl
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
subroutine compute_ao_integrals_erf_jl(j,l,n_integrals,buffer_i,buffer_value)
File: :file:`two_e_integrals_erf.irp.f`
Parallel client for AO integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_erf_schwartz`
Called by:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
Calls:
.. hlist::
:columns: 3
* :c:func:`two_e_integrals_index`
.. c:function:: compute_ao_two_e_integrals_erf:
.. c:function:: compute_ao_two_e_integrals_erf
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
subroutine compute_ao_two_e_integrals_erf(j,k,l,sze,buffer_value)
File: :file:`two_e_integrals_erf.irp.f`
Compute AO 1/r12 integrals for all i and fixed j,k,l
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num`
* :c:data:`ao_two_e_integral_erf_schwartz`
Called by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
.. c:function:: dump_ao_integrals_erf:
.. c:function:: dump_ao_integrals_erf
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
subroutine dump_ao_integrals_erf(filename)
File: :file:`map_integrals_erf.irp.f`
Save to disk the |AO| erf integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_work_empty`
.. c:function:: eri_erf:
.. c:function:: eri_erf
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
double precision function ERI_erf(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z)
File: :file:`two_e_integrals_erf.irp.f`
ATOMIC PRIMTIVE two-electron integral between the 4 primitives :: primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2) primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2) primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2)
ATOMIC PRIMTIVE two-electron integral between the 4 primitives ::
primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2)
primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2)
primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2)
primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2)
Needs:
.. hlist::
:columns: 3
* :c:data:`mu_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`integrale_new_erf`
.. c:function:: get_ao_erf_map_size:
.. c:function:: get_ao_erf_map_size
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
function get_ao_erf_map_size()
File: :file:`map_integrals_erf.irp.f`
Returns the number of elements in the |AO| map
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
.. c:function:: get_ao_two_e_integral_erf:
.. c:function:: get_ao_two_e_integral_erf
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
double precision function get_ao_two_e_integral_erf(i,j,k,l,map) result(result)
File: :file:`map_integrals_erf.irp.f`
Gets one |AO| two-electron integral from the |AO| map
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache_min`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_integrals_erf_cache`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_get`
* :c:func:`two_e_integrals_index`
.. c:function:: get_ao_two_e_integrals_erf:
.. c:function:: get_ao_two_e_integrals_erf
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
subroutine get_ao_two_e_integrals_erf(j,k,l,sze,out_val)
File: :file:`map_integrals_erf.irp.f`
Gets multiple |AO| two-electron integral from the |AO| map . All i are retrieved for j,k,l fixed.
Gets multiple |AO| two-electron integral from the |AO| map .
All i are retrieved for j,k,l fixed.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integrals_erf_in_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`add_integrals_to_map_erf`
.. c:function:: get_ao_two_e_integrals_erf_non_zero:
.. c:function:: get_ao_two_e_integrals_erf_non_zero
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
subroutine get_ao_two_e_integrals_erf_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int)
File: :file:`map_integrals_erf.irp.f`
Gets multiple |AO| two-electron integrals from the |AO| map . All non-zero i are retrieved for j,k,l fixed.
Gets multiple |AO| two-electron integrals from the |AO| map .
All non-zero i are retrieved for j,k,l fixed.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
Called by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_get`
* :c:func:`two_e_integrals_index`
.. c:function:: insert_into_ao_integrals_erf_map:
.. c:function:: insert_into_ao_integrals_erf_map
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
subroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values)
File: :file:`map_integrals_erf.irp.f`
Create new entry into |AO| map
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_collector`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_append`
.. c:function:: integrale_new_erf:
.. c:function:: integrale_new_erf
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
subroutine integrale_new_erf(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt)
File: :file:`two_e_integrals_erf.irp.f`
calculate the integral of the polynom :: I_x1(a_x+b_x, c_x+d_x,p,q) * I_x1(a_y+b_y, c_y+d_y,p,q) * I_x1(a_z+b_z, c_z+d_z,p,q) between ( 0 ; 1)
calculate the integral of the polynom ::
I_x1(a_x+b_x, c_x+d_x,p,q) * I_x1(a_y+b_y, c_y+d_y,p,q) * I_x1(a_z+b_z, c_z+d_z,p,q)
between ( 0 ; 1)
Needs:
.. hlist::
:columns: 3
* :c:data:`mu_erf`
* :c:data:`n_pt_max_integrals`
* :c:data:`gauleg_t2`
Called by:
.. hlist::
:columns: 3
* :c:func:`eri_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_x1_new`
.. c:function:: load_ao_integrals_erf:
.. c:function:: load_ao_integrals_erf
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: text
.. code:: fortran
integer function load_ao_integrals_erf(filename)
File: :file:`map_integrals_erf.irp.f`
Read from disk the |AO| erf integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`cache_map_reallocate`
* :c:func:`map_deinit`
* :c:func:`map_sort`
.. c:function:: save_erf_two_e_integrals_ao:
.. c:function:: save_erf_two_e_integrals_ao
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
.. code:: text
subroutine save_erf_two_e_integrals_ao
Needs:
File: :file:`routines_save_integrals_erf.irp.f`
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ezfio_filename`
* :c:data:`ao_two_e_integrals_erf_in_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`routine`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf`
* :c:func:`ezfio_set_work_empty`
* :c:func:`map_save_to_disk`
.. c:function:: save_erf_two_e_ints_ao_into_ints_ao:
.. c:function:: save_erf_two_e_ints_ao_into_ints_ao
.. code:: text
subroutine save_erf_two_e_ints_ao_into_ints_ao
File: :file:`routines_save_integrals_erf.irp.f`
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ezfio_filename`
* :c:data:`ao_two_e_integrals_erf_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_ao_two_e_ints_io_ao_two_e_integrals`
* :c:func:`ezfio_set_work_empty`
* :c:func:`map_save_to_disk`

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
.. _aux_quantities:
.. _module_aux_quantities:
.. program:: aux_quantities

View File

@ -1,4 +1,4 @@
.. _becke_numerical_grid:
.. _module_becke_numerical_grid:
.. program:: becke_numerical_grid
@ -8,12 +8,12 @@
becke_numerical_grid
====================
This module contains all quantities needed to build the Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions.
This module contains all quantities needed to build Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions.
This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains
a certain number of radial and angular points. No pruning is done on the angular part of the grid.
The main keyword for that modue is:
The main keyword for that module is:
* :option:`becke_numerical_grid grid_type_sgn` which controls the precision of the grid according the standard **SG-n** grids. This keyword controls the two providers `n_points_integration_angular` `n_points_radial_grid`.
@ -92,363 +92,737 @@ EZFIO parameters
Providers
---------
.. c:var:: alpha_knowles
.. code:: text
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision, allocatable :: alpha_knowles (100)
File: :file:`integration_radial.irp.f`
Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996) as a function of the nuclear charge
Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996)
as a function of the nuclear charge
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: angular_quadrature_points
.. code:: text
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3)
double precision, allocatable :: weights_angular_points (n_points_integration_angular)
File: :file:`grid_becke.irp.f`
weights and grid points for the integration on the angular variables on the unit sphere centered on (0,0,0) According to the LEBEDEV scheme
weights and grid points for the integration on the angular variables on
the unit sphere centered on (0,0,0)
According to the LEBEDEV scheme
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: dr_radial_integral
.. code:: text
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
double precision :: dr_radial_integral
double precision :: dr_radial_integral
File: :file:`grid_becke.irp.f`
points in [0,1] to map the radial integral [0,\infty]
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: final_grid_points
.. code:: text
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
File: :file:`grid_becke_vector.irp.f`
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: final_weight_at_r
.. code:: text
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
File: :file:`grid_becke.irp.f`
Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights.
Needs:
.. hlist::
:columns: 3
* :c:data:`alpha_knowles`
* :c:data:`angular_quadrature_points`
* :c:data:`grid_points_radial`
* :c:data:`m_knowles`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_charge`
* :c:data:`nucl_num`
* :c:data:`weight_at_r`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_grid_points`
.. c:var:: final_weight_at_r_vector
.. code:: text
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
File: :file:`grid_becke_vector.irp.f`
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: grid_points_per_atom
.. code:: text
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: grid_points_per_atom (3,n_points_integration_angular,n_points_radial_grid,nucl_num)
File: :file:`grid_becke.irp.f`
x,y,z coordinates of grid points used for integration in 3d space
Needs:
.. hlist::
:columns: 3
* :c:data:`alpha_knowles`
* :c:data:`angular_quadrature_points`
* :c:data:`grid_points_radial`
* :c:data:`m_knowles`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: grid_points_radial
.. code:: text
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
double precision :: dr_radial_integral
double precision :: dr_radial_integral
File: :file:`grid_becke.irp.f`
points in [0,1] to map the radial integral [0,\infty]
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: index_final_points
.. code:: text
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
File: :file:`grid_becke_vector.irp.f`
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: index_final_points_reverse
.. code:: text
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
File: :file:`grid_becke_vector.irp.f`
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: m_knowles
.. code:: text
integer :: m_knowles
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: m_knowles
File: :file:`grid_becke.irp.f`
value of the "m" parameter in the equation (7) of the paper of Knowles (JCP, 104, 1996)
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: n_points_final_grid
.. code:: text
integer :: n_points_final_grid
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
integer :: n_points_final_grid
File: :file:`grid_becke_vector.irp.f`
Number of points which are non zero
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`final_grid_points`
* :c:data:`mos_grad_in_r_array`
* :c:data:`mos_in_r_array`
* :c:data:`mos_lapl_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
* :c:data:`potential_sr_c_alpha_ao_lda`
* :c:data:`potential_sr_x_alpha_ao_lda`
* :c:data:`potential_sr_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_pbe`
.. c:var:: n_points_grid_per_atom
.. code:: text
integer :: n_points_grid_per_atom
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_grid_per_atom
File: :file:`grid_becke.irp.f`
Number of grid points per atom
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
.. c:var:: n_points_integration_angular
.. code:: text
integer :: n_points_radial_grid
integer :: n_points_integration_angular
File : :file:`becke_numerical_grid/grid_becke.irp.f`
File: :file:`grid_becke.irp.f`
.. code:: fortran
n_points_radial_grid = number of radial grid points per atom
integer :: n_points_radial_grid
integer :: n_points_integration_angular
n_points_integration_angular = number of angular grid points per atom
n_points_radial_grid = number of radial grid points per atom
n_points_integration_angular = number of angular grid points per atom
These numbers are automatically set by setting the grid_type_sgn parameter
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_type_sgn`
Needed by:
.. hlist::
:columns: 3
* :c:data:`angular_quadrature_points`
* :c:data:`final_grid_points`
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`grid_points_radial`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: n_points_radial_grid
.. code:: text
integer :: n_points_radial_grid
integer :: n_points_integration_angular
File : :file:`becke_numerical_grid/grid_becke.irp.f`
File: :file:`grid_becke.irp.f`
.. code:: fortran
n_points_radial_grid = number of radial grid points per atom
integer :: n_points_radial_grid
integer :: n_points_integration_angular
n_points_integration_angular = number of angular grid points per atom
n_points_radial_grid = number of radial grid points per atom
n_points_integration_angular = number of angular grid points per atom
These numbers are automatically set by setting the grid_type_sgn parameter
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_type_sgn`
Needed by:
.. hlist::
:columns: 3
* :c:data:`angular_quadrature_points`
* :c:data:`final_grid_points`
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`grid_points_radial`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: weight_at_r
.. code:: text
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
File: :file:`grid_becke.irp.f`
Weight function at grid points : w_n(r) according to the equation (22) of Becke original paper (JCP, 88, 1988)
Weight function at grid points : w_n(r) according to the equation (22)
of Becke original paper (JCP, 88, 1988)
The "n" discrete variable represents the nucleis which in this array is
represented by the last dimension and the points are labelled by the
other dimensions.
The "n" discrete variable represents the nucleis which in this array is represented by the last dimension and the points are labelled by the other dimensions.
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_dist_inv`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_type_inter_distance_ua`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
.. c:var:: weights_angular_points
.. code:: text
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3)
double precision, allocatable :: weights_angular_points (n_points_integration_angular)
File: :file:`grid_becke.irp.f`
weights and grid points for the integration on the angular variables on the unit sphere centered on (0,0,0) According to the LEBEDEV scheme
weights and grid points for the integration on the angular variables on
the unit sphere centered on (0,0,0)
According to the LEBEDEV scheme
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
Subroutines / functions
-----------------------
.. c:function:: cell_function_becke:
.. c:function:: cell_function_becke
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: text
.. code:: fortran
double precision function cell_function_becke(r,atom_number)
File: :file:`step_function_becke.irp.f`
atom_number :: atom on which the cell function of Becke (1988, JCP,88(4)) r(1:3) :: x,y,z coordinantes of the current point
atom_number :: atom on which the cell function of Becke (1988, JCP,88(4))
r(1:3) :: x,y,z coordinantes of the current point
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
* :c:data:`slater_bragg_type_inter_distance_ua`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_num`
.. c:function:: derivative_knowles_function:
.. c:function:: derivative_knowles_function
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: text
.. code:: fortran
double precision function derivative_knowles_function(alpha,m,x)
File: :file:`integration_radial.irp.f`
Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points
.. c:function:: example_becke_numerical_grid:
.. c:function:: example_becke_numerical_grid
.. code:: text
subroutine example_becke_numerical_grid
File: :file:`example.irp.f`
File : :file:`becke_numerical_grid/example.irp.f`
subroutine that illustrates the main features available in becke_numerical_grid
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_final_grid`
* :c:data:`final_weight_at_r`
* :c:data:`n_points_radial_grid`
* :c:data:`grid_points_per_atom`
* :c:data:`final_grid_points`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
.. c:function:: f_function_becke:
.. c:function:: f_function_becke
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: text
.. code:: fortran
double precision function f_function_becke(x)
File: :file:`step_function_becke.irp.f`
.. c:function:: knowles_function:
.. c:function:: knowles_function
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: text
.. code:: fortran
double precision function knowles_function(alpha,m,x)
File: :file:`integration_radial.irp.f`
Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points : the Log "m" function ( equation (7) in the paper )
Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points :
the Log "m" function ( equation (7) in the paper )
.. c:function:: step_function_becke:
.. c:function:: step_function_becke
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: text
.. code:: fortran
double precision function step_function_becke(x)
File: :file:`step_function_becke.irp.f`
Step function of the Becke paper (1988, JCP,88(4))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
.. _cis:
.. _module_cis:
.. program:: cis
@ -64,72 +64,212 @@ Programs
Subroutines / functions
-----------------------
.. c:function:: h_apply_cis:
.. c:function:: h_apply_cis
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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.
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.
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask`
* :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`build_fock_tmp`
* :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`dsort`
* :c:func:`h_apply_cis_diexc`
* :c:func:`h_apply_cis_monoexc`
* :c:func:`make_s2_eigenfunction`
* :c:func:`wall_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_occ_pattern`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_occ_pattern`
.. c:function:: h_apply_cis_diexc:
.. c:function:: h_apply_cis_diexc
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis_diexcp`
.. c:function:: h_apply_cis_diexcorg:
.. c:function:: h_apply_cis_diexcorg
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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.
Generate all double excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis_diexcp`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`
.. c:function:: h_apply_cis_diexcp:
.. c:function:: h_apply_cis_diexcp
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis_diexc`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis_diexcorg`
.. c:function:: h_apply_cis_monoexc:
.. c:function:: h_apply_cis_monoexc
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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.
Generate all single excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`

View File

@ -1,4 +1,4 @@
.. _cisd:
.. _module_cisd:
.. program:: cisd
@ -62,72 +62,212 @@ Programs
Subroutines / functions
-----------------------
.. c:function:: h_apply_cisd:
.. c:function:: h_apply_cisd
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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.
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.
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask`
* :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`build_fock_tmp`
* :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`dsort`
* :c:func:`h_apply_cisd_diexc`
* :c:func:`h_apply_cisd_monoexc`
* :c:func:`make_s2_eigenfunction`
* :c:func:`wall_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_occ_pattern`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_occ_pattern`
.. c:function:: h_apply_cisd_diexc:
.. c:function:: h_apply_cisd_diexc
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexcp`
.. c:function:: h_apply_cisd_diexcorg:
.. c:function:: h_apply_cisd_diexcorg
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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.
Generate all double excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexcp`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`
.. c:function:: h_apply_cisd_diexcp:
.. c:function:: h_apply_cisd_diexcp
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexc`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexcorg`
.. c:function:: h_apply_cisd_monoexc:
.. c:function:: h_apply_cisd_monoexc
File : :file:`h_apply.irp.f_shell_8`
.. code:: text
.. code:: fortran
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.
Generate all single excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
.. _davidson_dressed:
.. _module_davidson_dressed:
.. program:: davidson_dressed

View File

@ -1,4 +1,4 @@
.. _davidson_undressed:
.. _module_davidson_undressed:
.. program:: davidson_undressed
@ -16,30 +16,60 @@ Module for main files Davidson's algorithm with no dressing.
Providers
---------
.. c:var:: dressing_column_h
.. code:: text
File : :file:`davidson_undressed/null_dressing_vector.irp.f`
.. code:: fortran
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
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
.. c:var:: dressing_column_s
.. code:: text
File : :file:`davidson_undressed/null_dressing_vector.irp.f`
.. code:: fortran
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
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`

View File

@ -1,4 +1,4 @@
.. _density_for_dft:
.. _module_density_for_dft:
.. program:: density_for_dft
@ -38,110 +38,269 @@ EZFIO parameters
Providers
---------
.. c:var:: one_body_dm_mo_alpha_one_det
.. code:: text
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states)
double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f`
One body density matrix on the |MO| basis for a single determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
.. c:var:: one_body_dm_mo_beta_one_det
.. code:: text
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states)
double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f`
One body density matrix on the |MO| basis for a single determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
.. c:var:: one_e_dm_alpha_ao_for_dft
.. code:: text
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states)
double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states)
File: :file:`density_for_dft.irp.f`
one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: one_e_dm_average_mo_for_dft
.. code:: text
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_average_mo_for_dft (mo_num,mo_num)
File: :file:`density_for_dft.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_for_dft`
* :c:data:`state_average_weight`
Needed by:
.. hlist::
:columns: 3
* :c:data:`short_range_hartree_operator`
.. c:var:: one_e_dm_beta_ao_for_dft
.. code:: text
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states)
double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states)
File: :file:`density_for_dft.irp.f`
one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: one_e_dm_mo_alpha_for_dft
.. code:: text
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_alpha_for_dft (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f`
density matrix for alpha electrons in the MO basis used for all DFT calculations based on the density
Needs:
.. hlist::
:columns: 3
* :c:data:`damping_for_rs_dft`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`density_for_dft`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_body_dm_mo_alpha_one_det`
* :c:data:`one_e_dm_mo_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_e_dm_mo_for_dft`
* :c:data:`psi_dft_energy_kinetic`
* :c:data:`trace_v_xc`
.. c:var:: one_e_dm_mo_beta_for_dft
.. code:: text
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_beta_for_dft (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f`
density matrix for beta electrons in the MO basis used for all DFT calculations based on the density
Needs:
.. hlist::
:columns: 3
* :c:data:`damping_for_rs_dft`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`density_for_dft`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_body_dm_mo_alpha_one_det`
* :c:data:`one_e_dm_mo_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_e_dm_mo_for_dft`
* :c:data:`psi_dft_energy_kinetic`
* :c:data:`trace_v_xc`
.. c:var:: one_e_dm_mo_for_dft
.. code:: text
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_for_dft (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_average_mo_for_dft`
* :c:data:`short_range_hartree_operator`

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
.. _dft_keywords:
.. _module_dft_keywords:
.. program:: dft_keywords
@ -45,15 +45,24 @@ EZFIO parameters
Providers
---------
.. c:var:: dft_type
.. code:: text
character*(32) :: dft_type
File : :file:`dft_keywords/keywords.irp.f`
.. code:: fortran
character*(32) :: dft_type
File: :file:`keywords.irp.f`
defines the type of DFT applied: LDA, GGA etc ...
Needs:
.. hlist::
:columns: 3
* :c:data:`correlation_functional`
* :c:data:`exchange_functional`

View File

@ -1,4 +1,4 @@
.. _dft_utils_in_r:
.. _module_dft_utils_in_r:
.. program:: dft_utils_in_r
@ -24,359 +24,853 @@ The main providers for this module are:
Providers
---------
.. c:var:: aos_grad_in_r_array
.. code:: text
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3)
double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3)
double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num)
File: :file:`ao_in_r.irp.f`
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`mos_grad_in_r_array`
* :c:data:`potential_sr_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_pbe`
.. c:var:: aos_grad_in_r_array_transp
.. code:: text
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3)
double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3)
double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num)
File: :file:`ao_in_r.irp.f`
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`mos_grad_in_r_array`
* :c:data:`potential_sr_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_pbe`
.. c:var:: aos_grad_in_r_array_transp_xyz
.. code:: text
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3)
double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3)
double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num)
File: :file:`ao_in_r.irp.f`
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`mos_grad_in_r_array`
* :c:data:`potential_sr_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_pbe`
.. c:var:: aos_in_r_array
.. code:: text
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid)
double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num)
File: :file:`ao_in_r.irp.f`
aos_in_r_array(i,j) = value of the ith ao on the jth grid point
aos_in_r_array(i,j) = value of the ith ao on the jth grid point
aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`potential_sr_c_alpha_ao_lda`
* :c:data:`potential_sr_x_alpha_ao_lda`
* :c:data:`potential_sr_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_pbe`
.. c:var:: aos_in_r_array_transp
.. code:: text
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid)
double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num)
File: :file:`ao_in_r.irp.f`
aos_in_r_array(i,j) = value of the ith ao on the jth grid point
aos_in_r_array(i,j) = value of the ith ao on the jth grid point
aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`potential_sr_c_alpha_ao_lda`
* :c:data:`potential_sr_x_alpha_ao_lda`
* :c:data:`potential_sr_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_pbe`
.. c:var:: aos_lapl_in_r_array
.. code:: text
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3)
double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3)
File: :file:`ao_in_r.irp.f`
aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point
aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point
aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mos_lapl_in_r_array`
.. c:var:: aos_lapl_in_r_array_transp
.. code:: text
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3)
double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3)
File: :file:`ao_in_r.irp.f`
aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point
aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point
aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mos_lapl_in_r_array`
.. c:var:: mos_grad_in_r_array
.. code:: text
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: mos_grad_in_r_array (mo_num,n_points_final_grid,3)
File: :file:`mo_in_r.irp.f`
mos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith mo on the jth grid point
mos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth mo on the ith grid point
mos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith mo on the jth grid point
mos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth mo on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`aos_grad_in_r_array`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
* :c:data:`n_points_final_grid`
.. c:var:: mos_in_r_array
.. code:: text
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid)
double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num)
File: :file:`mo_in_r.irp.f`
mos_in_r_array(i,j) = value of the ith mo on the jth grid point
mos_in_r_array(i,j) = value of the ith mo on the jth grid point
mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
* :c:data:`n_points_final_grid`
.. c:var:: mos_in_r_array_transp
.. code:: text
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid)
double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num)
File: :file:`mo_in_r.irp.f`
mos_in_r_array(i,j) = value of the ith mo on the jth grid point
mos_in_r_array(i,j) = value of the ith mo on the jth grid point
mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
* :c:data:`n_points_final_grid`
.. c:var:: mos_lapl_in_r_array
.. code:: text
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: mos_lapl_in_r_array (mo_num,n_points_final_grid,3)
File: :file:`mo_in_r.irp.f`
mos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith mo on the jth grid point
mos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth mo on the ith grid point
mos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith mo on the jth grid point
mos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth mo on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
* :c:data:`n_points_final_grid`
.. c:var:: one_e_dm_alpha_at_r
.. code:: text
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) where r_i is the ith point of the grid and istate is the state number
one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate)
one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate)
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_x_lda`
.. c:var:: one_e_dm_alpha_in_r
.. code:: text
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
File: :file:`dm_in_r.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`grid_points_per_atom`
* :c:data:`mo_num`
* :c:data:`n_points_radial_grid`
* :c:data:`n_states`
* :c:data:`nucl_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
.. c:var:: one_e_dm_and_grad_alpha_in_r
.. code:: text
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_pbe`
.. c:var:: one_e_dm_and_grad_beta_in_r
.. code:: text
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_pbe`
.. c:var:: one_e_dm_beta_at_r
.. code:: text
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) where r_i is the ith point of the grid and istate is the state number
one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate)
one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate)
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_x_lda`
.. c:var:: one_e_dm_beta_in_r
.. code:: text
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
File: :file:`dm_in_r.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`grid_points_per_atom`
* :c:data:`mo_num`
* :c:data:`n_points_radial_grid`
* :c:data:`n_states`
* :c:data:`nucl_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
.. c:var:: one_e_grad_2_dm_alpha_at_r
.. code:: text
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_pbe`
.. c:var:: one_e_grad_2_dm_beta_at_r
.. code:: text
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_pbe`
Subroutines / functions
-----------------------
.. c:function:: density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r:
.. c:function:: density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: text
.. code:: fortran
subroutine density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, grad_dm_a, grad_dm_b, aos_array, grad_aos_array)
File: :file:`dm_in_r.irp.f`
input : r(1) ==> r(1) = x, r(2) = y, r(3) = z output : dm_a = alpha density evaluated at r : dm_b = beta density evaluated at r : aos_array(i) = ao(i) evaluated at r : grad_dm_a(1) = X gradient of the alpha density evaluated in r : grad_dm_a(1) = X gradient of the beta density evaluated in r : grad_aos_array(1) = X gradient of the aos(i) evaluated at r
input : r(1) ==> r(1) = x, r(2) = y, r(3) = z
output : dm_a = alpha density evaluated at r
: dm_b = beta density evaluated at r
: aos_array(i) = ao(i) evaluated at r
: grad_dm_a(1) = X gradient of the alpha density evaluated in r
: grad_dm_a(1) = X gradient of the beta density evaluated in r
: grad_aos_array(1) = X gradient of the aos(i) evaluated at r
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`n_states`
Called by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_and_grad_alpha_in_r`
Calls:
.. hlist::
:columns: 3
* :c:func:`dsymv`
* :c:func:`give_all_aos_and_grad_at_r`
.. c:function:: dm_dft_alpha_beta_and_all_aos_at_r:
.. c:function:: dm_dft_alpha_beta_and_all_aos_at_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: text
.. code:: fortran
subroutine dm_dft_alpha_beta_and_all_aos_at_r(r,dm_a,dm_b,aos_array)
File: :file:`dm_in_r.irp.f`
input: r(1) ==> r(1) = x, r(2) = y, r(3) = z output : dm_a = alpha density evaluated at r output : dm_b = beta density evaluated at r output : aos_array(i) = ao(i) evaluated at r
input: r(1) ==> r(1) = x, r(2) = y, r(3) = z
output : dm_a = alpha density evaluated at r
output : dm_b = beta density evaluated at r
output : aos_array(i) = ao(i) evaluated at r
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`n_states`
Calls:
.. hlist::
:columns: 3
* :c:func:`dsymv`
* :c:func:`give_all_aos_at_r`
.. c:function:: dm_dft_alpha_beta_at_r:
.. c:function:: dm_dft_alpha_beta_at_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: text
.. code:: fortran
subroutine dm_dft_alpha_beta_at_r(r,dm_a,dm_b)
File: :file:`dm_in_r.irp.f`
input: r(1) ==> r(1) = x, r(2) = y, r(3) = z output : dm_a = alpha density evaluated at r(3) output : dm_b = beta density evaluated at r(3)
input: r(1) ==> r(1) = x, r(2) = y, r(3) = z
output : dm_a = alpha density evaluated at r(3)
output : dm_b = beta density evaluated at r(3)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`n_states`
Called by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_alpha_in_r`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemv`
* :c:func:`give_all_aos_at_r`

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
.. _dressing:
.. _module_dressing:
.. program:: dressing

View File

@ -1,4 +1,4 @@
.. _electrons:
.. _module_electrons:
.. program:: electrons
@ -47,30 +47,68 @@ EZFIO parameters
Providers
---------
.. c:var:: elec_num
.. code:: text
integer :: elec_num
File : :file:`electrons/electrons.irp.f`
.. code:: fortran
integer :: elec_num
integer, allocatable :: elec_num_tab (2)
File: :file:`electrons.irp.f`
Numbers of alpha ("up") , beta ("down") and total electrons
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
Needed by:
.. hlist::
:columns: 3
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
* :c:data:`pt2_f`
.. c:var:: elec_num_tab
.. code:: text
integer :: elec_num
File : :file:`electrons/electrons.irp.f`
.. code:: fortran
integer :: elec_num
integer, allocatable :: elec_num_tab (2)
File: :file:`electrons.irp.f`
Numbers of alpha ("up") , beta ("down") and total electrons
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
Needed by:
.. hlist::
:columns: 3
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
* :c:data:`pt2_f`

View File

@ -1,4 +1,4 @@
.. _ezfio_files:
.. _module_ezfio_files:
.. program:: ezfio_files
@ -18,134 +18,641 @@ command-line, or as the :envvar:`QP_INPUT` environment variable.
Providers
---------
.. c:var:: ezfio_filename
.. code:: text
character*(128) :: ezfio_filename
File : :file:`ezfio_files/ezfio.irp.f`
File: :file:`ezfio.irp.f`
.. code:: fortran
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.
character*(128) :: ezfio_filename
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.
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_initialized`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`cas_bitmask`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`elec_num`
* :c:data:`energy_iterations`
* :c:data:`ezfio_work_dir`
* :c:data:`frozen_orb_scf`
* :c:data:`generators_bitmask`
* :c:data:`generators_bitmask_restart`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_occ`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mu_erf`
* :c:data:`n_cas_bitmask`
* :c:data:`n_det`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_generators_bitmask`
* :c:data:`n_generators_bitmask_restart`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
.. c:var:: ezfio_work_dir
.. code:: text
character*(128) :: ezfio_work_dir
File : :file:`ezfio_files/ezfio.irp.f`
.. code:: fortran
character*(128) :: ezfio_work_dir
File: :file:`ezfio.irp.f`
EZFIO/work/
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: output_cpu_time_0
.. code:: text
double precision :: output_wall_time_0
double precision :: output_cpu_time_0
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
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
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mu_erf`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
.. c:var:: output_wall_time_0
.. code:: text
double precision :: output_wall_time_0
double precision :: output_cpu_time_0
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
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
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mu_erf`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
Subroutines / functions
-----------------------
.. c:function:: getunitandopen:
.. c:function:: getunitandopen
File : :file:`ezfio_files/get_unit_and_open.irp.f`
.. code:: text
.. code:: fortran
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
: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:
.. c:function:: write_bool
File : :file:`ezfio_files/output.irp.f`
.. code:: text
.. code:: fortran
subroutine write_bool(iunit,value,label)
File: :file:`output.irp.f`
Write an logical value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
.. c:function:: write_double:
.. c:function:: write_double
File : :file:`ezfio_files/output.irp.f`
.. code:: text
.. code:: fortran
subroutine write_double(iunit,value,label)
File: :file:`output.irp.f`
Write a double precision value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:data:`ci_energy`
* :c:func:`damping_scf`
* :c:func:`davidson_diag_hjj_sjj`
* :c:data:`nuclear_repulsion`
* :c:data:`psi_coef_max`
* :c:data:`pt2_e0_denominator`
* :c:func:`roothaan_hall_scf`
* :c:func:`run_cipsi`
* :c:func:`run_slave_main`
* :c:func:`run_stochastic_cipsi`
* :c:func:`zmq_pt2`
* :c:func:`zmq_selection`
.. c:function:: write_int:
.. c:function:: write_int
File : :file:`ezfio_files/output.irp.f`
.. code:: text
.. code:: fortran
subroutine write_int(iunit,value,label)
File: :file:`output.irp.f`
Write an integer value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:data:`core_bitmask`
* :c:func:`davidson_diag_hjj_sjj`
* :c:data:`inact_bitmask`
* :c:func:`make_s2_eigenfunction`
* :c:data:`mo_num`
* :c:data:`n_act_orb`
* :c:data:`n_cas_bitmask`
* :c:data:`n_det`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_generators_bitmask`
* :c:data:`n_generators_bitmask_restart`
* :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :c:data:`nthreads_pt2`
* :c:data:`psi_cas`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_size`
* :c:data:`pt2_n_teeth`
* :c:data:`qp_max_mem`
* :c:func:`remove_small_contributions`
* :c:func:`save_wavefunction_general`
* :c:func:`save_wavefunction_specified`
* :c:func:`zmq_pt2`
.. c:function:: write_time:
.. c:function:: write_time
File : :file:`ezfio_files/output.irp.f`
.. code:: text
.. code:: fortran
subroutine write_time(iunit)
File: :file:`output.irp.f`
Write a time stamp in the output for chronological reconstruction
Needs:
.. hlist::
:columns: 3
* :c:data:`output_wall_time_0`
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:func:`damping_scf`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:func:`davidson_diag_hjj_sjj`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:func:`make_s2_eigenfunction`
* :c:data:`max_dim_diis`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`mo_as_svd_vectors_of_mo_matrix`
* :c:func:`mo_as_svd_vectors_of_mo_matrix_eig`
* :c:data:`mo_class`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mu_erf`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:func:`roothaan_hall_scf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
Calls:
.. hlist::
:columns: 3
* :c:func:`cpu_time`
* :c:func:`print_memory_usage`
* :c:func:`wall_time`

View File

@ -1,4 +1,4 @@
.. _fci:
.. _module_fci:
.. program:: fci
@ -80,47 +80,64 @@ Programs
Providers
---------
.. c:var:: nthreads_pt2
.. code:: text
integer :: nthreads_pt2
File : :file:`fci/environment.irp.f`
.. code:: fortran
integer :: nthreads_pt2
File: :file:`environment.irp.f`
Number of threads for Davidson
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`nproc`
Subroutines / functions
-----------------------
.. c:function:: save_energy:
.. c:function:: run
File : :file:`fci/save_energy.irp.f`
.. code:: text
subroutine run
File: :file:`pt2.irp.f`
.. c:function:: save_energy
.. code:: text
.. code:: fortran
subroutine save_energy(E,pt2)
File: :file:`save_energy.irp.f`
Saves the energy in |EZFIO|.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_fci_energy`
* :c:func:`ezfio_set_fci_energy_pt2`

View File

@ -1,4 +1,4 @@
.. _generators_cas:
.. _module_generators_cas:
.. program:: generators_cas

View File

@ -1,4 +1,4 @@
.. _generators_full:
.. _module_generators_full:
.. program:: generators_full
@ -19,127 +19,277 @@ a full set of generators.
Providers
---------
.. c:var:: degree_max_generators
.. code:: text
integer :: degree_max_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: degree_max_generators
File: :file:`generators.irp.f`
Max degree of excitation (respect to HF) of the generators
Needs:
.. hlist::
:columns: 3
* :c:data:`hf_bitmask`
* :c:data:`n_det_generators`
* :c:data:`n_int`
* :c:data:`psi_det_generators`
.. c:var:: n_det_generators
.. code:: text
integer :: n_det_generators
File : :file:`generators_full/generators.irp.f`
File: :file:`generators.irp.f`
.. code:: fortran
For Single reference wave functions, the number of generators is 1 : the Hartree-Fock determinant
integer :: n_det_generators
For Single reference wave functions, the number of generators is 1 : the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`output_wall_time_0`
* :c:data:`psi_det_sorted`
* :c:data:`threshold_generators`
Needed by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
* :c:data:`n_det_selectors`
* :c:data:`pt2_f`
* :c:data:`pt2_j`
* :c:data:`pt2_n_tasks`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_u`
* :c:data:`pt2_w`
.. c:var:: psi_coef_generators
.. code:: text
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
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
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
.. c:var:: psi_coef_sorted_gen
.. code:: text
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
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
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_f`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_w`
.. c:var:: psi_det_generators
.. code:: text
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
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
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
.. c:var:: psi_det_sorted_gen
.. code:: text
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
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
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_f`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_w`
.. c:var:: psi_det_sorted_gen_order
.. code:: text
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
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
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_f`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_w`
.. c:var:: select_max
.. code:: text
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
double precision, allocatable :: select_max (size_select_max)
File: :file:`generators.irp.f`
Memo to skip useless selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`size_select_max`
.. c:var:: size_select_max
.. code:: text
integer :: size_select_max
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: size_select_max
File: :file:`generators.irp.f`
Size of the select_max array
Needed by:
.. hlist::
:columns: 3
* :c:data:`select_max`

View File

@ -1,4 +1,4 @@
.. _hartree_fock:
.. _module_hartree_fock:
.. program:: hartree_fock
@ -67,138 +67,357 @@ Programs
Providers
---------
.. c:var:: ao_two_e_integral_alpha
.. code:: text
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`hf_energy`
.. c:var:: ao_two_e_integral_beta
.. code:: text
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`hf_energy`
.. c:var:: extra_e_contrib_density
.. code:: text
double precision :: extra_e_contrib_density
File : :file:`hartree_fock/hf_energy.irp.f`
File: :file:`hf_energy.irp.f`
.. code:: fortran
Extra contribution to the SCF energy coming from the density.
double precision :: extra_e_contrib_density
For a Hartree-Fock calculation: extra_e_contrib_density = 0
Extra contribution to the SCF energy coming from the density.
For a Hartree-Fock calculation: extra_e_contrib_density = 0
For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - trace of the V_xc potential
Needed by:
.. hlist::
:columns: 3
* :c:data:`scf_energy`
.. c:var:: fock_matrix_ao_alpha
.. code:: text
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
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_hf.irp.f`
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`scf_energy`
.. c:var:: fock_matrix_ao_beta
.. code:: text
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
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_hf.irp.f`
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`scf_energy`
.. c:var:: hf_energy
.. code:: text
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
File: :file:`hf_energy.irp.f`
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: hf_one_electron_energy
.. code:: text
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
File: :file:`hf_energy.irp.f`
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: hf_two_electron_energy
.. code:: text
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
File: :file:`hf_energy.irp.f`
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Subroutines / functions
-----------------------
.. c:function:: create_guess:
.. c:function:: create_guess
.. code:: text
subroutine create_guess
File: :file:`scf.irp.f`
File : :file:`hartree_fock/scf.irp.f`
Create a MO guess if no MOs are present in the EZFIO directory
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`mo_guess_type`
* :c:data:`mo_one_e_integrals`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_has_mo_basis_mo_coef`
* :c:func:`huckel_guess`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_label`
.. c:function:: run:
File : :file:`hartree_fock/scf.irp.f`
Run SCF calculation
Needs:
.. hlist::
:columns: 3
* :c:data:`scf_energy`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`pt2`
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_hartree_fock_energy`
* :c:func:`roothaan_hall_scf`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`

View File

@ -1,4 +1,4 @@
.. _iterations:
.. _module_iterations:
.. program:: iterations
@ -41,74 +41,159 @@ EZFIO parameters
Providers
---------
.. c:var:: extrapolated_energy
.. code:: text
File : :file:`iterations/iterations.irp.f`
.. code:: fortran
double precision, allocatable :: extrapolated_energy (N_iter,N_states)
File: :file:`iterations.irp.f`
Extrapolated energy, using E_var = f(PT2) where PT2=0
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_iterations`
* :c:data:`n_det`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
.. c:var:: n_iter
.. code:: text
integer :: n_iter
File : :file:`iterations/io.irp.f`
.. code:: fortran
integer :: n_iter
File: :file:`io.irp.f`
number of iterations
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
* :c:data:`n_states`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extrapolated_energy`
Subroutines / functions
-----------------------
.. c:function:: print_extrapolated_energy:
.. c:function:: print_extrapolated_energy
.. code:: text
subroutine print_extrapolated_energy
File: :file:`print_extrapolation.irp.f`
File : :file:`iterations/print_extrapolation.irp.f`
Print the extrapolated energy in the output
Needs:
.. hlist::
:columns: 3
* :c:data:`extrapolated_energy`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`pt2_iterations`
* :c:data:`n_iter`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
.. c:function:: print_summary:
.. c:function:: print_summary
File : :file:`iterations/print_summary.irp.f`
.. code:: text
.. code:: fortran
subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st)
subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st,s2_)
File: :file:`print_summary.irp.f`
Print the extrapolated energy in the output
Needs:
.. hlist::
:columns: 3
* :c:data:`do_pt2`
* :c:data:`s2_eig`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
.. c:function:: save_iterations:
.. c:function:: save_iterations
File : :file:`iterations/iterations.irp.f`
.. code:: text
.. code:: fortran
subroutine save_iterations(e_, pt2_,n_)
File: :file:`iterations.irp.f`
Update the energy in the EZFIO file.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_iter`
* :c:data:`energy_iterations`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
* :c:data:`n_det_iterations`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_iterations_energy_iterations`
* :c:func:`ezfio_set_iterations_n_det_iterations`
* :c:func:`ezfio_set_iterations_n_iter`
* :c:func:`ezfio_set_iterations_pt2_iterations`

View File

@ -1,4 +1,4 @@
.. _kohn_sham:
.. _module_kohn_sham:
.. program:: kohn_sham
@ -56,35 +56,46 @@ Programs
Providers
---------
.. c:var:: ks_energy
.. code:: text
double precision :: ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File : :file:`ks_enery.irp.f`
.. code:: fortran
double precision :: ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
Subroutines / functions
-----------------------
.. c:function:: ks_cf
.. code:: text
subroutine ks_cf
File: :file:`ks_scf.irp.f`
Produce `Kohn_Sham` MO orbital output: mo_basis.mo_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef

View File

@ -1,4 +1,4 @@
.. _kohn_sham_rs:
.. _module_kohn_sham_rs:
.. program:: kohn_sham_rs
@ -64,187 +64,400 @@ Programs
Providers
---------
.. c:var:: ao_potential_alpha_xc
.. code:: text
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`potential_x_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`rs_ks_energy`
.. c:var:: ao_potential_beta_xc
.. code:: text
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`potential_x_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`rs_ks_energy`
.. c:var:: e_correlation_dft
.. code:: text
double precision :: e_correlation_dft
File : :file:`pot_functionals.irp.f`
File: :file:`pot_functionals.irp.f`
.. code:: fortran
double precision :: e_correlation_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_x`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
* :c:data:`rs_ks_energy`
.. c:var:: e_exchange_dft
.. code:: text
double precision :: e_exchange_dft
File : :file:`pot_functionals.irp.f`
File: :file:`pot_functionals.irp.f`
.. code:: fortran
double precision :: e_exchange_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_x`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
* :c:data:`rs_ks_energy`
.. c:var:: fock_matrix_alpha_no_xc_ao
.. code:: text
File : :file:`fock_matrix_rs_ks.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
File: :file:`fock_matrix_rs_ks.irp.f`
Mono electronic an Coulomb matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
.. c:var:: fock_matrix_beta_no_xc_ao
.. code:: text
File : :file:`fock_matrix_rs_ks.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
File: :file:`fock_matrix_rs_ks.irp.f`
Mono electronic an Coulomb matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
.. c:var:: fock_matrix_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: one_e_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: rs_ks_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: trace_potential_xc
.. code:: text
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: two_e_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
Subroutines / functions
-----------------------
.. c:function:: check_coherence_functional:
.. c:function:: check_coherence_functional
.. code:: text
subroutine check_coherence_functional
File: :file:`rs_ks_scf.irp.f`
File : :file:`rs_ks_scf.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`exchange_functional`
* :c:data:`correlation_functional`
Called by:
.. hlist::
:columns: 3
* :c:func:`rs_ks_scf`

View File

@ -1,4 +1,4 @@
.. _mo_basis:
.. _module_mo_basis:
.. program:: mo_basis
@ -68,303 +68,736 @@ EZFIO parameters
Providers
---------
.. c:var:: mo_coef
.. code:: text
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef (ao_num,mo_num)
File: :file:`mos.irp.f`
Molecular orbital coefficients on |AO| basis set
mo_coef(i,j) = coefficient of the i-th |AO| on the jth mo
Molecular orbital coefficients on |AO| basis set
mo_coef(i,j) = coefficient of the i-th |AO| on the jth mo
mo_label : Label characterizing the MOS (local, canonical, natural, etc)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`mo_coef_in_ao_ortho_basis`
* :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_spin_density_ao`
* :c:data:`psi_det`
* :c:data:`s_mo_coef`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: mo_coef_begin_iteration
.. code:: text
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_num)
File: :file:`track_orb.irp.f`
Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration
Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration
Usefull to track some orbitals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
.. c:var:: mo_coef_in_ao_ortho_basis
.. code:: text
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_num)
File: :file:`mos.irp.f`
|MO| coefficients in orthogonalized |AO| basis
|MO| coefficients in orthogonalized |AO| basis
:math:`C^{-1}.C_{mo}`
:math:`C^{-1}.C_{mo}`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef_inv`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_coef_transp
.. code:: text
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_transp (mo_num,ao_num)
File: :file:`mos.irp.f`
|MO| coefficients on |AO| basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
.. c:var:: mo_label
.. code:: text
character*(64) :: mo_label
File : :file:`mo_basis/mos.irp.f`
File: :file:`mos.irp.f`
.. code:: fortran
|MO| coefficients on |AO| basis set
character*(64) :: mo_label
mo_coef(i,j) = coefficient of the i-th |AO| on the j-th |MO|
|MO| coefficients on |AO| basis set
mo_coef(i,j) = coefficient of the i-th |AO| on the j-th |MO|
mo_label : Label characterizing the |MOs| (local, canonical, natural, etc)
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_coef`
* :c:data:`psi_det`
.. c:var:: mo_num
.. code:: text
integer :: mo_num
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
integer :: mo_num
File: :file:`mos.irp.f`
Number of MOs
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`core_fock_operator`
* :c:data:`core_fock_operator_erf`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`full_ijkl_bitmask`
* :c:data:`int_erf_3_index`
* :c:data:`list_act`
* :c:data:`list_core`
* :c:data:`list_core_inact`
* :c:data:`list_core_inact_act`
* :c:data:`list_inact`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef_in_ao_ortho_basis`
* :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x`
* :c:data:`mo_energy_expval`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_erf_cache_min`
* :c:data:`mo_integrals_erf_map`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_occ`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
* :c:data:`mo_two_e_int_erf_jj`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`n_int`
* :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_dm_dagger_mo_spin_index`
* :c:data:`one_e_dm_mo`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`one_e_dm_mo_alpha_average`
* :c:data:`one_e_dm_mo_diff`
* :c:data:`one_e_dm_mo_spin_index`
* :c:data:`one_e_spin_density_ao`
* :c:data:`one_e_spin_density_mo`
* :c:data:`psi_energy_h_core`
* :c:data:`s_mo_coef`
* :c:data:`singles_alpha_csc_idx`
* :c:data:`singles_beta_csc_idx`
.. c:var:: mo_occ
.. code:: text
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_occ (mo_num)
File: :file:`mos.irp.f`
|MO| occupation numbers
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mpi_master`
Subroutines / functions
-----------------------
.. c:function:: ao_ortho_cano_to_ao:
.. c:function:: ao_ortho_cano_to_ao
File : :file:`mo_basis/mos.irp.f`
.. code:: text
.. code:: fortran
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
Transform A from the |AO| basis to the orthogonal |AO| basis
$C^{-1}.A_{ao}.C^{\dagger-1}$
:math:`C^{-1}.A_{ao}.C^{\dagger-1}`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef_inv`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: ao_to_mo:
.. c:function:: ao_to_mo
File : :file:`mo_basis/mos.irp.f`
.. code:: text
.. code:: fortran
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
Transform A from the |AO| basis to the |MO| basis
$C^\dagger.A_{ao}.C$
:math:`C^\dagger.A_{ao}.C`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: give_all_mos_and_grad_and_lapl_at_r:
.. c:function:: give_all_mos_and_grad_and_lapl_at_r
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: text
.. code:: fortran
subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array)
File: :file:`mos_in_r.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_all_aos_and_grad_and_lapl_at_r`
.. c:function:: give_all_mos_and_grad_at_r:
.. c:function:: give_all_mos_and_grad_at_r
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: text
.. code:: fortran
subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array)
File: :file:`mos_in_r.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_all_aos_and_grad_at_r`
.. c:function:: give_all_mos_at_r:
.. c:function:: give_all_mos_at_r
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: text
.. code:: fortran
subroutine give_all_mos_at_r(r,mos_array)
File: :file:`mos_in_r.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef_transp`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemv`
* :c:func:`give_all_aos_at_r`
.. c:function:: initialize_mo_coef_begin_iteration:
.. c:function:: initialize_mo_coef_begin_iteration
.. code:: text
subroutine initialize_mo_coef_begin_iteration
File: :file:`track_orb.irp.f`
File : :file:`mo_basis/track_orb.irp.f`
Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`roothaan_hall_scf`
.. c:function:: mix_mo_jk:
.. c:function:: mix_mo_jk
File : :file:`mo_basis/mos.irp.f`
.. code:: text
.. code:: fortran
subroutine mix_mo_jk(j,k)
File: :file:`mos.irp.f`
Rotates the j-th |MO| with the k-th |MO| to give two new |MOs| that are
Rotates the j-th |MO| with the k-th |MO| to give two new |MOs| that are
* $+ = \frac{1}{\sqrt{2}} (|j\rangle + |k\rangle)$
* $- = \frac{1}{\sqrt{2}} (|j\rangle - |k\rangle)$
by convention, the '+' |MO| is in the lowest index (min(j,k))
by convention, the '-' |MO| is in the highest index (max(j,k))
* :math:`+ = \frac{1}{\sqrt{2}} (|j\rangle + |k\rangle)`
Needs:
* :math:`- = \frac{1}{\sqrt{2}} (|j\rangle - |k\rangle)`
by convention, the '+' |MO| is in the lowest index (min(j,k)) by convention, the '-' |MO| is in the highest index (max(j,k))
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
.. c:function:: mo_as_eigvectors_of_mo_matrix:
.. c:function:: mo_as_eigvectors_of_mo_matrix
File : :file:`mo_basis/utils.irp.f`
.. code:: text
.. code:: fortran
subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output)
File: :file:`utils.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`create_guess`
* :c:func:`damping_scf`
* :c:func:`hcore_guess`
* :c:func:`roothaan_hall_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`lapack_diag`
* :c:func:`write_time`
.. c:function:: mo_as_svd_vectors_of_mo_matrix:
.. c:function:: mo_as_svd_vectors_of_mo_matrix
File : :file:`mo_basis/utils.irp.f`
.. code:: text
.. code:: fortran
subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label)
File: :file:`utils.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`svd`
* :c:func:`write_time`
.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig:
.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig
File : :file:`mo_basis/utils.irp.f`
.. code:: text
.. code:: fortran
subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label)
File: :file:`utils.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`set_natural_mos`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`svd`
* :c:func:`write_time`
.. c:function:: reorder_core_orb:
.. c:function:: reorder_core_orb
.. code:: text
subroutine reorder_core_orb
File: :file:`track_orb.irp.f`
File : :file:`mo_basis/track_orb.irp.f`
routines that takes the current :c:data:`mo_coef` and reorder the core orbitals (see :c:data:`list_core` and :c:data:`n_core_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`core_bitmask`
* :c:data:`mo_num`
* :c:data:`ao_overlap`
* :c:data:`list_core`
* :c:data:`ao_num`
* :c:data:`mo_coef_begin_iteration`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`roothaan_hall_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`dsort`
.. c:function:: save_mos:
.. c:function:: save_mos
File : :file:`mo_basis/utils.irp.f`
.. code:: text
subroutine save_mos
Needs:
File: :file:`utils.irp.f`
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`hcore_guess`
* :c:func:`huckel_guess`
* :c:func:`roothaan_hall_scf`
* :c:func:`save_natural_mos`
* :c:func:`save_ortho_mos`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_mo_basis_ao_md5`
* :c:func:`ezfio_set_mo_basis_mo_coef`
* :c:func:`ezfio_set_mo_basis_mo_label`
* :c:func:`ezfio_set_mo_basis_mo_num`
* :c:func:`ezfio_set_mo_basis_mo_occ`
* :c:func:`system`
.. c:function:: save_mos_truncated:
.. c:function:: save_mos_truncated
File : :file:`mo_basis/utils.irp.f`
.. code:: text
.. code:: fortran
subroutine save_mos_truncated(n)
File: :file:`utils.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`mo_label`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_mo_basis_ao_md5`
* :c:func:`ezfio_set_mo_basis_mo_coef`
* :c:func:`ezfio_set_mo_basis_mo_label`
* :c:func:`ezfio_set_mo_basis_mo_num`
* :c:func:`ezfio_set_mo_basis_mo_occ`
* :c:func:`system`

View File

@ -1,4 +1,4 @@
.. _mo_guess:
.. _module_mo_guess:
.. program:: mo_guess
@ -16,55 +16,104 @@ Guess for |MOs|.
Providers
---------
.. c:var:: ao_ortho_canonical_nucl_elec_integrals
.. code:: text
File : :file:`mo_guess/pot_mo_ortho_canonical_ints.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_canonical_nucl_elec_integrals (mo_num,mo_num)
File: :file:`pot_mo_ortho_canonical_ints.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`mo_num`
.. c:var:: ao_ortho_lowdin_coef
.. code:: text
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
.. code:: fortran
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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
* :c:data:`ao_ortho_lowdin_overlap`
.. c:var:: ao_ortho_lowdin_nucl_elec_integrals
.. code:: text
File : :file:`mo_guess/pot_mo_ortho_lowdin_ints.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_lowdin_nucl_elec_integrals (mo_num,mo_num)
File: :file:`pot_mo_ortho_lowdin_ints.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_num`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`mo_num`
.. c:var:: ao_ortho_lowdin_overlap
.. code:: text
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
.. code:: fortran
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
overlap matrix of the ao_ortho_lowdin
supposed to be the Identity
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`ao_overlap`
@ -72,16 +121,35 @@ Providers
Subroutines / functions
-----------------------
.. c:function:: hcore_guess:
.. c:function:: hcore_guess
.. code:: text
subroutine hcore_guess
File: :file:`h_core_guess_routine.irp.f`
File : :file:`mo_guess/h_core_guess_routine.irp.f`
Produce `H_core` MO orbital
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`save_mos`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_label`

View File

@ -1,4 +1,4 @@
.. _mo_one_e_ints:
.. _module_mo_one_e_ints:
.. program:: mo_one_e_ints
@ -71,231 +71,496 @@ EZFIO parameters
Providers
---------
.. c:var:: mo_dipole_x
.. code:: text
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
double precision, allocatable :: mo_dipole_z (mo_num,mo_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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_dipole_x`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_dipole_y
.. code:: text
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
double precision, allocatable :: mo_dipole_z (mo_num,mo_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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_dipole_x`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_dipole_z
.. code:: text
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
double precision, allocatable :: mo_dipole_z (mo_num,mo_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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_dipole_x`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_integrals_n_e
.. code:: text
File : :file:`mo_one_e_ints/pot_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_integrals_n_e (mo_num,mo_num)
File: :file:`pot_mo_ints.irp.f`
Nucleus-electron interaction on the |MO| basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`read_mo_integrals_e_n`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
* :c:data:`ref_bitmask_energy`
.. c:var:: mo_integrals_n_e_per_atom
.. code:: text
File : :file:`mo_one_e_ints/pot_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_integrals_n_e_per_atom (mo_num,mo_num,nucl_num)
File: :file:`pot_mo_ints.irp.f`
mo_integrals_n_e_per_atom(i,j,k) = :math:`\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle` . where R_k is the coordinate of the k-th nucleus.
mo_integrals_n_e_per_atom(i,j,k) =
:math:`\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle` .
where R_k is the coordinate of the k-th nucleus.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e_per_atom`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`nucl_num`
.. c:var:: mo_kinetic_integrals
.. code:: text
File : :file:`mo_one_e_ints/kin_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_kinetic_integrals (mo_num,mo_num)
File: :file:`kin_mo_ints.irp.f`
Kinetic energy integrals in the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_kinetic_integrals`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`read_mo_integrals_kinetic`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
* :c:data:`ref_bitmask_energy`
.. c:var:: mo_one_e_integrals
.. code:: text
File : :file:`mo_one_e_ints/mo_one_e_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_one_e_integrals (mo_num,mo_num)
File: :file:`mo_one_e_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)
array of the mono electronic hamiltonian on the MOs basis :
sum of the kinetic and nuclear electronic potential (and pseudo potential if needed)
Needs:
.. hlist::
:columns: 3
* :c:data:`do_pseudo`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_num`
* :c:data:`mo_pseudo_integrals`
* :c:data:`read_mo_one_e_integrals`
Needed by:
.. hlist::
:columns: 3
* :c:data:`core_energy`
* :c:data:`core_energy_erf`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`psi_energy_h_core`
* :c:data:`ref_bitmask_energy`
.. c:var:: mo_overlap
.. code:: text
File : :file:`mo_one_e_ints/mo_overlap.irp.f`
.. code:: fortran
double precision, allocatable :: mo_overlap (mo_num,mo_num)
File: :file:`mo_overlap.irp.f`
Provider to check that the MOs are indeed orthonormal.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_pseudo_integrals
.. code:: text
File : :file:`mo_one_e_ints/pot_mo_pseudo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_pseudo_integrals (mo_num,mo_num)
File: :file:`pot_mo_pseudo_ints.irp.f`
Pseudopotential integrals in |MO| basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_pseudo_integrals`
* :c:data:`do_pseudo`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`read_mo_integrals_pseudo`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
.. c:var:: mo_spread_x
.. code:: text
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
double precision, allocatable :: mo_spread_z (mo_num,mo_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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_spread_x`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_spread_y
.. code:: text
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
double precision, allocatable :: mo_spread_z (mo_num,mo_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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_spread_x`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_spread_z
.. code:: text
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
double precision, allocatable :: mo_spread_z (mo_num,mo_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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_spread_x`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: s_mo_coef
.. code:: text
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
double precision, allocatable :: s_mo_coef (ao_num,mo_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.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
Subroutines / functions
-----------------------
.. c:function:: mo_to_ao:
.. c:function:: mo_to_ao
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: text
.. code:: fortran
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
Transform A from the MO basis to the AO basis
$(S.C).A_{mo}.(S.C)^\dagger$
:math:`(S.C).A_{mo}.(S.C)^\dagger`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`s_mo_coef`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: mo_to_ao_no_overlap:
.. c:function:: mo_to_ao_no_overlap
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: text
.. code:: fortran
subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)
File: :file:`ao_to_mo.irp.f`
:math:`C.A_{mo}.C^\dagger`
$C.A_{mo}.C^\dagger$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: orthonormalize_mos:
.. c:function:: orthonormalize_mos
.. code:: text
subroutine orthonormalize_mos
File: :file:`orthonormalize.irp.f`
File : :file:`mo_one_e_ints/orthonormalize.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_overlap`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`save_ortho_mos`
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ortho_lowdin`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_label`

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
.. _mpi:
.. _module_mpi:
.. program:: mpi
@ -15,116 +15,279 @@ Contains all the functions and providers for parallelization with |MPI|.
Providers
---------
.. c:var:: mpi_initialized
.. code:: text
logical :: mpi_initialized
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
logical :: mpi_initialized
File: :file:`mpi.irp.f`
Always true. Initialized MPI
Needed by:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: mpi_master
.. code:: text
logical :: mpi_master
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
logical :: mpi_master
File: :file:`mpi.irp.f`
If true, rank is zero
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_rank`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`cas_bitmask`
* :c:data:`ci_energy`
* :c:data:`core_bitmask`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`element_name`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`generators_bitmask`
* :c:data:`generators_bitmask_restart`
* :c:data:`inact_bitmask`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_occ`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mu_erf`
* :c:data:`n_act_orb`
* :c:data:`n_cas_bitmask`
* :c:data:`n_det`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_generators_bitmask`
* :c:data:`n_generators_bitmask_restart`
* :c:data:`n_int`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nthreads_davidson`
* :c:data:`nthreads_pt2`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`psi_cas`
* :c:data:`psi_coef`
* :c:data:`psi_coef_max`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_size`
* :c:data:`pt2_e0_denominator`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_relative_error`
* :c:data:`qp_max_mem`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
.. c:var:: mpi_rank
.. code:: text
integer :: mpi_rank
integer :: mpi_size
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
integer :: mpi_rank
integer :: mpi_size
File: :file:`mpi.irp.f`
Rank of MPI process and number of MPI processes
Needed by:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
.. c:var:: mpi_size
.. code:: text
integer :: mpi_rank
integer :: mpi_size
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
integer :: mpi_rank
integer :: mpi_size
File: :file:`mpi.irp.f`
Rank of MPI process and number of MPI processes
Needed by:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Subroutines / functions
-----------------------
.. c:function:: broadcast_chunks_double:
.. c:function:: broadcast_chunks_double
File : :file:`mpi/mpi.irp.f_template_97`
.. code:: text
.. code:: fortran
subroutine broadcast_chunks_double(A, LDA)
File: :file:`mpi.irp.f_template_97`
Broadcast with chunks of ~2GB
.. c:function:: broadcast_chunks_integer:
.. c:function:: broadcast_chunks_integer
File : :file:`mpi/mpi.irp.f_template_97`
.. code:: text
.. code:: fortran
subroutine broadcast_chunks_integer(A, LDA)
File: :file:`mpi.irp.f_template_97`
Broadcast with chunks of ~2GB
.. c:function:: broadcast_chunks_integer8:
.. c:function:: broadcast_chunks_integer8
File : :file:`mpi/mpi.irp.f_template_97`
.. code:: text
.. code:: fortran
subroutine broadcast_chunks_integer8(A, LDA)
File: :file:`mpi.irp.f_template_97`
Broadcast with chunks of ~2GB
.. c:function:: mpi_print:
.. c:function:: mpi_print
File : :file:`mpi/mpi.irp.f`
.. code:: text
.. code:: fortran
subroutine mpi_print(string)
File: :file:`mpi.irp.f`
Print string to stdout if the MPI rank is zero.
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_slave_main`

View File

@ -1,4 +1,4 @@
.. _nuclei:
.. _module_nuclei:
.. program:: nuclei
@ -53,118 +53,248 @@ EZFIO parameters
Providers
---------
.. c:var:: center_of_mass
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: center_of_mass (3)
File: :file:`nuclei.irp.f`
Center of mass of the molecule
Needs:
.. hlist::
:columns: 3
* :c:data:`element_name`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: element_mass
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
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)
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
.. c:var:: element_name
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
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)
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
.. c:var:: inertia_tensor
.. code:: text
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor (3,3)
File: :file:`inertia.irp.f`
Inertia tensor
Needs:
.. hlist::
:columns: 3
* :c:data:`center_of_mass`
* :c:data:`element_name`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor_eigenvectors`
.. c:var:: inertia_tensor_eigenvalues
.. code:: text
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
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.
Needs:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: inertia_tensor_eigenvectors
.. code:: text
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
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.
Needs:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: nucl_coord
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_coord (nucl_num,3)
File: :file:`nuclei.irp.f`
Nuclear coordinates in the format (:, {x,y,z})
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
* :c:data:`nucl_charge`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_deriv2_x`
* :c:data:`ao_deriv_1_x`
* :c:data:`ao_dipole_x`
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_integrals_n_e_per_atom`
* :c:data:`ao_overlap`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_pseudo_integrals_local`
* :c:data:`ao_pseudo_integrals_non_local`
* :c:data:`ao_spread_x`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_dist_2`
* :c:data:`nuclear_repulsion`
.. c:var:: nucl_coord_transp
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_coord_transp (3,nucl_num)
File: :file:`nuclei.irp.f`
Transposed array of nucl_coord
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
.. c:var:: nucl_dist
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
@ -172,16 +302,33 @@ Providers
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
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_2
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
@ -189,29 +336,55 @@ Providers
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
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_inv
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num)
File: :file:`nuclei.irp.f`
Inverse of the distance between nucleus I and nucleus J
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_2`
* :c:data:`nucl_num`
.. c:var:: nucl_dist_vec_x
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
@ -219,16 +392,33 @@ Providers
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
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_vec_y
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
@ -236,16 +426,33 @@ Providers
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
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_vec_z
.. code:: text
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
@ -253,99 +460,207 @@ Providers
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
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nuclear_repulsion
.. code:: text
double precision :: nuclear_repulsion
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision :: nuclear_repulsion
File: :file:`nuclei.irp.f`
Nuclear repulsion energy
Needs:
.. hlist::
:columns: 3
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`mpi_master`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_energy`
* :c:data:`core_energy`
* :c:data:`core_energy_erf`
* :c:data:`hf_energy`
* :c:data:`psi_energy_with_nucl_rep`
* :c:data:`pt2_e0_denominator`
* :c:data:`scf_energy`
.. c:var:: slater_bragg_radii
.. code:: text
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
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)
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)
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_radii_per_atom`
* :c:data:`slater_bragg_radii_ua`
.. c:var:: slater_bragg_radii_per_atom
.. code:: text
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num)
File: :file:`atomic_radii.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_charge`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii`
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_type_inter_distance`
.. c:var:: slater_bragg_radii_per_atom_ua
.. code:: text
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num)
File: :file:`atomic_radii.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_charge`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_ua`
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_type_inter_distance_ua`
.. c:var:: slater_bragg_radii_ua
.. code:: text
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_ua (100)
File: :file:`atomic_radii.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_radii`
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_radii_per_atom_ua`
.. c:var:: slater_bragg_type_inter_distance
.. code:: text
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num)
File: :file:`atomic_radii.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_per_atom`
.. c:var:: slater_bragg_type_inter_distance_ua
.. code:: text
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num)
File: :file:`atomic_radii.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_per_atom_ua`

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
.. _pseudo:
.. _module_pseudo:
.. program:: pseudo

View File

@ -1,4 +1,4 @@
.. _psiref_cas:
.. _module_psiref_cas:
.. program:: psiref_cas

View File

@ -1,4 +1,4 @@
.. _psiref_utils:
.. _module_psiref_utils:
.. program:: psiref_utils

View File

@ -1,4 +1,4 @@
.. _scf_utils:
.. _module_scf_utils:
.. program:: scf_utils
@ -107,284 +107,680 @@ EZFIO parameters
Providers
---------
.. c:var:: eigenvalues_fock_matrix_ao
.. code:: text
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
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
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao`
* :c:data:`s_half_inv`
.. c:var:: eigenvectors_fock_matrix_ao
.. code:: text
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
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
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao`
* :c:data:`s_half_inv`
.. c:var:: eigenvectors_fock_matrix_mo
.. code:: text
File : :file:`scf_utils/diagonalize_fock.irp.f`
.. code:: fortran
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_num)
File: :file:`diagonalize_fock.irp.f`
Eigenvector of the Fock matrix in the MO basis obtained with level shift.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`core_bitmask`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_mo`
* :c:data:`frozen_orb_scf`
* :c:data:`level_shift`
* :c:data:`list_act`
* :c:data:`list_core`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_act_orb`
.. c:function:: extrapolate_fock_matrix:
.. c:var:: extrapolate_fock_matrix
.. code:: text
File : :file:`scf_utils/roothaan_hall_scf.irp.f`
.. code:: fortran
subroutine extrapolate_Fock_matrix( &
error_matrix_DIIS,Fock_matrix_DIIS, &
Fock_matrix_AO_,size_Fock_matrix_AO, &
iteration_SCF,dim_DIIS &
)
error_matrix_DIIS,Fock_matrix_DIIS, &
Fock_matrix_AO_,size_Fock_matrix_AO, &
iteration_SCF,dim_DIIS &
)
File: :file:`roothaan_hall_scf.irp.f`
Compute the extrapolated Fock matrix using the DIIS procedure
Needs:
.. hlist::
:columns: 3
* :c:data:`max_dim_diis`
* :c:data:`ao_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`roothaan_hall_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`dsysvx`
.. c:var:: fock_matrix_ao
.. code:: text
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_ao (ao_num,ao_num)
File: :file:`fock_matrix.irp.f`
Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_mo`
* :c:data:`frozen_orb_scf`
* :c:data:`level_shift`
* :c:data:`mo_num`
* :c:data:`s_mo_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvalues_fock_matrix_ao`
* :c:data:`fps_spf_matrix_ao`
.. c:var:: fock_matrix_diag_mo
.. code:: text
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo (mo_num,mo_num)
double precision, allocatable :: fock_matrix_diag_mo (mo_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 |
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
F = 1/2 (Fa + Fb)
Needs:
K = Fb - Fa
.. hlist::
:columns: 3
* :c:data:`core_bitmask`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`frozen_orb_scf`
* :c:data:`list_act`
* :c:data:`list_core`
* :c:data:`mo_num`
* :c:data:`n_act_orb`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
.. c:var:: fock_matrix_mo
.. code:: text
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo (mo_num,mo_num)
double precision, allocatable :: fock_matrix_diag_mo (mo_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 |
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
F = 1/2 (Fa + Fb)
Needs:
K = Fb - Fa
.. hlist::
:columns: 3
* :c:data:`core_bitmask`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`frozen_orb_scf`
* :c:data:`list_act`
* :c:data:`list_core`
* :c:data:`mo_num`
* :c:data:`n_act_orb`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
.. c:var:: fock_matrix_mo_alpha
.. code:: text
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo_alpha (mo_num,mo_num)
File: :file:`fock_matrix.irp.f`
Fock matrix on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo`
.. c:var:: fock_matrix_mo_beta
.. code:: text
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo_beta (mo_num,mo_num)
File: :file:`fock_matrix.irp.f`
Fock matrix on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo`
.. c:var:: fps_spf_matrix_ao
.. code:: text
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num)
File: :file:`diis.irp.f`
Commutator FPS - SPF
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`fock_matrix_ao`
* :c:data:`scf_density_matrix_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fps_spf_matrix_mo`
.. c:var:: fps_spf_matrix_mo
.. code:: text
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: fps_spf_matrix_mo (mo_num,mo_num)
File: :file:`diis.irp.f`
Commutator FPS - SPF in MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: scf_density_matrix_ao
.. code:: text
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao (ao_num,ao_num)
File: :file:`scf_density_matrix_ao.irp.f`
S^{-1}.P.S^{-1} where P = C.C^t
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fps_spf_matrix_ao`
.. c:var:: scf_density_matrix_ao_alpha
.. code:: text
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao_alpha (ao_num,ao_num)
File: :file:`scf_density_matrix_ao.irp.f`
S^{-1}.P_alpha.S^{-1}
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`mo_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`hf_energy`
* :c:data:`scf_density_matrix_ao`
* :c:data:`scf_energy`
.. c:var:: scf_density_matrix_ao_beta
.. code:: text
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao_beta (ao_num,ao_num)
File: :file:`scf_density_matrix_ao.irp.f`
S^{-1}.P_beta.S^{-1}
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`hf_energy`
* :c:data:`scf_density_matrix_ao`
* :c:data:`scf_energy`
.. c:var:: scf_energy
.. code:: text
double precision :: scf_energy
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision :: scf_energy
File: :file:`fock_matrix.irp.f`
Hartree-Fock energy
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`extra_e_contrib_density`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: threshold_diis_nonzero
.. code:: text
double precision :: threshold_diis_nonzero
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision :: threshold_diis_nonzero
File: :file:`diis.irp.f`
If threshold_DIIS is zero, choose sqrt(thresh_scf)
Needs:
.. hlist::
:columns: 3
* :c:data:`thresh_scf`
* :c:data:`threshold_diis`
Subroutines / functions
-----------------------
.. c:function:: damping_scf:
.. c:function:: damping_scf
File : :file:`scf_utils/damping_scf.irp.f`
.. code:: text
subroutine damping_SCF
Needs:
File: :file:`damping_scf.irp.f`
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`scf_energy`
* :c:data:`scf_density_matrix_ao_beta`
* :c:data:`fock_matrix_mo`
* :c:data:`ao_num`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`fock_matrix_ao`
* :c:data:`mo_label`
* :c:data:`n_it_scf_max`
* :c:data:`thresh_scf`
* :c:data:`frozen_orb_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_hartree_fock_energy`
* :c:func:`initialize_mo_coef_begin_iteration`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`reorder_core_orb`
* :c:func:`save_mos`
* :c:func:`write_double`
* :c:func:`write_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
* :c:data:`mo_coef`
.. c:function:: huckel_guess:
.. c:function:: huckel_guess
.. code:: text
subroutine huckel_guess
File: :file:`huckel.irp.f`
File : :file:`scf_utils/huckel.irp.f`
Build the MOs using the extended Huckel model
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_one_e_integrals`
* :c:data:`mo_coef`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`ao_overlap`
* :c:data:`ao_num`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
Called by:
.. hlist::
:columns: 3
* :c:func:`create_guess`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_mos`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
.. c:function:: roothaan_hall_scf:
.. c:function:: roothaan_hall_scf
.. code:: text
subroutine Roothaan_Hall_SCF
File: :file:`roothaan_hall_scf.irp.f`
File : :file:`scf_utils/roothaan_hall_scf.irp.f`
Roothaan-Hall algorithm for SCF Hartree-Fock calculation
Needs:
.. hlist::
:columns: 3
* :c:data:`max_dim_diis`
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`scf_energy`
* :c:data:`mo_num`
* :c:data:`thresh_scf`
* :c:data:`scf_algorithm`
* :c:data:`fock_matrix_mo`
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao`
* :c:data:`mo_label`
* :c:data:`n_it_scf_max`
* :c:data:`threshold_diis_nonzero`
* :c:data:`frozen_orb_scf`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fps_spf_matrix_ao`
Called by:
.. hlist::
:columns: 3
* :c:func:`run`
Calls:
.. hlist::
:columns: 3
* :c:func:`extrapolate_fock_matrix`
* :c:func:`initialize_mo_coef_begin_iteration`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`reorder_core_orb`
* :c:func:`save_mos`
* :c:func:`write_double`
* :c:func:`write_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`

View File

@ -1,4 +1,4 @@
.. _selectors_cassd:
.. _module_selectors_cassd:
.. program:: selectors_cassd

View File

@ -1,4 +1,4 @@
.. _selectors_full:
.. _module_selectors_full:
.. program:: selectors_full
@ -17,56 +17,137 @@ threshold_selectors` flag.
Providers
---------
.. c:var:: n_det_selectors
.. code:: text
integer :: n_det_selectors
File : :file:`selectors_full/selectors.irp.f`
File: :file:`selectors.irp.f`
.. code:: fortran
For Single reference wave functions, the number of selectors is 1 : the Hartree-Fock determinant
integer :: n_det_selectors
For Single reference wave functions, the number of selectors is 1 : the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`n_det_generators`
* :c:data:`output_wall_time_0`
* :c:data:`psi_det_sorted`
* :c:data:`threshold_selectors`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`exc_degree_per_selectors`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
* :c:data:`pt2_f`
.. c:var:: psi_selectors
.. code:: text
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
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.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_sorted`
* :c:data:`psi_selectors_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`exc_degree_per_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: psi_selectors_coef
.. code:: text
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
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.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_sorted`
* :c:data:`psi_selectors_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`exc_degree_per_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: threshold_selectors
.. code:: text
double precision :: threshold_selectors
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
double precision :: threshold_selectors
File: :file:`selectors.irp.f`
Thresholds on selectors (fraction of the square of the norm)
Needs:
.. hlist::
:columns: 3
* :c:data:`threshold_generators`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`

View File

@ -1,4 +1,4 @@
.. _selectors_utils:
.. _module_selectors_utils:
.. program:: selectors_utils
@ -16,366 +16,634 @@ 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
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
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
double precision :: e_corr_double_only
double precision :: e_corr_second_order
File: :file:`e_corr_selectors.irp.f`
Correlation energy per determinant with respect to the Hartree-Fock determinant for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` 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
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. 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
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
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
double precision :: e_corr_double_only
double precision :: e_corr_second_order
File: :file:`e_corr_selectors.irp.f`
Correlation energy per determinant with respect to the Hartree-Fock determinant for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` 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
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: double_index_selectors
.. code:: text
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. 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
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
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
double precision :: e_corr_double_only
double precision :: e_corr_second_order
File: :file:`e_corr_selectors.irp.f`
Correlation energy per determinant with respect to the Hartree-Fock determinant for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` 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
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. 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
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
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
double precision :: e_corr_double_only
double precision :: e_corr_second_order
File: :file:`e_corr_selectors.irp.f`
Correlation energy per determinant with respect to the Hartree-Fock determinant for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` 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
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. 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
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
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
double precision :: e_corr_double_only
double precision :: e_corr_second_order
File: :file:`e_corr_selectors.irp.f`
Correlation energy per determinant with respect to the Hartree-Fock determinant for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` 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
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: exc_degree_per_selectors
.. code:: text
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. 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
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
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
double precision :: e_corr_double_only
double precision :: e_corr_second_order
File: :file:`e_corr_selectors.irp.f`
Correlation energy per determinant with respect to the Hartree-Fock determinant for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` 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
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. 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
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
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
double precision :: e_corr_double_only
double precision :: e_corr_second_order
File: :file:`e_corr_selectors.irp.f`
Correlation energy per determinant with respect to the Hartree-Fock determinant for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` 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
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. 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
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
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
double precision :: e_corr_double_only
double precision :: e_corr_second_order
File: :file:`e_corr_selectors.irp.f`
Correlation energy per determinant with respect to the Hartree-Fock determinant for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` 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
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: n_double_selectors
.. code:: text
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_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
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
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: psi_selectors_coef_transp
.. code:: text
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size)
File: :file:`selectors.irp.f`
Transposed psi_selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_states`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
.. c:var:: psi_selectors_diag_h_mat
.. code:: text
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
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
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_num`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: psi_selectors_size
.. code:: text
integer :: psi_selectors_size
File : :file:`selectors_utils/selectors.irp.f`
File: :file:`selectors.irp.f`
.. code:: fortran
integer :: psi_selectors_size
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
Subroutines / functions
-----------------------
.. c:function:: zmq_get_n_det_generators:
.. c:function:: zmq_get_n_det_generators
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: text
.. code:: fortran
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
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_get_n_det_selectors:
.. c:function:: zmq_get_n_det_selectors
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: text
.. code:: fortran
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
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_put_n_det_generators:
.. c:function:: zmq_put_n_det_generators
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: text
.. code:: fortran
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
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`zmq_state`
.. c:function:: zmq_put_n_det_selectors:
.. c:function:: zmq_put_n_det_selectors
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: text
.. code:: fortran
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
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`zmq_state`

View File

@ -1,4 +1,4 @@
.. _single_ref_method:
.. _module_single_ref_method:
.. program:: single_ref_method

View File

@ -1,4 +1,4 @@
.. _tools:
.. _module_tools:
.. program:: tools
@ -29,100 +29,203 @@ Programs
Subroutines / functions
-----------------------
.. c:function:: routine:
.. c:function:: routine
File : :file:`write_integrals_erf.irp.f`
.. code:: text
subroutine routine
Called by:
File: :file:`write_integrals_erf.irp.f`
.. hlist::
:columns: 3
* :c:func:`diagonalize_h`
* :c:func:`print_wf`
* :c:func:`write_integrals_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_erf_two_e_integrals_ao`
* :c:func:`save_erf_two_e_integrals_mo`
.. c:function:: routine_e_conv:
.. c:function:: routine_e_conv
.. code:: text
subroutine routine_e_conv
File: :file:`print_e_conv.irp.f`
File : :file:`print_e_conv.irp.f`
routine called by :c:func:`print_e_conv`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`ezfio_filename`
Called by:
.. hlist::
:columns: 3
* :c:func:`print_e_conv`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_get_iterations_energy_iterations`
* :c:func:`ezfio_get_iterations_n_det_iterations`
* :c:func:`ezfio_get_iterations_n_iter`
* :c:func:`ezfio_get_iterations_pt2_iterations`
.. c:function:: routine_save_one_e_dm:
.. c:function:: routine_save_one_e_dm
.. code:: text
subroutine routine_save_one_e_dm
File: :file:`save_one_e_dm.irp.f`
File : :file:`save_one_e_dm.irp.f`
routine called by :c:func:`save_one_e_dm`
Needs:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha`
Called by:
.. hlist::
:columns: 3
* :c:func:`save_one_e_dm`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_alpha_mo`
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo`
.. c:function:: write_ao_basis:
.. c:function:: write_ao_basis
File : :file:`molden.irp.f`
.. code:: text
.. code:: fortran
subroutine write_Ao_basis(i_unit_output)
File: :file:`molden.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_list_shell_aos`
* :c:data:`ao_coef`
* :c:data:`ao_num`
* :c:data:`ao_prim_num`
* :c:data:`nucl_charge`
* :c:data:`ao_l`
* :c:data:`ao_expo`
* :c:data:`element_name`
* :c:data:`nucl_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`molden`
.. c:function:: write_geometry:
.. c:function:: write_geometry
File : :file:`molden.irp.f`
.. code:: text
.. code:: fortran
subroutine write_geometry(i_unit_output)
File: :file:`molden.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_charge`
* :c:data:`element_name`
* :c:data:`nucl_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`molden`
.. c:function:: write_intro_gamess:
.. c:function:: write_intro_gamess
File : :file:`molden.irp.f`
.. code:: text
.. code:: fortran
subroutine write_intro_gamess(i_unit_output)
File: :file:`molden.irp.f`
Called by:
.. hlist::
:columns: 3
* :c:func:`molden`
.. c:function:: write_mo_basis:
.. c:function:: write_mo_basis
File : :file:`molden.irp.f`
.. code:: text
.. code:: fortran
subroutine write_Mo_basis(i_unit_output)
File: :file:`molden.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`ao_l_char_space`
* :c:data:`nucl_charge`
* :c:data:`ao_nucl`
* :c:data:`element_name`
Called by:
.. hlist::
:columns: 3
* :c:func:`molden`

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -590,6 +590,7 @@ Index of Providers
* :c:data:`psi_non_cas_sorted_bit`
* :c:data:`psi_occ_pattern`
* :c:data:`psi_occ_pattern_hii`
* :c:data:`psi_s2`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_coef`
* :c:data:`psi_selectors_coef_transp`
@ -1092,7 +1093,6 @@ Index of Subroutines/Functions
* :c:func:`iset_order_big`
* :c:func:`isort`
* :c:func:`knowles_function`
* :c:func:`ks_cf`
* :c:func:`ks_scf`
* :c:func:`lapack_diag`
* :c:func:`lapack_diagd`
@ -1299,7 +1299,6 @@ Index of Subroutines/Functions
* :c:func:`tamiser`
* :c:func:`task_done_to_taskserver`
* :c:func:`tasks_done_to_taskserver`
* :c:func:`test_det`
* :c:func:`testteethbuilding`
* :c:func:`total_memory`
* :c:func:`two_e_integrals_index`

View File

@ -1,4 +1,4 @@
.. _.cis.:
.. _cis:
.. program:: cis
@ -7,38 +7,72 @@ cis
===
Configuration Interaction with Single excitations.
This program takes a reference Slater determinant of ROHF-like occupancy, and performs all single excitations on top of it. Disregarding spatial symmetry, it computes the `n_states` lowest eigenstates of that CI matrix. (see :option:`determinants n_states`)
This program takes a reference Slater determinant of ROHF-like
occupancy, and performs all single excitations on top of it.
Disregarding spatial symmetry, it computes the `n_states` lowest
eigenstates of that CI matrix. (see :option:`determinants n_states`)
This program can be useful in many cases:
Ground state calculation
To be sure to have the lowest |SCF| solution, perform an :ref:`.scf.` (see the :ref:`hartree_fock` module), then a :ref:`.cis.`, save the natural orbitals (see :ref:`.save_natorb.`) and re-run an :ref:`.scf.` optimization from this |MO| guess.
To be sure to have the lowest |SCF| solution, perform an :ref:`.scf.`
(see the :ref:`hartree_fock` module), then a :ref:`.cis.`, save
the natural orbitals (see :ref:`.save_natorb.`) and re-run an
:ref:`.scf.` optimization from this |MO| guess.
Excited states calculations
The lowest excited states are much likely to be dominated by single-excitations. Therefore, running a :ref:`.cis.` will save the `n_states` lowest states within the |CIS| space in the |EZFIO| directory, which can afterwards be used as guess wave functions for a further multi-state |FCI| calculation if :option:`determinants read_wf` is set to |true| before running the :ref:`.fci.` executable.
If :option:`determinants s2_eig` is set to |true|, the |CIS| will only retain states having the expected |S^2| value (see :option:`determinants expected_s2`). Otherwise, the |CIS| will take the lowest :option:`determinants n_states`, whatever multiplicity they are.
The lowest excited states are much likely to be dominated by
single-excitations. Therefore, running a :ref:`.cis.` will save
the `n_states` lowest states within the |CIS| space in the |EZFIO|
directory, which can afterwards be used as guess wave functions for
a further multi-state |FCI| calculation if :option:`determinants
read_wf` is set to |true| before running the :ref:`.fci.`
executable.
If :option:`determinants s2_eig` is set to |true|, the |CIS|
will only retain states having the expected |S^2| value (see
:option:`determinants expected_s2`). Otherwise, the |CIS| will take
the lowest :option:`determinants n_states`, whatever multiplicity
they are.
Note
To discard some orbitals, use the :ref:`qp_set_mo_class` command to specify:
* *core* orbitals which will be always doubly occupied
* *act* orbitals where an electron can be either excited from or to
* *del* orbitals which will be never occupied
To discard some orbitals, use the :ref:`qp_set_mo_class`
command to specify:
* *core* orbitals which will be always doubly occupied
* *act* orbitals where an electron can be either excited from or to
* *del* orbitals which will be never occupied
Needs:
File: :file:`cis/cis.irp.f`
.. hlist::
:columns: 3
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`run`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`
* :c:data:`read_wf`

View File

@ -1,4 +1,4 @@
.. _.cisd.:
.. _cisd:
.. program:: cisd
@ -7,32 +7,67 @@ cisd
====
Configuration Interaction with Single and Double excitations.
This program takes a reference Slater determinant of ROHF-like occupancy,
and performs all single and double excitations on top of it, disregarding spatial symmetry and compute the "n_states" lowest eigenstates of that CI matrix (see :option:`determinants n_states`).
and performs all single and double excitations on top of it, disregarding
spatial symmetry and compute the "n_states" lowest eigenstates of that CI
matrix (see :option:`determinants n_states`).
This program can be useful in many cases:
* GROUND STATE CALCULATION: if even after a :c:func:`cis` calculation, natural orbitals (see :c:func:`save_natorb`) and then :c:func:`scf` optimization, you are not sure to have the lowest scf solution, do the same strategy with the :c:func:`cisd` executable instead of the :c:func:`cis` exectuable to generate the natural orbitals as a guess for the :c:func:`scf`.
* GROUND STATE CALCULATION: if even after a :c:func:`cis` calculation, natural
orbitals (see :c:func:`save_natorb`) and then :c:func:`scf` optimization, you are not sure to have the lowest scf
solution,
do the same strategy with the :c:func:`cisd` executable instead of the :c:func:`cis` exectuable to generate the natural
orbitals as a guess for the :c:func:`scf`.
* EXCITED STATES CALCULATIONS: the lowest excited states are much likely to
be dominanted by single- or double-excitations.
Therefore, running a :c:func:`cisd` will save the "n_states" lowest states within
the CISD space
in the EZFIO folder, which can afterward be used as guess wave functions
for a further multi-state fci calculation if you specify "read_wf" = True
before running the fci executable (see :option:`determinants read_wf`).
Also, if you specify "s2_eig" = True, the cisd will only retain states
having the good value :math:`S^2` value
(see :option:`determinants expected_s2` and :option:`determinants s2_eig`).
If "s2_eig" = False, it will take the lowest n_states, whatever
multiplicity they are.
Note: if you would like to discard some orbitals, use
:ref:`qp_set_mo_class` to specify:
* "core" orbitals which will be always doubly occupied
* "act" orbitals where an electron can be either excited from or to
* "del" orbitals which will be never occupied
Needs:
* EXCITED STATES CALCULATIONS: the lowest excited states are much likely to be dominanted by single- or double-excitations. Therefore, running a :c:func:`cisd` will save the "n_states" lowest states within the CISD space in the EZFIO folder, which can afterward be used as guess wave functions for a further multi-state fci calculation if you specify "read_wf" = True before running the fci executable (see :option:`determinants read_wf`). Also, if you specify "s2_eig" = True, the cisd will only retain states having the good value :math:`S^2` value (see :option:`determinants expected_s2` and :option:`determinants s2_eig`). If "s2_eig" = False, it will take the lowest n_states, whatever multiplicity they are.
.. hlist::
:columns: 3
* :c:data:`read_wf`
Note: if you would like to discard some orbitals, use :ref:`qp_set_mo_class` to specify:
* "core" orbitals which will be always doubly occupied
* "act" orbitals where an electron can be either excited from or to
* "del" orbitals which will be never occupied
Calls:
File: :file:`cisd/cisd.irp.f`
.. hlist::
:columns: 3
* :c:func:`run`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`
* :c:data:`read_wf`

View File

@ -1,4 +1,4 @@
.. _.diagonalize_h.:
.. _diagonalize_h:
.. program:: diagonalize_h
@ -7,10 +7,26 @@ diagonalize_h
=============
Program that extracts the :option:`determinants n_states` lowest states of the Hamiltonian within the set of Slater determinants stored in the EZFIO folder.
If :option:`determinants s2_eig` = True, it will retain only states
which corresponds to the desired value of :option:`determinants expected_s2`.
File: :file:`tools/diagonalize_h.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`routine`
Touches:
.. hlist::
:columns: 3
* :c:data:`read_wf`

View File

@ -1,4 +1,4 @@
.. _.fci.:
.. _fci:
.. program:: fci
@ -7,44 +7,76 @@ fci
===
Selected Full Configuration Interaction with stochastic selection and PT2 .
This program performs a CIPSI-like selected CI using a stochastic scheme for both
the selection of the important Slater determinants and the computation of the PT2 correction.
This CIPSI-like algorithm will be performed for the "n_states" lowest states of the variational space (see :option:`determinants n_det_max`)
The fci program will stop when reaching at least one the two following conditions:
* number of Slater determinant > "n_det_max" (see :option:`determinants n_det_max`)
* |PT2| < "pt2_max" (see :option:`perturbation pt2_max`)
This program performs a |CIPSI|-like selected |CI| using a
stochastic scheme for both the selection of the important Slater
determinants and the computation of the |PT2| correction. This
|CIPSI|-like algorithm will be performed for the lowest states of
the variational space (see :option:`determinants n_states`). The
|FCI| program will stop when reaching at least one the two following
conditions:
* number of Slater determinants > :option:`determinants n_det_max`
* |PT2| < :option:`perturbation pt2_max`
The following other options can be of interest:
If "read_wf" = False, it starts with a ROHF-like Slater determinant as a guess wave function.
If "read_wf" = True , it starts with the wave function(s) stored in the EZFIO folder as guess wave function(s).
(see :option:`determinants read_wf`)
If "s2_eig" = True, it will systematically add all necessary Slater determinants in order
to have a pure spin wave function with an :math:`S^2` value corresponding to "expected_s2".
(see :option:`determinants s2_eig` and :option:`determinants expected_s2`)
:option:`determinants read_wf`
When set to |false|, the program starts with a ROHF-like Slater
determinant as a guess wave function. When set to |true|, the
program starts with the wave function(s) stored in the |EZFIO|
directory as guess wave function(s).
:option:`determinants s2_eig`
When set to |true|, the selection will systematically add all the
necessary Slater determinants in order to have a pure spin wave
function with an |S^2| value corresponding to
:option:`determinants expected_s2`.
For excited states calculations, it is recommended to start with
:ref:`.cis.` or :ref:`.cisd.` guess wave functions, eventually in
a restricted set of |MOs|, and to set :option:`determinants s2_eig`
to |true|.
Needs:
.. hlist::
:columns: 3
For excited states calculations, it is recommended to start with a :c:func:`cis` or :c:func:`cisd` guess wave functions
for the "n_states", and to set "s2_eig" = True.
* :c:data:`is_zmq_slave`
* :c:data:`do_pt2`
File: :file:`fci/fci.irp.f`
Calls:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_slave_cipsi`
* :c:func:`run_stochastic_cipsi`
Touches:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
* :c:data:`ci_electronic_energy`
* :c:data:`ci_electronic_energy`
* :c:data:`ci_energy`
* :c:data:`n_det`
* :c:data:`psi_occ_pattern`
* :c:data:`c0_weight`
* :c:data:`distributed_davidson`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_energy`
* :c:data:`psi_occ_pattern`
* :c:data:`psi_energy`
* :c:data:`pt2_stoch_istate`
* :c:data:`read_wf`
* :c:data:`state_average_weight`
* :c:data:`threshold_generators`

View File

@ -1,4 +1,4 @@
.. _.fcidump.:
.. _fcidump:
.. program:: fcidump
@ -7,16 +7,30 @@ fcidump
=======
Produce a regular FCIDUMP file from the |MOs| stored in the |EZFIO| folder.
To specify an active space, the class of the mos have to set in the |EZFIO| folder (see :ref:`qp_set_mo_class`).
The fcidump program supports 3 types of MO_class :
* the "core" orbitals which are always doubly occupied in the calculation
* the "del" orbitals that are never occupied in the calculation
* the "act" orbitals that will be occupied by a varying number of electrons
File: :file:`tools/fcidump.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_beta_num`
* :c:data:`list_act`
* :c:data:`ezfio_filename`
* :c:data:`core_fock_operator`
* :c:data:`core_bitmask`
* :c:data:`elec_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`elec_alpha_num`
* :c:data:`mo_one_e_integrals`
* :c:data:`n_act_orb`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_integrals_map`
* :c:data:`core_energy`

View File

@ -1,4 +1,4 @@
.. _.four_idx_transform.:
.. _four_idx_transform:
.. program:: four_idx_transform
@ -7,10 +7,20 @@ four_idx_transform
==================
4-index transformation of two-electron integrals from |AO| to |MO| integrals.
This program will compute the two-electron integrals on the |MO| basis and store it into the |EZFIO| folder.
This program can be useful if the AO --> MO transformation is an expensive step by itself.
File: :file:`tools/four_idx_transform.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`io_mo_two_e_integrals`
* :c:data:`mo_two_e_integrals_in_map`
Touches:
.. hlist::
:columns: 3
* :c:data:`io_mo_two_e_integrals`

View File

@ -1,4 +1,4 @@
.. _.ks_scf.:
.. _ks_scf:
.. program:: ks_scf
@ -7,6 +7,41 @@ ks_scf
======
Produce `Kohn_Sham` MO orbital output: mo_basis.mo_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef
optional: mo_basis.mo_coef
File: :file:`kohn_sham/ks_scf.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`io_mo_one_e_integrals`
* :c:data:`mu_erf_dft`
* :c:data:`density_for_dft`
* :c:data:`io_ao_one_e_integrals`
Calls:
.. hlist::
:columns: 3
* :c:func:`check_coherence_functional`
* :c:func:`create_guess`
* :c:func:`orthonormalize_mos`
* :c:func:`run`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`density_for_dft`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`level_shift`
* :c:data:`mo_coef`
* :c:data:`mo_label`

View File

@ -1,4 +1,4 @@
.. _.molden.:
.. _molden:
.. program:: molden
@ -7,6 +7,18 @@ molden
======
Produce a Molden file
File: :file:`tools/molden.irp.f`
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
Calls:
.. hlist::
:columns: 3
* :c:func:`write_ao_basis`
* :c:func:`write_geometry`
* :c:func:`write_intro_gamess`
* :c:func:`write_mo_basis`

View File

@ -1,4 +1,4 @@
.. _.print_e_conv.:
.. _print_e_conv:
.. program:: print_e_conv
@ -7,12 +7,21 @@ print_e_conv
============
program that prints in a human readable format the convergence of the CIPSI algorithm.
for all istate, this program produces
* a file "EZFIO.istate.conv" containing the variational and var+PT2 energies as a function of N_det
* for istate > 1, a file EZFIO.istate.delta_e.conv containing the energy difference (both var and var+PT2) with the ground state as a function of N_det
File: :file:`tools/print_e_conv.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
Calls:
.. hlist::
:columns: 3
* :c:func:`routine_e_conv`

View File

@ -1,4 +1,4 @@
.. _.print_wf.:
.. _print_wf:
.. program:: print_wf
@ -7,12 +7,28 @@ print_wf
========
Print the ground state wave function stored in the |EZFIO| folder in the intermediate normalization.
It also prints a lot of information regarding the excitation operators from the reference determinant
and a first-order perturbative analysis of the wave function.
If the wave function strongly deviates from the first-order analysis, something funny is going on :)
File: :file:`tools/print_wf.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`routine`
Touches:
.. hlist::
:columns: 3
* :c:data:`read_wf`

View File

@ -1,4 +1,4 @@
.. _.pt2.:
.. _pt2:
.. program:: pt2
@ -7,12 +7,44 @@ pt2
===
Second order perturbative correction to the wave function contained in the EZFIO directory.
This programs runs the stochastic PT2 correction on all "n_states" wave function stored in the EZFIO folder (see :option:`determinant n_states`).
The option for the PT2 correction are the "pt2_relative_error" which is the relative stochastic
error on the PT2 to reach before stopping the stochastic sampling. (see :option:`perturbation pt2_relative_error`)
File: :file:`fci/pt2.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`is_zmq_slave`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`psi_energy`
* :c:data:`threshold_generators`
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`run`
* :c:func:`run_slave_cipsi`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`distributed_davidson`
* :c:data:`level_shift`
* :c:data:`mo_coef`
* :c:data:`psi_energy`
* :c:data:`psi_energy`
* :c:data:`pt2_stoch_istate`
* :c:data:`read_wf`
* :c:data:`state_average_weight`
* :c:data:`threshold_generators`

View File

@ -1,4 +1,4 @@
.. _.rs_ks_scf.:
.. _rs_ks_scf:
.. program:: rs_ks_scf
@ -7,6 +7,42 @@ rs_ks_scf
=========
Produce `Range_separated_Kohn_Sham` MO orbital output: mo_basis.mo_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef
optional: mo_basis.mo_coef
File: :file:`kohn_sham_rs/rs_ks_scf.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`io_mo_one_e_integrals`
* :c:data:`mu_erf_dft`
* :c:data:`density_for_dft`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`check_coherence_functional`
* :c:func:`create_guess`
* :c:func:`orthonormalize_mos`
* :c:func:`run`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`density_for_dft`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`level_shift`
* :c:data:`mo_coef`
* :c:data:`mo_label`

View File

@ -1,4 +1,4 @@
.. _.save_natorb.:
.. _save_natorb:
.. program:: save_natorb
@ -7,14 +7,37 @@ save_natorb
===========
Save natural MOs into the EZFIO
This program reads the wave function stored in the EZFIO folder,
extracts the corresponding natural orbitals and set them as the new MOs
If this is a multi-state calculation, the density matrix that produces the natural orbitals
is obtained from a state-averaged of the density matrices of each state with the corresponding state_average_weight (see the doc of state_average_weight).
File: :file:`tools/save_natorb.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_e_n`
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_kinetic`
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_pseudo`
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_one_e_integrals`
* :c:func:`ezfio_set_mo_two_e_ints_io_mo_two_e_integrals`
* :c:func:`save_natural_mos`
* :c:func:`save_ref_determinant`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`read_wf`

View File

@ -1,4 +1,4 @@
.. _.save_one_e_dm.:
.. _save_one_e_dm:
.. program:: save_one_e_dm
@ -7,10 +7,27 @@ save_one_e_dm
=============
programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities.
Then, the global variable data_one_e_dm_alpha_mo and data_one_e_dm_beta_mo will automatically read this density in a further calculation.
This can be used to perform damping on the density in RS-DFT calculation (see the density_for_dft module).
File: :file:`tools/save_one_e_dm.irp.f`
Needs:
.. hlist::
:columns: 3
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`routine_save_one_e_dm`
Touches:
.. hlist::
:columns: 3
* :c:data:`read_wf`

View File

@ -1,4 +1,4 @@
.. _.save_ortho_mos.:
.. _save_ortho_mos:
.. program:: save_ortho_mos
@ -7,12 +7,23 @@ save_ortho_mos
==============
Save orthonormalized MOs in the EZFIO.
This program reads the current MOs, computes the corresponding overlap matrix in the MO basis
and perform a Lowdin orthonormalization : :math:`MO_{new} = S^{-1/2} MO_{guess}`.
Thanks to the Lowdin orthonormalization, the new MOs are the most similar to the guess MOs.
File: :file:`tools/save_ortho_mos.irp.f`
Calls:
.. hlist::
:columns: 3
* :c:func:`orthonormalize_mos`
* :c:func:`save_mos`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_label`

View File

@ -1,4 +1,4 @@
.. _.scf.:
.. _scf:
.. program:: scf
@ -7,12 +7,30 @@ scf
===
Produce `Hartree_Fock` |MOs|
output: mo_basis.mo_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: :file:`hartree_fock/scf.irp.f`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_guess`
* :c:func:`orthonormalize_mos`
* :c:func:`run`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`
* :c:data:`mo_label`

View File

@ -1,4 +1,4 @@
.. _.write_integrals_erf.:
.. _write_integrals_erf:
.. program:: write_integrals_erf
@ -7,6 +7,24 @@ write_integrals_erf
===================
Saves the two-electron integrals with the :math:`erf(\mu r_{12})/r_{12}` oprerator into the EZFIO folder
File: :file:`tools/write_integrals_erf.irp.f`
.. hlist::
:columns: 3
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_ao_two_e_integrals`
Calls:
.. hlist::
:columns: 3
* :c:func:`routine`
Touches:
.. hlist::
:columns: 3
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_mo_two_e_integrals`

View File

@ -1,7 +1,7 @@
# Configuration of IRPF90 package
# Set the path of IRPF90 here:
export IRPF90_PATH=${QP_ROOT}/external/irpf90-v1.7.4
export IRPF90_PATH=${QP_ROOT}/external/irpf90-v1.7.5
export PATH=${PATH}:${IRPF90_PATH}/bin
export IRPF90=${IRPF90_PATH}/bin/irpf90

View File

@ -55,6 +55,9 @@ EOF
function qp()
{
case $1 in
-h|--help)
_qp_usage ;;
"set_file")
if [[ -d ${2} ]] ; then
ezfio "$@"
@ -101,7 +104,12 @@ function qp()
;;
*)
eval "qp_$@ -- ${EZFIO_FILE}"
which "qp_$1" &> /dev/null
if [[ $? -eq 0 ]] ; then
eval "qp_$@ ${EZFIO_FILE}"
else
_qp_usage
fi
;;
esac

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "CIS" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "CIS" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
cis \- | Quantum Package >
.
@ -32,37 +32,65 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
..
.INDENT 0.0
.INDENT 3.5
Configuration Interaction with Single excitations.
.sp
This program takes a reference Slater determinant of ROHF\-like occupancy, and performs all single excitations on top of it. Disregarding spatial symmetry, it computes the \fIn_states\fP lowest eigenstates of that CI matrix. (see \fBdeterminants n_states\fP)
.sp
This program can be useful in many cases:
.sp
Ground state calculation
.sp
To be sure to have the lowest SCF solution, perform an \&.scf. (see the hartree_fock module), then a \fI\%cis\fP, save the natural orbitals (see \&.save_natorb.) and re\-run an \&.scf. optimization from this MO guess.
.sp
Excited states calculations
.sp
The lowest excited states are much likely to be dominated by single\-excitations. Therefore, running a \fI\%cis\fP will save the \fIn_states\fP lowest states within the CIS space in the \fI\%EZFIO\fP directory, which can afterwards be used as guess wave functions for a further multi\-state FCI calculation if \fBdeterminants read_wf\fP is set to \fBtrue\fP before running the \&.fci. executable.
.sp
If \fBdeterminants s2_eig\fP is set to \fBtrue\fP, the CIS will only retain states having the expected \ewidehat{S^2} value (see \fBdeterminants expected_s2\fP). Otherwise, the CIS will take the lowest \fBdeterminants n_states\fP, whatever multiplicity they are.
.sp
Note
.sp
To discard some orbitals, use the qp_set_mo_class command to specify:
File : \fBh_apply.irp.f_shell_8\fP
.INDENT 0.0
.IP \(bu 2
\fIcore\fP orbitals which will be always doubly occupied
.IP \(bu 2
\fIact\fP orbitals where an electron can be either excited from or to
.IP \(bu 2
\fIdel\fP orbitals which will be never occupied
.UNINDENT
.INDENT 3.5
.sp
.nf
.ft C
subroutine H_apply_cis_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBcis/cis.irp.f\fP
Generate all single excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
.sp
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBn_int\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBelec_alpha_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBh_apply_cis()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.sp
Calls:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBbitstring_to_list_ab()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBfill_h_apply_buffer_no_selection()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "CISD" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "CISD" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
cisd \- | Quantum Package >
.
@ -30,35 +30,67 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
Configuration Interaction with Single and Double excitations.
.INDENT 0.0
.INDENT 3.5
This program takes a reference Slater determinant of ROHF\-like occupancy,
.sp
and performs all single and double excitations on top of it, disregarding spatial symmetry and compute the “n_states” lowest eigenstates of that CI matrix (see \fBdeterminants n_states\fP).
.sp
This program can be useful in many cases:
File : \fBh_apply.irp.f_shell_8\fP
.INDENT 0.0
.IP \(bu 2
GROUND STATE CALCULATION: if even after a \fBcis()\fP calculation, natural orbitals (see \fBsave_natorb()\fP) and then \fBscf()\fP optimization, you are not sure to have the lowest scf solution, do the same strategy with the \fBcisd()\fP executable instead of the \fBcis()\fP\ exectuable to generate the natural orbitals as a guess for the \fBscf()\fP\&.
.IP \(bu 2
EXCITED STATES CALCULATIONS: the lowest excited states are much likely to be dominanted by single\- or double\-excitations. Therefore, running a \fBcisd()\fP will save the “n_states” lowest states within the CISD space in the EZFIO folder, which can afterward be used as guess wave functions for a further multi\-state fci calculation if you specify “read_wf” = True before running the fci executable (see \fBdeterminants read_wf\fP). Also, if you specify “s2_eig” = True, the cisd will only retain states having the good value S^2 value (see \fBdeterminants expected_s2\fP and \fBdeterminants s2_eig\fP). If “s2_eig” = False, it will take the lowest n_states, whatever multiplicity they are.
.INDENT 3.5
.sp
.nf
.ft C
subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Note: if you would like to discard some orbitals, use qp_set_mo_class to specify:
Generate all single excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
.sp
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
“core” orbitals which will be always doubly occupied
.IP \(bu 2
“act” orbitals where an electron can be either excited from or to
.IP \(bu 2
“del” orbitals which will be never occupied
\fBn_int\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBelec_alpha_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.UNINDENT
.UNINDENT
.sp
File: \fBcisd/cisd.irp.f\fP
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBh_apply_cisd()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.sp
Calls:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBbitstring_to_list_ab()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBfill_h_apply_buffer_no_selection()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "CONFIGURE" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "CONFIGURE" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
configure \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "DIAGONALIZE_H" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "DIAGONALIZE_H" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
diagonalize_h \- | Quantum Package >
.
@ -30,17 +30,57 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
Program that extracts the \fBdeterminants n_states\fP lowest states of the Hamiltonian within the set of Slater determinants stored in the EZFIO folder.
.INDENT 0.0
.INDENT 3.5
If \fBdeterminants s2_eig\fP = True, it will retain only states
File : \fBmolden.irp.f\fP
.INDENT 0.0
.INDENT 3.5
.sp
which corresponds to the desired value of \fBdeterminants expected_s2\fP\&.
.nf
.ft C
subroutine write_Mo_basis(i_unit_output)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBtools/diagonalize_h.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBao_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_l_char_space\fP
.IP \(bu 2
\fBnucl_charge\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_nucl\fP
.IP \(bu 2
\fBelement_name\fP
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmolden()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "EXCITED_STATES" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "EXCITED_STATES" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
excited_states \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "FCI" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "FCI" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
fci \- | Quantum Package >
.
@ -30,45 +30,63 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
Selected Full Configuration Interaction with stochastic selection and PT2 .
.INDENT 0.0
.INDENT 3.5
This program performs a CIPSI\-like selected CI using a stochastic scheme for both
.sp
the selection of the important Slater determinants and the computation of the PT2 correction.
.sp
This CIPSI\-like algorithm will be performed for the “n_states” lowest states of the variational space (see \fBdeterminants n_det_max\fP)
.sp
The fci program will stop when reaching at least one the two following conditions:
File : \fBfci/save_energy.irp.f\fP
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
subroutine save_energy(E,pt2)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Saves the energy in \fI\%EZFIO\fP\&.
.sp
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
number of Slater determinant > “n_det_max” (see \fBdeterminants n_det_max\fP)
\fBn_states\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
PT2 < “pt2_max” (see \fBperturbation pt2_max\fP)
\fBrun_cipsi()\fP
.UNINDENT
.sp
The following other options can be of interest:
.sp
If “read_wf” = False, it starts with a ROHF\-like Slater determinant as a guess wave function.
.sp
If “read_wf” = True , it starts with the wave function(s) stored in the EZFIO folder as guess wave function(s).
.sp
(see \fBdeterminants read_wf\fP)
.sp
If “s2_eig” = True, it will systematically add all necessary Slater determinants in order
.sp
to have a pure spin wave function with an S^2 value corresponding to “expected_s2”.
.sp
(see \fBdeterminants s2_eig\fP and \fBdeterminants expected_s2\fP)
.sp
For excited states calculations, it is recommended to start with a \fBcis()\fP or \fBcisd()\fP guess wave functions
.sp
for the “n_states”, and to set “s2_eig” = True.
.INDENT 2.0
.IP \(bu 2
\fBrun_stochastic_cipsi()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.sp
File: \fBfci/fci.irp.f\fP
Calls:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBezfio_set_fci_energy()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBezfio_set_fci_energy_pt2()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "FCIDUMP" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "FCIDUMP" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
fcidump \- | Quantum Package >
.
@ -30,25 +30,57 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
Produce a regular FCIDUMP file from the MOs stored in the \fI\%EZFIO\fP folder.
.INDENT 0.0
.INDENT 3.5
To specify an active space, the class of the mos have to set in the \fI\%EZFIO\fP folder (see qp_set_mo_class).
.sp
The fcidump program supports 3 types of MO_class :
File : \fBmolden.irp.f\fP
.INDENT 0.0
.IP \(bu 2
the “core” orbitals which are always doubly occupied in the calculation
.IP \(bu 2
the “del” orbitals that are never occupied in the calculation
.IP \(bu 2
the “act” orbitals that will be occupied by a varying number of electrons
.UNINDENT
.INDENT 3.5
.sp
.nf
.ft C
subroutine write_Mo_basis(i_unit_output)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBtools/fcidump.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBao_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_l_char_space\fP
.IP \(bu 2
\fBnucl_charge\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_nucl\fP
.IP \(bu 2
\fBelement_name\fP
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmolden()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "FOUR_IDX_TRANSFORM" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "FOUR_IDX_TRANSFORM" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
four_idx_transform \- | Quantum Package >
.
@ -30,17 +30,57 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
4\-index transformation of two\-electron integrals from AO to MO integrals.
.INDENT 0.0
.INDENT 3.5
This program will compute the two\-electron integrals on the MO basis and store it into the \fI\%EZFIO\fP folder.
File : \fBmolden.irp.f\fP
.INDENT 0.0
.INDENT 3.5
.sp
This program can be useful if the AO > MO transformation is an expensive step by itself.
.nf
.ft C
subroutine write_Mo_basis(i_unit_output)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBtools/four_idx_transform.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBao_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_l_char_space\fP
.IP \(bu 2
\fBnucl_charge\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_nucl\fP
.IP \(bu 2
\fBelement_name\fP
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmolden()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "INTERFACES" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "INTERFACES" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
interfaces \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "KS_SCF" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "KS_SCF" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
ks_scf \- | Quantum Package >
.
@ -30,10 +30,84 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.INDENT 0.0
.INDENT 3.5
File : \fBks_scf.irp.f\fP
.sp
Produce \fIKohn_Sham\fP MO orbital output: mo_basis.mo_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef
Produce \fIKohn_Sham\fP MO orbital
output: mo_basis.mo_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ
output: kohn_sham.energy
optional: mo_basis.mo_coef
.sp
File: \fBkohn_sham/ks_scf.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBio_mo_one_e_integrals\fP
.IP \(bu 2
\fBmu_erf_dft\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBdensity_for_dft\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBio_ao_one_e_integrals\fP
.UNINDENT
.UNINDENT
.sp
Calls:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBcheck_coherence_functional()\fP
.IP \(bu 2
\fBcreate_guess()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBorthonormalize_mos()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBrun()\fP
.UNINDENT
.UNINDENT
.sp
Touches:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBfock_matrix_ao_alpha\fP
.IP \(bu 2
\fBfock_matrix_ao_alpha\fP
.IP \(bu 2
\fBfock_matrix_ao_alpha\fP
.IP \(bu 2
\fBfock_matrix_ao_alpha\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBdensity_for_dft\fP
.IP \(bu 2
\fBio_ao_one_e_integrals\fP
.IP \(bu 2
\fBio_mo_one_e_integrals\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBlevel_shift\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBmo_label\fP
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "MOLDEN" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "MOLDEN" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
molden \- | Quantum Package >
.
@ -30,10 +30,57 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.INDENT 0.0
.INDENT 3.5
File : \fBmolden.irp.f\fP
.INDENT 0.0
.INDENT 3.5
.sp
Produce a Molden file
.nf
.ft C
subroutine write_Mo_basis(i_unit_output)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBtools/molden.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBao_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_l_char_space\fP
.IP \(bu 2
\fBnucl_charge\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_nucl\fP
.IP \(bu 2
\fBelement_name\fP
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmolden()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "NATURAL_ORBITALS" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "NATURAL_ORBITALS" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
natural_orbitals \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PLUGINS" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "PLUGINS" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
plugins \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PRINT_E_CONV" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "PRINT_E_CONV" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
print_e_conv \- | Quantum Package >
.
@ -30,21 +30,57 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
program that prints in a human readable format the convergence of the CIPSI algorithm.
.INDENT 0.0
.INDENT 3.5
for all istate, this program produces
File : \fBmolden.irp.f\fP
.INDENT 0.0
.IP \(bu 2
a file “EZFIO.istate.conv” containing the variational and var+PT2 energies as a function of N_det
.IP \(bu 2
for istate > 1, a file EZFIO.istate.delta_e.conv containing the energy difference (both var and var+PT2) with the ground state as a function of N_det
.UNINDENT
.INDENT 3.5
.sp
.nf
.ft C
subroutine write_Mo_basis(i_unit_output)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBtools/print_e_conv.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBao_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_l_char_space\fP
.IP \(bu 2
\fBnucl_charge\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_nucl\fP
.IP \(bu 2
\fBelement_name\fP
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmolden()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PRINT_WF" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "PRINT_WF" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
print_wf \- | Quantum Package >
.
@ -30,19 +30,57 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
Print the ground state wave function stored in the \fI\%EZFIO\fP folder in the intermediate normalization.
.INDENT 0.0
.INDENT 3.5
It also prints a lot of information regarding the excitation operators from the reference determinant
File : \fBmolden.irp.f\fP
.INDENT 0.0
.INDENT 3.5
.sp
and a first\-order perturbative analysis of the wave function.
.sp
If the wave function strongly deviates from the first\-order analysis, something funny is going on :)
.nf
.ft C
subroutine write_Mo_basis(i_unit_output)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBtools/print_wf.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBao_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_l_char_space\fP
.IP \(bu 2
\fBnucl_charge\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_nucl\fP
.IP \(bu 2
\fBelement_name\fP
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmolden()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PRINTING" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "PRINTING" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
printing \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PT2" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "PT2" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
pt2 \- | Quantum Package >
.
@ -30,19 +30,63 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
Second order perturbative correction to the wave function contained in the EZFIO directory.
.INDENT 0.0
.INDENT 3.5
This programs runs the stochastic PT2 correction on all “n_states” wave function stored in the EZFIO folder (see \fBdeterminant n_states\fP).
File : \fBfci/save_energy.irp.f\fP
.INDENT 0.0
.INDENT 3.5
.sp
The option for the PT2 correction are the “pt2_relative_error” which is the relative stochastic
.sp
error on the PT2 to reach before stopping the stochastic sampling. (see \fBperturbation pt2_relative_error\fP)
.nf
.ft C
subroutine save_energy(E,pt2)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBfci/pt2.irp.f\fP
Saves the energy in \fI\%EZFIO\fP\&.
.sp
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBn_states\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBrun_cipsi()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBrun_stochastic_cipsi()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.sp
Calls:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBezfio_set_fci_energy()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBezfio_set_fci_energy_pt2()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_CONVERT_OUTPUT_TO_EZFIO" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "QP_CONVERT_OUTPUT_TO_EZFIO" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
qp_convert_output_to_ezfio \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_EDIT" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "QP_EDIT" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
qp_edit \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_EXPORT_AS_TGZ" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "QP_EXPORT_AS_TGZ" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
qp_export_as_tgz \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_PLUGINS" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "QP_PLUGINS" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
qp_plugins \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_RUN" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "QP_RUN" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
qp_run \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_SET_FROZEN_CORE" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "QP_SET_FROZEN_CORE" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
qp_set_frozen_core \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_SET_MO_CLASS" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "QP_SET_MO_CLASS" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
qp_set_mo_class \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_UPDATE" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "QP_UPDATE" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
qp_update \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QPSH" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "QPSH" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
qpsh \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "RS_KS_SCF" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "RS_KS_SCF" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
rs_ks_scf \- | Quantum Package >
.
@ -30,10 +30,86 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.INDENT 0.0
.INDENT 3.5
File : \fBrs_ks_scf.irp.f\fP
.sp
Produce \fIRange_separated_Kohn_Sham\fP MO orbital output: mo_basis.mo_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef
Produce \fIRange_separated_Kohn_Sham\fP MO orbital
output: mo_basis.mo_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ
output: kohn_sham.energy
optional: mo_basis.mo_coef
.sp
File: \fBkohn_sham_rs/rs_ks_scf.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBio_mo_one_e_integrals\fP
.IP \(bu 2
\fBmu_erf_dft\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBdensity_for_dft\fP
.IP \(bu 2
\fBio_ao_one_e_integrals\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBread_wf\fP
.UNINDENT
.UNINDENT
.sp
Calls:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBcheck_coherence_functional()\fP
.IP \(bu 2
\fBcreate_guess()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBorthonormalize_mos()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBrun()\fP
.UNINDENT
.UNINDENT
.sp
Touches:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBfock_matrix_ao_alpha\fP
.IP \(bu 2
\fBfock_matrix_ao_alpha\fP
.IP \(bu 2
\fBfock_matrix_ao_alpha\fP
.IP \(bu 2
\fBfock_matrix_ao_alpha\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBdensity_for_dft\fP
.IP \(bu 2
\fBio_ao_one_e_integrals\fP
.IP \(bu 2
\fBio_mo_one_e_integrals\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBlevel_shift\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBmo_label\fP
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "SAVE_NATORB" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "SAVE_NATORB" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
save_natorb \- | Quantum Package >
.
@ -30,21 +30,57 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
Save natural MOs into the EZFIO
.INDENT 0.0
.INDENT 3.5
This program reads the wave function stored in the EZFIO folder,
File : \fBmolden.irp.f\fP
.INDENT 0.0
.INDENT 3.5
.sp
extracts the corresponding natural orbitals and set them as the new MOs
.sp
If this is a multi\-state calculation, the density matrix that produces the natural orbitals
.sp
is obtained from a state\-averaged of the density matrices of each state with the corresponding state_average_weight (see the doc of state_average_weight).
.nf
.ft C
subroutine write_Mo_basis(i_unit_output)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBtools/save_natorb.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBao_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_l_char_space\fP
.IP \(bu 2
\fBnucl_charge\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_nucl\fP
.IP \(bu 2
\fBelement_name\fP
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmolden()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "SAVE_ONE_E_DM" "1" "Jan 16, 2019" "2.0" "Quantum Package"
.TH "SAVE_ONE_E_DM" "1" "Jan 17, 2019" "2.0" "Quantum Package"
.SH NAME
save_one_e_dm \- | Quantum Package >
.
@ -30,17 +30,57 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities.
.INDENT 0.0
.INDENT 3.5
Then, the global variable data_one_e_dm_alpha_mo and data_one_e_dm_beta_mo will automatically read this density in a further calculation.
File : \fBmolden.irp.f\fP
.INDENT 0.0
.INDENT 3.5
.sp
This can be used to perform damping on the density in RS\-DFT calculation (see the density_for_dft module).
.nf
.ft C
subroutine write_Mo_basis(i_unit_output)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
File: \fBtools/save_one_e_dm.irp.f\fP
Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmo_num\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBao_num\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_l_char_space\fP
.IP \(bu 2
\fBnucl_charge\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_nucl\fP
.IP \(bu 2
\fBelement_name\fP
.UNINDENT
.UNINDENT
.sp
Called by:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBmolden()\fP
.UNINDENT
.INDENT 2.0
.UNINDENT
.INDENT 2.0
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT

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