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

* corrected the laplacians of aos

* added dft_one_e

* added new feature for new dft functionals

* changed the configure to add new functionals

* changed the configure

* added dft_one_e/README.rst

* added README.rst in new_functionals

* added source/programmers_guide/new_ks.rst

* Thesis Yann

* Added gmp installation in configure

* improved qp_e_conv_fci

* Doc

* Typos

* Added variance_max

* Fixed completion in qp_create

* modif TODO

* fixed DFT potential for n_states gt 1

* improved pot pbe

* trying to improve sr PBE

* fixed potential pbe

* fixed the vxc smashed for pbe sr and normal

* Comments in selection

* bug fixed by peter

* Fixed bug with zero beta electrons

* Update README.rst

* Update e_xc_new_func.irp.f

* Update links.rst

* Update quickstart.rst

* Update quickstart.rst

* updated cipsi

* Fixed energies of non-expected s2 (#9)

* Moved diag_algorithm in Davdison
This commit is contained in:
Anthony Scemama 2019-02-22 19:19:58 +01:00 committed by GitHub
parent f6e5b4aeef
commit 49e9488f62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
152 changed files with 2164 additions and 43133 deletions

View File

@ -8,7 +8,7 @@ repository <https://github.com/LCPQ/quantum_package>`_.
.. code:: bash .. code:: bash
git clone https://github.com/LCPQ/quantum_package git clone https://github.com/QuantumPackage/qp2
Before anything, go into your :file:`quantum_package` directory and run Before anything, go into your :file:`quantum_package` directory and run
@ -43,6 +43,7 @@ Requirements
- `Zlib`_ - `Zlib`_
- `GNU Patch`_ - `GNU Patch`_
- |ZeroMQ| : networking library - |ZeroMQ| : networking library
- `GMP <https://gmplib.org/>`_ : Gnu Multiple Precision Arithmetic Library
- |OCaml| compiler with |OPAM| package manager - |OCaml| compiler with |OPAM| package manager
- |Ninja| : a parallel build system - |Ninja| : a parallel build system
@ -84,6 +85,7 @@ The following packages are supported by the :command:`configure` installer:
* irpf90 * irpf90
* zeromq * zeromq
* f77zmq * f77zmq
* gmp
* ocaml ( :math:`\approx` 10 minutes) * ocaml ( :math:`\approx` 10 minutes)
* ezfio * ezfio
* docopt * docopt
@ -110,11 +112,11 @@ If the :command:`configure` executable fails to install a specific dependency
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
If the :command:`configure` executable does not succeed to install a specific dependency, If the :command:`configure` executable does not succeed to install a specific dependency,
there are some proposition of how to download and install the minimal dependencies to compile and use the |QP| there are some proposition of how to download and install the minimal dependencies to compile and use the |QP|.
Before doing anything below, try to install the packages with your package manager Before doing anything below, try to install the packages with your package manager
(:command:`apt`, :command:`yum`, etc) (:command:`apt`, :command:`yum`, etc).
Ninja Ninja
@ -216,6 +218,29 @@ With Debian or Ubuntu, you can use
sudo apt install zlib1g-dev sudo apt install zlib1g-dev
GMP
---
GMP is the GNU Multiple Precision Arithmetic Library.
* Download the latest version of gmp here:
`<ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2>`_
and move it in the :file:`${QP_ROOT}/external` directory
* Extract the archive, go into the :file:`gmp-*` directory and run
the following commands
.. code:: bash
./configure --prefix=${QP_ROOT}
make
make install
With Debian or Ubuntu, you can use
.. code:: bash
sudo apt install libgmp-dev
OCaml OCaml

11
TODO
View File

@ -57,4 +57,13 @@ Doc: plugins et qp_plugins
Ajouter les symetries dans devel Ajouter les symetries dans devel
Compiler ezfio avec openmp
# Parallelize i_H_psi
IMPORTANT:
Davidson Diagonalization
------------------------
Not enough memory: aborting in davidson_diag_hjj_sjj

View File

@ -1,19 +1,96 @@
#!/bin/bash #!/bin/bash
file=$1
# Check the QP_ROOT directory
if [[ -z ${QP_ROOT} ]] ; then if [[ -z ${QP_ROOT} ]] ; then
>&2 echo "please source quantum_package.rc" >&2 echo "please source quantum_package.rc"
exit 1 exit 1
fi fi
source ${QP_ROOT}/quantum_package.rc source ${QP_ROOT}/quantum_package.rc
qp_run print_e_conv $1 TEMP=$(getopt -o h -l ,help -n $0 -- "$@") || exit 1 # get the input / options
nstates=`cat ${1}/determinants/n_states` eval set -- "$TEMP"
function help(){
cat <<EOF
Check the convergence of a CIPSI calculation
Usage:
$(basename $0) EZFIO
Output:
For each ELECTRONIC STATE \$i, produces plain text files
* for the convergence of the TOTAL variational and E+PT2 energies
files EZFIO.\$i.conv
* gnuplot file to generate pdf image of the converge
files EZFIO.\$i.conv.plt
* if gnuplot is available, creates the pdf image
files EZFIO.\$i.conv.pdf
For each EXCITED STATE \$i, produces plain text files
* for the convergence of the ENERGY DIFFERENCE with the ground state
files EZFIO.\$i.delta_e.conv
* gnuplot file to generate pdf image of the converge
files EZFIO.\$i.delta_e.conv.plt
* if gnuplot is available, creates the pdf image
files EZFIO.\$i.delta_e.conv.pdf
Note:
If you're in qpsh mode and that a EZFIO is set, this will be taken as the EZFIO file
Options:
-h, --help Print the HELP message
Example: ground state calculation on the EZFIO h2o.ezfio
$(basename $0) h2o.ezfio
produces h2o.ezfio.1.conv, h2o.ezfio.1.conv.plt and h2o.ezfio.1.conv.pdf if gnuplot is available
EOF
exit
}
while true ; do
case "$1" in
-h|-help|--help)
help
exit 0;;
--) shift ; break ;;
"") help ; break ;;
esac
done
ezfio=${1%/} # take off the / at the end
if [[ ! -z ${EZFIO_FILE} ]] ; then
file=${EZFIO_FILE}
else
file=$ezfio
fi
if [[ -z ${file} ]] ; then
>&2 echo "You did not specify any EZFIO directory. "
exit 1
fi
gnuplot_ok=`hash gnuplot`
qp_run print_e_conv $file
nstates=`cat ${file}/determinants/n_states`
echo $nstates echo $nstates
for i in $(seq 1 $nstates) ; do for i in $(seq 1 $nstates) ; do
out=${1}.${i}.conv out=${file}.${i}.conv
cat << EOF > ${out}.plt cat << EOF > ${out}.plt
set term pdf set term pdf
set output "$out.pdf" set output "$out.pdf"
@ -25,13 +102,14 @@ plot "$out" w lp title "E_{var} state $i", "$out" u 1:3 w lp title "E_{var} + PT
EOF EOF
gnuplot ${out}.plt if [[ -z ${gnuplot_ok} ]] ; then
#rm ${out}.plt gnuplot ${out}.plt
fi
done done
for i in $(seq 2 $nstates) ; do for i in $(seq 2 $nstates) ; do
out=${1}.${i}.delta_e.conv out=${file}.${i}.delta_e.conv
cat << EOF > ${out}.plt cat << EOF > ${out}.plt
set term pdf set term pdf
set output "$out.pdf" set output "$out.pdf"
@ -42,6 +120,7 @@ set ylabel "Energy difference (a.u.)"
plot "$out" w lp title "Delta E_{var} state $i", "$out" u 1:3 w lp title "Delta E_{var} + PT2 state $i" plot "$out" w lp title "Delta E_{var} state $i", "$out" u 1:3 w lp title "Delta E_{var} + PT2 state $i"
EOF EOF
if [[ -z ${gnuplot_ok} ]] ; then
gnuplot ${out}.plt gnuplot ${out}.plt
# rm ${out}.plt fi
done done

67
config/cray.cfg Normal file
View File

@ -0,0 +1,67 @@
# Common flags
##############
#
# -mkl=[parallel|sequential] : Use the MKL library
# --ninja : Allow the utilisation of ninja. It is mandatory !
# --align=32 : Align all provided arrays on a 32-byte boundary
#
[COMMON]
FC : ftn -dynamic -fpic
LAPACK_LIB :
IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 -DMPI
# For KNL, use:
#IRPF90_FLAGS : --ninja --align=64 -DMPI
# Global options
################
#
# 1 : Activate
# 0 : Deactivate
#
[OPTION]
MODE : OPT ; [ OPT | PROFILE | DEBUG ] : Chooses the section below
CACHE : 0 ; Enable cache_compile.py
OPENMP : 1 ; Append OpenMP flags
# Optimization flags
####################
#
# -xHost : Compile a binary optimized for the current architecture
# -O2 : O3 not better than O2.
# -ip : Inter-procedural optimizations
# -ftz : Flushes denormal results to zero
#
[OPT]
FCFLAGS : -xCORE-AVX2 -O2 -ip -ftz -g -traceback -qopt-prefetch=5 -qopt-prefetch-issue-excl-hint -unroll-aggressive
#
#For KNL, use:
#FCFLAGS : -xMIC-AVX512 -O2 -ip -ftz -g -traceback -qopt-prefetch=5 -qopt-prefetch-issue-excl-hint -unroll-aggressive
#
# Profiling flags
#################
#
[PROFILE]
FC : -p -g
FCFLAGS : -xSSE4.2 -O2 -ip -ftz -qopt-prefetch
# Debugging flags
#################
#
# -traceback : Activate backtrace on runtime
# -fpe0 : All floating point exaceptions
# -C : Checks uninitialized variables, array subscripts, etc...
# -g : Extra debugging information
# -xSSE2 : Valgrind needs a very simple x86 executable
#
[DEBUG]
FC : -g -traceback
FCFLAGS : -xCORE-AVX2 -C -fpe0 -traceback
# OpenMP flags
#################
#
[OPENMP]
FC : -qopenmp
IRPF90_FLAGS : --openmp

31
configure vendored
View File

