9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-12-21 11:03:29 +01:00

Warnings in documentation

This commit is contained in:
Anthony Scemama 2019-01-29 15:40:00 +01:00
parent 7fc9d2540f
commit f4bff28cd1
123 changed files with 350 additions and 42610 deletions

View File

@ -12,7 +12,6 @@
.. _Irene: http://www-hpc.cea.fr/en/complexe/tgcc-Irene.htm .. _Irene: http://www-hpc.cea.fr/en/complexe/tgcc-Irene.htm
.. _IRPF90: http://irpf90.ups-tlse.fr .. _IRPF90: http://irpf90.ups-tlse.fr
.. _LAPACK: http://www.netlib.org/lapack/ .. _LAPACK: http://www.netlib.org/lapack/
.. _Molden: http://cheminf.cmbi.ru.nl/molden/
.. _NECI: https://github.com/ghb24/NECI_STABLE .. _NECI: https://github.com/ghb24/NECI_STABLE
.. _Ninja: https://ninja-build.org/ .. _Ninja: https://ninja-build.org/
.. _NWChem: http://www.nwchem-sw.org/ .. _NWChem: http://www.nwchem-sw.org/
@ -53,12 +52,15 @@
.. |CIPSI| replace:: :abbr:`CIPSI (Configuration Interaction using a Perturbative Selection)` .. |CIPSI| replace:: :abbr:`CIPSI (Configuration Interaction using a Perturbative Selection)`
.. |CI| replace:: :abbr:`CI (Configuration Interaction)` .. |CI| replace:: :abbr:`CI (Configuration Interaction)`
.. |CISD| replace:: :abbr:`CISD (Configuration Interaction with Single and Double Excitations)` .. |CISD| replace:: :abbr:`CISD (Configuration Interaction with Single and Double Excitations)`
.. |CASSCF| replace:: |CAS| - |SCF|
.. |CIS| replace:: :abbr:`CIS (Configuration Interaction with Single Excitations)` .. |CIS| replace:: :abbr:`CIS (Configuration Interaction with Single Excitations)`
.. |DFT| replace:: :abbr:`DFT (Density Functional Theory)`
.. |DDCI| replace:: :abbr:`DDCI (Difference Dedicated Configuration Interaction)` .. |DDCI| replace:: :abbr:`DDCI (Difference Dedicated Configuration Interaction)`
.. |DFT| replace:: :abbr:`DFT (Density Functional Theory)`
.. |DIIS| replace:: :abbr:`DIIS (Direct Inversion of the Iterative Subspace)` .. |DIIS| replace:: :abbr:`DIIS (Direct Inversion of the Iterative Subspace)`
.. |FCIQMC| replace:: |FCI| - |QMC|
.. |FCI| replace:: :abbr:`FCI (Full Configuration Interaction)` .. |FCI| replace:: :abbr:`FCI (Full Configuration Interaction)`
.. |HF| replace:: :abbr:`HF (Hartree-Fock)` .. |HF| replace:: :abbr:`HF (Hartree-Fock)`
.. |KS-DFT| replace:: :abbr:`KS-DFT (Kohn-Sham Density Functional Theory)`
.. |MO| replace:: :abbr:`MO (Molecular Orbital)` .. |MO| replace:: :abbr:`MO (Molecular Orbital)`
.. |MOs| replace:: :abbr:`MOs (Molecular Orbitals)` .. |MOs| replace:: :abbr:`MOs (Molecular Orbitals)`
.. |MP2| replace:: :abbr:`MP2 (Moller-Plesset second order perturbative correction)` .. |MP2| replace:: :abbr:`MP2 (Moller-Plesset second order perturbative correction)`
@ -67,15 +69,13 @@
.. |MRPT| replace:: :abbr:`MRPT (Multi-Reference Perturbation Theory)` .. |MRPT| replace:: :abbr:`MRPT (Multi-Reference Perturbation Theory)`
.. |PT2| replace:: :abbr:`PT2 (Second order perturbative correction)` .. |PT2| replace:: :abbr:`PT2 (Second order perturbative correction)`
.. |QMC| replace:: :abbr:`QMC (Quantum Monte Carlo)` .. |QMC| replace:: :abbr:`QMC (Quantum Monte Carlo)`
.. |ROHF| replace:: :abbr:`ROHF (Restricted Open-Shell Hartree-Fock)`
.. |RSDFT| replace:: :abbr:`RSDFT (Range Separated Density Functional Theory)`
.. |RSH| replace:: :abbr:`RSH (Range Separated Hybrids)`
.. |rst| replace:: :abbr:`RST (ReStructured Text)` .. |rst| replace:: :abbr:`RST (ReStructured Text)`
.. |SCF| replace:: :abbr:`SCF (Self Consistent Field)` .. |SCF| replace:: :abbr:`SCF (Self Consistent Field)`
.. |RSH| replace:: :abbr:`RSH (Range Separated Hybrids)`
.. |RSDFT| replace:: :abbr:`RSDFT (Range Separated Density Functional Theory)`
.. |KS-DFT| replace:: :abbr:`KS-DFT (Kohn-Sham Density Functional Theory)`
.. |sCI| replace:: :abbr:`sCI (Selected-CI)` .. |sCI| replace:: :abbr:`sCI (Selected-CI)`
.. |WFT| replace:: :abbr:`WFT (Wave Function Theory)` .. |WFT| replace:: :abbr:`WFT (Wave Function Theory)`
.. |CASSCF| replace:: |CAS| - |SCF|
.. |FCIQMC| replace:: |FCI| - |QMC|
.. |kalpha| replace:: :math:`|\alpha \rangle` .. |kalpha| replace:: :math:`|\alpha \rangle`
.. |H| replace:: :math:`\hat H` .. |H| replace:: :math:`\hat H`

View File

@ -171,7 +171,7 @@ for f in os.listdir("users_guide"):
for f in os.listdir("programs"): for f in os.listdir("programs"):
name = f.split('.')[0] name = f.split('.')[0]
if name not in []: if name not in [""]:
filename = os.path.join("programs",name) filename = os.path.join("programs",name)
man_pages.append( (filename, name, qpdoc, [author], 1) ) man_pages.append( (filename, name, qpdoc, [author], 1) )

View File

