9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-07 05:53:37 +01:00

Merge branch 'pouet' into cleaning_dft

This commit is contained in:
Emmanuel Giner 2021-05-10 01:34:02 +02:00
commit a1ef509dbb
167 changed files with 12968 additions and 3725 deletions

6
.gitmodules vendored Normal file
View File

@ -0,0 +1,6 @@
[submodule "external/ezfio"]
path = external/ezfio
url = https://gitlab.com/scemama/ezfio.git
[submodule "external/irpf90"]
path = external/irpf90
url = https://gitlab.com/scemama/irpf90.git

View File

@ -23,7 +23,6 @@ addons:
# - liblapack-dev # - liblapack-dev
# - libblas-dev # - libblas-dev
- wget - wget
- eatmydata
env: env:
- OPAMROOT=$HOME/.opam - OPAMROOT=$HOME/.opam
@ -45,9 +44,9 @@ stages:
jobs: jobs:
include: include:
- stage: configuration - stage: configuration
script: eatmydata travis/configuration.sh script: travis/configuration.sh
- stage: compilation - stage: compilation
script: eatmydata travis/compilation.sh script: travis/compilation.sh
- stage: testing - stage: testing
script: eatmydata travis/testing.sh script: travis/testing.sh

20
AUTHORS Normal file
View File

@ -0,0 +1,20 @@
# If you contributed to this software, please make a pull request to add your
# name to this list (alphabetical order of the last name)
- Thomas Applencourt
- Anouar Benali
- Michel Caffarel
- Grégoire David
- Anthony Ferté
- Yann Garniron
- Kevin Gasperich
- Vijay Gopal Chilkuri
- Emmanuel Giner
- Pierre-François Loos
- Jean-Paul Malrieu
- Julien Paquier
- Barthélémy Pradines
- Peter Reinhardt
- Anthony Scemama
- Julien Toulouse
- Mickaël Véril

View File

@ -28,6 +28,12 @@ and need to be installed.
When all dependencies have been installed, ( the :command:`configure` will tell you) When all dependencies have been installed, ( the :command:`configure` will tell you)
source the :file:`quantum_package.rc` in order to load all environment variables and compile the |QP|. source the :file:`quantum_package.rc` in order to load all environment variables and compile the |QP|.
Now all the requirements are met, you can compile the programs using
.. code:: bash
make
Requirements Requirements
============ ============
@ -48,6 +54,7 @@ Requirements
- `Bubblewrap <https://github.com/projectatomic/bubblewrap>`_ : Sandboxing tool required by Opam - `Bubblewrap <https://github.com/projectatomic/bubblewrap>`_ : Sandboxing tool required by Opam
- `libcap <https://git.kernel.org/pub/scm/linux/kernel/git/morgan/libcap.git>`_ : POSIX capabilities required by Bubblewrap - `libcap <https://git.kernel.org/pub/scm/linux/kernel/git/morgan/libcap.git>`_ : POSIX capabilities required by Bubblewrap
- |Ninja| : a parallel build system - |Ninja| : a parallel build system
- |pkg-config| : a tool which returns information about installed libraries
When all the dependencies have been installed, go into the :file:`config` When all the dependencies have been installed, go into the :file:`config`
@ -79,7 +86,7 @@ The command is to be used as follows:
.. code:: bash .. code:: bash
./configure --install <package> ./configure --install=<package>
The following packages are supported by the :command:`configure` installer: The following packages are supported by the :command:`configure` installer:

View File

@ -1,4 +1,4 @@
# Quantum Package 2.1 # Quantum Package 2.2
<img src="https://raw.githubusercontent.com/QuantumPackage/qp2/master/data/qp2.png" width="250"> <img src="https://raw.githubusercontent.com/QuantumPackage/qp2/master/data/qp2.png" width="250">

85
RELEASE_NOTES.org Normal file
View File

@ -0,0 +1,85 @@
#+TITLE: Quantum Package Release notes
* Version 2.2
** Changes
- Python3 replaces Python2
- Travis CI uses 3 jobs
- Moved Travis scripts into ~travis~ directory
- IRPF90 and EZFIO are now git submodules
- Now basis sets should be downloaded from basis-set-exchange website
- Added ~bse~ in the installable tools
- Documentation in ~src/README.rst~
- Added two-body reduced density matrix
- Added basis set correction
- Added CAS-based on-top density functional
- Improve PT2 computation for excited-states: Mostly 2x2
diagonalization, and some (n+1)x(n+1) diagonalizations
- Error bars for stochastic variance and norm of the perturbed wave function
- Improve PT2-matching for excited-states
- Compute the overlap of PT2 excited states
- Renamed SOP into CFG
- Improved parallelism in PT2 by splitting tasks
- Use max in multi-state PT2 instead of sum for the selection weight
- Added seniority
- Added excitation_max
- More tasks for distribueted Davidson
- Random guess vectors in Davidson have zeros to preserve symmetry
- Disk-based Davidson when too much memory is required
- Fixed bug in DIIS
- Fixed bug in molden (Au -> Angs)
*** User interface
- Added ~qp_basis~ script to install a basis set from the ~bse~
command-line tool
- Introduced ~n_det_qp_edit~, ~psi_det_qp_edit~, and
~psi_coef_qp_edit~ to accelerate the opening of qp_edit with
large wave functions
- Removed ~etc/ninja.rc~
- Added flag to specify if the AOs are normalized
- Added flag to specify if the primitive Gaussians are normalized
- Added ~lin_dep_cutoff~, the cutoff for linear dependencies
- Davidson convergence threshold can be adapted from PT2
- In ~density_for_dft~, ~no_core_density~ is now a logical
- Default for ~weight_selection~ has changed from 2 to 1
- Nullify_small_elements in matrices to keep symmetry
- Default of density functional changed from LDA to PBE
- Added ~no_vvvv_integrals~ flag
- Added ~pt2_min_parallel_tasks~ to control parallelism in PT2
- Added ~print_energy~
- Added ~print_hamiltonian~
- Added input for two body RDM
- Added keyword ~save_wf_after_selection~
*** Code
- Many bug fixes
- Changed electron-nucleus from ~e_n~ to ~n_e~ in names of variables
- Changed ~occ_pattern~ to ~configuration~
- Replaced ~List.map~ by a tail-recursive version ~Qputils.list_map~
- Added possible imaginary part in OCaml MO coefficients
- Added ~qp_clean_source_files.sh~ to remove non-ascii characters
- Added flag ~is_periodic~ for periodic systems
- Possibilities to handle complex integrals and complex MOs
- Moved pseuodpotential integrals out of ~ao_one_e_integrals~
- Removed Schwarz test and added logical functions
~ao_two_e_integral_zero~ and ~ao_one_e_integral_zero~
- Introduced type for ~pt2_data~
- Banned excitations are used with far apart localized MOs
- S_z2_Sz is now included in S2
- S^2 in single precision
- Added Shank function
- Added utilities for periodic calculations
- Added ~V_ne_psi_energy~
- Added ~h_core_guess~ routine
- Fixed Laplacians in real space (indices)
- Added LIB file to add extra libs in plugin
ao_one_e_integral_zero
banned_excitations

43
TODO
View File

@ -1,43 +0,0 @@
# qpsh
* Faire que le slave de Hartree-fock est le calcul des integrales AO en parallele
# Exterieur
* Un module pour lire les integrales Moleculaires depuis un FCIDUMP
* Un module pour lire des integrales Atomiques (voir module de Mimi pour lire les AO Slater)
* Format Fchk (gaussian)
# Tests:
* Extrapolation
* DFT
# User doc:
* Mettre le mp2 comme exercice
* Interfaces : molden/fcidump
# Programmers doc:
* Example : Simple Hartree-Fock program from scratch
* Examples : subroutine example_module
# enleverle psi_det_size for all complicated stuffs with dimension of psi_coef
# Config file for Cray
# Documentation de /etc
Ajouter les symetries dans devel
IMPORTANT:
Davidson Diagonalization
------------------------
Not enough memory: aborting in davidson_diag_hjj_sjj
qp man does not find the programs in external plugins

View File

@ -30,7 +30,7 @@ try:
from docopt import docopt from docopt import docopt
from qp_path import QP_SRC, QP_ROOT from qp_path import QP_SRC, QP_ROOT
except ImportError: except ImportError:
print("source .quantum_package.rc") print("source quantum_package.rc")
raise raise

View File

@ -49,7 +49,7 @@ import os.path
try: try:
import qp_path import qp_path
except ImportError: except ImportError:
print("source .quantum_package.rc") print("source quantum_package.rc")
raise raise
from docopt import docopt from docopt import docopt

View File

@ -23,7 +23,7 @@ import os.path
try: try:
import qp_path import qp_path
except ImportError: except ImportError:
print("source .quantum_package.rc") print("source quantum_package.rc")
raise raise
from docopt import docopt from docopt import docopt

View File

@ -10,10 +10,10 @@
# #
# #
[COMMON] [COMMON]
FC : gfortran -ffree-line-length-none -I . -fPIC FC : gfortran -g -ffree-line-length-none -I . -fPIC
LAPACK_LIB : -lblas -llapack LAPACK_LIB : -lblas -llapack
IRPF90 : irpf90 IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32 IRPF90_FLAGS : --ninja --align=32 --assert
# Global options # Global options
################ ################
@ -22,7 +22,7 @@ IRPF90_FLAGS : --ninja --align=32
# 0 : Deactivate # 0 : Deactivate
# #
[OPTION] [OPTION]
MODE : OPT ; [ OPT | PROFILE | DEBUG ] : Chooses the section below MODE : DEBUG ; [ OPT | PROFILE | DEBUG ] : Chooses the section below
CACHE : 0 ; Enable cache_compile.py CACHE : 0 ; Enable cache_compile.py
OPENMP : 1 ; Append OpenMP flags OPENMP : 1 ; Append OpenMP flags
@ -35,7 +35,7 @@ OPENMP : 1 ; Append OpenMP flags
# -ffast-math and the Fortran-specific # -ffast-math and the Fortran-specific
# -fno-protect-parens and -fstack-arrays. # -fno-protect-parens and -fstack-arrays.
[OPT] [OPT]
FCFLAGS : -Ofast -msse4.2 FCFLAGS : -Ofast
# Profiling flags # Profiling flags
################# #################
@ -51,7 +51,7 @@ FCFLAGS : -Ofast
# -g : Extra debugging information # -g : Extra debugging information
# #
[DEBUG] [DEBUG]
FCFLAGS : -fcheck=all -g FCFLAGS : -g -msse4.2 -fcheck=all -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant -Wuninitialized -fbacktrace -ffpe-trap=zero,overflow,underflow -finit-real=nan
# OpenMP flags # OpenMP flags
################# #################

View File

@ -32,7 +32,7 @@ OPENMP : 1 ; Append OpenMP flags
# #
[OPT] [OPT]
FC : -traceback FC : -traceback
FCFLAGS : -mavx -O2 -ip -ftz -g FCFLAGS : -xAVX -O2 -ip -ftz -g
# Profiling flags # Profiling flags
################# #################

View File

@ -54,7 +54,7 @@ FCFLAGS : -msse4.2 -O2 -ip -ftz
# #
[DEBUG] [DEBUG]
FC : -g -traceback FC : -g -traceback
FCFLAGS : -msse4.2 -C -fpe0 -implicitnone FCFLAGS : -msse4.2 -check all -debug all -fpe-all=0 -implicitnone
# OpenMP flags # OpenMP flags

63
config/ifort_xHost.cfg Normal file
View File

@ -0,0 +1,63 @@
# 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 : ifort -fpic
LAPACK_LIB : -mkl=parallel
IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=64
# 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]
FC : -traceback
FCFLAGS : -xHost -O2 -ip -ftz -g
# Profiling flags
#################
#
[PROFILE]
FC : -p -g
FCFLAGS : -xSSE4.2 -O2 -ip -ftz
# 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 : -xSSE2 -C -fpe0 -implicitnone
# OpenMP flags
#################
#
[OPENMP]
FC : -qopenmp
IRPF90_FLAGS : --openmp

52
configure vendored
View File

@ -14,17 +14,16 @@ unset CCXX
# Force GCC instead of ICC for dependencies # Force GCC instead of ICC for dependencies
export CC=gcc export CC=gcc
# Download submodules
git submodule init
git submodule update
# /!\ When updating version, update also etc files # /!\ When updating version, update also etc files
EZFIO_TGZ="EZFIO-v2.0.3.tar.gz"
BATS_URL="https://github.com/bats-core/bats-core/archive/v1.1.0.tar.gz" BATS_URL="https://github.com/bats-core/bats-core/archive/v1.1.0.tar.gz"
BUBBLE_URL="https://github.com/projectatomic/bubblewrap/releases/download/v0.3.3/bubblewrap-0.3.3.tar.xz" BUBBLE_URL="https://github.com/projectatomic/bubblewrap/releases/download/v0.3.3/bubblewrap-0.3.3.tar.xz"
DOCOPT_URL="https://github.com/docopt/docopt/archive/0.6.2.tar.gz" DOCOPT_URL="https://github.com/docopt/docopt/archive/0.6.2.tar.gz"
BSE_URL="https://github.com/MolSSI-BSE/basis_set_exchange/archive/v0.8.11.tar.gz" BSE_URL="https://github.com/MolSSI-BSE/basis_set_exchange/archive/v0.8.11.tar.gz"
F77ZMQ_URL="https://github.com/scemama/f77_zmq/archive/v4.2.5.tar.gz" F77ZMQ_URL="https://github.com/scemama/f77_zmq/archive/v4.2.5.tar.gz"
GMP_URL="ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2"
IRPF90_URL="https://gitlab.com/scemama/irpf90/-/archive/v2.0.0/irpf90-v2.0.0.tar.gz"
LIBCAP_URL="https://git.kernel.org/pub/scm/linux/kernel/git/morgan/libcap.git/snapshot/libcap-2.25.tar.gz" LIBCAP_URL="https://git.kernel.org/pub/scm/linux/kernel/git/morgan/libcap.git/snapshot/libcap-2.25.tar.gz"
NINJA_URL="https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip" NINJA_URL="https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip"
OCAML_URL="https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh" OCAML_URL="https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh"
@ -126,13 +125,13 @@ source quantum_package.rc
function fail() { function fail() {
echo "You can try to install it using the -i option." echo "You can try to install it using the -i option."
echo "Please refer to INSTALL.rst to install the missing dependencies." echo "Please refer to INSTALL.rst to install the missing dependencies."
exit 1 exit -1
} }
function success() { function success() {
echo "" echo ""
echo "Configuration successful." echo "Configuration successful."
exit 1 exit 0
} }
function download() { function download() {
@ -178,15 +177,10 @@ function find_dir() {
} }
# Extract EZFIO if needed # Install IRPF90 if needed
EZFIO=$(find_dir "${QP_ROOT}"/external/ezfio) IRPF90=$(find_exe irpf90)
if [[ ${EZFIO} = $(not_found) ]] ; then if [[ ${IRPF90} = $(not_found) ]] ; then
execute << EOF make -C ${QP_ROOT}/external/irpf90
cd "\${QP_ROOT}"/external
tar --gunzip --extract --file ${EZFIO_TGZ}
rm -rf ezfio
mv EZFIO ezfio || mv EZFIO-v*/ ezfio
EOF
fi fi
@ -211,7 +205,7 @@ if [[ "${PACKAGES}.x" != ".x" ]] ; then
fi fi
if [[ ${PACKAGES} = all ]] ; then if [[ ${PACKAGES} = all ]] ; then
PACKAGES="zlib ninja irpf90 zeromq f77zmq gmp libcap bwrap ocaml ezfio docopt resultsFile bats" PACKAGES="zlib ninja irpf90 zeromq f77zmq gmp libcap bwrap ocaml docopt resultsFile bats"
fi fi
@ -228,12 +222,10 @@ EOF
elif [[ ${PACKAGE} = gmp ]] ; then elif [[ ${PACKAGE} = gmp ]] ; then
download ${GMP_URL} "${QP_ROOT}"/external/gmp.tar.bz2
execute << EOF execute << EOF
cd "\${QP_ROOT}"/external cd "\${QP_ROOT}"/external
tar --bzip2 --extract --file gmp.tar.bz2 tar --bzip2 --extract --file gmp-6.1.2.tar.bz2
rm gmp.tar.bz2 cd gmp-6.1.2
cd gmp*
./configure --prefix=$QP_ROOT && make -j 8 ./configure --prefix=$QP_ROOT && make -j 8
make install make install
EOF EOF
@ -246,7 +238,7 @@ EOF
tar --gunzip --extract --file libcap.tar.gz tar --gunzip --extract --file libcap.tar.gz
rm libcap.tar.gz rm libcap.tar.gz
cd libcap-*/libcap cd libcap-*/libcap
prefix=$QP_ROOT make install prefix=$QP_ROOT make BUILD_GPERF=no install
EOF EOF
elif [[ ${PACKAGE} = bwrap ]] ; then elif [[ ${PACKAGE} = bwrap ]] ; then
@ -263,13 +255,12 @@ EOF
elif [[ ${PACKAGE} = irpf90 ]] ; then elif [[ ${PACKAGE} = irpf90 ]] ; then
# When changing version of irpf90, don't forget to update etc/irpf90.rc
download ${IRPF90_URL} "${QP_ROOT}"/external/irpf90.tar.gz
execute << EOF execute << EOF
cd "\${QP_ROOT}"/external cd "\${QP_ROOT}"/external
tar --gunzip --extract --file irpf90.tar.gz tar --gunzip --extract --file irpf90.tar.gz
rm irpf90.tar.gz rm irpf90.tar.gz
cd irpf90-* mv irpf90-* irpf90
cd irpf90
make make
EOF EOF
@ -328,8 +319,8 @@ EOF
rm ${QP_ROOT}/external/opam_installer.sh rm ${QP_ROOT}/external/opam_installer.sh
# source ${OPAMROOT}/opam-init/init.sh > /dev/null 2> /dev/null || true # source ${OPAMROOT}/opam-init/init.sh > /dev/null 2> /dev/null || true
# #
# opam switch create ocaml-base-compiler.4.10.0 # opam switch create ocaml-base-compiler.4.11.1
opam init --verbose --yes --compiler=4.10.0 --disable-sandboxing opam init --verbose --yes --compiler=4.11.1 --disable-sandboxing
eval $(opam env) eval $(opam env)
opam install -y ${OCAML_PACKAGES} || exit 1 opam install -y ${OCAML_PACKAGES} || exit 1
@ -348,9 +339,9 @@ EOF
EOF EOF
rm ${QP_ROOT}/external/opam_installer.sh rm ${QP_ROOT}/external/opam_installer.sh
# source ${OPAMROOT}/opam-init/init.sh > /dev/null 2> /dev/null || true # source ${OPAMROOT}/opam-init/init.sh > /dev/null 2> /dev/null || true
# opam switch create ocaml-base-compiler.4.10.0 || exit 1 # opam switch create ocaml-base-compiler.4.11.1 || exit 1
opam init --verbose --yes --compiler=4.10.0 --disable-sandboxing opam init --verbose --yes --compiler=4.11.1 --disable-sandboxing
eval $(opam env) eval $(opam env)
execute << EOF execute << EOF
opam install -y \${OCAML_PACKAGES} || exit 1 opam install -y \${OCAML_PACKAGES} || exit 1
@ -410,6 +401,9 @@ EOF
rm --recursive --force -- bats-core-1.1.0 \ "\${QP_ROOT}"/external/bats.tar.gz rm --recursive --force -- bats-core-1.1.0 \ "\${QP_ROOT}"/external/bats.tar.gz
EOF EOF
else
error "${PACKAGE} unknown."
fail
fi fi
@ -425,7 +419,7 @@ fi
IRPF90=$(find_exe irpf90) IRPF90=$(find_exe irpf90)
if [[ ${IRPF90} = $(not_found) ]] ; then if [[ ${IRPF90} = $(not_found) ]] ; then
error "IRPf90 (irpf90) is not installed." error "IRPF90 (irpf90) is not installed."
fail fail
fi fi

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python2 #!/usr/bin/env python3
import os import os

View File

@ -24,9 +24,9 @@ copyright = '2019, A. Scemama, E. Giner'
author = 'A. Scemama, E. Giner' author = 'A. Scemama, E. Giner'
# The short X.Y version # The short X.Y version
version = '2.0' version = '2.1'
# The full version, including alpha/beta/rc tags # The full version, including alpha/beta/rc tags
release = '2.0' release = '2.1'
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------

View File

@ -50,7 +50,6 @@
:hidden: :hidden:
appendix/benchmarks appendix/benchmarks
appendix/research
appendix/license appendix/license
appendix/contributors appendix/contributors

View File

@ -118,10 +118,12 @@ Providers
* :c:data:`ao_coef` * :c:data:`ao_coef`
* :c:data:`ao_expo` * :c:data:`ao_expo`
* :c:data:`ao_normalized`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_power` * :c:data:`ao_power`
* :c:data:`ao_prim_num` * :c:data:`ao_prim_num`
* :c:data:`ao_prim_num_max` * :c:data:`ao_prim_num_max`
* :c:data:`primitives_normalized`
Needed by: Needed by:
@ -177,10 +179,12 @@ Providers
* :c:data:`ao_coef` * :c:data:`ao_coef`
* :c:data:`ao_expo` * :c:data:`ao_expo`
* :c:data:`ao_normalized`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_power` * :c:data:`ao_power`
* :c:data:`ao_prim_num` * :c:data:`ao_prim_num`
* :c:data:`ao_prim_num_max` * :c:data:`ao_prim_num_max`
* :c:data:`primitives_normalized`
Needed by: Needed by:
@ -261,10 +265,7 @@ Providers
* :c:data:`ao_pseudo_integrals_local` * :c:data:`ao_pseudo_integrals_local`
* :c:data:`ao_pseudo_integrals_non_local` * :c:data:`ao_pseudo_integrals_non_local`
* :c:data:`ao_spread_x` * :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_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
@ -363,10 +364,7 @@ Providers
* :c:data:`ao_pseudo_integrals_local` * :c:data:`ao_pseudo_integrals_local`
* :c:data:`ao_pseudo_integrals_non_local` * :c:data:`ao_pseudo_integrals_non_local`
* :c:data:`ao_spread_x` * :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_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
@ -853,10 +851,7 @@ Providers
* :c:data:`ao_integrals_n_e` * :c:data:`ao_integrals_n_e`
* :c:data:`ao_integrals_n_e_per_atom` * :c:data:`ao_integrals_n_e_per_atom`
* :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_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`gauleg_t2` * :c:data:`gauleg_t2`
@ -888,10 +883,7 @@ Providers
* :c:data:`ao_integrals_n_e` * :c:data:`ao_integrals_n_e`
* :c:data:`ao_integrals_n_e_per_atom` * :c:data:`ao_integrals_n_e_per_atom`
* :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_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`gauleg_t2` * :c:data:`gauleg_t2`
@ -1088,10 +1080,10 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_coef_normalized_ordered_transp` * :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl` * :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
@ -1117,14 +1109,14 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`nucl_n_aos`
* :c:data:`ao_num`
* :c:data:`ao_prim_num`
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl` * :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:`nucl_aos_transposed` * :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num` * :c:data:`nucl_num`
Called by: Called by:
@ -1158,14 +1150,14 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`nucl_n_aos`
* :c:data:`ao_num`
* :c:data:`ao_prim_num`
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl` * :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:`nucl_aos_transposed` * :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num` * :c:data:`nucl_num`
Called by: Called by:
@ -1195,14 +1187,14 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`nucl_n_aos`
* :c:data:`ao_num`
* :c:data:`ao_prim_num`
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl` * :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:`nucl_aos_transposed` * :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num` * :c:data:`nucl_num`
Called by: Called by:
@ -1233,6 +1225,6 @@ Subroutines / functions
* :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_nucl` * :c:data:`ao_nucl`
* :c:data:`nucl_coord`
* :c:data:`ao_power` * :c:data:`ao_power`
* :c:data:`nucl_coord`

View File

@ -12,12 +12,11 @@ All the one-electron integrals in the |AO| basis are here.
The most important providers for usual quantum-chemistry calculation are: The most important providers for usual quantum-chemistry calculation are:
* `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) * `ao_kinetic_integrals` which are the kinetic operator integrals on the |AO| basis
* `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) * `ao_integrals_n_e` which are the nuclear-elctron operator integrals on the |AO| basis
* `ao_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) * `ao_one_e_integrals` which are the the h_core operator integrals on the |AO| basis
Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`.
@ -144,6 +143,7 @@ Providers
* :c:data:`ao_cart_to_sphe_coef` * :c:data:`ao_cart_to_sphe_coef`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`lin_dep_cutoff`
@ -571,6 +571,8 @@ Providers
:math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle` :math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle`
These integrals also contain the pseudopotential integrals.
Needs: Needs:
.. hlist:: .. hlist::
@ -582,11 +584,13 @@ Providers
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_power` * :c:data:`ao_power`
* :c:data:`ao_prim_num` * :c:data:`ao_prim_num`
* :c:data:`ao_pseudo_integrals`
* :c:data:`do_pseudo`
* :c:data:`n_pt_max_integrals` * :c:data:`n_pt_max_integrals`
* :c:data:`nucl_charge` * :c:data:`nucl_charge`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
* :c:data:`nucl_num` * :c:data:`nucl_num`
* :c:data:`read_ao_integrals_e_n` * :c:data:`read_ao_integrals_n_e`
Needed by: Needed by:
@ -594,11 +598,33 @@ Providers
:columns: 3 :columns: 3
* :c:data:`ao_one_e_integrals` * :c:data:`ao_one_e_integrals`
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
* :c:data:`mo_integrals_n_e` * :c:data:`mo_integrals_n_e`
.. c:var:: ao_integrals_n_e_imag
File : :file:`ao_one_e_ints/pot_ao_ints.irp.f`
.. code:: fortran
double precision, allocatable :: ao_integrals_n_e_imag (ao_num,ao_num)
Nucleus-electron interaction, in the |AO| basis set.
:math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`read_ao_integrals_n_e`
.. c:var:: ao_integrals_n_e_per_atom .. c:var:: ao_integrals_n_e_per_atom
@ -669,6 +695,31 @@ Providers
* :c:data:`mo_kinetic_integrals` * :c:data:`mo_kinetic_integrals`
.. c:var:: ao_kinetic_integrals_imag
File : :file:`ao_one_e_ints/kin_ao_ints.irp.f`
.. code:: fortran
double precision, allocatable :: ao_kinetic_integrals_imag (ao_num,ao_num)
Kinetic energy integrals in the |AO| basis.
:math:`\langle \chi_i |\hat{T}| \chi_j \rangle`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`read_ao_integrals_kinetic`
.. c:var:: ao_one_e_integrals .. c:var:: ao_one_e_integrals
@ -690,18 +741,8 @@ Providers
* :c:data:`ao_integrals_n_e` * :c:data:`ao_integrals_n_e`
* :c:data:`ao_kinetic_integrals` * :c:data:`ao_kinetic_integrals`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_pseudo_integrals`
* :c:data:`do_pseudo`
* :c:data:`read_ao_one_e_integrals` * :c:data:`read_ao_one_e_integrals`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`hf_energy`
* :c:data:`scf_energy`
.. c:var:: ao_one_e_integrals_diag .. c:var:: ao_one_e_integrals_diag
@ -725,18 +766,30 @@ Providers
* :c:data:`ao_integrals_n_e` * :c:data:`ao_integrals_n_e`
* :c:data:`ao_kinetic_integrals` * :c:data:`ao_kinetic_integrals`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_pseudo_integrals`
* :c:data:`do_pseudo`
* :c:data:`read_ao_one_e_integrals` * :c:data:`read_ao_one_e_integrals`
Needed by:
.. c:var:: ao_one_e_integrals_imag
File : :file:`ao_one_e_ints/ao_one_e_ints.irp.f`
.. code:: fortran
double precision, allocatable :: ao_one_e_integrals_imag (ao_num,ao_num)
One-electron Hamiltonian in the |AO| basis.
Needs:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`fock_matrix_ao_alpha` * :c:data:`ao_num`
* :c:data:`hf_energy` * :c:data:`read_ao_one_e_integrals`
* :c:data:`scf_energy`
.. c:var:: ao_ortho_canonical_coef .. c:var:: ao_ortho_canonical_coef
@ -764,6 +817,8 @@ Providers
* :c:data:`ao_cartesian` * :c:data:`ao_cartesian`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap` * :c:data:`ao_overlap`
* :c:data:`lin_dep_cutoff`
* :c:data:`mpi_master`
Needed by: Needed by:
@ -771,7 +826,6 @@ Providers
:columns: 3 :columns: 3
* :c:data:`ao_ortho_canonical_coef_inv` * :c:data:`ao_ortho_canonical_coef_inv`
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
* :c:data:`ao_ortho_canonical_overlap` * :c:data:`ao_ortho_canonical_overlap`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num` * :c:data:`mo_num`
@ -830,6 +884,8 @@ Providers
* :c:data:`ao_cartesian` * :c:data:`ao_cartesian`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap` * :c:data:`ao_overlap`
* :c:data:`lin_dep_cutoff`
* :c:data:`mpi_master`
Needed by: Needed by:
@ -837,7 +893,6 @@ Providers
:columns: 3 :columns: 3
* :c:data:`ao_ortho_canonical_coef_inv` * :c:data:`ao_ortho_canonical_coef_inv`
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
* :c:data:`ao_ortho_canonical_overlap` * :c:data:`ao_ortho_canonical_overlap`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num` * :c:data:`mo_num`
@ -906,9 +961,7 @@ Providers
* :c:data:`ao_cart_to_sphe_overlap` * :c:data:`ao_cart_to_sphe_overlap`
* :c:data:`ao_ortho_canonical_coef` * :c:data:`ao_ortho_canonical_coef`
* :c:data:`ao_ortho_canonical_overlap` * :c:data:`ao_ortho_canonical_overlap`
* :c:data:`ao_ortho_lowdin_coef` * :c:data:`ao_overlap_complex`
* :c:data:`ao_ortho_lowdin_overlap`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`mo_overlap` * :c:data:`mo_overlap`
* :c:data:`s_half` * :c:data:`s_half`
* :c:data:`s_half_inv` * :c:data:`s_half_inv`
@ -939,19 +992,69 @@ Providers
* :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_nucl` * :c:data:`ao_nucl`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_complex`
* :c:data:`ao_power` * :c:data:`ao_power`
* :c:data:`ao_prim_num` * :c:data:`ao_prim_num`
* :c:data:`is_periodic`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
.. c:var:: ao_overlap_complex
File : :file:`ao_one_e_ints/ao_overlap.irp.f`
.. code:: fortran
complex*16, allocatable :: ao_overlap_complex (ao_num,ao_num)
Overlap for complex AOs
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`ao_overlap_imag`
Needed by: Needed by:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_two_e_integral_alpha` * :c:data:`ao_overlap_abs`
* :c:data:`mo_two_e_int_erf_jj_from_ao` * :c:data:`s_inv_complex`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_vv_from_ao`
.. c:var:: ao_overlap_imag
File : :file:`ao_one_e_ints/ao_overlap.irp.f`
.. code:: fortran
double precision, allocatable :: ao_overlap_imag (ao_num,ao_num)
Imaginary part of the overlap
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_overlap_complex`
.. c:var:: ao_overlap_x .. c:var:: ao_overlap_x
@ -993,9 +1096,7 @@ Providers
* :c:data:`ao_cart_to_sphe_overlap` * :c:data:`ao_cart_to_sphe_overlap`
* :c:data:`ao_ortho_canonical_coef` * :c:data:`ao_ortho_canonical_coef`
* :c:data:`ao_ortho_canonical_overlap` * :c:data:`ao_ortho_canonical_overlap`
* :c:data:`ao_ortho_lowdin_coef` * :c:data:`ao_overlap_complex`
* :c:data:`ao_ortho_lowdin_overlap`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`mo_overlap` * :c:data:`mo_overlap`
* :c:data:`s_half` * :c:data:`s_half`
* :c:data:`s_half_inv` * :c:data:`s_half_inv`
@ -1042,9 +1143,7 @@ Providers
* :c:data:`ao_cart_to_sphe_overlap` * :c:data:`ao_cart_to_sphe_overlap`
* :c:data:`ao_ortho_canonical_coef` * :c:data:`ao_ortho_canonical_coef`
* :c:data:`ao_ortho_canonical_overlap` * :c:data:`ao_ortho_canonical_overlap`
* :c:data:`ao_ortho_lowdin_coef` * :c:data:`ao_overlap_complex`
* :c:data:`ao_ortho_lowdin_overlap`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`mo_overlap` * :c:data:`mo_overlap`
* :c:data:`s_half` * :c:data:`s_half`
* :c:data:`s_half_inv` * :c:data:`s_half_inv`
@ -1091,9 +1190,7 @@ Providers
* :c:data:`ao_cart_to_sphe_overlap` * :c:data:`ao_cart_to_sphe_overlap`
* :c:data:`ao_ortho_canonical_coef` * :c:data:`ao_ortho_canonical_coef`
* :c:data:`ao_ortho_canonical_overlap` * :c:data:`ao_ortho_canonical_overlap`
* :c:data:`ao_ortho_lowdin_coef` * :c:data:`ao_overlap_complex`
* :c:data:`ao_ortho_lowdin_overlap`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`mo_overlap` * :c:data:`mo_overlap`
* :c:data:`s_half` * :c:data:`s_half`
* :c:data:`s_half_inv` * :c:data:`s_half_inv`
@ -1131,7 +1228,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_one_e_integrals` * :c:data:`ao_integrals_n_e`
* :c:data:`mo_pseudo_integrals` * :c:data:`mo_pseudo_integrals`
@ -1688,12 +1785,6 @@ Providers
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap` * :c:data:`ao_overlap`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvalues_fock_matrix_ao`
.. c:var:: s_inv .. c:var:: s_inv
@ -1715,6 +1806,30 @@ Providers
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap` * :c:data:`ao_overlap`
* :c:data:`lin_dep_cutoff`
.. c:var:: s_inv_complex
File : :file:`ao_one_e_ints/ao_overlap.irp.f`
.. code:: fortran
complex*16, allocatable :: s_inv_complex (ao_num,ao_num)
Inverse of the overlap matrix
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap_complex`
* :c:data:`lin_dep_cutoff`
@ -1722,6 +1837,28 @@ Providers
Subroutines / functions Subroutines / functions
----------------------- -----------------------
.. c:function:: ao_one_e_integral_zero:
File : :file:`ao_one_e_ints/screening.irp.f`
.. code:: fortran
logical function ao_one_e_integral_zero(i,k)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_overlap_abs`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`is_periodic`
.. c:function:: give_all_erf_kl_ao: .. c:function:: give_all_erf_kl_ao:
@ -1854,12 +1991,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_coef_normalized_ordered_transp` * :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl` * :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
@ -1949,14 +2086,14 @@ Subroutines / functions
* :c:func:`overlap_bourrin_deriv_x` * :c:func:`overlap_bourrin_deriv_x`
.. c:function:: v_e_n: .. c:function:: v_n_e:
File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` File : :file:`ao_one_e_ints/pot_ao_ints.irp.f`
.. code:: fortran .. code:: fortran
double precision function V_e_n(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta) double precision function V_n_e(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta)
Primitve nuclear attraction between the two primitves centered on the same atom. Primitve nuclear attraction between the two primitves centered on the same atom.