@ -9,6 +9,12 @@ 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
cp -r ${QP_ROOT}/scripts/functionals/do_not_touch_func ${QP_ROOT}/src/new_functionals
fi
function help() function help()
{ {
@ -175,7 +181,7 @@ if [[ "${PACKAGES}.x" != ".x" ]] ; then
fi fi
if [[ ${PACKAGES} = all ]] ; then if [[ ${PACKAGES} = all ]] ; then
PACKAGES="zlib ninja irpf90 zeromq f77zmq ocaml ezfio docopt resultsFile bats" PACKAGES="zlib ninja irpf90 zeromq f77zmq gmp ocaml ezfio docopt resultsFile bats"
fi fi
@ -192,6 +198,21 @@ for PACKAGE in ${PACKAGES} ; do
EOF EOF
elif [[ ${PACKAGE} = gmp ]] ; then
download \
"ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2" \
"${QP_ROOT}"/external/gmp.tar.bz2
execute << EOF
cd "\${QP_ROOT}"/external
tar --bzip2 --extract --file gmp.tar.bz2
rm gmp.tar.bz2
cd gmp*
./configure --prefix=$QP_ROOT && make -j 8
make install
EOF
elif [[ ${PACKAGE} = irpf90 ]] ; then elif [[ ${PACKAGE} = irpf90 ]] ; then
# When changing version of irpf90, don't forget to update etc/irpf90.rc # When changing version of irpf90, don't forget to update etc/irpf90.rc
@ -380,6 +401,12 @@ if [[ ${F77ZMQ} = $(not_found) ]] ; then
fail fail
fi fi
GMP=$(find_lib -lgmp)
if [[ ${ZLIB} = $(not_found) ]] ; then
error "GMP (gmp) is not installed."
fail
fi
OPAM=$(find_exe opam) OPAM=$(find_exe opam)
if [[ ${OPAM} = $(not_found) ]] ; then if [[ ${OPAM} = $(not_found) ]] ; then
error "OPAM (ocaml) package manager is not installed." error "OPAM (ocaml) package manager is not installed."
@ -443,7 +470,7 @@ else
echo "See ./configure --help for more details." echo "See ./configure --help for more details."
echo "" echo ""
fi fi
exit 0 exit 0

View File

@ -4,7 +4,7 @@
* option provider :option:`name_of_module provider` * option provider :option:`name_of_module provider`
* subroutine :c:func:`my_subroutine` * subroutine :c:func:`my_subroutine`
* module :ref:`module` * module :ref:`module`
* provider :c:data:`my_subroutine` * provider :c:data:`my_provider`
* qp_command :ref:`qp_command` * qp_command :ref:`qp_command`
* linux command :command:`qp_command` * linux command :command:`qp_command`
* linux command with option :command:`qp_command -o` * linux command with option :command:`qp_command -o`

View File

@ -0,0 +1,69 @@
#FIG 3.2 Produced by xfig version 3.2.5c
Landscape
Center
Metric
A4
100.00
Single
-2
1200 2
5 1 1 2 1 7 50 -1 -1 4.000 0 1 1 0 13522.825 11604.101 13950 13050 15030 11565 13815 10125
9 0 4.00 120.00 180.00
5 1 1 2 1 7 50 -1 -1 4.000 0 0 1 0 12568.409 3969.773 9360 9990 8010 9045 6975 7875
9 0 2.00 90.00 180.00
6 3375 8730 7650 11070
2 4 1 2 4 7 50 -1 -1 4.000 0 0 7 0 0 5
7605 11025 3420 11025 3420 8775 7605 8775 7605 11025
4 0 0 50 -1 0 12 0.0000 4 135 720 3825 10485 etc ... \001
4 0 0 50 -1 0 12 0.0000 4 165 2430 3825 10080 potential_sr_x_alpha_ao_LDA\001
4 0 0 50 -1 0 12 0.0000 4 165 2610 3825 9675 energy_x_LDA, energy_sr_c_PBE\001
4 0 1 50 -1 0 20 0.0000 4 165 2700 3465 9135 providers from dft_utils_one_e\001
-6
2 1 1 2 1 7 50 -1 -1 4.000 0 0 -1 1 0 2
9 0 2.00 90.00 180.00
5310 3555 5310 2790
2 4 1 2 4 7 50 -1 -1 4.000 0 0 7 0 0 5
7515 2745 3015 2745 3015 720 7515 720 7515 2745
2 4 1 2 4 7 50 -1 -1 4.000 0 0 7 0 0 5
7155 5535 3420 5535 3420 3645 7155 3645 7155 5535
2 1 1 2 1 7 50 -1 -1 4.000 0 0 -1 1 0 2
9 0 2.00 90.00 180.00
5175 6165 5175 5400
2 4 1 2 4 7 50 -1 -1 6.000 0 0 7 0 0 5
7380 7650 3645 7650 3645 6255 7380 6255 7380 7650
2 1 1 2 1 7 50 -1 -1 4.000 0 0 -1 1 0 2
9 0 2.00 90.00 180.00
5355 8640 5355 7695
2 2 0 3 15 7 50 -1 -1 0.000 0 0 -1 0 0 5
8820 11295 14850 11295 14850 14625 8820 14625 8820 11295
2 2 0 3 15 7 50 -1 -1 0.000 0 0 -1 0 0 5
2790 0 8190 0 8190 11475 2790 11475 2790 0
2 2 0 3 15 7 50 -1 -1 0.000 0 0 -1 0 0 5
8640 8100 14355 8100 14355 11160 8640 11160 8640 8100
2 4 1 2 4 7 50 -1 -1 4.000 0 0 7 0 0 5
13815 13950 9630 13950 9630 11700 13815 11700 13815 13950
2 4 1 2 4 7 50 -1 -1 4.000 0 0 7 0 0 5
13680 11070 9495 11070 9495 8820 13680 8820 13680 11070
4 0 1 50 -1 0 20 0.0000 4 165 2160 3690 4005 providers from dft_one_e\001
4 0 0 50 -1 0 12 0.0000 4 150 540 3465 1485 ks_scf\001
4 0 0 50 -1 0 12 0.0000 4 150 810 3465 1935 rs_ks_scf\001
4 0 0 50 -1 0 12 0.0000 4 165 2790 3465 2340 rsdft_cipsi, rsdft_ecmd etc ...\001
4 0 1 50 -1 0 20 0.0000 4 165 2070 3735 1035 DFT programs or plugins\001
4 0 0 50 -1 0 12 0.0000 4 165 3690 3825 4545 potential_x_alpha_ao, potential_x_beta_ao\001
4 0 0 50 -1 0 12 0.0000 4 135 720 3825 5355 etc ... \001
4 0 0 50 -1 0 12 0.0000 4 120 1620 3825 4950 energy_x, energy_c\001
4 0 1 50 -1 0 20 0.0000 4 165 2250 3780 6570 options from dft_keywords\001
4 0 0 50 -1 0 12 0.0000 4 165 1710 3870 6885 exchange_functional\001
4 0 0 50 -1 0 12 0.0000 4 150 1980 3870 7245 correlation_functional\001
4 0 15 50 -1 0 20 0.0000 4 150 1980 3645 315 Core modules of the QP\001
4 0 15 50 -1 0 20 0.0000 4 165 2700 10260 8505 link beetween core and plugins\001
4 0 0 50 -1 0 12 0.0000 4 165 1890 9765 12960 pot_ao_alpha_new_func\001
4 0 1 50 -1 0 20 0.0000 4 165 3060 9720 12105 providers from "fancy_functionals"\001
4 0 0 50 -1 0 12 0.0000 4 135 720 10035 13410 etc ... \001
4 0 0 50 -1 0 12 0.0000 4 165 3330 9765 12600 e_c_new_fancy_func,e_x_new_fancy_func\001
4 0 0 50 -1 0 12 0.0000 4 165 2070 9900 9720 energy_c_new_functional\001
4 0 0 50 -1 0 12 0.0000 4 135 720 9900 10530 etc ... \001
4 0 0 50 -1 0 12 0.0000 4 165 3060 9900 10125 potential_new_functional_x_beta_ao\001
4 0 1 50 -1 0 20 0.0000 4 165 2700 9585 9225 providers from new_functionals\001
4 0 15 50 -1 0 20 0.0000 4 165 1440 10485 11520 External plugins\001
4 0 1 50 -1 0 12 0.0000 4 165 3600 14670 10530 add "fancy_functionals" to the NEED file\001

Binary file not shown.

View File

@ -38,6 +38,9 @@
.. |OPAM| replace:: `OPAM`_ .. |OPAM| replace:: `OPAM`_
.. |Python| replace:: `Python`_ .. |Python| replace:: `Python`_
.. |qp| replace:: *Quantum Package* .. |qp| replace:: *Quantum Package*
.. |QP| replace:: |qp|
.. |qpsh| replace:: *Quantum Package Shell*
.. |QPSH| replace:: |qpsh|
.. |resultsFile| replace:: `resultsFile`_ .. |resultsFile| replace:: `resultsFile`_
.. |SLURM| replace:: `SLURM`_ .. |SLURM| replace:: `SLURM`_
.. |ZeroMQ| replace:: `ZeroMQ`_ .. |ZeroMQ| replace:: `ZeroMQ`_
@ -76,6 +79,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`

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,833 +0,0 @@
.. _module_becke_numerical_grid:
.. program:: becke_numerical_grid
.. default-role:: option
====================
becke_numerical_grid
====================
This module contains all quantities needed to build Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions.
This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains
a certain number of radial and angular points. No pruning is done on the angular part of the grid.
The main keyword for that module is:
* :option:`becke_numerical_grid grid_type_sgn` which controls the precision of the grid according the standard **SG-n** grids. This keyword controls the two providers `n_points_integration_angular` `n_points_radial_grid`.
The main providers of that module are:
* `n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 170 | 194 | 266 | 302 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details.
* `n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary.
* `final_grid_points` which are the (x,y,z) coordinates of the grid points.
* `final_weight_at_r_vector` which are the weights at each grid point
For a simple example of how to use the grid, see :file:`example.irp.f`.
The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/).
See next section for explanations and citation policies.
.. code-block:: text
This subroutine is part of a set of subroutines that generate
Lebedev grids [1-6] for integration on a sphere. The original
C-code [1] was kindly provided by Dr. Dmitri N. Laikov and
translated into fortran by Dr. Christoph van Wuellen.
This subroutine was translated using a C to fortran77 conversion
tool written by Dr. Christoph van Wuellen.
Users of this code are asked to include reference [1] in their
publications, and in the user- and programmers-manuals
describing their codes.
This code was distributed through CCL (http://www.ccl.net/).
[1] V.I. Lebedev, and D.N. Laikov
"A quadrature formula for the sphere of the 131st
algebraic order of accuracy"
Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481.
[2] V.I. Lebedev
"A quadrature formula for the sphere of 59th algebraic
order of accuracy"
Russian Acad. Sci. Dokl. Math., Vol. 50, 1995, pp. 283-286.
[3] V.I. Lebedev, and A.L. Skorokhodov
"Quadrature formulas of orders 41, 47, and 53 for the sphere"
Russian Acad. Sci. Dokl. Math., Vol. 45, 1992, pp. 587-592.
[4] V.I. Lebedev
"Spherical quadrature formulas exact to orders 25-29"
Siberian Mathematical Journal, Vol. 18, 1977, pp. 99-107.
[5] V.I. Lebedev
"Quadratures on a sphere"
Computational Mathematics and Mathematical Physics, Vol. 16,
1976, pp. 10-24.
[6] V.I. Lebedev
"Values of the nodes and weights of ninth to seventeenth
order Gauss-Markov quadrature formulae invariant under the
octahedron group with inversion"
Computational Mathematics and Mathematical Physics, Vol. 15,
1975, pp. 44-51.
EZFIO parameters
----------------
.. option:: grid_type_sgn
Type of grid used for the Becke's numerical grid. Can be, by increasing accuracy: [ 0 | 1 | 2 | 3 ]
Default: 2
Providers
---------
.. c:var:: alpha_knowles
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision, allocatable :: alpha_knowles (100)
Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996)
as a function of the nuclear charge
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: angular_quadrature_points
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3)
double precision, allocatable :: weights_angular_points (n_points_integration_angular)
weights and grid points for the integration on the angular variables on
the unit sphere centered on (0,0,0)
According to the LEBEDEV scheme
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: dr_radial_integral
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
double precision :: dr_radial_integral
points in [0,1] to map the radial integral [0,\infty]
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: final_grid_points
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: final_weight_at_r
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights.
Needs:
.. hlist::
:columns: 3
* :c:data:`alpha_knowles`
* :c:data:`angular_quadrature_points`
* :c:data:`grid_points_radial`
* :c:data:`m_knowles`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_charge`
* :c:data:`nucl_num`
* :c:data:`weight_at_r`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
.. c:var:: final_weight_at_r_vector
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: grid_points_per_atom
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: grid_points_per_atom (3,n_points_integration_angular,n_points_radial_grid,nucl_num)
x,y,z coordinates of grid points used for integration in 3d space
Needs:
.. hlist::
:columns: 3
* :c:data:`alpha_knowles`
* :c:data:`angular_quadrature_points`
* :c:data:`grid_points_radial`
* :c:data:`m_knowles`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_grid_points`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: grid_points_radial
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
double precision :: dr_radial_integral
points in [0,1] to map the radial integral [0,\infty]
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: index_final_points
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: index_final_points_reverse
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: m_knowles
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: m_knowles
value of the "m" parameter in the equation (7) of the paper of Knowles (JCP, 104, 1996)
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: n_points_final_grid
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
integer :: n_points_final_grid
Number of points which are non zero
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`final_grid_points`
* :c:data:`mos_grad_in_r_array`
* :c:data:`mos_in_r_array`
* :c:data:`mos_lapl_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
* :c:data:`potential_sr_c_alpha_ao_lda`
* :c:data:`potential_sr_x_alpha_ao_lda`
* :c:data:`potential_sr_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_pbe`
.. c:var:: n_points_grid_per_atom
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_grid_per_atom
Number of grid points per atom
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
.. c:var:: n_points_integration_angular
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_radial_grid
integer :: n_points_integration_angular
n_points_radial_grid = number of radial grid points per atom
n_points_integration_angular = number of angular grid points per atom
These numbers are automatically set by setting the grid_type_sgn parameter
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_type_sgn`
Needed by:
.. hlist::
:columns: 3
* :c:data:`angular_quadrature_points`
* :c:data:`final_grid_points`
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`grid_points_radial`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: n_points_radial_grid
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_radial_grid
integer :: n_points_integration_angular
n_points_radial_grid = number of radial grid points per atom
n_points_integration_angular = number of angular grid points per atom
These numbers are automatically set by setting the grid_type_sgn parameter
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_type_sgn`
Needed by:
.. hlist::
:columns: 3
* :c:data:`angular_quadrature_points`
* :c:data:`final_grid_points`
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`grid_points_radial`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: weight_at_r
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
Weight function at grid points : w_n(r) according to the equation (22)
of Becke original paper (JCP, 88, 1988)
The "n" discrete variable represents the nucleis which in this array is
represented by the last dimension and the points are labelled by the
other dimensions.
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_dist_inv`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_type_inter_distance_ua`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
.. c:var:: weights_angular_points
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3)
double precision, allocatable :: weights_angular_points (n_points_integration_angular)
weights and grid points for the integration on the angular variables on
the unit sphere centered on (0,0,0)
According to the LEBEDEV scheme
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
Subroutines / functions
-----------------------
.. c:function:: cell_function_becke:
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: fortran
double precision function cell_function_becke(r,atom_number)
atom_number :: atom on which the cell function of Becke (1988, JCP,88(4))
r(1:3) :: x,y,z coordinantes of the current point
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
* :c:data:`slater_bragg_type_inter_distance_ua`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_num`
.. c:function:: derivative_knowles_function:
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision function derivative_knowles_function(alpha,m,x)
Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points
.. c:function:: example_becke_numerical_grid:
File : :file:`becke_numerical_grid/example.irp.f`
.. code:: fortran
subroutine example_becke_numerical_grid
subroutine that illustrates the main features available in becke_numerical_grid
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_final_grid`
* :c:data:`final_weight_at_r`
* :c:data:`n_points_radial_grid`
* :c:data:`grid_points_per_atom`
* :c:data:`final_grid_points`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
.. c:function:: f_function_becke:
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: fortran
double precision function f_function_becke(x)
.. c:function:: knowles_function:
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision function knowles_function(alpha,m,x)
Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points :
the Log "m" function ( equation (7) in the paper )
.. c:function:: step_function_becke:
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: fortran
double precision function step_function_becke(x)
Step function of the Becke paper (1988, JCP,88(4))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,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`

View File

@ -1,273 +0,0 @@
.. _module_cisd:
.. program:: cisd
.. default-role:: option
====
cisd
====
This module contains a CI of single and double excitations.
The user point of view
----------------------
The :command:`cisd` program performs the CI of the ROHF-like + all single and double excitations on top of it.
This program can be very useful to :
* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization.
* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program.
The main keywords/options to be used are:
* :option:`determinants n_states` : number of states to consider for the |cisd| calculation
* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2`
* :option:`determinants expected_s2` : desired value of :math:`S^2`
The programmer point of view
----------------------------
This module have been built by setting the following rules:
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated determinants are included in the wave function (no perturbative
selection)
These rules are set in the ``H_apply.irp.f`` file.
EZFIO parameters
----------------
.. option:: energy
Variational |CISD| energy
Programs
--------
* :ref:`cisd`
Subroutines / functions
-----------------------
.. c:function:: h_apply_cisd:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd()
Calls H_apply on the |HF| determinant and selects all connected single and double
excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script.
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask`
* :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`build_fock_tmp`
* :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`dsort`
* :c:func:`h_apply_cisd_diexc`
* :c:func:`h_apply_cisd_monoexc`
* :c:func:`make_s2_eigenfunction`
* :c:func:`wall_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_occ_pattern`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_occ_pattern`
.. c:function:: h_apply_cisd_diexc:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexcp`
.. c:function:: h_apply_cisd_diexcorg:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
Generate all double excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexcp`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`
.. c:function:: h_apply_cisd_diexcp:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexc`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexcorg`
.. c:function:: h_apply_cisd_monoexc:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
Generate all single excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +0,0 @@
.. _module_davidson_dressed:
.. program:: davidson_dressed
.. default-role:: option
================
davidson_dressed
================
Davidson with single-column dressing.

View File

@ -1,75 +0,0 @@
.. _module_davidson_undressed:
.. program:: davidson_undressed
.. default-role:: option
==================
davidson_undressed
==================
Module for main files Davidson's algorithm with no dressing.
Providers
---------
.. c:var:: dressing_column_h
File : :file:`davidson_undressed/null_dressing_vector.irp.f`
.. code:: fortran
double precision, allocatable :: dressing_column_h (N_det,N_states)
double precision, allocatable :: dressing_column_s (N_det,N_states)
Null dressing vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
.. c:var:: dressing_column_s
File : :file:`davidson_undressed/null_dressing_vector.irp.f`
.. code:: fortran
double precision, allocatable :: dressing_column_h (N_det,N_states)
double precision, allocatable :: dressing_column_s (N_det,N_states)
Null dressing vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`

View File

@ -1,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

View File

@ -1,68 +0,0 @@
.. _module_dft_keywords:
.. program:: dft_keywords
.. default-role:: option
============
dft_keywords
============
This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as:
* :option:`dft_keywords exchange_functional`
* :option:`dft_keywords correlation_functional`
* :option:`dft_keywords HF_exchange` : only relevent for the :c:func:`rs_ks_scf` program
The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_ints mu_erf` keyword.
The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword.
EZFIO parameters
----------------
.. option:: exchange_functional
name of the exchange functional
Default: short_range_LDA
.. option:: correlation_functional
name of the correlation functional
Default: short_range_LDA
.. option:: HF_exchange
Percentage of HF exchange in the DFT model
Default: 0.
Providers
---------
.. c:var:: dft_type
File : :file:`dft_keywords/keywords.irp.f`
.. code:: fortran
character*(32) :: dft_type
defines the type of DFT applied: LDA, GGA etc ...
Needs:
.. hlist::
:columns: 3
* :c:data:`correlation_functional`
* :c:data:`exchange_functional`

View File

@ -1,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

View File

@ -1,36 +0,0 @@
.. _module_dressing:
.. program:: dressing
.. default-role:: option
=========
dress_zmq
=========
Module to facilitate the construction of modules using dressed
Hamiltonians, parallelized with |ZeroMQ|.
EZFIO parameters
----------------
.. option:: thresh_dressed_ci
Threshold on the convergence of the dressed |CI| energy
Default: 1.e-5
.. option:: n_it_max_dressed_ci
Maximum number of dressed |CI| iterations
Default: 10
.. option:: dress_relative_error
Stop stochastic dressing when the relative error is smaller than :option:`perturbation PT2_relative_error`
Default: 0.001

View File

@ -1,114 +0,0 @@
.. _module_electrons:
.. program:: electrons
.. default-role:: option
=========
electrons
=========
Describes the electrons. For the moment, only the number of alpha
and beta electrons are provided by this module.
Assumptions
===========
* `elec_num` >= 0
* `elec_alpha_num` >= 0
* `elec_beta_num` >= 0
* `elec_alpha_num` >= `elec_beta_num`
EZFIO parameters
----------------
.. option:: elec_alpha_num
Numbers of electrons alpha ("up")
.. option:: elec_beta_num
Numbers of electrons beta ("down")
.. option:: elec_num
Numbers total of electrons (alpha + beta)
Default: = electrons.elec_alpha_num + electrons.elec_beta_num
Providers
---------
.. c:var:: elec_num
File : :file:`electrons/electrons.irp.f`
.. code:: fortran
integer :: elec_num
integer, allocatable :: elec_num_tab (2)
Numbers of alpha ("up") , beta ("down") and total electrons
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
Needed by:
.. hlist::
:columns: 3
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
* :c:data:`pt2_f`
.. c:var:: elec_num_tab
File : :file:`electrons/electrons.irp.f`
.. code:: fortran
integer :: elec_num
integer, allocatable :: elec_num_tab (2)
Numbers of alpha ("up") , beta ("down") and total electrons
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
Needed by:
.. hlist::
:columns: 3
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
* :c:data:`pt2_f`

View File

@ -1,760 +0,0 @@
.. _module_ezfio_files:
.. program:: ezfio_files
.. default-role:: option
===========
ezfio_files
===========
This modules essentially contains the name of the |EZFIO| directory in the
:c:data:`ezfio_filename` variable. This is read as the first argument of the
command-line, or as the :envvar:`QP_INPUT` environment variable.
Providers
---------
.. c:var:: ezfio_filename
File : :file:`ezfio_files/ezfio.irp.f`
.. code:: fortran
character*(128) :: ezfio_filename
Name of EZFIO file. It is obtained from the QPACKAGE_INPUT environment
variable if it is set, or as the 1st argument of the command line.
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_initialized`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`cas_bitmask`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`elec_num`
* :c:data:`energy_iterations`
* :c:data:`ezfio_work_dir`
* :c:data:`frozen_orb_scf`
* :c:data:`generators_bitmask`
* :c:data:`generators_bitmask_restart`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_occ`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mu_erf`
* :c:data:`n_cas_bitmask`
* :c:data:`n_det`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_generators_bitmask`
* :c:data:`n_generators_bitmask_restart`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`qp_stop_filename`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
.. c:var:: ezfio_work_dir
File : :file:`ezfio_files/ezfio.irp.f`
.. code:: fortran
character*(128) :: ezfio_work_dir
EZFIO/work/
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: file_lock
File : :file:`ezfio_files/lock.irp.f`
.. code:: fortran
integer(omp_lock_kind) :: file_lock
OpenMP Lock for I/O
.. c:var:: output_cpu_time_0
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
double precision :: output_wall_time_0
double precision :: output_cpu_time_0
Initial CPU and wall times when printing in the output files
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mu_erf`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
.. c:var:: output_wall_time_0
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
double precision :: output_wall_time_0
double precision :: output_cpu_time_0
Initial CPU and wall times when printing in the output files
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mu_erf`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
.. c:var:: qp_kill_filename
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
character*(128) :: qp_stop_filename
character*(128) :: qp_kill_filename
integer :: qp_stop_variable
Name of the file to check for qp stop
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: qp_stop_filename
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
character*(128) :: qp_stop_filename
character*(128) :: qp_kill_filename
integer :: qp_stop_variable
Name of the file to check for qp stop
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: qp_stop_variable
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
character*(128) :: qp_stop_filename
character*(128) :: qp_kill_filename
integer :: qp_stop_variable
Name of the file to check for qp stop
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
Subroutines / functions
-----------------------
.. c:function:: getunitandopen:
File : :file:`ezfio_files/get_unit_and_open.irp.f`
.. code:: fortran
integer function getUnitAndOpen(f,mode)
:f:
file name
:mode:
'R' : READ, UNFORMATTED
'W' : WRITE, UNFORMATTED
'r' : READ, FORMATTED
'w' : WRITE, FORMATTED
'a' : APPEND, FORMATTED
'x' : READ/WRITE, FORMATTED
.. c:function:: qp_stop:
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
logical function qp_stop()
Checks if the qp_stop command was invoked for the clean termination of the program
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_stop_filename`
.. c:function:: write_bool:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_bool(iunit,value,label)
Write an logical value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
.. c:function:: write_double:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_double(iunit,value,label)
Write a double precision value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:data:`ci_energy`
* :c:func:`damping_scf`
* :c:func:`davidson_diag_hjj_sjj`
* :c:data:`nuclear_repulsion`
* :c:data:`psi_coef_max`
* :c:data:`pt2_e0_denominator`
* :c:func:`roothaan_hall_scf`
* :c:func:`run_cipsi`
* :c:func:`run_slave_main`
* :c:func:`run_stochastic_cipsi`
* :c:func:`zmq_pt2`
* :c:func:`zmq_selection`
.. c:function:: write_int:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_int(iunit,value,label)
Write an integer value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:func:`davidson_diag_hjj_sjj`
* :c:func:`make_s2_eigenfunction`
* :c:data:`mo_num`
* :c:data:`n_cas_bitmask`
* :c:data:`n_core_orb`
* :c:data:`n_det`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_generators_bitmask`
* :c:data:`n_generators_bitmask_restart`
* :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :c:data:`nthreads_pt2`
* :c:data:`psi_cas`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_size`
* :c:data:`pt2_n_teeth`
* :c:data:`qp_max_mem`
* :c:func:`remove_small_contributions`
* :c:func:`save_wavefunction_general`
* :c:func:`save_wavefunction_specified`
* :c:func:`zmq_pt2`
.. c:function:: write_time:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_time(iunit)
Write a time stamp in the output for chronological reconstruction
Needs:
.. hlist::
:columns: 3
* :c:data:`output_wall_time_0`
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:func:`damping_scf`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:func:`davidson_diag_hjj_sjj`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:func:`make_s2_eigenfunction`
* :c:data:`max_dim_diis`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`mo_as_svd_vectors_of_mo_matrix`
* :c:func:`mo_as_svd_vectors_of_mo_matrix_eig`
* :c:data:`mo_class`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mu_erf`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:func:`roothaan_hall_scf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
Calls:
.. hlist::
:columns: 3
* :c:func:`cpu_time`
* :c:func:`print_memory_usage`
* :c:func:`wall_time`

View File

@ -1,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`

View File

@ -1,19 +0,0 @@
.. _module_generators_cas:
.. program:: generators_cas
.. default-role:: option
==============
generators_cas
==============
Module defining the generator determinants as those belonging to a |CAS|.
The |MOs| belonging to the |CAS| are those which were set as active with
the :ref:`qp_set_mo_class` command.
This module is intended to be included in the :file:`NEED` file to define
the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance).

View File

@ -1,295 +0,0 @@
.. _module_generators_full:
.. program:: generators_full
.. default-role:: option
===============
generators_full
===============
Module defining the generator determinants as all the determinants of the
variational space.
This module is intended to be included in the :file:`NEED` file to define
a full set of generators.
Providers
---------
.. c:var:: degree_max_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: degree_max_generators
Max degree of excitation (respect to HF) of the generators
Needs:
.. hlist::
:columns: 3
* :c:data:`hf_bitmask`
* :c:data:`n_det_generators`
* :c:data:`n_int`
* :c:data:`psi_det_generators`
.. c:var:: n_det_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: n_det_generators
For Single reference wave functions, the number of generators is 1 : the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`output_wall_time_0`
* :c:data:`psi_det_sorted`
* :c:data:`threshold_generators`
Needed by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
* :c:data:`n_det_selectors`
* :c:data:`pt2_f`
* :c:data:`pt2_j`
* :c:data:`pt2_n_tasks`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_u`
* :c:data:`pt2_w`
.. c:var:: psi_coef_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_generators (psi_det_size,N_states)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
.. c:var:: psi_coef_sorted_gen
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_f`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_w`
.. c:var:: psi_det_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_generators (psi_det_size,N_states)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
.. c:var:: psi_det_sorted_gen
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_f`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_w`
.. c:var:: psi_det_sorted_gen_order
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_f`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_w`
.. c:var:: select_max
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
double precision, allocatable :: select_max (size_select_max)
Memo to skip useless selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`size_select_max`
.. c:var:: size_select_max
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: size_select_max
Size of the select_max array
Needed by:
.. hlist::
:columns: 3
* :c:data:`select_max`

View File

@ -1,406 +0,0 @@
.. _module_hartree_fock:
.. program:: hartree_fock
.. default-role:: option
============
hartree_fock
============
The :ref:`scf` program performs *Restricted* Hartree-Fock
calculations (the spatial part of the |MOs| is common for alpha and beta
spinorbitals).
The Hartree-Fock algorithm is a |SCF| and therefore is based on the
:ref:`module_scf_utils` module.
The Fock matrix is defined in :file:`fock_matrix_hf.irp.f`.
EZFIO parameters
----------------
.. option:: energy
Energy HF
Programs
--------
* :ref:`scf`
Providers
---------
.. c:var:: ao_two_e_integral_alpha
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`hf_energy`
.. c:var:: ao_two_e_integral_beta
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`hf_energy`
.. c:var:: extra_e_contrib_density
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: extra_e_contrib_density
Extra contribution to the SCF energy coming from the density.
For a Hartree-Fock calculation: extra_e_contrib_density = 0
For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - trace of the V_xc potential
Needed by:
.. hlist::
:columns: 3
* :c:data:`scf_energy`
.. c:var:: fock_matrix_ao_alpha
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`scf_energy`
.. c:var:: fock_matrix_ao_beta
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`scf_energy`
.. c:var:: hf_energy
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: hf_one_electron_energy
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: hf_two_electron_energy
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Subroutines / functions
-----------------------
.. c:function:: create_guess:
File : :file:`hartree_fock/scf.irp.f`
.. code:: fortran
subroutine create_guess
Create a MO guess if no MOs are present in the EZFIO directory
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`mo_guess_type`
* :c:data:`mo_one_e_integrals`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_has_mo_basis_mo_coef`
* :c:func:`huckel_guess`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_label`
.. c:function:: run:
File : :file:`hartree_fock/scf.irp.f`
.. code:: fortran
subroutine run
Run SCF calculation
Needs:
.. hlist::
:columns: 3
* :c:data:`scf_energy`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`pt2`
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_hartree_fock_energy`
* :c:func:`roothaan_hall_scf`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`

View File

@ -1,204 +0,0 @@
.. _module_iterations:
.. program:: iterations
.. default-role:: option
==========
iterations
==========
Module which saves the computed energies for an extrapolation to
the |FCI| limit.
EZFIO parameters
----------------
.. option:: n_iter
Number of saved iterations
Default: 1
.. option:: n_det_iterations
Number of determinants at each iteration
.. option:: energy_iterations
The variational energy at each iteration
.. option:: pt2_iterations
The |PT2| correction at each iteration
Providers
---------
.. c:var:: extrapolated_energy
File : :file:`iterations/iterations.irp.f`
.. code:: fortran
double precision, allocatable :: extrapolated_energy (N_iter,N_states)
Extrapolated energy, using E_var = f(PT2) where PT2=0
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_iterations`
* :c:data:`n_det`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
.. c:var:: n_iter
File : :file:`iterations/io.irp.f`
.. code:: fortran
integer :: n_iter
number of iterations
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
* :c:data:`n_states`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extrapolated_energy`
Subroutines / functions
-----------------------
.. c:function:: print_extrapolated_energy:
File : :file:`iterations/print_extrapolation.irp.f`
.. code:: fortran
subroutine print_extrapolated_energy
Print the extrapolated energy in the output
Needs:
.. hlist::
:columns: 3
* :c:data:`extrapolated_energy`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`pt2_iterations`
* :c:data:`n_iter`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
.. c:function:: print_summary:
File : :file:`iterations/print_summary.irp.f`
.. code:: fortran
subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st,s2_)
Print the extrapolated energy in the output
Needs:
.. hlist::
:columns: 3
* :c:data:`do_pt2`
* :c:data:`s2_eig`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
.. c:function:: save_iterations:
File : :file:`iterations/iterations.irp.f`
.. code:: fortran
subroutine save_iterations(e_, pt2_,n_)
Update the energy in the EZFIO file.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_iter`
* :c:data:`energy_iterations`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
* :c:data:`n_det_iterations`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_iterations_energy_iterations`
* :c:func:`ezfio_set_iterations_n_det_iterations`
* :c:func:`ezfio_set_iterations_n_iter`
* :c:func:`ezfio_set_iterations_pt2_iterations`

