mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-04 02:48:24 +01:00
Develop manus (#8)
* 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 * improved qp_e_conv_fci * 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 * Delete mo_energy_expval.irp.broken * bug fixed by peter * Update README.rst * Update e_xc_new_func.irp.f * Update links.rst * Update quickstart.rst * Update quickstart.rst
This commit is contained in:
commit
f5ecf72f5c
@ -8,7 +8,7 @@ repository <https://github.com/LCPQ/quantum_package>`_.
|
||||
|
||||
.. 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
|
||||
|
3
TODO
3
TODO
@ -58,6 +58,7 @@ Doc: plugins et qp_plugins
|
||||
Ajouter les symetries dans devel
|
||||
|
||||
|
||||
# Parallelize i_H_psi
|
||||
|
||||
|
||||
IMPORTANT:
|
||||
@ -66,5 +67,3 @@ Davidson Diagonalization
|
||||
------------------------
|
||||
|
||||
Not enough memory: aborting in davidson_diag_hjj_sjj
|
||||
|
||||
|
||||
|
@ -1,19 +1,96 @@
|
||||
#!/bin/bash
|
||||
file=$1
|
||||
|
||||
# Check the QP_ROOT directory
|
||||
if [[ -z ${QP_ROOT} ]] ; then
|
||||
>&2 echo "please source quantum_package.rc"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source ${QP_ROOT}/quantum_package.rc
|
||||
|
||||
qp_run print_e_conv $1
|
||||
nstates=`cat ${1}/determinants/n_states`
|
||||
TEMP=$(getopt -o h -l ,help -n $0 -- "$@") || exit 1 # get the input / options
|
||||
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
|
||||
|
||||
|
||||
for i in $(seq 1 $nstates) ; do
|
||||
out=${1}.${i}.conv
|
||||
out=${file}.${i}.conv
|
||||
cat << EOF > ${out}.plt
|
||||
set term 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
|
||||
|
||||
gnuplot ${out}.plt
|
||||
#rm ${out}.plt
|
||||
if [[ -z ${gnuplot_ok} ]] ; then
|
||||
gnuplot ${out}.plt
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
for i in $(seq 2 $nstates) ; do
|
||||
out=${1}.${i}.delta_e.conv
|
||||
out=${file}.${i}.delta_e.conv
|
||||
cat << EOF > ${out}.plt
|
||||
set term 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"
|
||||
|
||||
EOF
|
||||
if [[ -z ${gnuplot_ok} ]] ; then
|
||||
gnuplot ${out}.plt
|
||||
# rm ${out}.plt
|
||||
fi
|
||||
done
|
||||
|
10
configure
vendored
10
configure
vendored
@ -9,6 +9,14 @@ eval set -- "$TEMP"
|
||||
export QP_ROOT="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
echo "QP_ROOT="$QP_ROOT
|
||||
|
||||
# Check if the module to create new DFT functionals exists or not
|
||||
if [[ ! -d ${QP_ROOT}/src/new_functionals ]] ; then
|
||||
echo "${QP_ROOT}/src/new_functionals does NOT exists !!"
|
||||
echo "Creating a new one ..."
|
||||
cp -r ${QP_ROOT}/scripts/functionals/do_not_touch_func ${QP_ROOT}/src/new_functionals
|
||||
fi
|
||||
|
||||
|
||||
|
||||
function help()
|
||||
{
|
||||
@ -464,7 +472,7 @@ else
|
||||
echo "See ./configure --help for more details."
|
||||
echo ""
|
||||
fi
|
||||
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
|
2
docs/ref
2
docs/ref
@ -4,7 +4,7 @@
|
||||
* option provider :option:`name_of_module provider`
|
||||
* subroutine :c:func:`my_subroutine`
|
||||
* module :ref:`module`
|
||||
* provider :c:data:`my_subroutine`
|
||||
* provider :c:data:`my_provider`
|
||||
* qp_command :ref:`qp_command`
|
||||
* linux command :command:`qp_command`
|
||||
* linux command with option :command:`qp_command -o`
|
||||
|
69
docs/source/_static/dependencies_func.fig
Normal file
69
docs/source/_static/dependencies_func.fig
Normal 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
|
BIN
docs/source/_static/dependencies_func.pdf
Normal file
BIN
docs/source/_static/dependencies_func.pdf
Normal file
Binary file not shown.
@ -38,6 +38,9 @@
|
||||
.. |OPAM| replace:: `OPAM`_
|
||||
.. |Python| replace:: `Python`_
|
||||
.. |qp| replace:: *Quantum Package*
|
||||
.. |QP| replace:: |qp|
|
||||
.. |qpsh| replace:: *Quantum Package Shell*
|
||||
.. |QPSH| replace:: |qpsh|
|
||||
.. |resultsFile| replace:: `resultsFile`_
|
||||
.. |SLURM| replace:: `SLURM`_
|
||||
.. |ZeroMQ| replace:: `ZeroMQ`_
|
||||
@ -76,6 +79,8 @@
|
||||
.. |SCF| replace:: :abbr:`SCF (Self Consistent Field)`
|
||||
.. |sCI| replace:: :abbr:`sCI (Selected-CI)`
|
||||
.. |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`
|
||||
.. |H| replace:: :math:`\hat H`
|
||||
|
@ -39,7 +39,8 @@
|
||||
|
||||
programmers_guide/programming
|
||||
programmers_guide/ezfio
|
||||
/programmers_guide/plugins
|
||||
programmers_guide/plugins
|
||||
programmers_guide/new_ks
|
||||
programmers_guide/index
|
||||
programmers_guide/plugins
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,905 +0,0 @@
|
||||
.. _module_ao_two_e_erf_ints:
|
||||
|
||||
.. program:: ao_two_e_erf_ints
|
||||
|
||||
.. default-role:: option
|
||||
|
||||
======================
|
||||
ao_two_e_erf_ints
|
||||
======================
|
||||
|
||||
Here, all two-electron integrals (:math:`erf(\mu r_{12})/r_{12}`) are computed.
|
||||
As they have 4 indices and many are zero, they are stored in a map, as defined
|
||||
in :file:`utils/map_module.f90`.
|
||||
|
||||
The main parameter of this module is :option:`ao_two_e_erf_ints mu_erf` which is the range-separation parameter.
|
||||
|
||||
To fetch an |AO| integral, use the
|
||||
`get_ao_two_e_integral_erf(i,j,k,l,ao_integrals_erf_map)` function.
|
||||
|
||||
|
||||
The conventions are:
|
||||
* For |AO| integrals : (ij|kl) = (11|22) = <ik|jl> = <12|12>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
EZFIO parameters
|
||||
----------------
|
||||
|
||||
.. option:: io_ao_two_e_integrals_erf
|
||||
|
||||
Read/Write |AO| integrals with the long range interaction from/to disk [ Write | Read | None ]
|
||||
|
||||
Default: None
|
||||
|
||||
.. option:: mu_erf
|
||||
|
||||
cutting of the interaction in the range separated model
|
||||
|
||||
Default: 0.5
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
.. c:var:: ao_integrals_erf_cache
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: ao_integrals_erf_cache (0:64*64*64*64)
|
||||
|
||||
|
||||
Cache of |AO| integrals for fast access
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_cache_min`
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||
|
||||
|
||||
|
||||
.. c:var:: ao_integrals_erf_cache_max
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
integer :: ao_integrals_erf_cache_min
|
||||
integer :: ao_integrals_erf_cache_max
|
||||
|
||||
|
||||
Min and max values of the AOs for which the integrals are in the cache
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_num`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_cache`
|
||||
|
||||
|
||||
.. c:var:: ao_integrals_erf_cache_min
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
integer :: ao_integrals_erf_cache_min
|
||||
integer :: ao_integrals_erf_cache_max
|
||||
|
||||
|
||||
Min and max values of the AOs for which the integrals are in the cache
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_num`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_cache`
|
||||
|
||||
|
||||
.. c:var:: ao_integrals_erf_map
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
type(map_type) :: ao_integrals_erf_map
|
||||
|
||||
|
||||
|AO| integrals
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_num`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_cache`
|
||||
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||
|
||||
|
||||
.. c:var:: ao_two_e_integral_erf_schwartz
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: ao_two_e_integral_erf_schwartz (ao_num,ao_num)
|
||||
|
||||
|
||||
Needed to compute Schwartz inequalities
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||
* :c:data:`ao_expo_ordered_transp`
|
||||
* :c:data:`ao_nucl`
|
||||
* :c:data:`ao_num`
|
||||
* :c:data:`ao_power`
|
||||
* :c:data:`ao_prim_num`
|
||||
* :c:data:`n_pt_max_integrals`
|
||||
* :c:data:`nucl_coord`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||
|
||||
|
||||
.. c:var:: ao_two_e_integrals_erf_in_map
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
logical :: ao_two_e_integrals_erf_in_map
|
||||
|
||||
|
||||
Map of Atomic integrals
|
||||
i(r1) j(r2) 1/r12 k(r1) l(r2)
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||
* :c:data:`ao_expo_ordered_transp`
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
* :c:data:`ao_nucl`
|
||||
* :c:data:`ao_num`
|
||||
* :c:data:`ao_power`
|
||||
* :c:data:`ao_prim_num`
|
||||
* :c:data:`ezfio_filename`
|
||||
* :c:data:`io_ao_two_e_integrals_erf`
|
||||
* :c:data:`n_pt_max_integrals`
|
||||
* :c:data:`nproc`
|
||||
* :c:data:`nucl_coord`
|
||||
* :c:data:`read_ao_two_e_integrals_erf`
|
||||
* :c:data:`zmq_context`
|
||||
* :c:data:`zmq_socket_pull_tcp_address`
|
||||
* :c:data:`zmq_state`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_cache`
|
||||
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||
* :c:data:`mo_two_e_integrals_erf_in_map`
|
||||
|
||||
|
||||
.. c:function:: general_primitive_integral_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision function general_primitive_integral_erf(dim, &
|
||||
P_new,P_center,fact_p,p,p_inv,iorder_p, &
|
||||
Q_new,Q_center,fact_q,q,q_inv,iorder_q)
|
||||
|
||||
|
||||
Computes the integral <pq|rs> where p,q,r,s are Gaussian primitives
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`mu_erf`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`add_poly_multiply`
|
||||
* :c:func:`give_polynom_mult_center_x`
|
||||
* :c:func:`multiply_poly`
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
||||
.. c:function:: ao_two_e_integral_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision function ao_two_e_integral_erf(i,j,k,l)
|
||||
|
||||
|
||||
integral of the AO basis <ik|jl> or (ij|kl)
|
||||
i(r1) j(r1) 1/r12 k(r2) l(r2)
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_pt_max_integrals`
|
||||
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||
* :c:data:`ao_power`
|
||||
* :c:data:`ao_expo_ordered_transp`
|
||||
* :c:data:`ao_prim_num`
|
||||
* :c:data:`ao_nucl`
|
||||
* :c:data:`nucl_coord`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`give_explicit_poly_and_gaussian`
|
||||
|
||||
|
||||
.. c:function:: ao_two_e_integral_schwartz_accel_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision function ao_two_e_integral_schwartz_accel_erf(i,j,k,l)
|
||||
|
||||
|
||||
integral of the AO basis <ik|jl> or (ij|kl)
|
||||
i(r1) j(r1) 1/r12 k(r2) l(r2)
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_pt_max_integrals`
|
||||
* :c:data:`ao_integrals_threshold`
|
||||
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||
* :c:data:`ao_power`
|
||||
* :c:data:`ao_expo_ordered_transp`
|
||||
* :c:data:`ao_prim_num`
|
||||
* :c:data:`ao_nucl`
|
||||
* :c:data:`nucl_coord`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`give_explicit_poly_and_gaussian`
|
||||
|
||||
|
||||
.. c:function:: ao_two_e_integrals_erf_in_map_collector:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine ao_two_e_integrals_erf_in_map_collector(zmq_socket_pull)
|
||||
|
||||
|
||||
Collects results from the AO integral calculation
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
* :c:data:`ao_num`
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`end_zmq_to_qp_run_socket`
|
||||
* :c:func:`insert_into_ao_integrals_erf_map`
|
||||
|
||||
|
||||
.. c:function:: ao_two_e_integrals_erf_in_map_slave:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine ao_two_e_integrals_erf_in_map_slave(thread,iproc)
|
||||
|
||||
|
||||
Computes a buffer of integrals
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_num`
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`ao_two_e_integrals_erf_in_map_slave_inproc`
|
||||
* :c:func:`ao_two_e_integrals_erf_in_map_slave_tcp`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`compute_ao_integrals_erf_jl`
|
||||
* :c:func:`end_zmq_push_socket`
|
||||
* :c:func:`end_zmq_to_qp_run_socket`
|
||||
* :c:func:`push_integrals`
|
||||
|
||||
|
||||
.. c:function:: ao_two_e_integrals_erf_in_map_slave_inproc:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine ao_two_e_integrals_erf_in_map_slave_inproc(i)
|
||||
|
||||
|
||||
Computes a buffer of integrals. i is the ID of the current thread.
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
|
||||
|
||||
|
||||
.. c:function:: ao_two_e_integrals_erf_in_map_slave_tcp:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine ao_two_e_integrals_erf_in_map_slave_tcp(i)
|
||||
|
||||
|
||||
Computes a buffer of integrals. i is the ID of the current thread.
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
|
||||
|
||||
|
||||
.. c:function:: clear_ao_erf_map:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine clear_ao_erf_map
|
||||
|
||||
|
||||
Frees the memory of the |AO| map
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`map_deinit`
|
||||
|
||||
|
||||
.. c:function:: compute_ao_integrals_erf_jl:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine compute_ao_integrals_erf_jl(j,l,n_integrals,buffer_i,buffer_value)
|
||||
|
||||
|
||||
Parallel client for AO integrals
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_overlap_abs`
|
||||
* :c:data:`ao_num`
|
||||
* :c:data:`ao_integrals_threshold`
|
||||
* :c:data:`ao_two_e_integral_erf_schwartz`
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`two_e_integrals_index`
|
||||
|
||||
|
||||
.. c:function:: compute_ao_two_e_integrals_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine compute_ao_two_e_integrals_erf(j,k,l,sze,buffer_value)
|
||||
|
||||
|
||||
Compute AO 1/r12 integrals for all i and fixed j,k,l
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_overlap_abs`
|
||||
* :c:data:`ao_num`
|
||||
* :c:data:`ao_two_e_integral_erf_schwartz`
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||
|
||||
|
||||
.. c:function:: dump_ao_integrals_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine dump_ao_integrals_erf(filename)
|
||||
|
||||
|
||||
Save to disk the |AO| erf integrals
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`ezfio_set_work_empty`
|
||||
|
||||
|
||||
.. c:function:: eri_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision function ERI_erf(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z)
|
||||
|
||||
|
||||
Atomic primtive two-electron integral between the 4 primitives :
|
||||
|
||||
* primitive 1 : $x_1^{a_x} y_1^{a_y} z_1^{a_z} \exp(-\alpha * r1^2)$
|
||||
* primitive 2 : $x_1^{b_x} y_1^{b_y} z_1^{b_z} \exp(- \beta * r1^2)$
|
||||
* primitive 3 : $x_2^{c_x} y_2^{c_y} z_2^{c_z} \exp(-\delta * r2^2)$
|
||||
* primitive 4 : $x_2^{d_x} y_2^{d_y} z_2^{d_z} \exp(-\gamma * r2^2)$
|
||||
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`mu_erf`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`integrale_new_erf`
|
||||
|
||||
|
||||
.. c:function:: get_ao_erf_map_size:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
function get_ao_erf_map_size()
|
||||
|
||||
|
||||
Returns the number of elements in the |AO| map
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
|
||||
|
||||
.. c:function:: get_ao_two_e_integral_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision function get_ao_two_e_integral_erf(i,j,k,l,map) result(result)
|
||||
|
||||
|
||||
Gets one |AO| two-electron integral from the |AO| map
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_cache_min`
|
||||
* :c:data:`ao_overlap_abs`
|
||||
* :c:data:`ao_integrals_threshold`
|
||||
* :c:data:`ao_integrals_erf_cache`
|
||||
* :c:data:`ao_two_e_integral_erf_schwartz`
|
||||
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`map_get`
|
||||
* :c:func:`two_e_integrals_index`
|
||||
|
||||
|
||||
.. c:function:: get_ao_two_e_integrals_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine get_ao_two_e_integrals_erf(j,k,l,sze,out_val)
|
||||
|
||||
|
||||
Gets multiple |AO| two-electron integral from the |AO| map .
|
||||
All i are retrieved for j,k,l fixed.
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
* :c:data:`ao_overlap_abs`
|
||||
* :c:data:`ao_integrals_threshold`
|
||||
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`add_integrals_to_map_erf`
|
||||
|
||||
|
||||
.. c:function:: get_ao_two_e_integrals_erf_non_zero:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine get_ao_two_e_integrals_erf_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int)
|
||||
|
||||
|
||||
Gets multiple |AO| two-electron integrals from the |AO| map .
|
||||
All non-zero i are retrieved for j,k,l fixed.
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
* :c:data:`ao_overlap_abs`
|
||||
* :c:data:`ao_integrals_threshold`
|
||||
* :c:data:`ao_two_e_integral_erf_schwartz`
|
||||
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`map_get`
|
||||
* :c:func:`two_e_integrals_index`
|
||||
|
||||
|
||||
.. c:function:: insert_into_ao_integrals_erf_map:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values)
|
||||
|
||||
|
||||
Create new entry into |AO| map
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`ao_two_e_integrals_erf_in_map_collector`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`map_append`
|
||||
|
||||
|
||||
.. c:function:: integrale_new_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine integrale_new_erf(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt)
|
||||
|
||||
|
||||
Calculate the integral of the polynomial :
|
||||
|
||||
$I_x1(a_x+b_x, c_x+d_x,p,q) \, I_x1(a_y+b_y, c_y+d_y,p,q) \, I_x1(a_z+b_z, c_z+d_z,p,q)$
|
||||
|
||||
between $( 0 ; 1)$
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`mu_erf`
|
||||
* :c:data:`n_pt_max_integrals`
|
||||
* :c:data:`gauleg_t2`
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`eri_erf`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`i_x1_new`
|
||||
|
||||
|
||||
.. c:function:: load_ao_integrals_erf:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
integer function load_ao_integrals_erf(filename)
|
||||
|
||||
|
||||
Read from disk the |AO| erf integrals
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`cache_map_reallocate`
|
||||
* :c:func:`map_deinit`
|
||||
* :c:func:`map_sort`
|
||||
|
||||
|
||||
.. c:function:: save_erf_two_e_integrals_ao:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine save_erf_two_e_integrals_ao
|
||||
|
||||
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
* :c:data:`ezfio_filename`
|
||||
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||
|
||||
Called by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`routine`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf`
|
||||
* :c:func:`ezfio_set_work_empty`
|
||||
* :c:func:`map_save_to_disk`
|
||||
|
||||
|
||||
.. c:function:: save_erf_two_e_ints_ao_into_ints_ao:
|
||||
|
||||
|
||||
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
subroutine save_erf_two_e_ints_ao_into_ints_ao
|
||||
|
||||
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_integrals_erf_map`
|
||||
* :c:data:`ezfio_filename`
|
||||
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||
|
||||
Calls:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:func:`ezfio_set_ao_two_e_ints_io_ao_two_e_integrals`
|
||||
* :c:func:`ezfio_set_work_empty`
|
||||
* :c:func:`map_save_to_disk`
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,53 +0,0 @@
|
||||
.. _module_aux_quantities:
|
||||
|
||||
.. program:: aux_quantities
|
||||
|
||||
.. default-role:: option
|
||||
|
||||
==============
|
||||
aux_quantities
|
||||
==============
|
||||
|
||||
|
||||
This module contains some global variables (such as densities and energies)
|
||||
which are stored in the |EZFIO| directory in a different place than determinants.
|
||||
This is used in practice to store density matrices which can be obtained from
|
||||
any method, as long as they are stored in the same |MO| basis which is used for
|
||||
the calculations. In |RSDFT| calculations, this can be done to perform damping
|
||||
on the density in order to speed up the convergence.
|
||||
|
||||
The main providers of that module are:
|
||||
|
||||
* :c:data:`data_one_e_dm_alpha_mo` and :c:data:`data_one_e_dm_beta_mo` which
|
||||
are the one-body alpha and beta densities which are necessary read from the
|
||||
|EZFIO| directory.
|
||||
|
||||
|
||||
Thanks to these providers you can use any density matrix that does not
|
||||
necessarily corresponds to that of the current wave function.
|
||||
|
||||
|
||||
|
||||
|
||||
EZFIO parameters
|
||||
----------------
|
||||
|
||||
.. option:: data_energy_var
|
||||
|
||||
Variational energy computed with the wave function
|
||||
|
||||
|
||||
.. option:: data_energy_proj
|
||||
|
||||
Projected energy computed with the wave function
|
||||
|
||||
|
||||
.. option:: data_one_e_dm_alpha_mo
|
||||
|
||||
Alpha one body density matrix on the |MO| basis computed with the wave function
|
||||
|
||||
|
||||
.. option:: data_one_e_dm_beta_mo
|
||||
|
||||
Beta one body density matrix on the |MO| basis computed with the wave function
|
||||
|
@ -1,833 +0,0 @@
|
||||
.. _module_becke_numerical_grid:
|
||||
|
||||
.. program:: becke_numerical_grid
|
||||
|
||||
.. default-role:: option
|
||||
|
||||
====================
|
||||
becke_numerical_grid
|
||||
====================
|
||||
|
||||
This module contains all quantities needed to build Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions.
|
||||
|
||||
This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains
|
||||
a certain number of radial and angular points. No pruning is done on the angular part of the grid.
|
||||
|
||||
The main keyword for that module is:
|
||||
|
||||
* :option:`becke_numerical_grid grid_type_sgn` which controls the precision of the grid according the standard **SG-n** grids. This keyword controls the two providers `n_points_integration_angular` `n_points_radial_grid`.
|
||||
|
||||
The main providers of that module are:
|
||||
|
||||
* `n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 170 | 194 | 266 | 302 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details.
|
||||
* `n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary.
|
||||
* `final_grid_points` which are the (x,y,z) coordinates of the grid points.
|
||||
* `final_weight_at_r_vector` which are the weights at each grid point
|
||||
|
||||
|
||||
For a simple example of how to use the grid, see :file:`example.irp.f`.
|
||||
|
||||
The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/).
|
||||
See next section for explanations and citation policies.
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
This subroutine is part of a set of subroutines that generate
|
||||
Lebedev grids [1-6] for integration on a sphere. The original
|
||||
C-code [1] was kindly provided by Dr. Dmitri N. Laikov and
|
||||
translated into fortran by Dr. Christoph van Wuellen.
|
||||
This subroutine was translated using a C to fortran77 conversion
|
||||
tool written by Dr. Christoph van Wuellen.
|
||||
|
||||
Users of this code are asked to include reference [1] in their
|
||||
publications, and in the user- and programmers-manuals
|
||||
describing their codes.
|
||||
|
||||
This code was distributed through CCL (http://www.ccl.net/).
|
||||
|
||||
[1] V.I. Lebedev, and D.N. Laikov
|
||||
"A quadrature formula for the sphere of the 131st
|
||||
algebraic order of accuracy"
|
||||
Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481.
|
||||
|
||||
[2] V.I. Lebedev
|
||||
"A quadrature formula for the sphere of 59th algebraic
|
||||
order of accuracy"
|
||||
Russian Acad. Sci. Dokl. Math., Vol. 50, 1995, pp. 283-286.
|
||||
|
||||
[3] V.I. Lebedev, and A.L. Skorokhodov
|
||||
"Quadrature formulas of orders 41, 47, and 53 for the sphere"
|
||||
Russian Acad. Sci. Dokl. Math., Vol. 45, 1992, pp. 587-592.
|
||||
|
||||
[4] V.I. Lebedev
|
||||
"Spherical quadrature formulas exact to orders 25-29"
|
||||
Siberian Mathematical Journal, Vol. 18, 1977, pp. 99-107.
|
||||
|
||||
[5] V.I. Lebedev
|
||||
"Quadratures on a sphere"
|
||||
Computational Mathematics and Mathematical Physics, Vol. 16,
|
||||
1976, pp. 10-24.
|
||||
|
||||
[6] V.I. Lebedev
|
||||
"Values of the nodes and weights of ninth to seventeenth
|
||||
order Gauss-Markov quadrature formulae invariant under the
|
||||
octahedron group with inversion"
|
||||
Computational Mathematics and Mathematical Physics, Vol. 15,
|
||||
1975, pp. 44-51.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
EZFIO parameters
|
||||
----------------
|
||||
|
||||
.. option:: grid_type_sgn
|
||||
|
||||
Type of grid used for the Becke's numerical grid. Can be, by increasing accuracy: [ 0 | 1 | 2 | 3 ]
|
||||
|
||||
Default: 2
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
||||
.. c:var:: alpha_knowles
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/integration_radial.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: alpha_knowles (100)
|
||||
|
||||
|
||||
Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996)
|
||||
as a function of the nuclear charge
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: angular_quadrature_points
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3)
|
||||
double precision, allocatable :: weights_angular_points (n_points_integration_angular)
|
||||
|
||||
|
||||
weights and grid points for the integration on the angular variables on
|
||||
the unit sphere centered on (0,0,0)
|
||||
According to the LEBEDEV scheme
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_points_radial_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: dr_radial_integral
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
|
||||
double precision :: dr_radial_integral
|
||||
|
||||
|
||||
points in [0,1] to map the radial integral [0,\infty]
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_points_radial_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: final_grid_points
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
|
||||
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
|
||||
integer, allocatable :: index_final_points (3,n_points_final_grid)
|
||||
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||
|
||||
|
||||
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||
|
||||
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||
|
||||
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||
|
||||
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
* :c:data:`n_points_final_grid`
|
||||
* :c:data:`n_points_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_grad_in_r_array`
|
||||
* :c:data:`aos_in_r_array`
|
||||
* :c:data:`aos_lapl_in_r_array`
|
||||
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||
* :c:data:`aos_vc_alpha_lda_w`
|
||||
* :c:data:`aos_vc_alpha_pbe_w`
|
||||
* :c:data:`energy_sr_x_lda`
|
||||
* :c:data:`energy_sr_x_pbe`
|
||||
* :c:data:`energy_x_lda`
|
||||
* :c:data:`energy_x_pbe`
|
||||
* :c:data:`mos_in_r_array`
|
||||
* :c:data:`one_e_dm_alpha_at_r`
|
||||
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||
|
||||
|
||||
.. c:var:: final_weight_at_r
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||
|
||||
|
||||
Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights.
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`alpha_knowles`
|
||||
* :c:data:`angular_quadrature_points`
|
||||
* :c:data:`grid_points_radial`
|
||||
* :c:data:`m_knowles`
|
||||
* :c:data:`n_points_radial_grid`
|
||||
* :c:data:`nucl_charge`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`weight_at_r`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_grid_points`
|
||||
* :c:data:`n_points_final_grid`
|
||||
|
||||
|
||||
.. c:var:: final_weight_at_r_vector
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
|
||||
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
|
||||
integer, allocatable :: index_final_points (3,n_points_final_grid)
|
||||
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||
|
||||
|
||||
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||
|
||||
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||
|
||||
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||
|
||||
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
* :c:data:`n_points_final_grid`
|
||||
* :c:data:`n_points_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_grad_in_r_array`
|
||||
* :c:data:`aos_in_r_array`
|
||||
* :c:data:`aos_lapl_in_r_array`
|
||||
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||
* :c:data:`aos_vc_alpha_lda_w`
|
||||
* :c:data:`aos_vc_alpha_pbe_w`
|
||||
* :c:data:`energy_sr_x_lda`
|
||||
* :c:data:`energy_sr_x_pbe`
|
||||
* :c:data:`energy_x_lda`
|
||||
* :c:data:`energy_x_pbe`
|
||||
* :c:data:`mos_in_r_array`
|
||||
* :c:data:`one_e_dm_alpha_at_r`
|
||||
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||
|
||||
|
||||
.. c:var:: grid_points_per_atom
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: grid_points_per_atom (3,n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||
|
||||
|
||||
x,y,z coordinates of grid points used for integration in 3d space
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`alpha_knowles`
|
||||
* :c:data:`angular_quadrature_points`
|
||||
* :c:data:`grid_points_radial`
|
||||
* :c:data:`m_knowles`
|
||||
* :c:data:`n_points_radial_grid`
|
||||
* :c:data:`nucl_charge`
|
||||
* :c:data:`nucl_coord`
|
||||
* :c:data:`nucl_num`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_grid_points`
|
||||
* :c:data:`one_e_dm_alpha_in_r`
|
||||
* :c:data:`weight_at_r`
|
||||
|
||||
|
||||
.. c:var:: grid_points_radial
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
|
||||
double precision :: dr_radial_integral
|
||||
|
||||
|
||||
points in [0,1] to map the radial integral [0,\infty]
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_points_radial_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: index_final_points
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
|
||||
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
|
||||
integer, allocatable :: index_final_points (3,n_points_final_grid)
|
||||
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||
|
||||
|
||||
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||
|
||||
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||
|
||||
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||
|
||||
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
* :c:data:`n_points_final_grid`
|
||||
* :c:data:`n_points_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_grad_in_r_array`
|
||||
* :c:data:`aos_in_r_array`
|
||||
* :c:data:`aos_lapl_in_r_array`
|
||||
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||