@ -55,8 +55,6 @@ Simple Algorithm
.. |SetDI| replace:: `\{|D_I\rangle\}^{(n)}` .. |SetDI| replace:: `\{|D_I\rangle\}^{(n)}`
.. |Psi_n| replace:: `|\Psi^{(n)}\rangle` .. |Psi_n| replace:: `|\Psi^{(n)}\rangle`
.. |H| replace:: `\hat H`
.. |kalpha| replace:: `|\alpha\rangle`
.. |kalpha_star| replace:: `\{ |\alpha \rangle \}_\star ^{(n)}` .. |kalpha_star| replace:: `\{ |\alpha \rangle \}_\star ^{(n)}`
.. |ealpha| replace:: `e_\alpha` .. |ealpha| replace:: `e_\alpha`
.. |EPT| replace:: `E_\text{PT2}` .. |EPT| replace:: `E_\text{PT2}`

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,901 +0,0 @@
.. _module_ao_two_e_erf_ints:
.. program:: ao_two_e_erf_ints
.. default-role:: option
======================
ao_two_e_erf_ints
======================
Here, all two-electron integrals (:math:`erf(\mu r_{12})/r_{12}`) are computed.
As they have 4 indices and many are zero, they are stored in a map, as defined
in :file:`utils/map_module.f90`.
The main parameter of this module is :option:`ao_two_e_erf_ints mu_erf` which is the range-separation parameter.
To fetch an |AO| integral, use the
`get_ao_two_e_integral_erf(i,j,k,l,ao_integrals_erf_map)` function.
The conventions are:
* For |AO| integrals : (ij|kl) = (11|22) = <ik|jl> = <12|12>
EZFIO parameters
----------------
.. option:: io_ao_two_e_integrals_erf
Read/Write |AO| integrals with the long range interaction from/to disk [ Write | Read | None ]
Default: None
.. option:: mu_erf
cutting of the interaction in the range separated model
Default: 0.5
Providers
---------
.. c:var:: ao_integrals_erf_cache
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)
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
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
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
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
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
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
type(map_type) :: ao_integrals_erf_map
|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
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)
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
File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f`
.. code:: fortran
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:
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)
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:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
double precision function ao_two_e_integral_erf(i,j,k,l)
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:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
double precision function ao_two_e_integral_schwartz_accel_erf(i,j,k,l)
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:
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_collector(zmq_socket_pull)
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:
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_slave(thread,iproc)
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:
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_slave_inproc(i)
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:
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_slave_tcp(i)
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:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine clear_ao_erf_map
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:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
subroutine compute_ao_integrals_erf_jl(j,l,n_integrals,buffer_i,buffer_value)
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:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
subroutine compute_ao_two_e_integrals_erf(j,k,l,sze,buffer_value)
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:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine dump_ao_integrals_erf(filename)
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:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. 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)
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:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
function get_ao_erf_map_size()
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:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
double precision function get_ao_two_e_integral_erf(i,j,k,l,map) result(result)
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:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine get_ao_two_e_integrals_erf(j,k,l,sze,out_val)
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:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine get_ao_two_e_integrals_erf_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int)
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:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values)
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:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. 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)
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:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
integer function load_ao_integrals_erf(filename)
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:
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
.. code:: fortran
subroutine save_erf_two_e_integrals_ao
Needs:
.. 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:
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
.. code:: fortran
subroutine save_erf_two_e_ints_ao_into_ints_ao
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,52 +0,0 @@
.. _module_aux_quantities:
.. program:: aux_quantities
.. default-role:: option
==============
aux_quantities
==============
This module contains some global variables (such as densities and energies)
which are stored in the EZFIO folder in a different place than determinants.
This is used in practice to store density matrices which can be obtained from
any methods, as long as they are stored in the same MO basis which is used for
the calculations. In |RSDFT| calculations, this can be done to perform damping
on the density in order to speed up convergence.
The main providers of that module are:
* `data_one_e_dm_alpha_mo` and `data_one_e_dm_beta_mo` which are the
one-body alpha and beta densities which are necessary read from the EZFIO
folder.
Thanks to these providers you can use any density matrix that does not
necessary corresponds to that of the current wave function.
EZFIO parameters
----------------
.. option:: data_energy_var
Variational energy computed with the wave function
.. option:: data_energy_proj
Projected energy computed with the wave function
.. option:: data_one_e_dm_alpha_mo
Alpha one body density matrix on the |MO| basis computed with the wave function
.. option:: data_one_e_dm_beta_mo
Beta one body density matrix on the |MO| basis computed with the wave function

View File

@ -1,833 +0,0 @@
.. _module_becke_numerical_grid:
.. program:: becke_numerical_grid
.. default-role:: option
====================
becke_numerical_grid
====================
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 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`.
The main providers of that module are:
* `n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 170 | 194 | 266 | 302 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details.
* `n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary.
* `final_grid_points` which are the (x,y,z) coordinates of the grid points.
* `final_weight_at_r_vector` which are the weights at each grid point
For a simple example of how to use the grid, see :file:`example.irp.f`.
The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/).
See next section for explanations and citation policies.
.. code-block:: text
This subroutine is part of a set of subroutines that generate
Lebedev grids [1-6] for integration on a sphere. The original
C-code [1] was kindly provided by Dr. Dmitri N. Laikov and
translated into fortran by Dr. Christoph van Wuellen.
This subroutine was translated using a C to fortran77 conversion
tool written by Dr. Christoph van Wuellen.
Users of this code are asked to include reference [1] in their
publications, and in the user- and programmers-manuals
describing their codes.
This code was distributed through CCL (http://www.ccl.net/).
[1] V.I. Lebedev, and D.N. Laikov
"A quadrature formula for the sphere of the 131st
algebraic order of accuracy"
Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481.
[2] V.I. Lebedev
"A quadrature formula for the sphere of 59th algebraic
order of accuracy"
Russian Acad. Sci. Dokl. Math., Vol. 50, 1995, pp. 283-286.
[3] V.I. Lebedev, and A.L. Skorokhodov
"Quadrature formulas of orders 41, 47, and 53 for the sphere"
Russian Acad. Sci. Dokl. Math., Vol. 45, 1992, pp. 587-592.
[4] V.I. Lebedev
"Spherical quadrature formulas exact to orders 25-29"
Siberian Mathematical Journal, Vol. 18, 1977, pp. 99-107.
[5] V.I. Lebedev
"Quadratures on a sphere"
Computational Mathematics and Mathematical Physics, Vol. 16,
1976, pp. 10-24.
[6] V.I. Lebedev
"Values of the nodes and weights of ninth to seventeenth
order Gauss-Markov quadrature formulae invariant under the
octahedron group with inversion"
Computational Mathematics and Mathematical Physics, Vol. 15,
1975, pp. 44-51.
EZFIO parameters
----------------
.. option:: grid_type_sgn
Type of grid used for the Becke's numerical grid. Can be, by increasing accuracy: [ 0 | 1 | 2 | 3 ]
Default: 2
Providers
---------
.. c:var:: alpha_knowles
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision, allocatable :: alpha_knowles (100)
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
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)
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
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
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
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)
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
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)
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:data:`n_points_final_grid`
.. c:var:: final_weight_at_r_vector
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)
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
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)
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:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: grid_points_radial
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
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
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)
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
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)
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
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: m_knowles
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
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
integer :: n_points_final_grid
Number of points which are non zero
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :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
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_grid_per_atom
Number of grid points per atom
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
.. c:var:: n_points_integration_angular
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_radial_grid
integer :: n_points_integration_angular
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
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_radial_grid
integer :: n_points_integration_angular
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
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)
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.
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
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)
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:
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: fortran
double precision function cell_function_becke(r,atom_number)
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:
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision function derivative_knowles_function(alpha,m,x)
Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points
.. c:function:: example_becke_numerical_grid:
File : :file:`becke_numerical_grid/example.irp.f`
.. code:: fortran
subroutine example_becke_numerical_grid
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:
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: fortran
double precision function f_function_becke(x)
.. c:function:: knowles_function:
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision function knowles_function(alpha,m,x)
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:
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: fortran
double precision function step_function_becke(x)
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,275 +0,0 @@
.. _module_cis:
.. program:: cis
.. default-role:: option
===
cis
===
This module contains a CIS program.
The user point of view
----------------------
The :command:`cis` program performs the CI of the ROHF-like + all single excitations on top of it.
This program can be very useful to :
* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization.
* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program.
The main keywords/options to be used are:
* :option:`determinants n_states` : number of states to consider for the |CIS| calculation
* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2`
* :option:`determinants expected_s2` : desired value of :math:`S^2`
The programmer point of view
----------------------------
This module have been built by setting the following rules:
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated singly excited determinants are included in the wave function (no perturbative
selection)
These rules are set in the ``H_apply.irp.f`` file.
EZFIO parameters
----------------
.. option:: energy
Variational |CIS| energy
Programs
--------
* :ref:`cis`
Subroutines / functions
-----------------------
.. c:function:: h_apply_cis:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cis()
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:
File : :file:`h_apply.irp.f_shell_8`
.. 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 )
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:
File : :file:`h_apply.irp.f_shell_8`
.. 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 )
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:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cis_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
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:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cis_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
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,273 +0,0 @@
.. _module_cisd:
.. program:: cisd
.. default-role:: option
====
cisd
====
This module contains a CI of single and double excitations.
The user point of view
----------------------
The :command:`cisd` program performs the CI of the ROHF-like + all single and double excitations on top of it.
This program can be very useful to :
* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization.
* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program.
The main keywords/options to be used are:
* :option:`determinants n_states` : number of states to consider for the |cisd| calculation
* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2`
* :option:`determinants expected_s2` : desired value of :math:`S^2`
The programmer point of view
----------------------------
This module have been built by setting the following rules:
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated determinants are included in the wave function (no perturbative
selection)
These rules are set in the ``H_apply.irp.f`` file.
EZFIO parameters
----------------
.. option:: energy
Variational |CISD| energy
Programs
--------
* :ref:`cisd`
Subroutines / functions
-----------------------
.. c:function:: h_apply_cisd:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd()
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:
File : :file:`h_apply.irp.f_shell_8`
.. 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 )
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:
File : :file:`h_apply.irp.f_shell_8`
.. 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 )
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:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
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:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
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,13 +0,0 @@
.. _module_davidson_dressed:
.. program:: davidson_dressed
.. default-role:: option
================
davidson_dressed
================
Davidson with single-column dressing.

View File

@ -1,75 +0,0 @@
.. _module_davidson_undressed:
.. program:: davidson_undressed
.. default-role:: option
==================
davidson_undressed
==================
Module for main files Davidson's algorithm with no dressing.
Providers
---------
.. c:var:: dressing_column_h
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)
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
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)
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,306 +0,0 @@
.. _module_density_for_dft:
.. program:: density_for_dft
.. default-role:: option
===============
density_for_dft
===============
This module defines the *provider* of the density used for the DFT related calculations.
This definition is done through the keyword :option:`density_for_dft density_for_dft`.
The density can be:
* WFT : the density is computed with a potentially multi determinant wave function (see variables `psi_det` and `psi_det`)# input_density : the density is set to a density previously stored in the |EZFIO| folder (see ``aux_quantities``)
* damping_rs_dft : the density is damped between the input_density and the WFT density, with a damping factor of :option:`density_for_dft damping_for_rs_dft`
EZFIO parameters
----------------
.. option:: density_for_dft
Type of density used for DFT calculation. If set to WFT , it uses the density of the wave function stored in (psi_det,psi_coef). If set to input_density it uses the one-body dm stored in aux_quantities/ . If set to damping_rs_dft it uses the damped density between WFT and input_density. In the ks_scf and rs_ks_scf programs, it is set to WFT.
Default: WFT
.. option:: damping_for_rs_dft
damping factor for the density used in RSFT.
Default: 0.5
Providers
---------
.. c:var:: one_body_dm_mo_alpha_one_det
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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,68 +0,0 @@
.. _module_dft_keywords:
.. program:: dft_keywords
.. default-role:: option
============
dft_keywords
============
This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as:
* :option:`dft_keywords exchange_functional`
* :option:`dft_keywords correlation_functional`
* :option:`dft_keywords HF_exchange` : only relevent for the :c:func:`rs_ks_scf` program
The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_ints mu_erf` keyword.
The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword.
EZFIO parameters
----------------
.. option:: exchange_functional
name of the exchange functional
Default: short_range_LDA
.. option:: correlation_functional
name of the correlation functional
Default: short_range_LDA
.. option:: HF_exchange
Percentage of HF exchange in the DFT model
Default: 0.
Providers
---------
.. c:var:: dft_type
File : :file:`dft_keywords/keywords.irp.f`
.. code:: fortran
character*(32) :: dft_type
defines the type of DFT applied: LDA, GGA etc ...
Needs:
.. hlist::
:columns: 3
* :c:data:`correlation_functional`
* :c:data:`exchange_functional`

View File

@ -1,876 +0,0 @@
.. _module_dft_utils_in_r:
.. program:: dft_utils_in_r
.. default-role:: option
==============
dft_utils_in_r
==============
This module contains most of the fundamental quantities (AOs, MOs or density derivatives) evaluated in real-space representation that are needed for the various DFT modules.
As these quantities might be used and re-used, the values at each point of the grid are stored (see ``becke_numerical_grid`` for more information on the grid).
The main providers for this module are:
* `aos_in_r_array`: values of the |AO| basis on the grid point.
* `mos_in_r_array`: values of the |MO| basis on the grid point.
* `one_e_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points.
Providers
---------
.. c:var:: aos_grad_in_r_array
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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:
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. 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)
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:
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
subroutine dm_dft_alpha_beta_and_all_aos_at_r(r,dm_a,dm_b,aos_array)
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:
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
subroutine dm_dft_alpha_beta_at_r(r,dm_a,dm_b)
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,36 +0,0 @@
.. _module_dressing:
.. program:: dressing
.. default-role:: option
=========
dress_zmq
=========
Module to facilitate the construction of modules using dressed
Hamiltonians, parallelized with |ZeroMQ|.
EZFIO parameters
----------------
.. option:: thresh_dressed_ci
Threshold on the convergence of the dressed |CI| energy
Default: 1.e-5
.. option:: n_it_max_dressed_ci
Maximum number of dressed |CI| iterations
Default: 10
.. option:: dress_relative_error
Stop stochastic dressing when the relative error is smaller than :option:`perturbation PT2_relative_error`
Default: 0.001