View File

@ -1,101 +0,0 @@
.. _module_kohn_sham:
.. program:: kohn_sham
.. default-role:: option
=========
kohn_sham
=========
The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
spatial part of the |MOs| is common for alpha and beta spinorbitals).
The Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure.
It performs the following actions:
#. Compute/Read all the one- and two-electron integrals, and store them in memory
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
will read them as initial guess. Otherwise, it will create a guess.
#. Perform the |SCF| iterations
The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f`
For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options.
The main are:
#. :option:`scf_utils thresh_scf`
#. :option:`scf_utils level_shift`
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
crashes for any unexpected reason, the calculation can be restarted by running again
the |SCF| with the same |EZFIO| database.
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
To start a calculation from scratch, the simplest way is to remove the
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
.. _level-shifting: https://doi.org/10.1002/qua.560070407
Programs
--------
* :ref:`ks_scf`
Providers
---------
.. c:var:: ks_energy
File : :file:`ks_enery.irp.f`
.. code:: fortran
double precision :: ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
Subroutines / functions
-----------------------

View File

@ -1,468 +0,0 @@
.. _module_kohn_sham_rs:
.. program:: kohn_sham_rs
.. default-role:: option
============
kohn_sham_rs
============
The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange.
The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_ints mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals.
The Range-separated Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure.
It performs the following actions:
#. Compute/Read all the one- and two-electron integrals, and store them in memory
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
will read them as initial guess. Otherwise, it will create a guess.
#. Perform the |SCF| iterations
The definition of the Fock matrix is in :file:`kohn_sham_rs fock_matrix_rs_ks.irp.f`
For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options.
The main are:
# :option:`scf_utils thresh_scf`
# :option:`scf_utils level_shift`
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
crashes for any unexpected reason, the calculation can be restarted by running again
the |SCF| with the same |EZFIO| database.
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
To start a calculation from scratch, the simplest way is to remove the
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
.. _level-shifting: https://doi.org/10.1002/qua.560070407
EZFIO parameters
----------------
.. option:: energy
Energy range separated hybrid
Programs
--------
* :ref:`rs_ks_scf`
Providers
---------
.. c:var:: ao_potential_alpha_xc
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`potential_x_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`rs_ks_energy`
.. c:var:: ao_potential_beta_xc
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`potential_x_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`rs_ks_energy`
.. c:var:: e_correlation_dft
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision :: e_correlation_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_x`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
* :c:data:`rs_ks_energy`
.. c:var:: e_exchange_dft
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision :: e_exchange_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_x`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
* :c:data:`rs_ks_energy`
.. c:var:: fock_matrix_alpha_no_xc_ao
File : :file:`fock_matrix_rs_ks.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
Mono electronic an Coulomb matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
.. c:var:: fock_matrix_beta_no_xc_ao
File : :file:`fock_matrix_rs_ks.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
Mono electronic an Coulomb matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
.. c:var:: fock_matrix_energy
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: one_e_energy
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: rs_ks_energy
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: trace_potential_xc
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: two_e_energy
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
Subroutines / functions
-----------------------
.. c:function:: check_coherence_functional:
File : :file:`rs_ks_scf.irp.f`
.. code:: fortran
subroutine check_coherence_functional
Needs:
.. hlist::
:columns: 3
* :c:data:`exchange_functional`
* :c:data:`correlation_functional`
Called by:
.. hlist::
:columns: 3
* :c:func:`rs_ks_scf`

View File

@ -1,815 +0,0 @@
.. _module_mo_basis:
.. program:: mo_basis
.. default-role:: option
========
mo_basis
========
Molecular orbitals are expressed as
.. math::
\phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r})
where :math:`\chi_k` are *normalized* atomic basis functions.
The current set of |MOs| has a label `mo_label`.
When the orbitals are modified, the label should also be updated to keep
everything consistent.
When saving the |MOs|, the :file:`mo_basis` directory of the |EZFIO| database
is copied in the :file:`save` directory, named by the current `mo_label`. All
this is done with the script named :file:`save_current_mos.sh` in the
:file:`$QP_ROOT/scripts` directory.
EZFIO parameters
----------------
.. option:: mo_num
Total number of |MOs|
.. option:: mo_coef
Coefficient of the i-th |AO| on the j-th |MO|
.. option:: mo_label
Label characterizing the MOS (Local, Canonical, Natural, *etc*)
.. option:: mo_occ
|MO| occupation numbers
.. option:: mo_class
[ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class`
.. option:: ao_md5
MD5 checksum characterizing the |AO| basis set.
Providers
---------
.. c:var:: mo_coef
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef (ao_num,mo_num)
Molecular orbital coefficients on |AO| basis set
mo_coef(i,j) = coefficient of the i-th |AO| on the jth mo
mo_label : Label characterizing the MOS (local, canonical, natural, etc)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`mo_coef_in_ao_ortho_basis`
* :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_spin_density_ao`
* :c:data:`psi_det`
* :c:data:`s_mo_coef`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: mo_coef_begin_iteration
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_num)
Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration
Usefull to track some orbitals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
.. c:var:: mo_coef_in_ao_ortho_basis
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_num)
|MO| coefficients in orthogonalized |AO| basis
:math:`C^{-1}.C_{mo}`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef_inv`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_coef_transp
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_transp (mo_num,ao_num)
|MO| coefficients on |AO| basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
.. c:var:: mo_label
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
character*(64) :: mo_label
|MO| coefficients on |AO| basis set
mo_coef(i,j) = coefficient of the i-th |AO| on the j-th |MO|
mo_label : Label characterizing the |MOs| (local, canonical, natural, etc)
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_coef`
* :c:data:`psi_det`
.. c:var:: mo_num
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
integer :: mo_num
Number of MOs
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`core_fock_operator`
* :c:data:`core_fock_operator_erf`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`full_ijkl_bitmask`
* :c:data:`int_erf_3_index`
* :c:data:`list_core_inact_act`
* :c:data:`list_inact`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef_in_ao_ortho_basis`
* :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_erf_cache_min`
* :c:data:`mo_integrals_erf_map`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_occ`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
* :c:data:`mo_two_e_int_erf_jj`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`n_core_orb`
* :c:data:`n_int`
* :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_dm_dagger_mo_spin_index`
* :c:data:`one_e_dm_mo`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`one_e_dm_mo_alpha_average`
* :c:data:`one_e_dm_mo_diff`
* :c:data:`one_e_dm_mo_spin_index`
* :c:data:`one_e_spin_density_ao`
* :c:data:`one_e_spin_density_mo`
* :c:data:`psi_energy_h_core`
* :c:data:`s_mo_coef`
* :c:data:`singles_alpha_csc_idx`
* :c:data:`singles_beta_csc_idx`
.. c:var:: mo_occ
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_occ (mo_num)
|MO| occupation numbers
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mpi_master`
Subroutines / functions
-----------------------
.. c:function:: ao_ortho_cano_to_ao:
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
subroutine ao_ortho_cano_to_ao(A_ao,LDA_ao,A,LDA)
Transform A from the |AO| basis to the orthogonal |AO| basis
$C^{-1}.A_{ao}.C^{\dagger-1}$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef_inv`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: ao_to_mo:
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
subroutine ao_to_mo(A_ao,LDA_ao,A_mo,LDA_mo)
Transform A from the |AO| basis to the |MO| basis
$C^\dagger.A_{ao}.C$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: give_all_mos_and_grad_and_lapl_at_r:
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: fortran
subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_all_aos_and_grad_and_lapl_at_r`
.. c:function:: give_all_mos_and_grad_at_r:
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: fortran
subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_all_aos_and_grad_at_r`
.. c:function:: give_all_mos_at_r:
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: fortran
subroutine give_all_mos_at_r(r,mos_array)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef_transp`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemv`
* :c:func:`give_all_aos_at_r`
.. c:function:: initialize_mo_coef_begin_iteration:
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
subroutine initialize_mo_coef_begin_iteration
Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`roothaan_hall_scf`
.. c:function:: mix_mo_jk:
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
subroutine mix_mo_jk(j,k)
Rotates the j-th |MO| with the k-th |MO| to give two new |MOs| that are
* $+ = \frac{1}{\sqrt{2}} ( | j\rangle + | k\rangle)$
* $- = \frac{1}{\sqrt{2}} ( | j\rangle - | k\rangle)$
by convention, the '+' |MO| is in the lowest index (min(j,k))
by convention, the '-' |MO| is in the highest index (max(j,k))
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
.. c:function:: mo_as_eigvectors_of_mo_matrix:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`create_guess`
* :c:func:`damping_scf`
* :c:func:`hcore_guess`
* :c:func:`roothaan_hall_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`lapack_diag`
* :c:func:`write_time`
.. c:function:: mo_as_svd_vectors_of_mo_matrix:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`svd`
* :c:func:`write_time`
.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`set_natural_mos`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`svd`
* :c:func:`write_time`
.. c:function:: reorder_core_orb:
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
subroutine reorder_core_orb
routines that takes the current :c:data:`mo_coef` and reorder the core orbitals (see :c:data:`list_core` and :c:data:`n_core_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef`
* :c:data:`ao_overlap`
* :c:data:`n_core_orb`
* :c:data:`ao_num`
* :c:data:`list_inact`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`roothaan_hall_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`dsort`
.. c:function:: save_mos:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine save_mos
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`hcore_guess`
* :c:func:`huckel_guess`
* :c:func:`roothaan_hall_scf`
* :c:func:`save_natural_mos`
* :c:func:`save_ortho_mos`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_mo_basis_ao_md5`
* :c:func:`ezfio_set_mo_basis_mo_coef`
* :c:func:`ezfio_set_mo_basis_mo_label`
* :c:func:`ezfio_set_mo_basis_mo_num`
* :c:func:`ezfio_set_mo_basis_mo_occ`
* :c:func:`system`
.. c:function:: save_mos_truncated:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine save_mos_truncated(n)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`mo_label`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_mo_basis_ao_md5`
* :c:func:`ezfio_set_mo_basis_mo_coef`
* :c:func:`ezfio_set_mo_basis_mo_label`
* :c:func:`ezfio_set_mo_basis_mo_num`
* :c:func:`ezfio_set_mo_basis_mo_occ`
* :c:func:`system`

View File

@ -1,160 +0,0 @@
.. _module_mo_guess:
.. program:: mo_guess
.. default-role:: option
========
mo_guess
========
Guess for |MOs|.
Providers
---------
.. c:var:: ao_ortho_canonical_nucl_elec_integrals
File : :file:`mo_guess/pot_mo_ortho_canonical_ints.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_canonical_nucl_elec_integrals (mo_num,mo_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`mo_num`
.. c:var:: ao_ortho_lowdin_coef
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_lowdin_coef (ao_num,ao_num)
matrix of the coefficients of the mos generated by the
orthonormalization by the S^{-1/2} canonical transformation of the aos
ao_ortho_lowdin_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_lowdin orbital
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
* :c:data:`ao_ortho_lowdin_overlap`
.. c:var:: ao_ortho_lowdin_nucl_elec_integrals
File : :file:`mo_guess/pot_mo_ortho_lowdin_ints.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_lowdin_nucl_elec_integrals (mo_num,mo_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_num`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`mo_num`
.. c:var:: ao_ortho_lowdin_overlap
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_lowdin_overlap (ao_num,ao_num)
overlap matrix of the ao_ortho_lowdin
supposed to be the Identity
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`ao_overlap`
Subroutines / functions
-----------------------
.. c:function:: hcore_guess:
File : :file:`mo_guess/h_core_guess_routine.irp.f`
.. code:: fortran
subroutine hcore_guess
Produce `H_core` MO orbital
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`save_mos`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_label`

View File

@ -1,571 +0,0 @@
.. _module_mo_one_e_ints:
.. program:: mo_one_e_ints
.. default-role:: option
==================
mo_one_e_integrals
==================
All the one-electron integrals in |MO| basis are defined here.
The most important providers for usual quantum-chemistry calculation are:
* `mo_kinetic_integrals` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`)
* `mo_integrals_n_e` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`)
* `mo_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`)
Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`.
EZFIO parameters
----------------
.. option:: mo_integrals_e_n
Nucleus-electron integrals in |MO| basis set
.. option:: io_mo_integrals_e_n
Read/Write |MO| electron-nucleus attraction integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: mo_integrals_kinetic
Kinetic energy integrals in |MO| basis set
.. option:: io_mo_integrals_kinetic
Read/Write |MO| one-electron kinetic integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: mo_integrals_pseudo
Pseudopotential integrals in |MO| basis set
.. option:: io_mo_integrals_pseudo
Read/Write |MO| pseudopotential integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: mo_one_e_integrals
One-electron integrals in |MO| basis set
.. option:: io_mo_one_e_integrals
Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ]
Default: None
Providers
---------
.. c:var:: mo_dipole_x
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
double precision, allocatable :: mo_dipole_z (mo_num,mo_num)
array of the integrals of MO_i * x MO_j
array of the integrals of MO_i * y MO_j
array of the integrals of MO_i * z MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_dipole_x`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_dipole_y
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
double precision, allocatable :: mo_dipole_z (mo_num,mo_num)
array of the integrals of MO_i * x MO_j
array of the integrals of MO_i * y MO_j
array of the integrals of MO_i * z MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_dipole_x`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_dipole_z
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
double precision, allocatable :: mo_dipole_z (mo_num,mo_num)
array of the integrals of MO_i * x MO_j
array of the integrals of MO_i * y MO_j
array of the integrals of MO_i * z MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_dipole_x`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_integrals_n_e
File : :file:`mo_one_e_ints/pot_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_integrals_n_e (mo_num,mo_num)
Nucleus-electron interaction on the |MO| basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`read_mo_integrals_e_n`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
* :c:data:`ref_bitmask_energy`
.. c:var:: mo_integrals_n_e_per_atom
File : :file:`mo_one_e_ints/pot_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_integrals_n_e_per_atom (mo_num,mo_num,nucl_num)
mo_integrals_n_e_per_atom(i,j,k) =
:math:`\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle` .
where R_k is the coordinate of the k-th nucleus.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e_per_atom`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`nucl_num`
.. c:var:: mo_kinetic_integrals
File : :file:`mo_one_e_ints/kin_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_kinetic_integrals (mo_num,mo_num)
Kinetic energy integrals in the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_kinetic_integrals`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`read_mo_integrals_kinetic`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
* :c:data:`ref_bitmask_energy`
.. c:var:: mo_one_e_integrals
File : :file:`mo_one_e_ints/mo_one_e_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_one_e_integrals (mo_num,mo_num)
array of the mono electronic hamiltonian on the MOs basis :
sum of the kinetic and nuclear electronic potential (and pseudo potential if needed)
Needs:
.. hlist::
:columns: 3
* :c:data:`do_pseudo`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_num`
* :c:data:`mo_pseudo_integrals`
* :c:data:`read_mo_one_e_integrals`
Needed by:
.. hlist::
:columns: 3
* :c:data:`core_energy`
* :c:data:`core_energy_erf`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`psi_energy_h_core`
* :c:data:`ref_bitmask_energy`
.. c:var:: mo_overlap
File : :file:`mo_one_e_ints/mo_overlap.irp.f`
.. code:: fortran
double precision, allocatable :: mo_overlap (mo_num,mo_num)
Provider to check that the MOs are indeed orthonormal.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_pseudo_integrals
File : :file:`mo_one_e_ints/pot_mo_pseudo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_pseudo_integrals (mo_num,mo_num)
Pseudopotential integrals in |MO| basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_pseudo_integrals`
* :c:data:`do_pseudo`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`read_mo_integrals_pseudo`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
.. c:var:: mo_spread_x
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
double precision, allocatable :: mo_spread_z (mo_num,mo_num)
array of the integrals of MO_i * x^2 MO_j
array of the integrals of MO_i * y^2 MO_j
array of the integrals of MO_i * z^2 MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_spread_x`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_spread_y
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
double precision, allocatable :: mo_spread_z (mo_num,mo_num)
array of the integrals of MO_i * x^2 MO_j
array of the integrals of MO_i * y^2 MO_j
array of the integrals of MO_i * z^2 MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_spread_x`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_spread_z
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
double precision, allocatable :: mo_spread_z (mo_num,mo_num)
array of the integrals of MO_i * x^2 MO_j
array of the integrals of MO_i * y^2 MO_j
array of the integrals of MO_i * z^2 MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_spread_x`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: s_mo_coef
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
double precision, allocatable :: s_mo_coef (ao_num,mo_num)
Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
Subroutines / functions
-----------------------
.. c:function:: mo_to_ao:
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao)
Transform A from the MO basis to the AO basis
$(S.C).A_{mo}.(S.C)^\dagger$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`s_mo_coef`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: mo_to_ao_no_overlap:
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)
$C.A_{mo}.C^\dagger$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: orthonormalize_mos:
File : :file:`mo_one_e_ints/orthonormalize.irp.f`
.. code:: fortran
subroutine orthonormalize_mos
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_overlap`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`save_ortho_mos`
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ortho_lowdin`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_label`

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -1,666 +0,0 @@
.. _module_nuclei:
.. program:: nuclei
.. default-role:: option
======
nuclei
======
This module contains data relative to the nuclei (coordinates, charge,
nuclear repulsion energy, etc).
The coordinates are expressed in atomic units.
EZFIO parameters
----------------
.. option:: nucl_num
Number of nuclei
.. option:: nucl_label
Nuclear labels
.. option:: nucl_charge
Nuclear charges
.. option:: nucl_coord
Nuclear coordinates in the format (:, {x,y,z})
.. option:: disk_access_nuclear_repulsion
Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ]
Default: None
.. option:: nuclear_repulsion
Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|)
Providers
---------
.. c:var:: center_of_mass
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: center_of_mass (3)
Center of mass of the molecule
Needs:
.. hlist::
:columns: 3
* :c:data:`element_name`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: element_mass
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
character*(4), allocatable :: element_name (0:127)
double precision, allocatable :: element_mass (0:127)
Array of the name of element, sorted by nuclear charge (integer)
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
.. c:var:: element_name
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
character*(4), allocatable :: element_name (0:127)
double precision, allocatable :: element_mass (0:127)
Array of the name of element, sorted by nuclear charge (integer)
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
.. c:var:: inertia_tensor
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor (3,3)
Inertia tensor
Needs:
.. hlist::
:columns: 3
* :c:data:`center_of_mass`
* :c:data:`element_name`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor_eigenvectors`
.. c:var:: inertia_tensor_eigenvalues
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
double precision, allocatable :: inertia_tensor_eigenvalues (3)
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
Needs:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: inertia_tensor_eigenvectors
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
double precision, allocatable :: inertia_tensor_eigenvalues (3)
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
Needs:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: nucl_coord
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_coord (nucl_num,3)
Nuclear coordinates in the format (:, {x,y,z})
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
* :c:data:`nucl_charge`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_deriv2_x`
* :c:data:`ao_deriv_1_x`
* :c:data:`ao_dipole_x`
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_integrals_n_e_per_atom`
* :c:data:`ao_overlap`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_pseudo_integrals_local`
* :c:data:`ao_pseudo_integrals_non_local`
* :c:data:`ao_spread_x`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_dist_2`
* :c:data:`nuclear_repulsion`
.. c:var:: nucl_coord_transp
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_coord_transp (3,nucl_num)
Transposed array of nucl_coord
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
.. c:var:: nucl_dist
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_2
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_inv
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num)
Inverse of the distance between nucleus I and nucleus J
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_2`
* :c:data:`nucl_num`
.. c:var:: nucl_dist_vec_x
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_vec_y
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_vec_z
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nuclear_repulsion
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision :: nuclear_repulsion
Nuclear repulsion energy
Needs:
.. hlist::
:columns: 3
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`mpi_master`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_energy`
* :c:data:`core_energy`
* :c:data:`core_energy_erf`
* :c:data:`hf_energy`
* :c:data:`psi_energy_with_nucl_rep`
* :c:data:`pt2_e0_denominator`
* :c:data:`scf_energy`
.. c:var:: slater_bragg_radii
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii (100)
atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater
execpt for the Hydrogen atom where we took the value of Becke (1988, JCP)
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_radii_per_atom`
* :c:data:`slater_bragg_radii_ua`
.. c:var:: slater_bragg_radii_per_atom
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_charge`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii`
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_type_inter_distance`
.. c:var:: slater_bragg_radii_per_atom_ua
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_charge`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_ua`
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_type_inter_distance_ua`
.. c:var:: slater_bragg_radii_ua
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_ua (100)
Needs:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_radii`
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_radii_per_atom_ua`
.. c:var:: slater_bragg_type_inter_distance
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_per_atom`
.. c:var:: slater_bragg_type_inter_distance_ua
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_per_atom_ua`