View File

@ -287,13 +287,13 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_coef_normalized_ordered_transp` * :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num` * :c:data:`ao_prim_num`
* :c:data:`mu_erf` * :c:data:`mu_erf`
* :c:data:`ao_nucl` * :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
Calls: Calls:
@ -322,13 +322,13 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_coef_normalized_ordered_transp` * :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_nucl` * :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
Calls: Calls:
@ -504,9 +504,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num`
* :c:data:`ao_two_e_integral_erf_schwartz` * :c:data:`ao_two_e_integral_erf_schwartz`
Called by: Called by:
@ -541,7 +540,6 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_two_e_integral_erf_schwartz` * :c:data:`ao_two_e_integral_erf_schwartz`
@ -650,10 +648,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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_integrals_erf_cache`
* :c:data:`ao_integrals_erf_cache_min`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_erf_schwartz` * :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`ao_two_e_integrals_erf_in_map`
@ -685,7 +682,6 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_integrals_erf_map` * :c:data:`ao_integrals_erf_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`ao_two_e_integrals_erf_in_map`
@ -716,7 +712,6 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_integrals_erf_map` * :c:data:`ao_integrals_erf_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_erf_schwartz` * :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`ao_two_e_integrals_erf_in_map`
@ -792,9 +787,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`gauleg_t2`
* :c:data:`mu_erf` * :c:data:`mu_erf`
* :c:data:`n_pt_max_integrals` * :c:data:`n_pt_max_integrals`
* :c:data:`gauleg_t2`
Called by: Called by:
@ -857,8 +852,8 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_integrals_erf_map` * :c:data:`ao_integrals_erf_map`
* :c:data:`ezfio_filename`
* :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ezfio_filename`
Called by: Called by:
@ -894,8 +889,8 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_integrals_erf_map` * :c:data:`ao_integrals_erf_map`
* :c:data:`ezfio_filename`
* :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ezfio_filename`
Calls: Calls:

View File

@ -98,6 +98,7 @@ Providers
:columns: 3 :columns: 3
* :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache`
* :c:data:`ao_integrals_cache_periodic`
.. c:var:: ao_integrals_cache_min .. c:var:: ao_integrals_cache_min
@ -126,6 +127,30 @@ Providers
:columns: 3 :columns: 3
* :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache`
* :c:data:`ao_integrals_cache_periodic`
.. c:var:: ao_integrals_cache_periodic
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
complex*16, allocatable :: ao_integrals_cache_periodic (0:64*64*64*64)
Cache of AO integrals for fast access
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_cache_min`
* :c:data:`ao_integrals_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:var:: ao_integrals_map .. c:var:: ao_integrals_map
@ -153,9 +178,10 @@ Providers
:columns: 3 :columns: 3
* :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache`
* :c:data:`ao_two_e_integral_alpha` * :c:data:`ao_integrals_cache_periodic`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`mo_two_e_integral_jj_from_ao` * :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`mo_two_e_integrals_vv_from_ao`
@ -185,14 +211,6 @@ Providers
* :c:data:`n_pt_max_integrals` * :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_vv_from_ao`
.. c:var:: ao_two_e_integrals_in_map .. c:var:: ao_two_e_integrals_in_map
@ -237,9 +255,8 @@ Providers
:columns: 3 :columns: 3
* :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache`
* :c:data:`ao_two_e_integral_alpha` * :c:data:`ao_integrals_cache_periodic`
* :c:data:`mo_two_e_integral_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_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`mo_two_e_integrals_vv_from_ao`
@ -341,7 +358,6 @@ Providers
* :c:func:`i_x1_new` * :c:func:`i_x1_new`
* :c:func:`i_x2_new` * :c:func:`i_x2_new`
* :c:func:`integrale_new` * :c:func:`integrale_new`
* :c:func:`integrale_new_erf`
Calls: Calls:
@ -512,6 +528,84 @@ Providers
Subroutines / functions Subroutines / functions
----------------------- -----------------------
.. c:function:: ao_idx2_sq:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine ao_idx2_sq(i,j,ij)
Called by:
.. hlist::
:columns: 3
* :c:func:`two_e_integrals_index_2fold`
.. c:function:: ao_idx2_sq_rev:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine ao_idx2_sq_rev(i,k,ik)
reverse square compound index
Called by:
.. hlist::
:columns: 3
* :c:func:`two_e_integrals_index_reverse_2fold`
.. c:function:: ao_idx2_tri_key:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine ao_idx2_tri_key(i,j,ij)
Called by:
.. hlist::
:columns: 3
* :c:func:`two_e_integrals_index_2fold`
.. c:function:: ao_idx2_tri_rev_key:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine ao_idx2_tri_rev_key(i,k,ik)
return i<=k
Called by:
.. hlist::
:columns: 3
* :c:func:`two_e_integrals_index_reverse_2fold`
.. c:function:: ao_l4: .. c:function:: ao_l4:
@ -550,12 +644,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_coef_normalized_ordered_transp` * :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl` * :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
Calls: Calls:
@ -584,13 +678,13 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_coef_normalized_ordered_transp` * :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_nucl` * :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
Calls: Calls:
@ -601,6 +695,29 @@ Subroutines / functions
* :c:func:`give_explicit_poly_and_gaussian` * :c:func:`give_explicit_poly_and_gaussian`
.. c:function:: ao_two_e_integral_zero:
File : :file:`ao_two_e_ints/screening.irp.f`
.. code:: fortran
logical function ao_two_e_integral_zero(i,j,k,l)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`is_periodic`
* :c:data:`read_ao_two_e_integrals`
.. c:function:: ao_two_e_integrals_in_map_collector: .. c:function:: ao_two_e_integrals_in_map_collector:
@ -766,10 +883,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_schwartz` * :c:data:`ao_num`
Called by: Called by:
@ -803,9 +918,7 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_two_e_integral_schwartz`
Called by: Called by:
@ -816,34 +929,6 @@ Subroutines / functions
* :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`mo_two_e_integrals_vv_from_ao`
.. c:function:: dump_ao_integrals:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine dump_ao_integrals(filename)
Save to disk the |AO| integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_map`
* :c:data:`mpi_master`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_work_empty`
.. c:function:: eri: .. c:function:: eri:
@ -925,9 +1010,6 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache`
* :c:data:`ao_integrals_cache_min` * :c:data:`ao_integrals_cache_min`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
@ -941,6 +1023,37 @@ Subroutines / functions
* :c:func:`two_e_integrals_index` * :c:func:`two_e_integrals_index`
.. c:function:: get_ao_two_e_integral_periodic:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
complex*16 function get_ao_two_e_integral_periodic(i,j,k,l,map) result(result)
Gets one AO bi-electronic integral from the AO map
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_cache_min`
* :c:data:`ao_integrals_cache_periodic`
* :c:data:`ao_integrals_map`
* :c:data:`ao_two_e_integrals_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_get`
* :c:func:`two_e_integrals_index_2fold`
.. c:function:: get_ao_two_e_integrals: .. c:function:: get_ao_two_e_integrals:
@ -961,8 +1074,6 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
Called by: Called by:
@ -994,9 +1105,7 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
Called by: Called by:
@ -1035,8 +1144,6 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
Calls: Calls:
@ -1067,8 +1174,6 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
Calls: Calls:
@ -1080,6 +1185,29 @@ Subroutines / functions
* :c:func:`two_e_integrals_index` * :c:func:`two_e_integrals_index`
.. c:function:: get_ao_two_e_integrals_periodic:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine get_ao_two_e_integrals_periodic(j,k,l,sze,out_val)
Gets multiple AO bi-electronic integral from the AO map .
All i are retrieved for j,k,l fixed.
physicist convention : <ij|kl>
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:function:: give_polynom_mult_center_x: .. c:function:: give_polynom_mult_center_x:
@ -1101,7 +1229,6 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:func:`general_primitive_integral` * :c:func:`general_primitive_integral`
* :c:func:`general_primitive_integral_erf`
Calls: Calls:
@ -1141,6 +1268,31 @@ Subroutines / functions
* :c:func:`i_x2_pol_mult` * :c:func:`i_x2_pol_mult`
.. c:function:: idx2_tri_int:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine idx2_tri_int(i,j,ij)
.. c:function:: idx2_tri_rev_int:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine idx2_tri_rev_int(i,k,ik)
return i<=k
.. c:function:: insert_into_ao_integrals_map: .. c:function:: insert_into_ao_integrals_map:
@ -1195,8 +1347,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`gauleg_t2` * :c:data:`gauleg_t2`
* :c:data:`n_pt_max_integrals`
Called by: Called by:
@ -1213,35 +1365,6 @@ Subroutines / functions
* :c:func:`i_x1_new` * :c:func:`i_x1_new`
.. c:function:: load_ao_integrals:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
integer function load_ao_integrals(filename)
Read from disk the |AO| integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`cache_map_reallocate`
* :c:func:`map_deinit`
* :c:func:`map_sort`
.. c:function:: n_pt_sup: .. c:function:: n_pt_sup:
@ -1275,7 +1398,6 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
* :c:func:`ao_two_e_integrals_in_map_slave` * :c:func:`ao_two_e_integrals_in_map_slave`
@ -1290,7 +1412,7 @@ Subroutines / functions
Gives a unique index for i,j,k,l using permtuation symmetry. Gives a unique index for i,j,k,l using permtuation symmetry.
i <-> k, j <-> l, and (i,k) <-> (j,l) i <-> k, j <-> l, and (i,k) <-> (j,l) for non-periodic systems
Called by: Called by:
@ -1298,33 +1420,45 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache`
* :c:data:`ao_integrals_erf_cache`
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:func:`compute_ao_integrals_erf_jl` * :c:data:`banned_excitation`
* :c:func:`compute_ao_integrals_jl` * :c:func:`compute_ao_integrals_jl`
* :c:func:`four_idx_novvvv`
* :c:func:`get_ao_two_e_integral` * :c:func:`get_ao_two_e_integral`
* :c:func:`get_ao_two_e_integral_erf`
* :c:func:`get_ao_two_e_integrals_erf_non_zero`
* :c:func:`get_ao_two_e_integrals_non_zero` * :c:func:`get_ao_two_e_integrals_non_zero`
* :c:func:`get_ao_two_e_integrals_non_zero_jl` * :c:func:`get_ao_two_e_integrals_non_zero_jl`
* :c:func:`get_ao_two_e_integrals_non_zero_jl_from_list` * :c:func:`get_ao_two_e_integrals_non_zero_jl_from_list`
* :c:func:`get_mo_two_e_integral_erf`
* :c:func:`get_mo_two_e_integrals_coulomb_ii`
* :c:func:`get_mo_two_e_integrals_erf`
* :c:func:`get_mo_two_e_integrals_erf_coulomb_ii`
* :c:func:`get_mo_two_e_integrals_erf_exch_ii`
* :c:func:`get_mo_two_e_integrals_erf_i1j1`
* :c:func:`get_mo_two_e_integrals_erf_ij`
* :c:func:`get_mo_two_e_integrals_exch_ii`
* :c:func:`get_mo_two_e_integrals_i1j1`
* :c:func:`get_mo_two_e_integrals_ij`
* :c:func:`get_two_e_integral` * :c:func:`get_two_e_integral`
* :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_erf_cache`
* :c:data:`mo_integrals_erf_map`
* :c:data:`mo_integrals_map` * :c:data:`mo_integrals_map`
* :c:func:`test`
.. c:function:: two_e_integrals_index_2fold:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine two_e_integrals_index_2fold(i,j,k,l,i1)
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_cache_periodic`
* :c:func:`get_ao_two_e_integral_periodic`
Calls:
.. hlist::
:columns: 3
* :c:func:`ao_idx2_sq`
* :c:func:`ao_idx2_tri_key`
.. c:function:: two_e_integrals_index_reverse: .. c:function:: two_e_integrals_index_reverse:
@ -1347,11 +1481,23 @@ Subroutines / functions
This rule is applied 3 times. First for the symmetry of the This rule is applied 3 times. First for the symmetry of the
pairs (i,k) and (j,l), and then for the symmetry within each pair. pairs (i,k) and (j,l), and then for the symmetry within each pair.
Called by:
.. c:function:: two_e_integrals_index_reverse_2fold:
File : :file:`ao_two_e_ints/map_integrals.irp.f`
.. code:: fortran
subroutine two_e_integrals_index_reverse_2fold(i,j,k,l,i1)
Calls:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_two_e_integral_alpha` * :c:func:`ao_idx2_sq_rev`
* :c:func:`test` * :c:func:`ao_idx2_tri_rev_key`

View File

@ -128,7 +128,7 @@ Providers
.. c:var:: angular_quadrature_points .. c:var:: angular_quadrature_points
File : :file:`becke_numerical_grid/grid_becke.irp.f` File : :file:`becke_numerical_grid/angular_grid_pts.irp.f`
.. code:: fortran .. code:: fortran
@ -224,31 +224,26 @@ Providers
:columns: 3 :columns: 3
* :c:data:`aos_grad_in_r_array` * :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array` * :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array` * :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w` * :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w` * :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w` * :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_sr_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_sr_pbe_w`
* :c:data:`elec_beta_num_grid_becke`
* :c:data:`energy_c_lda` * :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda` * :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda` * :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe` * :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe` * :c:data:`energy_x_sr_pbe`
* :c:data:`mos_in_r_array` * :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r` * :c:data:`mos_in_r_array_omp`
* :c:data:`one_e_dm_and_grad_alpha_in_r` * :c:data:`one_e_dm_and_grad_alpha_in_r`
* :c:data:`one_e_dm_no_core_and_grad_alpha_in_r`
.. c:var:: final_grid_points_per_atom .. c:var:: final_grid_points_per_atom
@ -361,31 +356,26 @@ Providers
:columns: 3 :columns: 3
* :c:data:`aos_grad_in_r_array` * :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array` * :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array` * :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w` * :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w` * :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w` * :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_sr_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_sr_pbe_w`
* :c:data:`elec_beta_num_grid_becke`
* :c:data:`energy_c_lda` * :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda` * :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda` * :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe` * :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe` * :c:data:`energy_x_sr_pbe`
* :c:data:`mos_in_r_array` * :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r` * :c:data:`mos_in_r_array_omp`
* :c:data:`one_e_dm_and_grad_alpha_in_r` * :c:data:`one_e_dm_and_grad_alpha_in_r`
* :c:data:`one_e_dm_no_core_and_grad_alpha_in_r`
.. c:var:: final_weight_at_r_vector_per_atom .. c:var:: final_weight_at_r_vector_per_atom
@ -484,7 +474,6 @@ Providers
* :c:data:`final_grid_points` * :c:data:`final_grid_points`
* :c:data:`final_grid_points_per_atom` * :c:data:`final_grid_points_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r` * :c:data:`weight_at_r`
@ -556,31 +545,26 @@ Providers
:columns: 3 :columns: 3
* :c:data:`aos_grad_in_r_array` * :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array` * :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array` * :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w` * :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w` * :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w` * :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_sr_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_sr_pbe_w`
* :c:data:`elec_beta_num_grid_becke`
* :c:data:`energy_c_lda` * :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda` * :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda` * :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe` * :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe` * :c:data:`energy_x_sr_pbe`
* :c:data:`mos_in_r_array` * :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r` * :c:data:`mos_in_r_array_omp`
* :c:data:`one_e_dm_and_grad_alpha_in_r` * :c:data:`one_e_dm_and_grad_alpha_in_r`
* :c:data:`one_e_dm_no_core_and_grad_alpha_in_r`
.. c:var:: index_final_points_per_atom .. c:var:: index_final_points_per_atom
@ -690,31 +674,26 @@ Providers
:columns: 3 :columns: 3
* :c:data:`aos_grad_in_r_array` * :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array` * :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array` * :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w` * :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w` * :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w` * :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_sr_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_sr_pbe_w`
* :c:data:`elec_beta_num_grid_becke`
* :c:data:`energy_c_lda` * :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda` * :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda` * :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe` * :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe` * :c:data:`energy_x_sr_pbe`
* :c:data:`mos_in_r_array` * :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r` * :c:data:`mos_in_r_array_omp`
* :c:data:`one_e_dm_and_grad_alpha_in_r` * :c:data:`one_e_dm_and_grad_alpha_in_r`
* :c:data:`one_e_dm_no_core_and_grad_alpha_in_r`
.. c:var:: m_knowles .. c:var:: m_knowles
@ -765,43 +744,45 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`alpha_dens_kin_in_r`
* :c:data:`aos_grad_in_r_array` * :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp` * :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array` * :c:data:`aos_in_r_array`
* :c:data:`aos_in_r_array_transp`
* :c:data:`aos_lapl_in_r_array` * :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_lapl_in_r_array_transp`
* :c:data:`aos_sr_vc_alpha_lda_w` * :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w` * :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w` * :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_sr_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_sr_pbe_w`
* :c:data:`elec_beta_num_grid_becke`
* :c:data:`energy_c_lda` * :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda` * :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda` * :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe` * :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe` * :c:data:`energy_x_sr_pbe`
* :c:data:`final_grid_points` * :c:data:`final_grid_points`
* :c:data:`kinetic_density_generalized`
* :c:data:`mos_grad_in_r_array` * :c:data:`mos_grad_in_r_array`
* :c:data:`mos_grad_in_r_array_tranp`
* :c:data:`mos_in_r_array` * :c:data:`mos_in_r_array`
* :c:data:`mos_in_r_array_omp`
* :c:data:`mos_in_r_array_transp`
* :c:data:`mos_lapl_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:`one_e_dm_and_grad_alpha_in_r`
* :c:data:`one_e_dm_no_core_and_grad_alpha_in_r`
* :c:data:`pot_grad_x_alpha_ao_pbe` * :c:data:`pot_grad_x_alpha_ao_pbe`
* :c:data:`pot_grad_x_alpha_ao_sr_pbe`
* :c:data:`pot_grad_xc_alpha_ao_pbe` * :c:data:`pot_grad_xc_alpha_ao_pbe`
* :c:data:`pot_grad_xc_alpha_ao_sr_pbe`
* :c:data:`pot_scal_x_alpha_ao_pbe` * :c:data:`pot_scal_x_alpha_ao_pbe`
* :c:data:`pot_scal_x_alpha_ao_sr_pbe`
* :c:data:`pot_scal_xc_alpha_ao_pbe` * :c:data:`pot_scal_xc_alpha_ao_pbe`
* :c:data:`pot_sr_grad_x_alpha_ao_pbe` * :c:data:`pot_scal_xc_alpha_ao_sr_pbe`
* :c:data:`pot_sr_grad_xc_alpha_ao_pbe`
* :c:data:`pot_sr_scal_x_alpha_ao_pbe`
* :c:data:`pot_sr_scal_xc_alpha_ao_pbe`
* :c:data:`potential_c_alpha_ao_lda` * :c:data:`potential_c_alpha_ao_lda`
* :c:data:`potential_c_alpha_ao_sr_lda` * :c:data:`potential_c_alpha_ao_sr_lda`
* :c:data:`potential_x_alpha_ao_lda` * :c:data:`potential_x_alpha_ao_lda`
@ -854,6 +835,9 @@ Providers
:columns: 3 :columns: 3
* :c:data:`grid_type_sgn` * :c:data:`grid_type_sgn`
* :c:data:`my_grid_becke`
* :c:data:`my_n_pt_a_grid`
* :c:data:`my_n_pt_r_grid`
Needed by: Needed by:
@ -869,7 +853,6 @@ Providers
* :c:data:`n_points_final_grid` * :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom` * :c:data:`n_points_grid_per_atom`
* :c:data:`n_pts_per_atom` * :c:data:`n_pts_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r` * :c:data:`weight_at_r`
@ -896,6 +879,9 @@ Providers
:columns: 3 :columns: 3
* :c:data:`grid_type_sgn` * :c:data:`grid_type_sgn`
* :c:data:`my_grid_becke`
* :c:data:`my_n_pt_a_grid`
* :c:data:`my_n_pt_r_grid`
Needed by: Needed by:
@ -911,7 +897,6 @@ Providers
* :c:data:`n_points_final_grid` * :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom` * :c:data:`n_points_grid_per_atom`
* :c:data:`n_pts_per_atom` * :c:data:`n_pts_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r` * :c:data:`weight_at_r`
@ -1019,7 +1004,7 @@ Providers
.. c:var:: weights_angular_points .. c:var:: weights_angular_points
File : :file:`becke_numerical_grid/grid_becke.irp.f` File : :file:`becke_numerical_grid/angular_grid_pts.irp.f`
.. code:: fortran .. code:: fortran
@ -1069,10 +1054,10 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`nucl_dist_inv`
* :c:data:`slater_bragg_type_inter_distance_ua`
* :c:data:`nucl_coord_transp` * :c:data:`nucl_coord_transp`
* :c:data:`nucl_dist_inv`
* :c:data:`nucl_num` * :c:data:`nucl_num`
* :c:data:`slater_bragg_type_inter_distance_ua`
.. c:function:: derivative_knowles_function: .. c:function:: derivative_knowles_function:
@ -1105,11 +1090,11 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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:`final_grid_points`
* :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_coord` * :c:data:`nucl_coord`
* :c:data:`nucl_num` * :c:data:`nucl_num`

File diff suppressed because it is too large Load Diff

View File

@ -87,20 +87,19 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask` * :c:data:`generators_bitmask`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_generators`
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_det_generators` * :c:data:`s2_eig`
Calls: Calls:
@ -147,9 +146,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by: Called by:
@ -185,9 +184,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num` * :c:data:`elec_alpha_num`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_int`
Called by: Called by:
@ -221,9 +220,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by: Called by:
@ -259,9 +258,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num` * :c:data:`elec_alpha_num`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_int`
Called by: Called by:
@ -297,20 +296,19 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask` * :c:data:`generators_bitmask`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_generators`
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_det_generators` * :c:data:`s2_eig`
Calls: Calls:
@ -357,9 +355,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by: Called by:
@ -395,9 +393,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num` * :c:data:`elec_alpha_num`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_int`
Called by: Called by:
@ -432,9 +430,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by: Called by:
@ -470,9 +468,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num` * :c:data:`elec_alpha_num`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_int`
Called by: Called by:

View File

@ -80,20 +80,26 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask` * :c:data:`generators_bitmask`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_generators`
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_det_generators` * :c:data:`s2_eig`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cisd`
Calls: Calls:
@ -140,9 +146,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by: Called by:
@ -178,9 +184,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num` * :c:data:`elec_alpha_num`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_int`
Called by: Called by:
@ -214,9 +220,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by: Called by:
@ -252,9 +258,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num` * :c:data:`elec_alpha_num`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_int`
Called by: Called by:
@ -290,20 +296,26 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask` * :c:data:`generators_bitmask`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_generators`
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_det_generators` * :c:data:`s2_eig`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cisd`
Calls: Calls:
@ -350,9 +362,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by: Called by:
@ -388,9 +400,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num` * :c:data:`elec_alpha_num`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_int`
Called by: Called by:
@ -425,9 +437,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by: Called by:
@ -463,9 +475,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num` * :c:data:`elec_alpha_num`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_int`
Called by: Called by:
@ -483,3 +495,52 @@ Subroutines / functions
* :c:func:`connected_to_hf` * :c:func:`connected_to_hf`
* :c:func:`fill_h_apply_buffer_no_selection` * :c:func:`fill_h_apply_buffer_no_selection`
.. c:function:: run_cisd:
File : :file:`cisd_routine.irp.f`
.. code:: fortran
subroutine run_cisd
Needs:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
* :c:data:`ci_energy`
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`pseudo_sym`
* :c:data:`psi_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_cisd_energy`
* :c:func:`h_apply_cisd`
* :c:func:`h_apply_cisd_sym`
* :c:func:`save_wavefunction`
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`