View File

@ -1,114 +0,0 @@
.. _module_electrons:
.. program:: electrons
.. default-role:: option
=========
electrons
=========
Describes the electrons. For the moment, only the number of alpha
and beta electrons are provided by this module.
Assumptions
===========
* `elec_num` >= 0
* `elec_alpha_num` >= 0
* `elec_beta_num` >= 0
* `elec_alpha_num` >= `elec_beta_num`
EZFIO parameters
----------------
.. option:: elec_alpha_num
Numbers of electrons alpha ("up")
.. option:: elec_beta_num
Numbers of electrons beta ("down")
.. option:: elec_num
Numbers total of electrons (alpha + beta)
Default: = electrons.elec_alpha_num + electrons.elec_beta_num
Providers
---------
.. c:var:: elec_num
File : :file:`electrons/electrons.irp.f`
.. code:: fortran
integer :: elec_num
integer, allocatable :: elec_num_tab (2)
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
File : :file:`electrons/electrons.irp.f`
.. code:: fortran
integer :: elec_num
integer, allocatable :: elec_num_tab (2)
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,760 +0,0 @@
.. _module_ezfio_files:
.. program:: ezfio_files
.. default-role:: option
===========
ezfio_files
===========
This modules essentially contains the name of the |EZFIO| directory in the
:c:data:`ezfio_filename` variable. This is read as the first argument of the
command-line, or as the :envvar:`QP_INPUT` environment variable.
Providers
---------
.. c:var:: ezfio_filename
File : :file:`ezfio_files/ezfio.irp.f`
.. code:: fortran
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:`qp_stop_filename`
* :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
File : :file:`ezfio_files/ezfio.irp.f`
.. code:: fortran
character*(128) :: ezfio_work_dir
EZFIO/work/
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: file_lock
File : :file:`ezfio_files/lock.irp.f`
.. code:: fortran
integer(omp_lock_kind) :: file_lock
OpenMP Lock for I/O
.. c:var:: 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
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
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
double precision :: output_wall_time_0
double precision :: output_cpu_time_0
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:: qp_kill_filename
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
character*(128) :: qp_stop_filename
character*(128) :: qp_kill_filename
integer :: qp_stop_variable
Name of the file to check for qp stop
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: qp_stop_filename
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
character*(128) :: qp_stop_filename
character*(128) :: qp_kill_filename
integer :: qp_stop_variable
Name of the file to check for qp stop
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: qp_stop_variable
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
character*(128) :: qp_stop_filename
character*(128) :: qp_kill_filename
integer :: qp_stop_variable
Name of the file to check for qp stop
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
Subroutines / functions
-----------------------
.. c:function:: getunitandopen:
File : :file:`ezfio_files/get_unit_and_open.irp.f`
.. code:: fortran
integer function getUnitAndOpen(f,mode)
: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:: qp_stop:
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
logical function qp_stop()
Checks if the qp_stop command was invoked for the clean termination of the program
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_stop_filename`
.. c:function:: write_bool:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_bool(iunit,value,label)
Write an logical value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
.. c:function:: write_double:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_double(iunit,value,label)
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:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_int(iunit,value,label)
Write an integer value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:func:`davidson_diag_hjj_sjj`
* :c:func:`make_s2_eigenfunction`
* :c:data:`mo_num`
* :c:data:`n_cas_bitmask`
* :c:data:`n_core_orb`
* :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:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_time(iunit)
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,151 +0,0 @@
.. _module_fci:
.. program:: fci
.. default-role:: option
===
fci
===
|CIPSI| algorithm in the full configuration interaction space.
The user point of view
----------------------
* :c:func:`fci` performs |CIPSI| calculations using a stochastic scheme for both the selection and the |PT2| contribution,
* :c:func:`pt2` computes the |PT2| contribution using the wave function stored in the |EZFIO|
database.
The main keywords/options for this module are:
* :option:`determinants n_det_max` : maximum number of Slater determinants in the CIPSI wave function. The :command:`fci` program will stop when the size of the CIPSI wave function will exceed :option:`determinants n_det_max`.
* :option:`perturbation pt2_max` : absolute value of the |PT2| to stop the CIPSI calculation. Once the |PT2| :math:`<` :option:`perturbation pt2_max`, the CIPSI calculation stops.
* :option:`determinants n_states` : number of states to consider in the CIPSI calculation.
* :option:`determinants read_wf` : if False, starts with a ROHF-like determinant, if True, starts with the current wave function(s) stored in the |EZFIO| folder.
.. note::
For a multi-state calculation, it is recommended to start with :c:func:`cis` or :c:func:`cisd`
wave functions as a guess.
* :option:`determinants s2_eig` : if True, systematically add all the determinants needed to have a pure value of :math:`S^2`. Also, if True, it tracks only the states having the good :option:`determinants expected_s2`.
.. note::
For a multi-state calculation, it is recommended to start with :c:func:`cis` or :c:func:`cisd`
wave functions as a guess.
* :option:`determinants expected_s2` : expected value of :math:`S^2` for the desired spin multiplicity.
The programmer point of view
----------------------------
This module have been created with the :ref:`cipsi` module.
.. seealso::
The documentation of the :ref:`cipsi` module.
EZFIO parameters
----------------
.. option:: energy
Calculated Selected |FCI| energy
.. option:: energy_pt2
Calculated |FCI| energy + |PT2|
Programs
--------
* :ref:`fci`
* :ref:`pt2`
Providers
---------
.. c:var:: do_ddci
File : :file:`fci/class.irp.f`
.. code:: fortran
logical :: do_only_1h1p
logical :: do_ddci
In the FCI case, all those are always false
.. c:var:: do_only_1h1p
File : :file:`fci/class.irp.f`
.. code:: fortran
logical :: do_only_1h1p
logical :: do_ddci
In the FCI case, all those are always false
Subroutines / functions
-----------------------
.. c:function:: save_energy:
File : :file:`fci/save_energy.irp.f`
.. code:: fortran
subroutine save_energy(E,pt2)
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,19 +0,0 @@
.. _module_generators_cas:
.. program:: generators_cas
.. default-role:: option
==============
generators_cas
==============
Module defining the generator determinants as those belonging to a |CAS|.
The |MOs| belonging to the |CAS| are those which were set as active with
the :ref:`qp_set_mo_class` command.
This module is intended to be included in the :file:`NEED` file to define
the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance).

View File

@ -1,295 +0,0 @@
.. _module_generators_full:
.. program:: generators_full
.. default-role:: option
===============
generators_full
===============
Module defining the generator determinants as all the determinants of the
variational space.
This module is intended to be included in the :file:`NEED` file to define
a full set of generators.
Providers
---------
.. c:var:: degree_max_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: degree_max_generators
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
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
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
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)
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
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)
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
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)
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
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)
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
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)
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
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
double precision, allocatable :: select_max (size_select_max)
Memo to skip useless selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`size_select_max`
.. c:var:: size_select_max
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: size_select_max
Size of the select_max array
Needed by:
.. hlist::
:columns: 3
* :c:data:`select_max`

View File

@ -1,406 +0,0 @@
.. _module_hartree_fock:
.. program:: hartree_fock
.. default-role:: option
============
hartree_fock
============
The :ref:`scf` program performs *Restricted* Hartree-Fock
calculations (the spatial part of the |MOs| is common for alpha and beta
spinorbitals).
The Hartree-Fock algorithm is a |SCF| and therefore is based on the
:ref:`module_scf_utils`` module.
The Fock matrix is defined in :file:`hartree_fock fock_matrix_hf.irp.f`.
EZFIO parameters
----------------
.. option:: energy
Energy HF
Programs
--------
* :ref:`scf`
Providers
---------
.. c:var:: ao_two_e_integral_alpha
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)
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
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)
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
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: extra_e_contrib_density
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
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)
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
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)
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
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
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
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
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
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
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:
File : :file:`hartree_fock/scf.irp.f`
.. code:: fortran
subroutine create_guess
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`
.. code:: fortran
subroutine run
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,204 +0,0 @@
.. _module_iterations:
.. program:: iterations
.. default-role:: option
==========
iterations
==========
Module which saves the computed energies for an extrapolation to
the |FCI| limit.
EZFIO parameters
----------------
.. option:: n_iter
Number of saved iterations
Default: 1
.. option:: n_det_iterations
Number of determinants at each iteration
.. option:: energy_iterations
The variational energy at each iteration
.. option:: pt2_iterations
The |PT2| correction at each iteration
Providers
---------
.. c:var:: extrapolated_energy
File : :file:`iterations/iterations.irp.f`
.. code:: fortran
double precision, allocatable :: extrapolated_energy (N_iter,N_states)
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
File : :file:`iterations/io.irp.f`
.. code:: fortran
integer :: n_iter
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:
File : :file:`iterations/print_extrapolation.irp.f`
.. code:: fortran
subroutine print_extrapolated_energy
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:
File : :file:`iterations/print_summary.irp.f`
.. code:: fortran
subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st,s2_)
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:
File : :file:`iterations/iterations.irp.f`
.. code:: fortran
subroutine save_iterations(e_, pt2_,n_)
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,101 +0,0 @@
.. _module_kohn_sham:
.. program:: kohn_sham
.. default-role:: option
=========
kohn_sham
=========
The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
spatial part of the |MOs| is common for alpha and beta spinorbitals).
The Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure.
It performs the following actions:
#. Compute/Read all the one- and two-electron integrals, and store them in memory
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
will read them as initial guess. Otherwise, it will create a guess.
#. Perform the |SCF| iterations
The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f`
For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options.
The main are:
#. :option:`scf_utils thresh_scf`
#. :option:`scf_utils level_shift`
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
crashes for any unexpected reason, the calculation can be restarted by running again
the |SCF| with the same |EZFIO| database.
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
To start a calculation from scratch, the simplest way is to remove the
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
.. _level-shifting: https://doi.org/10.1002/qua.560070407
Programs
--------
* :ref:`ks_scf`
Providers
---------
.. c:var:: ks_energy
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
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
-----------------------