View File

@ -1,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`

View File

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

View File

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

View File

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

View File

@ -1,795 +0,0 @@
.. _module_scf_utils:
.. program:: scf_utils
.. default-role:: option
=========
scf_utils
=========
The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the
spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function.
This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix.
The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example).
All SCF programs perform the following actions:
#. Compute/Read all the one- and two-electron integrals, and store them in memory
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
will read them as initial guess. Otherwise, it will create a guess.
#. Perform the |SCF| iterations based on the definition of the Fock matrix
The main keywords/options are:
* :option:`scf_utils thresh_scf`
* :option:`scf_utils level_shift`
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
crashes for any unexpected reason, the calculation can be restarted by running again
the |SCF| with the same |EZFIO| database.
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
To start a calculation from scratch, the simplest way is to remove the
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
.. _level-shifting: https://doi.org/10.1002/qua.560070407
EZFIO parameters
----------------
.. option:: max_dim_diis
Maximum size of the DIIS extrapolation procedure
Default: 15
.. option:: threshold_diis
Threshold on the convergence of the DIIS error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used.
Default: 0.
.. option:: thresh_scf
Threshold on the convergence of the Hartree Fock energy.
Default: 1.e-10
.. option:: n_it_scf_max
Maximum number of SCF iterations
Default: 500
.. option:: level_shift
Energy shift on the virtual MOs to improve SCF convergence
Default: 0.
.. option:: scf_algorithm
Type of SCF algorithm used. Possible choices are [ Simple | DIIS]
Default: DIIS
.. option:: mo_guess_type
Initial MO guess. Can be [ Huckel | HCore ]
Default: Huckel
.. option:: energy
Calculated HF energy
.. option:: frozen_orb_scf
If true, leave untouched all the orbitals defined as core and optimize all the orbitals defined as active with qp_set_mo_class
Default: False
Providers
---------
.. c:var:: eigenvalues_fock_matrix_ao
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao`
* :c:data:`s_half_inv`
.. c:var:: eigenvectors_fock_matrix_ao
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao`
* :c:data:`s_half_inv`
.. c:var:: eigenvectors_fock_matrix_mo
File : :file:`scf_utils/diagonalize_fock.irp.f`
.. code:: fortran
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_num)
Eigenvector of the Fock matrix in the MO basis obtained with level shift.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_mo`
* :c:data:`frozen_orb_scf`
* :c:data:`level_shift`
* :c:data:`list_inact`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
.. c:function:: extrapolate_fock_matrix:
File : :file:`scf_utils/roothaan_hall_scf.irp.f`
.. code:: fortran
subroutine extrapolate_Fock_matrix( &
error_matrix_DIIS,Fock_matrix_DIIS, &
Fock_matrix_AO_,size_Fock_matrix_AO, &
iteration_SCF,dim_DIIS &
)
Compute the extrapolated Fock matrix using the DIIS procedure
Needs:
.. hlist::
:columns: 3
* :c:data:`max_dim_diis`
* :c:data:`ao_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`roothaan_hall_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`dsysvx`
.. c:var:: fock_matrix_ao
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_ao (ao_num,ao_num)
Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_mo`
* :c:data:`frozen_orb_scf`
* :c:data:`level_shift`
* :c:data:`mo_num`
* :c:data:`s_mo_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvalues_fock_matrix_ao`
* :c:data:`fps_spf_matrix_ao`
.. c:var:: fock_matrix_diag_mo
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo (mo_num,mo_num)
double precision, allocatable :: fock_matrix_diag_mo (mo_num)
Fock matrix on the MO basis.
For open shells, the ROHF Fock Matrix is ::
| F-K | F + K/2 | F |
|---------------------------------|
| F + K/2 | F | F - K/2 |
|---------------------------------|
| F | F - K/2 | F + K |
F = 1/2 (Fa + Fb)
K = Fb - Fa
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`frozen_orb_scf`
* :c:data:`list_inact`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
.. c:var:: fock_matrix_mo
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo (mo_num,mo_num)
double precision, allocatable :: fock_matrix_diag_mo (mo_num)
Fock matrix on the MO basis.
For open shells, the ROHF Fock Matrix is ::
| F-K | F + K/2 | F |
|---------------------------------|
| F + K/2 | F | F - K/2 |
|---------------------------------|
| F | F - K/2 | F + K |
F = 1/2 (Fa + Fb)
K = Fb - Fa
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`frozen_orb_scf`
* :c:data:`list_inact`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
.. c:var:: fock_matrix_mo_alpha
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo_alpha (mo_num,mo_num)
Fock matrix on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo`
.. c:var:: fock_matrix_mo_beta
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo_beta (mo_num,mo_num)
Fock matrix on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo`
.. c:var:: fps_spf_matrix_ao
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num)
Commutator FPS - SPF
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`fock_matrix_ao`
* :c:data:`scf_density_matrix_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fps_spf_matrix_mo`
.. c:var:: fps_spf_matrix_mo
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: fps_spf_matrix_mo (mo_num,mo_num)
Commutator FPS - SPF in MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: scf_density_matrix_ao
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao (ao_num,ao_num)
S^{-1}.P.S^{-1} where P = C.C^t
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fps_spf_matrix_ao`
.. c:var:: scf_density_matrix_ao_alpha
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao_alpha (ao_num,ao_num)
S^{-1}.P_alpha.S^{-1}
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`mo_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`hf_energy`
* :c:data:`scf_density_matrix_ao`
* :c:data:`scf_energy`
.. c:var:: scf_density_matrix_ao_beta
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao_beta (ao_num,ao_num)
S^{-1}.P_beta.S^{-1}
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`hf_energy`
* :c:data:`scf_density_matrix_ao`
* :c:data:`scf_energy`
.. c:var:: scf_energy
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision :: scf_energy
Hartree-Fock energy
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`extra_e_contrib_density`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: threshold_diis_nonzero
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision :: threshold_diis_nonzero
If threshold_DIIS is zero, choose sqrt(thresh_scf)
Needs:
.. hlist::
:columns: 3
* :c:data:`thresh_scf`
* :c:data:`threshold_diis`
Subroutines / functions
-----------------------
.. c:function:: damping_scf:
File : :file:`scf_utils/damping_scf.irp.f`
.. code:: fortran
subroutine damping_SCF
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`scf_energy`
* :c:data:`scf_density_matrix_ao_beta`
* :c:data:`fock_matrix_mo`
* :c:data:`ao_num`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`fock_matrix_ao`
* :c:data:`mo_label`
* :c:data:`n_it_scf_max`
* :c:data:`thresh_scf`
* :c:data:`frozen_orb_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_hartree_fock_energy`
* :c:func:`initialize_mo_coef_begin_iteration`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`reorder_core_orb`
* :c:func:`save_mos`
* :c:func:`write_double`
* :c:func:`write_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
* :c:data:`mo_coef`
.. c:function:: huckel_guess:
File : :file:`scf_utils/huckel.irp.f`
.. code:: fortran
subroutine huckel_guess
Build the MOs using the extended Huckel model
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_one_e_integrals`
* :c:data:`mo_coef`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`ao_overlap`
* :c:data:`ao_num`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
Called by:
.. hlist::
:columns: 3
* :c:func:`create_guess`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_mos`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
.. c:function:: roothaan_hall_scf:
File : :file:`scf_utils/roothaan_hall_scf.irp.f`
.. code:: fortran
subroutine Roothaan_Hall_SCF
Roothaan-Hall algorithm for SCF Hartree-Fock calculation
Needs:
.. hlist::
:columns: 3
* :c:data:`max_dim_diis`
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`scf_energy`
* :c:data:`mo_num`
* :c:data:`thresh_scf`
* :c:data:`scf_algorithm`
* :c:data:`fock_matrix_mo`
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao`
* :c:data:`mo_label`
* :c:data:`n_it_scf_max`
* :c:data:`threshold_diis_nonzero`
* :c:data:`frozen_orb_scf`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fps_spf_matrix_ao`
Called by:
.. hlist::
:columns: 3
* :c:func:`run`
Calls:
.. hlist::
:columns: 3
* :c:func:`extrapolate_fock_matrix`
* :c:func:`initialize_mo_coef_begin_iteration`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`reorder_core_orb`
* :c:func:`save_mos`
* :c:func:`write_double`
* :c:func:`write_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`