View File

@ -117,7 +117,6 @@ Providers
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`s2_eig` * :c:data:`s2_eig`
* :c:data:`s2_matrix_all_dets` * :c:data:`s2_matrix_all_dets`
* :c:data:`s_z`
* :c:data:`threshold_davidson` * :c:data:`threshold_davidson`
Needed by: Needed by:
@ -162,7 +161,6 @@ Providers
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`s2_eig` * :c:data:`s2_eig`
* :c:data:`s2_matrix_all_dets` * :c:data:`s2_matrix_all_dets`
* :c:data:`s_z`
* :c:data:`threshold_davidson` * :c:data:`threshold_davidson`
Needed by: Needed by:
@ -234,7 +232,6 @@ Providers
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`s2_eig` * :c:data:`s2_eig`
* :c:data:`s2_matrix_all_dets` * :c:data:`s2_matrix_all_dets`
* :c:data:`s_z`
* :c:data:`threshold_davidson` * :c:data:`threshold_davidson`
Needed by: Needed by:
@ -245,20 +242,6 @@ Providers
* :c:data:`ci_energy` * :c:data:`ci_energy`
.. c:var:: davidson_criterion
File : :file:`davidson/parameters.irp.f`
.. code:: fortran
character(64) :: davidson_criterion
Can be : [ energy | residual | both | wall_time | cpu_time | iterations ]
.. c:var:: diag_algorithm .. c:var:: diag_algorithm
@ -382,9 +365,9 @@ Providers
double precision, allocatable :: psi_s2 (N_states) double precision, allocatable :: psi_s2 (N_states)
psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle` psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle`
psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle` psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle`
Needs: Needs:
@ -408,9 +391,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_energy_two_e`
* :c:data:`psi_energy_with_nucl_rep` * :c:data:`psi_energy_with_nucl_rep`
* :c:data:`pt2_e0_denominator`
.. c:var:: psi_energy_two_e .. c:var:: psi_energy_two_e
@ -436,7 +417,6 @@ Providers
* :c:data:`psi_coef` * :c:data:`psi_coef`
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`psi_det_size` * :c:data:`psi_det_size`
* :c:data:`psi_energy`
@ -474,9 +454,9 @@ Providers
double precision, allocatable :: psi_s2 (N_states) double precision, allocatable :: psi_s2 (N_states)
psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle` psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle`
psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle` psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle`
Needs: Needs:
@ -500,9 +480,28 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_energy_two_e`
* :c:data:`psi_energy_with_nucl_rep` * :c:data:`psi_energy_with_nucl_rep`
* :c:data:`pt2_e0_denominator`
.. c:var:: threshold_davidson_pt2
File : :file:`davidson/diagonalization_hs2_dressed.irp.f`
.. code:: fortran
double precision :: threshold_davidson_pt2
Threshold of Davidson's algorithm, using PT2 as a guide
Needs:
.. hlist::
:columns: 3
* :c:data:`threshold_davidson`
@ -543,42 +542,6 @@ Subroutines / functions
* :c:func:`davidson_pull_results` * :c:func:`davidson_pull_results`
.. c:function:: davidson_converged:
File : :file:`davidson/parameters.irp.f`
.. code:: fortran
subroutine davidson_converged(energy,residual,wall,iterations,cpu,N_st,converged)
True if the Davidson algorithm is converged
Needs:
.. hlist::
:columns: 3
* :c:data:`threshold_davidson`
* :c:data:`davidson_criterion`
Called by:
.. hlist::
:columns: 3
* :c:func:`davidson_diag_hjj_sjj`
Calls:
.. hlist::
:columns: 3
* :c:func:`cpu_time`
* :c:func:`wall_time`
.. c:function:: davidson_diag_hjj_sjj: .. c:function:: davidson_diag_hjj_sjj:
@ -615,28 +578,30 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_coef`
* :c:data:`dressed_column_idx`
* :c:data:`expected_s2`
* :c:data:`s_z`
* :c:data:`n_det`
* :c:data:`dressing_column_h`
* :c:data:`ezfio_work_dir`
* :c:data:`davidson_sze_max` * :c:data:`davidson_sze_max`
* :c:data:`state_following`
* :c:data:`psi_det_alpha_unique`
* :c:data:`nuclear_repulsion`
* :c:data:`nproc`
* :c:data:`qp_max_mem`
* :c:data:`disk_based_davidson` * :c:data:`disk_based_davidson`
* :c:data:`s2_eig`
* :c:data:`psi_det_beta_unique`
* :c:data:`only_expected_s2`
* :c:data:`distributed_davidson` * :c:data:`distributed_davidson`
* :c:data:`dressed_column_idx`
* :c:data:`dressing_column_h`
* :c:data:`expected_s2`
* :c:data:`ezfio_work_dir`
* :c:data:`n_det`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`nproc`
* :c:data:`nthreads_davidson`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_coef`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`qp_max_mem`
* :c:data:`s2_eig`
* :c:data:`state_following`
* :c:data:`threshold_davidson`
* :c:data:`threshold_davidson_from_pt2`
* :c:data:`threshold_davidson_pt2`
Called by: Called by:
@ -652,8 +617,6 @@ Subroutines / functions
* :c:func:`c_f_pointer` * :c:func:`c_f_pointer`
* :c:func:`check_mem` * :c:func:`check_mem`
* :c:func:`cpu_time`
* :c:func:`davidson_converged`
* :c:func:`dgemm` * :c:func:`dgemm`
* :c:func:`dswap` * :c:func:`dswap`
* :c:func:`h_s2_u_0_nstates_openmp` * :c:func:`h_s2_u_0_nstates_openmp`
@ -662,11 +625,12 @@ Subroutines / functions
* :c:func:`mmap` * :c:func:`mmap`
* :c:func:`munmap` * :c:func:`munmap`
* :c:func:`normalize` * :c:func:`normalize`
* :c:func:`nullify_small_elements`
* :c:func:`ortho_qr` * :c:func:`ortho_qr`
* :c:func:`ortho_qr_unblocked`
* :c:func:`random_number` * :c:func:`random_number`
* :c:func:`resident_memory` * :c:func:`resident_memory`
* :c:func:`sgemm` * :c:func:`sgemm`
* :c:func:`wall_time`
* :c:func:`write_double` * :c:func:`write_double`
* :c:func:`write_int` * :c:func:`write_int`
* :c:func:`write_time` * :c:func:`write_time`
@ -711,6 +675,7 @@ Subroutines / functions
* :c:data:`dressing_column_h` * :c:data:`dressing_column_h`
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_int`
Called by: Called by:
@ -751,8 +716,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_states_diag`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_states_diag`
Called by: Called by:
@ -779,8 +744,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_states_diag`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_states_diag`
.. c:function:: davidson_push_results_async_recv: .. c:function:: davidson_push_results_async_recv:
@ -820,8 +785,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_states_diag`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_states_diag`
Called by: Called by:
@ -848,8 +813,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_states_diag`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_states_diag`
Called by: Called by:
@ -907,13 +872,6 @@ Subroutines / functions
Called by:
.. hlist::
:columns: 3
* :c:func:`run_slave_main`
Calls: Calls:
.. hlist:: .. hlist::
@ -938,18 +896,18 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`mpi_rank`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`mpi_initialized` * :c:data:`mpi_initialized`
* :c:data:`mpi_rank`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_states_diag`
* :c:data:`nproc`
* :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_values` * :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_bilinear_matrix_values`
* :c:data:`nproc` * :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`ref_bitmask_energy` * :c:data:`ref_bitmask_energy`
* :c:data:`n_states_diag`
* :c:data:`psi_bilinear_matrix_columns_loc`
Called by: Called by:
@ -986,24 +944,15 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_coef`
* :c:data:`ci_electronic_energy` * :c:data:`ci_electronic_energy`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`ci_electronic_energy` * :c:data:`ci_electronic_energy`
* :c:data:`psi_energy`
* :c:data:`ci_energy` * :c:data:`ci_energy`
* :c:data:`ci_electronic_energy` * :c:data:`ci_electronic_energy`
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_energy`
* :c:data:`psi_energy` * :c:data:`psi_energy`
Called by:
.. hlist::
:columns: 3
* :c:func:`remove_small_contributions`
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Touches: Touches:
@ -1040,9 +989,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_order_reverse` * :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_det`
Called by: Called by:
@ -1081,9 +1030,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ref_bitmask_energy`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`ref_bitmask_energy`
Called by: Called by:
@ -1108,7 +1057,7 @@ Subroutines / functions
.. c:function:: h_s2_u_0_nstates_openmp_work_1: .. c:function:: h_s2_u_0_nstates_openmp_work_1:
File : :file:`davidson/u0_h_u0.irp.f_template_645` File : :file:`davidson/u0_h_u0.irp.f_template_708`
.. code:: fortran .. code:: fortran
@ -1124,18 +1073,18 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`singles_beta_csc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`singles_beta_csc_idx` * :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`singles_beta_csc`
* :c:data:`singles_beta_csc_idx`
Called by: Called by:
@ -1160,7 +1109,7 @@ Subroutines / functions
.. c:function:: h_s2_u_0_nstates_openmp_work_2: .. c:function:: h_s2_u_0_nstates_openmp_work_2:
File : :file:`davidson/u0_h_u0.irp.f_template_645` File : :file:`davidson/u0_h_u0.irp.f_template_708`
.. code:: fortran .. code:: fortran
@ -1176,18 +1125,18 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`singles_beta_csc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`singles_beta_csc_idx` * :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`singles_beta_csc`
* :c:data:`singles_beta_csc_idx`
Called by: Called by:
@ -1212,7 +1161,7 @@ Subroutines / functions
.. c:function:: h_s2_u_0_nstates_openmp_work_3: .. c:function:: h_s2_u_0_nstates_openmp_work_3:
File : :file:`davidson/u0_h_u0.irp.f_template_645` File : :file:`davidson/u0_h_u0.irp.f_template_708`
.. code:: fortran .. code:: fortran
@ -1228,18 +1177,18 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`singles_beta_csc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`singles_beta_csc_idx` * :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`singles_beta_csc`
* :c:data:`singles_beta_csc_idx`
Called by: Called by:
@ -1264,7 +1213,7 @@ Subroutines / functions
.. c:function:: h_s2_u_0_nstates_openmp_work_4: .. c:function:: h_s2_u_0_nstates_openmp_work_4:
File : :file:`davidson/u0_h_u0.irp.f_template_645` File : :file:`davidson/u0_h_u0.irp.f_template_708`
.. code:: fortran .. code:: fortran
@ -1280,18 +1229,18 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`singles_beta_csc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`singles_beta_csc_idx` * :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`singles_beta_csc`
* :c:data:`singles_beta_csc_idx`
Called by: Called by:
@ -1316,7 +1265,7 @@ Subroutines / functions
.. c:function:: h_s2_u_0_nstates_openmp_work_n_int: .. c:function:: h_s2_u_0_nstates_openmp_work_n_int:
File : :file:`davidson/u0_h_u0.irp.f_template_645` File : :file:`davidson/u0_h_u0.irp.f_template_708`
.. code:: fortran .. code:: fortran
@ -1332,18 +1281,18 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`singles_beta_csc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`singles_beta_csc_idx` * :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`singles_beta_csc`
* :c:data:`singles_beta_csc_idx`
Called by: Called by:
@ -1388,17 +1337,18 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`mpi_initialized` * :c:data:`mpi_initialized`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_states_diag`
* :c:data:`nproc`
* :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_values` * :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_bilinear_matrix_values`
* :c:data:`nproc` * :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`ref_bitmask_energy` * :c:data:`ref_bitmask_energy`
* :c:data:`psi_bilinear_matrix_columns_loc`
Called by: Called by:
@ -1443,9 +1393,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_order_reverse` * :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_det`
Called by: Called by:
@ -1483,9 +1433,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ref_bitmask_energy`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`ref_bitmask_energy`
Called by: Called by:
@ -1525,16 +1475,16 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Called by: Called by:
@ -1575,16 +1525,16 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Called by: Called by:
@ -1625,16 +1575,16 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Called by: Called by:
@ -1675,16 +1625,16 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Called by: Called by:
@ -1725,16 +1675,16 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Called by: Called by:
@ -1774,20 +1724,13 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`mo_integrals_n_e` * :c:data:`mo_integrals_n_e`
* :c:data:`n_states`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_kinetic_integrals` * :c:data:`mo_kinetic_integrals`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mo_pseudo_integrals`
* :c:data:`n_states`
* :c:data:`nuclear_repulsion` * :c:data:`nuclear_repulsion`
* :c:data:`psi_energy`
* :c:data:`one_e_dm_mo_alpha` * :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_energy`
Called by:
.. hlist::
:columns: 3
* :c:func:`print_summary`
.. c:function:: u_0_h_u_0: .. c:function:: u_0_h_u_0:
@ -1812,11 +1755,11 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`h_matrix_all_dets`
* :c:data:`s2_matrix_all_dets`
* :c:data:`n_states_diag`
* :c:data:`distributed_davidson` * :c:data:`distributed_davidson`
* :c:data:`h_matrix_all_dets`
* :c:data:`n_det_max_full` * :c:data:`n_det_max_full`
* :c:data:`n_states_diag`
* :c:data:`s2_matrix_all_dets`
Called by: Called by:
@ -1881,9 +1824,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mpi_master`
* :c:data:`n_states_diag` * :c:data:`n_states_diag`
* :c:data:`zmq_state` * :c:data:`zmq_state`
* :c:data:`mpi_master`
Touches: Touches:

View File

@ -146,14 +146,6 @@ Providers
* :c:data:`one_e_dm_mo_alpha_for_dft` * :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_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_alpha_ao_for_dft_no_core .. c:var:: one_e_dm_alpha_ao_for_dft_no_core
@ -181,12 +173,64 @@ Providers
* :c:data:`one_e_dm_mo_alpha_for_dft_no_core` * :c:data:`one_e_dm_mo_alpha_for_dft_no_core`
* :c:data:`one_e_dm_mo_beta_for_dft_no_core` * :c:data:`one_e_dm_mo_beta_for_dft_no_core`
.. c:var:: one_e_dm_average_alpha_mo_for_dft
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_average_alpha_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_alpha_for_dft`
* :c:data:`state_average_weight`
Needed by: Needed by:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` * :c:data:`one_e_dm_average_mo_for_dft`
.. c:var:: one_e_dm_average_beta_mo_for_dft
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_average_beta_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_beta_for_dft`
* :c:data:`state_average_weight`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_average_mo_for_dft`
.. c:var:: one_e_dm_average_mo_for_dft .. c:var:: one_e_dm_average_mo_for_dft
@ -206,16 +250,9 @@ Providers
:columns: 3 :columns: 3
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_states` * :c:data:`one_e_dm_average_alpha_mo_for_dft`
* :c:data:`one_e_dm_mo_for_dft` * :c:data:`one_e_dm_average_beta_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 .. c:var:: one_e_dm_beta_ao_for_dft
@ -246,14 +283,6 @@ Providers
* :c:data:`one_e_dm_mo_alpha_for_dft` * :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_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_beta_ao_for_dft_no_core .. c:var:: one_e_dm_beta_ao_for_dft_no_core
@ -281,12 +310,6 @@ Providers
* :c:data:`one_e_dm_mo_alpha_for_dft_no_core` * :c:data:`one_e_dm_mo_alpha_for_dft_no_core`
* :c:data:`one_e_dm_mo_beta_for_dft_no_core` * :c:data:`one_e_dm_mo_beta_for_dft_no_core`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_no_core_and_grad_alpha_in_r`
.. c:var:: one_e_dm_mo_alpha_for_dft .. c:var:: one_e_dm_mo_alpha_for_dft
@ -311,7 +334,7 @@ Providers
* :c:data:`data_one_e_dm_alpha_mo` * :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`density_for_dft` * :c:data:`density_for_dft`
* :c:data:`elec_alpha_num` * :c:data:`elec_alpha_num`
* :c:data:`list_inact` * :c:data:`list_core`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
@ -328,11 +351,9 @@ Providers
:columns: 3 :columns: 3
* :c:data:`one_e_dm_alpha_ao_for_dft` * :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_e_dm_average_alpha_mo_for_dft`
* :c:data:`one_e_dm_mo_alpha_for_dft_no_core` * :c:data:`one_e_dm_mo_alpha_for_dft_no_core`
* :c:data:`one_e_dm_mo_for_dft` * :c:data:`one_e_dm_mo_for_dft`
* :c:data:`psi_dft_energy_kinetic`
* :c:data:`trace_v_xc`
* :c:data:`trace_v_xc_new`
.. c:var:: one_e_dm_mo_alpha_for_dft_no_core .. c:var:: one_e_dm_mo_alpha_for_dft_no_core
@ -352,7 +373,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`list_inact` * :c:data:`list_core`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
* :c:data:`n_states` * :c:data:`n_states`
@ -388,7 +409,7 @@ Providers
* :c:data:`data_one_e_dm_beta_mo` * :c:data:`data_one_e_dm_beta_mo`
* :c:data:`density_for_dft` * :c:data:`density_for_dft`
* :c:data:`elec_beta_num` * :c:data:`elec_beta_num`
* :c:data:`list_inact` * :c:data:`list_core`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
@ -405,11 +426,9 @@ Providers
:columns: 3 :columns: 3
* :c:data:`one_e_dm_alpha_ao_for_dft` * :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_e_dm_average_beta_mo_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft_no_core` * :c:data:`one_e_dm_mo_beta_for_dft_no_core`
* :c:data:`one_e_dm_mo_for_dft` * :c:data:`one_e_dm_mo_for_dft`
* :c:data:`psi_dft_energy_kinetic`
* :c:data:`trace_v_xc`
* :c:data:`trace_v_xc_new`
.. c:var:: one_e_dm_mo_beta_for_dft_no_core .. c:var:: one_e_dm_mo_beta_for_dft_no_core
@ -429,7 +448,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`list_inact` * :c:data:`list_core`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
* :c:data:`n_states` * :c:data:`n_states`
@ -464,11 +483,4 @@ Providers
* :c:data:`one_e_dm_mo_alpha_for_dft` * :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_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

@ -107,10 +107,4 @@ Providers
* :c:data:`correlation_functional` * :c:data:`correlation_functional`
* :c:data:`exchange_functional` * :c:data:`exchange_functional`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_potential_alpha_xc`

View File

@ -76,7 +76,6 @@ Providers
* :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii` * :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: elec_num_tab .. c:var:: elec_num_tab
@ -108,5 +107,4 @@ Providers
* :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii` * :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`

View File

@ -97,6 +97,7 @@ Providers
.. code:: fortran .. code:: fortran
logical :: do_only_1h1p logical :: do_only_1h1p
logical :: do_only_cas
logical :: do_ddci logical :: do_ddci
@ -112,6 +113,23 @@ Providers
.. code:: fortran .. code:: fortran
logical :: do_only_1h1p logical :: do_only_1h1p
logical :: do_only_cas
logical :: do_ddci
In the FCI case, all those are always false
.. c:var:: do_only_cas
File : :file:`fci/class.irp.f`
.. code:: fortran
logical :: do_only_1h1p
logical :: do_only_cas
logical :: do_ddci logical :: do_ddci

View File

@ -86,8 +86,10 @@ Providers
* :c:data:`ao_two_e_integral_schwartz` * :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
* :c:data:`is_periodic`
* :c:data:`n_pt_max_integrals` * :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
* :c:data:`read_ao_two_e_integrals`
* :c:data:`scf_density_matrix_ao_alpha` * :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta` * :c:data:`scf_density_matrix_ao_beta`
@ -130,8 +132,10 @@ Providers
* :c:data:`ao_two_e_integral_schwartz` * :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
* :c:data:`is_periodic`
* :c:data:`n_pt_max_integrals` * :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
* :c:data:`read_ao_two_e_integrals`
* :c:data:`scf_density_matrix_ao_alpha` * :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta` * :c:data:`scf_density_matrix_ao_beta`
@ -339,12 +343,14 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`ezfio_filename` * :c:data:`ezfio_filename`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_guess_type` * :c:data:`mo_guess_type`
* :c:data:`mo_one_e_integrals`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`mo_label` * :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_one_e_integrals`
Called by: Called by:
@ -361,6 +367,7 @@ Subroutines / functions
* :c:func:`ezfio_has_mo_basis_mo_coef` * :c:func:`ezfio_has_mo_basis_mo_coef`
* :c:func:`huckel_guess` * :c:func:`huckel_guess`
* :c:func:`mo_as_eigvectors_of_mo_matrix` * :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`restore_symmetry`
Touches: Touches:
@ -372,51 +379,3 @@ Subroutines / functions
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_label` * :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

@ -118,10 +118,10 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`extrapolated_energy` * :c:data:`extrapolated_energy`
* :c:data:`n_states`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`pt2_iterations`
* :c:data:`n_iter` * :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
Called by: Called by:
@ -139,7 +139,7 @@ Subroutines / functions
.. code:: fortran .. code:: fortran
subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st,s2_) subroutine print_summary(e_,pt2_data,pt2_data_err,n_det_,n_occ_pattern_,n_st,s2_)
Print the extrapolated energy in the output Print the extrapolated energy in the output
@ -185,11 +185,11 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_iter`
* :c:data:`energy_iterations` * :c:data:`energy_iterations`
* :c:data:`n_det_iterations`
* :c:data:`n_iter`
* :c:data:`n_states` * :c:data:`n_states`
* :c:data:`pt2_iterations` * :c:data:`pt2_iterations`
* :c:data:`n_det_iterations`
Called by: Called by:

View File

@ -461,8 +461,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`exchange_functional`
* :c:data:`correlation_functional` * :c:data:`correlation_functional`
* :c:data:`exchange_functional`
Called by: Called by:

View File

@ -68,6 +68,49 @@ EZFIO parameters
Providers Providers
--------- ---------
.. c:var:: mo_class
File : :file:`mo_basis/mo_class.irp.f`
.. code:: fortran
character*(32), allocatable :: mo_class (mo_num)
[ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class`
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mpi_master`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`full_ijkl_bitmask`
* :c:data:`list_act`
* :c:data:`list_all_but_del_orb`
* :c:data:`list_core`
* :c:data:`list_del`
* :c:data:`list_inact`
* :c:data:`list_virt`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_act_orb`
* :c:data:`n_all_but_del_orb`
* :c:data:`n_core_orb`
* :c:data:`n_del_orb`
* :c:data:`n_inact_orb`
* :c:data:`n_virt_orb`
.. c:var:: mo_coef .. c:var:: mo_coef
@ -100,11 +143,8 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :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_in_ao_ortho_basis`
* :c:data:`mo_coef_novirt`
* :c:data:`mo_coef_transp` * :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x` * :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e` * :c:data:`mo_integrals_n_e`
@ -113,32 +153,34 @@ Providers
* :c:data:`mo_overlap` * :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals` * :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x` * :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_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_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_e_dm_alpha_ao_for_dft_no_core`
* :c:data:`one_e_dm_ao_alpha` * :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
* :c:data:`one_e_spin_density_ao` * :c:data:`one_e_spin_density_ao`
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`s_mo_coef` * :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 .. c:var:: mo_coef_imag
File : :file:`mo_basis/track_orb.irp.f` File : :file:`mo_basis/mos.irp.f`
.. code:: fortran .. code:: fortran
double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_num) double precision, allocatable :: mo_coef_imag (ao_num,mo_num)
Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration Molecular orbital coefficients on |AO| basis set
Usefull to track some orbitals mo_coef_imag(i,j) = coefficient of the i-th |AO| on the jth |MO|
mo_label : Label characterizing the |MOs| (local, canonical, natural, etc)
Needs: Needs:
@ -146,7 +188,9 @@ Providers
:columns: 3 :columns: 3
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mpi_master`
@ -202,9 +246,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :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_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_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`mo_two_e_integrals_vv_from_ao`
@ -269,33 +311,31 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_ortho_canonical_nucl_elec_integrals` * :c:data:`banned_excitation`
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
* :c:data:`big_array_coulomb_integrals` * :c:data:`big_array_coulomb_integrals`
* :c:data:`core_fock_operator` * :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_alpha_mo`
* :c:data:`data_one_e_dm_beta_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_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell` * :c:data:`fock_wee_closed_shell`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`full_ijkl_bitmask` * :c:data:`full_ijkl_bitmask`
* :c:data:`int_erf_3_index` * :c:data:`list_act`
* :c:data:`list_all_but_del_orb`
* :c:data:`list_core`
* :c:data:`list_core_inact`
* :c:data:`list_core_inact_act`
* :c:data:`list_del`
* :c:data:`list_inact` * :c:data:`list_inact`
* :c:data:`list_inact_act`
* :c:data:`list_virt`
* :c:data:`mo_class` * :c:data:`mo_class`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_coef_begin_iteration` * :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef_imag`
* :c:data:`mo_coef_in_ao_ortho_basis` * :c:data:`mo_coef_in_ao_ortho_basis`
* :c:data:`mo_coef_transp` * :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x` * :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_cache_min` * :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_map`
* :c:data:`mo_integrals_n_e` * :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom` * :c:data:`mo_integrals_n_e_per_atom`
@ -305,21 +345,34 @@ Providers
* :c:data:`mo_overlap` * :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals` * :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x` * :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_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_in_map`
* :c:data:`mo_two_e_integrals_jj` * :c:data:`mo_two_e_integrals_jj`
* :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`n_act_orb`
* :c:data:`n_all_but_del_orb`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
* :c:data:`n_del_orb`
* :c:data:`n_inact_orb`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`n_virt_orb`
* :c:data:`one_body_dm_mo_alpha_one_det`
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_e_dm_alpha_ao_for_dft_no_core`
* :c:data:`one_e_dm_ao_alpha` * :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_dm_average_alpha_mo_for_dft`
* :c:data:`one_e_dm_average_beta_mo_for_dft`
* :c:data:`one_e_dm_average_mo_for_dft`
* :c:data:`one_e_dm_dagger_mo_spin_index` * :c:data:`one_e_dm_dagger_mo_spin_index`
* :c:data:`one_e_dm_mo` * :c:data:`one_e_dm_mo`
* :c:data:`one_e_dm_mo_alpha` * :c:data:`one_e_dm_mo_alpha`
* :c:data:`one_e_dm_mo_alpha_average` * :c:data:`one_e_dm_mo_alpha_average`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_alpha_for_dft_no_core`
* :c:data:`one_e_dm_mo_beta_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft_no_core`
* :c:data:`one_e_dm_mo_diff` * :c:data:`one_e_dm_mo_diff`
* :c:data:`one_e_dm_mo_for_dft`
* :c:data:`one_e_dm_mo_spin_index` * :c:data:`one_e_dm_mo_spin_index`
* :c:data:`one_e_spin_density_ao` * :c:data:`one_e_spin_density_ao`
* :c:data:`one_e_spin_density_mo` * :c:data:`one_e_spin_density_mo`
@ -408,23 +461,23 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num`
Called by: Called by:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`fock_matrix_mo_alpha` * :c:func:`four_idx_novvvv`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`mo_dipole_x` * :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e` * :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom` * :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals` * :c:data:`mo_kinetic_integrals`
* :c:data:`mo_pseudo_integrals` * :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x` * :c:data:`mo_spread_x`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Calls: Calls:
@ -432,6 +485,7 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:func:`dgemm` * :c:func:`dgemm`
* :c:func:`restore_symmetry`
.. c:function:: give_all_mos_and_grad_and_lapl_at_r: .. c:function:: give_all_mos_and_grad_and_lapl_at_r:
@ -451,8 +505,8 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num`
Calls: Calls:
@ -479,8 +533,8 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num`
Calls: Calls:
@ -507,8 +561,8 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef_transp` * :c:data:`mo_coef_transp`
* :c:data:`mo_num`
Calls: Calls:
@ -519,36 +573,6 @@ Subroutines / functions
* :c:func:`give_all_aos_at_r` * :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: .. c:function:: mix_mo_jk:
@ -593,20 +617,10 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_label`
Called by: * :c:data:`mo_num`
.. hlist::
:columns: 3
* :c:func:`create_guess`
* :c:func:`damping_scf`
* :c:func:`hcore_guess`
* :c:func:`roothaan_hall_scf`
Calls: Calls:
@ -634,10 +648,10 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_label`
* :c:data:`mo_num`
Calls: Calls:
@ -665,10 +679,10 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_label`
* :c:data:`mo_num`
Called by: Called by:
@ -687,45 +701,36 @@ Subroutines / functions
* :c:func:`write_time` * :c:func:`write_time`
.. c:function:: reorder_core_orb: .. c:function:: mo_coef_new_as_svd_vectors_of_mo_matrix_eig:
File : :file:`mo_basis/track_orb.irp.f` File : :file:`mo_basis/utils.irp.f`
.. code:: fortran .. code:: fortran
subroutine reorder_core_orb subroutine mo_coef_new_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,mo_coef_before,eig,mo_coef_new)
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` You enter with matrix in the MO basis defined with the mo_coef_before.
You SVD the matrix and set the eigenvectors as mo_coef_new ordered by increasing singular values
Needs: Needs:
.. hlist:: .. hlist::
:columns: 3 :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:`ao_num`
* :c:data:`list_inact` * :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`roothaan_hall_scf`
Calls: Calls:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`dsort` * :c:func:`dgemm`
* :c:func:`svd`
* :c:func:`write_time`
.. c:function:: save_mos: .. c:function:: save_mos:
@ -744,28 +749,21 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5` * :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_label` * :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_occ`
Called by: Called by:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`damping_scf`
* :c:func:`hcore_guess`
* :c:func:`huckel_guess`
* :c:func:`roothaan_hall_scf`
* :c:func:`rotate_mos`
* :c:func:`save_natural_mos` * :c:func:`save_natural_mos`
* :c:func:`save_ortho_mos`
* :c:func:`sort_by_fock_energies`
* :c:func:`swap_mos`
Calls: Calls:
@ -773,6 +771,7 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:func:`ezfio_set_mo_basis_ao_md5` * :c:func:`ezfio_set_mo_basis_ao_md5`
* :c:func:`ezfio_set_mo_basis_mo_class`
* :c:func:`ezfio_set_mo_basis_mo_coef` * :c:func:`ezfio_set_mo_basis_mo_coef`
* :c:func:`ezfio_set_mo_basis_mo_label` * :c:func:`ezfio_set_mo_basis_mo_label`
* :c:func:`ezfio_set_mo_basis_mo_num` * :c:func:`ezfio_set_mo_basis_mo_num`
@ -780,6 +779,36 @@ Subroutines / functions
* :c:func:`system` * :c:func:`system`
.. c:function:: save_mos_no_occ:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine save_mos_no_occ
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_mo_basis_mo_coef`
* :c:func:`system`
.. c:function:: save_mos_truncated: .. c:function:: save_mos_truncated:
@ -796,12 +825,13 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5` * :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_label` * :c:data:`mo_label`
* :c:data:`mo_occ`
Calls: Calls:
@ -809,6 +839,7 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:func:`ezfio_set_mo_basis_ao_md5` * :c:func:`ezfio_set_mo_basis_ao_md5`
* :c:func:`ezfio_set_mo_basis_mo_class`
* :c:func:`ezfio_set_mo_basis_mo_coef` * :c:func:`ezfio_set_mo_basis_mo_coef`
* :c:func:`ezfio_set_mo_basis_mo_label` * :c:func:`ezfio_set_mo_basis_mo_label`
* :c:func:`ezfio_set_mo_basis_mo_num` * :c:func:`ezfio_set_mo_basis_mo_num`

View File

@ -176,7 +176,7 @@ Providers
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`read_mo_integrals_e_n` * :c:data:`read_mo_integrals_n_e`
Needed by: Needed by:
@ -264,11 +264,9 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`do_pseudo`
* :c:data:`mo_integrals_n_e` * :c:data:`mo_integrals_n_e`
* :c:data:`mo_kinetic_integrals` * :c:data:`mo_kinetic_integrals`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mo_pseudo_integrals`
* :c:data:`read_mo_one_e_integrals` * :c:data:`read_mo_one_e_integrals`
Needed by: Needed by:
@ -277,7 +275,6 @@ Providers
:columns: 3 :columns: 3
* :c:data:`core_energy` * :c:data:`core_energy`
* :c:data:`core_energy_erf`
* :c:data:`fock_operator_closed_shell_ref_bitmask` * :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`psi_energy_h_core` * :c:data:`psi_energy_h_core`
* :c:data:`ref_bitmask_energy` * :c:data:`ref_bitmask_energy`
@ -331,12 +328,6 @@ Providers
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`read_mo_integrals_pseudo` * :c:data:`read_mo_integrals_pseudo`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
.. c:var:: mo_spread_x .. c:var:: mo_spread_x
@ -445,12 +436,6 @@ Providers
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num` * :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
@ -477,15 +462,8 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`s_mo_coef`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`s_mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
Calls: Calls:
@ -513,8 +491,16 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_e_dm_alpha_ao_for_dft_no_core`
Calls: Calls:
@ -540,26 +526,27 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_overlap` * :c:data:`lin_dep_cutoff`
* :c:data:`mo_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`mo_overlap`
Called by: Called by:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`save_ortho_mos` * :c:func:`save_natural_mos`
* :c:func:`scf`
Calls: Calls:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`nullify_small_elements`
* :c:func:`ortho_lowdin` * :c:func:`ortho_lowdin`
* :c:func:`restore_symmetry`
Touches: Touches:
@ -567,5 +554,4 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_label`