View File

@ -1,468 +0,0 @@
.. _module_kohn_sham_rs:
.. program:: kohn_sham_rs
.. default-role:: option
============
kohn_sham_rs
============
The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange.
The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_ints mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals.
The Range-separated Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure.
It performs the following actions:
#. Compute/Read all the one- and two-electron integrals, and store them in memory
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
will read them as initial guess. Otherwise, it will create a guess.
#. Perform the |SCF| iterations
The definition of the Fock matrix is in :file:`kohn_sham_rs fock_matrix_rs_ks.irp.f`
For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options.
The main are:
# :option:`scf_utils thresh_scf`
# :option:`scf_utils level_shift`
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
crashes for any unexpected reason, the calculation can be restarted by running again
the |SCF| with the same |EZFIO| database.
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
To start a calculation from scratch, the simplest way is to remove the
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
.. _level-shifting: https://doi.org/10.1002/qua.560070407
EZFIO parameters
----------------
.. option:: energy
Energy range separated hybrid
Programs
--------
* :ref:`rs_ks_scf`
Providers
---------
.. c:var:: ao_potential_alpha_xc
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)
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
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)
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
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
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
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)
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
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)
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
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
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
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
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
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
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
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
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
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
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:
File : :file:`rs_ks_scf.irp.f`
.. code:: fortran
subroutine check_coherence_functional
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,815 +0,0 @@
.. _module_mo_basis:
.. program:: mo_basis
.. default-role:: option
========
mo_basis
========
Molecular orbitals are expressed as
.. math::
\phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r})
where :math:`\chi_k` are *normalized* atomic basis functions.
The current set of |MOs| has a label `mo_label`.
When the orbitals are modified, the label should also be updated to keep
everything consistent.
When saving the |MOs|, the :file:`mo_basis` directory of the |EZFIO| database
is copied in the :file:`save` directory, named by the current `mo_label`. All
this is done with the script named :file:`save_current_mos.sh` in the
:file:`$QP_ROOT/scripts` directory.
EZFIO parameters
----------------
.. option:: mo_num
Total number of |MOs|
.. option:: mo_coef
Coefficient of the i-th |AO| on the j-th |MO|
.. option:: mo_label
Label characterizing the MOS (Local, Canonical, Natural, *etc*)
.. option:: mo_occ
|MO| occupation numbers
.. option:: mo_class
[ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class`
.. option:: ao_md5
MD5 checksum characterizing the |AO| basis set.
Providers
---------
.. c:var:: mo_coef
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef (ao_num,mo_num)
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
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_num)
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
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_num)
|MO| coefficients in orthogonalized |AO| basis
: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
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_transp (mo_num,ao_num)
|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
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
character*(64) :: mo_label
|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
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
integer :: mo_num
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_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_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_core_orb`
* :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
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_occ (mo_num)
|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:
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
subroutine ao_ortho_cano_to_ao(A_ao,LDA_ao,A,LDA)
Transform A from the |AO| basis to the orthogonal |AO| basis
$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:
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
subroutine ao_to_mo(A_ao,LDA_ao,A_mo,LDA_mo)
Transform A from the |AO| basis to the |MO| basis
$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:
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: fortran
subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array)
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:
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: fortran
subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array)
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:
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: fortran
subroutine give_all_mos_at_r(r,mos_array)
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:
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
subroutine initialize_mo_coef_begin_iteration
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:
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
subroutine mix_mo_jk(j,k)
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))
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
.. c:function:: mo_as_eigvectors_of_mo_matrix:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output)
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:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label)
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:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label)
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:
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
subroutine reorder_core_orb
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_num`
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef`
* :c:data:`ao_overlap`
* :c:data:`n_core_orb`
* :c:data:`ao_num`
* :c:data:`list_inact`
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:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine save_mos
Needs:
.. 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:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine save_mos_truncated(n)
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,160 +0,0 @@
.. _module_mo_guess:
.. program:: mo_guess
.. default-role:: option
========
mo_guess
========
Guess for |MOs|.
Providers
---------
.. c:var:: ao_ortho_canonical_nucl_elec_integrals
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)
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
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_lowdin_coef (ao_num,ao_num)
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
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)
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
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_lowdin_overlap (ao_num,ao_num)
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`
Subroutines / functions
-----------------------
.. c:function:: hcore_guess:
File : :file:`mo_guess/h_core_guess_routine.irp.f`
.. code:: fortran
subroutine hcore_guess
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,571 +0,0 @@
.. _module_mo_one_e_ints:
.. program:: mo_one_e_ints
.. default-role:: option
==================
mo_one_e_integrals
==================
All the one-electron integrals in |MO| basis are defined here.
The most important providers for usual quantum-chemistry calculation are:
* `mo_kinetic_integrals` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`)
* `mo_integrals_n_e` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`)
* `mo_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`)
Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`.
EZFIO parameters
----------------
.. option:: mo_integrals_e_n
Nucleus-electron integrals in |MO| basis set
.. option:: io_mo_integrals_e_n
Read/Write |MO| electron-nucleus attraction integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: mo_integrals_kinetic
Kinetic energy integrals in |MO| basis set
.. option:: io_mo_integrals_kinetic
Read/Write |MO| one-electron kinetic integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: mo_integrals_pseudo
Pseudopotential integrals in |MO| basis set
.. option:: io_mo_integrals_pseudo
Read/Write |MO| pseudopotential integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: mo_one_e_integrals
One-electron integrals in |MO| basis set
.. option:: io_mo_one_e_integrals
Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ]
Default: None
Providers
---------
.. c:var:: mo_dipole_x
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)
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
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)
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
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)
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
File : :file:`mo_one_e_ints/pot_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_integrals_n_e (mo_num,mo_num)
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
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)
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
File : :file:`mo_one_e_ints/kin_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_kinetic_integrals (mo_num,mo_num)
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
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)
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
File : :file:`mo_one_e_ints/mo_overlap.irp.f`
.. code:: fortran
double precision, allocatable :: mo_overlap (mo_num,mo_num)
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
File : :file:`mo_one_e_ints/pot_mo_pseudo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_pseudo_integrals (mo_num,mo_num)
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
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)
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
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)
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
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)
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
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
double precision, allocatable :: s_mo_coef (ao_num,mo_num)
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:
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao)
Transform A from the MO basis to the AO basis
$(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:
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)
$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:
File : :file:`mo_one_e_ints/orthonormalize.irp.f`
.. code:: fortran
subroutine orthonormalize_mos
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,291 +0,0 @@
.. _module_mpi:
.. program:: mpi
.. default-role:: option
===
mpi
===
Contains all the functions and providers for parallelization with |MPI|.
Providers
---------
.. c:var:: mpi_initialized
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
logical :: mpi_initialized
Always true. Initialized MPI
Needed by:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: mpi_master
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
logical :: mpi_master
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:`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:`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_cas_bitmask`
* :c:data:`n_core_orb`
* :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
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
integer :: mpi_rank
integer :: mpi_size
Rank of MPI process and number of MPI processes
Needed by:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
.. c:var:: mpi_size
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
integer :: mpi_rank
integer :: mpi_size
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:
File : :file:`mpi/mpi.irp.f_template_97`
.. code:: fortran
subroutine broadcast_chunks_double(A, LDA)
Broadcast with chunks of ~2GB
.. c:function:: broadcast_chunks_integer:
File : :file:`mpi/mpi.irp.f_template_97`
.. code:: fortran
subroutine broadcast_chunks_integer(A, LDA)
Broadcast with chunks of ~2GB
.. c:function:: broadcast_chunks_integer8:
File : :file:`mpi/mpi.irp.f_template_97`
.. code:: fortran
subroutine broadcast_chunks_integer8(A, LDA)
Broadcast with chunks of ~2GB
.. c:function:: mpi_print:
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
subroutine mpi_print(string)
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,666 +0,0 @@
.. _module_nuclei:
.. program:: nuclei
.. default-role:: option
======
nuclei
======
This module contains data relative to the nuclei (coordinates, charge,
nuclear repulsion energy, etc).
The coordinates are expressed in atomic units.
EZFIO parameters
----------------
.. option:: nucl_num
Number of nuclei
.. option:: nucl_label
Nuclear labels
.. option:: nucl_charge
Nuclear charges
.. option:: nucl_coord
Nuclear coordinates in the format (:, {x,y,z})
.. option:: disk_access_nuclear_repulsion
Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ]
Default: None
.. option:: nuclear_repulsion
Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|)
Providers
---------
.. c:var:: center_of_mass
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: center_of_mass (3)
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
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
character*(4), allocatable :: element_name (0:127)
double precision, allocatable :: element_mass (0:127)
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
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
character*(4), allocatable :: element_name (0:127)
double precision, allocatable :: element_mass (0:127)
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
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor (3,3)
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
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
double precision, allocatable :: inertia_tensor_eigenvalues (3)
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
Needs:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: inertia_tensor_eigenvectors
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
double precision, allocatable :: inertia_tensor_eigenvalues (3)
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
Needs:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: nucl_coord
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_coord (nucl_num,3)
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
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_coord_transp (3,nucl_num)
Transposed array of nucl_coord
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
.. c:var:: nucl_dist
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)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
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
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)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
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
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num)
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
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)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
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
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)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
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
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)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
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
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision :: nuclear_repulsion
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
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii (100)
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
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num)
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
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num)
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
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_ua (100)
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
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_per_atom`
.. c:var:: slater_bragg_type_inter_distance_ua
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_per_atom_ua`

View File