View File

@ -1,13 +0,0 @@
.. _module_selectors_cassd:
.. program:: selectors_cassd
.. default-role:: option
===============
selectors_cassd
===============
Selectors for |CAS-SD| calculations. The selectors are defined as first the
generators from :ref:`module_generators_cas`, and then the rest of the wave function.

View File

@ -1,153 +0,0 @@
.. _module_selectors_full:
.. program:: selectors_full
.. default-role:: option
==============
selectors_full
==============
All the determinants are possible selectors. Only the largest contributions are kept, where
a threshold is applied to the squared norm of the wave function, with the :option:`determinants
threshold_selectors` flag.
Providers
---------
.. c:var:: n_det_selectors
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
integer :: n_det_selectors
For Single reference wave functions, the number of selectors is 1 : the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`n_det_generators`
* :c:data:`output_wall_time_0`
* :c:data:`psi_det_sorted`
* :c:data:`threshold_selectors`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`exc_degree_per_selectors`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
* :c:data:`pt2_f`
.. c:var:: psi_selectors
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size)
double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states)
Determinants on which we apply <i|H|psi> for perturbation.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_sorted`
* :c:data:`psi_selectors_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`exc_degree_per_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: psi_selectors_coef
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size)
double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states)
Determinants on which we apply <i|H|psi> for perturbation.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_sorted`
* :c:data:`psi_selectors_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`exc_degree_per_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: threshold_selectors
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
double precision :: threshold_selectors
Thresholds on selectors (fraction of the square of the norm)
Needs:
.. hlist::
:columns: 3
* :c:data:`threshold_generators`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`

View File

@ -1,649 +0,0 @@
.. _module_selectors_utils:
.. program:: selectors_utils
.. default-role:: option
===============
selectors_utils
===============
Helper functions for selectors.
Providers
---------
.. c:var:: coef_hf_selector
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: delta_e_per_selector
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: double_index_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_selectors
Degree of excitation respect to Hartree Fock for the wave function
for the all the selectors determinants.
double_index_selectors = list of the index of the double excitations
n_double_selectors = number of double excitations in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: e_corr_double_only
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: e_corr_per_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: e_corr_second_order
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: exc_degree_per_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_selectors
Degree of excitation respect to Hartree Fock for the wave function
for the all the selectors determinants.
double_index_selectors = list of the index of the double excitations
n_double_selectors = number of double excitations in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: i_h_hf_per_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: inv_selectors_coef_hf
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: inv_selectors_coef_hf_squared
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: n_double_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_selectors
Degree of excitation respect to Hartree Fock for the wave function
for the all the selectors determinants.
double_index_selectors = list of the index of the double excitations
n_double_selectors = number of double excitations in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: psi_selectors_coef_transp
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size)
Transposed psi_selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_states`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
.. c:var:: psi_selectors_diag_h_mat
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size)
Diagonal elements of the H matrix for each selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_num`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: psi_selectors_size
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
integer :: psi_selectors_size
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
Subroutines / functions
-----------------------
.. c:function:: zmq_get_n_det_generators:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id)
Get N_det_generators from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_get_n_det_selectors:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id)
Get N_det_selectors from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_put_n_det_generators:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id)
Put N_det_generators on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`zmq_state`
.. c:function:: zmq_put_n_det_selectors:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id)
Put N_det_selectors on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`zmq_state`

View File

@ -1,14 +0,0 @@
.. _module_single_ref_method:
.. program:: single_ref_method
.. default-role:: option
=================
single_ref_method
=================
Include this module for single reference methods.
Using this module, the only generator determinant is the Hartree-Fock determinant.

View File

@ -1,246 +0,0 @@
.. _module_tools:
.. program:: tools
.. default-role:: option
=====
tools
=====
Useful tools are grouped in this module.
Programs
--------
* :ref:`diagonalize_h`
* :ref:`fcidump`
* :ref:`four_idx_transform`
* :ref:`molden`
* :ref:`print_e_conv`
* :ref:`print_wf`
* :ref:`save_natorb`
* :ref:`save_one_e_dm`
* :ref:`save_ortho_mos`
* :ref:`write_integrals_erf`
Subroutines / functions
-----------------------
.. c:function:: routine:
File : :file:`write_integrals_erf.irp.f`
.. code:: fortran
subroutine routine
Called by:
.. hlist::
:columns: 3
* :c:func:`diagonalize_h`
* :c:func:`print_wf`
* :c:func:`write_integrals_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_erf_two_e_integrals_ao`
* :c:func:`save_erf_two_e_integrals_mo`
.. c:function:: routine_e_conv:
File : :file:`print_e_conv.irp.f`
.. code:: fortran
subroutine routine_e_conv
routine called by :c:func:`print_e_conv`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`ezfio_filename`
Called by:
.. hlist::
:columns: 3
* :c:func:`print_e_conv`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_get_iterations_energy_iterations`
* :c:func:`ezfio_get_iterations_n_det_iterations`
* :c:func:`ezfio_get_iterations_n_iter`
* :c:func:`ezfio_get_iterations_pt2_iterations`
.. c:function:: routine_save_one_e_dm:
File : :file:`save_one_e_dm.irp.f`
.. code:: fortran
subroutine routine_save_one_e_dm
routine called by :c:func:`save_one_e_dm`
Needs:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha`
Called by:
.. hlist::
:columns: 3
* :c:func:`save_one_e_dm`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_alpha_mo`
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo`
.. c:function:: write_ao_basis:
File : :file:`molden.irp.f`
.. code:: fortran
subroutine write_Ao_basis(i_unit_output)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_list_shell_aos`
* :c:data:`ao_coef`
* :c:data:`ao_num`
* :c:data:`ao_prim_num`
* :c:data:`nucl_charge`
* :c:data:`ao_l`
* :c:data:`ao_expo`
* :c:data:`element_name`
* :c:data:`nucl_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`molden`
.. c:function:: write_geometry:
File : :file:`molden.irp.f`
.. code:: fortran
subroutine write_geometry(i_unit_output)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_charge`
* :c:data:`element_name`
* :c:data:`nucl_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`molden`
.. c:function:: write_intro_gamess:
File : :file:`molden.irp.f`
.. code:: fortran
subroutine write_intro_gamess(i_unit_output)
Called by:
.. hlist::
:columns: 3
* :c:func:`molden`
.. c:function:: write_mo_basis:
File : :file:`molden.irp.f`
.. code:: fortran
subroutine write_Mo_basis(i_unit_output)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`ao_l_char_space`
* :c:data:`nucl_charge`
* :c:data:`ao_nucl`
* :c:data:`element_name`
Called by:
.. hlist::
:columns: 3
* :c:func:`molden`

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -207,6 +207,7 @@ Index of Providers
* :c:data:`element_name` * :c:data:`element_name`
* :c:data:`energy_c` * :c:data:`energy_c`
* :c:data:`energy_c_lda` * :c:data:`energy_c_lda`
* :c:data:`energy_c_new_functional`
* :c:data:`energy_c_pbe` * :c:data:`energy_c_pbe`
* :c:data:`energy_iterations` * :c:data:`energy_iterations`
* :c:data:`energy_sr_c_lda` * :c:data:`energy_sr_c_lda`
@ -215,6 +216,7 @@ Index of Providers
* :c:data:`energy_sr_x_pbe` * :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x` * :c:data:`energy_x`
* :c:data:`energy_x_lda` * :c:data:`energy_x_lda`
* :c:data:`energy_x_new_functional`
* :c:data:`energy_x_pbe` * :c:data:`energy_x_pbe`
* :c:data:`exc_degree_per_selectors` * :c:data:`exc_degree_per_selectors`
* :c:data:`exchange_functional` * :c:data:`exchange_functional`
@ -256,6 +258,8 @@ Index of Providers
* :c:data:`gga_type_functionals` * :c:data:`gga_type_functionals`
* :c:data:`give_polynomial_mult_center_one_e_erf` * :c:data:`give_polynomial_mult_center_one_e_erf`
* :c:data:`give_polynomial_mult_center_one_e_erf_opt` * :c:data:`give_polynomial_mult_center_one_e_erf_opt`
* :c:data:`global_selection_buffer`
* :c:data:`global_selection_buffer_lock`
* :c:data:`grad_aos_dsr_vc_alpha_pbe_w` * :c:data:`grad_aos_dsr_vc_alpha_pbe_w`
* :c:data:`grad_aos_dsr_vc_beta_pbe_w` * :c:data:`grad_aos_dsr_vc_beta_pbe_w`
* :c:data:`grad_aos_dsr_vx_alpha_pbe_w` * :c:data:`grad_aos_dsr_vx_alpha_pbe_w`
@ -511,6 +515,10 @@ Index of Providers
* :c:data:`potential_c_beta_ao_lda` * :c:data:`potential_c_beta_ao_lda`
* :c:data:`potential_c_beta_ao_pbe` * :c:data:`potential_c_beta_ao_pbe`
* :c:data:`potential_c_beta_mo` * :c:data:`potential_c_beta_mo`
* :c:data:`potential_new_functional_c_alpha_ao`
* :c:data:`potential_new_functional_c_beta_ao`
* :c:data:`potential_new_functional_x_alpha_ao`
* :c:data:`potential_new_functional_x_beta_ao`
* :c:data:`potential_sr_c_alpha_ao_lda` * :c:data:`potential_sr_c_alpha_ao_lda`
* :c:data:`potential_sr_c_alpha_ao_pbe` * :c:data:`potential_sr_c_alpha_ao_pbe`
* :c:data:`potential_sr_c_beta_ao_lda` * :c:data:`potential_sr_c_beta_ao_lda`
@ -815,7 +823,7 @@ Index of Subroutines/Functions
* :c:func:`compute_ao_two_e_integrals_erf` * :c:func:`compute_ao_two_e_integrals_erf`
* :c:func:`connect_to_taskserver` * :c:func:`connect_to_taskserver`
* :c:func:`connected_to_ref` * :c:func:`connected_to_ref`
* :c:func:`connected_to_ref_by_mono` * :c:func:`connected_to_ref_by_single`
* :c:func:`copy_h_apply_buffer_to_wf` * :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`copy_psi_bilinear_to_psi` * :c:func:`copy_psi_bilinear_to_psi`
* :c:func:`create_guess` * :c:func:`create_guess`
@ -831,6 +839,8 @@ Index of Subroutines/Functions
* :c:func:`davidson_diag_hs2` * :c:func:`davidson_diag_hs2`
* :c:func:`davidson_pull_results` * :c:func:`davidson_pull_results`
* :c:func:`davidson_push_results` * :c:func:`davidson_push_results`
* :c:func:`davidson_push_results_async_recv`
* :c:func:`davidson_push_results_async_send`
* :c:func:`davidson_run_slave` * :c:func:`davidson_run_slave`
* :c:func:`davidson_slave_inproc` * :c:func:`davidson_slave_inproc`
* :c:func:`davidson_slave_tcp` * :c:func:`davidson_slave_tcp`
@ -863,7 +873,7 @@ Index of Subroutines/Functions
* :c:func:`disconnect_from_taskserver_state` * :c:func:`disconnect_from_taskserver_state`
* :c:func:`dm_dft_alpha_beta_and_all_aos_at_r` * :c:func:`dm_dft_alpha_beta_and_all_aos_at_r`
* :c:func:`dm_dft_alpha_beta_at_r` * :c:func:`dm_dft_alpha_beta_at_r`
* :c:func:`do_mono_excitation` * :c:func:`do_single_excitation`
* :c:func:`dpol` * :c:func:`dpol`
* :c:func:`dpold` * :c:func:`dpold`
* :c:func:`dpoldd` * :c:func:`dpoldd`
@ -957,9 +967,9 @@ Index of Subroutines/Functions
* :c:func:`get_excitation_degree_spin` * :c:func:`get_excitation_degree_spin`
* :c:func:`get_excitation_degree_vector` * :c:func:`get_excitation_degree_vector`
* :c:func:`get_excitation_degree_vector_double_alpha_beta` * :c:func:`get_excitation_degree_vector_double_alpha_beta`
* :c:func:`get_excitation_degree_vector_mono` * :c:func:`get_excitation_degree_vector_single`
* :c:func:`get_excitation_degree_vector_mono_or_exchange` * :c:func:`get_excitation_degree_vector_single_or_exchange`
* :c:func:`get_excitation_degree_vector_mono_or_exchange_verbose` * :c:func:`get_excitation_degree_vector_single_or_exchange_verbose`
* :c:func:`get_excitation_spin` * :c:func:`get_excitation_spin`
* :c:func:`get_index_in_psi_det_alpha_unique` * :c:func:`get_index_in_psi_det_alpha_unique`
* :c:func:`get_index_in_psi_det_beta_unique` * :c:func:`get_index_in_psi_det_beta_unique`
@ -979,15 +989,15 @@ Index of Subroutines/Functions
* :c:func:`get_mo_two_e_integrals_exch_ii` * :c:func:`get_mo_two_e_integrals_exch_ii`
* :c:func:`get_mo_two_e_integrals_i1j1` * :c:func:`get_mo_two_e_integrals_i1j1`
* :c:func:`get_mo_two_e_integrals_ij` * :c:func:`get_mo_two_e_integrals_ij`
* :c:func:`get_mono_excitation`
* :c:func:`get_mono_excitation_from_fock`
* :c:func:`get_mono_excitation_spin`
* :c:func:`get_occupation_from_dets` * :c:func:`get_occupation_from_dets`
* :c:func:`get_phase` * :c:func:`get_phase`
* :c:func:`get_phase_bi` * :c:func:`get_phase_bi`
* :c:func:`get_phasemask_bit` * :c:func:`get_phasemask_bit`
* :c:func:`get_pseudo_inverse` * :c:func:`get_pseudo_inverse`
* :c:func:`get_s2` * :c:func:`get_s2`
* :c:func:`get_single_excitation`
* :c:func:`get_single_excitation_from_fock`
* :c:func:`get_single_excitation_spin`
* :c:func:`get_task_from_taskserver` * :c:func:`get_task_from_taskserver`
* :c:func:`get_tasks_from_taskserver` * :c:func:`get_tasks_from_taskserver`
* :c:func:`get_two_e_integral` * :c:func:`get_two_e_integral`
@ -997,7 +1007,6 @@ Index of Subroutines/Functions
* :c:func:`give_all_aos_and_grad_and_lapl_at_r` * :c:func:`give_all_aos_and_grad_and_lapl_at_r`
* :c:func:`give_all_aos_and_grad_at_r` * :c:func:`give_all_aos_and_grad_at_r`
* :c:func:`give_all_aos_at_r` * :c:func:`give_all_aos_at_r`
* :c:func:`give_all_aos_at_r_old`
* :c:func:`give_all_erf_kl_ao` * :c:func:`give_all_erf_kl_ao`
* :c:func:`give_all_mos_and_grad_and_lapl_at_r` * :c:func:`give_all_mos_and_grad_and_lapl_at_r`
* :c:func:`give_all_mos_and_grad_at_r` * :c:func:`give_all_mos_and_grad_at_r`
@ -1057,16 +1066,16 @@ Index of Subroutines/Functions
* :c:func:`i_h_j` * :c:func:`i_h_j`
* :c:func:`i_h_j_double_alpha_beta` * :c:func:`i_h_j_double_alpha_beta`
* :c:func:`i_h_j_double_spin` * :c:func:`i_h_j_double_spin`
* :c:func:`i_h_j_mono_spin`
* :c:func:`i_h_j_mono_spin_one_e` * :c:func:`i_h_j_mono_spin_one_e`
* :c:func:`i_h_j_one_e` * :c:func:`i_h_j_one_e`
* :c:func:`i_h_j_s2` * :c:func:`i_h_j_s2`
* :c:func:`i_h_j_single_spin`
* :c:func:`i_h_j_two_e` * :c:func:`i_h_j_two_e`
* :c:func:`i_h_j_verbose` * :c:func:`i_h_j_verbose`
* :c:func:`i_h_psi` * :c:func:`i_h_psi`
* :c:func:`i_h_psi_minilist` * :c:func:`i_h_psi_minilist`
* :c:func:`i_s2_psi_minilist` * :c:func:`i_s2_psi_minilist`
* :c:func:`i_wee_j_mono` * :c:func:`i_wee_j_single`
* :c:func:`i_x1_pol_mult` * :c:func:`i_x1_pol_mult`
* :c:func:`initialize_bitmask_to_restart_ones` * :c:func:`initialize_bitmask_to_restart_ones`
* :c:func:`initialize_mo_coef_begin_iteration` * :c:func:`initialize_mo_coef_begin_iteration`
@ -1094,7 +1103,7 @@ Index of Subroutines/Functions
* :c:func:`is_a_2p` * :c:func:`is_a_2p`
* :c:func:`is_a_two_holes_two_particles` * :c:func:`is_a_two_holes_two_particles`
* :c:func:`is_connected_to` * :c:func:`is_connected_to`
* :c:func:`is_connected_to_by_mono` * :c:func:`is_connected_to_by_single`
* :c:func:`is_i_in_virtual` * :c:func:`is_i_in_virtual`
* :c:func:`is_in_wavefunction` * :c:func:`is_in_wavefunction`
* :c:func:`is_spin_flip_possible` * :c:func:`is_spin_flip_possible`
@ -1135,7 +1144,6 @@ Index of Subroutines/Functions
* :c:func:`modify_bitmasks_for_hole_in_out` * :c:func:`modify_bitmasks_for_hole_in_out`
* :c:func:`modify_bitmasks_for_particl` * :c:func:`modify_bitmasks_for_particl`
* :c:func:`molden` * :c:func:`molden`
* :c:func:`mono_excitation_wee`
* :c:func:`mpi_print` * :c:func:`mpi_print`
* :c:func:`multiply_poly` * :c:func:`multiply_poly`
* :c:func:`n_pt_sup` * :c:func:`n_pt_sup`
@ -1213,6 +1221,8 @@ Index of Subroutines/Functions
* :c:func:`push_integrals` * :c:func:`push_integrals`
* :c:func:`push_pt2` * :c:func:`push_pt2`
* :c:func:`push_pt2_results` * :c:func:`push_pt2_results`
* :c:func:`push_pt2_results_async_recv`
* :c:func:`push_pt2_results_async_send`
* :c:func:`push_selection_results` * :c:func:`push_selection_results`
* :c:func:`qp_stop` * :c:func:`qp_stop`
* :c:func:`qrpa` * :c:func:`qrpa`
@ -1249,6 +1259,8 @@ Index of Subroutines/Functions
* :c:func:`run` * :c:func:`run`
* :c:func:`run_cipsi` * :c:func:`run_cipsi`
* :c:func:`run_pt2_slave` * :c:func:`run_pt2_slave`
* :c:func:`run_pt2_slave_large`
* :c:func:`run_pt2_slave_small`
* :c:func:`run_selection_slave` * :c:func:`run_selection_slave`
* :c:func:`run_slave_cipsi` * :c:func:`run_slave_cipsi`
* :c:func:`run_slave_main` * :c:func:`run_slave_main`
@ -1285,6 +1297,7 @@ Index of Subroutines/Functions
* :c:func:`set_natural_mos` * :c:func:`set_natural_mos`
* :c:func:`set_order` * :c:func:`set_order`
* :c:func:`set_order_big` * :c:func:`set_order_big`
* :c:func:`single_excitation_wee`
* :c:func:`sort` * :c:func:`sort`
* :c:func:`sort_dets_ab` * :c:func:`sort_dets_ab`
* :c:func:`sort_dets_ab_v` * :c:func:`sort_dets_ab_v`
@ -1341,6 +1354,8 @@ Index of Subroutines/Functions
* :c:func:`write_time` * :c:func:`write_time`
* :c:func:`zmq_abort` * :c:func:`zmq_abort`
* :c:func:`zmq_delete_task` * :c:func:`zmq_delete_task`
* :c:func:`zmq_delete_task_async_recv`
* :c:func:`zmq_delete_task_async_send`
* :c:func:`zmq_delete_tasks` * :c:func:`zmq_delete_tasks`
* :c:func:`zmq_delete_tasks_async_recv` * :c:func:`zmq_delete_tasks_async_recv`
* :c:func:`zmq_delete_tasks_async_send` * :c:func:`zmq_delete_tasks_async_send`