View File

@ -57,7 +57,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`list_inact` * :c:data:`list_core`
* :c:data:`mo_one_e_integrals` * :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_int_erf_jj` * :c:data:`mo_two_e_int_erf_jj`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
@ -82,12 +82,14 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`list_inact` * :c:data:`list_act`
* :c:data:`list_core`
* :c:data:`mo_integrals_erf_cache` * :c:data:`mo_integrals_erf_cache`
* :c:data:`mo_integrals_erf_cache_min` * :c:data:`mo_integrals_erf_cache_min`
* :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_erf_map`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_erf_in_map` * :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`n_act_orb`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
@ -403,7 +405,6 @@ Providers
* :c:data:`ao_integrals_erf_map` * :c:data:`ao_integrals_erf_map`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_erf_schwartz` * :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
@ -472,7 +473,6 @@ Providers
* :c:data:`ao_integrals_erf_map` * :c:data:`ao_integrals_erf_map`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_erf_schwartz` * :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
@ -506,7 +506,6 @@ Providers
* :c:data:`ao_integrals_erf_map` * :c:data:`ao_integrals_erf_map`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_erf_schwartz` * :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
@ -578,14 +577,14 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_coef_transp`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`n_int`
* :c:data:`mo_num`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`mo_coef`
* :c:data:`mo_coef_transp`
* :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_erf_map`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_num`
* :c:data:`n_int`
Called by: Called by:
@ -796,8 +795,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_erf_map`
* :c:data:`mo_two_e_integrals_erf_in_map`
Calls: Calls:
@ -830,8 +829,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_erf_map`
* :c:data:`mo_two_e_integrals_erf_in_map`
Calls: Calls:
@ -925,11 +924,11 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_int_erf_jj`
* :c:data:`mo_two_e_int_erf_jj`
* :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_erf_map`
* :c:data:`mo_two_e_int_erf_jj` * :c:data:`mo_two_e_int_erf_jj`
* :c:data:`mo_two_e_int_erf_jj`
* :c:data:`mo_two_e_int_erf_jj`
* :c:data:`mo_two_e_integrals_erf_in_map`
.. c:function:: save_erf_two_e_integrals_mo: .. c:function:: save_erf_two_e_integrals_mo:
@ -948,9 +947,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`ezfio_filename` * :c:data:`ezfio_filename`
* :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_erf_map`
* :c:data:`mo_two_e_integrals_erf_in_map`
Called by: Called by:
@ -985,9 +984,9 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`ezfio_filename` * :c:data:`ezfio_filename`
* :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_erf_map`
* :c:data:`mo_two_e_integrals_erf_in_map`
Calls: Calls:

View File

@ -43,28 +43,40 @@ EZFIO parameters
Default: 1.e-15 Default: 1.e-15
.. option:: no_vvvv_integrals
If `True`, computes all integrals except for the integrals having 4 virtual indices
Default: False
.. option:: no_ivvv_integrals
Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual indices and 1 belonging to the core inactive active orbitals
Default: False
.. option:: no_vvv_integrals
Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual orbitals
Default: False
Providers Providers
--------- ---------
.. c:var:: banned_excitation
File : :file:`mo_two_e_ints/map_integrals.irp.f`
.. code:: fortran
logical, allocatable :: banned_excitation (mo_num,mo_num)
If true, the excitation is banned in the selection. Useful with local MOs.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`core_fock_operator`
* :c:data:`mo_two_e_integrals_jj`
.. c:var:: big_array_coulomb_integrals .. c:var:: big_array_coulomb_integrals
@ -85,6 +97,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map` * :c:data:`mo_integrals_map`
@ -96,7 +109,6 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`h_matrix_all_dets` * :c:data:`h_matrix_all_dets`
* :c:data:`h_matrix_cas` * :c:data:`h_matrix_cas`
@ -121,6 +133,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map` * :c:data:`mo_integrals_map`
@ -132,7 +145,6 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`h_matrix_all_dets` * :c:data:`h_matrix_all_dets`
* :c:data:`h_matrix_cas` * :c:data:`h_matrix_cas`
@ -154,7 +166,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`list_inact` * :c:data:`list_core`
* :c:data:`mo_one_e_integrals` * :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_jj` * :c:data:`mo_two_e_integrals_jj`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
@ -179,12 +191,15 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`list_inact` * :c:data:`banned_excitation`
* :c:data:`list_act`
* :c:data:`list_core`
* :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map` * :c:data:`mo_integrals_map`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_act_orb`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
@ -226,6 +241,30 @@ Providers
* :c:func:`map_update` * :c:func:`map_update`
.. c:var:: mo_coef_novirt
File : :file:`mo_two_e_ints/four_idx_novvvv.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_novirt (ao_num,n_core_inact_act_orb)
MO coefficients without virtual MOs
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`list_core_inact_act`
* :c:data:`mo_coef`
* :c:data:`n_core_inact_act_orb`
.. c:var:: mo_integrals_cache .. c:var:: mo_integrals_cache
@ -417,8 +456,8 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`banned_excitation`
* :c:data:`big_array_coulomb_integrals` * :c:data:`big_array_coulomb_integrals`
* :c:data:`coef_hf_selector`
* :c:data:`core_fock_operator` * :c:data:`core_fock_operator`
* :c:data:`fock_operator_closed_shell_ref_bitmask` * :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell` * :c:data:`fock_wee_closed_shell`
@ -453,8 +492,6 @@ Providers
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
* :c:data:`mo_coef` * :c:data:`mo_coef`
@ -480,12 +517,12 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ao_integrals_map`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`core_inact_act_bitmask_4`
* :c:data:`ezfio_filename` * :c:data:`ezfio_filename`
* :c:data:`full_ijkl_bitmask_4` * :c:data:`full_ijkl_bitmask_4`
* :c:data:`list_inact` * :c:data:`list_core_inact_act`
* :c:data:`mo_class` * :c:data:`mo_class`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_coef_transp` * :c:data:`mo_coef_transp`
@ -493,9 +530,8 @@ Providers
* :c:data:`mo_integrals_threshold` * :c:data:`mo_integrals_threshold`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`mpi_master` * :c:data:`mpi_master`
* :c:data:`n_core_inact_act_orb`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals` * :c:data:`no_vvvv_integrals`
* :c:data:`read_mo_two_e_integrals` * :c:data:`read_mo_two_e_integrals`
@ -504,9 +540,12 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`act_2_rdm_aa_mo`
* :c:data:`act_2_rdm_ab_mo`
* :c:data:`act_2_rdm_bb_mo`
* :c:data:`act_2_rdm_spin_trace_mo`
* :c:data:`big_array_coulomb_integrals` * :c:data:`big_array_coulomb_integrals`
* :c:data:`ci_electronic_energy` * :c:data:`ci_electronic_energy`
* :c:data:`coef_hf_selector`
* :c:data:`core_fock_operator` * :c:data:`core_fock_operator`
* :c:data:`fock_operator_closed_shell_ref_bitmask` * :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell` * :c:data:`fock_wee_closed_shell`
@ -537,6 +576,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map` * :c:data:`mo_integrals_map`
@ -573,6 +613,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map` * :c:data:`mo_integrals_map`
@ -612,8 +653,6 @@ Providers
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
* :c:data:`mo_coef` * :c:data:`mo_coef`
@ -643,6 +682,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map` * :c:data:`mo_integrals_map`
@ -682,8 +722,6 @@ Providers
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
* :c:data:`mo_coef` * :c:data:`mo_coef`
@ -717,15 +755,13 @@ Providers
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
* :c:data:`list_inact` * :c:data:`list_virt`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_coef_transp` * :c:data:`mo_coef_transp`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_core_orb` * :c:data:`n_virt_orb`
@ -754,15 +790,13 @@ Providers
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
* :c:data:`list_inact` * :c:data:`list_virt`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_coef_transp` * :c:data:`mo_coef_transp`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_core_orb` * :c:data:`n_virt_orb`
@ -791,15 +825,13 @@ Providers
* :c:data:`ao_integrals_map` * :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold` * :c:data:`ao_integrals_threshold`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals` * :c:data:`do_direct_integrals`
* :c:data:`list_inact` * :c:data:`list_virt`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_coef_transp` * :c:data:`mo_coef_transp`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_core_orb` * :c:data:`n_virt_orb`
@ -824,13 +856,13 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_coef_transp`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`mo_coef`
* :c:data:`mo_coef_transp`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_num`
* :c:data:`n_int` * :c:data:`n_int`
Called by: Called by:
@ -838,6 +870,7 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`four_idx_novvvv2`
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
Calls: Calls:
@ -846,7 +879,6 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:func:`bitstring_to_list` * :c:func:`bitstring_to_list`
* :c:func:`bitstring_to_str`
* :c:func:`cpu_time` * :c:func:`cpu_time`
* :c:func:`get_ao_two_e_integrals` * :c:func:`get_ao_two_e_integrals`
* :c:func:`insert_into_mo_integrals_map` * :c:func:`insert_into_mo_integrals_map`
@ -872,22 +904,15 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_coef_transp`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`mo_coef`
* :c:data:`mo_coef_transp`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_num`
* :c:data:`n_int` * :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
Calls: Calls:
.. hlist:: .. hlist::
@ -919,29 +944,21 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_coef_transp`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`mo_coef`
* :c:data:`mo_coef_transp`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_num`
* :c:data:`n_int` * :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
Calls: Calls:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`bitstring_to_list` * :c:func:`bitstring_to_list`
* :c:func:`bitstring_to_str`
* :c:func:`cpu_time` * :c:func:`cpu_time`
* :c:func:`get_ao_two_e_integrals` * :c:func:`get_ao_two_e_integrals`
* :c:func:`insert_into_mo_integrals_map` * :c:func:`insert_into_mo_integrals_map`
@ -950,6 +967,44 @@ Subroutines / functions
* :c:func:`wall_time` * :c:func:`wall_time`
.. c:function:: ao_to_mo_novirt:
File : :file:`mo_two_e_ints/four_idx_novvvv.irp.f`
.. code:: fortran
subroutine ao_to_mo_novirt(A_ao,LDA_ao,A_mo,LDA_mo)
Transform A from the |AO| basis to the |MO| basis excluding virtuals
$C^\dagger.A_{ao}.C$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef_novirt`
* :c:data:`n_core_inact_act_orb`
Called by:
.. hlist::
:columns: 3
* :c:func:`four_idx_novvvv`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: clear_mo_map: .. c:function:: clear_mo_map:
@ -1005,6 +1060,81 @@ Subroutines / functions
* :c:func:`ezfio_set_work_empty` * :c:func:`ezfio_set_work_empty`
.. c:function:: four_idx_novvvv:
File : :file:`mo_two_e_ints/four_idx_novvvv.irp.f`
.. code:: fortran
subroutine four_idx_novvvv
Retransform MO integrals for next CAS-SCF step
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_map`
* :c:data:`ao_num`
* :c:data:`list_core_inact_act`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_num`
* :c:data:`n_core_inact_act_orb`
Called by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`ao_to_mo`
* :c:func:`ao_to_mo_novirt`
* :c:func:`map_append`
* :c:func:`map_shrink`
* :c:func:`map_sort`
* :c:func:`map_unique`
* :c:func:`two_e_integrals_index`
.. c:function:: four_idx_novvvv2:
File : :file:`mo_two_e_ints/four_idx_novvvv.irp.f`
.. code:: fortran
subroutine four_idx_novvvv2
Needs:
.. hlist::
:columns: 3
* :c:data:`core_inact_act_bitmask_4`
* :c:data:`full_ijkl_bitmask_4`
* :c:data:`n_int`
* :c:data:`virt_bitmask`
Calls:
.. hlist::
:columns: 3
* :c:func:`add_integrals_to_map`
.. c:function:: get_mo_map_size: .. c:function:: get_mo_map_size:
@ -1043,17 +1173,18 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_cache_min`
* :c:data:`mo_two_e_integrals_in_map`
Called by: Called by:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`get_d0` * :c:func:`get_mo_two_e_integrals_i1j1`
* :c:func:`get_d1` * :c:func:`get_mo_two_e_integrals_ij`
Calls: Calls:
@ -1092,14 +1223,6 @@ Subroutines / functions
* :c:data:`fock_operator_closed_shell_ref_bitmask` * :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell` * :c:data:`fock_wee_closed_shell`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_get_many`
* :c:func:`two_e_integrals_index`
.. c:function:: get_mo_two_e_integrals_exch_ii: .. c:function:: get_mo_two_e_integrals_exch_ii:
@ -1130,14 +1253,6 @@ Subroutines / functions
* :c:data:`fock_operator_closed_shell_ref_bitmask` * :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell` * :c:data:`fock_wee_closed_shell`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_get_many`
* :c:func:`two_e_integrals_index`
.. c:function:: get_mo_two_e_integrals_i1j1: .. c:function:: get_mo_two_e_integrals_i1j1:
@ -1159,18 +1274,13 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_integrals_map`
Calls: Calls:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`i2radix_sort` * :c:func:`get_mo_two_e_integrals`
* :c:func:`i8radix_sort`
* :c:func:`iradix_sort`
* :c:func:`map_get_many`
* :c:func:`two_e_integrals_index`
.. c:function:: get_mo_two_e_integrals_ij: .. c:function:: get_mo_two_e_integrals_ij:
@ -1187,24 +1297,12 @@ Subroutines / functions
i(1)j(2) 1/r12 k(1)l(2) i(1)j(2) 1/r12 k(1)l(2)
i, j for k,l fixed. i, j for k,l fixed.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_integrals_map`
Calls: Calls:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`i2radix_sort` * :c:func:`get_mo_two_e_integrals`
* :c:func:`i8radix_sort`
* :c:func:`iradix_sort`
* :c:func:`map_get_many`
* :c:func:`two_e_integrals_index`
.. c:function:: get_two_e_integral: .. c:function:: get_two_e_integral:
@ -1224,9 +1322,10 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_cache_min`
* :c:data:`mo_two_e_integrals_in_map`
Calls: Calls:
@ -1306,7 +1405,6 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:func:`add_integrals_to_map` * :c:func:`add_integrals_to_map`
* :c:func:`add_integrals_to_map_erf`
* :c:func:`add_integrals_to_map_no_exit_34` * :c:func:`add_integrals_to_map_no_exit_34`
* :c:func:`add_integrals_to_map_three_indices` * :c:func:`add_integrals_to_map_three_indices`

View File

@ -38,7 +38,7 @@ EZFIO parameters
Nuclear coordinates in the format (:, {x,y,z}) Nuclear coordinates in the format (:, {x,y,z})
.. option:: disk_access_nuclear_repulsion .. option:: io_nuclear_repulsion
Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ] Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ]
@ -255,10 +255,7 @@ Providers
* :c:data:`ao_pseudo_integrals_local` * :c:data:`ao_pseudo_integrals_local`
* :c:data:`ao_pseudo_integrals_non_local` * :c:data:`ao_pseudo_integrals_non_local`
* :c:data:`ao_spread_x` * :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_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map` * :c:data:`ao_two_e_integrals_in_map`
* :c:data:`center_of_mass` * :c:data:`center_of_mass`
* :c:data:`inertia_tensor` * :c:data:`inertia_tensor`
@ -498,7 +495,7 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`disk_access_nuclear_repulsion` * :c:data:`io_nuclear_repulsion`
* :c:data:`mpi_master` * :c:data:`mpi_master`
* :c:data:`nucl_charge` * :c:data:`nucl_charge`
* :c:data:`nucl_coord` * :c:data:`nucl_coord`
@ -512,11 +509,7 @@ Providers
* :c:data:`ci_energy` * :c:data:`ci_energy`
* :c:data:`core_energy` * :c:data:`core_energy`
* :c:data:`core_energy_erf`
* :c:data:`hf_energy`
* :c:data:`psi_energy_with_nucl_rep` * :c:data:`psi_energy_with_nucl_rep`
* :c:data:`pt2_e0_denominator`
* :c:data:`scf_energy`
.. c:var:: slater_bragg_radii .. c:var:: slater_bragg_radii

View File

@ -218,10 +218,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`selection_criterion` * :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`h_apply_buffer_allocated` * :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`selection_criterion`
Calls: Calls:
@ -252,11 +254,12 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -287,11 +290,12 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -322,11 +326,12 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -357,11 +362,12 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -392,11 +398,12 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -427,11 +434,12 @@ Subroutines / functions
:columns: 3 :columns: 3
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators` * :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -461,11 +469,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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` * :c:data:`mo_num`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -497,11 +506,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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` * :c:data:`mo_num`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -533,11 +543,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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` * :c:data:`mo_num`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -569,11 +580,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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` * :c:data:`mo_num`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -605,11 +617,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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` * :c:data:`mo_num`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -641,11 +654,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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` * :c:data:`mo_num`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_det_generators`
* :c:data:`psi_selectors`
Calls: Calls:
@ -676,11 +690,11 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_num`
* :c:data:`n_det_selectors` * :c:data:`n_det_selectors`
* :c:data:`selection_criterion`
* :c:data:`psi_selectors` * :c:data:`psi_selectors`
* :c:data:`psi_selectors_size` * :c:data:`psi_selectors_size`
* :c:data:`mo_num` * :c:data:`selection_criterion`
Called by: Called by:
@ -721,11 +735,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_num`
* :c:data:`n_det_selectors` * :c:data:`n_det_selectors`
* :c:data:`selection_criterion` * :c:data:`n_int`
* :c:data:`psi_selectors` * :c:data:`psi_selectors`
* :c:data:`psi_selectors_size` * :c:data:`psi_selectors_size`
* :c:data:`mo_num` * :c:data:`selection_criterion`
Called by: Called by:
@ -766,10 +781,11 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_num`
* :c:data:`n_det_selectors` * :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors` * :c:data:`psi_selectors`
* :c:data:`psi_selectors_size` * :c:data:`psi_selectors_size`
* :c:data:`mo_num`
Called by: Called by:
@ -811,11 +827,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_num`
* :c:data:`n_det_selectors` * :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_energy`
* :c:data:`psi_selectors` * :c:data:`psi_selectors`
* :c:data:`psi_selectors_size` * :c:data:`psi_selectors_size`
* :c:data:`psi_energy`
* :c:data:`mo_num`
Called by: Called by:
@ -856,12 +873,13 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`ref_bitmask` * :c:data:`fock_matrix_mo`
* :c:data:`psi_selectors_size`
* :c:data:`psi_selectors`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_det_selectors` * :c:data:`n_det_selectors`
* :c:data:`fock_matrix_mo` * :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`ref_bitmask`
Called by: Called by:
@ -902,11 +920,12 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_num`
* :c:data:`n_det_selectors` * :c:data:`n_det_selectors`
* :c:data:`selection_criterion` * :c:data:`n_int`
* :c:data:`psi_selectors` * :c:data:`psi_selectors`
* :c:data:`psi_selectors_size` * :c:data:`psi_selectors_size`
* :c:data:`mo_num` * :c:data:`selection_criterion`
Called by: Called by:
@ -944,16 +963,16 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_coef`
* :c:data:`selection_criterion`
* :c:data:`n_states`
* :c:data:`n_det` * :c:data:`n_det`
* :c:data:`psi_det_size`
* :c:data:`n_det_generators` * :c:data:`n_det_generators`
* :c:data:`n_int` * :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted` * :c:data:`psi_det_sorted`
* :c:data:`psi_det` * :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted` * :c:data:`psi_det_sorted`
* :c:data:`selection_criterion`
Calls: Calls:

View File

@ -178,9 +178,11 @@ Providers
* :c:data:`fock_matrix_mo` * :c:data:`fock_matrix_mo`
* :c:data:`frozen_orb_scf` * :c:data:`frozen_orb_scf`
* :c:data:`level_shift` * :c:data:`level_shift`
* :c:data:`list_inact` * :c:data:`list_act`
* :c:data:`list_core`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_act_orb`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
@ -206,8 +208,8 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`max_dim_diis`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`max_dim_diis`
Called by: Called by:
@ -221,8 +223,10 @@ Providers
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`dgecon`
* :c:func:`dgemm` * :c:func:`dgemm`
* :c:func:`dsysvx` * :c:func:`dgesv`
* :c:func:`dgetrf`
.. c:var:: fock_matrix_ao .. c:var:: fock_matrix_ao
@ -297,8 +301,10 @@ Providers
* :c:data:`fock_matrix_mo_alpha` * :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta` * :c:data:`fock_matrix_mo_beta`
* :c:data:`frozen_orb_scf` * :c:data:`frozen_orb_scf`
* :c:data:`list_inact` * :c:data:`list_act`
* :c:data:`list_core`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_act_orb`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
Needed by: Needed by:
@ -346,8 +352,10 @@ Providers
* :c:data:`fock_matrix_mo_alpha` * :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta` * :c:data:`fock_matrix_mo_beta`
* :c:data:`frozen_orb_scf` * :c:data:`frozen_orb_scf`
* :c:data:`list_inact` * :c:data:`list_act`
* :c:data:`list_core`
* :c:data:`mo_num` * :c:data:`mo_num`
* :c:data:`n_act_orb`
* :c:data:`n_core_orb` * :c:data:`n_core_orb`
Needed by: Needed by:
@ -637,18 +645,18 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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:`ao_num`
* :c:data:`scf_density_matrix_ao_alpha` * :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao` * :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo`
* :c:data:`frozen_orb_scf`
* :c:data:`mo_coef`
* :c:data:`mo_label` * :c:data:`mo_label`
* :c:data:`n_it_scf_max` * :c:data:`n_it_scf_max`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
* :c:data:`scf_energy`
* :c:data:`thresh_scf` * :c:data:`thresh_scf`
* :c:data:`frozen_orb_scf`
Calls: Calls:
@ -690,14 +698,15 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :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_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_overlap`
* :c:data:`ao_two_e_integral_alpha` * :c:data:`ao_two_e_integral_alpha`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao_alpha` * :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha` * :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Called by: Called by:
@ -711,6 +720,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`orthonormalize_mos`
* :c:func:`restore_symmetry`
* :c:func:`save_mos` * :c:func:`save_mos`
Touches: Touches:
@ -740,34 +751,27 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`max_dim_diis`
* :c:data:`mo_occ`
* :c:data:`ao_md5` * :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:`ao_num`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao` * :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:`fock_matrix_ao_alpha` * :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_mo`
* :c:data:`fps_spf_matrix_ao` * :c:data:`fps_spf_matrix_ao`
* :c:data:`fps_spf_matrix_mo`
Called by: * :c:data:`frozen_orb_scf`
* :c:data:`level_shift`
.. hlist:: * :c:data:`max_dim_diis`
:columns: 3 * :c:data:`mo_coef`
* :c:data:`mo_label`
* :c:func:`run` * :c:data:`mo_num`
* :c:data:`mo_occ`
* :c:data:`n_it_scf_max`
* :c:data:`scf_algorithm`
* :c:data:`scf_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_diis_nonzero`
Calls: Calls:
@ -777,6 +781,8 @@ Subroutines / functions
* :c:func:`extrapolate_fock_matrix` * :c:func:`extrapolate_fock_matrix`
* :c:func:`initialize_mo_coef_begin_iteration` * :c:func:`initialize_mo_coef_begin_iteration`
* :c:func:`mo_as_eigvectors_of_mo_matrix` * :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`nullify_small_elements`
* :c:func:`orthonormalize_mos`
* :c:func:`reorder_core_orb` * :c:func:`reorder_core_orb`
* :c:func:`save_mos` * :c:func:`save_mos`
* :c:func:`write_double` * :c:func:`write_double`

View File

@ -33,6 +33,76 @@ Programs
Subroutines / functions Subroutines / functions
----------------------- -----------------------
.. c:function:: print_energy:
File : :file:`print_energy.irp.f`
.. code:: fortran
subroutine print_energy
Prints the energy of the wave function stored in the |EZFIO| directory.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`run`
Touches:
.. hlist::
:columns: 3
* :c:data:`read_wf`
.. c:function:: print_hamiltonian:
File : :file:`print_hamiltonian.irp.f`
.. code:: fortran
subroutine print_hamiltonian
Prints the Hamiltonian matrix defined in the space of determinants
present in the |EZFIO| directory.
Needs:
.. hlist::
:columns: 3
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`run`
Touches:
.. hlist::
:columns: 3
* :c:data:`read_wf`
.. c:function:: routine: .. c:function:: routine:
@ -80,8 +150,8 @@ Subroutines / functions
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_states`
* :c:data:`ezfio_filename` * :c:data:`ezfio_filename`
* :c:data:`n_states`
Called by: Called by:
@ -138,3 +208,41 @@ Subroutines / functions
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_ao` * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_ao`
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo` * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo`
.. c:function:: run:
File : :file:`print_hamiltonian.irp.f`
.. code:: fortran
subroutine run
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
Called by:
.. hlist::
:columns: 3
* :c:func:`print_energy`
* :c:func:`print_hamiltonian`
* :c:func:`pt2`
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_h_j`

View File

@ -29,7 +29,7 @@ be used. In addition, all the shell scripts should be under
The exit code of the script should be 0 upon success only. The exit code of the script should be 0 upon success only.
Bash and Python2 are the only shell scripting language permitted for Bash and Python3 are the only shell scripting language permitted for
executables. executables.
@ -73,11 +73,10 @@ Bash
Python Python
------ ------
Only Python2 is supported. The reason is that some dependencies use Python2, Only Python3 is supported.
and we do not want yet to add an extra dependency to Python3.
Python scripts should start with ``#!/usr/bin/env python2`` to mention Python scripts should start with ``#!/usr/bin/env python3`` to mention
explicitly that Python2 has to be used. explicitly that Python3 has to be used, possibly from a conda installation.
:command:`pylint` should be used to increase the quality of the source code. :command:`pylint` should be used to increase the quality of the source code.

View File

@ -6,7 +6,7 @@ To program in the |qp|, it is required that you are familiar with the |IRPF90|
code generator. A GitBook can be found `here <http://scemama.gitbooks.io/irpf90>`_, code generator. A GitBook can be found `here <http://scemama.gitbooks.io/irpf90>`_,
and programmers are encouraged to visit this manual. and programmers are encouraged to visit this manual.
|IRPF90| make programming very simple. The only information a programmer needs |IRPF90| makes programming very simple. The only information a programmer needs
in order to write a new program is the name of the required |IRPF90| entities in order to write a new program is the name of the required |IRPF90| entities
which may already exist in other modules. For example, writing a program which which may already exist in other modules. For example, writing a program which
prints the Hartree-Fock energy is as simple as: prints the Hartree-Fock energy is as simple as:
@ -24,7 +24,7 @@ prints the Hartree-Fock energy is as simple as:
The only required information was the existence of a provider for The only required information was the existence of a provider for
:command:`hf_energy`. A detailed list of all the providers, subroutines :command:`HF_energy`. A detailed list of all the providers, subroutines
and functions of the |qp| can be found in the appendix of this manual. and functions of the |qp| can be found in the appendix of this manual.
@ -32,10 +32,10 @@ and functions of the |qp| can be found in the appendix of this manual.
Architecture Architecture
============ ============
As |IRPF90| is used, the programmer doesn't have a full control of the sequence As |IRPF90| is used, the programmer doesn't have full control of the sequence
of instructions in the produced Fortran code. This explains why the input data of instructions in the produced Fortran code. This explains why the input data
is stored in a database rather than in sequential text files. Indeed, the is stored in a database rather than in sequential text files. Consequently, the
programmer can't know by advance in which order the files will be read, so a programmer can't know in advance the order in which the files will be read, so a
simple random access to persistent data is needed. The |EZFIO| library generator simple random access to persistent data is needed. The |EZFIO| library generator
is a practical answer to this problem. is a practical answer to this problem.
@ -45,10 +45,10 @@ This is done mostly using the command line or scripting.
.. important:: .. important::
Each command modifies the state of the |EZFIO| database, so running twice the Each command modifies the state of the |EZFIO| database, so running the
same program on the same database may have different behaviors because of the same program twice on the same database may have different behavior because of the
state of the database. For reproducibility, users are encouraged to run scripts state of the database. For reproducibility, users are encouraged to run scripts
where a fresg new |EZFIO| database is created at the beginning of the where a fresh new |EZFIO| database is created at the beginning of the
script. This way of running the |qp| makes calculations reproducible. script. This way of running the |qp| makes calculations reproducible.
@ -97,7 +97,7 @@ in the `FCIDUMP` format (see :ref:`fcidump`).
All the results are stored in the |EZFIO| directory, so users willing to fetch All the results are stored in the |EZFIO| directory, so users willing to fetch
data such as the |MOs| or the |CI| coefficients should use the |EZFIO| API. data such as the |MOs| or the |CI| coefficients should use the |EZFIO| API.
There multiple major ways to do this: There are multiple major ways to do this:
* Write a script in Python or OCaml and use the Python |EZFIO| API. The script * Write a script in Python or OCaml and use the Python |EZFIO| API. The script
:file:`$QP_ROOT/bin/qp_convert_output_to_ezfio` is a good example to understand :file:`$QP_ROOT/bin/qp_convert_output_to_ezfio` is a good example to understand