@ -1,999 +0,0 @@
.. _module_perturbation:
.. program:: perturbation
.. default-role:: option
============
perturbation
============
All subroutines in ``*.irp.f`` starting with `pt2_` in the current directory are
perturbation computed using the routine `i_H_psi`. Other cases are not allowed.
The arguments of the `pt2_` are always:
.. code-block:: fortran
subroutine pt2_...( &
psi_ref, &
psi_ref_coefs, &
E_refs, &
det_pert, &
c_pert, &
e_2_pert, &
H_pert_diag, &
Nint, &
Ndet, &
N_st )
integer , intent(in) :: Nint,Ndet,N_st
integer(bit_kind), intent(in) :: psi_ref(Nint,2,Ndet)
double precision , intent(in) :: psi_ref_coefs(Ndet,N_st)
double precision , intent(in) :: E_refs(N_st)
integer(bit_kind), intent(in) :: det_pert(Nint,2)
double precision , intent(out) :: c_pert(N_st),e_2_pert(N_st),H_pert_diag
`psi_ref`
bitstring of the determinants present in the various `N_st` states
`psi_ref_coefs`
coefficients of the determinants on the various `N_st` states
`E_refs`
Energy of the various `N_st` states
`det_pert`
Perturber determinant
`c_pert`
Perturbative coefficients for the various states
`e_2_pert`
Perturbative energetic contribution for the various states
`H_pert_diag`
Diagonal |H| matrix element of the perturber
`Nint`
Should be equal to `N_int`
`Ndet`
Number of determinants `i` in |Psi| on which we apply <det_pert | |H| | `i`>
`N_st`
Number of states
EZFIO parameters
----------------
.. option:: do_pt2
If `True`, compute the |PT2| contribution
Default: True
.. option:: pt2_max
The selection process stops when the largest |PT2| (for all the state) is lower
than `pt2_max` in absolute value
Default: 0.0001
.. option:: pt2_relative_error
Stop stochastic |PT2| when the relative error is smaller than `PT2_relative_error`
Default: 0.002
.. option:: correlation_energy_ratio_max
The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules).
Defined as :math:`{E_{CI}-E_{HF}}/{E_{CI}+E_{PT2} - E_{HF}}`.
Default: 1.00
Providers
---------
.. c:function:: fill_h_apply_buffer_selection:
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, &
N_st,Nint,iproc,select_max_out)
Fill the H_apply buffer with determiants for the selection
Needs:
.. hlist::
:columns: 3
* :c:data:`selection_criterion`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
* :c:func:`resize_h_apply_buffer`
.. c:var:: h0_type
File : :file:`perturbation/h0_type.irp.f`
.. code:: fortran
character*32 :: h0_type
Type of zeroth-order Hamiltonian
Needs:
.. hlist::
:columns: 3
* :c:data:`s2_eig`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_e0_denominator`
.. c:var:: max_exc_pert
File : :file:`perturbation/exc_max.irp.f`
.. code:: fortran
integer :: max_exc_pert
.. c:var:: selection_criterion
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
double precision :: selection_criterion
double precision :: selection_criterion_min
double precision :: selection_criterion_factor
Threshold to select determinants. Set by selection routines.
.. c:var:: selection_criterion_factor
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
double precision :: selection_criterion
double precision :: selection_criterion_min
double precision :: selection_criterion_factor
Threshold to select determinants. Set by selection routines.
.. c:var:: selection_criterion_min
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
double precision :: selection_criterion
double precision :: selection_criterion_min
double precision :: selection_criterion_factor
Threshold to select determinants. Set by selection routines.
.. c:var:: var_pt2_ratio
File : :file:`perturbation/var_pt2_ratio_provider.irp.f`
.. code:: fortran
double precision :: var_pt2_ratio
The selection process stops when the energy ratio variational/(variational+PT2)
is equal to var_pt2_ratio
Needs:
.. hlist::
:columns: 3
* :c:data:`correlation_energy_ratio_max`
Subroutines / functions
-----------------------
.. c:function:: perturb_buffer_by_mono_dummy:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_dummy`
.. c:function:: perturb_buffer_by_mono_epstein_nesbet:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_epstein_nesbet`
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_epstein_nesbet_2x2`
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag`
.. c:function:: perturb_buffer_by_mono_moller_plesset:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_moller_plesset`
.. c:function:: perturb_buffer_by_mono_qdpt:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_qdpt`
.. c:function:: perturb_buffer_dummy:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_dummy`
.. c:function:: perturb_buffer_epstein_nesbet:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_epstein_nesbet`
.. c:function:: perturb_buffer_epstein_nesbet_2x2:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_epstein_nesbet_2x2`
.. c:function:: perturb_buffer_epstein_nesbet_2x2_no_ci_diag:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag`
.. c:function:: perturb_buffer_moller_plesset:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_moller_plesset`
.. c:function:: perturb_buffer_qdpt:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_qdpt`
.. c:function:: pt2_dummy:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
subroutine pt2_dummy (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
Dummy perturbation to add all connected determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`selection_criterion`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_dummy`
* :c:func:`perturb_buffer_dummy`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_h_psi_minilist`
.. c:function:: pt2_epstein_nesbet:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
subroutine pt2_epstein_nesbet (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
Compute the standard Epstein-Nesbet perturbative first order coefficient and
second order energetic contribution for the various N_st states.
`c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{ E_n - \langle \alpha|H|\alpha \rangle }$.
`e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{ E_n - \langle \alpha|H|\alpha \rangle }$.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`selection_criterion`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_epstein_nesbet`
* :c:func:`perturb_buffer_epstein_nesbet`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_h_psi_minilist`
.. c:function:: pt2_epstein_nesbet_2x2:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
subroutine pt2_epstein_nesbet_2x2 (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
Computes the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
for the various N_st states.
`e_2_pert(i)` = $\frac{1}{2} ( \langle \alpha|H|\alpha \rangle - E_n) - \sqrt{ (\langle \alpha|H|\alpha \rangle - E_n)^2 + 4 \langle i|H|\alpha \rangle^2 }$.
`c_pert(i)` = `e_2_pert(i)` $\times \frac{1}{ \langle i|H|\alpha \rangle}$.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2`
* :c:func:`perturb_buffer_epstein_nesbet_2x2`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_h_psi`
.. c:function:: pt2_epstein_nesbet_2x2_no_ci_diag:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
subroutine pt2_epstein_nesbet_2x2_no_ci_diag(electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
for the various N_st states.
e_2_pert(i) = 0.5 * (( <det_pert|H|det_pert> - E(i) ) - sqrt( ( <det_pert|H|det_pert> - E(i)) ^2 + 4 <psi(i)|H|det_pert>^2 )
c_pert(i) = e_2_pert(i)/ <psi(i)|H|det_pert>
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`psi_energy`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag`
* :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_h_psi`
.. c:function:: pt2_moller_plesset:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
subroutine pt2_moller_plesset (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
Computes the standard Moller-Plesset perturbative first order coefficient and second
order energetic contribution for the various N_st states.
`c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\text{difference of orbital energies}}$.
`e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{\text{difference of orbital energies}}$.
Needs:
.. hlist::
:columns: 3
* :c:data:`ref_bitmask`
* :c:data:`psi_selectors_size`
* :c:data:`psi_selectors`
* :c:data:`mo_num`
* :c:data:`n_det_selectors`
* :c:data:`fock_matrix_mo`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_moller_plesset`
* :c:func:`perturb_buffer_moller_plesset`
Calls:
.. hlist::
:columns: 3
* :c:func:`decode_exc`
* :c:func:`get_excitation`
* :c:func:`i_h_psi_minilist`
.. c:function:: pt2_qdpt:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
subroutine pt2_qdpt (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
Computes the QDPT first order coefficient and second order energetic contribution
for the various N_st states.
`c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\langle i|H|i \rangle - \langle \alpha|H|\alpha \rangle}$.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`selection_criterion`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_qdpt`
* :c:func:`perturb_buffer_qdpt`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_excitation_degree`
* :c:func:`i_h_j`
* :c:func:`i_h_psi_minilist`
.. c:function:: remove_small_contributions:
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
subroutine remove_small_contributions
Remove determinants with small contributions. N_states is assumed to be
provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`selection_criterion`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`psi_det_size`
* :c:data:`n_det_generators`
* :c:data:`n_int`
* :c:data:`psi_det_sorted`
* :c:data:`psi_det`
* :c:data:`psi_det_sorted`
Calls:
.. hlist::
:columns: 3
* :c:func:`diagonalize_ci`
* :c:func:`i_h_psi`
* :c:func:`write_int`
Touches:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
* :c:data:`ci_electronic_energy`
* :c:data:`ci_energy`
* :c:data:`ci_electronic_energy`
* :c:data:`n_det`
* :c:data:`psi_coef`
* :c:data:`psi_det`

View File

@ -1,94 +0,0 @@
.. _module_pseudo:
.. program:: pseudo
.. default-role:: option
======
pseudo
======
This module defines the |EZFIO| parameters of the effective core potentials.
EZFIO parameters
----------------
.. option:: nucl_charge_remove
Nuclear charges removed per atom
.. option:: pseudo_klocmax
Maximum value of k for the local component
.. option:: pseudo_n_k
Number of gaussians in the local component
.. option:: pseudo_v_k
Coefficients in the local component
.. option:: pseudo_dz_k
Exponents in the local component
.. option:: pseudo_lmax
Maximum angular momentum
.. option:: pseudo_kmax
Maximum number of functions in the non-local component
.. option:: pseudo_n_kl
Number of functions in the non-local component
.. option:: pseudo_v_kl
Coefficients in the non-local component
.. option:: pseudo_dz_kl
Exponents in the non-local component
.. option:: do_pseudo
If `True`, pseudo-potentials are used.
Default: False
.. option:: pseudo_grid_size
Nb of points of the grid for the QMC interfaces
Default: 1000
.. option:: pseudo_grid_rmax
R_max of the QMC grid
Default: 10.0
.. option:: ao_pseudo_grid
Grid for the QMC interface
.. option:: mo_pseudo_grid
Grid for the QMC interface

View File

@ -1,14 +0,0 @@
.. _module_psiref_cas:
.. program:: psiref_cas
.. default-role:: option
==========
psiref_cas
==========
Reference wave function is defined as a |CAS| wave function.
This module is required for |CAS-SD|, |MRPT| or |MRCC|.

View File

@ -1,16 +0,0 @@
.. _module_psiref_utils:
.. program:: psiref_utils
.. default-role:: option
============
psiref_utils
============
Utilities related to the use of a reference wave function. This module
needs to be loaded with any `psi_ref_*` module.

View File

@ -1,795 +0,0 @@
.. _module_scf_utils:
.. program:: scf_utils
.. default-role:: option
=========
scf_utils
=========
The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the
spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function.
This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix.
The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example).
All SCF programs perform the following actions:
#. Compute/Read all the one- and two-electron integrals, and store them in memory
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
will read them as initial guess. Otherwise, it will create a guess.
#. Perform the |SCF| iterations based on the definition of the Fock matrix
The main keywords/options are:
* :option:`scf_utils thresh_scf`
* :option:`scf_utils level_shift`
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
crashes for any unexpected reason, the calculation can be restarted by running again
the |SCF| with the same |EZFIO| database.
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
To start a calculation from scratch, the simplest way is to remove the
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
.. _level-shifting: https://doi.org/10.1002/qua.560070407
EZFIO parameters
----------------
.. option:: max_dim_diis
Maximum size of the DIIS extrapolation procedure
Default: 15
.. option:: threshold_diis
Threshold on the convergence of the DIIS error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used.
Default: 0.
.. option:: thresh_scf
Threshold on the convergence of the Hartree Fock energy.
Default: 1.e-10
.. option:: n_it_scf_max
Maximum number of SCF iterations
Default: 500
.. option:: level_shift
Energy shift on the virtual MOs to improve SCF convergence
Default: 0.
.. option:: scf_algorithm
Type of SCF algorithm used. Possible choices are [ Simple | DIIS]
Default: DIIS
.. option:: mo_guess_type
Initial MO guess. Can be [ Huckel | HCore ]
Default: Huckel
.. option:: energy
Calculated HF energy
.. option:: frozen_orb_scf
If true, leave untouched all the orbitals defined as core and optimize all the orbitals defined as active with qp_set_mo_class
Default: False
Providers
---------
.. c:var:: eigenvalues_fock_matrix_ao
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)
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
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)
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
File : :file:`scf_utils/diagonalize_fock.irp.f`
.. code:: fortran
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_num)
Eigenvector of the Fock matrix in the MO basis obtained with level shift.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :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_inact`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
.. c:function:: extrapolate_fock_matrix:
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 &
)
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
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_ao (ao_num,ao_num)
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
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)
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
Needs:
.. hlist::
:columns: 3
* :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_inact`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
.. c:var:: fock_matrix_mo
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)
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
Needs:
.. hlist::
:columns: 3
* :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_inact`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
.. c:var:: fock_matrix_mo_alpha
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo_alpha (mo_num,mo_num)
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
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo_beta (mo_num,mo_num)
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
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num)
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
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: fps_spf_matrix_mo (mo_num,mo_num)
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
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao (ao_num,ao_num)
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
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao_alpha (ao_num,ao_num)
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
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao_beta (ao_num,ao_num)
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
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision :: scf_energy
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
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision :: threshold_diis_nonzero
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:
File : :file:`scf_utils/damping_scf.irp.f`
.. code:: fortran
subroutine damping_SCF
Needs:
.. 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:
File : :file:`scf_utils/huckel.irp.f`
.. code:: fortran
subroutine huckel_guess
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:
File : :file:`scf_utils/roothaan_hall_scf.irp.f`
.. code:: fortran
subroutine Roothaan_Hall_SCF
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,13 +0,0 @@
.. _module_selectors_cassd:
.. program:: selectors_cassd
.. default-role:: option
===============
selectors_cassd
===============
Selectors for |CAS-SD| calculations. The selectors are defined as first the
generators from :ref:`Generators_CAS`, and then the rest of the wave function.