View File

@ -0,0 +1,139 @@
============================================
Developping new functionals for KS or RS-DFT
============================================
The very basics
===============
To develop new functionals for |DFT| (or |RSDFT|) to be used in the SCF programs (:ref:`ks_scf` or :ref:`rs_ks_scf` ) or in multi-configurational |RSDFT| (see `<https://gitlab.com/eginer/qp_plugins_eginer>`_), you need to specify, at the end of the day, two things:
* *exchange/correlation* **energy functionals** used to compute the **energy**
* *exchange/correlation* **potentials** for (alpha/beta electrons) used to **optimize the wave function**
The providers to define such quantities, and then used by all the all the |DFT| programs, are (see :ref:`module_dft_one_e`):
* :c:data:`energy_x` and :c:data:`energy_c` : the *exchange* and *correlation* energy functionals (see :file:`e_xc_genera l.irp.f`)
* :c:data:`potential_x_alpha_ao` and :c:data:`potential_x_beta_ao` : the exchange potential for alpha/beta electrons on the |AO| basis (se e :file:`pot_general.irp.f`)
* :c:data:`potential_c_alpha_ao` and :c:data:`potential_c_beta_ao` : the correlation potential for alpha/beta electrons on the |AO| basis ( see :file:`pot_general.irp.f`)
From the |AO| basis, the providers for the exchange/correlation potentials of alpha/beta electrons on the |MO| basis are automatically obtained by a |AO| --> |MO| transformation.
So, at the end of the day, adding a new functional consists only in **setting a new value to these providers**.
The general philosphy
---------------------
We have created a quite easy way to develop new functionals that is based on
* the used of **your own external plugins**
* the module :ref:`module_new_functionals` acting as **hub**
A pictorial representation of the main dependencies can be seen here:
.. image:: /_static/dependencies_func.pdf
:align: center
:width: 200px
:alt: Summary of dependencies
The main idea is the following:
1. Develop *new providers* for the new functionals (energy and potential for exchange and correlation) in some **external plugin**.
* Example:
* In an **external plugin** named **fancy_functionals**, you create *e_c_new_fancy_func* for the energy and *pot_ao_alpha_new_func* for the alpha potential
* If you want to be able to use the |DFT| programs already available in the |QP|, these *providers* must use the providers for the density defined in :ref:`module_density_for_dft` and :ref:`module_dft_utils_in_r` (see below).
2. Add the name of your **external plugin** to the :file:`NEED` in order to link your new providers to **new_functionals**
* Example:
* add **fancy_functionals** to the NEED file of **new_functionals**
3. Change the file :file:`e_xc_new_func.irp.f` and :file:`pot_xc_new_func.irp.f` to set the value of your new providers to the providers defined in **new_functionals**
* Example:
* for the exchange/correlation energy
.. code:: fortran
BEGIN_PROVIDER[double precision, energy_x_new_functional, (N_states) ]
&BEGIN_PROVIDER[double precision, energy_c_new_functional, (N_states) ]
implicit none
BEGIN_DOC
! energy_x_new_functional = define here your functional
! energy_c_new_functional = define here your functional
END_DOC
energy_c_new_functional = e_c_new_fancy_func
energy_x_new_functional = e_x_new_fancy_func
END_PROVIDER
4. Compile at the root of the |QP|
* Example:
.. code:: bash
cd ${QP_ROOT}
ninja
5. When you want to execute a program with your new functional, just set the options :option:`dft_keywords exchange_functional` and :option:`dft_keywords correlation_functional` to "my_functional".
Using the density for DFT calculations in the |QP|
==================================================
Different ways of defining the density for the DFT
--------------------------------------------------
There are many ways of defining a density, and the keyword to define it is :option:`density_for_dft density_for_dft`.
Here are the following options for that keyword:
* "KS" : density is obtained from **a single Slater determinant**
* "WFT" : density is obtained from **the wave function** which is stored in the |EZFIO| data base
* "input_density" : a one-body density matrix on the |MO| basis is read from the |EZFIO| data base, and the density is built from there (see :c:data:`data_one_e_dm_alpha_mo`)
* "damping_rs_dft" : damped density between "WFT" and "input_density" with the damping factor :option:`density_for_dft damping_for_rs_dft`.
.. note::
If an |MO| basis is already defined in the  |EZFIO| data base, the one-body density matrices will be defined
according to this |MO| basis. For instance, if "KS", the density constructed will be density of a single Slater
determinant built with the current |MO| basis stored in the |EZFIO| data base.
Once that you have defined how to define the density, you can easily access to the providers associated to it.
Value of the density and its gradients in real space
----------------------------------------------------
The density and its gradients evaluated on all grid points are (see :ref:`module_dft_utils_in_r`):
* :c:data:`one_e_dm_alpha_at_r` and :c:data:`one_e_dm_beta_at_r` : alpha/beta density at grid points
* :c:data:`one_e_dm_and_grad_alpha_in_r`, :c:data:`one_e_dm_and_grad_beta_in_r`: alpha/beta gradients (and densities)
If you want to evaluate the density and its gradients at a given point in space, please refer to:
* :c:func:`density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r`
If you use these *providers* and subroutines, the density computed will be coherent with the choice of density that you specified
with :option:`density_for_dft density_for_dft`, and it will impact automatically the general providers of :ref:`module_dft_one_e`.

