10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-06-26 15:12:19 +02: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
# - libblas-dev
- wget
- eatmydata
env:
- OPAMROOT=$HOME/.opam
@ -45,9 +44,9 @@ stages:
jobs:
include:
- stage: configuration
script: eatmydata travis/configuration.sh
script: travis/configuration.sh
- stage: compilation
script: eatmydata travis/compilation.sh
script: travis/compilation.sh
- 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)
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
============
@ -48,6 +54,7 @@ Requirements
- `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
- |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`
@ -79,7 +86,7 @@ The command is to be used as follows:
.. code:: bash
./configure --install <package>
./configure --install=<package>
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">

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 qp_path import QP_SRC, QP_ROOT
except ImportError:
print("source .quantum_package.rc")
print("source quantum_package.rc")
raise

View File

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

View File

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

View File

@ -10,10 +10,10 @@
#
#
[COMMON]
FC : gfortran -ffree-line-length-none -I . -fPIC
LAPACK_LIB : -lblas -llapack
FC : gfortran -g -ffree-line-length-none -I . -fPIC
LAPACK_LIB : -lblas -llapack
IRPF90 : irpf90
IRPF90_FLAGS : --ninja --align=32
IRPF90_FLAGS : --ninja --align=32 --assert
# Global options
################
@ -22,7 +22,7 @@ IRPF90_FLAGS : --ninja --align=32
# 0 : Deactivate
#
[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
OPENMP : 1 ; Append OpenMP flags
@ -35,7 +35,7 @@ OPENMP : 1 ; Append OpenMP flags
# -ffast-math and the Fortran-specific
# -fno-protect-parens and -fstack-arrays.
[OPT]
FCFLAGS : -Ofast -msse4.2
FCFLAGS : -Ofast
# Profiling flags
#################
@ -51,7 +51,7 @@ FCFLAGS : -Ofast
# -g : Extra debugging information
#
[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
#################

View File

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

View File

@ -54,7 +54,7 @@ FCFLAGS : -msse4.2 -O2 -ip -ftz
#
[DEBUG]
FC : -g -traceback
FCFLAGS : -msse4.2 -C -fpe0 -implicitnone
FCFLAGS : -msse4.2 -check all -debug all -fpe-all=0 -implicitnone
# 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
export CC=gcc
# Download submodules
git submodule init
git submodule update
# /!\ 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"
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"
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"
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"
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"
@ -126,13 +125,13 @@ source quantum_package.rc
function fail() {
echo "You can try to install it using the -i option."
echo "Please refer to INSTALL.rst to install the missing dependencies."
exit 1
exit -1
}
function success() {
echo ""
echo "Configuration successful."
exit 1
exit 0
}
function download() {
@ -178,15 +177,10 @@ function find_dir() {
}
# Extract EZFIO if needed
EZFIO=$(find_dir "${QP_ROOT}"/external/ezfio)
if [[ ${EZFIO} = $(not_found) ]] ; then
execute << EOF
cd "\${QP_ROOT}"/external
tar --gunzip --extract --file ${EZFIO_TGZ}
rm -rf ezfio
mv EZFIO ezfio || mv EZFIO-v*/ ezfio
EOF
# Install IRPF90 if needed
IRPF90=$(find_exe irpf90)
if [[ ${IRPF90} = $(not_found) ]] ; then
make -C ${QP_ROOT}/external/irpf90
fi
@ -211,7 +205,7 @@ if [[ "${PACKAGES}.x" != ".x" ]] ; then
fi
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
@ -228,12 +222,10 @@ EOF
elif [[ ${PACKAGE} = gmp ]] ; then
download ${GMP_URL} "${QP_ROOT}"/external/gmp.tar.bz2
execute << EOF
cd "\${QP_ROOT}"/external
tar --bzip2 --extract --file gmp.tar.bz2
rm gmp.tar.bz2
cd gmp*
tar --bzip2 --extract --file gmp-6.1.2.tar.bz2
cd gmp-6.1.2
./configure --prefix=$QP_ROOT && make -j 8
make install
EOF
@ -246,7 +238,7 @@ EOF
tar --gunzip --extract --file libcap.tar.gz
rm libcap.tar.gz
cd libcap-*/libcap
prefix=$QP_ROOT make install
prefix=$QP_ROOT make BUILD_GPERF=no install
EOF
elif [[ ${PACKAGE} = bwrap ]] ; then
@ -263,13 +255,12 @@ EOF
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
cd "\${QP_ROOT}"/external
tar --gunzip --extract --file irpf90.tar.gz
rm irpf90.tar.gz
cd irpf90-*
mv irpf90-* irpf90
cd irpf90
make
EOF
@ -328,8 +319,8 @@ EOF
rm ${QP_ROOT}/external/opam_installer.sh
# source ${OPAMROOT}/opam-init/init.sh > /dev/null 2> /dev/null || true
#
# opam switch create ocaml-base-compiler.4.10.0
opam init --verbose --yes --compiler=4.10.0 --disable-sandboxing
# opam switch create ocaml-base-compiler.4.11.1
opam init --verbose --yes --compiler=4.11.1 --disable-sandboxing
eval $(opam env)
opam install -y ${OCAML_PACKAGES} || exit 1
@ -348,9 +339,9 @@ EOF
EOF
rm ${QP_ROOT}/external/opam_installer.sh
# 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)
execute << EOF
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
EOF
else
error "${PACKAGE} unknown."
fail
fi
@ -425,7 +419,7 @@ fi
IRPF90=$(find_exe irpf90)
if [[ ${IRPF90} = $(not_found) ]] ; then
error "IRPf90 (irpf90) is not installed."
error "IRPF90 (irpf90) is not installed."
fail
fi

View File

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

View File

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

View File

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

View File

@ -118,10 +118,12 @@ Providers
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_normalized`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_prim_num_max`
* :c:data:`primitives_normalized`
Needed by:
@ -177,10 +179,12 @@ Providers
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_normalized`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_prim_num_max`
* :c:data:`primitives_normalized`
Needed by:
@ -261,10 +265,7 @@ Providers
* :c:data:`ao_pseudo_integrals_local`
* :c:data:`ao_pseudo_integrals_non_local`
* :c:data:`ao_spread_x`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
@ -363,10 +364,7 @@ Providers
* :c:data:`ao_pseudo_integrals_local`
* :c:data:`ao_pseudo_integrals_non_local`
* :c:data:`ao_spread_x`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
@ -853,10 +851,7 @@ Providers
* :c:data:`ao_integrals_n_e`
* :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_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`gauleg_t2`
@ -888,10 +883,7 @@ Providers
* :c:data:`ao_integrals_n_e`
* :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_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`gauleg_t2`
@ -1088,10 +1080,10 @@ Subroutines / functions
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`nucl_coord`
@ -1117,14 +1109,14 @@ Subroutines / functions
.. hlist::
: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_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_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Called by:
@ -1158,14 +1150,14 @@ Subroutines / functions
.. hlist::
: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_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_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Called by:
@ -1195,14 +1187,14 @@ Subroutines / functions
.. hlist::
: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_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_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Called by:
@ -1233,6 +1225,6 @@ Subroutines / functions
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_nucl`
* :c:data:`nucl_coord`
* :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:
* `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`)
* `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`)
* `ao_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`)
* `ao_kinetic_integrals` which are the kinetic operator integrals on the |AO| basis
* `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
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_num`
* :c:data:`lin_dep_cutoff`
@ -570,6 +570,8 @@ Providers
Nucleus-electron interaction, in the |AO| basis set.
:math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle`
These integrals also contain the pseudopotential integrals.
Needs:
@ -582,11 +584,13 @@ Providers
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_pseudo_integrals`
* :c:data:`do_pseudo`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
* :c:data:`read_ao_integrals_e_n`
* :c:data:`read_ao_integrals_n_e`
Needed by:
@ -594,11 +598,33 @@ Providers
:columns: 3
* :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: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
@ -669,6 +695,31 @@ Providers
* :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
@ -690,18 +741,8 @@ Providers
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_kinetic_integrals`
* :c:data:`ao_num`
* :c:data:`ao_pseudo_integrals`
* :c:data:`do_pseudo`
* :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
@ -725,18 +766,30 @@ Providers
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_kinetic_integrals`
* :c:data:`ao_num`
* :c:data:`ao_pseudo_integrals`
* :c:data:`do_pseudo`
* :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::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`hf_energy`
* :c:data:`scf_energy`
* :c:data:`ao_num`
* :c:data:`read_ao_one_e_integrals`
.. c:var:: ao_ortho_canonical_coef
@ -764,6 +817,8 @@ Providers
* :c:data:`ao_cartesian`
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`lin_dep_cutoff`
* :c:data:`mpi_master`
Needed by:
@ -771,7 +826,6 @@ Providers
:columns: 3
* :c:data:`ao_ortho_canonical_coef_inv`
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
* :c:data:`ao_ortho_canonical_overlap`
* :c:data:`mo_coef`
* :c:data:`mo_num`
@ -830,6 +884,8 @@ Providers
* :c:data:`ao_cartesian`
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`lin_dep_cutoff`
* :c:data:`mpi_master`
Needed by:
@ -837,7 +893,6 @@ Providers
:columns: 3
* :c:data:`ao_ortho_canonical_coef_inv`
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
* :c:data:`ao_ortho_canonical_overlap`
* :c:data:`mo_coef`
* :c:data:`mo_num`
@ -906,9 +961,7 @@ Providers
* :c:data:`ao_cart_to_sphe_overlap`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ao_ortho_canonical_overlap`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`ao_ortho_lowdin_overlap`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`ao_overlap_complex`
* :c:data:`mo_overlap`
* :c:data:`s_half`
* :c:data:`s_half_inv`
@ -939,19 +992,69 @@ Providers
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_overlap_complex`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`is_periodic`
* :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:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`ao_overlap_abs`
* :c:data:`s_inv_complex`
.. 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
@ -993,9 +1096,7 @@ Providers
* :c:data:`ao_cart_to_sphe_overlap`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ao_ortho_canonical_overlap`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`ao_ortho_lowdin_overlap`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`ao_overlap_complex`
* :c:data:`mo_overlap`
* :c:data:`s_half`
* :c:data:`s_half_inv`
@ -1042,9 +1143,7 @@ Providers
* :c:data:`ao_cart_to_sphe_overlap`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ao_ortho_canonical_overlap`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`ao_ortho_lowdin_overlap`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`ao_overlap_complex`
* :c:data:`mo_overlap`
* :c:data:`s_half`
* :c:data:`s_half_inv`
@ -1091,9 +1190,7 @@ Providers
* :c:data:`ao_cart_to_sphe_overlap`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ao_ortho_canonical_overlap`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`ao_ortho_lowdin_overlap`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`ao_overlap_complex`
* :c:data:`mo_overlap`
* :c:data:`s_half`
* :c:data:`s_half_inv`
@ -1131,7 +1228,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_integrals_n_e`
* :c:data:`mo_pseudo_integrals`
@ -1688,12 +1785,6 @@ Providers
* :c:data:`ao_num`
* :c:data:`ao_overlap`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvalues_fock_matrix_ao`
.. c:var:: s_inv
@ -1715,6 +1806,30 @@ Providers
* :c:data:`ao_num`
* :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
-----------------------
.. 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:
@ -1854,12 +1991,12 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
@ -1949,14 +2086,14 @@ Subroutines / functions
* :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`
.. 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.

View File

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

View File

@ -98,6 +98,7 @@ Providers
:columns: 3
* :c:data:`ao_integrals_cache`
* :c:data:`ao_integrals_cache_periodic`
.. c:var:: ao_integrals_cache_min
@ -126,6 +127,30 @@ Providers
:columns: 3
* :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
@ -153,9 +178,10 @@ Providers
:columns: 3
* :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:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
@ -185,14 +211,6 @@ Providers
* :c:data:`n_pt_max_integrals`
* :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
@ -237,9 +255,8 @@ Providers
:columns: 3
* :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_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
@ -341,7 +358,6 @@ Providers
* :c:func:`i_x1_new`
* :c:func:`i_x2_new`
* :c:func:`integrale_new`
* :c:func:`integrale_new_erf`
Calls:
@ -512,6 +528,84 @@ Providers
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:
@ -550,12 +644,12 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
Calls:
@ -584,13 +678,13 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_nucl`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
Calls:
@ -601,6 +695,29 @@ Subroutines / functions
* :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:
@ -766,10 +883,8 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_num`
Called by:
@ -803,9 +918,7 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num`
* :c:data:`ao_two_e_integral_schwartz`
Called by:
@ -816,34 +929,6 @@ Subroutines / functions
* :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:
@ -925,9 +1010,6 @@ Subroutines / functions
.. hlist::
: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_min`
* :c:data:`ao_two_e_integrals_in_map`
@ -941,6 +1023,37 @@ Subroutines / functions
* :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:
@ -961,8 +1074,6 @@ Subroutines / functions
:columns: 3
* :c:data:`ao_integrals_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integrals_in_map`
Called by:
@ -994,9 +1105,7 @@ Subroutines / functions
:columns: 3
* :c:data:`ao_integrals_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map`
Called by:
@ -1035,8 +1144,6 @@ Subroutines / functions
:columns: 3
* :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`
Calls:
@ -1067,8 +1174,6 @@ Subroutines / functions
:columns: 3
* :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`
Calls:
@ -1080,6 +1185,29 @@ Subroutines / functions
* :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:
@ -1101,7 +1229,6 @@ Subroutines / functions
:columns: 3
* :c:func:`general_primitive_integral`
* :c:func:`general_primitive_integral_erf`
Calls:
@ -1141,6 +1268,31 @@ Subroutines / functions
* :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:
@ -1195,8 +1347,8 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`gauleg_t2`
* :c:data:`n_pt_max_integrals`
Called by:
@ -1213,35 +1365,6 @@ Subroutines / functions
* :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:
@ -1275,7 +1398,6 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_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.
i <-> k, j <-> l, and (i,k) <-> (j,l)
i <-> k, j <-> l, and (i,k) <-> (j,l) for non-periodic systems
Called by:
@ -1298,33 +1420,45 @@ Subroutines / functions
:columns: 3
* :c:data:`ao_integrals_cache`
* :c:data:`ao_integrals_erf_cache`
* :c:data:`ao_integrals_erf_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:`four_idx_novvvv`
* :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_jl`
* :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:data:`mo_integrals_cache`
* :c:data:`mo_integrals_erf_cache`
* :c:data:`mo_integrals_erf_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:
@ -1347,11 +1481,23 @@ Subroutines / functions
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.
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::
:columns: 3
* :c:data:`ao_two_e_integral_alpha`
* :c:func:`test`
* :c:func:`ao_idx2_sq_rev`
* :c:func:`ao_idx2_tri_rev_key`

View File

@ -128,7 +128,7 @@ Providers
.. 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
@ -224,31 +224,26 @@ Providers
:columns: 3
* :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_lapl_in_r_array`
* :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_pbe_w`
* :c:data:`aos_vc_alpha_lda_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_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_pbe`
* :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_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :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_no_core_and_grad_alpha_in_r`
.. c:var:: final_grid_points_per_atom
@ -361,31 +356,26 @@ Providers
:columns: 3
* :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_lapl_in_r_array`
* :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_pbe_w`
* :c:data:`aos_vc_alpha_lda_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_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_pbe`
* :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_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :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_no_core_and_grad_alpha_in_r`
.. c:var:: final_weight_at_r_vector_per_atom
@ -484,7 +474,6 @@ Providers
* :c:data:`final_grid_points`
* :c:data:`final_grid_points_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
@ -556,31 +545,26 @@ Providers
:columns: 3
* :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_lapl_in_r_array`
* :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_pbe_w`
* :c:data:`aos_vc_alpha_lda_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_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_pbe`
* :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_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :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_no_core_and_grad_alpha_in_r`
.. c:var:: index_final_points_per_atom
@ -690,31 +674,26 @@ Providers
:columns: 3
* :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_lapl_in_r_array`
* :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_pbe_w`
* :c:data:`aos_vc_alpha_lda_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_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_pbe`
* :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_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :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_no_core_and_grad_alpha_in_r`
.. c:var:: m_knowles
@ -765,43 +744,45 @@ Providers
.. hlist::
:columns: 3
* :c:data:`alpha_dens_kin_in_r`
* :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_transp`
* :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_pbe_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_pbe_w`
* :c:data:`aos_vc_alpha_sr_pbe_w`
* :c:data:`aos_vxc_alpha_lda_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_pbe`
* :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_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :c:data:`final_grid_points`
* :c:data:`kinetic_density_generalized`
* :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_omp`
* :c:data:`mos_in_r_array_transp`
* :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_no_core_and_grad_alpha_in_r`
* :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_sr_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_sr_grad_x_alpha_ao_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:`pot_scal_xc_alpha_ao_sr_pbe`
* :c:data:`potential_c_alpha_ao_lda`
* :c:data:`potential_c_alpha_ao_sr_lda`
* :c:data:`potential_x_alpha_ao_lda`
@ -854,6 +835,9 @@ Providers
:columns: 3
* :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:
@ -869,7 +853,6 @@ Providers
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
* :c:data:`n_pts_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
@ -896,6 +879,9 @@ Providers
:columns: 3
* :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:
@ -911,7 +897,6 @@ Providers
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
* :c:data:`n_pts_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
@ -1019,7 +1004,7 @@ Providers
.. 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
@ -1069,10 +1054,10 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
* :c:data:`slater_bragg_type_inter_distance_ua`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_dist_inv`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_type_inter_distance_ua`
.. c:function:: derivative_knowles_function:
@ -1105,11 +1090,11 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_points_final_grid`
* :c:data:`final_weight_at_r`
* :c:data:`n_points_radial_grid`
* :c:data:`grid_points_per_atom`
* :c:data:`final_grid_points`
* :c:data:`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_num`

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -80,20 +80,26 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_generators`
* :c:data:`psi_det`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_generators`
* :c:data:`s2_eig`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cisd`
Calls:
@ -140,9 +146,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by:
@ -178,9 +184,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
* :c:data:`n_int`
Called by:
@ -214,9 +220,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by:
@ -252,9 +258,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
* :c:data:`n_int`
Called by:
@ -290,20 +296,26 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_generators`
* :c:data:`psi_det`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_generators`
* :c:data:`s2_eig`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cisd`
Calls:
@ -350,9 +362,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by:
@ -388,9 +400,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
* :c:data:`n_int`
Called by:
@ -425,9 +437,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
Called by:
@ -463,9 +475,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
* :c:data:`n_int`
Called by:
@ -483,3 +495,52 @@ Subroutines / functions
* :c:func:`connected_to_hf`
* :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:`s2_eig`
* :c:data:`s2_matrix_all_dets`
* :c:data:`s_z`
* :c:data:`threshold_davidson`
Needed by:
@ -162,7 +161,6 @@ Providers
* :c:data:`psi_det`
* :c:data:`s2_eig`
* :c:data:`s2_matrix_all_dets`
* :c:data:`s_z`
* :c:data:`threshold_davidson`
Needed by:
@ -234,7 +232,6 @@ Providers
* :c:data:`psi_det`
* :c:data:`s2_eig`
* :c:data:`s2_matrix_all_dets`
* :c:data:`s_z`
* :c:data:`threshold_davidson`
Needed by:
@ -245,20 +242,6 @@ Providers
* :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
@ -382,9 +365,9 @@ Providers
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:
@ -408,9 +391,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`psi_energy_two_e`
* :c:data:`psi_energy_with_nucl_rep`
* :c:data:`pt2_e0_denominator`
.. c:var:: psi_energy_two_e
@ -436,7 +417,6 @@ Providers
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_energy`
@ -474,9 +454,9 @@ Providers
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:
@ -500,9 +480,28 @@ Providers
.. hlist::
:columns: 3
* :c:data:`psi_energy_two_e`
* :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: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:
@ -615,28 +578,30 @@ Subroutines / functions
.. hlist::
: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:`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:`s2_eig`
* :c:data:`psi_det_beta_unique`
* :c:data:`only_expected_s2`
* :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:`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:
@ -652,8 +617,6 @@ Subroutines / functions
* :c:func:`c_f_pointer`
* :c:func:`check_mem`
* :c:func:`cpu_time`
* :c:func:`davidson_converged`
* :c:func:`dgemm`
* :c:func:`dswap`
* :c:func:`h_s2_u_0_nstates_openmp`
@ -662,11 +625,12 @@ Subroutines / functions
* :c:func:`mmap`
* :c:func:`munmap`
* :c:func:`normalize`
* :c:func:`nullify_small_elements`
* :c:func:`ortho_qr`
* :c:func:`ortho_qr_unblocked`
* :c:func:`random_number`
* :c:func:`resident_memory`
* :c:func:`sgemm`
* :c:func:`wall_time`
* :c:func:`write_double`
* :c:func:`write_int`
* :c:func:`write_time`
@ -711,6 +675,7 @@ Subroutines / functions
* :c:data:`dressing_column_h`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_int`
Called by:
@ -751,8 +716,8 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_states_diag`
* :c:data:`n_det`
* :c:data:`n_states_diag`
Called by:
@ -779,8 +744,8 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_states_diag`
* :c:data:`n_det`
* :c:data:`n_states_diag`
.. c:function:: davidson_push_results_async_recv:
@ -820,8 +785,8 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_states_diag`
* :c:data:`n_det`
* :c:data:`n_states_diag`
Called by:
@ -848,8 +813,8 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_states_diag`
* :c:data:`n_det`
* :c:data:`n_states_diag`
Called by:
@ -907,13 +872,6 @@ Subroutines / functions
Called by:
.. hlist::
:columns: 3
* :c:func:`run_slave_main`
Calls:
.. hlist::
@ -938,18 +896,18 @@ Subroutines / functions
.. hlist::
: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_rank`
* :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_values`
* :c:data:`nproc`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`ref_bitmask_energy`
* :c:data:`n_states_diag`
* :c:data:`psi_bilinear_matrix_columns_loc`
Called by:
@ -986,24 +944,15 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`ci_electronic_energy`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`ci_electronic_energy`
* :c:data:`psi_energy`
* :c:data:`ci_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`
Called by:
.. hlist::
:columns: 3
* :c:func:`remove_small_contributions`
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Touches:
@ -1040,9 +989,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_det`
Called by:
@ -1081,9 +1030,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`ref_bitmask_energy`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`ref_bitmask_energy`
Called by:
@ -1108,7 +1057,7 @@ Subroutines / functions
.. 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
@ -1124,18 +1073,18 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :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_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:
@ -1160,7 +1109,7 @@ Subroutines / functions
.. 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
@ -1176,18 +1125,18 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :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_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:
@ -1212,7 +1161,7 @@ Subroutines / functions
.. 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
@ -1228,18 +1177,18 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :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_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:
@ -1264,7 +1213,7 @@ Subroutines / functions
.. 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
@ -1280,18 +1229,18 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :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_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:
@ -1316,7 +1265,7 @@ Subroutines / functions
.. 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
@ -1332,18 +1281,18 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :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_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:
@ -1388,17 +1337,18 @@ Subroutines / functions
.. hlist::
: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:`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_values`
* :c:data:`nproc`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`ref_bitmask_energy`
* :c:data:`psi_bilinear_matrix_columns_loc`
Called by:
@ -1443,9 +1393,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_det`
Called by:
@ -1483,9 +1433,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`ref_bitmask_energy`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`ref_bitmask_energy`
Called by:
@ -1525,16 +1475,16 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :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:
@ -1575,16 +1525,16 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :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:
@ -1625,16 +1575,16 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :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:
@ -1675,16 +1625,16 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :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:
@ -1725,16 +1675,16 @@ Subroutines / functions
.. hlist::
: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:`psi_bilinear_matrix_transp_values`
* :c:data:`nthreads_davidson`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :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:
@ -1774,20 +1724,13 @@ Subroutines / functions
:columns: 3
* :c:data:`mo_integrals_n_e`
* :c:data:`n_states`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_num`
* :c:data:`mo_pseudo_integrals`
* :c:data:`n_states`
* :c:data:`nuclear_repulsion`
* :c:data:`psi_energy`
* :c:data:`one_e_dm_mo_alpha`
Called by:
.. hlist::
:columns: 3
* :c:func:`print_summary`
* :c:data:`psi_energy`
.. c:function:: u_0_h_u_0:
@ -1812,11 +1755,11 @@ Subroutines / functions
.. hlist::
: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:`h_matrix_all_dets`
* :c:data:`n_det_max_full`
* :c:data:`n_states_diag`
* :c:data:`s2_matrix_all_dets`
Called by:
@ -1881,9 +1824,9 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_states_diag`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
Touches:

View File

@ -146,14 +146,6 @@ Providers
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: one_e_dm_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_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:
.. hlist::
: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
@ -206,16 +250,9 @@ Providers
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_for_dft`
* :c:data:`state_average_weight`
* :c:data:`one_e_dm_average_alpha_mo_for_dft`
* :c:data:`one_e_dm_average_beta_mo_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`short_range_hartree_operator`
.. 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_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
@ -281,12 +310,6 @@ Providers
* :c:data:`one_e_dm_mo_alpha_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
@ -311,7 +334,7 @@ Providers
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`density_for_dft`
* :c:data:`elec_alpha_num`
* :c:data:`list_inact`
* :c:data:`list_core`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
@ -328,11 +351,9 @@ Providers
:columns: 3
* :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_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
@ -352,7 +373,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`list_inact`
* :c:data:`list_core`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
* :c:data:`n_states`
@ -388,7 +409,7 @@ Providers
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`density_for_dft`
* :c:data:`elec_beta_num`
* :c:data:`list_inact`
* :c:data:`list_core`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
@ -405,11 +426,9 @@ Providers
:columns: 3
* :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_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
@ -429,7 +448,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`list_inact`
* :c:data:`list_core`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
* :c:data:`n_states`
@ -464,11 +483,4 @@ Providers
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_average_mo_for_dft`
* :c:data:`short_range_hartree_operator`

File diff suppressed because it is too large Load Diff

View File

@ -107,10 +107,4 @@ Providers
* :c:data:`correlation_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:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: elec_num_tab
@ -108,5 +107,4 @@ Providers
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`

View File

@ -97,6 +97,7 @@ Providers
.. code:: fortran
logical :: do_only_1h1p
logical :: do_only_cas
logical :: do_ddci
@ -112,6 +113,23 @@ Providers
.. code:: fortran
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

View File

@ -86,8 +86,10 @@ Providers
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals`
* :c:data:`is_periodic`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
* :c:data:`read_ao_two_e_integrals`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
@ -130,8 +132,10 @@ Providers
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals`
* :c:data:`is_periodic`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
* :c:data:`read_ao_two_e_integrals`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
@ -339,12 +343,14 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`mo_guess_type`
* :c:data:`mo_one_e_integrals`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_one_e_integrals`
Called by:
@ -361,6 +367,7 @@ Subroutines / functions
* :c:func:`ezfio_has_mo_basis_mo_coef`
* :c:func:`huckel_guess`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`restore_symmetry`
Touches:
@ -372,51 +379,3 @@ Subroutines / functions
* :c:data:`mo_coef`
* :c:data:`mo_label`
.. c:function:: run:
File : :file:`hartree_fock/scf.irp.f`
.. code:: fortran
subroutine run
Run SCF calculation
Needs:
.. hlist::
:columns: 3
* :c:data:`scf_energy`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`pt2`
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_hartree_fock_energy`
* :c:func:`roothaan_hall_scf`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`

View File

@ -118,10 +118,10 @@ Subroutines / functions
:columns: 3
* :c:data:`extrapolated_energy`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`pt2_iterations`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
Called by:
@ -139,7 +139,7 @@ Subroutines / functions
.. 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
@ -185,11 +185,11 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_iter`
* :c:data:`energy_iterations`
* :c:data:`n_det_iterations`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
* :c:data:`n_det_iterations`
Called by:

View File

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

View File

@ -68,6 +68,49 @@ EZFIO parameters
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
@ -100,11 +143,8 @@ Providers
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`mo_coef_in_ao_ortho_basis`
* :c:data:`mo_coef_novirt`
* :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e`
@ -113,32 +153,34 @@ Providers
* :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`one_e_dm_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_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
* :c:data:`one_e_spin_density_ao`
* :c:data:`psi_det`
* :c:data:`s_mo_coef`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: mo_coef_begin_iteration
.. c:var:: mo_coef_imag
File : :file:`mo_basis/track_orb.irp.f`
File : :file:`mo_basis/mos.irp.f`
.. 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:
@ -146,7 +188,9 @@ Providers
:columns: 3
* :c:data:`ao_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mpi_master`
@ -202,9 +246,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
@ -269,33 +311,31 @@ Providers
.. hlist::
:columns: 3
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
* :c:data:`banned_excitation`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`core_fock_operator`
* :c:data:`core_fock_operator_erf`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`full_ijkl_bitmask`
* :c:data:`int_erf_3_index`
* :c:data:`list_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_act`
* :c:data:`list_virt`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef_imag`
* :c:data:`mo_coef_in_ao_ortho_basis`
* :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_erf_cache_min`
* :c:data:`mo_integrals_erf_map`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
@ -305,21 +345,34 @@ Providers
* :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
* :c:data:`mo_two_e_int_erf_jj`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`n_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_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_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_mo`
* :c:data:`one_e_dm_mo_alpha`
* :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_for_dft`
* :c:data:`one_e_dm_mo_spin_index`
* :c:data:`one_e_spin_density_ao`
* :c:data:`one_e_spin_density_mo`
@ -408,23 +461,23 @@ Subroutines / functions
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fps_spf_matrix_mo`
* :c:func:`four_idx_novvvv`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Calls:
@ -432,6 +485,7 @@ Subroutines / functions
:columns: 3
* :c:func:`dgemm`
* :c:func:`restore_symmetry`
.. c:function:: give_all_mos_and_grad_and_lapl_at_r:
@ -451,8 +505,8 @@ Subroutines / functions
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Calls:
@ -479,8 +533,8 @@ Subroutines / functions
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Calls:
@ -507,8 +561,8 @@ Subroutines / functions
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
Calls:
@ -519,36 +573,6 @@ Subroutines / functions
* :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:
@ -593,20 +617,10 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`create_guess`
* :c:func:`damping_scf`
* :c:func:`hcore_guess`
* :c:func:`roothaan_hall_scf`
* :c:data:`mo_label`
* :c:data:`mo_num`
Calls:
@ -634,10 +648,10 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`mo_label`
* :c:data:`mo_num`
Calls:
@ -665,10 +679,10 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`mo_label`
* :c:data:`mo_num`
Called by:
@ -687,45 +701,36 @@ Subroutines / functions
* :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
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:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef`
* :c:data:`ao_overlap`
* :c:data:`n_core_orb`
* :c:data:`ao_num`
* :c:data:`list_inact`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`roothaan_hall_scf`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`dsort`
* :c:func:`dgemm`
* :c:func:`svd`
* :c:func:`write_time`
.. c:function:: save_mos:
@ -744,28 +749,21 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_occ`
Called by:
.. hlist::
: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_ortho_mos`
* :c:func:`sort_by_fock_energies`
* :c:func:`swap_mos`
Calls:
@ -773,6 +771,7 @@ Subroutines / functions
:columns: 3
* :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_label`
* :c:func:`ezfio_set_mo_basis_mo_num`
@ -780,6 +779,36 @@ Subroutines / functions
* :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:
@ -796,12 +825,13 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_label`
* :c:data:`mo_occ`
Calls:
@ -809,6 +839,7 @@ Subroutines / functions
:columns: 3
* :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_label`
* :c:func:`ezfio_set_mo_basis_mo_num`

View File

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

View File

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

View File

@ -43,28 +43,40 @@ EZFIO parameters
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
---------
.. 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
@ -85,6 +97,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map`
@ -96,7 +109,6 @@ Providers
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`h_matrix_all_dets`
* :c:data:`h_matrix_cas`
@ -121,6 +133,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map`
@ -132,7 +145,6 @@ Providers
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`h_matrix_all_dets`
* :c:data:`h_matrix_cas`
@ -154,7 +166,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`list_inact`
* :c:data:`list_core`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`n_core_orb`
@ -179,12 +191,15 @@ Providers
.. hlist::
: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_min`
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_act_orb`
* :c:data:`n_core_orb`
@ -226,6 +241,30 @@ Providers
* :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
@ -417,8 +456,8 @@ Providers
.. hlist::
:columns: 3
* :c:data:`banned_excitation`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`coef_hf_selector`
* :c:data:`core_fock_operator`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell`
@ -453,8 +492,6 @@ Providers
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :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:`do_direct_integrals`
* :c:data:`mo_coef`
@ -480,12 +517,12 @@ Providers
.. hlist::
:columns: 3
* :c:data:`ao_integrals_map`
* :c:data:`ao_num`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`core_inact_act_bitmask_4`
* :c:data:`ezfio_filename`
* :c:data:`full_ijkl_bitmask_4`
* :c:data:`list_inact`
* :c:data:`list_core_inact_act`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_coef_transp`
@ -493,9 +530,8 @@ Providers
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_num`
* :c:data:`mpi_master`
* :c:data:`n_core_inact_act_orb`
* :c:data:`n_int`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`read_mo_two_e_integrals`
@ -504,9 +540,12 @@ Providers
.. hlist::
: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:`ci_electronic_energy`
* :c:data:`coef_hf_selector`
* :c:data:`core_fock_operator`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell`
@ -537,6 +576,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map`
@ -573,6 +613,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map`
@ -612,8 +653,6 @@ Providers
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :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:`do_direct_integrals`
* :c:data:`mo_coef`
@ -643,6 +682,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_map`
@ -682,8 +722,6 @@ Providers
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :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:`do_direct_integrals`
* :c:data:`mo_coef`
@ -717,15 +755,13 @@ Providers
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :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:`do_direct_integrals`
* :c:data:`list_inact`
* :c:data:`list_virt`
* :c:data:`mo_coef`
* :c:data:`mo_coef_transp`
* :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_threshold`
* :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:`do_direct_integrals`
* :c:data:`list_inact`
* :c:data:`list_virt`
* :c:data:`mo_coef`
* :c:data:`mo_coef_transp`
* :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_threshold`
* :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:`do_direct_integrals`
* :c:data:`list_inact`
* :c:data:`list_virt`
* :c:data:`mo_coef`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
* :c:data:`n_virt_orb`
@ -824,13 +856,13 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_coef_transp`
* :c:data:`ao_num`
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
* :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`
Called by:
@ -838,6 +870,7 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:func:`four_idx_novvvv2`
* :c:data:`mo_two_e_integrals_in_map`
Calls:
@ -846,7 +879,6 @@ Subroutines / functions
:columns: 3
* :c:func:`bitstring_to_list`
* :c:func:`bitstring_to_str`
* :c:func:`cpu_time`
* :c:func:`get_ao_two_e_integrals`
* :c:func:`insert_into_mo_integrals_map`
@ -872,22 +904,15 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_coef_transp`
* :c:data:`ao_num`
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
* :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`
Called by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
Calls:
.. hlist::
@ -919,29 +944,21 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_coef_transp`
* :c:data:`ao_num`
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
* :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`
Called by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list`
* :c:func:`bitstring_to_str`
* :c:func:`cpu_time`
* :c:func:`get_ao_two_e_integrals`
* :c:func:`insert_into_mo_integrals_map`
@ -950,6 +967,44 @@ Subroutines / functions
* :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:
@ -1005,6 +1060,81 @@ Subroutines / functions
* :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:
@ -1043,17 +1173,18 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_two_e_integrals_in_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`get_d0`
* :c:func:`get_d1`
* :c:func:`get_mo_two_e_integrals_i1j1`
* :c:func:`get_mo_two_e_integrals_ij`
Calls:
@ -1092,14 +1223,6 @@ Subroutines / functions
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :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:
@ -1130,14 +1253,6 @@ Subroutines / functions
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :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:
@ -1159,18 +1274,13 @@ Subroutines / functions
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_integrals_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`i2radix_sort`
* :c:func:`i8radix_sort`
* :c:func:`iradix_sort`
* :c:func:`map_get_many`
* :c:func:`two_e_integrals_index`
* :c:func:`get_mo_two_e_integrals`
.. 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, j for k,l fixed.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_integrals_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`i2radix_sort`
* :c:func:`i8radix_sort`
* :c:func:`iradix_sort`
* :c:func:`map_get_many`
* :c:func:`two_e_integrals_index`
* :c:func:`get_mo_two_e_integrals`
.. c:function:: get_two_e_integral:
@ -1224,9 +1322,10 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`banned_excitation`
* :c:data:`mo_integrals_cache`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_two_e_integrals_in_map`
Calls:
@ -1306,7 +1405,6 @@ Subroutines / functions
:columns: 3
* :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_three_indices`

View File

@ -38,7 +38,7 @@ EZFIO parameters
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 ]
@ -255,10 +255,7 @@ Providers
* :c:data:`ao_pseudo_integrals_local`
* :c:data:`ao_pseudo_integrals_non_local`
* :c:data:`ao_spread_x`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
@ -498,7 +495,7 @@ Providers
.. hlist::
:columns: 3
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`io_nuclear_repulsion`
* :c:data:`mpi_master`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
@ -512,11 +509,7 @@ Providers
* :c:data:`ci_energy`
* :c:data:`core_energy`
* :c:data:`core_energy_erf`
* :c:data:`hf_energy`
* :c:data:`psi_energy_with_nucl_rep`
* :c:data:`pt2_e0_denominator`
* :c:data:`scf_energy`
.. c:var:: slater_bragg_radii

View File

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

View File

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

View File

@ -33,6 +33,76 @@ Programs
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:
@ -80,8 +150,8 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`ezfio_filename`
* :c:data:`n_states`
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_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.
Bash and Python2 are the only shell scripting language permitted for
Bash and Python3 are the only shell scripting language permitted for
executables.
@ -73,11 +73,10 @@ Bash
Python
------
Only Python2 is supported. The reason is that some dependencies use Python2,
and we do not want yet to add an extra dependency to Python3.
Only Python3 is supported.
Python scripts should start with ``#!/usr/bin/env python2`` to mention
explicitly that Python2 has to be used.
Python scripts should start with ``#!/usr/bin/env python3`` to mention
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.

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>`_,
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
which may already exist in other modules. For example, writing a program which
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
: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.
@ -32,10 +32,10 @@ and functions of the |qp| can be found in the appendix of this manual.
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
is stored in a database rather than in sequential text files. Indeed, the
programmer can't know by advance in which order the files will be read, so a
is stored in a database rather than in sequential text files. Consequently, the
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
is a practical answer to this problem.
@ -45,10 +45,10 @@ This is done mostly using the command line or scripting.
.. important::
Each command modifies the state of the |EZFIO| database, so running twice the
same program on the same database may have different behaviors because of the
Each command modifies the state of the |EZFIO| database, so running 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
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.
@ -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
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
: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
orbitals (see :c:func:`save_natorb`) and then :c:func:`scf` optimization, you are not sure to have the lowest scf
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`.
@ -57,6 +57,7 @@ cisd
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`read_wf`
Calls:

View File

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

View File

@ -31,15 +31,16 @@ fcidump
.. hlist::
: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_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::
:columns: 3
* :c:data:`io_mo_one_e_integrals`
* :c:data:`mu_erf_dft`
* :c:data:`density_for_dft`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`mu_erf_dft`
Calls:

View File

@ -16,21 +16,21 @@ molden
.. hlist::
: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_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_l`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :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`
Calls:

View File

@ -30,8 +30,8 @@ pt2
* :c:data:`is_zmq_slave`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`psi_energy`
* :c:data:`threshold_generators`
* :c:data:`read_wf`
* :c:data:`threshold_generators`
Calls:
@ -46,12 +46,7 @@ pt2
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`distributed_davidson`
* :c:data:`level_shift`
* :c:data:`mo_coef`
* :c:data:`pt2_e0_denominator`
* :c:data:`pt2_stoch_istate`
* :c:data:`read_wf`

View File

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

View File

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

View File

@ -32,8 +32,8 @@ save_natorb
.. hlist::
: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_n_e`
* :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_two_e_ints_io_mo_two_e_integrals`
@ -45,5 +45,6 @@ save_natorb
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_occ`
* :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.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
Calls:
.. 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:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`
* :c:data:`mo_label`

View File

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

View File

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

View File

@ -17,8 +17,8 @@ write_integrals_erf
.. hlist::
:columns: 3
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_mo_two_e_integrals`
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_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
------------------------------

View File

@ -1,7 +1,7 @@
# Configuration of IRPF90 package
# 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 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=
# Load dependencies
for i in ezfio.rc irpf90.rc ninja.rc ocaml.rc
for i in ezfio.rc irpf90.rc ocaml.rc
do
source $i
done

View File

@ -93,7 +93,7 @@ function qp()
"prompt")
shift
python2 $QP_ROOT/scripts/hello.py
python3 $QP_ROOT/scripts/hello.py
function _check_ezfio() {
if [[ -d ${EZFIO_FILE} ]] ; then
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
${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

View File

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

View File

@ -38,11 +38,12 @@ def comp_path(path):
from qp_path import QP_ROOT, QP_SRC, QP_EZFIO
LIB = " -lz"
LIB = " -lz"
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"
ROOT_BUILD_NINJA = 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"""#
# _______ _____
# __ __ \___ _______ _________ /____ ________ ___
@ -57,7 +58,7 @@ header = r"""#
# /_/ \__,_/ \___/ /_/|_| \__,_/ _\__, / \___/
# /____/
#
# https://github.com/LCPQ/quantum_package,
# https://github.com/QuantumPackage/qp2,
#
# 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")
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("")
@ -149,7 +161,7 @@ def get_l_module_with_ezfio_cfg():
from os import listdir
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"))]
@ -328,13 +340,13 @@ def ninja_symlink_build(path_module, l_symlink):
if not l_symlink:
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,
" ".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)))), ""]
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"))
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,
" ".join(l_b))
@ -389,7 +401,7 @@ def get_l_file_for_module(path_module):
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"])):
l_template.append(join(path_module.abs, f))
elif f.endswith(".irp.f"):
@ -416,7 +428,7 @@ def get_l_file_for_module(path_module):
def get_file_dependency(d_info_module):
"""
For a module return all the irp.f90 needed files
For a module return all the irp.f90 needed files
"""
d_irp = defaultdict(dict)
@ -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 #
# ~#~#~#~#~#~#~#~#~#~ #
l_depend = list(map(comp_path,d_irp[path_module]["l_depend"]))
l_src = list(map(comp_path,d_irp[path_module]["l_src"]))
l_obj = list(map(comp_path,d_irp[path_module]["l_obj"]))
l_template = list(map(comp_path,d_irp[path_module]["l_template"]))
l_depend = sorted(list(map(comp_path,d_irp[path_module]["l_depend"])))
l_src = sorted(list(map(comp_path,d_irp[path_module]["l_src"])))
l_obj = sorted(list(map(comp_path,d_irp[path_module]["l_obj"])))
l_template = sorted(list(map(comp_path,d_irp[path_module]["l_template"])))
if l_needed_molule:
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 #
# ~#~#~#~#~#~#~#~#~#~#~ #
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 = [
"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")
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 #
@ -659,8 +671,7 @@ def ninja_binaries_build(path_module, l_children, 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")
l_string = ["build module_{0}: phony {1}".format(path_module.rel,
@ -711,7 +722,7 @@ def save_subninja_file(path_module):
""]
path_ninja_cur = join(path_module.abs, "build.ninja")
with open(path_ninja_cur, "w") as f:
f.write(header)
f.write("\n".join(l_string))
@ -830,14 +841,14 @@ if __name__ == "__main__":
dict_root = module_instance.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 #
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
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:
if module_to_compile.rel == "dummy":
continue
@ -884,6 +894,21 @@ if __name__ == "__main__":
# 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("\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:
(begin, end) = list(map(str.strip, dim.split(":")))
except ValueError:
a_size_raw.append(dim)
a_size_raw.append(dim.strip())
else:
if begin[0] == '-':
a_size_raw.append("{0}+{1}+1".format(end, begin[1:]))

View File

@ -82,6 +82,8 @@ END_PROVIDER
mpi_correspondance = {"integer": "MPI_INTEGER",
"integer*8": "MPI_INTEGER8",
"character*(32)": "MPI_CHARACTER",
"character*(64)": "MPI_CHARACTER",
"character*(256)": "MPI_CHARACTER",
"logical": "MPI_LOGICAL",
"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
interface: ezfio,provider,ocaml
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)
endif
END_PROVIDER
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.
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.
return
endif

View File

@ -116,7 +116,7 @@ subroutine ao_two_e_integrals_in_map_slave(thread,iproc)
exit
endif
if (task_id == 0) exit
read(task,*) j, l
call sscanf_dd(task, j, l)
integer, external :: task_done_to_taskserver
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

View File

@ -698,81 +698,3 @@ subroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values)
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
END_DOC
integer, intent(in) :: j,l
integer,intent(out) :: n_integrals
integer(key_kind),intent(out) :: buffer_i(ao_num*ao_num)
integer, intent(in) :: j,l
integer,intent(out) :: n_integrals
integer(key_kind),intent(out) :: buffer_i(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
double precision :: ao_two_e_integral,cpu_1,cpu_2, wall_1, wall_2
double precision :: integral, wall_0
double precision :: thr
integer :: kk, m, j1, i1
logical, external :: ao_two_e_integral_zero
integer :: i,k
double precision :: ao_two_e_integral,cpu_1,cpu_2, wall_1, wall_2
double precision :: integral, wall_0
double precision :: thr
integer :: kk, m, j1, i1
thr = ao_integrals_threshold

View File

@ -125,6 +125,41 @@ subroutine bitstring_to_str( output, string, Nint )
output(ibuf:ibuf) = '|'
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 )
use bitmasks
@ -166,6 +201,25 @@ subroutine debug_det(string,Nint)
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)
use bitmasks
implicit none

View File

@ -3,3 +3,40 @@ type: logical
doc: If true, computes the one- and two-body rdms with perturbation theory
interface: ezfio,provider,ocaml
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
iterations
two_body_rdm
csf

View File

@ -102,7 +102,7 @@ subroutine run_cipsi
call write_double(6,correlation_energy_ratio, 'Correlation ratio')
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)
@ -114,7 +114,10 @@ subroutine run_cipsi
! Add selected determinants
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_det
@ -144,13 +147,13 @@ subroutine run_cipsi
SOFT_TOUCH threshold_generators
endif
print *, 'N_det = ', N_det
print *, 'N_sop = ', N_occ_pattern
print *, 'N_cfg = ', N_configuration
print *, 'N_states = ', N_states
print*, 'correlation_ratio = ', correlation_energy_ratio
call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2)
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 print_extrapolated_energy()
endif

View File

@ -22,7 +22,7 @@ BEGIN_PROVIDER [ double precision, pt2_E0_denominator, (N_states) ]
enddo
else if (h0_type == "Barycentric") then
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)
else
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)
E_shift = 0.d0
if (h0_type == 'SOP') then
j = det_to_occ_pattern(i_generator)
E_shift = psi_det_Hii(i_generator) - psi_occ_pattern_Hii(j)
if (h0_type == 'CFG') then
j = det_to_configuration(i_generator)
E_shift = psi_det_Hii(i_generator) - psi_configuration_Hii(j)
endif
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)
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)
pt2_F(i) = pt2_n_tasks_max*pt2_min_parallel_tasks
enddo
@ -26,7 +26,6 @@ END_PROVIDER
pt2_F(i) = 1
enddo
END_PROVIDER
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_det_hii selection_weight pseudo_sym
if (h0_type == 'SOP') then
PROVIDE psi_occ_pattern_hii det_to_occ_pattern
if (h0_type == 'CFG') then
PROVIDE psi_configuration_hii det_to_configuration
endif
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
stop 'Unable to put pt2_stoch_istate on ZMQ server'
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'
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(:)
TOUCH state_average_weight
call update_pt2_and_variance_weights(pt2_data, N_states)
endif
call update_pt2_and_variance_weights(pt2_data, N_states)
end subroutine

View File

@ -103,7 +103,7 @@ subroutine run_pt2_slave_small(thread,iproc,energy)
if (n_tasks == 0) exit
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
if (b%N == 0) then
! Only first time
@ -183,9 +183,9 @@ subroutine run_pt2_slave_large(thread,iproc,energy)
type(selection_buffer) :: b
logical :: done, buffer_ready
type(pt2_type) :: pt2_data(1)
type(pt2_type) :: pt2_data
integer :: n_tasks, k, N
integer :: i_generator(1), subset
integer :: i_generator, subset
integer :: bsize ! Size of selection buffers
logical :: sending
@ -220,7 +220,11 @@ subroutine run_pt2_slave_large(thread,iproc,energy)
endif
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
! Only first time
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
call wall_time(time0)
call pt2_alloc(pt2_data(1),N_states)
call pt2_alloc(pt2_data,N_states)
b%cur = 0
!double precision :: time2
!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 select_connected(i_generator,energy,pt2_data,b,subset,pt2_F(i_generator))
call wall_time(time1)
!print *, '-->', i_generator(1), time1-time0, n_tasks
integer, external :: tasks_done_to_taskserver
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)
if ( iproc == 1 ) then
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
call omp_unset_lock(global_selection_buffer_lock)
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
call pt2_dealloc(pt2_data(1))
call pt2_dealloc(pt2_data)
end do
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
else
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
! Only first time
call create_selection_buffer(N, N*2, buf)

View File

@ -1,148 +1,5 @@
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)
use bitmasks
implicit none
@ -151,27 +8,56 @@ subroutine get_mask_phase(det1, pm, Nint)
integer(bit_kind), intent(out) :: pm(Nint,2)
integer(bit_kind) :: tmp1, tmp2
integer :: i
pm(1:Nint,1:2) = det1(1:Nint,1:2)
tmp1 = 0_8
tmp2 = 0_8
do i=1,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))
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
select case (Nint)
BEGIN_TEMPLATE
case ($Nint)
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
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
@ -309,15 +195,18 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
integer :: l_a, nmax, idx
integer, allocatable :: indices(:), exc_degree(:), iorder(:)
double precision, parameter :: norm_thr = 1.d-16
allocate (indices(N_det), &
exc_degree(max(N_det_alpha_unique,N_det_beta_unique)))
! Pre-compute excitation degrees wrt alpha determinants
k=1
do i=1,N_det_alpha_unique
call get_excitation_degree_spin(psi_det_alpha_unique(1,i), &
psi_det_generators(1,1,i_generator), exc_degree(i), N_int)
enddo
! Iterate on 0SD beta, and find alphas 0SDTQ such that exc_degree <= 4
do j=1,N_det_beta_unique
call get_excitation_degree_spin(psi_det_beta_unique(1,j), &
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)
if (nt + exc_degree(i) <= 4) then
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
k=k+1
endif
@ -334,11 +223,14 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
enddo
enddo
! Pre-compute excitation degrees wrt beta determinants
do i=1,N_det_beta_unique
call get_excitation_degree_spin(psi_det_beta_unique(1,i), &
psi_det_generators(1,2,i_generator), exc_degree(i), N_int)
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
call get_excitation_degree_spin(psi_det_alpha_unique(1,j), &
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( &
psi_bilinear_matrix_order( &
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
k=k+1
endif
@ -587,11 +479,17 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
endif
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
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
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, external :: diag_H_mat_elem_fock
double precision :: E_shift
logical, external :: detEq
double precision, allocatable :: values(:)
integer, allocatable :: keys(:,:)
integer :: nkeys
double precision :: s_weight(N_states,N_states)
PROVIDE dominant_dets_of_cfgs N_dominant_dets_of_cfgs
do jstate=1,N_states
do istate=1,N_states
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)
E_shift = 0.d0
if (h0_type == 'SOP') then
j = det_to_occ_pattern(i_generator)
E_shift = psi_det_Hii(i_generator) - psi_occ_pattern_Hii(j)
if (h0_type == 'CFG') then
j = det_to_configuration(i_generator)
E_shift = psi_det_Hii(i_generator) - psi_configuration_Hii(j)
endif
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(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)))
if( val == 0d0) cycle
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
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)
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
coef = 0.d0
logical :: do_diag
@ -792,11 +745,11 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
endif
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 :: 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
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
! ! Gram-Schmidt using input overlap matrix
! do istate=1,N_states
! 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)
do jstate=1,N_states
pt2_data % overlap(jstate,istate) += coef(jstate) * coef(istate)
enddo
pt2_data % variance(istate) += alpha_h_psi * alpha_h_psi
pt2_data % pt2(istate) += e_pert(istate)
pt2_data % overlap(:,istate) = pt2_data % overlap(:,istate) + coef(:) * coef(istate)
pt2_data % variance(istate) = pt2_data % variance(istate) + alpha_h_psi * alpha_h_psi
pt2_data % pt2(istate) = pt2_data % pt2(istate) + e_pert(istate)
!!!DEBUG
! 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)
! Variance selection
! w = 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
! if (istate == jstate) cycle
! w = w + dabs(alpha_h_psi*mat(jstate,p1,p2)) * s_weight(istate,jstate)
! enddo
if (h0_type == 'CFG') then
w = min(w, - alpha_h_psi * alpha_h_psi * s_weight(istate,istate)) &
/ c0_weight(istate)
else
w = min(w, - alpha_h_psi * alpha_h_psi * s_weight(istate,istate))
endif
case(6)
! w = 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
! if (istate == jstate) cycle
! w = w + dabs(coef(istate)*coef(jstate)) * s_weight(istate,jstate)
! enddo
if (h0_type == 'CFG') then
w = min(w,- coef(istate) * coef(istate) * s_weight(istate,istate)) &
/ c0_weight(istate)
else
w = min(w,- coef(istate) * coef(istate) * s_weight(istate,istate))
endif
case default
! Energy selection
! w = w + e_pert(istate) * s_weight(istate,istate)
w = min(w, e_pert(istate) * s_weight(istate,istate))
! do jstate=1,N_states
! if (istate == jstate) cycle
! w = w + dabs(X(istate)*X(jstate)) * s_weight(istate,jstate)
! enddo
if (h0_type == 'CFG') then
w = min(w, e_pert(istate) * s_weight(istate,istate)) / c0_weight(istate)
else
w = min(w, e_pert(istate) * s_weight(istate,istate))
endif
end select
end do
if(pseudo_sym)then
if(dabs(mat(1, p1, p2)).lt.thresh_sym)then
w = 0.d0
endif
integer(bit_kind) :: occ(N_int,2), n
if (h0_type == 'CFG') then
do k=1,N_int
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
! w = dble(n) * w
if(w <= buf%mini) then
call add_to_selection_buffer(buf, det, w)
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)
hij = mo_two_e_integral(p1, p2, h1, h2) * phase
end if
mat(:, p1, p2) += coefs(:) * hij
mat(:, p1, p2) = mat(:, p1, p2) + coefs(:) * hij
end do
end do
else ! AA BB
@ -1692,7 +1645,7 @@ subroutine get_d0_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
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)
end if
mat(:, puti, putj) += coefs(:) * hij
mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end do
end do
end if
@ -1751,18 +1704,18 @@ subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
do putj=1, hfix-1
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)
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
do putj=hfix+1, mo_num
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)
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
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
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
@ -1776,22 +1729,22 @@ subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
putj = p1
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)
tmp_row(:,puti) += hij * coefs(:)
tmp_row(:,puti) = tmp_row(:,puti) + hij * coefs(:)
end if
putj = p2
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)
tmp_row2(:,puti) += hij * coefs(:)
tmp_row2(:,puti) = tmp_row2(:,puti) + hij * coefs(:)
end if
end do
if(mi == 1) then
mat(:,:,p1) += tmp_row(:,:)
mat(:,:,p2) += tmp_row2(:,:)
mat(:,:,p1) = mat(:,:,p1) + tmp_row(:,:)
mat(:,:,p2) = mat(:,:,p2) + tmp_row2(:,:)
else
mat(:,p1,:) += tmp_row(:,:)
mat(:,p2,:) += tmp_row2(:,:)
mat(:,p1,:) = mat(:,p1,:) + tmp_row(:,:)
mat(:,p2,:) = mat(:,p2,:) + tmp_row2(:,:)
end if
else
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
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)
tmp_row(:,putj) += hij * coefs(:)
tmp_row(:,putj) = tmp_row(:,putj) + hij * coefs(:)
end do
do putj=hfix+1,mo_num
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)
tmp_row(:,putj) += hij * coefs(:)
tmp_row(:,putj) = tmp_row(:,putj) + hij * coefs(:)
end do
mat(:, :puti-1, puti) += tmp_row(:,:puti-1)
mat(:, puti, puti:) += tmp_row(:,puti:)
mat(:, :puti-1, puti) = mat(:, :puti-1, puti) + tmp_row(:,:puti-1)
mat(:, puti, puti:) = mat(:, puti, puti:) + tmp_row(:,puti:)
end do
else
hfix = h(1,mi)
@ -1827,19 +1780,19 @@ subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
putj = p2
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)
tmp_row(:,puti) += hij * coefs(:)
tmp_row(:,puti) = tmp_row(:,puti) + hij * coefs(:)
end if
putj = p1
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)
tmp_row2(:,puti) += hij * coefs(:)
tmp_row2(:,puti) = tmp_row2(:,puti) + hij * coefs(:)
end if
end do
mat(:,:p2-1,p2) += tmp_row(:,:p2-1)
mat(:,p2,p2:) += tmp_row(:,p2:)
mat(:,:p1-1,p1) += tmp_row2(:,:p1-1)
mat(:,p1,p1:) += tmp_row2(:,p1:)
mat(:,:p2-1,p2) = mat(:,:p2-1,p2) + tmp_row(:,:p2-1)
mat(:,p2,p2:) = mat(:,p2,p2:) + tmp_row(:,p2:)
mat(:,:p1-1,p1) = mat(:,:p1-1,p1) + tmp_row2(:,:p1-1)
mat(:,p1,p1:) = mat(:,p1,p1:) + tmp_row2(:,p1:)
end if
end if
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
call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int)
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
@ -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)
if(ma == 1) then
mat(:, putj, puti) += coefs(:) * hij
mat(:, putj, puti) = mat(:, putj, puti) + coefs(:) * hij
else
mat(:, puti, putj) += coefs(:) * hij
mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end if
end do
else
@ -1933,7 +1886,7 @@ subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
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)
mat(:, puti, putj) += coefs(:) * hij
mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end do
end do
end if
@ -1953,7 +1906,7 @@ subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
p1 = p(i1, 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)
mat(:, puti, putj) += coefs(:) * hij
mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end do
end do
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)
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
else ! tip == 4
puti = p(1, sp)
@ -1978,7 +1931,7 @@ subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p,
h1 = h(1, 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)
mat(:, puti, putj) += coefs(:) * hij
mat(:, puti, putj) = mat(:, puti, putj) + coefs(:) * hij
end if
end if
end if

View File

@ -175,7 +175,7 @@ subroutine make_selection_buffer_s2(b)
! Sort
integer, allocatable :: iorder(:)
integer*8, allocatable :: bit_tmp(:)
integer*8, external :: occ_pattern_search_key
integer*8, external :: configuration_search_key
integer(bit_kind), allocatable :: tmp_array(:,:,:)
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))
enddo
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
deallocate(b%det)
@ -279,7 +279,7 @@ subroutine make_selection_buffer_s2(b)
! Create determinants
n_d = 0
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
if (n_d > b%cur) then
! if (n_d - b%cur > b%cur - n_d + sze) then
@ -295,8 +295,8 @@ subroutine make_selection_buffer_s2(b)
k=1
do i=1,n_p
n=n_d
call occ_pattern_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_size(o(1,1,i),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
b%val(j) = val(i)
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
END_DOC
call omp_set_nested(.false.)
call omp_set_max_active_levels(1)
distributed_davidson = .False.
read_wf = .False.
SOFT_TOUCH read_wf distributed_davidson
@ -100,7 +100,7 @@ subroutine run_slave_main
IRP_IF MPI_DEBUG
call mpi_print('zmq_get_dvector threshold_generators')
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
call mpi_print('zmq_get_dvector energy')
IRP_ENDIF
@ -122,7 +122,7 @@ subroutine run_slave_main
IRP_ENDIF
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)
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
print *, 'N_det', N_det
@ -171,9 +171,9 @@ subroutine run_slave_main
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 omp_set_nested(.False.)
call omp_set_max_active_levels(1)
print *, mpi_rank, ': Davidson done'
!---
@ -212,7 +212,7 @@ subroutine run_slave_main
IRP_IF MPI_DEBUG
call mpi_print('zmq_get_dvector threshold_generators')
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
call mpi_print('zmq_get_dvector energy')
IRP_ENDIF
@ -230,7 +230,8 @@ subroutine run_slave_main
IRP_ENDIF
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)
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 write_double(6,(t1-t0),'Broadcast time')
@ -296,11 +297,17 @@ subroutine run_slave_main
print *, 'Number of threads', nproc_target
endif
if (h0_type == 'SOP') then
PROVIDE det_to_occ_pattern
if (h0_type == 'CFG') then
PROVIDE det_to_configuration
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
print *, 'Running PT2'
endif

View File

@ -92,7 +92,7 @@ subroutine run_stochastic_cipsi
call write_double(6,correlation_energy_ratio, 'Correlation ratio')
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)
@ -104,7 +104,9 @@ subroutine run_stochastic_cipsi
! Add selected determinants
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_det
@ -131,7 +133,7 @@ subroutine run_stochastic_cipsi
call save_energy(psi_energy_with_nucl_rep, pt2_data % pt2)
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 print_extrapolated_energy()
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
stop 'Unable to put selection_weight on ZMQ server'
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'
endif
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
[[ -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

View File

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

View File

@ -110,7 +110,8 @@ function run() {
[[ -n $TRAVIS ]] && skip
qp set_file cu_nh3_4_2plus.ezfio
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

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