View File

@ -1,153 +0,0 @@
.. _module_selectors_full:
.. program:: selectors_full
.. default-role:: option
==============
selectors_full
==============
All the determinants are possible selectors. Only the largest contributions are kept, where
a threshold is applied to the squared norm of the wave function, with the :option:`determinants
threshold_selectors` flag.
Providers
---------
.. c:var:: n_det_selectors
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
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
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)
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
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)
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
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
double precision :: threshold_selectors
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,649 +0,0 @@
.. _module_selectors_utils:
.. program:: selectors_utils
.. default-role:: option
===============
selectors_utils
===============
Helper functions for selectors.
Providers
---------
.. c:var:: coef_hf_selector
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size)
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
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size)
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
File : :file:`selectors_utils/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:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id)
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:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id)
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:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id)
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:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id)
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,14 +0,0 @@
.. _module_single_ref_method:
.. program:: single_ref_method
.. default-role:: option
=================
single_ref_method
=================
Include this module for single reference methods.
Using this module, the only generator determinant is the Hartree-Fock determinant.

View File

@ -1,246 +0,0 @@
.. _module_tools:
.. program:: tools
.. default-role:: option
=====
tools
=====
Useful tools are grouped in this module.
Programs
--------
* :ref:`diagonalize_h`
* :ref:`fcidump`
* :ref:`four_idx_transform`
* :ref:`molden`
* :ref:`print_e_conv`
* :ref:`print_wf`
* :ref:`save_natorb`
* :ref:`save_one_e_dm`
* :ref:`save_ortho_mos`
* :ref:`write_integrals_erf`
Subroutines / functions
-----------------------
.. c:function:: routine:
File : :file:`write_integrals_erf.irp.f`
.. code:: fortran
subroutine routine
Called by:
.. 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:
File : :file:`print_e_conv.irp.f`
.. code:: fortran
subroutine routine_e_conv
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:
File : :file:`save_one_e_dm.irp.f`
.. code:: fortran
subroutine routine_save_one_e_dm
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:
File : :file:`molden.irp.f`
.. code:: fortran
subroutine write_Ao_basis(i_unit_output)
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:
File : :file:`molden.irp.f`
.. code:: fortran
subroutine write_geometry(i_unit_output)
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:
File : :file:`molden.irp.f`
.. code:: fortran
subroutine write_intro_gamess(i_unit_output)
Called by:
.. hlist::
:columns: 3
* :c:func:`molden`
.. c:function:: write_mo_basis:
File : :file:`molden.irp.f`
.. code:: fortran
subroutine write_Mo_basis(i_unit_output)
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

@ -107,7 +107,7 @@ Only standard Fortran is allowed : Intel or GNU extensions are forbidden.
The name of a program should be the same as the name of the file. For example, The name of a program should be the same as the name of the file. For example,
for the :ref:`fci` program, we have for the :ref:`fci` program, we have
.. code-block:: fortan .. code-block:: fortran
program fci program fci

View File

@ -8,7 +8,7 @@ EZFIO.cfg
The simplest way to add control parameters in the |EZFIO| directory is to create a The simplest way to add control parameters in the |EZFIO| directory is to create a
:file:`EZFIO.cfg` file in the module. An example can be found in existing modules :file:`EZFIO.cfg` file in the module. An example can be found in existing modules
such as :ref:`hartree_fock`:: such as :ref:`module_hartree_fock`::
[max_dim_diis] [max_dim_diis]
type: integer type: integer
@ -92,7 +92,7 @@ Optional
It is possible to directly add to the current module |EZFIO| configuration It is possible to directly add to the current module |EZFIO| configuration
files, named with the ``.ezfio_config`` suffix. An example is in the files, named with the ``.ezfio_config`` suffix. An example is in the
:ref:`bitmask` module. :ref:`module_bitmask` module.
.. code:: text .. code:: text

View File

@ -226,7 +226,6 @@ Index of Providers
* :c:data:`ezfio_work_dir` * :c:data:`ezfio_work_dir`
* :c:data:`fact_inv` * :c:data:`fact_inv`
* :c:data:`file_lock` * :c:data:`file_lock`
* :c:data:`fill_h_apply_buffer_selection`
* :c:data:`final_grid_points` * :c:data:`final_grid_points`
* :c:data:`final_weight_at_r` * :c:data:`final_weight_at_r`
* :c:data:`final_weight_at_r_vector` * :c:data:`final_weight_at_r_vector`
@ -606,7 +605,6 @@ Index of Providers
* :c:data:`psi_selectors_coef_transp` * :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat` * :c:data:`psi_selectors_diag_h_mat`
* :c:data:`psi_selectors_size` * :c:data:`psi_selectors_size`
* :c:data:`pt2_collector`
* :c:data:`pt2_cw` * :c:data:`pt2_cw`
* :c:data:`pt2_e0_denominator` * :c:data:`pt2_e0_denominator`
* :c:data:`pt2_f` * :c:data:`pt2_f`
@ -907,6 +905,7 @@ Index of Subroutines/Functions
* :c:func:`fcidump` * :c:func:`fcidump`
* :c:func:`fill_buffer_double` * :c:func:`fill_buffer_double`
* :c:func:`fill_h_apply_buffer_no_selection` * :c:func:`fill_h_apply_buffer_no_selection`
* :c:func:`fill_h_apply_buffer_selection`
* :c:func:`filter_connected` * :c:func:`filter_connected`
* :c:func:`filter_connected_i_h_psi0` * :c:func:`filter_connected_i_h_psi0`
* :c:func:`filter_not_connected` * :c:func:`filter_not_connected`
@ -1198,6 +1197,7 @@ Index of Subroutines/Functions
* :c:func:`provide_all_mo_integrals_erf` * :c:func:`provide_all_mo_integrals_erf`
* :c:func:`provide_everything` * :c:func:`provide_everything`
* :c:func:`pt2` * :c:func:`pt2`
* :c:func:`pt2_collector`
* :c:func:`pt2_dummy` * :c:func:`pt2_dummy`
* :c:func:`pt2_epstein_nesbet` * :c:func:`pt2_epstein_nesbet`
* :c:func:`pt2_epstein_nesbet_2x2` * :c:func:`pt2_epstein_nesbet_2x2`

View File