View File

@ -81,7 +81,9 @@ fci
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`psi_det_size` * :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit` * :c:data:`psi_det_sorted_bit`
* :c:data:`psi_energy`
* :c:data:`psi_occ_pattern` * :c:data:`psi_occ_pattern`
* :c:data:`psi_energy`
* :c:data:`pt2_e0_denominator` * :c:data:`pt2_e0_denominator`
* :c:data:`pt2_stoch_istate` * :c:data:`pt2_stoch_istate`
* :c:data:`read_wf` * :c:data:`read_wf`

View File

@ -35,6 +35,17 @@
%%%% PUBLISHED PAPERS %%%% PUBLISHED PAPERS
@phdthesis{yann_garniron_2019_2558127,
author = {Yann Garniron},
title = {{Development and parallel implementation of
selected configuration interaction methods}},
school = {Université de Toulouse},
year = 2019,
month = feb,
doi = {10.5281/zenodo.2558127},
url = {https://doi.org/10.5281/zenodo.2558127}
}
@article{Giner_2018, @article{Giner_2018,
doi = {10.1063/1.5052714}, doi = {10.1063/1.5052714},
url = {https://doi.org/10.1063%2F1.5052714}, url = {https://doi.org/10.1063%2F1.5052714},

View File

@ -10,7 +10,10 @@ the the basics of the |qp|. As an example, we will run a frozen core
Demo video Demo video
========== ==========
.. Include demo video here This tutorial can be directly watched at:
`<https://www.youtube.com/watch?v=4nmdCAPkZlc>`_
Hands on Hands on
@ -18,9 +21,72 @@ Hands on
.. important:: .. important::
Before using the |qp|, it is required to source the file Before using the |qp|, it is required to load the environment variables
:file:`quantum_package.rc` if it has not been done already in the relatives to the |QP| or to be in the |qpsh| mode.
current shell.
Please execute in the current shell:
.. code:: bash
${QP_ROOT}/bin/qpsh
where :code:`${QP_ROOT}` is the path to the source files of the |QP| installed on your architecture.
The |QPSH| mode: a bash-like experience for quantum chemistry
-------------------------------------------------------------
The |QP| has been designed pretty much as an *interactive* environment for quantum-chemistry calculations,
in order to facilitate the user experience.
Just like in bash, there are many commands in the |QP| (see for instance :ref:`qp_edit` or :ref:`qp_run`)
which help in handling useful data or running executables (see for instance :ref:`scf` or :ref:`fci`).
All commands designed within the |qp| **begins** with `qp`, and are two ways of running a **command**:
* the *executable* associated to the command:
.. code:: bash
qp_command
or the *qp* command which calls the *executable* :code:`qp_command`:
.. code:: bash
qp command
Usually, when using the :command:`qp` command, the name of the |EZFIO| database is omitted.
The advantage or using :code:`qp command` is that you can, just like in bash, have:
* the :kbd:`Tab` key for the auto-completion for basically any command of the |QP|
* man pages with -h, --help or qp man
Just try, for instance:
.. code:: bash
qp
and then use the auto-completion. You will show appear all possible commands that you can run:
.. code:: bash
convert_output_to_ezfio -h plugins unset_file
create_ezfio man set_file update
Then, try, still with the auto-completion,
.. code:: bash
qp create
You will see appear all the options for the :ref:`qp_create_ezfio` commands.
Create the EZFIO database Create the EZFIO database
------------------------- -------------------------
@ -49,7 +115,7 @@ create an |EZFIO| database with the 6-31G basis set:
.. code:: bash .. code:: bash
qp_create_ezfio -b "6-31G" hcn.xyz -o hcn qp create_ezfio -b "6-31G" hcn.xyz -o hcn
The EZFIO database now contains data relative to the nuclear coordinates The EZFIO database now contains data relative to the nuclear coordinates
and the atomic basis set: and the atomic basis set:
@ -57,18 +123,21 @@ and the atomic basis set:
.. code:: bash .. code:: bash
$ ls hcn $ ls hcn
ao_basis/ electrons/ ezfio/ nuclei/ pseudo/ ao_basis becke_numerical_grid dft_keywords mo_one_e_ints perturbation
ao_one_e_ints davidson dressing mo_two_e_erf_ints pseudo
ao_two_e_erf_ints density_for_dft electrons mo_two_e_ints scf_utils
ao_two_e_ints determinants ezfio nuclei work
Run a Hartree-Fock calculation Run a Hartree-Fock calculation
------------------------------ ------------------------------
The program :ref:`qp_run` is the driver program of the |qp|. To run a The program :ref:`qp_run` is the driver program of the |qp|. To run a
|SCF| calculation, just run |scf| calculation, just run
.. code:: bash .. code:: bash
qp_run scf hcn qp run scf
The expected energy is ``-92.827856698`` au. The expected energy is ``-92.827856698`` au.
@ -84,13 +153,13 @@ the |MOs| are stored by increasing order of Fock energies.
Choose the target |MO| space Choose the target |MO| space
---------------------------- ----------------------------
Now, modify to |EZFIO| database to make |CIPSI| calculation in the Now, we will modify the |EZFIO| database to make |CIPSI| calculation only in the
full set of valence |MOs|, keeping the core |MOs| frozen. The simple full set of valence |MOs|, keeping the core |MOs| frozen. The simple
command :ref:`qp_set_frozen_core` does this automatically: command :ref:`qp_set_frozen_core` does this automatically:
.. code:: bash .. code:: bash
qp_set_frozen_core hcn qp set_frozen_core
The general command to specify core and active orbitals is :ref:`qp_set_mo_class`. The general command to specify core and active orbitals is :ref:`qp_set_mo_class`.
@ -98,7 +167,7 @@ In the case of HCN molecule in the 631G basis, one has 20 |MOs| in total and the
.. code:: .. code::
qp_set_mo_class -core "[1-2]" -act "[3-20]" hcn qp set_mo_class --core "[1-2]" --act "[3-20]"
@ -109,7 +178,7 @@ We will now use the |CIPSI| algorithm to estimate the |FCI| energy.
.. code:: .. code::
qp_run fci hcn | tee hcn.fci.out qp run fci | tee hcn.fci.out
The program will start with a single determinant and will iteratively: The program will start with a single determinant and will iteratively:
@ -130,7 +199,7 @@ To have a pictural illustration of the convergence of the |CIPSI| algorithm, jus
.. code:: .. code::
qp_e_conv_fci hcn.fci.out qp_e_conv_fci
This will create the files "hcn.fci.out.conv" containing the data of the convergence of the energy that can be plotted, together with the file "hcn.fci.out.conv.1.eps" which is obtained from the gnuplot plot file "hcn.fci.out.conv.plt". This will create the files "hcn.fci.out.conv" containing the data of the convergence of the energy that can be plotted, together with the file "hcn.fci.out.conv.1.eps" which is obtained from the gnuplot plot file "hcn.fci.out.conv.plt".
@ -142,16 +211,3 @@ The estimated |FCI| energy of HCN is ``-93.0501`` au.
The documentation of the :ref:`module_fci` module and that of the :ref:`fci` program. The documentation of the :ref:`module_fci` module and that of the :ref:`fci` program.
---------------------------
TODO
.. important:: TODO
.. include:: /work.rst
* Parameters for Hartree-Fock
* Parameters for Davidson
* Running in parallel