View File

@ -22,7 +22,7 @@ cisd
* **Ground state calculation**: if even after a :c:func:`cis` calculation, natural * **Ground state calculation**: if even after a :c:func:`cis` calculation, natural
orbitals (see :c:func:`save_natorb`) and then :c:func:`scf` optimization, you are not sure to have the lowest scf orbitals (see :c:func:`save_natorb`) and then :c:func:`scf` optimization, you are not sure to have the lowest scf
solution, solution,
do the same strategy with the :c:func:`cisd` executable instead of the :c:func:`cis` exectuable to generate the natural do the same strategy with the :c:func:`cisd` executable instead of the :c:func:`cis` exectuable to generate the natural
orbitals as a guess for the :c:func:`scf`. orbitals as a guess for the :c:func:`scf`.
@ -57,6 +57,7 @@ cisd
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`n_states`
* :c:data:`read_wf` * :c:data:`read_wf`
Calls: Calls:

View File

@ -48,10 +48,10 @@ fci
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`psi_coef`
* :c:data:`is_zmq_slave`
* :c:data:`do_pt2` * :c:data:`do_pt2`
* :c:data:`is_zmq_slave`
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
* :c:data:`psi_coef`
* :c:data:`psi_det` * :c:data:`psi_det`
Calls: Calls:
@ -87,9 +87,11 @@ fci
* :c:data:`psi_energy` * :c:data:`psi_energy`
* :c:data:`pt2_e0_denominator` * :c:data:`pt2_e0_denominator`
* :c:data:`pt2_match_weight` * :c:data:`pt2_match_weight`
* :c:data:`pt2_overlap`
* :c:data:`pt2_stoch_istate` * :c:data:`pt2_stoch_istate`
* :c:data:`read_wf` * :c:data:`read_wf`
* :c:data:`selection_weight` * :c:data:`selection_weight`
* :c:data:`state_average_weight` * :c:data:`state_average_weight`
* :c:data:`threshold_davidson_pt2`
* :c:data:`threshold_generators` * :c:data:`threshold_generators`
* :c:data:`variance_match_weight` * :c:data:`variance_match_weight`

View File

@ -31,15 +31,16 @@ fcidump
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
* :c:data:`core_fock_operator`
* :c:data:`elec_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`elec_alpha_num`
* :c:data:`mo_one_e_integrals`
* :c:data:`n_core_orb`
* :c:data:`mo_integrals_threshold`
* :c:data:`list_inact`
* :c:data:`mo_integrals_map`
* :c:data:`core_energy` * :c:data:`core_energy`
* :c:data:`core_fock_operator`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`elec_num`
* :c:data:`ezfio_filename`
* :c:data:`list_act`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_act_orb`
* :c:data:`n_core_orb`

View File

@ -19,10 +19,10 @@ ks_scf
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`io_mo_one_e_integrals`
* :c:data:`mu_erf_dft`
* :c:data:`density_for_dft` * :c:data:`density_for_dft`
* :c:data:`io_ao_one_e_integrals` * :c:data:`io_ao_one_e_integrals`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`mu_erf_dft`
Calls: Calls:

View File

@ -16,21 +16,21 @@ molden
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`nucl_list_shell_aos`
* :c:data:`mo_occ`
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`ao_coef` * :c:data:`ao_coef`
* :c:data:`ao_power`
* :c:data:`fock_matrix_mo`
* :c:data:`ao_num`
* :c:data:`ao_prim_num`
* :c:data:`mo_num`
* :c:data:`nucl_coord`
* :c:data:`ao_l`
* :c:data:`nucl_charge`
* :c:data:`ao_expo` * :c:data:`ao_expo`
* :c:data:`ao_l`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`element_name` * :c:data:`element_name`
* :c:data:`ezfio_filename`
* :c:data:`fock_matrix_mo`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`mo_occ`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_list_shell_aos`
* :c:data:`nucl_num` * :c:data:`nucl_num`
Calls: Calls:

View File

@ -30,8 +30,8 @@ pt2
* :c:data:`is_zmq_slave` * :c:data:`is_zmq_slave`
* :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_in_map`
* :c:data:`psi_energy` * :c:data:`psi_energy`
* :c:data:`threshold_generators`
* :c:data:`read_wf` * :c:data:`read_wf`
* :c:data:`threshold_generators`
Calls: Calls:
@ -46,12 +46,7 @@ pt2
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`distributed_davidson` * :c:data:`distributed_davidson`
* :c:data:`level_shift`
* :c:data:`mo_coef`
* :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

@ -19,8 +19,8 @@ rotate_mos
:columns: 3 :columns: 3
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num`
Calls: Calls:

View File

@ -19,10 +19,10 @@ rs_ks_scf
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`io_mo_one_e_integrals`
* :c:data:`mu_erf_dft`
* :c:data:`density_for_dft` * :c:data:`density_for_dft`
* :c:data:`io_ao_one_e_integrals` * :c:data:`io_ao_one_e_integrals`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`mu_erf_dft`
* :c:data:`read_wf` * :c:data:`read_wf`
Calls: Calls:

View File

@ -32,8 +32,8 @@ save_natorb
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_e_n`
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_kinetic` * :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_kinetic`
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_n_e`
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_pseudo` * :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_pseudo`
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_one_e_integrals` * :c:func:`ezfio_set_mo_one_e_ints_io_mo_one_e_integrals`
* :c:func:`ezfio_set_mo_two_e_ints_io_mo_two_e_integrals` * :c:func:`ezfio_set_mo_two_e_ints_io_mo_two_e_integrals`
@ -45,5 +45,6 @@ save_natorb
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_occ` * :c:data:`mo_occ`
* :c:data:`read_wf` * :c:data:`read_wf`

View File

@ -17,6 +17,13 @@ save_ortho_mos
Thanks to the Lowdin orthonormalization, the new MOs are the most similar to the guess MOs. Thanks to the Lowdin orthonormalization, the new MOs are the most similar to the guess MOs.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
Calls: Calls:
.. hlist:: .. hlist::

View File

@ -58,9 +58,5 @@ scf
* :c:data:`fock_matrix_ao_alpha` * :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha` * :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_label` * :c:data:`mo_label`

View File

@ -18,10 +18,10 @@ sort_by_fock_energies
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`fock_matrix_mo`
* :c:data:`ao_num` * :c:data:`ao_num`
* :c:data:`mo_num` * :c:data:`fock_matrix_mo`
* :c:data:`mo_coef` * :c:data:`mo_coef`
* :c:data:`mo_num`
Calls: Calls:

View File

@ -10,10 +10,9 @@ test
Calls: Needs:
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:func:`two_e_integrals_index` * :c:data:`mo_one_e_integrals`
* :c:func:`two_e_integrals_index_reverse`

View File

@ -17,8 +17,8 @@ write_integrals_erf
.. hlist:: .. hlist::
:columns: 3 :columns: 3
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_ao_two_e_integrals` * :c:data:`io_ao_two_e_integrals`
* :c:data:`io_mo_two_e_integrals`
Calls: Calls:

View File