@ -20,25 +20,22 @@ cis
This program can be useful in many cases: This program can be useful in many cases:
Ground state calculation 1. Ground state calculation
------------------------
To be sure to have the lowest |SCF| solution, perform an :ref:`scf` To be sure to have the lowest |SCF| solution, perform an :ref:`scf`
(see the :ref:`hartree_fock` module), then a :ref:`cis`, save (see the :ref:`module_hartree_fock` module), then a :ref:`cis`, save the
the natural orbitals (see :ref:`save_natorb`) and re-run an natural orbitals (see :ref:`save_natorb`) and re-run an :ref:`scf`
:ref:`scf` optimization from this |MO| guess. optimization from this |MO| guess.
Excited states calculations 2. Excited states calculations
---------------------------
The lowest excited states are much likely to be dominated by The lowest excited states are much likely to be dominated by
single-excitations. Therefore, running a :ref:`cis` will save single-excitations. Therefore, running a :ref:`cis` will save the
the `n_states` lowest states within the |CIS| space in the |EZFIO| `n_states` lowest states within the |CIS| space in the |EZFIO|
directory, which can afterwards be used as guess wave functions for directory, which can afterwards be used as guess wave functions for
a further multi-state |FCI| calculation if :option:`determinants read_wf` a further multi-state |FCI| calculation if :option:`determinants
is set to |true| before running the :ref:`fci` read_wf` is set to |true| before running the :ref:`fci` executable.
executable.
If :option:`determinants s2_eig` is set to |true|, the |CIS| If :option:`determinants s2_eig` is set to |true|, the |CIS|

View File

@ -50,6 +50,7 @@ cisd
* "act" orbitals where an electron can be either excited from or to * "act" orbitals where an electron can be either excited from or to
* "del" orbitals which will be never occupied * "del" orbitals which will be never occupied
Needs: Needs:

View File

@ -21,7 +21,7 @@ fci
conditions: conditions:
* number of Slater determinants > :option:`determinants n_det_max` * number of Slater determinants > :option:`determinants n_det_max`
* |PT2| < :option:`perturbation pt2_max` * abs(|PT2|) less than :option:`perturbation pt2_max`
The following other options can be of interest: The following other options can be of interest:
@ -38,7 +38,7 @@ fci
:option:`determinants expected_s2`. :option:`determinants expected_s2`.
For excited states calculations, it is recommended to start with For excited states calculations, it is recommended to start with
:ref:`.cis.` or :ref:`.cisd.` guess wave functions, eventually in :ref:`cis` or :ref:`cisd` guess wave functions, eventually in
a restricted set of |MOs|, and to set :option:`determinants s2_eig` a restricted set of |MOs|, and to set :option:`determinants s2_eig`
to |true|. to |true|.

View File

@ -9,7 +9,7 @@ molden
Produce a Molden file Produces a Molden file
Needs: Needs:

View File

@ -9,7 +9,8 @@ write_integrals_erf
Saves the two-electron integrals with the :math:`erf(\mu r_{12})/r_{12}` oprerator into the EZFIO folder Saves the two-electron integrals with the $erf(\mu r_{12})/r_{12}$
oprerator into the EZFIO directory.
Needs: Needs:

View File

@ -15,7 +15,7 @@ A few interfaces to external codes are available.
|qp| -> \* |qp| -> \*
---------- ----------
`Molden`_ `Molden <http://cheminf.cmbi.ru.nl/molden>`_
3D plots of Molecular Orbitals 3D plots of Molecular Orbitals
FCIDUMP FCIDUMP

View File

@ -0,0 +1,32 @@
.. _qp_reset:
========
qp_reset
========
.. program:: qp_reset
This command resets parts of the |EZFIO| directory.
Usage
-----
.. code:: bash
qp_reset [-adhm] EZFIO_DIR
.. option:: -a, --all
Reset to the state in which the directory is after after running :ref:`qp_create_ezfio`.
.. option:: -d, --dets
Deletes the determinants and CI coefficients.
.. option:: -m, --mos
Deletes the |MOs|, and consequently the determinants and CI coefficients.

View File

@ -95,7 +95,7 @@ Running programs
qp (run|srun|mpirun) [options] <program> qp (run|srun|mpirun) [options] <program>
Runs :ref:`qp_run`, :ref:`qp_srun`, or :ref:`qp_mpirun` using the current Runs :ref:`qp_run`, :command:`qp_srun`, or :command:`qp_mpirun` using the current
|EZFIO| directory. |EZFIO| directory.
.. option:: stop .. option:: stop

View File

