mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-08-30 12:43:40 +02:00
changed the configure
This commit is contained in:
parent
ab5fd75524
commit
1ae6af7ce3
15
configure
vendored
15
configure
vendored
@ -9,6 +9,14 @@ eval set -- "$TEMP"
|
|||||||
export QP_ROOT="$( cd "$(dirname "$0")" ; pwd -P )"
|
export QP_ROOT="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||||
echo "QP_ROOT="$QP_ROOT
|
echo "QP_ROOT="$QP_ROOT
|
||||||
|
|
||||||
|
# Check if the module to create new DFT functionals exists or not
|
||||||
|
if [[ ! -d ${QP_ROOT}/src/new_functionals ]] ; then
|
||||||
|
echo "${QP_ROOT}/src/new_functionals does NOT exists !!"
|
||||||
|
echo "Creating a new one ..."
|
||||||
|
cp -r ${QP_ROOT}/scripts/functionals/do_not_touch_func ${QP_ROOT}/src/new_functionals
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function help()
|
function help()
|
||||||
{
|
{
|
||||||
@ -443,13 +451,6 @@ else
|
|||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if the module to create new DFT functionals exists or not
|
|
||||||
if [[ ! -d ${QP_ROOT}/src/new_functionals ]] ; then
|
|
||||||
echo "${QP_ROOT}/src/new_functionals does NOT exists !!"
|
|
||||||
echo "Creating a new one ..."
|
|
||||||
cp -r ${QP_ROOT}/scripts/functionals/do_not_touch_func ${QP_ROOT}/src/new_functionals
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,6 +76,8 @@
|
|||||||
.. |SCF| replace:: :abbr:`SCF (Self Consistent Field)`
|
.. |SCF| replace:: :abbr:`SCF (Self Consistent Field)`
|
||||||
.. |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)`
|
||||||
|
.. |LDA| replace:: :abbr:`LDA (Local Density Approximation)`
|
||||||
|
.. |PBE| replace:: :abbr:`PBE (Perdew-Burke-Ernzerhof)`
|
||||||
|
|
||||||
.. |kalpha| replace:: :math:`|\alpha \rangle`
|
.. |kalpha| replace:: :math:`|\alpha \rangle`
|
||||||
.. |H| replace:: :math:`\hat H`
|
.. |H| replace:: :math:`\hat H`
|
||||||
|
@ -39,7 +39,8 @@
|
|||||||
|
|
||||||
programmers_guide/programming
|
programmers_guide/programming
|
||||||
programmers_guide/ezfio
|
programmers_guide/ezfio
|
||||||
/programmers_guide/plugins
|
programmers_guide/plugins
|
||||||
|
programmers_guide/new_ks
|
||||||
programmers_guide/index
|
programmers_guide/index
|
||||||
programmers_guide/plugins
|
programmers_guide/plugins
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,905 +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 : $x_1^{a_x} y_1^{a_y} z_1^{a_z} \exp(-\alpha * r1^2)$
|
|
||||||
* primitive 2 : $x_1^{b_x} y_1^{b_y} z_1^{b_z} \exp(- \beta * r1^2)$
|
|
||||||
* primitive 3 : $x_2^{c_x} y_2^{c_y} z_2^{c_z} \exp(-\delta * r2^2)$
|
|
||||||
* primitive 4 : $x_2^{d_x} y_2^{d_y} z_2^{d_z} \exp(-\gamma * 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 polynomial :
|
|
||||||
|
|
||||||
$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
@ -1,53 +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| directory in a different place than determinants.
|
|
||||||
This is used in practice to store density matrices which can be obtained from
|
|
||||||
any method, 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 the convergence.
|
|
||||||
|
|
||||||
The main providers of that module are:
|
|
||||||
|
|
||||||
* :c:data:`data_one_e_dm_alpha_mo` and :c:data:`data_one_e_dm_beta_mo` which
|
|
||||||
are the one-body alpha and beta densities which are necessary read from the
|
|
||||||
|EZFIO| directory.
|
|
||||||
|
|
||||||
|
|
||||||
Thanks to these providers you can use any density matrix that does not
|
|
||||||
necessarily 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
|
|
||||||
|
|
@ -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
@ -1,280 +0,0 @@
|
|||||||
.. _module_cis:
|
|
||||||
|
|
||||||
.. program:: cis
|
|
||||||
|
|
||||||
.. default-role:: option
|
|
||||||
|
|
||||||
===
|
|
||||||
cis
|
|
||||||
===
|
|
||||||
|
|
||||||
This module contains a |CIS| program.
|
|
||||||
|
|
||||||
The user point of view
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
The :ref:`cis` program performs the CI to obtain the ROHF reference + 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 :ref:`scf` program gave the lowest |SCF|
|
|
||||||
solution. In combination with :ref:`save_natorb` it can produce new |MOs| in
|
|
||||||
order to reperform an :ref:`scf` optimization.
|
|
||||||
|
|
||||||
* **Excited states calculations**: generate guesses for all the
|
|
||||||
:option:`determinants n_states` wave functions, that will be used by the
|
|
||||||
:ref:`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 |S^2|
|
|
||||||
|
|
||||||
* :option:`determinants expected_s2`: desired value of |S^2|
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The programmer's point of view
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
This module was 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`
|
|
||||||
|
|
@ -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
@ -1,13 +0,0 @@
|
|||||||
.. _module_davidson_dressed:
|
|
||||||
|
|
||||||
.. program:: davidson_dressed
|
|
||||||
|
|
||||||
.. default-role:: option
|
|
||||||
|
|
||||||
================
|
|
||||||
davidson_dressed
|
|
||||||
================
|
|
||||||
|
|
||||||
Davidson with single-column dressing.
|
|
||||||
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
@ -1,310 +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| directory (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
@ -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`
|
|
||||||
|
|
||||||
|
|
@ -1,882 +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
@ -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
|
|
@ -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`
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
|||||||
.. _module_fci:
|
|
||||||
|
|
||||||
.. program:: fci
|
|
||||||
|
|
||||||
.. default-role:: option
|
|
||||||
|
|
||||||
===
|
|
||||||
fci
|
|
||||||
===
|
|
||||||
|
|
||||||
|
|
||||||
|CIPSI| algorithm in the full configuration interaction space.
|
|
||||||
|
|
||||||
|
|
||||||
The user point of view
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
* :ref:`fci` performs |CIPSI| calculations using a stochastic scheme for both
|
|
||||||
the selection and the |PT2| contribution,
|
|
||||||
|
|
||||||
* :ref:`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 :ref:`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 abs(|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| directory.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
For a multi-state calculation, it is recommended to start with :ref:`cis`
|
|
||||||
or :ref:`cisd` wave functions as a guess.
|
|
||||||
|
|
||||||
* :option:`determinants expected_s2` : expected value of |S^2| for the
|
|
||||||
desired spin multiplicity.
|
|
||||||
|
|
||||||
* :option:`determinants s2_eig` : if |true|, systematically add all the
|
|
||||||
determinants needed to have a pure value of |S^2|. Also, if |true|, it
|
|
||||||
tracks only the states having the good :option:`determinants expected_s2`.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The programmer's point of view
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
This module was created with the :ref:`module_cipsi` module.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
|
|
||||||
The documentation of the :ref:`module_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`
|
|
||||||
|
|
@ -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).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
@ -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:`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`
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
@ -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
|
|
||||||
-----------------------
|
|
@ -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`
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
@ -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
@ -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`
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
||||||
|
|
@ -1,998 +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: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:: 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: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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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)
|
|
||||||
|
|
||||||
|
|
||||||
Apply 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`
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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|.
|
|
||||||
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
@ -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:`module_generators_cas`, and then the rest of the wave function.
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
@ -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`
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
||||||
|
|
@ -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
5
docs/source/programmers_guide/new_ks.rst
Normal file
5
docs/source/programmers_guide/new_ks.rst
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
==================================
|
||||||
|
Developping new functionals for KS
|
||||||
|
==================================
|
||||||
|
|
||||||
|
|
@ -35,21 +35,21 @@ subroutine davidson_run_slave(thread,iproc)
|
|||||||
integer(ZMQ_PTR) :: zmq_socket_push
|
integer(ZMQ_PTR) :: zmq_socket_push
|
||||||
|
|
||||||
integer, external :: connect_to_taskserver
|
integer, external :: connect_to_taskserver
|
||||||
integer, external :: zmq_get_N_states_diag
|
integer :: doexit, send, receive
|
||||||
|
|
||||||
PROVIDE mpi_rank
|
|
||||||
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
||||||
zmq_socket_push = new_zmq_push_socket(thread)
|
|
||||||
|
|
||||||
|
doexit = 0
|
||||||
integer :: ierr, doexit
|
if (connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread) == -1) then
|
||||||
do
|
doexit=1
|
||||||
doexit = 0
|
endif
|
||||||
if (connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread) == -1) then
|
IRP_IF MPI
|
||||||
call sleep( int(1.5+float(mpi_rank)/10.) )
|
include 'mpif.h'
|
||||||
if (connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread) == -1) then
|
integer :: ierr
|
||||||
doexit=1
|
send = doexit
|
||||||
endif
|
call MPI_AllReduce(send, receive, 1, MPI_INTEGER, MPI_SUM, MPI_COMM_WORLD, ierr)
|
||||||
|
if (ierr /= MPI_SUCCESS) then
|
||||||
|
doexit=1
|
||||||
endif
|
endif
|
||||||
doexit = receive
|
doexit = receive
|
||||||
IRP_ENDIF
|
IRP_ENDIF
|
||||||
@ -58,33 +58,8 @@ subroutine davidson_run_slave(thread,iproc)
|
|||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
IRP_IF MPI
|
zmq_socket_push = new_zmq_push_socket(thread)
|
||||||
include 'mpif.h'
|
|
||||||
integer :: sendbuf, recvbuf
|
|
||||||
sendbuf = doexit
|
|
||||||
recvbuf = doexit
|
|
||||||
call MPI_ALLREDUCE(sendbuf, recvbuf, 1, MPI_INTEGER, MPI_SUM, MPI_COMM_WORLD, ierr)
|
|
||||||
if (ierr /= MPI_SUCCESS) then
|
|
||||||
print *, irp_here//': Unable to reduce '
|
|
||||||
stop -1
|
|
||||||
endif
|
|
||||||
doexit = recvbuf
|
|
||||||
IRP_ENDIF
|
|
||||||
|
|
||||||
if (doexit == 0) then
|
|
||||||
exit
|
|
||||||
else
|
|
||||||
print *, irp_here, ': retrying connection (', doexit, ')'
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
|
|
||||||
do
|
|
||||||
if (zmq_get_N_states_diag(zmq_to_qp_run_socket, 1) /= -1) then
|
|
||||||
exit
|
|
||||||
endif
|
|
||||||
print *, irp_here, ': Waiting for N_states_diag'
|
|
||||||
call sleep(1)
|
|
||||||
enddo
|
|
||||||
call davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_states_diag, N_det, worker_id)
|
call davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_states_diag, N_det, worker_id)
|
||||||
|
|
||||||
integer, external :: disconnect_from_taskserver
|
integer, external :: disconnect_from_taskserver
|
||||||
@ -97,7 +72,8 @@ subroutine davidson_run_slave(thread,iproc)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
call end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
|
call end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
|
||||||
call end_zmq_push_socket(zmq_socket_push,thread)
|
call end_zmq_push_socket(zmq_socket_push)
|
||||||
|
|
||||||
end subroutine
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
@ -147,8 +123,9 @@ subroutine davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze,
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
do while (zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, 'u_t', u_t, ni, nj, size(u_t,kind=8)) == -1)
|
do while (zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, 'u_t', u_t, ni, nj, size(u_t,kind=8)) == -1)
|
||||||
call sleep(1)
|
print *, 'mpi_rank, N_states_diag, N_det'
|
||||||
print *, irp_here, ': waiting for u_t...'
|
print *, mpi_rank, N_states_diag, N_det
|
||||||
|
stop 'u_t'
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
IRP_IF MPI
|
IRP_IF MPI
|
||||||
@ -353,9 +330,9 @@ subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze)
|
|||||||
|
|
||||||
call new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,'davidson')
|
call new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,'davidson')
|
||||||
|
|
||||||
integer :: N_states_diag_save
|
! integer :: N_states_diag_save
|
||||||
N_states_diag_save = N_states_diag
|
! N_states_diag_save = N_states_diag
|
||||||
N_states_diag = N_st
|
! N_states_diag = N_st
|
||||||
if (zmq_put_N_states_diag(zmq_to_qp_run_socket, 1) == -1) then
|
if (zmq_put_N_states_diag(zmq_to_qp_run_socket, 1) == -1) then
|
||||||
stop 'Unable to put N_states_diag on ZMQ server'
|
stop 'Unable to put N_states_diag on ZMQ server'
|
||||||
endif
|
endif
|
||||||
@ -474,8 +451,8 @@ subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze)
|
|||||||
!$OMP TASKWAIT
|
!$OMP TASKWAIT
|
||||||
!$OMP END PARALLEL
|
!$OMP END PARALLEL
|
||||||
|
|
||||||
N_states_diag = N_states_diag_save
|
! N_states_diag = N_states_diag_save
|
||||||
SOFT_TOUCH N_states_diag
|
! SOFT_TOUCH N_states_diag
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -588,3 +565,4 @@ integer function zmq_get_N_states_diag(zmq_to_qp_run_socket, worker_id)
|
|||||||
endif
|
endif
|
||||||
IRP_ENDIF
|
IRP_ENDIF
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -2,12 +2,32 @@
|
|||||||
dft_keywords
|
dft_keywords
|
||||||
============
|
============
|
||||||
|
|
||||||
This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as:
|
This module contains the main keywords related to a DFT calculation or RS-DFT calculation.
|
||||||
|
These keywords are related to the following programs of the |QP| core modules:
|
||||||
|
|
||||||
* :option:`dft_keywords exchange_functional`
|
* :ref:`ks_scf` : Kohn-Sham |DFT|
|
||||||
* :option:`dft_keywords correlation_functional`
|
* :ref:`rs_ks_scf` : Range separated Hybrids |DFT|
|
||||||
* :option:`dft_keywords HF_exchange` : only relevent for the :c:func:`rs_ks_scf` program
|
|
||||||
|
|
||||||
|
|
||||||
|
Modifying the exchange/correlation functionals
|
||||||
|
----------------------------------------------
|
||||||
|
To modify the exchange/correlation functionals, see the following keywords:
|
||||||
|
|
||||||
|
* :option:`dft_keywords exchange_functional`: type of exchange functionals
|
||||||
|
* :option:`dft_keywords correlation_functional`: type of correlation functionals
|
||||||
|
|
||||||
|
Each of these keywords can have the following value:
|
||||||
|
* "LDA" or "short_range_LDA" for, respectively the |LDA| and its short-range version
|
||||||
|
* "PBE" or "short_range_PBE" for, respectively the |PBE| and its short-range version
|
||||||
|
|
||||||
|
|
||||||
|
Modifying the amount of |HF| exchange
|
||||||
|
-------------------------------------
|
||||||
|
* :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program
|
||||||
|
|
||||||
|
|
||||||
|
Other related keywords not defined in :ref:`module_dft_keywords`
|
||||||
|
----------------------------------------------------------------
|
||||||
The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_ints mu_erf` keyword.
|
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.
|
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.
|
||||||
|
@ -2,19 +2,10 @@
|
|||||||
dft_utils_one_e
|
dft_utils_one_e
|
||||||
===============
|
===============
|
||||||
|
|
||||||
This module contains all the one-body related quantities needed to perform DFT or RS-DFT calculations.
|
This module contains all the one-body related quantities needed to perform DFT or RS-DFT calculations with the LDA and PBE functionals.
|
||||||
Therefore, it contains most of the properties which depends on the one-body density and density matrix.
|
Therefore, it contains most of the properties which depends on the one-body density and density matrix.
|
||||||
|
|
||||||
The most important files and variables are:
|
Some interesting quantities you might take a look at:
|
||||||
|
|
||||||
* The general *providers* for the x/c energies in :file:`e_xc_general.irp.f`
|
|
||||||
* The general *providers* for the x/c potentials in :file:`pot_general.irp.f`
|
|
||||||
* The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f`
|
|
||||||
|
|
||||||
These *providers* will be used in many DFT-related programs, such as :file:`ks_scf.irp.f` or :file:`rs_ks_scf.irp.f`.
|
|
||||||
It is also needed to compute the effective one-body operator needed in multi-determinant RS-DFT (see plugins by eginer).
|
|
||||||
|
|
||||||
Some other interesting quantities:
|
|
||||||
|
|
||||||
* The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f`
|
* The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f`
|
||||||
* The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f`
|
* The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f`
|
||||||
|
@ -3,14 +3,29 @@ hartree_fock
|
|||||||
============
|
============
|
||||||
|
|
||||||
|
|
||||||
|
Quick description
|
||||||
|
-----------------
|
||||||
|
|
||||||
The :ref:`scf` program performs *Restricted* Hartree-Fock
|
The :ref:`scf` program performs *Restricted* Hartree-Fock
|
||||||
calculations (the spatial part of the |MOs| is common for alpha and beta
|
calculations (the spatial part of the |MOs| is common for alpha and beta
|
||||||
spinorbitals).
|
spinorbitals).
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
To see the keywords/options associated to the |SCF| algorithm itself,
|
||||||
|
see the documentation of the :ref:`module_scf_utils` module.
|
||||||
|
|
||||||
|
|
||||||
|
More advanced description
|
||||||
|
-------------------------
|
||||||
|
|
||||||
The Hartree-Fock algorithm is a |SCF| and therefore is based on the
|
The Hartree-Fock algorithm is a |SCF| and therefore is based on the
|
||||||
:ref:`module_scf_utils` module.
|
:ref:`module_scf_utils` module.
|
||||||
|
|
||||||
The Fock matrix is defined in :file:`fock_matrix_hf.irp.f`.
|
The Fock matrix is defined in :file:`fock_matrix_hf.irp.f`.
|
||||||
|
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
For a more detailed description of the |SCF| structure,
|
||||||
|
see the documentation of the :ref:`module_scf_utils` module.
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,40 +2,34 @@
|
|||||||
kohn_sham
|
kohn_sham
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
Quick description
|
||||||
|
-----------------
|
||||||
|
|
||||||
The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
|
The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
|
||||||
spatial part of the |MOs| is common for alpha and beta spinorbitals).
|
spatial part of the |MOs| is common for alpha and beta spinorbitals).
|
||||||
|
The program associated to it is the :ref:`ks_scf` executable.
|
||||||
|
|
||||||
The Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure.
|
.. seealso::
|
||||||
It performs the following actions:
|
|
||||||
|
|
||||||
#. Compute/Read all the one- and two-electron integrals, and store them in memory
|
The documentation of the :ref:`module_dft_keywords` module for the various keywords
|
||||||
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
|
such as the exchange/correlation functionals or the amount of |HF| exchange.
|
||||||
will read them as initial guess. Otherwise, it will create a guess.
|
|
||||||
#. Perform the |SCF| iterations
|
|
||||||
|
.. seealso::
|
||||||
|
To see the keywords/options associated to the |SCF| algorithm itself,
|
||||||
|
see the documentation of the :ref:`module_scf_utils` module.
|
||||||
|
|
||||||
|
|
||||||
|
More advanced description
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
The Kohn-Sham in an SCF and therefore is based on the :ref:`module_scf_utils` structure.
|
||||||
|
|
||||||
The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f`
|
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.
|
|
||||||
|
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
For a more detailed description of the |SCF| structure,
|
||||||
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
|
see the documentation of the :ref:`module_scf_utils` module.
|
||||||
.. _level-shifting: https://doi.org/10.1002/qua.560070407
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,38 +3,37 @@ kohn_sham_rs
|
|||||||
============
|
============
|
||||||
|
|
||||||
|
|
||||||
The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
|
Quick description
|
||||||
spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange.
|
-----------------
|
||||||
|
|
||||||
|
The Range-separated Kohn-Sham module performs *Restricted* range-separated Hybrid calculation,
|
||||||
|
which means that only the long-range part of the *exact* exchange is taken into account.
|
||||||
|
|
||||||
|
The program associated to it is the :ref:`rs_ks_scf` executable.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
The documentation of the :ref:`module_dft_keywords` module for the various keywords
|
||||||
|
such as the exchange/correlation functionals or the range-separation parameter.
|
||||||
|
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
To see the keywords/options associated to the |SCF| algorithm itself,
|
||||||
|
see the documentation of the :ref:`module_scf_utils` module.
|
||||||
|
|
||||||
|
|
||||||
|
More advanced description
|
||||||
|
-------------------------
|
||||||
|
|
||||||
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 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.
|
The Range-separated Kohn-Sham in an SCF and therefore is based on the :ref:`module_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`
|
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
|
.. seealso::
|
||||||
crashes for any unexpected reason, the calculation can be restarted by running again
|
For a more detailed description of the |SCF| structure,
|
||||||
the |SCF| with the same |EZFIO| database.
|
see the documentation of the :ref:`module_scf_utils` module.
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user