@ -1,493 +0,0 @@
%%% ARXIV TO BE UPDATED %%%
@article{Loos2020Jan,
author = {Loos, Pierre-François and Scemama, Anthony and Jacquemin, Denis},
title = {{The Quest For Highly Accurate Excitation Energies: A Computational Perspective}},
journal = {arXiv},
year = {2020},
month = {Jan},
eprint = {2001.00416},
url = {https://arxiv.org/abs/2001.00416}
}
@article{Loos2019Dec,
author = {Loos, Pierre-François and Lipparini, Filippo and Boggio-Pasqua, Martial and Scemama, Anthony and Jacquemin, Denis},
title = {{A Mountaineering Strategy to Excited States: Highly-Accurate Energies and Benchmarks for Medium Size Molecules}},
journal = {arXiv},
year = {2019},
month = {Dec},
eprint = {1912.04173},
url = {https://arxiv.org/abs/1912.04173}
}
@article{Loos2019Oct,
author = {Loos, Pierre-François and Pradines, Barthélémy and Scemama, Anthony and Giner, Emmanuel and Toulouse, Julien},
title = {{A Density-Based Basis-Set Incompleteness Correction for GW Methods}},
journal = {arXiv},
year = {2019},
month = {Oct},
eprint = {1910.12238},
url = {https://arxiv.org/abs/1910.12238}
}
%%%% PUBLISHED PAPERS
@article{Hollett2020Jan,
author = {Hollett, Joshua W. and Loos, Pierre-Fran{\c{c}}ois},
title = {{Capturing static and dynamic correlation with {$\Delta$}NO-MP2 and {$\Delta$}NO-CCSD}},
journal = {J. Chem. Phys.},
volume = {152},
number = {1},
pages = {014101},
year = {2020},
month = {Jan},
issn = {0021-9606},
publisher = {American Institute of Physics},
doi = {10.1063/1.5140669}
}
@article{Giner2019Oct,
author = {Giner, Emmanuel and Scemama, Anthony and Toulouse, Julien and Loos, Pierre-Fran{\c{c}}ois},
title = {{Chemically accurate excitation energies with small basis sets}},
journal = {J. Chem. Phys.},
volume = {151},
number = {14},
pages = {144118},
year = {2019},
month = {Oct},
issn = {0021-9606},
publisher = {American Institute of Physics},
doi = {10.1063/1.5122976}
}
@article{Burton2019Sep,
author = {Burton, Hugh G. A. and Thom, Alex J. W.},
title = {{General Approach for Multireference Ground and Excited States Using Nonorthogonal Configuration Interaction}},
journal = {J. Chem. Theory Comput.},
volume = {15},
number = {9},
pages = {4851--4861},
year = {2019},
month = {Sep},
issn = {1549-9618},
publisher = {American Chemical Society},
doi = {10.1021/acs.jctc.9b00441}
}
@article{Dash_2019,
author = {Dash, Monika and Feldt, Jonas and Moroni, Saverio and Scemama, Anthony and Filippi, Claudia},
title = {{Excited States with Selected Configuration Interaction-Quantum Monte Carlo: Chemically Accurate Excitation Energies and Geometries}},
journal = {J. Chem. Theory Comput.},
volume = {15},
number = {9},
pages = {4896--4906},
year = {2019},
month = {Sep},
issn = {1549-9618},
publisher = {American Chemical Society},
doi = {10.1021/acs.jctc.9b00476}
}
@article{Ferte_2019,
doi = {10.1063/1.5082638},
url = {https://doi.org/10.1063%2F1.5082638},
year = 2019,
month = {feb},
publisher = {{AIP} Publishing},
volume = {150},
number = {8},
pages = {084103},
author = {Anthony Fert{\'{e}} and Emmanuel Giner and Julien Toulouse},
title = {Range-separated multideterminant density-functional theory with a short-range correlation functional of the on-top pair density},
journal = {The Journal of Chemical Physics}
}
@article{Caffarel_2019,
doi = {10.1063/1.5114703},
url = {https://doi.org/10.1063%2F1.5114703},
year = 2019,
month = {aug},
publisher = {{AIP} Publishing},
volume = {151},
number = {6},
pages = {064101},
author = {Michel Caffarel},
title = {Evaluating two-electron-repulsion integrals over arbitrary orbitals using zero variance Monte Carlo: Application to full configuration interaction calculations with Slater-type orbitals},
journal = {The Journal of Chemical Physics}
}
@article{Loos_2019,
doi = {10.1021/acs.jpclett.9b01176},
url = {https://doi.org/10.1021%2Facs.jpclett.9b01176},
year = 2019,
month = {may},
publisher = {American Chemical Society ({ACS})},
volume = {10},
number = {11},
pages = {2931--2937},
author = {Pierre-Fran{\c{c}}ois Loos and Barth{\'{e}}l{\'{e}}my Pradines and Anthony Scemama and Julien Toulouse and Emmanuel Giner},
title = {A Density-Based Basis-Set Correction for Wave Function Theory},
journal = {The Journal of Physical Chemistry Letters}
}
@article{Garniron_2019,
doi = {10.1021/acs.jctc.9b00176},
url = {https://doi.org/10.1021%2Facs.jctc.9b00176},
year = 2019,
month = {may},
publisher = {American Chemical Society ({ACS})},
author = {Yann Garniron and Thomas Applencourt and Kevin Gasperich and Anouar Benali and Anthony Fert{\'{e}} and Julien Paquier and Barth{\'{e}}l{\'{e}}my Pradines and Roland Assaraf and Peter Reinhardt and Julien Toulouse and Pierrette Barbaresco and Nicolas Renon and Gr{\'{e}}goire David and Jean-Paul Malrieu and Mickaël V{\'{e}}ril and Michel Caffarel and Pierre-Fran{\c{c}}ois Loos and Emmanuel Giner and Anthony Scemama},
title = {Quantum Package 2.0: An Open-Source Determinant-Driven Suite of Programs},
journal = {Journal of Chemical Theory and Computation}
}
@article{Scemama_2019,
doi = {10.1016/j.rechem.2019.100002},
url = {https://doi.org/10.1016%2Fj.rechem.2019.100002},
year = 2019,
month = {may},
publisher = {Elsevier {BV}},
pages = {100002},
author = {Anthony Scemama and Michel Caffarel and Anouar Benali and Denis Jacquemin and Pierre-Fran{\c{c}}ois Loos},
title = {Influence of pseudopotentials on excitation energies from selected configuration interaction and diffusion Monte Carlo},
journal = {Results in Chemistry}
}
@article{Applencourt2018Dec,
author = {Applencourt, Thomas and Gasperich, Kevin and Scemama, Anthony},
title = {{Spin adaptation with determinant-based selected configuration interaction}},
journal = {arXiv},
year = {2018},
month = {Dec},
eprint = {1812.06902},
url = {https://arxiv.org/abs/1812.06902}
}
@article{Loos2019Mar,
author = {Loos, Pierre-Fran\c{c}ois and Boggio-Pasqua, Martial and Scemama, Anthony and Caffarel, Michel and Jacquemin, Denis},
title = {{Reference Energies for Double Excitations}},
journal = {J. Chem. Theory Comput.},
volume = {15},
number = {3},
pages = {1939--1956},
year = {2019},
month = {Mar},
issn = {1549-9618},
publisher = {American Chemical Society},
doi = {10.1021/acs.jctc.8b01205}
}
@article{PinedaFlores2019Feb,
author = {Pineda Flores, Sergio and Neuscamman, Eric},
title = {{Excited State Specific Multi-Slater Jastrow Wave Functions}},
journal = {J. Phys. Chem. A},
volume = {123},
number = {8},
pages = {1487--1497},
year = {2019},
month = {Feb},
issn = {1089-5639},
publisher = {American Chemical Society},
doi = {10.1021/acs.jpca.8b10671}
}
@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,
doi = {10.1063/1.5052714},
url = {https://doi.org/10.1063%2F1.5052714},
year = 2018,
month = {nov},
publisher = {{AIP} Publishing},
volume = {149},
number = {19},
pages = {194301},
author = {Emmanuel Giner and Barth{\'{e}}lemy Pradines and Anthony Fert{\'{e}} and Roland Assaraf and Andreas Savin and Julien Toulouse},
title = {Curing basis-set convergence of wave-function theory using density-functional theory: A systematically improvable approach},
journal = {The Journal of Chemical Physics}
}
@article{Giner2018Oct,
author = {Giner, Emmanuel and Tew, David and Garniron, Yann and Alavi, Ali},
title = {{Interplay between electronic correlation and metal-ligand delocalization in the spectroscopy of transition metal compounds: case study on a series of planar Cu2+complexes.}},
journal = {J. Chem. Theory Comput.},
year = {2018},
month = {Oct},
issn = {1549-9618},
publisher = {American Chemical Society},
doi = {10.1021/acs.jctc.8b00591}
}
@article{Loos_2018,
doi = {10.1021/acs.jctc.8b00406},
url = {https://doi.org/10.1021%2Facs.jctc.8b00406},
year = 2018,
month = {jul},
publisher = {American Chemical Society ({ACS})},
volume = {14},
number = {8},
pages = {4360--4379},
author = {Pierre-Fran{\c{c}}ois Loos and Anthony Scemama and Aymeric Blondel and Yann Garniron and Michel Caffarel and Denis Jacquemin},
title = {A Mountaineering Strategy to Excited States: Highly Accurate Reference Energies and Benchmarks},
journal = {Journal of Chemical Theory and Computation}
}
@article{Scemama_2018,
doi = {10.1021/acs.jctc.7b01250},
url = {https://doi.org/10.1021%2Facs.jctc.7b01250},
year = 2018,
month = {jan},
publisher = {American Chemical Society ({ACS})},
volume = {14},
number = {3},
pages = {1395--1402},
author = {Anthony Scemama and Yann Garniron and Michel Caffarel and Pierre-Fran{\c{c}}ois Loos},
title = {Deterministic Construction of Nodal Surfaces within Quantum Monte Carlo: The Case of {FeS}},
journal = {Journal of Chemical Theory and Computation}
}
@article{Scemama_2018.2,
doi = {10.1063/1.5041327},
url = {https://doi.org/10.1063%2F1.5041327},
year = 2018,
month = {jul},
publisher = {{AIP} Publishing},
volume = {149},
number = {3},
pages = {034108},
author = {Anthony Scemama and Anouar Benali and Denis Jacquemin and Michel Caffarel and Pierre-Fran{\c{c}}ois Loos},
title = {Excitation energies from diffusion Monte Carlo using selected configuration interaction nodes},
journal = {The Journal of Chemical Physics}
}
@article{Dash_2018,
doi = {10.1021/acs.jctc.8b00393},
url = {https://doi.org/10.1021%2Facs.jctc.8b00393},
year = 2018,
month = {jun},
publisher = {American Chemical Society ({ACS})},
volume = {14},
number = {8},
pages = {4176--4182},
author = {Monika Dash and Saverio Moroni and Anthony Scemama and Claudia Filippi},
title = {Perturbatively Selected Configuration-Interaction Wave Functions for Efficient Geometry Optimization in Quantum Monte Carlo},
journal = {Journal of Chemical Theory and Computation}
}
@article{Garniron_2018,
doi = {10.1063/1.5044503},
url = {https://doi.org/10.1063%2F1.5044503},
year = 2018,
month = {aug},
publisher = {{AIP} Publishing},
volume = {149},
number = {6},
pages = {064103},
author = {Yann Garniron and Anthony Scemama and Emmanuel Giner and Michel Caffarel and Pierre-Fran{\c{c}}ois Loos},
title = {Selected configuration interaction dressed by perturbation},
journal = {The Journal of Chemical Physics}
}
@article{Giner_2017,
doi = {10.1063/1.4984616},
url = {https://doi.org/10.1063%2F1.4984616},
year = 2017,
month = {jun},
publisher = {{AIP} Publishing},
volume = {146},
number = {22},
pages = {224108},
author = {Emmanuel Giner and Celestino Angeli and Yann Garniron and Anthony Scemama and Jean-Paul Malrieu},
title = {A Jeziorski-Monkhorst fully uncontracted multi-reference perturbative treatment. I. Principles, second-order versions, and tests on ground state potential energy curves},
journal = {The Journal of Chemical Physics}
}
@article{Garniron_2017,
doi = {10.1063/1.4980034},
url = {https://doi.org/10.1063%2F1.4980034},
year = 2017,
month = {apr},
publisher = {{AIP} Publishing},
volume = {146},
number = {15},
pages = {154107},
author = {Yann Garniron and Emmanuel Giner and Jean-Paul Malrieu and Anthony Scemama},
title = {Alternative definition of excitation amplitudes in multi-reference state-specific coupled cluster},
journal = {The Journal of Chemical Physics}
}
@article{Garniron_2017.2,
doi = {10.1063/1.4992127},
url = {https://doi.org/10.1063%2F1.4992127},
year = 2017,
month = {jul},
publisher = {{AIP} Publishing},
volume = {147},
number = {3},
pages = {034101},
author = {Yann Garniron and Anthony Scemama and Pierre-Fran{\c{c}}ois Loos and Michel Caffarel},
title = {Hybrid stochastic-deterministic calculation of the second-order perturbative contribution of multireference perturbation theory},
journal = {The Journal of Chemical Physics}
}
@article{Giner_2017.2,
doi = {10.1016/j.comptc.2017.03.001},
url = {https://doi.org/10.1016%2Fj.comptc.2017.03.001},
year = 2017,
month = {sep},
publisher = {Elsevier {BV}},
volume = {1116},
pages = {134--140},
author = {E. Giner and C. Angeli and A. Scemama and J.-P. Malrieu},
title = {Orthogonal Valence Bond Hamiltonians incorporating dynamical correlation effects},
journal = {Computational and Theoretical Chemistry}
}
@article{Giner_2017.3,
author = {Giner, Emmanuel and Tenti, Lorenzo and Angeli, Celestino and Ferré, Nicolas},
title = {Computation of the Isotropic Hyperfine Coupling Constant: Efficiency and Insights from a New Approach Based on Wave Function Theory},
journal = {Journal of Chemical Theory and Computation},
volume = {13},
number = {2},
pages = {475-487},
year = {2017},
doi = {10.1021/acs.jctc.6b00827},
note ={PMID: 28094936},
URL = {https://doi.org/10.1021/acs.jctc.6b00827},
eprint = {https://doi.org/10.1021/acs.jctc.6b00827}
}
@article{Giner2016Mar,
author = {Giner, Emmanuel and Angeli, Celestino},
title = {{Spin density and orbital optimization in open shell systems: A rational and computationally efficient proposal}},
journal = {J. Chem. Phys.},
volume = {144},
number = {10},
pages = {104104},
year = {2016},
month = {Mar},
issn = {0021-9606},
publisher = {American Institute of Physics},
doi = {10.1063/1.4943187}
}
@article{Giner_2016,
doi = {10.1063/1.4940781},
url = {https://doi.org/10.1063%2F1.4940781},
year = 2016,
month = {feb},
publisher = {{AIP} Publishing},
volume = {144},
number = {6},
pages = {064101},
author = {E. Giner and G. David and A. Scemama and J. P. Malrieu},
title = {A simple approach to the state-specific {MR}-{CC} using the intermediate Hamiltonian formalism},
journal = {The Journal of Chemical Physics}
}
@article{Caffarel_2016,
doi = {10.1063/1.4947093},
url = {https://doi.org/10.1063%2F1.4947093},
year = 2016,
month = {apr},
publisher = {{AIP} Publishing},
volume = {144},
number = {15},
pages = {151103},
author = {Michel Caffarel and Thomas Applencourt and Emmanuel Giner and Anthony Scemama},
title = {Communication: Toward an improved control of the fixed-node error in quantum Monte Carlo: The case of the water molecule},
journal = {The Journal of Chemical Physics}
}
@incollection{Caffarel_2016.2,
doi = {10.1021/bk-2016-1234.ch002},
url = {https://doi.org/10.1021%2Fbk-2016-1234.ch002},
year = 2016,
month = {jan},
publisher = {American Chemical Society},
pages = {15--46},
author = {Michel Caffarel and Thomas Applencourt and Emmanuel Giner and Anthony Scemama},
title = {Using CIPSI Nodes in Diffusion Monte Carlo},
booktitle = {{ACS} Symposium Series}
}
@article{Giner_2015,
doi = {10.1063/1.4905528},
url = {https://doi.org/10.1063%2F1.4905528},
year = 2015,
month = {jan},
publisher = {{AIP} Publishing},
volume = {142},
number = {4},
pages = {044115},
author = {Emmanuel Giner and Anthony Scemama and Michel Caffarel},
title = {Fixed-node diffusion Monte Carlo potential energy curve of the fluorine molecule F2 using selected configuration interaction trial wavefunctions},
journal = {The Journal of Chemical Physics}
}
@article{Giner2015Sep,
author = {Giner, Emmanuel and Angeli, Celestino},
title = {{Metal-ligand delocalization and spin density in the CuCl2 and [CuCl4]2{-} molecules: Some insights from wave function theory}},
journal = {J. Chem. Phys.},
volume = {143},
number = {12},
pages = {124305},
year = {2015},
month = {Sep},
issn = {0021-9606},
publisher = {American Institute of Physics},
doi = {10.1063/1.4931639}
}
@article{Scemama_2014,
doi = {10.1063/1.4903985},
url = {https://doi.org/10.1063%2F1.4903985},
year = 2014,
month = {dec},
publisher = {{AIP} Publishing},
volume = {141},
number = {24},
pages = {244110},
author = {A. Scemama and T. Applencourt and E. Giner and M. Caffarel},
title = {Accurate nonrelativistic ground-state energies of 3d transition metal atoms},
journal = {The Journal of Chemical Physics}
}
@article{Caffarel_2014,
doi = {10.1021/ct5004252},
url = {https://doi.org/10.1021%2Fct5004252},
year = 2014,
month = {nov},
publisher = {American Chemical Society ({ACS})},
volume = {10},
number = {12},
pages = {5286--5296},
author = {Michel Caffarel and Emmanuel Giner and Anthony Scemama and Alejandro Ram{\'{\i}}rez-Sol{\'{\i}}s},
title = {Spin Density Distribution in Open-Shell Transition Metal Systems: A Comparative Post-Hartree-Fock, Density Functional Theory, and Quantum Monte Carlo Study of the CuCl2 Molecule},
journal = {Journal of Chemical Theory and Computation}
}
@article{Giner_2013,
doi = {10.1139/cjc-2013-0017},
url = {https://doi.org/10.1139%2Fcjc-2013-0017},
year = 2013,
month = {sep},
publisher = {Canadian Science Publishing},
volume = {91},
number = {9},
pages = {879--885},
author = {Emmanuel Giner and Anthony Scemama and Michel Caffarel},
title = {Using perturbatively selected configuration interaction in quantum Monte Carlo calculations},
journal = {Canadian Journal of Chemistry}
}
@article{Scemama2013Nov,
author = {Scemama, Anthony and Giner, Emmanuel},
title = {{An efficient implementation of Slater-Condon rules}},
journal = {arXiv},
year = {2013},
month = {Nov},
eprint = {1311.6244},
url = {https://arxiv.org/abs/1311.6244}
}

View File

@ -128,6 +128,12 @@ and the atomic basis set:
ao_two_e_erf_ints density_for_dft electrons mo_two_e_ints scf_utils ao_two_e_erf_ints density_for_dft electrons mo_two_e_ints scf_utils
ao_two_e_ints determinants ezfio nuclei work ao_two_e_ints determinants ezfio nuclei work
If you need to run using an already existing EZFIO database, use
.. code:: bash
qp set_file hcn
Run a Hartree-Fock calculation Run a Hartree-Fock calculation
------------------------------ ------------------------------

View File

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

View File

@ -1,13 +0,0 @@
# Configuration for the Ninja package
export NINJA=${QP_ROOT}/bin/ninja
function ninja () {
if [[ -f ${QP_ROOT}/build.ninja ]] ; then
${QP_ROOT}/bin/ninja "$@"
else
>&2 echo "Error: build.ninja does not exists.
You need to run ./configure first."
fi
}

View File

@ -3,7 +3,7 @@
QP_PYTHON= QP_PYTHON=
# Load dependencies # Load dependencies
for i in ezfio.rc irpf90.rc ninja.rc ocaml.rc for i in ezfio.rc irpf90.rc ocaml.rc
do do
source $i source $i
done done

View File

@ -93,7 +93,7 @@ function qp()
"prompt") "prompt")
shift shift
python2 $QP_ROOT/scripts/hello.py python3 $QP_ROOT/scripts/hello.py
function _check_ezfio() { function _check_ezfio() {
if [[ -d ${EZFIO_FILE} ]] ; then if [[ -d ${EZFIO_FILE} ]] ; then
printf "\e[0;32m|${EZFIO_FILE}>\e[m" printf "\e[0;32m|${EZFIO_FILE}>\e[m"

2
external/.gitignore vendored
View File

@ -1,2 +1,2 @@
* #*

Binary file not shown.

1
external/ezfio vendored Submodule

@ -0,0 +1 @@
Subproject commit ccee52d00c2cde1d628b0d34f4a247143747bf36

BIN
external/gmp-6.1.2.tar.bz2 vendored Normal file

Binary file not shown.

1
external/irpf90 vendored Submodule

@ -0,0 +1 @@
Subproject commit 132a4a1661c9878d21dcbf0ac14f7fe9a3b110d0

View File

@ -80,7 +80,7 @@ git:
./create_git_sha1.sh ./create_git_sha1.sh
${QP_EZFIO}/Ocaml/ezfio.ml: ${QP_EZFIO}/Ocaml/ezfio.ml:
$(NINJA) -C ${QP_ROOT}/config ${QP_ROOT}/lib/libezfio_irp.a ninja -C ${QP_ROOT}/config ${QP_ROOT}/lib/libezfio_irp.a
qp_edit.ml: ../scripts/ezfio_interface/qp_edit_template qp_edit.ml: ../scripts/ezfio_interface/qp_edit_template

View File

@ -220,16 +220,16 @@ end = struct
type t = type t =
| EN | EN
| HF | HF
| SOP | CFG
[@@deriving sexp] [@@deriving sexp]
let to_string = function let to_string = function
| EN -> \"EN\" | EN -> \"EN\"
| HF -> \"HF\" | HF -> \"HF\"
| SOP -> \"SOP\" | CFG -> \"CFG\"
let of_string s = let of_string s =
match (String.lowercase_ascii s) with match (String.lowercase_ascii s) with
| \"sop\" -> SOP | \"cfg\" -> CFG
| \"en\" -> EN | \"en\" -> EN
| \"hf\" -> HF | \"hf\" -> HF
| _ -> raise (Invalid_argument (\"Wrong Perturbation type : \"^s)) | _ -> raise (Invalid_argument (\"Wrong Perturbation type : \"^s))

View File

@ -43,6 +43,7 @@ EZFIO_LIB = join("$QP_ROOT", "lib", "libezfio_irp.a")
ZMQ_LIB = join("$QP_ROOT", "lib", "libf77zmq.a") + " " + join("$QP_ROOT", "lib", "libzmq.a") + " -lstdc++ -lrt -ldl" ZMQ_LIB = join("$QP_ROOT", "lib", "libf77zmq.a") + " " + join("$QP_ROOT", "lib", "libzmq.a") + " -lstdc++ -lrt -ldl"
ROOT_BUILD_NINJA = join("$QP_ROOT", "config", "build.ninja") ROOT_BUILD_NINJA = join("$QP_ROOT", "config", "build.ninja")
ROOT_BUILD_NINJA_EXP = join(QP_ROOT, "config", "build.ninja") ROOT_BUILD_NINJA_EXP = join(QP_ROOT, "config", "build.ninja")
ROOT_BUILD_NINJA_EXP_tmp = join(QP_ROOT, "config", "build.ninja.tmp")
header = r"""# header = r"""#
# _______ _____ # _______ _____
# __ __ \___ _______ _________ /____ ________ ___ # __ __ \___ _______ _________ /____ ________ ___
@ -57,7 +58,7 @@ header = r"""#
# /_/ \__,_/ \___/ /_/|_| \__,_/ _\__, / \___/ # /_/ \__,_/ \___/ /_/|_| \__,_/ _\__, / \___/
# /____/ # /____/
# #
# https://github.com/LCPQ/quantum_package, # https://github.com/QuantumPackage/qp2,
# #
# Generated automatically by {0} # Generated automatically by {0}
# #
@ -107,6 +108,17 @@ def ninja_create_env_variable(pwd_config_file):
lib_usr = get_compilation_option(pwd_config_file, "LIB") lib_usr = get_compilation_option(pwd_config_file, "LIB")
str_lib = " ".join([lib_lapack, EZFIO_LIB, ZMQ_LIB, LIB, lib_usr]) str_lib = " ".join([lib_lapack, EZFIO_LIB, ZMQ_LIB, LIB, lib_usr])
# Read all LIB files in modules
libfile = "LIB"
try:
content = ""
with open(libfile,'r') as f:
content = f.read()
str_lib += " "+content
except IOError:
pass
l_string.append("LIB = {0} ".format(str_lib)) l_string.append("LIB = {0} ".format(str_lib))
l_string.append("") l_string.append("")
@ -149,7 +161,7 @@ def get_l_module_with_ezfio_cfg():
from os import listdir from os import listdir
from os.path import isfile from os.path import isfile
return [real_join(QP_SRC, m) for m in listdir(QP_SRC) return [real_join(QP_SRC, m) for m in sorted(listdir(QP_SRC))
if isfile(real_join(QP_SRC, m, "EZFIO.cfg"))] if isfile(real_join(QP_SRC, m, "EZFIO.cfg"))]
@ -328,13 +340,13 @@ def ninja_symlink_build(path_module, l_symlink):
if not l_symlink: if not l_symlink:
return [] return []
l_folder = [s.destination for s in l_symlink] l_folder = [s.destination for s in sorted(l_symlink,key=lambda x:x.destination)]
l_string = ["build l_symlink_{0} : phony {1}".format(path_module.rel, l_string = ["build l_symlink_{0} : phony {1}".format(path_module.rel,
" ".join(map(comp_path,l_folder))), " ".join(map(comp_path,l_folder))),
""] ""]
for symlink in l_symlink: for symlink in sorted(l_symlink, key=lambda x: x.source+x.destination):
l_string += ["build {0}: build_symlink {1}".format(*list(map(comp_path,(symlink.destination, symlink.source)))), ""] l_string += ["build {0}: build_symlink {1}".format(*list(map(comp_path,(symlink.destination, symlink.source)))), ""]
return l_string return l_string
@ -360,7 +372,7 @@ def ninja_gitignore_build(path_module, d_binaries, l_symlink):
path_gitignore = comp_path(join(path_module.abs, ".gitignore")) path_gitignore = comp_path(join(path_module.abs, ".gitignore"))
l_b = list(map(comp_path,[i.abs for i in d_binaries[path_module]])) l_b = sorted(list(map(comp_path,[i.abs for i in d_binaries[path_module]])))
root = "build {0}: build_gitignore {1}".format(path_gitignore, root = "build {0}: build_gitignore {1}".format(path_gitignore,
" ".join(l_b)) " ".join(l_b))
@ -389,7 +401,7 @@ def get_l_file_for_module(path_module):
l_template = [] l_template = []
for f in os.listdir(path_module.abs): for f in sorted(os.listdir(path_module.abs)):
if f.lower().endswith(tuple([".template.f", ".include.f"])): if f.lower().endswith(tuple([".template.f", ".include.f"])):
l_template.append(join(path_module.abs, f)) l_template.append(join(path_module.abs, f))
elif f.endswith(".irp.f"): elif f.endswith(".irp.f"):
@ -495,10 +507,10 @@ def ninja_irpf90_make_build(path_module, l_needed_molule, d_irp):
# D e p e n d a n c y # # D e p e n d a n c y #
# ~#~#~#~#~#~#~#~#~#~ # # ~#~#~#~#~#~#~#~#~#~ #
l_depend = list(map(comp_path,d_irp[path_module]["l_depend"])) l_depend = sorted(list(map(comp_path,d_irp[path_module]["l_depend"])))
l_src = list(map(comp_path,d_irp[path_module]["l_src"])) l_src = sorted(list(map(comp_path,d_irp[path_module]["l_src"])))
l_obj = list(map(comp_path,d_irp[path_module]["l_obj"])) l_obj = sorted(list(map(comp_path,d_irp[path_module]["l_obj"])))
l_template = list(map(comp_path,d_irp[path_module]["l_template"])) l_template = sorted(list(map(comp_path,d_irp[path_module]["l_template"])))
if l_needed_molule: if l_needed_molule:
l_symlink = ["l_symlink_{0}".format(path_module.rel)] l_symlink = ["l_symlink_{0}".format(path_module.rel)]
@ -511,7 +523,7 @@ def ninja_irpf90_make_build(path_module, l_needed_molule, d_irp):
# N i n j a _ b u i l d # # N i n j a _ b u i l d #
# ~#~#~#~#~#~#~#~#~#~#~ # # ~#~#~#~#~#~#~#~#~#~#~ #
l_include_dir = ["-I {0}".format(m.rel) for m in l_needed_molule] l_include_dir = ["-I {0}".format(m.rel) for m in sorted(l_needed_molule, key=lambda x:x.rel+x.abs) ]
l_string = [ l_string = [
"build {0}: build_irpf90.ninja {1}".format(str_creation, str_depend), "build {0}: build_irpf90.ninja {1}".format(str_creation, str_depend),
@ -642,7 +654,7 @@ def ninja_binaries_build(path_module, l_children, d_binaries):
# ~#~#~ # # ~#~#~ #
ninja_module_path = join(comp_path(path_module.abs), "IRPF90_temp/build.ninja") ninja_module_path = join(comp_path(path_module.abs), "IRPF90_temp/build.ninja")
l_abs_bin = list(map(comp_path,[binary.abs for binary in d_binaries[path_module]])) l_abs_bin = sorted(list(map(comp_path,[binary.abs for binary in d_binaries[path_module]])))
# ~#~#~#~#~#~ # # ~#~#~#~#~#~ #
# s t r i n g # # s t r i n g #
@ -659,8 +671,7 @@ def ninja_binaries_build(path_module, l_children, d_binaries):
def ninja_module_build(path_module, d_binaries): def ninja_module_build(path_module, d_binaries):
l_abs_bin = list(map(comp_path,[binary.abs for binary in d_binaries[path_module]])) l_abs_bin = sorted(list(map(comp_path,[binary.abs for binary in d_binaries[path_module]])))
path_readme = os.path.join(comp_path(path_module.abs), "README.rst") path_readme = os.path.join(comp_path(path_module.abs), "README.rst")
l_string = ["build module_{0}: phony {1}".format(path_module.rel, l_string = ["build module_{0}: phony {1}".format(path_module.rel,
@ -830,14 +841,14 @@ if __name__ == "__main__":
dict_root = module_instance.dict_root dict_root = module_instance.dict_root
dict_root_path = dict_module_genelogy_path(dict_root) dict_root_path = dict_module_genelogy_path(dict_root)
l_all_module = list(d_genealogy_path.keys()) l_all_module = sorted(list(d_genealogy_path.keys()))
# ~#~#~#~#~#~#~#~#~#~#~#~#~ # # ~#~#~#~#~#~#~#~#~#~#~#~#~ #
# M o d u l e _ t o _ i r p # # M o d u l e _ t o _ i r p #
# ~#~#~#~#~#~#~#~#~#~#~#~#~ # # ~#~#~#~#~#~#~#~#~#~#~#~#~ #
d_binaries = get_dict_binaries(l_all_module, mode="development") d_binaries = get_dict_binaries(l_all_module, mode="development")
l_module = list(d_binaries.keys()) l_module = sorted(list(d_binaries.keys()), key=lambda x: x.rel+x.abs)
# ~#~#~#~#~#~#~#~#~#~#~#~ # # ~#~#~#~#~#~#~#~#~#~#~#~ #
@ -851,7 +862,6 @@ if __name__ == "__main__":
# ~#~#~#~#~#~#~#~#~#~#~#~ # # ~#~#~#~#~#~#~#~#~#~#~#~ #
for module_to_compile in l_module: for module_to_compile in l_module:
if module_to_compile.rel == "dummy": if module_to_compile.rel == "dummy":
continue continue
@ -884,6 +894,21 @@ if __name__ == "__main__":
# S a v e s # # S a v e s #
# ~#~#~#~#~ # # ~#~#~#~#~ #
with open(ROOT_BUILD_NINJA_EXP, "w+") as f: with open(ROOT_BUILD_NINJA_EXP_tmp, "w+") as f:
f.write(header) f.write(header)
f.write("\n".join(l_string)) f.write("\n".join(l_string))
with open(ROOT_BUILD_NINJA_EXP_tmp, "r") as f:
a = f.read()
try:
with open(ROOT_BUILD_NINJA_EXP, "r") as f:
b = f.read()
except:
b = None
if a != b:
os.rename(ROOT_BUILD_NINJA_EXP_tmp, ROOT_BUILD_NINJA_EXP)
else:
os.remove(ROOT_BUILD_NINJA_EXP_tmp)

View File

@ -398,7 +398,7 @@ def create_ezfio_stuff(dict_ezfio_cfg, config_or_default="config"):
try: try:
(begin, end) = list(map(str.strip, dim.split(":"))) (begin, end) = list(map(str.strip, dim.split(":")))
except ValueError: except ValueError:
a_size_raw.append(dim) a_size_raw.append(dim.strip())
else: else:
if begin[0] == '-': if begin[0] == '-':
a_size_raw.append("{0}+{1}+1".format(end, begin[1:])) a_size_raw.append("{0}+{1}+1".format(end, begin[1:]))

View File

@ -82,6 +82,8 @@ END_PROVIDER
mpi_correspondance = {"integer": "MPI_INTEGER", mpi_correspondance = {"integer": "MPI_INTEGER",
"integer*8": "MPI_INTEGER8", "integer*8": "MPI_INTEGER8",
"character*(32)": "MPI_CHARACTER", "character*(32)": "MPI_CHARACTER",
"character*(64)": "MPI_CHARACTER",
"character*(256)": "MPI_CHARACTER",
"logical": "MPI_LOGICAL", "logical": "MPI_LOGICAL",
"double precision": "MPI_DOUBLE_PRECISION"} "double precision": "MPI_DOUBLE_PRECISION"}

View File

@ -98,3 +98,11 @@ type: Threshold
doc: Remove linear dependencies when the eigenvalues of the overlap matrix are below this value doc: Remove linear dependencies when the eigenvalues of the overlap matrix are below this value
interface: ezfio,provider,ocaml interface: ezfio,provider,ocaml
default: 1.e-6 default: 1.e-6
[ao_one_e_integrals_threshold]
type: Threshold
doc: If | (p|q) | < `ao_one_e_integrals_threshold` then (p|q) is zero
interface: ezfio,provider,ocaml
default: 1.e-15
ezfio_name: threshold_ao

View File

@ -137,6 +137,7 @@ END_PROVIDER
deallocate(S) deallocate(S)
endif endif
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [double precision, ao_ortho_canonical_overlap, (ao_ortho_canonical_num,ao_ortho_canonical_num)] BEGIN_PROVIDER [double precision, ao_ortho_canonical_overlap, (ao_ortho_canonical_num,ao_ortho_canonical_num)]

View File

@ -4,7 +4,7 @@ logical function ao_one_e_integral_zero(i,k)
ao_one_e_integral_zero = .False. ao_one_e_integral_zero = .False.
if (.not.((io_ao_integrals_overlap/='None').or.is_periodic)) then if (.not.((io_ao_integrals_overlap/='None').or.is_periodic)) then
if (ao_overlap_abs(i,k) < ao_integrals_threshold) then if (ao_overlap_abs(i,k) < ao_one_e_integrals_threshold) then
ao_one_e_integral_zero = .True. ao_one_e_integral_zero = .True.
return return
endif endif

View File

@ -116,7 +116,7 @@ subroutine ao_two_e_integrals_in_map_slave(thread,iproc)
exit exit
endif endif
if (task_id == 0) exit if (task_id == 0) exit
read(task,*) j, l call sscanf_dd(task, j, l)
integer, external :: task_done_to_taskserver integer, external :: task_done_to_taskserver
call compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value) call compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value)
if (task_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id) == -1) then if (task_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id) == -1) then

View File

@ -698,81 +698,3 @@ subroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values)
end end
!subroutine dump_ao_integrals(filename)
! use map_module
! implicit none
! BEGIN_DOC
! ! Save to disk the |AO| integrals
! END_DOC
! character*(*), intent(in) :: filename
! integer(cache_key_kind), pointer :: key(:)
! real(integral_kind), pointer :: val(:)
! integer*8 :: i,j, n
! if (.not.mpi_master) then
! return
! endif
! call ezfio_set_work_empty(.False.)
! open(unit=66,file=filename,FORM='unformatted')
! write(66) integral_kind, key_kind
! write(66) ao_integrals_map%sorted, ao_integrals_map%map_size, &
! ao_integrals_map%n_elements
! do i=0_8,ao_integrals_map%map_size
! write(66) ao_integrals_map%map(i)%sorted, ao_integrals_map%map(i)%map_size,&
! ao_integrals_map%map(i)%n_elements
! enddo
! do i=0_8,ao_integrals_map%map_size
! key => ao_integrals_map%map(i)%key
! val => ao_integrals_map%map(i)%value
! n = ao_integrals_map%map(i)%n_elements
! write(66) (key(j), j=1,n), (val(j), j=1,n)
! enddo
! close(66)
!
!end
!integer function load_ao_integrals(filename)
! implicit none
! BEGIN_DOC
! ! Read from disk the |AO| integrals
! END_DOC
! character*(*), intent(in) :: filename
! integer*8 :: i
! integer(cache_key_kind), pointer :: key(:)
! real(integral_kind), pointer :: val(:)
! integer :: iknd, kknd
! integer*8 :: n, j
! load_ao_integrals = 1
! open(unit=66,file=filename,FORM='unformatted',STATUS='UNKNOWN')
! read(66,err=98,end=98) iknd, kknd
! if (iknd /= integral_kind) then
! print *, 'Wrong integrals kind in file :', iknd
! stop 1
! endif
! if (kknd /= key_kind) then
! print *, 'Wrong key kind in file :', kknd
! stop 1
! endif
! read(66,err=98,end=98) ao_integrals_map%sorted, ao_integrals_map%map_size,&
! ao_integrals_map%n_elements
! do i=0_8, ao_integrals_map%map_size
! read(66,err=99,end=99) ao_integrals_map%map(i)%sorted, &
! ao_integrals_map%map(i)%map_size, ao_integrals_map%map(i)%n_elements
! call cache_map_reallocate(ao_integrals_map%map(i),ao_integrals_map%map(i)%map_size)
! enddo
! do i=0_8, ao_integrals_map%map_size
! key => ao_integrals_map%map(i)%key
! val => ao_integrals_map%map(i)%value
! n = ao_integrals_map%map(i)%n_elements
! read(66,err=99,end=99) (key(j), j=1,n), (val(j), j=1,n)
! enddo
! call map_sort(ao_integrals_map)
! load_ao_integrals = 0
! return
! 99 continue
! call map_deinit(ao_integrals_map)
! 98 continue
! stop 'Problem reading ao_integrals_map file in work/'
!
!end
!

View File

@ -1162,17 +1162,17 @@ subroutine compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value)
! Parallel client for AO integrals ! Parallel client for AO integrals
END_DOC END_DOC
integer, intent(in) :: j,l integer, intent(in) :: j,l
integer,intent(out) :: n_integrals integer,intent(out) :: n_integrals
integer(key_kind),intent(out) :: buffer_i(ao_num*ao_num) integer(key_kind),intent(out) :: buffer_i(ao_num*ao_num)
real(integral_kind),intent(out) :: buffer_value(ao_num*ao_num) real(integral_kind),intent(out) :: buffer_value(ao_num*ao_num)
logical, external :: ao_two_e_integral_zero
integer :: i,k integer :: i,k
double precision :: ao_two_e_integral,cpu_1,cpu_2, wall_1, wall_2 double precision :: ao_two_e_integral,cpu_1,cpu_2, wall_1, wall_2
double precision :: integral, wall_0 double precision :: integral, wall_0
double precision :: thr double precision :: thr
integer :: kk, m, j1, i1 integer :: kk, m, j1, i1
logical, external :: ao_two_e_integral_zero
thr = ao_integrals_threshold thr = ao_integrals_threshold

View File

@ -125,6 +125,41 @@ subroutine bitstring_to_str( output, string, Nint )
output(ibuf:ibuf) = '|' output(ibuf:ibuf) = '|'
end end
subroutine configuration_to_str( output, string, Nint )
use bitmasks
implicit none
BEGIN_DOC
! Transform the bit string of a configuration to a string for printing
END_DOC
character*(*), intent(out) :: output
integer, intent(in) :: Nint
integer(bit_kind), intent(in) :: string(Nint,2)
integer :: i, j, ibuf
integer(bit_kind) :: itemp
ibuf = 1
output = ''
output(ibuf:ibuf) = '|'
ibuf = ibuf+1
do i=1,Nint
itemp = 1_bit_kind
do j=1,bit_kind_size
if (iand(itemp,string(i,2)) == itemp) then
output(ibuf:ibuf) = '2'
else if (iand(itemp,string(i,1)) == itemp) then
output(ibuf:ibuf) = '1'
else
output(ibuf:ibuf) = '0'
endif
ibuf = ibuf+1
itemp = shiftl(itemp,1)
enddo
enddo
output(ibuf:ibuf) = '|'
end
subroutine bitstring_to_hexa( output, string, Nint ) subroutine bitstring_to_hexa( output, string, Nint )
use bitmasks use bitmasks
@ -166,6 +201,25 @@ subroutine debug_det(string,Nint)
end end
subroutine debug_cfg(string,Nint)
use bitmasks
implicit none
BEGIN_DOC
! Subroutine to print the content of a determinant in '+-' notation and
! hexadecimal representation.
END_DOC
integer, intent(in) :: Nint
integer(bit_kind), intent(in) :: string(Nint,2)
character*(2048) :: output(2)
call bitstring_to_hexa( output(1), string(1,1), Nint )
call bitstring_to_hexa( output(2), string(1,2), Nint )
print *, trim(output(1)) , '|', trim(output(2))
call configuration_to_str( output(1), string, Nint )
print *, trim(output(1))
end
subroutine print_det(string,Nint) subroutine print_det(string,Nint)
use bitmasks use bitmasks
implicit none implicit none

View File

@ -3,3 +3,40 @@ type: logical
doc: If true, computes the one- and two-body rdms with perturbation theory doc: If true, computes the one- and two-body rdms with perturbation theory
interface: ezfio,provider,ocaml interface: ezfio,provider,ocaml
default: False default: False
[save_wf_after_selection]
type: logical
doc: If true, saves the wave function after the selection, before the diagonalization
interface: ezfio,provider,ocaml
default: False
[seniority_max]
type: integer
doc: Maximum number of allowed open shells. Using -1 selects all determinants
interface: ezfio,ocaml,provider
default: -1
[excitation_ref]
type: integer
doc: 1: Hartree-Fock determinant, 2:All determinants of the dominant configuration
interface: ezfio,ocaml,provider
default: 1
[excitation_max]
type: integer
doc: Maximum number of excitation with respect to the Hartree-Fock determinant. Using -1 selects all determinants
interface: ezfio,ocaml,provider
default: -1
[excitation_alpha_max]
type: integer
doc: Maximum number of excitation for alpha determinants with respect to the Hartree-Fock determinant. Using -1 selects all determinants
interface: ezfio,ocaml,provider
default: -1
[excitation_beta_max]
type: integer
doc: Maximum number of excitation for beta determinants with respect to the Hartree-Fock determinant. Using -1 selects all determinants
interface: ezfio,ocaml,provider
default: -1

View File

@ -4,3 +4,4 @@ mpi
davidson_undressed davidson_undressed
iterations iterations
two_body_rdm two_body_rdm
csf

View File

@ -102,7 +102,7 @@ subroutine run_cipsi
call write_double(6,correlation_energy_ratio, 'Correlation ratio') call write_double(6,correlation_energy_ratio, 'Correlation ratio')
call print_summary(psi_energy_with_nucl_rep, & call print_summary(psi_energy_with_nucl_rep, &
pt2_data, pt2_data_err, N_det,N_occ_pattern,N_states,psi_s2) pt2_data, pt2_data_err, N_det,N_configuration,N_states,psi_s2)
call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2) call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2)
@ -114,7 +114,10 @@ subroutine run_cipsi
! Add selected determinants ! Add selected determinants
call copy_H_apply_buffer_to_wf() call copy_H_apply_buffer_to_wf()
! call save_wavefunction
if (save_wf_after_selection) then
call save_wavefunction
endif
PROVIDE psi_coef PROVIDE psi_coef
PROVIDE psi_det PROVIDE psi_det
@ -144,13 +147,13 @@ subroutine run_cipsi
SOFT_TOUCH threshold_generators SOFT_TOUCH threshold_generators
endif endif
print *, 'N_det = ', N_det print *, 'N_det = ', N_det
print *, 'N_sop = ', N_occ_pattern print *, 'N_cfg = ', N_configuration
print *, 'N_states = ', N_states print *, 'N_states = ', N_states
print*, 'correlation_ratio = ', correlation_energy_ratio print*, 'correlation_ratio = ', correlation_energy_ratio
call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2) call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2)
call print_summary(psi_energy_with_nucl_rep(1:N_states), & call print_summary(psi_energy_with_nucl_rep(1:N_states), &
pt2_data, pt2_data_err, N_det,N_occ_pattern,N_states,psi_s2) pt2_data, pt2_data_err, N_det,N_configuration,N_states,psi_s2)
call save_iterations(psi_energy_with_nucl_rep(1:N_states),pt2_data % rpt2,N_det) call save_iterations(psi_energy_with_nucl_rep(1:N_states),pt2_data % rpt2,N_det)
call print_extrapolated_energy() call print_extrapolated_energy()
endif endif

View File

@ -22,7 +22,7 @@ BEGIN_PROVIDER [ double precision, pt2_E0_denominator, (N_states) ]
enddo enddo
else if (h0_type == "Barycentric") then else if (h0_type == "Barycentric") then
pt2_E0_denominator(1:N_states) = barycentric_electronic_energy(1:N_states) pt2_E0_denominator(1:N_states) = barycentric_electronic_energy(1:N_states)
else if (h0_type == "SOP") then else if (h0_type == "CFG") then
pt2_E0_denominator(1:N_states) = psi_energy(1:N_states) pt2_E0_denominator(1:N_states) = psi_energy(1:N_states)
else else
print *, h0_type, ' not implemented' print *, h0_type, ' not implemented'

View File

@ -71,9 +71,9 @@ subroutine fill_buffer_double_rdm(i_generator, sp, h1, h2, bannedOrb, banned, fo
call apply_holes(psi_det_generators(1,1,i_generator), s1, h1, s2, h2, mask, ok, N_int) call apply_holes(psi_det_generators(1,1,i_generator), s1, h1, s2, h2, mask, ok, N_int)
E_shift = 0.d0 E_shift = 0.d0
if (h0_type == 'SOP') then if (h0_type == 'CFG') then
j = det_to_occ_pattern(i_generator) j = det_to_configuration(i_generator)
E_shift = psi_det_Hii(i_generator) - psi_occ_pattern_Hii(j) E_shift = psi_det_Hii(i_generator) - psi_configuration_Hii(j)
endif endif
do p1=1,mo_num do p1=1,mo_num

View File

@ -15,7 +15,7 @@ END_PROVIDER
pt2_n_tasks_max = min(pt2_n_tasks_max,1+N_det_generators/10000) pt2_n_tasks_max = min(pt2_n_tasks_max,1+N_det_generators/10000)
call write_int(6,pt2_n_tasks_max,'pt2_n_tasks_max') call write_int(6,pt2_n_tasks_max,'pt2_n_tasks_max')
pt2_F(:) = int(sqrt(float(pt2_n_tasks_max))) pt2_F(:) = max(int(sqrt(float(pt2_n_tasks_max))),1)
do i=1,pt2_n_0(1+pt2_N_teeth/4) do i=1,pt2_n_0(1+pt2_N_teeth/4)
pt2_F(i) = pt2_n_tasks_max*pt2_min_parallel_tasks pt2_F(i) = pt2_n_tasks_max*pt2_min_parallel_tasks
enddo enddo
@ -26,7 +26,6 @@ END_PROVIDER
pt2_F(i) = 1 pt2_F(i) = 1
enddo enddo
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ integer, pt2_N_teeth ] BEGIN_PROVIDER [ integer, pt2_N_teeth ]
@ -134,8 +133,8 @@ subroutine ZMQ_pt2(E, pt2_data, pt2_data_err, relative_error, N_in)
PROVIDE psi_bilinear_matrix_transp_order psi_selectors_coef_transp psi_det_sorted PROVIDE psi_bilinear_matrix_transp_order psi_selectors_coef_transp psi_det_sorted
PROVIDE psi_det_hii selection_weight pseudo_sym PROVIDE psi_det_hii selection_weight pseudo_sym
if (h0_type == 'SOP') then if (h0_type == 'CFG') then
PROVIDE psi_occ_pattern_hii det_to_occ_pattern PROVIDE psi_configuration_hii det_to_configuration
endif endif
if (N_det <= max(4,N_states) .or. pt2_N_teeth < 2) then if (N_det <= max(4,N_states) .or. pt2_N_teeth < 2) then
@ -187,7 +186,7 @@ subroutine ZMQ_pt2(E, pt2_data, pt2_data_err, relative_error, N_in)
if (zmq_put_ivector(zmq_to_qp_run_socket,1,'pt2_stoch_istate',pt2_stoch_istate,1) == -1) then if (zmq_put_ivector(zmq_to_qp_run_socket,1,'pt2_stoch_istate',pt2_stoch_istate,1) == -1) then
stop 'Unable to put pt2_stoch_istate on ZMQ server' stop 'Unable to put pt2_stoch_istate on ZMQ server'
endif endif
if (zmq_put_dvector(zmq_to_qp_run_socket,1,'threshold_generators',threshold_generators,1) == -1) then if (zmq_put_dvector(zmq_to_qp_run_socket,1,'threshold_generators',(/threshold_generators/),1) == -1) then
stop 'Unable to put threshold_generators on ZMQ server' stop 'Unable to put threshold_generators on ZMQ server'
endif endif
@ -352,9 +351,9 @@ subroutine ZMQ_pt2(E, pt2_data, pt2_data_err, relative_error, N_in)
state_average_weight(:) = state_average_weight_save(:) state_average_weight(:) = state_average_weight_save(:)
TOUCH state_average_weight TOUCH state_average_weight
call update_pt2_and_variance_weights(pt2_data, N_states)
endif endif
call update_pt2_and_variance_weights(pt2_data, N_states)
end subroutine end subroutine

View File

@ -103,7 +103,7 @@ subroutine run_pt2_slave_small(thread,iproc,energy)
if (n_tasks == 0) exit if (n_tasks == 0) exit
do k=1,n_tasks do k=1,n_tasks
read (task(k),*) subset(k), i_generator(k), N call sscanf_ddd(task(k), subset(k), i_generator(k), N)
enddo enddo
if (b%N == 0) then if (b%N == 0) then
! Only first time ! Only first time
@ -183,9 +183,9 @@ subroutine run_pt2_slave_large(thread,iproc,energy)
type(selection_buffer) :: b type(selection_buffer) :: b
logical :: done, buffer_ready logical :: done, buffer_ready
type(pt2_type) :: pt2_data(1) type(pt2_type) :: pt2_data
integer :: n_tasks, k, N integer :: n_tasks, k, N
integer :: i_generator(1), subset integer :: i_generator, subset
integer :: bsize ! Size of selection buffers integer :: bsize ! Size of selection buffers
logical :: sending logical :: sending
@ -220,7 +220,11 @@ subroutine run_pt2_slave_large(thread,iproc,energy)
endif endif
if (n_tasks == 0) exit if (n_tasks == 0) exit
read (task,*) subset, i_generator(1), N call sscanf_ddd(task, subset, i_generator, N)
if( pt2_F(i_generator) <= 0 .or. pt2_F(i_generator) > N_det ) then
print *, irp_here
stop 'bug in selection'
endif
if (b%N == 0) then if (b%N == 0) then
! Only first time ! Only first time
bsize = min(N, (elec_alpha_num * (mo_num-elec_alpha_num))**2) bsize = min(N, (elec_alpha_num * (mo_num-elec_alpha_num))**2)
@ -232,15 +236,10 @@ subroutine run_pt2_slave_large(thread,iproc,energy)
double precision :: time0, time1 double precision :: time0, time1
call wall_time(time0) call wall_time(time0)
call pt2_alloc(pt2_data(1),N_states) call pt2_alloc(pt2_data,N_states)
b%cur = 0 b%cur = 0
!double precision :: time2 call select_connected(i_generator,energy,pt2_data,b,subset,pt2_F(i_generator))
!call wall_time(time2)
call select_connected(i_generator(1),energy,pt2_data(1),b,subset,pt2_F(i_generator(1)))
!call wall_time(time1)
!print *, i_generator(1), time1-time2, n_tasks, pt2_F(i_generator(1))
call wall_time(time1) call wall_time(time1)
!print *, '-->', i_generator(1), time1-time0, n_tasks
integer, external :: tasks_done_to_taskserver integer, external :: tasks_done_to_taskserver
if (tasks_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id,n_tasks) == -1) then if (tasks_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id,n_tasks) == -1) then
@ -255,14 +254,14 @@ subroutine run_pt2_slave_large(thread,iproc,energy)
call omp_unset_lock(global_selection_buffer_lock) call omp_unset_lock(global_selection_buffer_lock)
if ( iproc == 1 ) then if ( iproc == 1 ) then
call omp_set_lock(global_selection_buffer_lock) call omp_set_lock(global_selection_buffer_lock)
call push_pt2_results_async_send(zmq_socket_push, i_generator, pt2_data, global_selection_buffer, task_id, n_tasks,sending) call push_pt2_results_async_send(zmq_socket_push, (/i_generator/), (/pt2_data/), global_selection_buffer, (/task_id/), 1,sending)
global_selection_buffer%cur = 0 global_selection_buffer%cur = 0
call omp_unset_lock(global_selection_buffer_lock) call omp_unset_lock(global_selection_buffer_lock)
else else
call push_pt2_results_async_send(zmq_socket_push, i_generator, pt2_data, b, task_id, n_tasks,sending) call push_pt2_results_async_send(zmq_socket_push, (/i_generator/), (/pt2_data/), b, (/task_id/), 1,sending)
endif endif
call pt2_dealloc(pt2_data(1)) call pt2_dealloc(pt2_data)
end do end do
call push_pt2_results_async_recv(zmq_socket_push,b%mini,sending) call push_pt2_results_async_recv(zmq_socket_push,b%mini,sending)

View File

@ -52,7 +52,7 @@ subroutine run_selection_slave(thread,iproc,energy)
ctask = ctask - 1 ctask = ctask - 1
else else
integer :: i_generator, N, subset, bsize integer :: i_generator, N, subset, bsize
read(task,*) subset, i_generator, N call sscanf_ddd(task, subset, i_generator, N)
if(buf%N == 0) then if(buf%N == 0) then
! Only first time ! Only first time
call create_selection_buffer(N, N*2, buf) call create_selection_buffer(N, N*2, buf)

View File

@ -1,148 +1,5 @@
use bitmasks use bitmasks
BEGIN_PROVIDER [ double precision, pt2_match_weight, (N_states) ]
implicit none
BEGIN_DOC
! Weights adjusted along the selection to make the PT2 contributions
! of each state coincide.
END_DOC
pt2_match_weight(:) = 1.d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, variance_match_weight, (N_states) ]
implicit none
BEGIN_DOC
! Weights adjusted along the selection to make the variances
! of each state coincide.
END_DOC
variance_match_weight(:) = 1.d0
END_PROVIDER
subroutine update_pt2_and_variance_weights(pt2_data, N_st)
implicit none
use selection_types
BEGIN_DOC
! Updates the PT2- and Variance- matching weights.
END_DOC
integer, intent(in) :: N_st
type(pt2_type), intent(in) :: pt2_data
double precision :: pt2(N_st)
double precision :: variance(N_st)
double precision :: avg, element, dt, x
integer :: k
integer, save :: i_iter=0
integer, parameter :: i_itermax = 1
double precision, allocatable, save :: memo_variance(:,:), memo_pt2(:,:)
pt2(:) = pt2_data % pt2(:)
variance(:) = pt2_data % variance(:)
if (i_iter == 0) then
allocate(memo_variance(N_st,i_itermax), memo_pt2(N_st,i_itermax))
memo_pt2(:,:) = 1.d0
memo_variance(:,:) = 1.d0
endif
i_iter = i_iter+1
if (i_iter > i_itermax) then
i_iter = 1
endif
dt = 2.0d0
avg = sum(pt2(1:N_st)) / dble(N_st) - 1.d-32 ! Avoid future division by zero
do k=1,N_st
element = exp(dt*(pt2(k)/avg -1.d0))
element = min(2.0d0 , element)
element = max(0.5d0 , element)
memo_pt2(k,i_iter) = element
pt2_match_weight(k) *= product(memo_pt2(k,:))
enddo
avg = sum(variance(1:N_st)) / dble(N_st) + 1.d-32 ! Avoid future division by zero
do k=1,N_st
element = exp(dt*(variance(k)/avg -1.d0))
element = min(2.0d0 , element)
element = max(0.5d0 , element)
memo_variance(k,i_iter) = element
variance_match_weight(k) *= product(memo_variance(k,:))
enddo
if (N_det < 100) then
! For tiny wave functions, weights are 1.d0
pt2_match_weight(:) = 1.d0
variance_match_weight(:) = 1.d0
endif
threshold_davidson_pt2 = min(1.d-6, &
max(threshold_davidson, 1.e-1 * PT2_relative_error * minval(abs(pt2(1:N_states)))) )
SOFT_TOUCH pt2_match_weight variance_match_weight threshold_davidson_pt2
end
BEGIN_PROVIDER [ double precision, selection_weight, (N_states) ]
implicit none
BEGIN_DOC
! Weights used in the selection criterion
END_DOC
select case (weight_selection)
case (0)
print *, 'Using input weights in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * state_average_weight(1:N_states)
case (1)
print *, 'Using 1/c_max^2 weight in selection'
selection_weight(1:N_states) = c0_weight(1:N_states)
case (2)
print *, 'Using pt2-matching weight in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * pt2_match_weight(1:N_states)
print *, '# PT2 weight ', real(pt2_match_weight(:),4)
case (3)
print *, 'Using variance-matching weight in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * variance_match_weight(1:N_states)
print *, '# var weight ', real(variance_match_weight(:),4)
case (4)
print *, 'Using variance- and pt2-matching weights in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * sqrt(variance_match_weight(1:N_states) * pt2_match_weight(1:N_states))
print *, '# PT2 weight ', real(pt2_match_weight(:),4)
print *, '# var weight ', real(variance_match_weight(:),4)
case (5)
print *, 'Using variance-matching weight in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * variance_match_weight(1:N_states)
print *, '# var weight ', real(variance_match_weight(:),4)
case (6)
print *, 'Using CI coefficient-based selection'
selection_weight(1:N_states) = c0_weight(1:N_states)
case (7)
print *, 'Input weights multiplied by variance- and pt2-matching'
selection_weight(1:N_states) = c0_weight(1:N_states) * sqrt(variance_match_weight(1:N_states) * pt2_match_weight(1:N_states)) * state_average_weight(1:N_states)
print *, '# PT2 weight ', real(pt2_match_weight(:),4)
print *, '# var weight ', real(variance_match_weight(:),4)
case (8)
print *, 'Input weights multiplied by pt2-matching'
selection_weight(1:N_states) = c0_weight(1:N_states) * pt2_match_weight(1:N_states) * state_average_weight(1:N_states)
print *, '# PT2 weight ', real(pt2_match_weight(:),4)
case (9)
print *, 'Input weights multiplied by variance-matching'
selection_weight(1:N_states) = c0_weight(1:N_states) * variance_match_weight(1:N_states) * state_average_weight(1:N_states)
print *, '# var weight ', real(variance_match_weight(:),4)
end select
print *, '# Total weight ', real(selection_weight(:),4)
END_PROVIDER
subroutine get_mask_phase(det1, pm, Nint) subroutine get_mask_phase(det1, pm, Nint)
use bitmasks use bitmasks
implicit none implicit none
@ -151,27 +8,56 @@ subroutine get_mask_phase(det1, pm, Nint)
integer(bit_kind), intent(out) :: pm(Nint,2) integer(bit_kind), intent(out) :: pm(Nint,2)
integer(bit_kind) :: tmp1, tmp2 integer(bit_kind) :: tmp1, tmp2
integer :: i integer :: i
pm(1:Nint,1:2) = det1(1:Nint,1:2)
tmp1 = 0_8 tmp1 = 0_8
tmp2 = 0_8 tmp2 = 0_8
do i=1,Nint select case (Nint)
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 1))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 1)) BEGIN_TEMPLATE
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 2)) case ($Nint)
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 2)) do i=1,$Nint
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 4)) pm(i,1) = ieor(det1(i,1), shiftl(det1(i,1), 1))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 4)) pm(i,2) = ieor(det1(i,2), shiftl(det1(i,2), 1))
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 8)) pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 2))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 8)) pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 2))
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 16)) pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 4))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 16)) pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 4))
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 32)) pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 8))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 32)) pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 8))
pm(i,1) = ieor(pm(i,1), tmp1) pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 16))
pm(i,2) = ieor(pm(i,2), tmp2) pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 16))
if(iand(popcnt(det1(i,1)), 1) == 1) tmp1 = not(tmp1) pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 32))
if(iand(popcnt(det1(i,2)), 1) == 1) tmp2 = not(tmp2) pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 32))
end do pm(i,1) = ieor(pm(i,1), tmp1)
pm(i,2) = ieor(pm(i,2), tmp2)
if(iand(popcnt(det1(i,1)), 1) == 1) tmp1 = not(tmp1)
if(iand(popcnt(det1(i,2)), 1) == 1) tmp2 = not(tmp2)
end do
SUBST [ Nint ]
1;;
2;;
3;;
4;;
END_TEMPLATE
case default
do i=1,Nint
pm(i,1) = ieor(det1(i,1), shiftl(det1(i,1), 1))
pm(i,2) = ieor(det1(i,2), shiftl(det1(i,2), 1))
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 2))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 2))
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 4))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 4))
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 8))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 8))
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 16))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 16))
pm(i,1) = ieor(pm(i,1), shiftl(pm(i,1), 32))
pm(i,2) = ieor(pm(i,2), shiftl(pm(i,2), 32))
pm(i,1) = ieor(pm(i,1), tmp1)
pm(i,2) = ieor(pm(i,2), tmp2)
if(iand(popcnt(det1(i,1)), 1) == 1) tmp1 = not(tmp1)
if(iand(popcnt(det1(i,2)), 1) == 1) tmp2 = not(tmp2)
end do
end select
end subroutine end subroutine
@ -309,15 +195,18 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
integer :: l_a, nmax, idx integer :: l_a, nmax, idx
integer, allocatable :: indices(:), exc_degree(:), iorder(:) integer, allocatable :: indices(:), exc_degree(:), iorder(:)
double precision, parameter :: norm_thr = 1.d-16
allocate (indices(N_det), & allocate (indices(N_det), &
exc_degree(max(N_det_alpha_unique,N_det_beta_unique))) exc_degree(max(N_det_alpha_unique,N_det_beta_unique)))
! Pre-compute excitation degrees wrt alpha determinants
k=1 k=1
do i=1,N_det_alpha_unique do i=1,N_det_alpha_unique
call get_excitation_degree_spin(psi_det_alpha_unique(1,i), & call get_excitation_degree_spin(psi_det_alpha_unique(1,i), &
psi_det_generators(1,1,i_generator), exc_degree(i), N_int) psi_det_generators(1,1,i_generator), exc_degree(i), N_int)
enddo enddo
! Iterate on 0SD beta, and find alphas 0SDTQ such that exc_degree <= 4
do j=1,N_det_beta_unique do j=1,N_det_beta_unique
call get_excitation_degree_spin(psi_det_beta_unique(1,j), & call get_excitation_degree_spin(psi_det_beta_unique(1,j), &
psi_det_generators(1,2,i_generator), nt, N_int) psi_det_generators(1,2,i_generator), nt, N_int)
@ -326,7 +215,7 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
i = psi_bilinear_matrix_rows(l_a) i = psi_bilinear_matrix_rows(l_a)
if (nt + exc_degree(i) <= 4) then if (nt + exc_degree(i) <= 4) then
idx = psi_det_sorted_order(psi_bilinear_matrix_order(l_a)) idx = psi_det_sorted_order(psi_bilinear_matrix_order(l_a))
if (psi_average_norm_contrib_sorted(idx) > 1.d-20) then if (psi_average_norm_contrib_sorted(idx) > norm_thr) then
indices(k) = idx indices(k) = idx
k=k+1 k=k+1
endif endif
@ -334,11 +223,14 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
enddo enddo
enddo enddo
! Pre-compute excitation degrees wrt beta determinants
do i=1,N_det_beta_unique do i=1,N_det_beta_unique
call get_excitation_degree_spin(psi_det_beta_unique(1,i), & call get_excitation_degree_spin(psi_det_beta_unique(1,i), &
psi_det_generators(1,2,i_generator), exc_degree(i), N_int) psi_det_generators(1,2,i_generator), exc_degree(i), N_int)
enddo enddo
! Iterate on 0S alpha, and find betas TQ such that exc_degree <= 4
! Remove also contributions < 1.d-20)
do j=1,N_det_alpha_unique do j=1,N_det_alpha_unique
call get_excitation_degree_spin(psi_det_alpha_unique(1,j), & call get_excitation_degree_spin(psi_det_alpha_unique(1,j), &
psi_det_generators(1,1,i_generator), nt, N_int) psi_det_generators(1,1,i_generator), nt, N_int)
@ -350,7 +242,7 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
idx = psi_det_sorted_order( & idx = psi_det_sorted_order( &
psi_bilinear_matrix_order( & psi_bilinear_matrix_order( &
psi_bilinear_matrix_transp_order(l_a))) psi_bilinear_matrix_transp_order(l_a)))
if (psi_average_norm_contrib_sorted(idx) > 1.d-20) then if (psi_average_norm_contrib_sorted(idx) > norm_thr) then
indices(k) = idx indices(k) = idx
k=k+1 k=k+1
endif endif
@ -587,11 +479,17 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
endif endif
do i=1,fullinteresting(0) do i=1,fullinteresting(0)
fullminilist(1:N_int,1:2,i) = psi_det_sorted(1:N_int,1:2,fullinteresting(i)) do k=1,N_int
fullminilist(k,1,i) = psi_det_sorted(k,1,fullinteresting(i))
fullminilist(k,2,i) = psi_det_sorted(k,2,fullinteresting(i))
enddo
enddo enddo
do i=1,interesting(0) do i=1,interesting(0)
minilist(1:N_int,1:2,i) = psi_det_sorted(1:N_int,1:2,interesting(i)) do k=1,N_int
minilist(k,1,i) = psi_det_sorted(k,1,interesting(i))
minilist(k,2,i) = psi_det_sorted(k,2,interesting(i))
enddo
enddo enddo
do s2=s1,2 do s2=s1,2
@ -678,12 +576,8 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
double precision :: delta_E, val, Hii, w, tmp, alpha_h_psi double precision :: delta_E, val, Hii, w, tmp, alpha_h_psi
double precision, external :: diag_H_mat_elem_fock double precision, external :: diag_H_mat_elem_fock
double precision :: E_shift double precision :: E_shift
logical, external :: detEq
double precision, allocatable :: values(:)
integer, allocatable :: keys(:,:)
integer :: nkeys
double precision :: s_weight(N_states,N_states) double precision :: s_weight(N_states,N_states)
PROVIDE dominant_dets_of_cfgs N_dominant_dets_of_cfgs
do jstate=1,N_states do jstate=1,N_states
do istate=1,N_states do istate=1,N_states
s_weight(istate,jstate) = dsqrt(selection_weight(istate)*selection_weight(jstate)) s_weight(istate,jstate) = dsqrt(selection_weight(istate)*selection_weight(jstate))
@ -700,9 +594,9 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
call apply_holes(psi_det_generators(1,1,i_generator), s1, h1, s2, h2, mask, ok, N_int) call apply_holes(psi_det_generators(1,1,i_generator), s1, h1, s2, h2, mask, ok, N_int)
E_shift = 0.d0 E_shift = 0.d0
if (h0_type == 'SOP') then if (h0_type == 'CFG') then
j = det_to_occ_pattern(i_generator) j = det_to_configuration(i_generator)
E_shift = psi_det_Hii(i_generator) - psi_occ_pattern_Hii(j) E_shift = psi_det_Hii(i_generator) - psi_configuration_Hii(j)
endif endif
do p1=1,mo_num do p1=1,mo_num
@ -735,6 +629,12 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
if(bannedOrb(p2, s2)) cycle if(bannedOrb(p2, s2)) cycle
if(banned(p1,p2)) cycle if(banned(p1,p2)) cycle
if(pseudo_sym)then
if(dabs(mat(1, p1, p2)).lt.thresh_sym)then
w = 0.d0
endif
endif
val = maxval(abs(mat(1:N_states, p1, p2))) val = maxval(abs(mat(1:N_states, p1, p2)))
if( val == 0d0) cycle if( val == 0d0) cycle
call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int) call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int)
@ -761,14 +661,67 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
if (.not.is_a_1h1p(det)) cycle if (.not.is_a_1h1p(det)) cycle
endif endif
if (seniority_max >= 0) then
integer :: s
s = 0
do k=1,N_int
s = s + popcnt(ieor(det(k,1),det(k,2)))
enddo
if (s > seniority_max) cycle
endif
integer :: degree
logical :: do_cycle
if (excitation_max >= 0) then
do_cycle = .True.
if (excitation_ref == 1) then
call get_excitation_degree(HF_bitmask,det(1,1),degree,N_int)
do_cycle = do_cycle .and. (degree > excitation_max)
else if (excitation_ref == 2) then
do k=1,N_dominant_dets_of_cfgs
call get_excitation_degree(dominant_dets_of_cfgs(1,1,k),det(1,1),degree,N_int)
do_cycle = do_cycle .and. (degree > excitation_max)
enddo
endif
if (do_cycle) cycle
endif
if (excitation_alpha_max >= 0) then
do_cycle = .True.
if (excitation_ref == 1) then
call get_excitation_degree_spin(HF_bitmask,det(1,1),degree,N_int)
do_cycle = do_cycle .and. (degree > excitation_max)
else if (excitation_ref == 2) then
do k=1,N_dominant_dets_of_cfgs
call get_excitation_degree_spin(dominant_dets_of_cfgs(1,1,k),det(1,1),degree,N_int)
do_cycle = do_cycle .and. (degree > excitation_alpha_max)
enddo
endif
if (do_cycle) cycle
endif
if (excitation_beta_max >= 0) then
do_cycle = .True.
if (excitation_ref == 1) then
call get_excitation_degree_spin(HF_bitmask,det(1,2),degree,N_int)
do_cycle = do_cycle .and. (degree > excitation_max)
else if (excitation_ref == 2) then
do k=1,N_dominant_dets_of_cfgs
call get_excitation_degree(dominant_dets_of_cfgs(1,2,k),det(1,2),degree,N_int)
do_cycle = do_cycle .and. (degree > excitation_beta_max)
enddo
endif
if (do_cycle) cycle
endif
Hii = diag_H_mat_elem_fock(psi_det_generators(1,1,i_generator),det,fock_diag_tmp,N_int) Hii = diag_H_mat_elem_fock(psi_det_generators(1,1,i_generator),det,fock_diag_tmp,N_int)
w = 0d0 w = 0d0
! integer(bit_kind) :: occ(N_int,2), n
! call occ_pattern_of_det(det,occ,N_int)
! call occ_pattern_to_dets_size(occ,n,elec_alpha_num,N_int)
e_pert = 0.d0 e_pert = 0.d0
coef = 0.d0 coef = 0.d0
logical :: do_diag logical :: do_diag
@ -792,11 +745,11 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
endif endif
enddo enddo
do_diag = sum(dabs(coef)) > 0.001d0 do_diag = sum(dabs(coef)) > 0.001d0 .and. N_states > 1
double precision :: eigvalues(N_states+1) double precision :: eigvalues(N_states+1)
double precision :: work(1+6*(N_states+1)+2*(N_states+1)**2) double precision :: work(1+6*(N_states+1)+2*(N_states+1)**2)
integer :: iwork(3+5*(N_states+1)), info, k ,n integer :: iwork(3+5*(N_states+1)), info, k
if (do_diag) then if (do_diag) then
double precision :: pt2_matrix(N_states+1,N_states+1) double precision :: pt2_matrix(N_states+1,N_states+1)
@ -822,6 +775,7 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
endif endif
! ! Gram-Schmidt using input overlap matrix ! ! Gram-Schmidt using input overlap matrix
! do istate=1,N_states ! do istate=1,N_states
! do jstate=1,istate-1 ! do jstate=1,istate-1
@ -834,12 +788,9 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
alpha_h_psi = mat(istate, p1, p2) alpha_h_psi = mat(istate, p1, p2)
do jstate=1,N_states pt2_data % overlap(:,istate) = pt2_data % overlap(:,istate) + coef(:) * coef(istate)
pt2_data % overlap(jstate,istate) += coef(jstate) * coef(istate) pt2_data % variance(istate) = pt2_data % variance(istate) + alpha_h_psi * alpha_h_psi
enddo pt2_data % pt2(istate) = pt2_data % pt2(istate) + e_pert(istate)
pt2_data % variance(istate) += alpha_h_psi * alpha_h_psi
pt2_data % pt2(istate) += e_pert(istate)
!!!DEBUG !!!DEBUG
! delta_E = E0(istate) - Hii + E_shift ! delta_E = E0(istate) - Hii + E_shift
@ -864,42 +815,44 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
case(5) case(5)
! Variance selection ! Variance selection
! w = w - alpha_h_psi * alpha_h_psi * s_weight(istate,istate) if (h0_type == 'CFG') then
w = min(w, - alpha_h_psi * alpha_h_psi * s_weight(istate,istate)) w = min(w, - alpha_h_psi * alpha_h_psi * s_weight(istate,istate)) &
! do jstate=1,N_states / c0_weight(istate)
! if (istate == jstate) cycle else
! w = w + dabs(alpha_h_psi*mat(jstate,p1,p2)) * s_weight(istate,jstate) w = min(w, - alpha_h_psi * alpha_h_psi * s_weight(istate,istate))
! enddo endif
case(6) case(6)
! w = w - coef(istate) * coef(istate) * s_weight(istate,istate) if (h0_type == 'CFG') then
w = min(w,- coef(istate) * coef(istate) * s_weight(istate,istate)) w = min(w,- coef(istate) * coef(istate) * s_weight(istate,istate)) &
! do jstate=1,N_states / c0_weight(istate)
! if (istate == jstate) cycle else
! w = w + dabs(coef(istate)*coef(jstate)) * s_weight(istate,jstate) w = min(w,- coef(istate) * coef(istate) * s_weight(istate,istate))
! enddo endif
case default case default
! Energy selection ! Energy selection
! w = w + e_pert(istate) * s_weight(istate,istate) if (h0_type == 'CFG') then
w = min(w, e_pert(istate) * s_weight(istate,istate)) w = min(w, e_pert(istate) * s_weight(istate,istate)) / c0_weight(istate)
! do jstate=1,N_states else
! if (istate == jstate) cycle w = min(w, e_pert(istate) * s_weight(istate,istate))
! w = w + dabs(X(istate)*X(jstate)) * s_weight(istate,jstate) endif
! enddo
end select end select
end do end do
if(pseudo_sym)then integer(bit_kind) :: occ(N_int,2), n
if(dabs(mat(1, p1, p2)).lt.thresh_sym)then if (h0_type == 'CFG') then
w = 0.d0 do k=1,N_int
endif occ(k,1) = ieor(det(k,1),det(k,2))
occ(k,2) = iand(det(k,1),det(k,2))
enddo
call configuration_to_dets_size(occ,n,elec_alpha_num,N_int)
n = max(n,1)
w *= dsqrt(dble(n))
endif endif
! w = dble(n) * w
if(w <= buf%mini) then if(w <= buf%mini) then
call add_to_selection_buffer(buf, det, w) call add_to_selection_buffer(buf, det, w)
end if end if
@ -1675,7 +1628,7 @@ subroutine get_d0_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
phase = get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) phase = get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int)
hij = mo_two_e_integral(p1, p2, h1, h2) * phase hij = mo_two_e_integral(p1, p2, h1, h2) * phase
end if end if
mat(:, p1, p2) += coefs(:) * hij mat(:, p1, p2) = mat(:, p1, p2) + coefs(:) * hij
end do end do
end do end do
else ! AA BB else ! AA BB
@ -1692,7 +1645,7 @@ subroutine get_d0_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
else else
hij = (mo_two_e_integral(p1, p2, puti, putj) - mo_two_e_integral(p2, p1, puti, putj))* get_phase_bi(phasemask, sp, sp, puti, p1 , putj, p2, N_int) hij = (mo_two_e_integral(p1, p2, puti, putj) - mo_two_e_integral(p2, p1, puti, putj))* get_phase_bi(phasemask, sp, sp, puti, p1 , putj, p2, N_int)
end if end if
mat(:, puti, putj) += coefs(:) * hij mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end do end do
end do end do
end if end if
@ -1751,18 +1704,18 @@ subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
do putj=1, hfix-1 do putj=1, hfix-1
if(lbanned(putj, ma) .or. banned(putj, puti,bant)) cycle if(lbanned(putj, ma) .or. banned(putj, puti,bant)) cycle
hij = (mo_two_e_integral(p1, p2, putj, hfix)-mo_two_e_integral(p2,p1,putj,hfix)) * get_phase_bi(phasemask, ma, ma, putj, p1, hfix, p2, N_int) hij = (mo_two_e_integral(p1, p2, putj, hfix)-mo_two_e_integral(p2,p1,putj,hfix)) * get_phase_bi(phasemask, ma, ma, putj, p1, hfix, p2, N_int)
tmp_row(1:N_states,putj) += hij * coefs(1:N_states) tmp_row(1:N_states,putj) = tmp_row(1:N_states,putj) + hij * coefs(1:N_states)
end do end do
do putj=hfix+1, mo_num do putj=hfix+1, mo_num
if(lbanned(putj, ma) .or. banned(putj, puti,bant)) cycle if(lbanned(putj, ma) .or. banned(putj, puti,bant)) cycle
hij = (mo_two_e_integral(p1, p2, hfix, putj)-mo_two_e_integral(p2,p1,hfix,putj)) * get_phase_bi(phasemask, ma, ma, hfix, p1, putj, p2, N_int) hij = (mo_two_e_integral(p1, p2, hfix, putj)-mo_two_e_integral(p2,p1,hfix,putj)) * get_phase_bi(phasemask, ma, ma, hfix, p1, putj, p2, N_int)
tmp_row(1:N_states,putj) += hij * coefs(1:N_states) tmp_row(1:N_states,putj) = tmp_row(1:N_states,putj) + hij * coefs(1:N_states)
end do end do
if(ma == 1) then if(ma == 1) then
mat(1:N_states,1:mo_num,puti) += tmp_row(1:N_states,1:mo_num) mat(1:N_states,1:mo_num,puti) = mat(1:N_states,1:mo_num,puti) + tmp_row(1:N_states,1:mo_num)
else else
mat(1:N_states,puti,1:mo_num) += tmp_row(1:N_states,1:mo_num) mat(1:N_states,puti,1:mo_num) = mat(1:N_states,puti,1:mo_num) + tmp_row(1:N_states,1:mo_num)
end if end if
end if end if
@ -1776,22 +1729,22 @@ subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
putj = p1 putj = p1
if(.not. banned(putj,puti,bant)) then if(.not. banned(putj,puti,bant)) then
hij = mo_two_e_integral(p2,pfix,hfix,puti) * get_phase_bi(phasemask, ma, mi, hfix, p2, puti, pfix, N_int) hij = mo_two_e_integral(p2,pfix,hfix,puti) * get_phase_bi(phasemask, ma, mi, hfix, p2, puti, pfix, N_int)
tmp_row(:,puti) += hij * coefs(:) tmp_row(:,puti) = tmp_row(:,puti) + hij * coefs(:)
end if end if
putj = p2 putj = p2
if(.not. banned(putj,puti,bant)) then if(.not. banned(putj,puti,bant)) then
hij = mo_two_e_integral(p1,pfix,hfix,puti) * get_phase_bi(phasemask, ma, mi, hfix, p1, puti, pfix, N_int) hij = mo_two_e_integral(p1,pfix,hfix,puti) * get_phase_bi(phasemask, ma, mi, hfix, p1, puti, pfix, N_int)
tmp_row2(:,puti) += hij * coefs(:) tmp_row2(:,puti) = tmp_row2(:,puti) + hij * coefs(:)
end if end if
end do end do
if(mi == 1) then if(mi == 1) then
mat(:,:,p1) += tmp_row(:,:) mat(:,:,p1) = mat(:,:,p1) + tmp_row(:,:)
mat(:,:,p2) += tmp_row2(:,:) mat(:,:,p2) = mat(:,:,p2) + tmp_row2(:,:)
else else
mat(:,p1,:) += tmp_row(:,:) mat(:,p1,:) = mat(:,p1,:) + tmp_row(:,:)
mat(:,p2,:) += tmp_row2(:,:) mat(:,p2,:) = mat(:,p2,:) + tmp_row2(:,:)
end if end if
else else
if(p(0,ma) == 3) then if(p(0,ma) == 3) then
@ -1804,16 +1757,16 @@ subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
do putj=1,hfix-1 do putj=1,hfix-1
if(lbanned(putj,ma) .or. banned(puti,putj,1)) cycle if(lbanned(putj,ma) .or. banned(puti,putj,1)) cycle
hij = (mo_two_e_integral(p1, p2, putj, hfix)-mo_two_e_integral(p2,p1,putj,hfix)) * get_phase_bi(phasemask, ma, ma, putj, p1, hfix, p2, N_int) hij = (mo_two_e_integral(p1, p2, putj, hfix)-mo_two_e_integral(p2,p1,putj,hfix)) * get_phase_bi(phasemask, ma, ma, putj, p1, hfix, p2, N_int)
tmp_row(:,putj) += hij * coefs(:) tmp_row(:,putj) = tmp_row(:,putj) + hij * coefs(:)
end do end do
do putj=hfix+1,mo_num do putj=hfix+1,mo_num
if(lbanned(putj,ma) .or. banned(puti,putj,1)) cycle if(lbanned(putj,ma) .or. banned(puti,putj,1)) cycle
hij = (mo_two_e_integral(p1, p2, hfix, putj)-mo_two_e_integral(p2,p1,hfix,putj)) * get_phase_bi(phasemask, ma, ma, hfix, p1, putj, p2, N_int) hij = (mo_two_e_integral(p1, p2, hfix, putj)-mo_two_e_integral(p2,p1,hfix,putj)) * get_phase_bi(phasemask, ma, ma, hfix, p1, putj, p2, N_int)
tmp_row(:,putj) += hij * coefs(:) tmp_row(:,putj) = tmp_row(:,putj) + hij * coefs(:)
end do end do
mat(:, :puti-1, puti) += tmp_row(:,:puti-1) mat(:, :puti-1, puti) = mat(:, :puti-1, puti) + tmp_row(:,:puti-1)
mat(:, puti, puti:) += tmp_row(:,puti:) mat(:, puti, puti:) = mat(:, puti, puti:) + tmp_row(:,puti:)
end do end do
else else
hfix = h(1,mi) hfix = h(1,mi)
@ -1827,19 +1780,19 @@ subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
putj = p2 putj = p2
if(.not. banned(puti,putj,1)) then if(.not. banned(puti,putj,1)) then
hij = mo_two_e_integral(pfix, p1, hfix, puti) * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p1, N_int) hij = mo_two_e_integral(pfix, p1, hfix, puti) * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p1, N_int)
tmp_row(:,puti) += hij * coefs(:) tmp_row(:,puti) = tmp_row(:,puti) + hij * coefs(:)
end if end if
putj = p1 putj = p1
if(.not. banned(puti,putj,1)) then if(.not. banned(puti,putj,1)) then
hij = mo_two_e_integral(pfix, p2, hfix, puti) * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p2, N_int) hij = mo_two_e_integral(pfix, p2, hfix, puti) * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p2, N_int)
tmp_row2(:,puti) += hij * coefs(:) tmp_row2(:,puti) = tmp_row2(:,puti) + hij * coefs(:)
end if end if
end do end do
mat(:,:p2-1,p2) += tmp_row(:,:p2-1) mat(:,:p2-1,p2) = mat(:,:p2-1,p2) + tmp_row(:,:p2-1)
mat(:,p2,p2:) += tmp_row(:,p2:) mat(:,p2,p2:) = mat(:,p2,p2:) + tmp_row(:,p2:)
mat(:,:p1-1,p1) += tmp_row2(:,:p1-1) mat(:,:p1-1,p1) = mat(:,:p1-1,p1) + tmp_row2(:,:p1-1)
mat(:,p1,p1:) += tmp_row2(:,p1:) mat(:,p1,p1:) = mat(:,p1,p1:) + tmp_row2(:,p1:)
end if end if
end if end if
deallocate(lbanned) deallocate(lbanned)
@ -1862,7 +1815,7 @@ subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
if(bannedOrb(p1, s1) .or. bannedOrb(p2, s2) .or. banned(p1, p2, 1)) cycle if(bannedOrb(p1, s1) .or. bannedOrb(p2, s2) .or. banned(p1, p2, 1)) cycle
call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int) call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int)
call i_h_j(gen, det, N_int, hij) call i_h_j(gen, det, N_int, hij)
mat(:, p1, p2) += coefs(:) * hij mat(:, p1, p2) = mat(:, p1, p2) + coefs(:) * hij
end do end do
end do end do
end end
@ -1915,9 +1868,9 @@ subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
hij = (mo_two_e_integral(p1, p2, h1, h2) - mo_two_e_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2, N_int) hij = (mo_two_e_integral(p1, p2, h1, h2) - mo_two_e_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2, N_int)
if(ma == 1) then if(ma == 1) then
mat(:, putj, puti) += coefs(:) * hij mat(:, putj, puti) = mat(:, putj, puti) + coefs(:) * hij
else else
mat(:, puti, putj) += coefs(:) * hij mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end if end if
end do end do
else else
@ -1933,7 +1886,7 @@ subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
p1 = p(turn2(i), 1) p1 = p(turn2(i), 1)
hij = mo_two_e_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2,N_int) hij = mo_two_e_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2,N_int)
mat(:, puti, putj) += coefs(:) * hij mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end do end do
end do end do
end if end if
@ -1953,7 +1906,7 @@ subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
p1 = p(i1, ma) p1 = p(i1, ma)
p2 = p(i2, ma) p2 = p(i2, ma)
hij = (mo_two_e_integral(p1, p2, h1, h2) - mo_two_e_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2,N_int) hij = (mo_two_e_integral(p1, p2, h1, h2) - mo_two_e_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2,N_int)
mat(:, puti, putj) += coefs(:) * hij mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end do end do
end do end do
else if(tip == 3) then else if(tip == 3) then
@ -1967,7 +1920,7 @@ subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
p2 = p(i, ma) p2 = p(i, ma)
hij = mo_two_e_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, mi, ma, h1, p1, h2, p2,N_int) hij = mo_two_e_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, mi, ma, h1, p1, h2, p2,N_int)
mat(:, min(puti, putj), max(puti, putj)) += coefs(:) * hij mat(:, min(puti, putj), max(puti, putj)) = mat(:, min(puti, putj), max(puti, putj)) + coefs(:) * hij
end do end do
else ! tip == 4 else ! tip == 4
puti = p(1, sp) puti = p(1, sp)
@ -1978,7 +1931,7 @@ subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
h1 = h(1, mi) h1 = h(1, mi)
h2 = h(2, mi) h2 = h(2, mi)
hij = (mo_two_e_integral(p1, p2, h1, h2) - mo_two_e_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, mi, mi, h1, p1, h2, p2,N_int) hij = (mo_two_e_integral(p1, p2, h1, h2) - mo_two_e_integral(p2,p1, h1, h2)) * get_phase_bi(phasemask, mi, mi, h1, p1, h2, p2,N_int)
mat(:, puti, putj) += coefs(:) * hij mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end if end if
end if end if
end if end if

View File

@ -175,7 +175,7 @@ subroutine make_selection_buffer_s2(b)
! Sort ! Sort
integer, allocatable :: iorder(:) integer, allocatable :: iorder(:)
integer*8, allocatable :: bit_tmp(:) integer*8, allocatable :: bit_tmp(:)
integer*8, external :: occ_pattern_search_key integer*8, external :: configuration_search_key
integer(bit_kind), allocatable :: tmp_array(:,:,:) integer(bit_kind), allocatable :: tmp_array(:,:,:)
logical, allocatable :: duplicate(:) logical, allocatable :: duplicate(:)
@ -193,7 +193,7 @@ subroutine make_selection_buffer_s2(b)
o(k,2,i) = iand(b%det(k,1,i), b%det(k,2,i)) o(k,2,i) = iand(b%det(k,1,i), b%det(k,2,i))
enddo enddo
iorder(i) = i iorder(i) = i
bit_tmp(i) = occ_pattern_search_key(o(1,1,i),N_int) bit_tmp(i) = configuration_search_key(o(1,1,i),N_int)
enddo enddo
deallocate(b%det) deallocate(b%det)
@ -279,7 +279,7 @@ subroutine make_selection_buffer_s2(b)
! Create determinants ! Create determinants
n_d = 0 n_d = 0
do i=1,n_p do i=1,n_p
call occ_pattern_to_dets_size(o(1,1,i),sze,elec_alpha_num,N_int) call configuration_to_dets_size(o(1,1,i),sze,elec_alpha_num,N_int)
n_d = n_d + sze n_d = n_d + sze
if (n_d > b%cur) then if (n_d > b%cur) then
! if (n_d - b%cur > b%cur - n_d + sze) then ! if (n_d - b%cur > b%cur - n_d + sze) then
@ -295,8 +295,8 @@ subroutine make_selection_buffer_s2(b)
k=1 k=1
do i=1,n_p do i=1,n_p
n=n_d n=n_d
call occ_pattern_to_dets_size(o(1,1,i),n,elec_alpha_num,N_int) call configuration_to_dets_size(o(1,1,i),n,elec_alpha_num,N_int)
call occ_pattern_to_dets(o(1,1,i),b%det(1,1,k),n,elec_alpha_num,N_int) call configuration_to_dets(o(1,1,i),b%det(1,1,k),n,elec_alpha_num,N_int)
do j=k,k+n-1 do j=k,k+n-1
b%val(j) = val(i) b%val(j) = val(i)
enddo enddo

View File

@ -0,0 +1,134 @@
BEGIN_PROVIDER [ double precision, pt2_match_weight, (N_states) ]
implicit none
BEGIN_DOC
! Weights adjusted along the selection to make the PT2 contributions
! of each state coincide.
END_DOC
pt2_match_weight(:) = 1.d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, variance_match_weight, (N_states) ]
implicit none
BEGIN_DOC
! Weights adjusted along the selection to make the variances
! of each state coincide.
END_DOC
variance_match_weight(:) = 1.d0
END_PROVIDER
subroutine update_pt2_and_variance_weights(pt2_data, N_st)
implicit none
use selection_types
BEGIN_DOC
! Updates the PT2- and Variance- matching weights.
END_DOC
integer, intent(in) :: N_st
type(pt2_type), intent(in) :: pt2_data
double precision :: pt2(N_st)
double precision :: variance(N_st)
double precision :: avg, element, dt, x
integer :: k
pt2(:) = pt2_data % pt2(:)
variance(:) = pt2_data % variance(:)
avg = sum(pt2(1:N_st)) / dble(N_st) + 1.d-32 ! Avoid future division by zero
dt = 8.d0 !* selection_factor
do k=1,N_st
element = exp(dt*(pt2(k)/avg - 1.d0))
element = min(2.0d0 , element)
element = max(0.5d0 , element)
pt2_match_weight(k) *= element
enddo
avg = sum(variance(1:N_st)) / dble(N_st) + 1.d-32 ! Avoid future division by zero
do k=1,N_st
element = exp(dt*(variance(k)/avg -1.d0))
element = min(2.0d0 , element)
element = max(0.5d0 , element)
variance_match_weight(k) *= element
enddo
if (N_det < 100) then
! For tiny wave functions, weights are 1.d0
pt2_match_weight(:) = 1.d0
variance_match_weight(:) = 1.d0
endif
threshold_davidson_pt2 = min(1.d-6, &
max(threshold_davidson, 1.e-1 * PT2_relative_error * minval(abs(pt2(1:N_states)))) )
SOFT_TOUCH pt2_match_weight variance_match_weight threshold_davidson_pt2
end
BEGIN_PROVIDER [ double precision, selection_weight, (N_states) ]
implicit none
BEGIN_DOC
! Weights used in the selection criterion
END_DOC
select case (weight_selection)
case (0)
print *, 'Using input weights in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * state_average_weight(1:N_states)
case (1)
print *, 'Using 1/c_max^2 weight in selection'
selection_weight(1:N_states) = c0_weight(1:N_states)
case (2)
print *, 'Using pt2-matching weight in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * pt2_match_weight(1:N_states)
print *, '# PT2 weight ', real(pt2_match_weight(:),4)
case (3)
print *, 'Using variance-matching weight in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * variance_match_weight(1:N_states)
print *, '# var weight ', real(variance_match_weight(:),4)
case (4)
print *, 'Using variance- and pt2-matching weights in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * sqrt(variance_match_weight(1:N_states) * pt2_match_weight(1:N_states))
print *, '# PT2 weight ', real(pt2_match_weight(:),4)
print *, '# var weight ', real(variance_match_weight(:),4)
case (5)
print *, 'Using variance-matching weight in selection'
selection_weight(1:N_states) = c0_weight(1:N_states) * variance_match_weight(1:N_states)
print *, '# var weight ', real(variance_match_weight(:),4)
case (6)
print *, 'Using CI coefficient-based selection'
selection_weight(1:N_states) = c0_weight(1:N_states)
case (7)
print *, 'Input weights multiplied by variance- and pt2-matching'
selection_weight(1:N_states) = c0_weight(1:N_states) * sqrt(variance_match_weight(1:N_states) * pt2_match_weight(1:N_states)) * state_average_weight(1:N_states)
print *, '# PT2 weight ', real(pt2_match_weight(:),4)
print *, '# var weight ', real(variance_match_weight(:),4)
case (8)
print *, 'Input weights multiplied by pt2-matching'
selection_weight(1:N_states) = c0_weight(1:N_states) * pt2_match_weight(1:N_states) * state_average_weight(1:N_states)
print *, '# PT2 weight ', real(pt2_match_weight(:),4)
case (9)
print *, 'Input weights multiplied by variance-matching'
selection_weight(1:N_states) = c0_weight(1:N_states) * variance_match_weight(1:N_states) * state_average_weight(1:N_states)
print *, '# var weight ', real(variance_match_weight(:),4)
end select
print *, '# Total weight ', real(selection_weight(:),4)
END_PROVIDER

View File

@ -4,7 +4,7 @@ subroutine run_slave_cipsi
! Helper program for distributed parallelism ! Helper program for distributed parallelism
END_DOC END_DOC
call omp_set_nested(.false.) call omp_set_max_active_levels(1)
distributed_davidson = .False. distributed_davidson = .False.
read_wf = .False. read_wf = .False.
SOFT_TOUCH read_wf distributed_davidson SOFT_TOUCH read_wf distributed_davidson
@ -100,7 +100,7 @@ subroutine run_slave_main
IRP_IF MPI_DEBUG IRP_IF MPI_DEBUG
call mpi_print('zmq_get_dvector threshold_generators') call mpi_print('zmq_get_dvector threshold_generators')
IRP_ENDIF IRP_ENDIF
if (zmq_get_dvector(zmq_to_qp_run_socket,1,'threshold_generators',threshold_generators,1) == -1) cycle if (zmq_get_dvector(zmq_to_qp_run_socket,1,'threshold_generators',(/threshold_generators/),1) == -1) cycle
IRP_IF MPI_DEBUG IRP_IF MPI_DEBUG
call mpi_print('zmq_get_dvector energy') call mpi_print('zmq_get_dvector energy')
IRP_ENDIF IRP_ENDIF
@ -122,7 +122,7 @@ subroutine run_slave_main
IRP_ENDIF IRP_ENDIF
if (zmq_get_dvector(zmq_to_qp_run_socket,1,'selection_weight',selection_weight,N_states) == -1) cycle if (zmq_get_dvector(zmq_to_qp_run_socket,1,'selection_weight',selection_weight,N_states) == -1) cycle
pt2_e0_denominator(1:N_states) = energy(1:N_states) pt2_e0_denominator(1:N_states) = energy(1:N_states)
TOUCH pt2_e0_denominator state_average_weight threshold_generators selection_weight TOUCH pt2_e0_denominator state_average_weight threshold_generators selection_weight psi_det psi_coef
if (mpi_master) then if (mpi_master) then
print *, 'N_det', N_det print *, 'N_det', N_det
@ -171,9 +171,9 @@ subroutine run_slave_main
call write_double(6,(t1-t0),'Broadcast time') call write_double(6,(t1-t0),'Broadcast time')
!--- !---
call omp_set_nested(.True.) call omp_set_max_active_levels(8)
call davidson_slave_tcp(0) call davidson_slave_tcp(0)
call omp_set_nested(.False.) call omp_set_max_active_levels(1)
print *, mpi_rank, ': Davidson done' print *, mpi_rank, ': Davidson done'
!--- !---
@ -212,7 +212,7 @@ subroutine run_slave_main
IRP_IF MPI_DEBUG IRP_IF MPI_DEBUG
call mpi_print('zmq_get_dvector threshold_generators') call mpi_print('zmq_get_dvector threshold_generators')
IRP_ENDIF IRP_ENDIF
if (zmq_get_dvector(zmq_to_qp_run_socket,1,'threshold_generators',threshold_generators,1) == -1) cycle if (zmq_get_dvector(zmq_to_qp_run_socket,1,'threshold_generators',(/threshold_generators/),1) == -1) cycle
IRP_IF MPI_DEBUG IRP_IF MPI_DEBUG
call mpi_print('zmq_get_dvector energy') call mpi_print('zmq_get_dvector energy')
IRP_ENDIF IRP_ENDIF
@ -230,7 +230,8 @@ subroutine run_slave_main
IRP_ENDIF IRP_ENDIF
if (zmq_get_dvector(zmq_to_qp_run_socket,1,'selection_weight',selection_weight,N_states) == -1) cycle if (zmq_get_dvector(zmq_to_qp_run_socket,1,'selection_weight',selection_weight,N_states) == -1) cycle
pt2_e0_denominator(1:N_states) = energy(1:N_states) pt2_e0_denominator(1:N_states) = energy(1:N_states)
SOFT_TOUCH pt2_e0_denominator state_average_weight pt2_stoch_istate threshold_generators selection_weight SOFT_TOUCH pt2_e0_denominator state_average_weight pt2_stoch_istate threshold_generators selection_weight psi_det psi_coef N_det_generators N_det_selectors
call wall_time(t1) call wall_time(t1)
call write_double(6,(t1-t0),'Broadcast time') call write_double(6,(t1-t0),'Broadcast time')
@ -296,11 +297,17 @@ subroutine run_slave_main
print *, 'Number of threads', nproc_target print *, 'Number of threads', nproc_target
endif endif
if (h0_type == 'SOP') then if (h0_type == 'CFG') then
PROVIDE det_to_occ_pattern PROVIDE det_to_configuration
endif endif
PROVIDE global_selection_buffer PROVIDE global_selection_buffer pt2_N_teeth pt2_F N_det_generators
PROVIDE psi_bilinear_matrix_columns_loc psi_det_alpha_unique psi_det_beta_unique
PROVIDE psi_bilinear_matrix_rows psi_det_sorted_order psi_bilinear_matrix_order
PROVIDE psi_bilinear_matrix_transp_rows_loc psi_bilinear_matrix_transp_columns
PROVIDE psi_bilinear_matrix_transp_order psi_selectors_coef_transp psi_det_sorted
PROVIDE psi_det_hii selection_weight pseudo_sym pt2_min_parallel_tasks
if (mpi_master) then if (mpi_master) then
print *, 'Running PT2' print *, 'Running PT2'
endif endif

View File

@ -92,7 +92,7 @@ subroutine run_stochastic_cipsi
call write_double(6,correlation_energy_ratio, 'Correlation ratio') call write_double(6,correlation_energy_ratio, 'Correlation ratio')
call print_summary(psi_energy_with_nucl_rep, & call print_summary(psi_energy_with_nucl_rep, &
pt2_data, pt2_data_err, N_det,N_occ_pattern,N_states,psi_s2) pt2_data, pt2_data_err, N_det,N_configuration,N_states,psi_s2)
call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2) call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2)
@ -104,7 +104,9 @@ subroutine run_stochastic_cipsi
! Add selected determinants ! Add selected determinants
call copy_H_apply_buffer_to_wf() call copy_H_apply_buffer_to_wf()
! call save_wavefunction if (save_wf_after_selection) then
call save_wavefunction
endif
PROVIDE psi_coef PROVIDE psi_coef
PROVIDE psi_det PROVIDE psi_det
@ -131,7 +133,7 @@ subroutine run_stochastic_cipsi
call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2) call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2)
call print_summary(psi_energy_with_nucl_rep, & call print_summary(psi_energy_with_nucl_rep, &
pt2_data , pt2_data_err, N_det, N_occ_pattern, N_states, psi_s2) pt2_data , pt2_data_err, N_det, N_configuration, N_states, psi_s2)
call save_iterations(psi_energy_with_nucl_rep(1:N_states),pt2_data % rpt2,N_det) call save_iterations(psi_energy_with_nucl_rep(1:N_states),pt2_data % rpt2,N_det)
call print_extrapolated_energy() call print_extrapolated_energy()
endif endif

View File

@ -48,7 +48,7 @@ subroutine ZMQ_selection(N_in, pt2_data)
if (zmq_put_dvector(zmq_to_qp_run_socket,1,'selection_weight',selection_weight,N_states) == -1) then if (zmq_put_dvector(zmq_to_qp_run_socket,1,'selection_weight',selection_weight,N_states) == -1) then
stop 'Unable to put selection_weight on ZMQ server' stop 'Unable to put selection_weight on ZMQ server'
endif endif
if (zmq_put_dvector(zmq_to_qp_run_socket,1,'threshold_generators',threshold_generators,1) == -1) then if (zmq_put_dvector(zmq_to_qp_run_socket,1,'threshold_generators',(/threshold_generators/),1) == -1) then
stop 'Unable to put threshold_generators on ZMQ server' stop 'Unable to put threshold_generators on ZMQ server'
endif endif
call create_selection_buffer(N, N*2, b) call create_selection_buffer(N, N*2, b)

View File

@ -129,7 +129,8 @@ function run() {
@test "[Cu(NH3)4]2+" { # 29.7711s 3.45478m @test "[Cu(NH3)4]2+" { # 29.7711s 3.45478m
[[ -n ${TRAVIS} ]] && skip [[ -n ${TRAVIS} ]] && skip
run cu_nh3_4_2plus.ezfio -1862.97958709248 -1862.92454796197 -1862.91130872182 run cu_nh3_4_2plus.ezfio -1862.97958885180 -1862.92457657404 -1862.91134959451
} }
@test "SO2" { # 32.092s 1.47785m @test "SO2" { # 32.092s 1.47785m

View File

@ -79,6 +79,6 @@ subroutine run
call ezfio_set_cis_energy(CI_energy) call ezfio_set_cis_energy(CI_energy)
psi_coef = ci_eigenvectors psi_coef = ci_eigenvectors
SOFT_TOUCH psi_coef SOFT_TOUCH psi_coef
call save_wavefunction call save_wavefunction_truncated(1.d-12)
end end

View File

@ -110,7 +110,8 @@ function run() {
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
qp set_file cu_nh3_4_2plus.ezfio qp set_file cu_nh3_4_2plus.ezfio
qp set_mo_class --core="[1-24]" --act="[25-45]" --del="[46-87]" qp set_mo_class --core="[1-24]" --act="[25-45]" --del="[46-87]"
run -1862.98611018932 -1862.68751252590 run -1862.98689579931 -1862.6883044626563
} }
@test "ClF" { # 30.3225s @test "ClF" { # 30.3225s

1
src/csf/NEED Normal file
View File

@ -0,0 +1 @@
determinants

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