@ -74,7 +74,8 @@ The expected energy is ``-92.827856698`` au.
.. seealso:: .. seealso::
The documentation of the :ref:`hartree_fock` module and that of the :c:func:`scf` program. The documentation of the :ref:`module_hartree_fock` module and that of the
:ref:`scf` program.
This creates the |MOs| in the |EZFIO| database that will be used to This creates the |MOs| in the |EZFIO| database that will be used to
perform any other post-SCF method. The |qp| does not handle symmetry and perform any other post-SCF method. The |qp| does not handle symmetry and
@ -138,7 +139,7 @@ The estimated |FCI| energy of HCN is ``-93.0501`` au.
.. seealso:: .. seealso::
The documentation of the :ref:`fci` module and that of the :c:func:`fci` program. The documentation of the :ref:`module_fci` module and that of the :ref:`fci` program.
--------------------------- ---------------------------

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "CIS" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "CIS" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
cis \- | Quantum Package > cis \- | Quantum Package >
. .
@ -40,19 +40,24 @@ Disregarding spatial symmetry, it computes the \fIn_states\fP lowest
eigenstates of that CI matrix. (see \fBdeterminants n_states\fP) eigenstates of that CI matrix. (see \fBdeterminants n_states\fP)
.sp .sp
This program can be useful in many cases: This program can be useful in many cases:
.INDENT 0.0
.IP 1. 3
Ground state calculation
.sp .sp
To be sure to have the lowest SCF solution, perform an scf To be sure to have the lowest SCF solution, perform an scf
(see the hartree_fock module), then a \fI\%cis\fP, save (see the module_hartree_fock module), then a \fI\%cis\fP, save the
the natural orbitals (see save_natorb) and re\-run an natural orbitals (see save_natorb) and re\-run an scf
scf optimization from this MO guess. optimization from this MO guess.
.IP 2. 3
Excited states calculations
.sp .sp
The lowest excited states are much likely to be dominated by The lowest excited states are much likely to be dominated by
single\-excitations. Therefore, running a \fI\%cis\fP will save single\-excitations. Therefore, running a \fI\%cis\fP will save the
the \fIn_states\fP lowest states within the CIS space in the \fI\%EZFIO\fP \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 directory, which can afterwards be used as guess wave functions for
a further multi\-state FCI calculation if \fBdeterminants read_wf\fP a further multi\-state FCI calculation if \fBdeterminants
is set to \fBtrue\fP before running the fci read_wf\fP is set to \fBtrue\fP before running the fci executable.
executable. .UNINDENT
.sp .sp
If \fBdeterminants s2_eig\fP is set to \fBtrue\fP, the CIS If \fBdeterminants s2_eig\fP is set to \fBtrue\fP, the CIS
will only retain states having the expected \ewidehat{S^2} value (see will only retain states having the expected \ewidehat{S^2} value (see

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "CISD" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "CISD" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
cisd \- | Quantum Package > cisd \- | Quantum Package >
. .

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "DIAGONALIZE_H" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "DIAGONALIZE_H" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
diagonalize_h \- | Quantum Package > diagonalize_h \- | Quantum Package >
. .

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "FCI" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "FCI" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
fci \- | Quantum Package > fci \- | Quantum Package >
. .
@ -46,7 +46,7 @@ conditions:
.IP \(bu 2 .IP \(bu 2
number of Slater determinants > \fBdeterminants n_det_max\fP number of Slater determinants > \fBdeterminants n_det_max\fP
.IP \(bu 2 .IP \(bu 2
PT2 < \fBperturbation pt2_max\fP abs(PT2) less than \fBperturbation pt2_max\fP
.UNINDENT .UNINDENT
.sp .sp
The following other options can be of interest: The following other options can be of interest:
@ -66,7 +66,7 @@ function with an \ewidehat{S^2} value corresponding to
.UNINDENT .UNINDENT
.sp .sp
For excited states calculations, it is recommended to start with For excited states calculations, it is recommended to start with
\&.cis. or \&.cisd. guess wave functions, eventually in cis or cisd guess wave functions, eventually in
a restricted set of MOs, and to set \fBdeterminants s2_eig\fP a restricted set of MOs, and to set \fBdeterminants s2_eig\fP
to \fBtrue\fP\&. to \fBtrue\fP\&.
.sp .sp

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "FCIDUMP" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "FCIDUMP" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
fcidump \- | Quantum Package > fcidump \- | Quantum Package >
. .

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "FOUR_IDX_TRANSFORM" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "FOUR_IDX_TRANSFORM" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
four_idx_transform \- | Quantum Package > four_idx_transform \- | Quantum Package >
. .

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "KS_SCF" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "KS_SCF" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
ks_scf \- | Quantum Package > ks_scf \- | Quantum Package >
. .

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "MOLDEN" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "MOLDEN" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
molden \- | Quantum Package > molden \- | Quantum Package >
. .
@ -32,7 +32,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.. ..
.INDENT 0.0 .INDENT 0.0
.INDENT 3.5 .INDENT 3.5
Produce a Molden file Produces a Molden file
.sp .sp
Needs: Needs:
.INDENT 0.0 .INDENT 0.0

View File

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

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "PRINT_E_CONV" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "PRINT_E_CONV" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
print_e_conv \- | Quantum Package > print_e_conv \- | Quantum Package >
. .

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "PRINT_WF" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "PRINT_WF" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
print_wf \- | Quantum Package > print_wf \- | Quantum Package >
. .

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "PT2" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "PT2" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
pt2 \- | Quantum Package > pt2 \- | Quantum Package >
. .

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "QP_CREATE_EZFIO_FROM_XYZ" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "QP_CREATE_EZFIO_FROM_XYZ" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
qp_create_ezfio_from_xyz \- | Quantum Package > qp_create_ezfio_from_xyz \- | Quantum Package >
. .

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "QP_STOP" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "QP_STOP" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
qp_stop \- | Quantum Package > qp_stop \- | Quantum Package >
. .

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "QPSH" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "QPSH" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
qpsh \- | Quantum Package > qpsh \- | Quantum Package >
. .
@ -153,7 +153,7 @@ qp (run|srun|mpirun) [options] <program>
.UNINDENT .UNINDENT
.UNINDENT .UNINDENT
.sp .sp
Runs qp_run, qp_srun, or qp_mpirun using the current Runs qp_run, \fBqp_srun\fP, or \fBqp_mpirun\fP using the current
\fI\%EZFIO\fP directory. \fI\%EZFIO\fP directory.
.UNINDENT .UNINDENT
.INDENT 0.0 .INDENT 0.0

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "RS_KS_SCF" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "RS_KS_SCF" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
rs_ks_scf \- | Quantum Package > rs_ks_scf \- | Quantum Package >
. .

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "SAVE_NATORB" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "SAVE_NATORB" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
save_natorb \- | Quantum Package > save_natorb \- | Quantum Package >
. .

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "SAVE_ONE_E_DM" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "SAVE_ONE_E_DM" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
save_one_e_dm \- | Quantum Package > save_one_e_dm \- | Quantum Package >
. .

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "SAVE_ORTHO_MOS" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "SAVE_ORTHO_MOS" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
save_ortho_mos \- | Quantum Package > save_ortho_mos \- | Quantum Package >
. .

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "SCF" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "SCF" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
scf \- | Quantum Package > scf \- | Quantum Package >
. .

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "WRITE_INTEGRALS_ERF" "1" "Jan 25, 2019" "2.0" "Quantum Package" .TH "WRITE_INTEGRALS_ERF" "1" "Jan 29, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
write_integrals_erf \- | Quantum Package > write_integrals_erf \- | Quantum Package >
. .
@ -32,7 +32,8 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.. ..
.INDENT 0.0 .INDENT 0.0
.INDENT 3.5 .INDENT 3.5
Saves the two\-electron integrals with the erf(\emu r_{12})/r_{12} oprerator into the EZFIO folder Saves the two\-electron integrals with the $erf(mu r_{12})/r_{12}$
oprerator into the EZFIO directory.
.sp .sp
Needs: Needs:
.INDENT 0.0 .INDENT 0.0

View File

@ -17,9 +17,13 @@ The |AO| coefficients are normalized as:
{\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr} {\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr}
Warning: `ao_coef` contains the |AO| coefficients given in input. These do not
include the normalization constant of the |AO|. The `ao_coef_normalized` provider includes .. warning::
this normalization factor.
`ao_coef` contains the |AO| coefficients given in input. These do not
include the normalization constant of the |AO|. The `ao_coef_normalized`
provider includes this normalization factor.
The |AOs| are also sorted by increasing exponent to accelerate the calculation of The |AOs| are also sorted by increasing exponent to accelerate the calculation of
the two electron integrals. the two electron integrals.

View File

@ -1,7 +1,7 @@
double precision function ao_value(i,r) double precision function ao_value(i,r)
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! return the value of the ith ao at point r ! Returns the value of the i-th ao at point $\textbf{r}$
END_DOC END_DOC
double precision, intent(in) :: r(3) double precision, intent(in) :: r(3)
integer, intent(in) :: i integer, intent(in) :: i
@ -35,7 +35,8 @@ end
double precision function primitive_value(i,j,r) double precision function primitive_value(i,j,r)
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! return the value of the jth primitive of ith ao at point r WITHOUT THE COEF ! Returns the value of the j-th primitive of the i-th |AO| at point $\textbf{r}
! **without the coefficient**
END_DOC END_DOC
double precision, intent(in) :: r(3) double precision, intent(in) :: r(3)
integer, intent(in) :: i,j integer, intent(in) :: i,j
@ -68,7 +69,7 @@ end
subroutine give_all_aos_at_r_old(r,aos_array) subroutine give_all_aos_at_r_old(r,aos_array)
implicit none implicit none
BEGIN_dOC BEGIN_dOC
! gives the values of aos at a given point r ! Gives the values of |AOs| at a given point $\textbf{r}$
END_DOC END_DOC
double precision, intent(in) :: r(3) double precision, intent(in) :: r(3)
double precision, intent(out) :: aos_array(ao_num) double precision, intent(out) :: aos_array(ao_num)
@ -83,8 +84,9 @@ end
subroutine give_all_aos_at_r(r,aos_array) subroutine give_all_aos_at_r(r,aos_array)
implicit none implicit none
BEGIN_dOC BEGIN_dOC
! input : r == r(1) = x and so on ! input : r == r(1) = x and so on
! aos_array(i) = aos(i) evaluated in r !
! output : aos_array(i) = aos(i) evaluated in $\textbf{r}$
END_DOC END_DOC
double precision, intent(in) :: r(3) double precision, intent(in) :: r(3)
double precision, intent(out) :: aos_array(ao_num) double precision, intent(out) :: aos_array(ao_num)
@ -121,9 +123,13 @@ end
subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array)
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z ! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z
! output : aos_array(i) = ao(i) evaluated at r !
! : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r ! output :
!
! * aos_array(i) = ao(i) evaluated at ro
! * aos_grad_array(1,i) = gradient X of the ao(i) evaluated at $\textbf{r}$
!
END_DOC END_DOC
double precision, intent(in) :: r(3) double precision, intent(in) :: r(3)
double precision, intent(out) :: aos_array(ao_num) double precision, intent(out) :: aos_array(ao_num)
@ -187,9 +193,12 @@ end
subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array)
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z ! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z
! output : aos_array(i) = ao(i) evaluated at r !
! : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r ! output :
!
! * aos_array(i) = ao(i) evaluated at $\textbf{r}$
! * aos_grad_array(1,i) = $\nabla_x$ of the ao(i) evaluated at $\textbf{r}$
END_DOC END_DOC
double precision, intent(in) :: r(3) double precision, intent(in) :: r(3)
double precision, intent(out) :: aos_array(ao_num) double precision, intent(out) :: aos_array(ao_num)

View File

@ -5,8 +5,10 @@
BEGIN_DOC BEGIN_DOC
! Second derivative matrix elements in the |AO| basis. ! Second derivative matrix elements in the |AO| basis.
! !
! :math:`{\tt ao\_deriv2\_x} = ! .. math::
! \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` !
! {\tt ao\_deriv2\_x} =
! \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle
! !
END_DOC END_DOC
integer :: i,j,n,l integer :: i,j,n,l
@ -122,7 +124,8 @@ BEGIN_PROVIDER [double precision, ao_kinetic_integrals, (ao_num,ao_num)]
BEGIN_DOC BEGIN_DOC
! Kinetic energy integrals in the |AO| basis. ! Kinetic energy integrals in the |AO| basis.
! !
! :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` ! $\langle \chi_i |\hat{T}| \chi_j \rangle$
!
END_DOC END_DOC
integer :: i,j,k,l integer :: i,j,k,l

View File

@ -2,7 +2,7 @@ subroutine give_all_erf_kl_ao(integrals_ao,mu_in,C_center)
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! Subroutine that returns all integrals over $r$ of type ! Subroutine that returns all integrals over $r$ of type
! $\frac{ \erf(\mu * |r-R_C|) }{ |r-R_C| }$ ! $\frac{ \erf(\mu * | r - R_C | ) }{ | r - R_C | }$
END_DOC END_DOC
double precision, intent(in) :: mu_in,C_center(3) double precision, intent(in) :: mu_in,C_center(3)
double precision, intent(out) :: integrals_ao(ao_num,ao_num) double precision, intent(out) :: integrals_ao(ao_num,ao_num)
@ -20,7 +20,7 @@ double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center)
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! Computes the following integral : ! Computes the following integral :
! $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) \frac{\erf(\mu |r-R_C|)}{|r-R_C|}$. ! $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) \frac{\erf(\mu | r - R_C | )}{ | r - R_C | }$.
END_DOC END_DOC
integer, intent(in) :: i_ao,j_ao integer, intent(in) :: i_ao,j_ao
double precision, intent(in) :: mu_in, C_center(3) double precision, intent(in) :: mu_in, C_center(3)
@ -51,8 +51,12 @@ end
double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in) double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in)
BEGIN_DOC BEGIN_DOC
! Computes the following integral : ! Computes the following integral :
! $\int dr (x-A_x)^a (x-B_x)^b \exp(-\alpha (x-A_x)^2 - \beta (x-B_x)^2 ) !
! \frac{\erf(\mu |r-R_C|)}{|r-R_c|}$. ! .. math::
!
! \int dr (x-A_x)^a (x-B_x)^b \exp(-\alpha (x-A_x)^2 - \beta (x-B_x)^2 )
! \frac{\erf(\mu | r - R_C | )}{ | r - R_C | }$.
!
END_DOC END_DOC
implicit none implicit none
@ -126,7 +130,8 @@ end
subroutine give_polynomial_mult_center_one_e_erf_opt(A_center,B_center,alpha,beta,& subroutine give_polynomial_mult_center_one_e_erf_opt(A_center,B_center,alpha,beta,&
power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center) power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center)
BEGIN_DOC BEGIN_DOC
! Returns the explicit polynomial in terms of the $t$ variable of the following polynomial: ! Returns the explicit polynomial in terms of the $t$ variable of the
! following polynomial:
! !
! $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. ! $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$.
END_DOC END_DOC
@ -244,7 +249,8 @@ end
subroutine give_polynomial_mult_center_one_e_erf(A_center,B_center,alpha,beta,& subroutine give_polynomial_mult_center_one_e_erf(A_center,B_center,alpha,beta,&
power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in) power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in)
BEGIN_DOC BEGIN_DOC
! Returns the explicit polynomial in terms of the $t$ variable of the following polynomial: ! Returns the explicit polynomial in terms of the $t$ variable of the
! following polynomial:
! !
! $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. ! $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$.
END_DOC END_DOC
@ -262,7 +268,6 @@ subroutine give_polynomial_mult_center_one_e_erf(A_center,B_center,alpha,beta,&
double precision :: accu, pq_inv, p10_1, p10_2, p01_1, p01_2 double precision :: accu, pq_inv, p10_1, p10_2, p01_1, p01_2
double precision :: p,P_center(3),rho,p_inv,p_inv_2 double precision :: p,P_center(3),rho,p_inv,p_inv_2
accu = 0.d0 accu = 0.d0
!COMPTEUR irp_rdtsc1 = irp_rdtsc()
ASSERT (n_pt_in > 1) ASSERT (n_pt_in > 1)
p = alpha+beta p = alpha+beta
p_inv = 1.d0/p p_inv = 1.d0/p

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