View File

@ -10,10 +10,10 @@
# export QP_NTHREADS_PT2=32 # export QP_NTHREADS_PT2=32
# Number of threads for MKL # Number of threads for MKL
# exort MKL_NUM_THREADS=16 # export MKL_NUM_THREADS=16
# Number of threads for OpenMP # Number of threads for OpenMP
# exort OMP_NUM_THREADS=16 # export OMP_NUM_THREADS=16
# Name of the network interface to be chosen # Name of the network interface to be chosen
# export QP_NIC=ib0 # export QP_NIC=ib0

View File

@ -163,7 +163,7 @@ _qp_Complete()
create_ezfio) create_ezfio)
case "${prev}" in case "${prev}" in
create_ezfio) create_ezfio)
COMPREPLY=( $(compgen -W "-b -a -c -d -h -m -o -p -x" -- $cur ) ) COMPREPLY=( $(compgen -W "-b -a -c -d -h -m -o -p -x $(\ls)" -- $cur ) )
return 0 return 0
;; ;;
-m|-d|-c) -m|-d|-c)

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "CIS" "1" "Jan 29, 2019" "2.0" "Quantum Package" .TH "CIS" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
cis \- | Quantum Package > cis \- | Quantum Package >
. .

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "FCI" "1" "Jan 29, 2019" "2.0" "Quantum Package" .TH "FCI" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
fci \- | Quantum Package > fci \- | Quantum Package >
. .
@ -137,11 +137,15 @@ Touches:
\fBpsi_det_size\fP \fBpsi_det_size\fP
.IP \(bu 2 .IP \(bu 2
\fBpsi_det_sorted_bit\fP \fBpsi_det_sorted_bit\fP
.IP \(bu 2
\fBpsi_energy\fP
.UNINDENT .UNINDENT
.INDENT 2.0 .INDENT 2.0
.IP \(bu 2 .IP \(bu 2
\fBpsi_occ_pattern\fP \fBpsi_occ_pattern\fP
.IP \(bu 2 .IP \(bu 2
\fBpsi_energy\fP
.IP \(bu 2
\fBpt2_e0_denominator\fP \fBpt2_e0_denominator\fP
.IP \(bu 2 .IP \(bu 2
\fBpt2_stoch_istate\fP \fBpt2_stoch_istate\fP

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "MOLDEN" "1" "Jan 29, 2019" "2.0" "Quantum Package" .TH "MOLDEN" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
molden \- | Quantum Package > molden \- | Quantum Package >
. .

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "QP_RESET" "1" "Jan 29, 2019" "2.0" "Quantum Package" .TH "QP_RESET" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
qp_reset \- | Quantum Package > qp_reset \- | Quantum Package >
. .

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "WRITE_INTEGRALS_ERF" "1" "Jan 29, 2019" "2.0" "Quantum Package" .TH "WRITE_INTEGRALS_ERF" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.SH NAME .SH NAME
write_integrals_erf \- | Quantum Package > write_integrals_erf \- | Quantum Package >
. .

2
ocaml/.gitignore vendored
View File

@ -9,6 +9,7 @@ Input_ao_two_e_erf_ints.ml
Input_ao_two_e_ints.ml Input_ao_two_e_ints.ml
Input_auto_generated.ml Input_auto_generated.ml
Input_becke_numerical_grid.ml Input_becke_numerical_grid.ml
Input_champ.ml
Input_davidson.ml Input_davidson.ml
Input_density_for_dft.ml Input_density_for_dft.ml
Input_determinants.ml Input_determinants.ml
@ -21,6 +22,7 @@ Input_nuclei.ml
Input_perturbation.ml Input_perturbation.ml
Input_pseudo.ml Input_pseudo.ml
Input_scf_utils.ml Input_scf_utils.ml
Input_variance.ml
qp_create_ezfio qp_create_ezfio
qp_create_ezfio.native qp_create_ezfio.native
qp_edit qp_edit

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