mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-06-01 19:05:29 +02:00
Compare commits
228 Commits
Author | SHA1 | Date | |
---|---|---|---|
425e7e4ee0 | |||
1c2b737586 | |||
de288449f5 | |||
ecfdaf9eea | |||
c8b91f980e | |||
145a03ce66 | |||
4f293298c3 | |||
cf479a80af | |||
e35e65ea2c | |||
4fe07d97b0 | |||
43b83ee8e9 | |||
88cffcb269 | |||
8e0a9be9ad | |||
6848470850 | |||
43648cddb0 | |||
4173cb5b70 | |||
0c8845f5f2 | |||
3d5788d370 | |||
b22c835ec8 | |||
4190aee606 | |||
10bcd771fd | |||
e4ce9ef219 | |||
d93b529b36 | |||
a209b1b8cb | |||
4e692558a6 | |||
|
9e29a56ed3 | ||
7a3379a43e | |||
a4db5a87e0 | |||
868988b446 | |||
c71c63d3d6 | |||
f07db955f8 | |||
6a4ce5bf94 | |||
57657cb163 | |||
54d836f029 | |||
15f435428a | |||
|
a7a43dafb6 | ||
|
9abc0c996a | ||
|
64523de3ae | ||
|
e0af6d8425 | ||
|
dd2f0a2c07 | ||
|
8e6894b7bd | ||
|
9d3743e530 | ||
|
7bc6b88854 | ||
|
1fd93d76b6 | ||
c63b69e8da | |||
df9299c661 | |||
f3a3c3ee63 | |||
70a203d9e5 | |||
7aff1a33a9 | |||
1839809432 | |||
|
65d7ca1aa2 | ||
00859876d5 | |||
a29c67a738 | |||
fdd6392d57 | |||
0a8d57abd9 | |||
|
a8de10987f | ||
|
cb8c823a2c | ||
|
cfdaf722df | ||
|
88cf5d23f1 | ||
|
a56488e3a8 | ||
|
fdc418d72a | ||
|
28912ce5ca | ||
0618372b29 | |||
|
e059c9b734 | ||
37588e5207 | |||
|
b088a78fef | ||
6b7f2411b1 | |||
|
fee83210a7 | ||
f816773102 | |||
|
a42c79ca34 | ||
|
1769efddca | ||
9a15fecd6a | |||
0ef067337d | |||
|
6e35f8f8f8 | ||
|
9175fb21c9 | ||
|
2ea789bee9 | ||
|
89aaf30460 | ||
|
ee4074b3a9 | ||
|
df2d43d51c | ||
|
9a9e2cc049 | ||
|
72daa98fa3 | ||
00770d6c95 | |||
92a3ecae45 | |||
590463063f | |||
|
b0fdf35983 | ||
|
099645e3fb | ||
|
36bae4971d | ||
b108b69726 | |||
9927328138 | |||
|
5226bb2ef4 | ||
e9463ae681 | |||
30096e07ea | |||
ce43b16fc0 | |||
|
8e2d2120b0 | ||
|
1fc6b914f3 | ||
|
b9932c0e77 | ||
|
7fc4c81485 | ||
3319d78816 | |||
9c49be2f59 | |||
ad1fd55fe9 | |||
|
fcde51ea00 | ||
ba08b70d2f | |||
|
6b9649fc2c | ||
|
ac805f9f01 | ||
|
fa877df399 | ||
|
6fa207a9fb | ||
|
9dc8c0653d | ||
|
22c99a0484 | ||
|
c58bf2aa8f | ||
|
fbb946d8f4 | ||
d619c621fc | |||
1b9a75f488 | |||
|
419ed79c49 | ||
5b5df61960 | |||
56b57eb2e1 | |||
650101a2de | |||
5296ce031d | |||
c89946b847 | |||
b5b0cdb27a | |||
abc0affb64 | |||
11427ec0eb | |||
|
42fd8ec68b | ||
|
da2ee20723 | ||
|
824336d939 | ||
|
acd26fdeb0 | ||
|
c9caec5f7e | ||
|
9e1b2f35d3 | ||
6269cb6516 | |||
74dac4680c | |||
98a9f3ab09 | |||
|
cc334b34b7 | ||
0b83c1ab8b | |||
c0a4b7890e | |||
|
8018440410 | ||
|
3cab869c2d | ||
b91eb884d6 | |||
|
9b2ba694d9 | ||
ec5b391731 | |||
|
bb8dd171b8 | ||
|
ba73d91fd3 | ||
|
8534b5c104 | ||
31bb892b65 | |||
|
35a773ef7e | ||
|
bab59335f3 | ||
|
3dd43d5bba | ||
|
430606a617 | ||
|
e163f94aeb | ||
|
a9f4f3324f | ||
|
79db77633e | ||
|
7bcc963a32 | ||
|
2f40ff5776 | ||
|
ea67ba8632 | ||
|
da7edff3b7 | ||
|
c3c65927ca | ||
|
fbcd70db2c | ||
|
b4ba0eda6f | ||
|
ef60141fbf | ||
bc042cefa2 | |||
f5bacaa999 | |||
|
bc1957c45a | ||
|
e3beae681b | ||
|
368450f72b | ||
|
a6c26a75e9 | ||
|
6235c2015d | ||
6bac69abac | |||
4f296efb66 | |||
cf6ecaa266 | |||
b25489e14c | |||
a6b02cf59e | |||
|
a25c71f881 | ||
|
6e8b1e5d0c | ||
6a1c10f4fb | |||
b5637661fa | |||
d4d4393956 | |||
bcdc172aec | |||
0f320db735 | |||
ea55dc860b | |||
7690a8d654 | |||
c0e76b8f26 | |||
c41737b494 | |||
62386b2dbd | |||
22ed2e8baf | |||
b95c8142a5 | |||
8ceb5734aa | |||
|
9fc4b6d63b | ||
|
01a77edd36 | ||
|
4745c73c8f | ||
280940dd11 | |||
bae76e9243 | |||
ec282e5b5d | |||
|
3f38c0a9da | ||
|
c895000b45 | ||
|
88010afecd | ||
9ff4f2437c | |||
6b4b7afbe4 | |||
b78bbda53b | |||
aa9ad710a9 | |||
|
f437a84adb | ||
|
1b7463b86b | ||
|
6fba691382 | ||
b911b8d279 | |||
c7599febfb | |||
|
fb98da5fb4 | ||
|
b593352c0f | ||
|
56d5843210 | ||
|
b23b160c4e | ||
7fab7107f3 | |||
d22670ffb8 | |||
f66ee4343a | |||
2bd1a07b6c | |||
3632cb9c70 | |||
85ba1583d5 | |||
5e555a2696 | |||
1cbb555220 | |||
87bb3da4ed | |||
538b6bf149 | |||
d4a1e6e625 | |||
6a47bb309d | |||
d64dfb3d59 | |||
e920be4587 | |||
7a6598f6dd | |||
0db547ab4b | |||
fd1494482f | |||
b2a593dd2f | |||
b51679b35e | |||
a2b2c9958a | |||
6757810f56 | |||
b567cd891f |
32
.readthedocs.yaml
Normal file
32
.readthedocs.yaml
Normal file
|
@ -0,0 +1,32 @@
|
|||
# .readthedocs.yaml
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
# Set the OS, Python version and other tools you might need
|
||||
build:
|
||||
os: ubuntu-22.04
|
||||
tools:
|
||||
python: "3.12"
|
||||
# You can also specify other tool versions:
|
||||
# nodejs: "19"
|
||||
# rust: "1.64"
|
||||
# golang: "1.19"
|
||||
|
||||
# Build documentation in the "docs/" directory with Sphinx
|
||||
sphinx:
|
||||
configuration: docs/source/conf.py
|
||||
|
||||
# Optionally build your docs in additional formats such as PDF and ePub
|
||||
# formats:
|
||||
# - pdf
|
||||
# - epub
|
||||
|
||||
# Optional but recommended, declare the Python requirements required
|
||||
# to build your documentation
|
||||
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
|
||||
python:
|
||||
install:
|
||||
- requirements: docs/requirements.txt
|
2
Makefile
2
Makefile
|
@ -2,4 +2,4 @@ default: build.ninja
|
|||
bash -c "source quantum_package.rc ; ninja"
|
||||
|
||||
build.ninja:
|
||||
@bash -c ' echo '' ; echo xxxxxxxxxxxxxxxxxx ; echo "The QP is not configured yet. Please run the ./configure command" ; echo xxxxxxxxxxxxxxxxxx ; echo '' ; ./configure --help' | more
|
||||
@bash -c ' echo '' ; echo xxxxxxxxxxxxxxxxxx ; echo "QP is not configured yet. Please run the ./configure command" ; echo xxxxxxxxxxxxxxxxxx ; echo '' ; ./configure --help' | more
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
**Important**: The Intel ifx compiler is not able to produce correct
|
||||
executables for Quantum Package. Please use ifort as long as you can, and
|
||||
consider switching to gfortran in the long term.
|
||||
|
||||
---
|
||||
|
||||
|
||||
# Quantum Package 2.2
|
||||
|
||||
<!--- img src="https://raw.githubusercontent.com/QuantumPackage/qp2/master/data/qp2.png" width="250" --->
|
||||
|
|
4
bin/python
Executable file
4
bin/python
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
exec python3 $@
|
||||
|
|
@ -224,14 +224,18 @@ def write_ezfio(res, filename):
|
|||
exponent += [p.expo for p in b.prim]
|
||||
ang_mom.append(str.count(s, "z"))
|
||||
shell_prim_num.append(len(b.prim))
|
||||
shell_index += [nshell_tot+1] * len(b.prim)
|
||||
shell_index += [nshell_tot] * len(b.prim)
|
||||
|
||||
shell_num = len(ang_mom)
|
||||
assert(shell_index[0] == 1)
|
||||
assert(shell_index[-1] == shell_num)
|
||||
|
||||
# ~#~#~#~#~ #
|
||||
# W r i t e #
|
||||
# ~#~#~#~#~ #
|
||||
|
||||
ezfio.set_basis_basis("Read from ResultsFile")
|
||||
ezfio.set_basis_shell_num(len(ang_mom))
|
||||
ezfio.set_basis_shell_num(shell_num)
|
||||
ezfio.set_basis_basis_nucleus_index(nucl_index)
|
||||
ezfio.set_basis_prim_num(len(coefficient))
|
||||
|
||||
|
@ -256,6 +260,7 @@ def write_ezfio(res, filename):
|
|||
|
||||
MoTag = res.determinants_mo_type
|
||||
ezfio.set_mo_basis_mo_label('Orthonormalized')
|
||||
ezfio.set_determinants_mo_label('Orthonormalized')
|
||||
MO_type = MoTag
|
||||
allMOs = res.mo_sets[MO_type]
|
||||
|
||||
|
@ -308,10 +313,19 @@ def write_ezfio(res, filename):
|
|||
|
||||
MoMatrix = []
|
||||
sym0 = [i.sym for i in res.mo_sets[MO_type]]
|
||||
sym = [i.sym for i in res.mo_sets[MO_type]]
|
||||
sym = [i.sym for i in res.mo_sets[MO_type]]
|
||||
for i in range(len(sym)):
|
||||
sym[MOmap[i]] = sym0[i]
|
||||
|
||||
irrep = {}
|
||||
for i in sym:
|
||||
irrep[i] = 0
|
||||
|
||||
for i, j in enumerate(irrep.keys()):
|
||||
irrep[j] = i+1
|
||||
|
||||
sym = [ irrep[k] for k in sym ]
|
||||
|
||||
MoMatrix = []
|
||||
for i in range(len(MOs)):
|
||||
m = MOs[i]
|
||||
|
@ -328,6 +342,7 @@ def write_ezfio(res, filename):
|
|||
ezfio.set_mo_basis_mo_num(mo_num)
|
||||
ezfio.set_mo_basis_mo_coef(MoMatrix)
|
||||
ezfio.set_mo_basis_mo_occ(OccNum)
|
||||
ezfio.set_mo_basis_mo_symmetry(sym)
|
||||
|
||||
print("OK")
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ end
|
|||
|
||||
def get_repositories():
|
||||
l_result = [f for f in os.listdir(QP_PLUGINS) \
|
||||
if f not in [".gitignore", "local"] ]
|
||||
if f not in [".gitignore", "local", "README.rst"] ]
|
||||
return sorted(l_result)
|
||||
|
||||
|
||||
|
@ -127,6 +127,7 @@ def main(arguments):
|
|||
l_repository = list(d_tmp.keys())
|
||||
if l_repository == []:
|
||||
l_result = []
|
||||
l_plugins = []
|
||||
else:
|
||||
m_instance = ModuleHandler(l_repository)
|
||||
l_plugins = [module for module in m_instance.l_module]
|
||||
|
|
|
@ -83,6 +83,7 @@ def main(arguments):
|
|||
elif charge <= 118: n_frozen += 43
|
||||
|
||||
elif arguments["--small"]:
|
||||
for charge in ezfio.nuclei_nucl_charge:
|
||||
if charge <= 4: pass
|
||||
elif charge <= 18: n_frozen += 1
|
||||
elif charge <= 36: n_frozen += 5
|
||||
|
|
3
bin/qpsh
3
bin/qpsh
|
@ -1,6 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
export QP_ROOT=$(dirname "$(readlink -f "$0")")/..
|
||||
REALPATH=$( cd "$(dirname "$0")" ; pwd -P )
|
||||
export QP_ROOT=${REALPATH}/..
|
||||
|
||||
bash --init-file <(cat << EOF
|
||||
[[ -f /etc/bashrc ]] && source /etc/bashrc
|
||||
|
|
23
bin/zcat
Executable file
23
bin/zcat
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
# On Darwin: try gzcat if available, otherwise use Python
|
||||
|
||||
if [[ $(uname -s) = Darwin ]] ; then
|
||||
which gzcat &> /dev/null
|
||||
if [[ $? -eq 0 ]] ; then
|
||||
exec gzcat $@
|
||||
else
|
||||
|
||||
exec python3 << EOF
|
||||
import sys
|
||||
import gzip
|
||||
with gzip.open("$1", "rt") as f:
|
||||
print(f.read())
|
||||
EOF
|
||||
fi
|
||||
else
|
||||
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||
command=$(which -a zcat | grep -v "$SCRIPTPATH/" | head -1)
|
||||
exec $command $@
|
||||
fi
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
#
|
||||
[COMMON]
|
||||
FC : gfortran -g -ffree-line-length-none -I . -fPIC -march=native
|
||||
FC : gfortran -g -ffree-line-length-none -I . -fPIC -march=native -std=legacy
|
||||
LAPACK_LIB : -lblas -llapack
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 --assert -DSET_NESTED
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#
|
||||
#
|
||||
[COMMON]
|
||||
FC : gfortran -g -ffree-line-length-none -I . -fPIC -march=native
|
||||
FC : gfortran -g -ffree-line-length-none -I . -fPIC -march=native -std=legacy
|
||||
LAPACK_LIB : -larmpl_lp64_mp
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 --assert -DSET_NESTED
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
#
|
||||
[COMMON]
|
||||
FC : gfortran -ffree-line-length-none -I . -mavx -g -fPIC
|
||||
FC : gfortran -ffree-line-length-none -I . -mavx -g -fPIC -std=legacy
|
||||
LAPACK_LIB : -llapack -lblas
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DSET_NESTED
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
#
|
||||
[COMMON]
|
||||
FC : gfortran -g -ffree-line-length-none -I . -fPIC
|
||||
FC : gfortran -g -ffree-line-length-none -I . -fPIC -std=legacy
|
||||
LAPACK_LIB : -lblas -llapack
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 --assert -DSET_NESTED
|
||||
|
|
62
config/gfortran_macos.cfg
Normal file
62
config/gfortran_macos.cfg
Normal file
|
@ -0,0 +1,62 @@
|
|||
# Common flags
|
||||
##############
|
||||
#
|
||||
# -ffree-line-length-none : Needed for IRPF90 which produces long lines
|
||||
# -lblas -llapack : Link with libblas and liblapack libraries provided by the system
|
||||
# -I . : Include the curent directory (Mandatory)
|
||||
#
|
||||
# --ninja : Allow the utilisation of ninja. (Mandatory)
|
||||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
#
|
||||
[COMMON]
|
||||
FC : gfortran -ffree-line-length-none -I . -g -fPIC -std=legacy
|
||||
LAPACK_LIB : -llapack -lblas
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DSET_NESTED -DMACOS
|
||||
|
||||
# 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
|
||||
####################
|
||||
#
|
||||
# -Ofast : Disregard strict standards compliance. Enables all -O3 optimizations.
|
||||
# It also enables optimizations that are not valid
|
||||
# for all standard-compliant programs. It turns on
|
||||
# -ffast-math and the Fortran-specific
|
||||
# -fno-protect-parens and -fstack-arrays.
|
||||
[OPT]
|
||||
FCFLAGS : -Ofast -march=native
|
||||
|
||||
# Profiling flags
|
||||
#################
|
||||
#
|
||||
[PROFILE]
|
||||
FC : -p -g
|
||||
FCFLAGS : -Ofast
|
||||
|
||||
# Debugging flags
|
||||
#################
|
||||
#
|
||||
# -fcheck=all : Checks uninitialized variables, array subscripts, etc...
|
||||
# -g : Extra debugging information
|
||||
#
|
||||
[DEBUG]
|
||||
FCFLAGS : -fcheck=all -g
|
||||
|
||||
# OpenMP flags
|
||||
#################
|
||||
#
|
||||
[OPENMP]
|
||||
FC : -fopenmp
|
||||
IRPF90_FLAGS : --openmp
|
||||
|
62
config/gfortran_mkl.cfg
Normal file
62
config/gfortran_mkl.cfg
Normal file
|
@ -0,0 +1,62 @@
|
|||
# Common flags
|
||||
##############
|
||||
#
|
||||
# -ffree-line-length-none : Needed for IRPF90 which produces long lines
|
||||
# -lblas -llapack : Link with libblas and liblapack libraries provided by the system
|
||||
# -I . : Include the curent directory (Mandatory)
|
||||
#
|
||||
# --ninja : Allow the utilisation of ninja. (Mandatory)
|
||||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
#
|
||||
[COMMON]
|
||||
FC : gfortran -ffree-line-length-none -I . -mavx -g -fPIC -std=legacy
|
||||
LAPACK_LIB : -I${MKLROOT}/include -L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_core -lpthread -lm -ldl -lmkl_gnu_thread -lgomp -fopenmp
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DSET_NESTED
|
||||
|
||||
# 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
|
||||
####################
|
||||
#
|
||||
# -Ofast : Disregard strict standards compliance. Enables all -O3 optimizations.
|
||||
# It also enables optimizations that are not valid
|
||||
# for all standard-compliant programs. It turns on
|
||||
# -ffast-math and the Fortran-specific
|
||||
# -fno-protect-parens and -fstack-arrays.
|
||||
[OPT]
|
||||
FCFLAGS : -Ofast -mavx
|
||||
|
||||
# Profiling flags
|
||||
#################
|
||||
#
|
||||
[PROFILE]
|
||||
FC : -p -g
|
||||
FCFLAGS : -Ofast
|
||||
|
||||
# Debugging flags
|
||||
#################
|
||||
#
|
||||
# -fcheck=all : Checks uninitialized variables, array subscripts, etc...
|
||||
# -g : Extra debugging information
|
||||
#
|
||||
[DEBUG]
|
||||
FCFLAGS : -fcheck=all -g
|
||||
|
||||
# OpenMP flags
|
||||
#################
|
||||
#
|
||||
[OPENMP]
|
||||
FC : -fopenmp
|
||||
IRPF90_FLAGS : --openmp
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
#
|
||||
[COMMON]
|
||||
FC : mpif90 -ffree-line-length-none -I . -g -fPIC
|
||||
FC : mpif90 -ffree-line-length-none -I . -g -fPIC -std=legacy
|
||||
LAPACK_LIB : -lblas -llapack
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DMPI -DSET_NESTED
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
#
|
||||
[COMMON]
|
||||
FC : gfortran -g -ffree-line-length-none -I . -fPIC -march=native
|
||||
FC : gfortran -g -ffree-line-length-none -I . -fPIC -march=native -std=legacy
|
||||
LAPACK_LIB : -lopenblas
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 --assert -DSET_NESTED
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
[COMMON]
|
||||
FC : ifort -fpic
|
||||
FC : ifort -fpic -diag-disable=10448
|
||||
LAPACK_LIB : -mkl=parallel
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DINTEL
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
[COMMON]
|
||||
FC : mpiifort -fpic
|
||||
FC : mpiifort -fpic -diag-disable=10448
|
||||
LAPACK_LIB : -mkl=parallel
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
[COMMON]
|
||||
FC : ifort -fpic
|
||||
FC : ifort -fpic -diag-disable=10448
|
||||
LAPACK_LIB : -mkl=parallel
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 --define=WITHOUT_TRAILZ --define=WITHOUT_SHIFTRL
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
[COMMON]
|
||||
FC : ifort -fpic
|
||||
FC : ifort -fpic -diag-disable=10448
|
||||
LAPACK_LIB : -mkl=parallel
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 --assert -DINTEL
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
[COMMON]
|
||||
FC : mpiifort -fpic
|
||||
FC : mpiifort -fpic -diag-disable=10448
|
||||
LAPACK_LIB : -mkl=parallel
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DINTEL
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
[COMMON]
|
||||
FC : ifort -fpic
|
||||
FC : ifort -fpic -diag-disable=10448
|
||||
LAPACK_LIB : -mkl=parallel
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DINTEL
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
[COMMON]
|
||||
FC : ifort -fpic
|
||||
FC : ifort -fpic -diag-disable=10448
|
||||
LAPACK_LIB : -mkl=parallel
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DINTEL
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
[COMMON]
|
||||
FC : mpiifort -fpic
|
||||
FC : mpiifort -fpic -diag-disable=10448
|
||||
LAPACK_LIB : -mkl=parallel
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=32 -DMPI -DINTEL
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
||||
#
|
||||
[COMMON]
|
||||
FC : ifort -fpic -diag-disable 5462
|
||||
FC : ifort -fpic -diag-disable=5462 -diag-disable=10448
|
||||
LAPACK_LIB : -mkl=parallel
|
||||
IRPF90 : irpf90
|
||||
IRPF90_FLAGS : --ninja --align=64 -DINTEL
|
||||
|
|
29
configure
vendored
29
configure
vendored
|
@ -9,7 +9,7 @@ echo "QP_ROOT="$QP_ROOT
|
|||
unset CC
|
||||
unset CCXX
|
||||
|
||||
TREXIO_VERSION=2.3.2
|
||||
TREXIO_VERSION=2.4.2
|
||||
|
||||
# Force GCC instead of ICC for dependencies
|
||||
export CC=gcc
|
||||
|
@ -19,7 +19,11 @@ git submodule init
|
|||
git submodule update
|
||||
|
||||
# Update ARM or x86 dependencies
|
||||
ARCHITECTURE=$(uname -m)
|
||||
SYSTEM=$(uname -s)
|
||||
if [[ $SYSTEM = "Linux" ]] ; then
|
||||
SYSTEM=""
|
||||
fi
|
||||
ARCHITECTURE=$(uname -m)$SYSTEM
|
||||
cd ${QP_ROOT}/external/qp2-dependencies
|
||||
git checkout master
|
||||
git pull
|
||||
|
@ -191,7 +195,7 @@ if [[ "${PACKAGES}.x" != ".x" ]] ; then
|
|||
fi
|
||||
|
||||
if [[ ${PACKAGES} = all ]] ; then
|
||||
PACKAGES="zlib ninja zeromq f77zmq gmp ocaml docopt resultsFile bats trexio qmckl"
|
||||
PACKAGES="zlib ninja zeromq f77zmq gmp ocaml docopt resultsFile bats trexio"
|
||||
fi
|
||||
|
||||
|
||||
|
@ -215,7 +219,7 @@ EOF
|
|||
tar -zxf trexio-${VERSION}.tar.gz && rm trexio-${VERSION}.tar.gz
|
||||
cd trexio-${VERSION}
|
||||
./configure --prefix=\${QP_ROOT} --without-hdf5 CFLAGS='-g'
|
||||
make -j 8 && make -j 8 check && make -j 8 install
|
||||
(make -j 8 || make) && make check && make -j 8 install
|
||||
tar -zxvf "\${QP_ROOT}"/external/qp2-dependencies/${ARCHITECTURE}/ninja.tar.gz
|
||||
mv ninja "\${QP_ROOT}"/bin/
|
||||
EOF
|
||||
|
@ -229,7 +233,7 @@ EOF
|
|||
tar -zxf trexio-${VERSION}.tar.gz && rm trexio-${VERSION}.tar.gz
|
||||
cd trexio-${VERSION}
|
||||
./configure --prefix=\${QP_ROOT} CFLAGS="-g"
|
||||
make -j 8 && make -j 8 check && make -j 8 install
|
||||
(make -j 8 || make) && make check && make -j 8 install
|
||||
EOF
|
||||
elif [[ ${PACKAGE} = qmckl ]] ; then
|
||||
|
||||
|
@ -241,7 +245,7 @@ EOF
|
|||
tar -zxf qmckl-${VERSION}.tar.gz && rm qmckl-${VERSION}.tar.gz
|
||||
cd qmckl-${VERSION}
|
||||
./configure --prefix=\${QP_ROOT} --enable-hpc --disable-doc CFLAGS='-g'
|
||||
make && make -j 4 check && make install
|
||||
(make -j 8 || make) && make check && make install
|
||||
EOF
|
||||
elif [[ ${PACKAGE} = qmckl-intel ]] ; then
|
||||
|
||||
|
@ -253,7 +257,7 @@ EOF
|
|||
tar -zxf qmckl-${VERSION}.tar.gz && rm qmckl-${VERSION}.tar.gz
|
||||
cd qmckl-${VERSION}
|
||||
./configure --prefix=\${QP_ROOT} --enable-hpc --disable-doc --with-icc --with-ifort CFLAGS='-g'
|
||||
make && make -j 4 check && make install
|
||||
(make -j 8 || make) && make check && make install
|
||||
EOF
|
||||
|
||||
|
||||
|
@ -275,6 +279,7 @@ EOF
|
|||
cd "\${QP_ROOT}"/external
|
||||
tar --gunzip --extract --file qp2-dependencies/zeromq-4.2.5.tar.gz
|
||||
cd zeromq-*
|
||||
[[ "${SYSTEM}" = "Darwin" ]] && ./autogen.sh
|
||||
./configure --prefix="\$QP_ROOT" --without-libsodium --enable-libunwind=no
|
||||
make -j 8
|
||||
make install
|
||||
|
@ -397,11 +402,11 @@ if [[ ${TREXIO} = $(not_found) ]] ; then
|
|||
fail
|
||||
fi
|
||||
|
||||
QMCKL=$(find_lib -lqmckl)
|
||||
if [[ ${QMCKL} = $(not_found) ]] ; then
|
||||
error "QMCkl (qmckl | qmckl-intel) is not installed."
|
||||
fail
|
||||
fi
|
||||
#QMCKL=$(find_lib -lqmckl)
|
||||
#if [[ ${QMCKL} = $(not_found) ]] ; then
|
||||
# error "QMCkl (qmckl | qmckl-intel) is not installed."
|
||||
# fail
|
||||
#fi
|
||||
|
||||
F77ZMQ=$(find_lib -lzmq -lf77zmq -lpthread)
|
||||
if [[ ${F77ZMQ} = $(not_found) ]] ; then
|
||||
|
|
2
docs/ref
2
docs/ref
|
@ -20,5 +20,5 @@ Then, to reference for "myref" just type :ref:`myref`
|
|||
or use `IRPF90`_ and define
|
||||
_IRPF90: http://irpf90.ups-tlse.fr
|
||||
somewhere
|
||||
* References of published results with QP should be added into docs/source/research.bib in bibtex
|
||||
* References of published results with QP should be added into docs/source/references.bib in bibtex
|
||||
format
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
sphinxcontrib-bibtex==0.4.0
|
||||
sphinx-rtd-theme==0.4.2
|
||||
sphinxcontrib-bibtex
|
||||
sphinx-rtd-theme
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
Contributors
|
||||
============
|
||||
|
||||
The |qp| is maintained by
|
||||
The |qp| is maintained by
|
||||
|
||||
Anthony Scemama
|
||||
Anthony Scemama
|
||||
| `Laboratoire de Chimie et Physique Quantiques <http://www.lcpq.ups-tlse.fr/>`_,
|
||||
| CNRS - Université Paul Sabatier
|
||||
| Toulouse, France
|
||||
| scemama@irsamc.ups-tlse.fr
|
||||
| scemama@irsamc.ups-tlse.fr
|
||||
|
||||
|
||||
Emmanuel Giner
|
||||
|
@ -18,27 +18,27 @@ Emmanuel Giner
|
|||
| emmanuel.giner@lct.jussieu.fr
|
||||
|
||||
|
||||
Thomas Applencourt
|
||||
| `Argonne Leadership Computing Facility <http://www.alcf.anl.gov/>`_
|
||||
| Argonne, USA
|
||||
| tapplencourt@anl.gov
|
||||
|
||||
|
||||
|
||||
The following people have contributed to this project (by alphabetical order):
|
||||
|
||||
* Abdallah Ammar
|
||||
* Thomas Applencourt
|
||||
* Roland Assaraf
|
||||
* Pierrette Barbaresco
|
||||
* Anouar Benali
|
||||
* Chandler Bennet
|
||||
* Michel Caffarel
|
||||
* Vijay Gopal Chilkuri
|
||||
* Yann Damour
|
||||
* Grégoire David
|
||||
* Amanda Dumi
|
||||
* Anthony Ferté
|
||||
* Madeline Galbraith
|
||||
* Madeline Galbraith
|
||||
* Yann Garniron
|
||||
* Kevin Gasperich
|
||||
* Fabris Kossoski
|
||||
* Pierre-François Loos
|
||||
* Jean-Paul Malrieu
|
||||
* Antoine Marie
|
||||
* Barry Moore
|
||||
* Julien Paquier
|
||||
* Barthélémy Pradines
|
||||
|
@ -46,9 +46,11 @@ The following people have contributed to this project (by alphabetical order):
|
|||
* Nicolas Renon
|
||||
* Lorenzo Tenti
|
||||
* Julien Toulouse
|
||||
* Diata Traoré
|
||||
* Mikaël Véril
|
||||
|
||||
|
||||
If you have contributed and don't appear in this list, please modify this file
|
||||
If you have contributed and don't appear in this list, please modify the file
|
||||
`$QP_ROOT/docs/source/appendix/contributors.rst`
|
||||
and submit a pull request.
|
||||
|
||||
|
|
8
docs/source/appendix/references.rst
Normal file
8
docs/source/appendix/references.rst
Normal file
|
@ -0,0 +1,8 @@
|
|||
References
|
||||
==========
|
||||
|
||||
.. bibliography:: /references.bib
|
||||
:style: unsrt
|
||||
:all:
|
||||
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
Some research made with the |qp|
|
||||
================================
|
||||
|
||||
.. bibliography:: /research.bib
|
||||
:style: unsrt
|
||||
:all:
|
||||
|
||||
|
|
@ -29,7 +29,8 @@ def generate_modules(abs_module, entities):
|
|||
rst += ["", "EZFIO parameters", "----------------", ""]
|
||||
config_file = configparser.ConfigParser()
|
||||
with open(EZFIO, 'r') as f:
|
||||
config_file.readfp(f)
|
||||
# config_file.readfp(f)
|
||||
config_file.read_file(f)
|
||||
for section in config_file.sections():
|
||||
doc = config_file.get(section, "doc")
|
||||
doc = " " + doc.replace("\n", "\n\n ")+"\n"
|
||||
|
|
|
@ -70,7 +70,7 @@ master_doc = 'index'
|
|||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = None
|
||||
language = "en"
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
|
@ -208,3 +208,5 @@ epub_exclude_files = ['search.html']
|
|||
|
||||
# -- Extension configuration -------------------------------------------------
|
||||
|
||||
bibtex_bibfiles = [ "references.bib" ]
|
||||
|
||||
|
|
|
@ -39,9 +39,10 @@
|
|||
programmers_guide/programming
|
||||
programmers_guide/ezfio
|
||||
programmers_guide/plugins
|
||||
programmers_guide/plugins_tuto_intro
|
||||
programmers_guide/plugins_tuto_I
|
||||
programmers_guide/new_ks
|
||||
programmers_guide/index
|
||||
programmers_guide/plugins
|
||||
|
||||
|
||||
.. toctree::
|
||||
|
@ -52,5 +53,6 @@
|
|||
appendix/benchmarks
|
||||
appendix/license
|
||||
appendix/contributors
|
||||
appendix/references
|
||||
|
||||
|
||||
|
|
|
@ -11,25 +11,25 @@ The |qp|
|
|||
What it is
|
||||
==========
|
||||
|
||||
The |qp| is an open-source **programming environment** for quantum chemistry.
|
||||
It has been built from the **developper** point of view in order to help
|
||||
the design of new quantum chemistry methods,
|
||||
especially for `wave function theory <https://en.wikipedia.org/wiki/Ab_initio_quantum_chemistry_methods>`_ (|WFT|).
|
||||
The |qp| is an open-source **programming environment** for quantum chemistry.
|
||||
It has been built from the **developper** point of view in order to help
|
||||
the design of new quantum chemistry methods,
|
||||
especially for `wave function theory <https://en.wikipedia.org/wiki/Ab_initio_quantum_chemistry_methods>`_ (|WFT|).
|
||||
|
||||
From the **user** point of view, the |qp| proposes a stand-alone path
|
||||
to use optimized selected configuration interaction |sCI| based on the
|
||||
|CIPSI| algorithm that can efficiently reach near-full configuration interaction
|
||||
|FCI| quality for relatively large systems (see for instance :cite:`Caffarel_2016,Caffarel_2016.2,Loos_2018,Scemama_2018,Dash_2018,Garniron_2017.2,Loos_2018,Garniron_2018,Giner2018Oct`).
|
||||
To have a simple example of how to use the |CIPSI| program, go to the `users_guide/quickstart`.
|
||||
From the **user** point of view, the |qp| proposes a stand-alone path
|
||||
to use optimized selected configuration interaction |sCI| based on the
|
||||
|CIPSI| algorithm that can efficiently reach near-full configuration interaction
|
||||
|FCI| quality for relatively large systems.
|
||||
To have a simple example of how to use the |CIPSI| program, go to the `users_guide/quickstart`.
|
||||
|
||||
|
||||
The main goal is the development of selected configuration interaction |sCI|
|
||||
methods and multi-reference perturbation theory |MRPT| in the
|
||||
determinant-driven paradigm. It also contains the very basics of Kohn-Sham `density functional theory <https://en.wikipedia.org/wiki/Density_functional_theory>`_ |KS-DFT| and `range-separated hybrids <https://aip.scitation.org/doi/10.1063/1.1383587>`_ |RSH|.
|
||||
determinant-driven paradigm. It also contains the very basics of Kohn-Sham `density functional theory <https://en.wikipedia.org/wiki/Density_functional_theory>`_ |KS-DFT| and `range-separated hybrids <https://aip.scitation.org/doi/10.1063/1.1383587>`_ |RSH|.
|
||||
|
||||
The determinant-driven framework allows the programmer to include any arbitrary set of
|
||||
determinants in the variational space, and thus gives a complete freedom in the methodological
|
||||
development. The basic ingredients of |RSH| together with those of the |WFT| framework available in the |qp| library allows one to easily develop range-separated DFT (|RSDFT|) approaches (see for instance the plugins at `<https://gitlab.com/eginer/qp_plugins_eginer>`_).
|
||||
The determinant-driven framework allows the programmer to include any arbitrary set of
|
||||
determinants in the variational space, and thus gives a complete freedom in the methodological
|
||||
development. The basic ingredients of |RSH| together with those of the |WFT| framework available in the |qp| library allows one to easily develop range-separated DFT (|RSDFT|) approaches (see for instance the plugins at `<https://gitlab.com/eginer/qp_plugins_eginer>`_).
|
||||
|
||||
All the programs are developed with the `IRPF90`_ code generator, which considerably simplifies
|
||||
the collaborative development, and the development of new features.
|
||||
|
@ -40,20 +40,20 @@ What it is not
|
|||
==============
|
||||
|
||||
The |qp| is *not* a general purpose quantum chemistry program.
|
||||
First of all, it is a *library* to develop new theories and algorithms in quantum chemistry.
|
||||
First of all, it is a *library* to develop new theories and algorithms in quantum chemistry.
|
||||
Therefore, beside the use of the programs of the core modules, the users of the |qp| should develop their own programs.
|
||||
|
||||
The |qp| has been designed specifically for |sCI|, so all the
|
||||
algorithms which are programmed are not adapted to run SCF or DFT calculations
|
||||
on thousands of atoms. Currently, the systems targeted have less than 600
|
||||
molecular orbitals. This limit is due to the memory bottleneck induced by the storring of the two-electron integrals (see ``mo_two_e_integrals`` and ``ao_two_e_integrals``).
|
||||
molecular orbitals. This limit is due to the memory bottleneck induced by the storring of the two-electron integrals (see ``mo_two_e_integrals`` and ``ao_two_e_integrals``).
|
||||
|
||||
The |qp| is *not* a massive production code. For conventional
|
||||
methods such as Hartree-Fock, CISD or MP2, the users are recommended to use the
|
||||
existing standard production codes which are designed to make these methods run
|
||||
fast. Again, the role of the |qp| is to make life simple for the
|
||||
developer. Once a new method is developed and tested, the developer is encouraged
|
||||
to consider re-expressing it with an integral-driven formulation, and to
|
||||
to consider re-expressing it with an integral-driven formulation, and to
|
||||
implement the new method in open-source production codes, such as `NWChem`_
|
||||
or |GAMESS|.
|
||||
|
||||
|
|
|
@ -1,182 +0,0 @@
|
|||
@article{Bytautas_2009,
|
||||
doi = {10.1016/j.chemphys.2008.11.021},
|
||||
url = {https://doi.org/10.1016%2Fj.chemphys.2008.11.021},
|
||||
year = 2009,
|
||||
month = {feb},
|
||||
publisher = {Elsevier {BV}},
|
||||
volume = {356},
|
||||
number = {1-3},
|
||||
pages = {64--75},
|
||||
author = {Laimutis Bytautas and Klaus Ruedenberg},
|
||||
title = {A priori identification of configurational deadwood},
|
||||
journal = {Chemical Physics}
|
||||
}
|
||||
|
||||
@article{Anderson_2018,
|
||||
doi = {10.1016/j.comptc.2018.08.017},
|
||||
url = {https://doi.org/10.1016%2Fj.comptc.2018.08.017},
|
||||
year = 2018,
|
||||
month = {oct},
|
||||
publisher = {Elsevier {BV}},
|
||||
volume = {1142},
|
||||
pages = {66--77},
|
||||
author = {James S.M. Anderson and Farnaz Heidar-Zadeh and Paul W. Ayers},
|
||||
title = {Breaking the curse of dimension for the electronic Schrodinger equation with functional analysis},
|
||||
journal = {Computational and Theoretical Chemistry}
|
||||
}
|
||||
|
||||
@article{Bender_1969,
|
||||
doi = {10.1103/physrev.183.23},
|
||||
url = {http://dx.doi.org/10.1103/PhysRev.183.23},
|
||||
year = 1969,
|
||||
month = {jul},
|
||||
publisher = {American Physical Society ({APS})},
|
||||
volume = {183},
|
||||
number = {1},
|
||||
pages = {23--30},
|
||||
author = {Charles F. Bender and Ernest R. Davidson},
|
||||
title = {Studies in Configuration Interaction: The First-Row Diatomic Hydrides},
|
||||
journal = {Phys. Rev.}
|
||||
}
|
||||
|
||||
@article{Whitten_1969,
|
||||
doi = {10.1063/1.1671985},
|
||||
url = {https://doi.org/10.1063%2F1.1671985},
|
||||
year = 1969,
|
||||
month = {dec},
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {51},
|
||||
number = {12},
|
||||
pages = {5584--5596},
|
||||
author = {J. L. Whitten and Melvyn Hackmeyer},
|
||||
title = {Configuration Interaction Studies of Ground and Excited States of Polyatomic Molecules. I. The {CI} Formulation and Studies of Formaldehyde},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
|
||||
@article{Huron_1973,
|
||||
doi = {10.1063/1.1679199},
|
||||
url = {https://doi.org/10.1063%2F1.1679199},
|
||||
year = 1973,
|
||||
month = {jun},
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {58},
|
||||
number = {12},
|
||||
pages = {5745--5759},
|
||||
author = {B. Huron and J. P. Malrieu and P. Rancurel},
|
||||
title = {Iterative perturbation calculations of ground and excited state energies from multiconfigurational zeroth-order wavefunctions},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
|
||||
@article{Knowles_1984,
|
||||
author="Peter J. Knowles and Nicholas C Handy",
|
||||
year=1984,
|
||||
journal={Chem. Phys. Letters},
|
||||
volume=111,
|
||||
pages="315--321",
|
||||
title="A New Determinant-based Full Configuration Interaction Method"
|
||||
}
|
||||
|
||||
|
||||
@article{Scemama_2013,
|
||||
author = {{Scemama}, A. and {Giner}, E.},
|
||||
title = "{An efficient implementation of Slater-Condon rules}",
|
||||
journal = {ArXiv [physics.comp-ph]},
|
||||
pages = {1311.6244},
|
||||
year = 2013,
|
||||
month = nov,
|
||||
url = {https://arxiv.org/abs/1311.6244}
|
||||
}
|
||||
|
||||
@article{Sharma_2017,
|
||||
doi = {10.1021/acs.jctc.6b01028},
|
||||
url = {https://doi.org/10.1021%2Facs.jctc.6b01028},
|
||||
year = 2017,
|
||||
month = {mar},
|
||||
publisher = {American Chemical Society ({ACS})},
|
||||
volume = {13},
|
||||
number = {4},
|
||||
pages = {1595--1604},
|
||||
author = {Sandeep Sharma and Adam A. Holmes and Guillaume Jeanmairet and Ali Alavi and C. J. Umrigar},
|
||||
title = {Semistochastic Heat-Bath Configuration Interaction Method: Selected Configuration Interaction with Semistochastic Perturbation Theory},
|
||||
journal = {Journal of Chemical Theory and Computation}
|
||||
}
|
||||
|
||||
@article{Holmes_2016,
|
||||
doi = {10.1021/acs.jctc.6b00407},
|
||||
url = {https://doi.org/10.1021%2Facs.jctc.6b00407},
|
||||
year = 2016,
|
||||
month = {aug},
|
||||
publisher = {American Chemical Society ({ACS})},
|
||||
volume = {12},
|
||||
number = {8},
|
||||
pages = {3674--3680},
|
||||
author = {Adam A. Holmes and Norm M. Tubman and C. J. Umrigar},
|
||||
title = {Heat-Bath Configuration Interaction: An Efficient Selected Configuration Interaction Algorithm Inspired by Heat-Bath Sampling},
|
||||
journal = {Journal of Chemical Theory and Computation}
|
||||
}
|
||||
@article{Evangelisti_1983,
|
||||
doi = {10.1016/0301-0104(83)85011-3},
|
||||
url = {https://doi.org/10.1016%2F0301-0104%2883%2985011-3},
|
||||
year = 1983,
|
||||
month = {feb},
|
||||
publisher = {Elsevier {BV}},
|
||||
volume = {75},
|
||||
number = {1},
|
||||
pages = {91--102},
|
||||
author = {Stefano Evangelisti and Jean-Pierre Daudey and Jean-Paul Malrieu},
|
||||
title = {Convergence of an improved {CIPSI} algorithm},
|
||||
journal = {Chemical Physics}
|
||||
}
|
||||
@article{Booth_2009,
|
||||
doi = {10.1063/1.3193710},
|
||||
url = {https://doi.org/10.1063%2F1.3193710},
|
||||
year = 2009,
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {131},
|
||||
number = {5},
|
||||
pages = {054106},
|
||||
author = {George H. Booth and Alex J. W. Thom and Ali Alavi},
|
||||
title = {Fermion Monte Carlo without fixed nodes: A game of life, death, and annihilation in Slater determinant space},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
@article{Booth_2010,
|
||||
doi = {10.1063/1.3407895},
|
||||
url = {https://doi.org/10.1063%2F1.3407895},
|
||||
year = 2010,
|
||||
month = {may},
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {132},
|
||||
number = {17},
|
||||
pages = {174104},
|
||||
author = {George H. Booth and Ali Alavi},
|
||||
title = {Approaching chemical accuracy using full configuration-interaction quantum Monte Carlo: A study of ionization potentials},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
@article{Cleland_2010,
|
||||
doi = {10.1063/1.3302277},
|
||||
url = {https://doi.org/10.1063%2F1.3302277},
|
||||
year = 2010,
|
||||
month = {jan},
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {132},
|
||||
number = {4},
|
||||
pages = {041103},
|
||||
author = {Deidre Cleland and George H. Booth and Ali Alavi},
|
||||
title = {Communications: Survival of the fittest: Accelerating convergence in full configuration-interaction quantum Monte Carlo},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
|
||||
@article{Garniron_2017b,
|
||||
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}
|
||||
}
|
||||
|
|
@ -99,6 +99,71 @@ EZFIO parameters
|
|||
|
||||
Default: 1.e-20
|
||||
|
||||
.. option:: my_grid_becke
|
||||
|
||||
if True, the number of angular and radial grid points are read from EZFIO
|
||||
|
||||
Default: False
|
||||
|
||||
.. option:: my_n_pt_r_grid
|
||||
|
||||
Number of radial grid points given from input
|
||||
|
||||
Default: 300
|
||||
|
||||
.. option:: my_n_pt_a_grid
|
||||
|
||||
Number of angular grid points given from input. Warning, this number cannot be any integer. See file list_angular_grid
|
||||
|
||||
Default: 1202
|
||||
|
||||
.. option:: n_points_extra_final_grid
|
||||
|
||||
Total number of extra_grid points
|
||||
|
||||
|
||||
.. option:: extra_grid_type_sgn
|
||||
|
||||
Type of extra_grid used for the Becke's numerical extra_grid. Can be, by increasing accuracy: [ 0 | 1 | 2 | 3 ]
|
||||
|
||||
Default: 0
|
||||
|
||||
.. option:: thresh_extra_grid
|
||||
|
||||
threshold on the weight of a given extra_grid point
|
||||
|
||||
Default: 1.e-20
|
||||
|
||||
.. option:: my_extra_grid_becke
|
||||
|
||||
if True, the number of angular and radial extra_grid points are read from EZFIO
|
||||
|
||||
Default: False
|
||||
|
||||
.. option:: my_n_pt_r_extra_grid
|
||||
|
||||
Number of radial extra_grid points given from input
|
||||
|
||||
Default: 300
|
||||
|
||||
.. option:: my_n_pt_a_extra_grid
|
||||
|
||||
Number of angular extra_grid points given from input. Warning, this number cannot be any integer. See file list_angular_extra_grid
|
||||
|
||||
Default: 1202
|
||||
|
||||
.. option:: rad_grid_type
|
||||
|
||||
method used to sample the radial space. Possible choices are [KNOWLES | GILL]
|
||||
|
||||
Default: KNOWLES
|
||||
|
||||
.. option:: extra_rad_grid_type
|
||||
|
||||
method used to sample the radial space. Possible choices are [KNOWLES | GILL]
|
||||
|
||||
Default: KNOWLES
|
||||
|
||||
|
||||
Providers
|
||||
---------
|
||||
|
@ -122,6 +187,8 @@ Providers
|
|||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
|
@ -156,6 +223,66 @@ Providers
|
|||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: angular_quadrature_points_extra
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/angular_extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: angular_quadrature_points_extra (n_points_extra_integration_angular,3)
|
||||
double precision, allocatable :: weights_angular_points_extra (n_points_extra_integration_angular)
|
||||
|
||||
|
||||
weights and grid points_extra for the integration on the angular variables on
|
||||
the unit sphere centered on (0,0,0)
|
||||
According to the LEBEDEV scheme
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
|
||||
|
||||
.. c:var:: dr_radial_extra_integral
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: grid_points_extra_radial (n_points_extra_radial_grid)
|
||||
double precision :: dr_radial_extra_integral
|
||||
|
||||
|
||||
points_extra in [0,1] to map the radial integral [0,\infty]
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
|
||||
|
||||
.. c:var:: dr_radial_integral
|
||||
|
||||
|
||||
|
@ -223,6 +350,11 @@ Providers
|
|||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_abs_int_grid`
|
||||
* :c:data:`ao_overlap_abs_grid`
|
||||
* :c:data:`ao_prod_abs_r`
|
||||
* :c:data:`ao_prod_center`
|
||||
* :c:data:`ao_prod_dist_grid`
|
||||
* :c:data:`aos_grad_in_r_array`
|
||||
* :c:data:`aos_in_r_array`
|
||||
* :c:data:`aos_lapl_in_r_array`
|
||||
|
@ -241,11 +373,60 @@ Providers
|
|||
* :c:data:`energy_x_pbe`
|
||||
* :c:data:`energy_x_sr_lda`
|
||||
* :c:data:`energy_x_sr_pbe`
|
||||
* :c:data:`f_psi_cas_ab`
|
||||
* :c:data:`f_psi_hf_ab`
|
||||
* :c:data:`final_grid_points_transp`
|
||||
* :c:data:`mo_grad_ints`
|
||||
* :c:data:`mos_in_r_array`
|
||||
* :c:data:`mos_in_r_array_omp`
|
||||
* :c:data:`mu_average_prov`
|
||||
* :c:data:`mu_grad_rho`
|
||||
* :c:data:`mu_of_r_dft_average`
|
||||
* :c:data:`mu_rsc_of_r`
|
||||
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||
|
||||
|
||||
.. c:var:: final_grid_points_extra
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid_vector.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_grid_points_extra (3,n_points_extra_final_grid)
|
||||
double precision, allocatable :: final_weight_at_r_vector_extra (n_points_extra_final_grid)
|
||||
integer, allocatable :: index_final_points_extra (3,n_points_extra_final_grid)
|
||||
integer, allocatable :: index_final_points_extra_reverse (n_points_extra_integration_angular,n_points_extra_radial_grid,nucl_num)
|
||||
|
||||
|
||||
final_grid_points_extra(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||
|
||||
final_weight_at_r_vector_extra(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||
|
||||
index_final_points_extra(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||
|
||||
index_final_points_extra_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`n_points_extra_final_grid`
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`thresh_extra_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_extra`
|
||||
|
||||
|
||||
.. c:var:: final_grid_points_per_atom
|
||||
|
||||
|
||||
|
@ -272,12 +453,28 @@ Providers
|
|||
* :c:data:`nucl_num`
|
||||
* :c:data:`thresh_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
|
||||
.. c:var:: final_grid_points_transp
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_grid_points_transp (n_points_final_grid,3)
|
||||
|
||||
|
||||
Transposed final_grid_points
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_per_atom`
|
||||
* :c:data:`final_grid_points`
|
||||
* :c:data:`n_points_final_grid`
|
||||
|
||||
|
||||
|
||||
.. c:var:: final_weight_at_r
|
||||
|
@ -304,6 +501,8 @@ Providers
|
|||
* :c:data:`m_knowles`
|
||||
* :c:data:`n_points_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`r_gill`
|
||||
* :c:data:`rad_grid_type`
|
||||
* :c:data:`weight_at_r`
|
||||
|
||||
Needed by:
|
||||
|
@ -317,6 +516,43 @@ Providers
|
|||
* :c:data:`n_pts_per_atom`
|
||||
|
||||
|
||||
.. c:var:: final_weight_at_r_extra
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_weight_at_r_extra (n_points_extra_integration_angular,n_points_extra_radial_grid,nucl_num)
|
||||
|
||||
|
||||
Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights.
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`alpha_knowles`
|
||||
* :c:data:`angular_quadrature_points_extra`
|
||||
* :c:data:`extra_rad_grid_type`
|
||||
* :c:data:`grid_atomic_number`
|
||||
* :c:data:`grid_points_extra_radial`
|
||||
* :c:data:`m_knowles`
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`r_gill`
|
||||
* :c:data:`weight_at_r_extra`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_grid_points_extra`
|
||||
* :c:data:`n_points_extra_final_grid`
|
||||
|
||||
|
||||
.. c:var:: final_weight_at_r_vector
|
||||
|
||||
|
||||
|
@ -355,6 +591,11 @@ Providers
|
|||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_abs_int_grid`
|
||||
* :c:data:`ao_overlap_abs_grid`
|
||||
* :c:data:`ao_prod_abs_r`
|
||||
* :c:data:`ao_prod_center`
|
||||
* :c:data:`ao_prod_dist_grid`
|
||||
* :c:data:`aos_grad_in_r_array`
|
||||
* :c:data:`aos_in_r_array`
|
||||
* :c:data:`aos_lapl_in_r_array`
|
||||
|
@ -373,11 +614,60 @@ Providers
|
|||
* :c:data:`energy_x_pbe`
|
||||
* :c:data:`energy_x_sr_lda`
|
||||
* :c:data:`energy_x_sr_pbe`
|
||||
* :c:data:`f_psi_cas_ab`
|
||||
* :c:data:`f_psi_hf_ab`
|
||||
* :c:data:`final_grid_points_transp`
|
||||
* :c:data:`mo_grad_ints`
|
||||
* :c:data:`mos_in_r_array`
|
||||
* :c:data:`mos_in_r_array_omp`
|
||||
* :c:data:`mu_average_prov`
|
||||
* :c:data:`mu_grad_rho`
|
||||
* :c:data:`mu_of_r_dft_average`
|
||||
* :c:data:`mu_rsc_of_r`
|
||||
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||
|
||||
|
||||
.. c:var:: final_weight_at_r_vector_extra
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid_vector.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_grid_points_extra (3,n_points_extra_final_grid)
|
||||
double precision, allocatable :: final_weight_at_r_vector_extra (n_points_extra_final_grid)
|
||||
integer, allocatable :: index_final_points_extra (3,n_points_extra_final_grid)
|
||||
integer, allocatable :: index_final_points_extra_reverse (n_points_extra_integration_angular,n_points_extra_radial_grid,nucl_num)
|
||||
|
||||
|
||||
final_grid_points_extra(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||
|
||||
final_weight_at_r_vector_extra(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||
|
||||
index_final_points_extra(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||
|
||||
index_final_points_extra_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`n_points_extra_final_grid`
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`thresh_extra_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_extra`
|
||||
|
||||
|
||||
.. c:var:: final_weight_at_r_vector_per_atom
|
||||
|
||||
|
||||
|
@ -404,12 +694,6 @@ Providers
|
|||
* :c:data:`nucl_num`
|
||||
* :c:data:`thresh_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_per_atom`
|
||||
|
||||
|
||||
.. c:var:: grid_atomic_number
|
||||
|
@ -438,9 +722,77 @@ Providers
|
|||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: grid_points_extra_per_atom
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: grid_points_extra_per_atom (3,n_points_extra_integration_angular,n_points_extra_radial_grid,nucl_num)
|
||||
|
||||
|
||||
x,y,z coordinates of grid points_extra used for integration in 3d space
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`alpha_knowles`
|
||||
* :c:data:`angular_quadrature_points_extra`
|
||||
* :c:data:`extra_rad_grid_type`
|
||||
* :c:data:`grid_atomic_number`
|
||||
* :c:data:`grid_points_extra_radial`
|
||||
* :c:data:`m_knowles`
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
* :c:data:`nucl_coord`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`r_gill`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_grid_points_extra`
|
||||
* :c:data:`weight_at_r_extra`
|
||||
|
||||
|
||||
.. c:var:: grid_points_extra_radial
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: grid_points_extra_radial (n_points_extra_radial_grid)
|
||||
double precision :: dr_radial_extra_integral
|
||||
|
||||
|
||||
points_extra in [0,1] to map the radial integral [0,\infty]
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
|
||||
|
||||
.. c:var:: grid_points_per_atom
|
||||
|
||||
|
||||
|
@ -466,6 +818,8 @@ Providers
|
|||
* :c:data:`n_points_radial_grid`
|
||||
* :c:data:`nucl_coord`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`r_gill`
|
||||
* :c:data:`rad_grid_type`
|
||||
|
||||
Needed by:
|
||||
|
||||
|
@ -544,6 +898,11 @@ Providers
|
|||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_abs_int_grid`
|
||||
* :c:data:`ao_overlap_abs_grid`
|
||||
* :c:data:`ao_prod_abs_r`
|
||||
* :c:data:`ao_prod_center`
|
||||
* :c:data:`ao_prod_dist_grid`
|
||||
* :c:data:`aos_grad_in_r_array`
|
||||
* :c:data:`aos_in_r_array`
|
||||
* :c:data:`aos_lapl_in_r_array`
|
||||
|
@ -562,11 +921,101 @@ Providers
|
|||
* :c:data:`energy_x_pbe`
|
||||
* :c:data:`energy_x_sr_lda`
|
||||
* :c:data:`energy_x_sr_pbe`
|
||||
* :c:data:`f_psi_cas_ab`
|
||||
* :c:data:`f_psi_hf_ab`
|
||||
* :c:data:`final_grid_points_transp`
|
||||
* :c:data:`mo_grad_ints`
|
||||
* :c:data:`mos_in_r_array`
|
||||
* :c:data:`mos_in_r_array_omp`
|
||||
* :c:data:`mu_average_prov`
|
||||
* :c:data:`mu_grad_rho`
|
||||
* :c:data:`mu_of_r_dft_average`
|
||||
* :c:data:`mu_rsc_of_r`
|
||||
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||
|
||||
|
||||
.. c:var:: index_final_points_extra
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid_vector.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_grid_points_extra (3,n_points_extra_final_grid)
|
||||
double precision, allocatable :: final_weight_at_r_vector_extra (n_points_extra_final_grid)
|
||||
integer, allocatable :: index_final_points_extra (3,n_points_extra_final_grid)
|
||||
integer, allocatable :: index_final_points_extra_reverse (n_points_extra_integration_angular,n_points_extra_radial_grid,nucl_num)
|
||||
|
||||
|
||||
final_grid_points_extra(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||
|
||||
final_weight_at_r_vector_extra(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||
|
||||
index_final_points_extra(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||
|
||||
index_final_points_extra_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`n_points_extra_final_grid`
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`thresh_extra_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_extra`
|
||||
|
||||
|
||||
.. c:var:: index_final_points_extra_reverse
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid_vector.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: final_grid_points_extra (3,n_points_extra_final_grid)
|
||||
double precision, allocatable :: final_weight_at_r_vector_extra (n_points_extra_final_grid)
|
||||
integer, allocatable :: index_final_points_extra (3,n_points_extra_final_grid)
|
||||
integer, allocatable :: index_final_points_extra_reverse (n_points_extra_integration_angular,n_points_extra_radial_grid,nucl_num)
|
||||
|
||||
|
||||
final_grid_points_extra(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||
|
||||
final_weight_at_r_vector_extra(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||
|
||||
index_final_points_extra(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||
|
||||
index_final_points_extra_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`n_points_extra_final_grid`
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`thresh_extra_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_extra`
|
||||
|
||||
|
||||
.. c:var:: index_final_points_per_atom
|
||||
|
||||
|
||||
|
@ -593,12 +1042,6 @@ Providers
|
|||
* :c:data:`nucl_num`
|
||||
* :c:data:`thresh_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_per_atom`
|
||||
|
||||
|
||||
.. c:var:: index_final_points_per_atom_reverse
|
||||
|
@ -627,12 +1070,6 @@ Providers
|
|||
* :c:data:`nucl_num`
|
||||
* :c:data:`thresh_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_per_atom`
|
||||
|
||||
|
||||
.. c:var:: index_final_points_reverse
|
||||
|
@ -673,6 +1110,11 @@ Providers
|
|||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`ao_abs_int_grid`
|
||||
* :c:data:`ao_overlap_abs_grid`
|
||||
* :c:data:`ao_prod_abs_r`
|
||||
* :c:data:`ao_prod_center`
|
||||
* :c:data:`ao_prod_dist_grid`
|
||||
* :c:data:`aos_grad_in_r_array`
|
||||
* :c:data:`aos_in_r_array`
|
||||
* :c:data:`aos_lapl_in_r_array`
|
||||
|
@ -691,8 +1133,16 @@ Providers
|
|||
* :c:data:`energy_x_pbe`
|
||||
* :c:data:`energy_x_sr_lda`
|
||||
* :c:data:`energy_x_sr_pbe`
|
||||
* :c:data:`f_psi_cas_ab`
|
||||
* :c:data:`f_psi_hf_ab`
|
||||
* :c:data:`final_grid_points_transp`
|
||||
* :c:data:`mo_grad_ints`
|
||||
* :c:data:`mos_in_r_array`
|
||||
* :c:data:`mos_in_r_array_omp`
|
||||
* :c:data:`mu_average_prov`
|
||||
* :c:data:`mu_grad_rho`
|
||||
* :c:data:`mu_of_r_dft_average`
|
||||
* :c:data:`mu_rsc_of_r`
|
||||
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||
|
||||
|
||||
|
@ -714,9 +1164,148 @@ Providers
|
|||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: n_points_extra_final_grid
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid_vector.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
integer :: n_points_extra_final_grid
|
||||
|
||||
|
||||
Number of points_extra which are non zero
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`thresh_extra_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_extra`
|
||||
* :c:data:`aos_in_r_array_extra_transp`
|
||||
* :c:data:`final_grid_points_extra`
|
||||
|
||||
|
||||
.. c:var:: n_points_extra_grid_per_atom
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
integer :: n_points_extra_grid_per_atom
|
||||
|
||||
|
||||
Number of grid points_extra per atom
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
|
||||
|
||||
|
||||
.. c:var:: n_points_extra_integration_angular
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
integer :: n_points_extra_radial_grid
|
||||
integer :: n_points_extra_integration_angular
|
||||
|
||||
|
||||
n_points_extra_radial_grid = number of radial grid points_extra per atom
|
||||
|
||||
n_points_extra_integration_angular = number of angular grid points_extra per atom
|
||||
|
||||
These numbers are automatically set by setting the grid_type_sgn parameter
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`extra_grid_type_sgn`
|
||||
* :c:data:`my_extra_grid_becke`
|
||||
* :c:data:`my_n_pt_a_extra_grid`
|
||||
* :c:data:`my_n_pt_r_extra_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`angular_quadrature_points_extra`
|
||||
* :c:data:`final_grid_points_extra`
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`grid_points_extra_radial`
|
||||
* :c:data:`n_points_extra_final_grid`
|
||||
* :c:data:`n_points_extra_grid_per_atom`
|
||||
* :c:data:`weight_at_r_extra`
|
||||
|
||||
|
||||
.. c:var:: n_points_extra_radial_grid
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
integer :: n_points_extra_radial_grid
|
||||
integer :: n_points_extra_integration_angular
|
||||
|
||||
|
||||
n_points_extra_radial_grid = number of radial grid points_extra per atom
|
||||
|
||||
n_points_extra_integration_angular = number of angular grid points_extra per atom
|
||||
|
||||
These numbers are automatically set by setting the grid_type_sgn parameter
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`extra_grid_type_sgn`
|
||||
* :c:data:`my_extra_grid_becke`
|
||||
* :c:data:`my_n_pt_a_extra_grid`
|
||||
* :c:data:`my_n_pt_r_extra_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`angular_quadrature_points_extra`
|
||||
* :c:data:`final_grid_points_extra`
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`grid_points_extra_radial`
|
||||
* :c:data:`n_points_extra_final_grid`
|
||||
* :c:data:`n_points_extra_grid_per_atom`
|
||||
* :c:data:`weight_at_r_extra`
|
||||
|
||||
|
||||
.. c:var:: n_points_final_grid
|
||||
|
||||
|
||||
|
@ -744,9 +1333,17 @@ Providers
|
|||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`act_mos_in_r_array`
|
||||
* :c:data:`alpha_dens_kin_in_r`
|
||||
* :c:data:`ao_abs_int_grid`
|
||||
* :c:data:`ao_overlap_abs_grid`
|
||||
* :c:data:`ao_prod_abs_r`
|
||||
* :c:data:`ao_prod_center`
|
||||
* :c:data:`ao_prod_dist_grid`
|
||||
* :c:data:`aos_grad_in_r_array`
|
||||
* :c:data:`aos_grad_in_r_array_transp`
|
||||
* :c:data:`aos_grad_in_r_array_transp_3`
|
||||
* :c:data:`aos_grad_in_r_array_transp_bis`
|
||||
* :c:data:`aos_in_r_array`
|
||||
* :c:data:`aos_in_r_array_transp`
|
||||
* :c:data:`aos_lapl_in_r_array`
|
||||
|
@ -759,6 +1356,14 @@ Providers
|
|||
* :c:data:`aos_vxc_alpha_lda_w`
|
||||
* :c:data:`aos_vxc_alpha_pbe_w`
|
||||
* :c:data:`aos_vxc_alpha_sr_pbe_w`
|
||||
* :c:data:`basis_mos_in_r_array`
|
||||
* :c:data:`core_density`
|
||||
* :c:data:`core_inact_act_mos_grad_in_r_array`
|
||||
* :c:data:`core_inact_act_mos_in_r_array`
|
||||
* :c:data:`core_inact_act_v_kl_contracted`
|
||||
* :c:data:`core_mos_in_r_array`
|
||||
* :c:data:`effective_alpha_dm`
|
||||
* :c:data:`effective_spin_dm`
|
||||
* :c:data:`elec_beta_num_grid_becke`
|
||||
* :c:data:`energy_c_lda`
|
||||
* :c:data:`energy_c_sr_lda`
|
||||
|
@ -766,14 +1371,39 @@ Providers
|
|||
* :c:data:`energy_x_pbe`
|
||||
* :c:data:`energy_x_sr_lda`
|
||||
* :c:data:`energy_x_sr_pbe`
|
||||
* :c:data:`f_psi_cas_ab`
|
||||
* :c:data:`f_psi_cas_ab_old`
|
||||
* :c:data:`f_psi_hf_ab`
|
||||
* :c:data:`final_grid_points`
|
||||
* :c:data:`final_grid_points_transp`
|
||||
* :c:data:`full_occ_2_rdm_cntrctd`
|
||||
* :c:data:`full_occ_2_rdm_cntrctd_trans`
|
||||
* :c:data:`full_occ_v_kl_cntrctd`
|
||||
* :c:data:`grad_total_cas_on_top_density`
|
||||
* :c:data:`inact_density`
|
||||
* :c:data:`inact_mos_in_r_array`
|
||||
* :c:data:`kinetic_density_generalized`
|
||||
* :c:data:`mo_grad_ints`
|
||||
* :c:data:`mos_grad_in_r_array`
|
||||
* :c:data:`mos_grad_in_r_array_tranp`
|
||||
* :c:data:`mos_grad_in_r_array_transp_3`
|
||||
* :c:data:`mos_grad_in_r_array_transp_bis`
|
||||
* :c:data:`mos_in_r_array`
|
||||
* :c:data:`mos_in_r_array_omp`
|
||||
* :c:data:`mos_in_r_array_transp`
|
||||
* :c:data:`mos_lapl_in_r_array`
|
||||
* :c:data:`mos_lapl_in_r_array_tranp`
|
||||
* :c:data:`mu_average_prov`
|
||||
* :c:data:`mu_grad_rho`
|
||||
* :c:data:`mu_of_r_dft`
|
||||
* :c:data:`mu_of_r_dft_average`
|
||||
* :c:data:`mu_of_r_hf`
|
||||
* :c:data:`mu_of_r_prov`
|
||||
* :c:data:`mu_of_r_psi_cas`
|
||||
* :c:data:`mu_rsc_of_r`
|
||||
* :c:data:`one_e_act_density_alpha`
|
||||
* :c:data:`one_e_act_density_beta`
|
||||
* :c:data:`one_e_cas_total_density`
|
||||
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||
* :c:data:`pot_grad_x_alpha_ao_pbe`
|
||||
* :c:data:`pot_grad_x_alpha_ao_sr_pbe`
|
||||
|
@ -789,6 +1419,8 @@ Providers
|
|||
* :c:data:`potential_x_alpha_ao_sr_lda`
|
||||
* :c:data:`potential_xc_alpha_ao_lda`
|
||||
* :c:data:`potential_xc_alpha_ao_sr_lda`
|
||||
* :c:data:`total_cas_on_top_density`
|
||||
* :c:data:`virt_mos_in_r_array`
|
||||
|
||||
|
||||
.. c:var:: n_points_grid_per_atom
|
||||
|
@ -928,7 +1560,6 @@ Providers
|
|||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_per_atom`
|
||||
* :c:data:`final_grid_points_per_atom`
|
||||
|
||||
|
||||
|
@ -960,10 +1591,31 @@ Providers
|
|||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`aos_in_r_array_per_atom`
|
||||
* :c:data:`final_grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: r_gill
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision :: r_gill
|
||||
|
||||
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r`
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: weight_at_r
|
||||
|
||||
|
||||
|
@ -1001,6 +1653,43 @@ Providers
|
|||
* :c:data:`final_weight_at_r`
|
||||
|
||||
|
||||
.. c:var:: weight_at_r_extra
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: weight_at_r_extra (n_points_extra_integration_angular,n_points_extra_radial_grid,nucl_num)
|
||||
|
||||
|
||||
Weight function at grid points_extra : w_n(r) according to the equation (22)
|
||||
of Becke original paper (JCP, 88, 1988)
|
||||
|
||||
The "n" discrete variable represents the nucleis which in this array is
|
||||
represented by the last dimension and the points_extra are labelled by the
|
||||
other dimensions.
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
* :c:data:`nucl_coord_transp`
|
||||
* :c:data:`nucl_dist_inv`
|
||||
* :c:data:`nucl_num`
|
||||
* :c:data:`slater_bragg_type_inter_distance_ua`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
|
||||
|
||||
.. c:var:: weights_angular_points
|
||||
|
||||
|
||||
|
@ -1032,6 +1721,37 @@ Providers
|
|||
* :c:data:`grid_points_per_atom`
|
||||
|
||||
|
||||
.. c:var:: weights_angular_points_extra
|
||||
|
||||
|
||||
File : :file:`becke_numerical_grid/angular_extra_grid.irp.f`
|
||||
|
||||
.. code:: fortran
|
||||
|
||||
double precision, allocatable :: angular_quadrature_points_extra (n_points_extra_integration_angular,3)
|
||||
double precision, allocatable :: weights_angular_points_extra (n_points_extra_integration_angular)
|
||||
|
||||
|
||||
weights and grid points_extra for the integration on the angular variables on
|
||||
the unit sphere centered on (0,0,0)
|
||||
According to the LEBEDEV scheme
|
||||
|
||||
Needs:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`n_points_extra_radial_grid`
|
||||
|
||||
Needed by:
|
||||
|
||||
.. hlist::
|
||||
:columns: 3
|
||||
|
||||
* :c:data:`final_weight_at_r_extra`
|
||||
* :c:data:`grid_points_extra_per_atom`
|
||||
|
||||
|
||||
|
||||
Subroutines / functions
|
||||
-----------------------
|
||||
|
@ -1043,7 +1763,7 @@ Subroutines / functions
|
|||
|
||||
.. code:: fortran
|
||||
|
||||
double precision function cell_function_becke(r,atom_number)
|
||||
double precision function cell_function_becke(r, atom_number)
|
||||
|
||||
|
||||
atom_number :: atom on which the cell function of Becke (1988, JCP,88(4))
|
||||
|
@ -1067,7 +1787,7 @@ Subroutines / functions
|
|||
|
||||
.. code:: fortran
|
||||
|
||||
double precision function derivative_knowles_function(alpha,m,x)
|
||||
double precision function derivative_knowles_function(alpha, m, x)
|
||||
|
||||
|
||||
Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points
|
||||
|
@ -1118,7 +1838,7 @@ Subroutines / functions
|
|||
|
||||
.. code:: fortran
|
||||
|
||||
double precision function knowles_function(alpha,m,x)
|
||||
double precision function knowles_function(alpha, m, x)
|
||||
|
||||
|
||||
Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points :
|
||||
|
|
|
@ -21,7 +21,7 @@ The :c:func:`run_cipsi` subroutine iteratively:
|
|||
* If :option:`determinants s2_eig` is |true|, it adds all the necessary
|
||||
determinants to allow the eigenstates of |H| to be eigenstates of |S^2|
|
||||
* Diagonalizes |H| in the enlarged internal space
|
||||
* Computes the |PT2| contribution to the energy stochastically :cite:`Garniron_2017.2`
|
||||
* Computes the |PT2| contribution to the energy stochastically :cite:`Garniron_2017b`
|
||||
or deterministically, depending on :option:`perturbation do_pt2`
|
||||
* Extrapolates the variational energy by fitting
|
||||
:math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}`
|
||||
|
|
1
docs/source/programmers_guide/plugins_tuto_I.rst
Normal file
1
docs/source/programmers_guide/plugins_tuto_I.rst
Normal file
|
@ -0,0 +1 @@
|
|||
.. include:: ../../../plugins/local/tuto_plugins/tuto_I/tuto_I.rst
|
1
docs/source/programmers_guide/plugins_tuto_intro.rst
Normal file
1
docs/source/programmers_guide/plugins_tuto_intro.rst
Normal file
|
@ -0,0 +1 @@
|
|||
.. include:: ../../../plugins/README.rst
|
847
docs/source/references.bib
Normal file
847
docs/source/references.bib
Normal file
|
@ -0,0 +1,847 @@
|
|||
|
||||
@article{Ammar_2023,
|
||||
author = {Ammar, Abdallah and Scemama, Anthony and Giner, Emmanuel},
|
||||
title = {{Transcorrelated selected configuration interaction in a bi-orthonormal basis and with a cheap three-body correlation factor}},
|
||||
journal = {J. Chem. Phys.},
|
||||
volume = {159},
|
||||
number = {11},
|
||||
year = {2023},
|
||||
month = sep,
|
||||
issn = {0021-9606},
|
||||
publisher = {AIP Publishing},
|
||||
doi = {10.1063/5.0163831}
|
||||
}
|
||||
|
||||
@article{Ammar_2023.2,
|
||||
author = {Ammar, Abdallah and Scemama, Anthony and Giner, Emmanuel},
|
||||
title = {{Biorthonormal Orbital Optimization with a Cheap Core-Electron-Free Three-Body Correlation Factor for Quantum Monte Carlo and Transcorrelation}},
|
||||
journal = {J. Chem. Theory Comput.},
|
||||
volume = {19},
|
||||
number = {15},
|
||||
pages = {4883--4896},
|
||||
year = {2023},
|
||||
month = aug,
|
||||
issn = {1549-9618},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jctc.3c00257}
|
||||
}
|
||||
|
||||
@article{Damour_2023,
|
||||
author = {Damour, Yann and Quintero-Monsebaiz, Ra{\'{u}}l and Caffarel, Michel and Jacquemin, Denis and Kossoski, F{\'{a}}bris and Scemama, Anthony and Loos, Pierre-Fran{\c{c}}ois},
|
||||
title = {{Ground- and Excited-State Dipole Moments and Oscillator Strengths of Full Configuration Interaction Quality}},
|
||||
journal = {J. Chem. Theory Comput.},
|
||||
volume = {19},
|
||||
number = {1},
|
||||
pages = {221--234},
|
||||
year = {2023},
|
||||
month = jan,
|
||||
issn = {1549-9618},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jctc.2c01111}
|
||||
}
|
||||
|
||||
@article{Ammar_2022,
|
||||
author = {Ammar, Abdallah and Scemama, Anthony and Giner, Emmanuel},
|
||||
title = {{Extension of selected configuration interaction for transcorrelated methods}},
|
||||
journal = {J. Chem. Phys.},
|
||||
volume = {157},
|
||||
number = {13},
|
||||
year = {2022},
|
||||
month = oct,
|
||||
issn = {0021-9606},
|
||||
publisher = {AIP Publishing},
|
||||
doi = {10.1063/5.0115524}
|
||||
}
|
||||
|
||||
@article{Ammar_2022.2,
|
||||
author = {Ammar, Abdallah and Giner, Emmanuel and Scemama, Anthony},
|
||||
title = {{Optimization of Large Determinant Expansions in Quantum Monte Carlo}},
|
||||
journal = {J. Chem. Theory Comput.},
|
||||
volume = {18},
|
||||
number = {9},
|
||||
pages = {5325--5336},
|
||||
year = {2022},
|
||||
month = sep,
|
||||
issn = {1549-9618},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jctc.2c00556}
|
||||
}
|
||||
|
||||
@article{Monino_2022,
|
||||
author = {Monino, Enzo and Boggio-Pasqua, Martial and Scemama, Anthony and Jacquemin, Denis and Loos, Pierre-Fran{\c{c}}ois},
|
||||
title = {{Reference Energies for Cyclobutadiene: Automerization and Excited States}},
|
||||
journal = {J. Phys. Chem. A},
|
||||
volume = {126},
|
||||
number = {28},
|
||||
pages = {4664--4679},
|
||||
year = {2022},
|
||||
month = jul,
|
||||
issn = {1089-5639},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jpca.2c02480}
|
||||
}
|
||||
|
||||
@article{Cuzzocrea_2022,
|
||||
author = {Cuzzocrea, Alice and Moroni, Saverio and Scemama, Anthony and Filippi, Claudia},
|
||||
title = {{Reference Excitation Energies of Increasingly Large Molecules: A QMC Study of Cyanine Dyes}},
|
||||
journal = {J. Chem. Theory Comput.},
|
||||
volume = {18},
|
||||
number = {2},
|
||||
pages = {1089--1095},
|
||||
year = {2022},
|
||||
month = feb,
|
||||
issn = {1549-9618},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jctc.1c01162}
|
||||
}
|
||||
|
||||
@article{Damour_2021,
|
||||
author = {Damour, Yann and V{\'{e}}ril, Micka{\"{e}}l and Kossoski, F{\'{a}}bris and Caffarel, Michel and Jacquemin, Denis and Scemama, Anthony and Loos, Pierre-Fran{\c{c}}ois},
|
||||
title = {{Accurate full configuration interaction correlation energy estimates for five- and six-membered rings}},
|
||||
journal = {J. Chem. Phys.},
|
||||
volume = {155},
|
||||
number = {13},
|
||||
year = {2021},
|
||||
month = oct,
|
||||
issn = {0021-9606},
|
||||
publisher = {AIP Publishing},
|
||||
doi = {10.1063/5.0065314}
|
||||
}
|
||||
|
||||
@article{Veril_2021,
|
||||
author = {V{\'{e}}ril, Micka{\"{e}}l and Scemama, Anthony and Caffarel, Michel and Lipparini, Filippo and Boggio-Pasqua, Martial and Jacquemin, Denis and Loos, Pierre-Fran{\c{c}}ois},
|
||||
title = {{QUESTDB: A database of highly accurate excitation energies for the electronic structure community}},
|
||||
journal = {WIREs Comput. Mol. Sci.},
|
||||
volume = {11},
|
||||
number = {5},
|
||||
pages = {e1517},
|
||||
year = {2021},
|
||||
month = sep,
|
||||
issn = {1759-0876},
|
||||
publisher = {John Wiley {\&} Sons, Ltd},
|
||||
doi = {10.1002/wcms.1517}
|
||||
}
|
||||
|
||||
@article{Kossoski_2021,
|
||||
author = {Kossoski, F{\'{a}}bris and Marie, Antoine and Scemama, Anthony and Caffarel, Michel and Loos, Pierre-Fran{\c{c}}ois},
|
||||
title = {{Excited States from State-Specific Orbital-Optimized Pair Coupled Cluster}},
|
||||
journal = {J. Chem. Theory Comput.},
|
||||
volume = {17},
|
||||
number = {8},
|
||||
pages = {4756--4768},
|
||||
year = {2021},
|
||||
month = aug,
|
||||
issn = {1549-9618},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jctc.1c00348}
|
||||
}
|
||||
|
||||
@article{Dash_2021,
|
||||
author = {Dash, Monika and Moroni, Saverio and Filippi, Claudia and Scemama, Anthony},
|
||||
title = {{Tailoring CIPSI Expansions for QMC Calculations of Electronic Excitations: The Case Study of Thiophene}},
|
||||
journal = {J. Chem. Theory Comput.},
|
||||
volume = {17},
|
||||
number = {6},
|
||||
pages = {3426--3434},
|
||||
year = {2021},
|
||||
month = jun,
|
||||
issn = {1549-9618},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jctc.1c00212}
|
||||
}
|
||||
|
||||
@article{Loos_2020,
|
||||
author = {Loos, Pierre-Fran{\c{c}}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 Sized Molecules}},
|
||||
journal = {J. Chem. Theory Comput.},
|
||||
volume = {16},
|
||||
number = {3},
|
||||
pages = {1711--1741},
|
||||
year = {2020},
|
||||
month = mar,
|
||||
issn = {1549-9618},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jctc.9b01216}
|
||||
}
|
||||
|
||||
@article{Loos_2020.2,
|
||||
author = {Loos, Pierre-Fran{\c{c}}ois and Pradines, Barth{\'{e}}l{\'{e}}my and Scemama, Anthony and Giner, Emmanuel and Toulouse, Julien},
|
||||
title = {{Density-Based Basis-Set Incompleteness Correction for GW Methods}},
|
||||
journal = {J. Chem. Theory Comput.},
|
||||
volume = {16},
|
||||
number = {2},
|
||||
pages = {1018--1028},
|
||||
year = {2020},
|
||||
month = feb,
|
||||
issn = {1549-9618},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jctc.9b01067}
|
||||
}
|
||||
|
||||
@article{Loos_2020.3,
|
||||
author = {Loos, Pierre-Fran{\c{c}}ois and Scemama, Anthony and Jacquemin, Denis},
|
||||
title = {{The Quest for Highly Accurate Excitation Energies: A Computational Perspective}},
|
||||
journal = {J. Phys. Chem. Lett.},
|
||||
volume = {11},
|
||||
number = {6},
|
||||
pages = {2374--2383},
|
||||
year = {2020},
|
||||
month = mar,
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jpclett.0c00014}
|
||||
}
|
||||
|
||||
@article{Giner_2020,
|
||||
author = {Giner, Emmanuel and Scemama, Anthony and Loos, Pierre-Fran{\c{c}}ois and Toulouse, Julien},
|
||||
title = {{A basis-set error correction based on density-functional theory for strongly correlated molecular systems}},
|
||||
journal = {J. Chem. Phys.},
|
||||
volume = {152},
|
||||
number = {17},
|
||||
year = {2020},
|
||||
month = may,
|
||||
issn = {0021-9606},
|
||||
publisher = {AIP Publishing},
|
||||
doi = {10.1063/5.0002892}
|
||||
}
|
||||
|
||||
@article{Loos_2020.4,
|
||||
author = {Loos, Pierre-Fran{\c{c}}ois and Scemama, Anthony and Boggio-Pasqua, Martial and Jacquemin, Denis},
|
||||
title = {{Mountaineering Strategy to Excited States: Highly Accurate Energies and Benchmarks for Exotic Molecules and Radicals}},
|
||||
journal = {J. Chem. Theory Comput.},
|
||||
volume = {16},
|
||||
number = {6},
|
||||
pages = {3720--3736},
|
||||
year = {2020},
|
||||
month = jun,
|
||||
issn = {1549-9618},
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jctc.0c00227}
|
||||
}
|
||||
|
||||
@article{Benali_2020,
|
||||
author = {Benali, Anouar and Gasperich, Kevin and Jordan, Kenneth D. and Applencourt, Thomas and Luo, Ye and Bennett, M. Chandler and Krogel, Jaron T. and Shulenburger, Luke and Kent, Paul R. C. and Loos, Pierre-Fran{\c{c}}ois and Scemama, Anthony and Caffarel, Michel},
|
||||
title = {{Toward a systematic improvement of the fixed-node approximation in diffusion Monte Carlo for solids{\textemdash}A case study in diamond}},
|
||||
journal = {J. Chem. Phys.},
|
||||
volume = {153},
|
||||
number = {18},
|
||||
year = {2020},
|
||||
month = nov,
|
||||
issn = {0021-9606},
|
||||
publisher = {AIP Publishing},
|
||||
doi = {10.1063/5.0021036}
|
||||
}
|
||||
|
||||
@article{Scemama_2020,
|
||||
author = {Scemama, Anthony and Giner, Emmanuel and Benali, Anouar and Loos, Pierre-Fran{\c{c}}ois},
|
||||
title = {{Taming the fixed-node error in diffusion Monte Carlo via range separation}},
|
||||
journal = {J. Chem. Phys.},
|
||||
volume = {153},
|
||||
number = {17},
|
||||
year = {2020},
|
||||
month = nov,
|
||||
issn = {0021-9606},
|
||||
publisher = {AIP Publishing},
|
||||
doi = {10.1063/5.0026324}
|
||||
}
|
||||
|
||||
@article{Loos_2020.5,
|
||||
author = {Loos, Pierre-Fran{\c{c}}ois and Damour, Yann and Scemama, Anthony},
|
||||
title = {{The performance of CIPSI on the ground state electronic energy of benzene}},
|
||||
journal = {J. Chem. Phys.},
|
||||
volume = {153},
|
||||
number = {17},
|
||||
year = {2020},
|
||||
month = nov,
|
||||
issn = {0021-9606},
|
||||
publisher = {AIP Publishing},
|
||||
doi = {10.1063/5.0027617}
|
||||
}
|
||||
|
||||
@article{Loos_2019,
|
||||
author = {Loos, Pierre-Fran{\c{c}}ois and Pradines, Barth{\'{e}}l{\'{e}}my and Scemama, Anthony and Toulouse, Julien and Giner, Emmanuel},
|
||||
title = {{A Density-Based Basis-Set Correction for Wave Function Theory}},
|
||||
journal = {J. Phys. Chem. Lett.},
|
||||
volume = {10},
|
||||
number = {11},
|
||||
pages = {2931--2937},
|
||||
year = {2019},
|
||||
month = jun,
|
||||
publisher = {American Chemical Society},
|
||||
doi = {10.1021/acs.jpclett.9b01176}
|
||||
}
|
||||
|
||||
@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{Burton2019May,
|
||||
author = {Burton, Hugh G. A. and Thom, Alex J. W.},
|
||||
title = {{A General Approach for Multireference Ground and Excited States using Non-Orthogonal Configuration Interaction}},
|
||||
journal = {arXiv},
|
||||
year = {2019},
|
||||
month = {May},
|
||||
eprint = {1905.02626},
|
||||
url = {https://arxiv.org/abs/1905.02626}
|
||||
}
|
||||
|
||||
|
||||
@article{Giner_2019,
|
||||
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},
|
||||
year = {2019},
|
||||
month = oct,
|
||||
issn = {0021-9606},
|
||||
publisher = {AIP Publishing},
|
||||
doi = {10.1063/1.5122976}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@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 Ferte and Julien Paquier and Bartélémy Pradines and Roland Assaraf and Peter Reinhardt and Julien Toulouse and Pierrette Barbaresco and Nicolas Renon and Gregoire David and Jean-Paul Malrieu and Mickael Veril and Michel Caffarel and Pierre-Francois 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}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{Bytautas_2009,
|
||||
doi = {10.1016/j.chemphys.2008.11.021},
|
||||
url = {https://doi.org/10.1016%2Fj.chemphys.2008.11.021},
|
||||
year = 2009,
|
||||
month = {feb},
|
||||
publisher = {Elsevier {BV}},
|
||||
volume = {356},
|
||||
number = {1-3},
|
||||
pages = {64--75},
|
||||
author = {Laimutis Bytautas and Klaus Ruedenberg},
|
||||
title = {A priori identification of configurational deadwood},
|
||||
journal = {Chemical Physics}
|
||||
}
|
||||
|
||||
@article{Anderson_2018,
|
||||
doi = {10.1016/j.comptc.2018.08.017},
|
||||
url = {https://doi.org/10.1016%2Fj.comptc.2018.08.017},
|
||||
year = 2018,
|
||||
month = {oct},
|
||||
publisher = {Elsevier {BV}},
|
||||
volume = {1142},
|
||||
pages = {66--77},
|
||||
author = {James S.M. Anderson and Farnaz Heidar-Zadeh and Paul W. Ayers},
|
||||
title = {Breaking the curse of dimension for the electronic Schrodinger equation with functional analysis},
|
||||
journal = {Computational and Theoretical Chemistry}
|
||||
}
|
||||
|
||||
@article{Bender_1969,
|
||||
doi = {10.1103/physrev.183.23},
|
||||
url = {http://dx.doi.org/10.1103/PhysRev.183.23},
|
||||
year = 1969,
|
||||
month = {jul},
|
||||
publisher = {American Physical Society ({APS})},
|
||||
volume = {183},
|
||||
number = {1},
|
||||
pages = {23--30},
|
||||
author = {Charles F. Bender and Ernest R. Davidson},
|
||||
title = {Studies in Configuration Interaction: The First-Row Diatomic Hydrides},
|
||||
journal = {Phys. Rev.}
|
||||
}
|
||||
|
||||
@article{Whitten_1969,
|
||||
doi = {10.1063/1.1671985},
|
||||
url = {https://doi.org/10.1063%2F1.1671985},
|
||||
year = 1969,
|
||||
month = {dec},
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {51},
|
||||
number = {12},
|
||||
pages = {5584--5596},
|
||||
author = {J. L. Whitten and Melvyn Hackmeyer},
|
||||
title = {Configuration Interaction Studies of Ground and Excited States of Polyatomic Molecules. I. The {CI} Formulation and Studies of Formaldehyde},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
|
||||
@article{Huron_1973,
|
||||
doi = {10.1063/1.1679199},
|
||||
url = {https://doi.org/10.1063%2F1.1679199},
|
||||
year = 1973,
|
||||
month = {jun},
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {58},
|
||||
number = {12},
|
||||
pages = {5745--5759},
|
||||
author = {B. Huron and J. P. Malrieu and P. Rancurel},
|
||||
title = {Iterative perturbation calculations of ground and excited state energies from multiconfigurational zeroth-order wavefunctions},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
|
||||
@article{Knowles_1984,
|
||||
author="Peter J. Knowles and Nicholas C Handy",
|
||||
year=1984,
|
||||
journal={Chem. Phys. Letters},
|
||||
volume=111,
|
||||
pages="315--321",
|
||||
title="A New Determinant-based Full Configuration Interaction Method"
|
||||
}
|
||||
|
||||
|
||||
@article{Sharma_2017,
|
||||
doi = {10.1021/acs.jctc.6b01028},
|
||||
url = {https://doi.org/10.1021%2Facs.jctc.6b01028},
|
||||
year = 2017,
|
||||
month = {mar},
|
||||
publisher = {American Chemical Society ({ACS})},
|
||||
volume = {13},
|
||||
number = {4},
|
||||
pages = {1595--1604},
|
||||
author = {Sandeep Sharma and Adam A. Holmes and Guillaume Jeanmairet and Ali Alavi and C. J. Umrigar},
|
||||
title = {Semistochastic Heat-Bath Configuration Interaction Method: Selected Configuration Interaction with Semistochastic Perturbation Theory},
|
||||
journal = {Journal of Chemical Theory and Computation}
|
||||
}
|
||||
|
||||
@article{Holmes_2016,
|
||||
doi = {10.1021/acs.jctc.6b00407},
|
||||
url = {https://doi.org/10.1021%2Facs.jctc.6b00407},
|
||||
year = 2016,
|
||||
month = {aug},
|
||||
publisher = {American Chemical Society ({ACS})},
|
||||
volume = {12},
|
||||
number = {8},
|
||||
pages = {3674--3680},
|
||||
author = {Adam A. Holmes and Norm M. Tubman and C. J. Umrigar},
|
||||
title = {Heat-Bath Configuration Interaction: An Efficient Selected Configuration Interaction Algorithm Inspired by Heat-Bath Sampling},
|
||||
journal = {Journal of Chemical Theory and Computation}
|
||||
}
|
||||
@article{Evangelisti_1983,
|
||||
doi = {10.1016/0301-0104(83)85011-3},
|
||||
url = {https://doi.org/10.1016%2F0301-0104%2883%2985011-3},
|
||||
year = 1983,
|
||||
month = {feb},
|
||||
publisher = {Elsevier {BV}},
|
||||
volume = {75},
|
||||
number = {1},
|
||||
pages = {91--102},
|
||||
author = {Stefano Evangelisti and Jean-Pierre Daudey and Jean-Paul Malrieu},
|
||||
title = {Convergence of an improved {CIPSI} algorithm},
|
||||
journal = {Chemical Physics}
|
||||
}
|
||||
@article{Booth_2009,
|
||||
doi = {10.1063/1.3193710},
|
||||
url = {https://doi.org/10.1063%2F1.3193710},
|
||||
year = 2009,
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {131},
|
||||
number = {5},
|
||||
pages = {054106},
|
||||
author = {George H. Booth and Alex J. W. Thom and Ali Alavi},
|
||||
title = {Fermion Monte Carlo without fixed nodes: A game of life, death, and annihilation in Slater determinant space},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
@article{Booth_2010,
|
||||
doi = {10.1063/1.3407895},
|
||||
url = {https://doi.org/10.1063%2F1.3407895},
|
||||
year = 2010,
|
||||
month = {may},
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {132},
|
||||
number = {17},
|
||||
pages = {174104},
|
||||
author = {George H. Booth and Ali Alavi},
|
||||
title = {Approaching chemical accuracy using full configuration-interaction quantum Monte Carlo: A study of ionization potentials},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
@article{Cleland_2010,
|
||||
doi = {10.1063/1.3302277},
|
||||
url = {https://doi.org/10.1063%2F1.3302277},
|
||||
year = 2010,
|
||||
month = {jan},
|
||||
publisher = {{AIP} Publishing},
|
||||
volume = {132},
|
||||
number = {4},
|
||||
pages = {041103},
|
||||
author = {Deidre Cleland and George H. Booth and Ali Alavi},
|
||||
title = {Communications: Survival of the fittest: Accelerating convergence in full configuration-interaction quantum Monte Carlo},
|
||||
journal = {The Journal of Chemical Physics}
|
||||
}
|
||||
|
||||
@article{Garniron_2017b,
|
||||
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}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ export PYTHONPATH=$(qp_prepend_export "PYTHONPATH" "${QP_EZFIO}/Python":"${QP_PY
|
|||
|
||||
export PATH=$(qp_prepend_export "PATH" "${QP_PYTHON}":"${QP_ROOT}"/bin:"${QP_ROOT}"/ocaml)
|
||||
|
||||
export LD_LIBRARY_PATH=$(qp_prepend_export "LD_LIBRARY_PATH" "${QP_ROOT}"/lib)
|
||||
export LD_LIBRARY_PATH=$(qp_prepend_export "LD_LIBRARY_PATH" "${QP_ROOT}"/lib:"${QP_ROOT}"/lib64)
|
||||
|
||||
export LIBRARY_PATH=$(qp_prepend_export "LIBRARY_PATH" "${QP_ROOT}"/lib:"${QP_ROOT}"/lib64)
|
||||
|
||||
|
|
|
@ -120,7 +120,9 @@ function qp()
|
|||
if [[ $? -eq 0 ]] ; then
|
||||
COMMAND='qp_$@'
|
||||
eval "$COMMAND" "${EZFIO_FILE}"
|
||||
result=$?
|
||||
unset COMMAND
|
||||
return $result
|
||||
else
|
||||
_qp_usage
|
||||
fi
|
||||
|
|
2
external/irpf90
vendored
2
external/irpf90
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 4ab1b175fc7ed0d96c1912f13dc53579b24157a6
|
||||
Subproject commit beac615343f421bd6c0571a408ba389a6d5a32ac
|
|
@ -26,8 +26,7 @@ let of_string = function
|
|||
| "J" | "j" -> J
|
||||
| "K" | "k" -> K
|
||||
| "L" | "l" -> L
|
||||
| x -> raise (Failure ("Angmom should be S|P|D|F|G|H|I|J|K|L,
|
||||
not "^x^"."))
|
||||
| x -> raise (Failure ("Angmom should be S|P|D|F|G|H|I|J|K|L, not "^x^"."))
|
||||
|
||||
let of_char = function
|
||||
| 'S' | 's' -> S
|
||||
|
|
|
@ -22,10 +22,15 @@ let of_string ~units s =
|
|||
}
|
||||
| [ name; x; y; z ] ->
|
||||
let e = Element.of_string name in
|
||||
{ element = e ;
|
||||
charge = Element.to_charge e;
|
||||
coord = Point3d.of_string ~units (String.concat " " [x; y; z])
|
||||
}
|
||||
begin
|
||||
try
|
||||
{ element = e ;
|
||||
charge = Element.to_charge e;
|
||||
coord = Point3d.of_string ~units (String.concat " " [x; y; z])
|
||||
}
|
||||
with
|
||||
| err -> (Printf.eprintf "name = \"%s\"\nxyz = (%s,%s,%s)\n%!" name x y z ; raise err)
|
||||
end
|
||||
| _ -> raise (AtomError s)
|
||||
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ let read in_channel at_number =
|
|||
(** Find an element in the basis set file *)
|
||||
let find in_channel element =
|
||||
seek_in in_channel 0;
|
||||
let element_read = ref Element.X in
|
||||
let element_read = ref Element.Og in
|
||||
while !element_read <> element
|
||||
do
|
||||
let buffer = input_line in_channel in
|
||||
|
|
|
@ -4,7 +4,7 @@ open Qptypes
|
|||
exception ElementError of string
|
||||
|
||||
type t = X
|
||||
|
||||
|
||||
|H |He
|
||||
|Li|Be |B |C |N |O |F |Ne
|
||||
|Na|Mg |Al|Si|P |S |Cl|Ar
|
||||
|
@ -20,7 +20,7 @@ type t = X
|
|||
|
||||
let of_string x =
|
||||
match (String.capitalize_ascii (String.lowercase_ascii x)) with
|
||||
| "X" | "Dummy" -> X
|
||||
| "X" | "Ghost" -> X
|
||||
| "H" | "Hydrogen" -> H
|
||||
| "He" | "Helium" -> He
|
||||
| "Li" | "Lithium" -> Li
|
||||
|
@ -265,7 +265,7 @@ let to_string = function
|
|||
|
||||
|
||||
let to_long_string = function
|
||||
| X -> "Dummy"
|
||||
| X -> "Ghost"
|
||||
| H -> "Hydrogen"
|
||||
| He -> "Helium"
|
||||
| Li -> "Lithium"
|
||||
|
@ -492,20 +492,20 @@ let to_charge c =
|
|||
| No -> 102
|
||||
| Lr -> 103
|
||||
| Rf -> 104
|
||||
| Db -> 105
|
||||
| Sg -> 106
|
||||
| Bh -> 107
|
||||
| Hs -> 108
|
||||
| Mt -> 109
|
||||
| Ds -> 110
|
||||
| Rg -> 111
|
||||
| Cn -> 112
|
||||
| Nh -> 113
|
||||
| Fl -> 114
|
||||
| Mc -> 115
|
||||
| Lv -> 116
|
||||
| Ts -> 117
|
||||
| Og -> 118
|
||||
| Db -> 105
|
||||
| Sg -> 106
|
||||
| Bh -> 107
|
||||
| Hs -> 108
|
||||
| Mt -> 109
|
||||
| Ds -> 110
|
||||
| Rg -> 111
|
||||
| Cn -> 112
|
||||
| Nh -> 113
|
||||
| Fl -> 114
|
||||
| Mc -> 115
|
||||
| Lv -> 116
|
||||
| Ts -> 117
|
||||
| Og -> 118
|
||||
in Charge.of_int result
|
||||
|
||||
|
||||
|
@ -565,7 +565,7 @@ let of_charge c = match (Charge.to_int c) with
|
|||
| 52 -> Te
|
||||
| 53 -> I
|
||||
| 54 -> Xe
|
||||
| 55 -> Cs
|
||||
| 55 -> Cs
|
||||
| 56 -> Ba
|
||||
| 57 -> La
|
||||
| 58 -> Ce
|
||||
|
@ -880,7 +880,7 @@ let vdw_radius x =
|
|||
| Ts -> None
|
||||
| Og -> None
|
||||
in
|
||||
match result x with
|
||||
match result x with
|
||||
| Some y -> Some (Positive_float.of_float @@ Units.angstrom_to_bohr *. y )
|
||||
| None -> None
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ module Determinants_by_hand : sig
|
|||
psi_coef : Det_coef.t array;
|
||||
psi_det : Determinant.t array;
|
||||
state_average_weight : Positive_float.t array;
|
||||
mo_label : MO_label.t;
|
||||
} [@@deriving sexp]
|
||||
val read : ?full:bool -> unit -> t option
|
||||
val write : ?force:bool -> t -> unit
|
||||
|
@ -34,11 +35,21 @@ end = struct
|
|||
psi_coef : Det_coef.t array;
|
||||
psi_det : Determinant.t array;
|
||||
state_average_weight : Positive_float.t array;
|
||||
mo_label : MO_label.t;
|
||||
} [@@deriving sexp]
|
||||
;;
|
||||
|
||||
let get_default = Qpackage.get_ezfio_default "determinants";;
|
||||
|
||||
let read_mo_label () =
|
||||
if not (Ezfio.has_determinants_mo_label ()) then
|
||||
if Ezfio.has_mo_basis_mo_label () then (
|
||||
let label = Ezfio.get_mo_basis_mo_label () in
|
||||
Ezfio.set_determinants_mo_label label) ;
|
||||
Ezfio.get_determinants_mo_label ()
|
||||
|> MO_label.of_string
|
||||
;;
|
||||
|
||||
let read_n_int () =
|
||||
if not (Ezfio.has_determinants_n_int()) then
|
||||
Ezfio.get_mo_basis_mo_num ()
|
||||
|
@ -222,7 +233,7 @@ end = struct
|
|||
and n_states =
|
||||
States_number.to_int n_states
|
||||
in
|
||||
let r =
|
||||
let r =
|
||||
Ezfio.ezfio_array_of_list ~rank:2 ~dim:[| n_det ; n_states |] ~data:c
|
||||
in
|
||||
Ezfio.set_determinants_psi_coef r;
|
||||
|
@ -283,19 +294,23 @@ end = struct
|
|||
|> Array.concat
|
||||
|> Array.to_list
|
||||
in
|
||||
let r =
|
||||
let r =
|
||||
Ezfio.ezfio_array_of_list ~rank:3 ~dim:[| N_int_number.to_int n_int ; 2 ; Det_number.to_int n_det |] ~data:data
|
||||
in
|
||||
Ezfio.set_determinants_psi_det r;
|
||||
Ezfio.set_determinants_psi_det_qp_edit r
|
||||
;;
|
||||
|
||||
let write_mo_label a =
|
||||
MO_label.to_string a
|
||||
|> Ezfio.set_determinants_mo_label
|
||||
|
||||
|
||||
let read ?(full=true) () =
|
||||
|
||||
let n_det_qp_edit = read_n_det_qp_edit () in
|
||||
let n_det = read_n_det () in
|
||||
let read_only =
|
||||
let read_only =
|
||||
if full then false else n_det_qp_edit <> n_det
|
||||
in
|
||||
|
||||
|
@ -311,6 +326,7 @@ end = struct
|
|||
psi_det = read_psi_det ~read_only () ;
|
||||
n_states = read_n_states () ;
|
||||
state_average_weight = read_state_average_weight () ;
|
||||
mo_label = read_mo_label () ;
|
||||
}
|
||||
with _ -> None
|
||||
else
|
||||
|
@ -328,6 +344,7 @@ end = struct
|
|||
psi_det ;
|
||||
n_states ;
|
||||
state_average_weight ;
|
||||
mo_label ;
|
||||
} =
|
||||
write_n_int n_int ;
|
||||
write_bit_kind bit_kind;
|
||||
|
@ -340,7 +357,9 @@ end = struct
|
|||
write_psi_coef ~n_det:n_det ~n_states:n_states psi_coef ;
|
||||
write_psi_det ~n_int:n_int ~n_det:n_det psi_det
|
||||
end;
|
||||
write_state_average_weight state_average_weight
|
||||
write_state_average_weight state_average_weight ;
|
||||
write_mo_label mo_label ;
|
||||
()
|
||||
;;
|
||||
|
||||
|
||||
|
@ -439,7 +458,7 @@ psi_det = %s
|
|||
in
|
||||
|
||||
(* Split into header and determinants data *)
|
||||
let idx =
|
||||
let idx =
|
||||
match String_ext.substr_index r ~pos:0 ~pattern:"\nDeterminants" with
|
||||
| Some x -> x
|
||||
| None -> assert false
|
||||
|
@ -545,6 +564,8 @@ psi_det = %s
|
|||
let bitkind =
|
||||
Printf.sprintf "(bit_kind %d)" (Lazy.force Qpackage.bit_kind
|
||||
|> Bit_kind.to_int)
|
||||
and mo_label =
|
||||
Printf.sprintf "(mo_label %s)" (MO_label.to_string @@ read_mo_label ())
|
||||
and n_int =
|
||||
Printf.sprintf "(n_int %d)" (N_int_number.get_max ())
|
||||
and n_states =
|
||||
|
@ -553,7 +574,7 @@ psi_det = %s
|
|||
Printf.sprintf "(n_det_qp_edit %d)" (Det_number.to_int @@ read_n_det_qp_edit ())
|
||||
in
|
||||
let s =
|
||||
String.concat "" [ header ; bitkind ; n_int ; n_states ; psi_coef ; psi_det ; n_det_qp_edit ]
|
||||
String.concat "" [ header ; mo_label ; bitkind ; n_int ; n_states ; psi_coef ; psi_det ; n_det_qp_edit ]
|
||||
in
|
||||
|
||||
|
||||
|
|
|
@ -142,13 +142,21 @@ let of_xyz_string
|
|||
result
|
||||
|
||||
|
||||
let regexp_r = Str.regexp {|
|}
|
||||
let regexp_t = Str.regexp {| |}
|
||||
|
||||
|
||||
let of_xyz_file
|
||||
?(charge=(Charge.of_int 0)) ?(multiplicity=(Multiplicity.of_int 1))
|
||||
?(units=Units.Angstrom)
|
||||
filename =
|
||||
let lines =
|
||||
match Io_ext.input_lines filename with
|
||||
Io_ext.input_lines filename
|
||||
|> List.map (fun s -> Str.global_replace regexp_r "" s)
|
||||
|> List.map (fun s -> Str.global_replace regexp_t " " s)
|
||||
in
|
||||
let lines =
|
||||
match lines with
|
||||
| natoms :: title :: rest ->
|
||||
let natoms =
|
||||
try
|
||||
|
@ -173,6 +181,8 @@ let of_zmt_file
|
|||
?(units=Units.Angstrom)
|
||||
filename =
|
||||
Io_ext.read_all filename
|
||||
|> Str.global_replace regexp_r ""
|
||||
|> Str.global_replace regexp_t " "
|
||||
|> Zmatrix.of_string
|
||||
|> Zmatrix.to_xyz_string
|
||||
|> of_xyz_string ~charge ~multiplicity ~units
|
||||
|
|
|
@ -24,7 +24,9 @@ let of_string ~units s =
|
|||
let l = s
|
||||
|> String_ext.split ~on:' '
|
||||
|> List.filter (fun x -> x <> "")
|
||||
|> list_map float_of_string
|
||||
|> list_map (fun x ->
|
||||
try float_of_string x with
|
||||
| Failure msg -> (Printf.eprintf "Bad string: \"%s\"\n%!" x ; failwith msg) )
|
||||
|> Array.of_list
|
||||
in
|
||||
{ x = l.(0) *. f ;
|
||||
|
|
|
@ -58,17 +58,32 @@ let int_of_atom_id : atom_id -> int = fun x -> x
|
|||
let float_of_distance : float StringMap.t -> distance -> float =
|
||||
fun map -> function
|
||||
| Value x -> x
|
||||
| Label s -> StringMap.find s map
|
||||
| Label s -> begin
|
||||
try StringMap.find s map with
|
||||
| Not_found ->
|
||||
Printf.sprintf "Zmatrix error: distance %s undefined" s
|
||||
|> failwith
|
||||
end
|
||||
|
||||
let float_of_angle : float StringMap.t -> angle -> float =
|
||||
fun map -> function
|
||||
| Value x -> x
|
||||
| Label s -> StringMap.find s map
|
||||
| Label s -> begin
|
||||
try StringMap.find s map with
|
||||
| Not_found ->
|
||||
Printf.sprintf "Zmatrix error: angle %s undefined" s
|
||||
|> failwith
|
||||
end
|
||||
|
||||
let float_of_dihedral : float StringMap.t -> dihedral -> float =
|
||||
fun map -> function
|
||||
| Value x -> x
|
||||
| Label s -> StringMap.find s map
|
||||
| Label s -> begin
|
||||
try StringMap.find s map with
|
||||
| Not_found ->
|
||||
Printf.sprintf "Zmatrix error: dihedral %s undefined" s
|
||||
|> failwith
|
||||
end
|
||||
|
||||
|
||||
type line =
|
||||
|
|
|
@ -6,8 +6,8 @@ type element =
|
|||
| Element of Element.t
|
||||
| Int_elem of (Nucl_number.t * Element.t)
|
||||
|
||||
(** Handle dummy atoms placed on bonds *)
|
||||
let dummy_centers ~threshold ~molecule ~nuclei =
|
||||
(** Handle ghost atoms placed on bonds *)
|
||||
let ghost_centers ~threshold ~molecule ~nuclei =
|
||||
let d =
|
||||
Molecule.distance_matrix molecule
|
||||
in
|
||||
|
@ -68,11 +68,11 @@ let run ?o b au c d m p cart xyz_file =
|
|||
(Molecule.of_file xyz_file ~charge:(Charge.of_int c)
|
||||
~multiplicity:(Multiplicity.of_int m) )
|
||||
in
|
||||
let dummy =
|
||||
dummy_centers ~threshold:d ~molecule ~nuclei:molecule.Molecule.nuclei
|
||||
let ghost =
|
||||
ghost_centers ~threshold:d ~molecule ~nuclei:molecule.Molecule.nuclei
|
||||
in
|
||||
let nuclei =
|
||||
molecule.Molecule.nuclei @ dummy
|
||||
molecule.Molecule.nuclei @ ghost
|
||||
in
|
||||
|
||||
|
||||
|
@ -145,8 +145,6 @@ let run ?o b au c d m p cart xyz_file =
|
|||
| i :: k :: [] -> (Nucl_number.of_int @@ int_of_string i, Element.of_string k)
|
||||
| _ -> failwith "Expected format is int,Element:basis"
|
||||
in Int_elem result
|
||||
and basis =
|
||||
String.lowercase_ascii basis
|
||||
in
|
||||
let key =
|
||||
match elem with
|
||||
|
@ -313,7 +311,7 @@ let run ?o b au c d m p cart xyz_file =
|
|||
}
|
||||
in
|
||||
let nuclei =
|
||||
molecule.Molecule.nuclei @ dummy
|
||||
molecule.Molecule.nuclei @ ghost
|
||||
in
|
||||
|
||||
|
||||
|
@ -491,11 +489,7 @@ let run ?o b au c d m p cart xyz_file =
|
|||
|> List.rev
|
||||
|> list_map (fun (x,i) ->
|
||||
try
|
||||
let e =
|
||||
match x.Atom.element with
|
||||
| Element.X -> Element.H
|
||||
| e -> e
|
||||
in
|
||||
let e = x.Atom.element in
|
||||
let key =
|
||||
Int_elem (i,x.Atom.element)
|
||||
in
|
||||
|
@ -507,9 +501,15 @@ let run ?o b au c d m p cart xyz_file =
|
|||
in
|
||||
try
|
||||
Basis.read_element (basis_channel key) i e
|
||||
with Not_found ->
|
||||
failwith (Printf.sprintf "Basis not found for atom %d (%s)" (Nucl_number.to_int i)
|
||||
(Element.to_string x.Atom.element) )
|
||||
with _ ->
|
||||
try
|
||||
if e = Element.X then
|
||||
Basis.read_element (basis_channel key) i (Element.H)
|
||||
else
|
||||
raise Not_found
|
||||
with Not_found ->
|
||||
failwith (Printf.sprintf "Basis not found for atom %d (%s)" (Nucl_number.to_int i)
|
||||
(Element.to_string x.Atom.element) )
|
||||
with
|
||||
| End_of_file -> failwith
|
||||
("Element "^(Element.to_string x.Atom.element)^" not found in basis set.")
|
||||
|
@ -710,9 +710,9 @@ If a file with the same name as the basis set exists, this file will be read. O
|
|||
arg=With_arg "<int>";
|
||||
doc="Total charge of the molecule. Default is 0. For negative values, use m instead of -, for ex m1"} ;
|
||||
|
||||
{ opt=Optional ; short='d'; long="dummy";
|
||||
{ opt=Optional ; short='g'; long="ghost";
|
||||
arg=With_arg "<float>";
|
||||
doc="Add dummy atoms. x * (covalent radii of the atoms)."} ;
|
||||
doc="Add ghost atoms. x * (covalent radii of the atoms)."} ;
|
||||
|
||||
{ opt=Optional ; short='m'; long="multiplicity";
|
||||
arg=With_arg "<int>";
|
||||
|
@ -756,8 +756,8 @@ If a file with the same name as the basis set exists, this file will be read. O
|
|||
int_of_string x )
|
||||
in
|
||||
|
||||
let dummy =
|
||||
match Command_line.get "dummy" with
|
||||
let ghost =
|
||||
match Command_line.get "ghost" with
|
||||
| None -> 0.
|
||||
| Some x -> float_of_string x
|
||||
in
|
||||
|
@ -782,7 +782,7 @@ If a file with the same name as the basis set exists, this file will be read. O
|
|||
| x::_ -> x
|
||||
in
|
||||
|
||||
run ?o:output basis au charge dummy multiplicity pseudo cart xyz_filename
|
||||
run ?o:output basis au charge ghost multiplicity pseudo cart xyz_filename
|
||||
)
|
||||
with
|
||||
(* | Failure txt -> Printf.eprintf "Fatal error: %s\n%!" txt *)
|
||||
|
|
|
@ -154,8 +154,8 @@ let input_ezfio = "
|
|||
|
||||
* N_int_number : int
|
||||
determinants_n_int
|
||||
1 : 30
|
||||
N_int > 30
|
||||
1 : 128
|
||||
N_int > 128
|
||||
|
||||
* Det_number : int
|
||||
determinants_n_det
|
||||
|
|
1
plugins/.gitignore
vendored
1
plugins/.gitignore
vendored
|
@ -1,2 +1 @@
|
|||
*
|
||||
|
||||
|
|
131
plugins/README.rst
Normal file
131
plugins/README.rst
Normal file
|
@ -0,0 +1,131 @@
|
|||
==============================
|
||||
Tutorial for creating a plugin
|
||||
==============================
|
||||
|
||||
Introduction: what is a plugin, and what tutorial will be about ?
|
||||
=================================================================
|
||||
|
||||
The |QP| is split into two kinds of routines/global variables (i.e. *providers*):
|
||||
1) the **core modules** locatedin qp2/src/, which contains all the bulk of a quantum chemistry software (integrals, matrix elements between Slater determinants, linear algebra routines, DFT stuffs etc..)
|
||||
2) the **plugins** which are external routines/*providers* connected to the qp2/src/ routines/*providers*.
|
||||
|
||||
More precisely, a **plugin** of the |QP| is a directory where you can create routines,
|
||||
providers and executables that use all the global variables/functions/routines already created
|
||||
in the modules of qp2/src or in other plugins.
|
||||
|
||||
Instead of giving a theoretical lecture on what is a plugin,
|
||||
we will go through a series of examples that allow you to do the following thing:
|
||||
|
||||
1) print out **one- and two-electron integrals** on the AO/MO basis, creates two providers which manipulate these objects, print out these providers,
|
||||
|
||||
2) browse the **Slater determinants stored** in the |EZFIO| wave function and compute their matrix elements,
|
||||
|
||||
3) build the **Hamiltonian matrix** and **diagonalize** it either with **Lapack or Davidson**,
|
||||
|
||||
4) print out the **one- and two-electron rdms**,
|
||||
|
||||
5) obtain the **AOs** and **MOs** on the **DFT grid**, together with the **density**,
|
||||
|
||||
How the tutorial will be done
|
||||
-----------------------------
|
||||
|
||||
This tuto is as follows:
|
||||
|
||||
1) you **READ THIS FILE UNTIL THE END** in order to get the big picture and vocabulary,
|
||||
|
||||
2) you go to the directory :file:`qp2/plugins/tuto_plugins/` and you will find detailed tutorials for each of the 5 examples.
|
||||
|
||||
Creating a plugin: the basic
|
||||
----------------------------
|
||||
|
||||
The first thing to do is to be in the QPSH mode: you execute the qp2/bin/qpsh script that essentially loads all
|
||||
the environement variables and allows for the completion of command lines in bash (that is an AMAZING feature :)
|
||||
|
||||
Then, you need to known **where** you want to create your plugin, and what is the **name** of the plugin.
|
||||
|
||||
.. important::
|
||||
|
||||
The plugins are **NECESSARILY** located in qp2/plugins/, and from there you can create any structures of directories.
|
||||
|
||||
|
||||
Ex: If you want to create a plugin named "my_fancy_plugin" in the directory plugins/plugins_test/,
|
||||
this goes with the command
|
||||
|
||||
.. code:: bash
|
||||
|
||||
qp plugins create -n my_fancy_plugin -r plugins_test/
|
||||
|
||||
Then, to create the plugin of your dreams, the two questions you need to answer are the following:
|
||||
|
||||
1) What do I **need** to compute what I want, which means what are the **objects** that I need ?
|
||||
|
||||
There are two kind of objects:
|
||||
|
||||
+ the *routines/functions*:
|
||||
|
||||
Ex: Linear algebra routines, integration routines etc ...
|
||||
|
||||
+ the global variables which are called the *providers*:
|
||||
|
||||
Ex: one-electron integrals, Slater determinants, density matrices etc ...
|
||||
|
||||
2) **Where do I find** these objects ?
|
||||
|
||||
The objects (routines/functions/providers) are necessarily created in other *modules/plugins*.
|
||||
|
||||
.. seealso::
|
||||
|
||||
The routine :c:func:`lapack_diagd` (which diagonalises a real hermitian matrix) is located in the file
|
||||
:file:`qp2/src/utils/linear_algebra.irp.f`
|
||||
therefore it "belongs" to the module :ref:`module_utils`
|
||||
|
||||
The routine :c:func:`ao_to_mo` (which converts a given matrix A from the AO basis to the MO basis) is located in the file
|
||||
:file:`qp2/src/mo_one_e_ints/ao_to_mo.irp.f`
|
||||
therefore it "belongs" to the module :ref:`module_mo_one_e_ints`
|
||||
|
||||
The provider :c:data:`ao_one_e_integrals` (which is the integrals of one-body part of H on the AO basis) is located in the file
|
||||
:file:`qp2/src/ao_one_e_ints/ao_one_e_ints.irp.f`
|
||||
therefore it belongs to the module :ref:`module_ao_one_e_ints`
|
||||
|
||||
The provider :c:data:`one_e_dm_mo_beta_average` (which is the state average beta density matrix on the MO basis) is located in the file
|
||||
:file:`qp2/src/determinants/density_matrix.irp.f`
|
||||
therefore it belongs to the module :ref:`module_determinants`
|
||||
|
||||
To import all the variables that you need, you just need to write the name of the plugins in the :file:`NEED` file .
|
||||
|
||||
To import all the variables/routines of the module :ref:`module_utils`, :ref:`module_determinants` and :ref:`module_mo_one_e_ints`, the :file:`NEED` file you will need is simply the following:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
cat NEED
|
||||
|
||||
utils
|
||||
determinants
|
||||
mo_one_e_ints
|
||||
|
||||
|
||||
.. important::
|
||||
|
||||
There are **many** routines/providers in the core modules of QP.
|
||||
|
||||
Nevertheless, as everything is coded with the |IRPF90|, you can use the following amazing tools: :command:`irpman`
|
||||
|
||||
:command:`irpman` can be used in command line in bash to obtain all the info on a routine or variable !
|
||||
|
||||
|
||||
Example: execute the following command line :
|
||||
|
||||
.. code:: bash
|
||||
|
||||
irpman ao_one_e_integrals
|
||||
|
||||
Then all the information you need on :c:data:`ao_one_e_integrals` will appear on the screen.
|
||||
This includes
|
||||
|
||||
- **where** the provider is created, (*i.e.* the actual file where the provider is designed)
|
||||
- the **type** of the provider (*i.e.* a logical, integer etc ...)
|
||||
- the **dimension** if it is an array,
|
||||
- what other *providers* are **needed** to build this provider,
|
||||
- what other *providers* **need** this provider.
|
||||
|
||||
|
|
@ -4,3 +4,4 @@ becke_numerical_grid
|
|||
mo_one_e_ints
|
||||
dft_utils_in_r
|
||||
tc_keywords
|
||||
hamiltonian
|
|
@ -98,7 +98,7 @@ double precision function phi_j_erf_mu_r_phi(i, j, mu_in, C_center)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function phi_j_erf_mu_r_phi
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -201,7 +201,7 @@ subroutine erf_mu_gauss_ij_ao(i, j, mu, C_center, delta, gauss_ints)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end subroutine erf_mu_gauss_ij_ao
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -266,7 +266,7 @@ subroutine NAI_pol_x_mult_erf_ao(i_ao, j_ao, mu_in, C_center, ints)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end subroutine NAI_pol_x_mult_erf_ao
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -340,7 +340,7 @@ subroutine NAI_pol_x_mult_erf_ao_v0(i_ao, j_ao, mu_in, C_center, LD_C, ints, LD_
|
|||
|
||||
deallocate(integral)
|
||||
|
||||
end subroutine NAI_pol_x_mult_erf_ao_v0
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -420,7 +420,7 @@ subroutine NAI_pol_x_mult_erf_ao_v(i_ao, j_ao, mu_in, C_center, LD_C, ints, LD_i
|
|||
|
||||
deallocate(integral)
|
||||
|
||||
end subroutine NAI_pol_x_mult_erf_ao_v
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -479,7 +479,7 @@ double precision function NAI_pol_x_mult_erf_ao_x(i_ao, j_ao, mu_in, C_center)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function NAI_pol_x_mult_erf_ao_x
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -538,7 +538,7 @@ double precision function NAI_pol_x_mult_erf_ao_y(i_ao, j_ao, mu_in, C_center)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function NAI_pol_x_mult_erf_ao_y
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -597,7 +597,7 @@ double precision function NAI_pol_x_mult_erf_ao_z(i_ao, j_ao, mu_in, C_center)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function NAI_pol_x_mult_erf_ao_z
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -667,7 +667,7 @@ double precision function NAI_pol_x_mult_erf_ao_with1s_x(i_ao, j_ao, beta, B_cen
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function NAI_pol_x_mult_erf_ao_with1s_x
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -737,7 +737,7 @@ double precision function NAI_pol_x_mult_erf_ao_with1s_y(i_ao, j_ao, beta, B_cen
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function NAI_pol_x_mult_erf_ao_with1s_y
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -807,7 +807,7 @@ double precision function NAI_pol_x_mult_erf_ao_with1s_z(i_ao, j_ao, beta, B_cen
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function NAI_pol_x_mult_erf_ao_with1s_z
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -880,7 +880,7 @@ subroutine NAI_pol_x_mult_erf_ao_with1s(i_ao, j_ao, beta, B_center, mu_in, C_cen
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end subroutine NAI_pol_x_mult_erf_ao_with1s
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -967,7 +967,7 @@ subroutine NAI_pol_x_mult_erf_ao_with1s_v0(i_ao, j_ao, beta, B_center, LD_B, mu_
|
|||
|
||||
deallocate(integral)
|
||||
|
||||
end subroutine NAI_pol_x_mult_erf_ao_with1s_v0
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -1057,7 +1057,7 @@ subroutine NAI_pol_x_mult_erf_ao_with1s_v(i_ao, j_ao, beta, B_center, LD_B, mu_i
|
|||
|
||||
deallocate(integral)
|
||||
|
||||
end subroutine NAI_pol_x_mult_erf_ao_with1s_v
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -1175,7 +1175,7 @@ subroutine NAI_pol_x2_mult_erf_ao_with1s(i_ao, j_ao, beta, B_center, mu_in, C_ce
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end subroutine NAI_pol_x2_mult_erf_ao_with1s
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -1241,7 +1241,7 @@ subroutine NAI_pol_x2_mult_erf_ao(i_ao, j_ao, mu_in, C_center, ints)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end subroutine NAI_pol_x2_mult_erf_ao
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -1320,7 +1320,7 @@ subroutine NAI_pol_012_mult_erf_ao_with1s(i_ao, j_ao, beta, B_center, mu_in, C_c
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end subroutine NAI_pol_012_mult_erf_ao_with1s
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -1328,7 +1328,7 @@ subroutine NAI_pol_012_mult_erf_ao(i_ao, j_ao, mu_in, C_center, ints)
|
|||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! Computes the following integral :
|
||||
! Computes the following integrals :
|
||||
!
|
||||
! int(1) = $\int_{-\infty}^{infty} dr x^0 * \chi_i(r) \chi_j(r) \frac{\erf(\mu | r - R_C | )}{ | r - R_C | }$.
|
||||
!
|
||||
|
@ -1395,7 +1395,7 @@ subroutine NAI_pol_012_mult_erf_ao(i_ao, j_ao, mu_in, C_center, ints)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end subroutine NAI_pol_012_mult_erf_ao
|
||||
end
|
||||
|
||||
! ---
|
||||
|
|
@ -152,7 +152,7 @@ double precision function overlap_gauss_r12_ao(D_center, delta, i, j)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function overlap_gauss_r12_ao
|
||||
end
|
||||
|
||||
! --
|
||||
|
||||
|
@ -199,7 +199,7 @@ double precision function overlap_abs_gauss_r12_ao(D_center, delta, i, j)
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function overlap_gauss_r12_ao
|
||||
end
|
||||
|
||||
! --
|
||||
|
||||
|
@ -257,7 +257,7 @@ subroutine overlap_gauss_r12_ao_v(D_center, LD_D, delta, i, j, resv, LD_resv, n_
|
|||
|
||||
deallocate(analytical_j)
|
||||
|
||||
end subroutine overlap_gauss_r12_ao_v
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -327,7 +327,7 @@ double precision function overlap_gauss_r12_ao_with1s(B_center, beta, D_center,
|
|||
enddo
|
||||
enddo
|
||||
|
||||
end function overlap_gauss_r12_ao_with1s
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -420,7 +420,86 @@ subroutine overlap_gauss_r12_ao_with1s_v(B_center, beta, D_center, LD_D, delta,
|
|||
|
||||
deallocate(fact_g, G_center, analytical_j)
|
||||
|
||||
end subroutine overlap_gauss_r12_ao_with1s_v
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
subroutine overlap_gauss_r12_ao_012(D_center, delta, i, j, ints)
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! Computes the following integrals :
|
||||
!
|
||||
! ints(1) = $\int_{-\infty}^{infty} dr x^0 * \chi_i(r) \chi_j(r) e^{-\delta (r - D_center)^2}
|
||||
!
|
||||
! ints(2) = $\int_{-\infty}^{infty} dr x^1 * \chi_i(r) \chi_j(r) e^{-\delta (r - D_center)^2}
|
||||
! ints(3) = $\int_{-\infty}^{infty} dr y^1 * \chi_i(r) \chi_j(r) e^{-\delta (r - D_center)^2}
|
||||
! ints(4) = $\int_{-\infty}^{infty} dr z^1 * \chi_i(r) \chi_j(r) e^{-\delta (r - D_center)^2}
|
||||
!
|
||||
! ints(5) = $\int_{-\infty}^{infty} dr x^2 * \chi_i(r) \chi_j(r) e^{-\delta (r - D_center)^2}
|
||||
! ints(6) = $\int_{-\infty}^{infty} dr y^2 * \chi_i(r) \chi_j(r) e^{-\delta (r - D_center)^2}
|
||||
! ints(7) = $\int_{-\infty}^{infty} dr z^2 * \chi_i(r) \chi_j(r) e^{-\delta (r - D_center)^2}
|
||||
!
|
||||
END_DOC
|
||||
|
||||
include 'utils/constants.include.F'
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: i, j
|
||||
double precision, intent(in) :: delta, D_center(3)
|
||||
double precision, intent(out) :: ints(7)
|
||||
|
||||
integer :: k, l, m
|
||||
integer :: power_A(3), power_B(3), power_A1(3), power_A2(3)
|
||||
double precision :: A_center(3), B_center(3), alpha, beta, coef1, coef
|
||||
double precision :: integral0, integral1, integral2
|
||||
|
||||
double precision, external :: overlap_gauss_r12
|
||||
|
||||
ints = 0.d0
|
||||
|
||||
if(ao_overlap_abs(j,i).lt.1.d-12) then
|
||||
return
|
||||
endif
|
||||
|
||||
power_A(1:3) = ao_power(i,1:3)
|
||||
power_B(1:3) = ao_power(j,1:3)
|
||||
|
||||
A_center(1:3) = nucl_coord(ao_nucl(i),1:3)
|
||||
B_center(1:3) = nucl_coord(ao_nucl(j),1:3)
|
||||
|
||||
do l = 1, ao_prim_num(i)
|
||||
alpha = ao_expo_ordered_transp (l,i)
|
||||
coef1 = ao_coef_normalized_ordered_transp(l,i)
|
||||
|
||||
do k = 1, ao_prim_num(j)
|
||||
beta = ao_expo_ordered_transp(k,j)
|
||||
coef = coef1 * ao_coef_normalized_ordered_transp(k,j)
|
||||
|
||||
if(dabs(coef) .lt. 1d-12) cycle
|
||||
|
||||
integral0 = overlap_gauss_r12(D_center, delta, A_center, B_center, power_A, power_B, alpha, beta)
|
||||
|
||||
ints(1) += coef * integral0
|
||||
|
||||
do m = 1, 3
|
||||
power_A1 = power_A
|
||||
power_A1(m) += 1
|
||||
integral1 = overlap_gauss_r12(D_center, delta, A_center, B_center, power_A1, power_B, alpha, beta)
|
||||
ints(1+m) += coef * (integral1 + A_center(m)*integral0)
|
||||
|
||||
power_A2 = power_A
|
||||
power_A2(m) += 2
|
||||
integral2 = overlap_gauss_r12(D_center, delta, A_center, B_center, power_A2, power_B, alpha, beta)
|
||||
ints(4+m) += coef * (integral2 + A_center(m) * (2.d0*integral1 + A_center(m)*integral0))
|
||||
enddo
|
||||
|
||||
enddo ! k
|
||||
enddo ! l
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
! ---
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, int2_grad1u2_grad2u2_env2_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! -\frac{1}{4} x int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2)^2 [1 - erf(mu r12)]^2
|
||||
! -\frac{1}{4} x int dr2 phi_i(r2) phi_j(r2) 1s_env(r2)^2 [1 - erf(mu r12)]^2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -15,30 +15,30 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test, (ao_num, ao_n
|
|||
double precision :: coef, beta, B_center(3)
|
||||
double precision :: tmp
|
||||
double precision :: wall0, wall1
|
||||
double precision :: int_gauss, dsqpi_3_2, int_j1b
|
||||
double precision :: int_gauss, dsqpi_3_2, int_env
|
||||
double precision :: factor_ij_1s, beta_ij, center_ij_1s(3), sq_pi_3_2
|
||||
double precision, allocatable :: int_fit_v(:)
|
||||
double precision, external :: overlap_gauss_r12_ao
|
||||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
|
||||
print*, ' providing int2_grad1u2_grad2u2_j1b2_test ...'
|
||||
print*, ' providing int2_grad1u2_grad2u2_env2_test ...'
|
||||
|
||||
sq_pi_3_2 = (dacos(-1.d0))**(1.5d0)
|
||||
|
||||
provide mu_erf final_grid_points_transp j1b_pen List_comb_thr_b3_coef
|
||||
provide mu_erf final_grid_points_transp List_comb_thr_b3_coef
|
||||
call wall_time(wall0)
|
||||
|
||||
int2_grad1u2_grad2u2_j1b2_test(:,:,:) = 0.d0
|
||||
int2_grad1u2_grad2u2_env2_test(:,:,:) = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit_v, tmp,int_gauss,int_j1b,factor_ij_1s,beta_ij,center_ij_1s) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, final_grid_points,List_comb_thr_b3_size, &
|
||||
!$OMP final_grid_points_transp, ng_fit_jast, &
|
||||
!$OMP expo_gauss_1_erf_x_2, coef_gauss_1_erf_x_2, &
|
||||
!$OMP List_comb_thr_b3_coef, List_comb_thr_b3_expo, &
|
||||
!$OMP List_comb_thr_b3_cent, int2_grad1u2_grad2u2_j1b2_test, ao_abs_comb_b3_j1b, &
|
||||
!$OMP ao_overlap_abs,sq_pi_3_2,thrsh_cycle_tc)
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit_v, tmp,int_gauss,int_env,factor_ij_1s,beta_ij,center_ij_1s) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, final_grid_points,List_comb_thr_b3_size, &
|
||||
!$OMP final_grid_points_transp, ng_fit_jast, &
|
||||
!$OMP expo_gauss_1_erf_x_2, coef_gauss_1_erf_x_2, &
|
||||
!$OMP List_comb_thr_b3_coef, List_comb_thr_b3_expo, &
|
||||
!$OMP List_comb_thr_b3_cent, int2_grad1u2_grad2u2_env2_test, ao_abs_comb_b3_env, &
|
||||
!$OMP ao_overlap_abs,sq_pi_3_2,thrsh_cycle_tc)
|
||||
!$OMP DO SCHEDULE(dynamic)
|
||||
do ipoint = 1, n_points_final_grid
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
|
@ -54,13 +54,13 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test, (ao_num, ao_n
|
|||
! i_1s = 1
|
||||
! --- --- ---
|
||||
|
||||
int_j1b = ao_abs_comb_b3_j1b(1,j,i)
|
||||
int_env = ao_abs_comb_b3_env(1,j,i)
|
||||
do i_fit = 1, ng_fit_jast
|
||||
expo_fit = expo_gauss_1_erf_x_2(i_fit)
|
||||
coef_fit = -0.25d0 * coef_gauss_1_erf_x_2(i_fit)
|
||||
! if(dabs(coef_fit*int_j1b*sq_pi_3_2*(expo_fit)**(-1.5d0)).lt.thrsh_cycle_tc)cycle
|
||||
! if(dabs(coef_fit*int_env*sq_pi_3_2*(expo_fit)**(-1.5d0)).lt.thrsh_cycle_tc)cycle
|
||||
int_gauss = overlap_gauss_r12_ao(r, expo_fit, i, j)
|
||||
int2_grad1u2_grad2u2_j1b2_test(j,i,ipoint) += coef_fit * int_gauss
|
||||
int2_grad1u2_grad2u2_env2_test(j,i,ipoint) += coef_fit * int_gauss
|
||||
enddo
|
||||
|
||||
! --- --- ---
|
||||
|
@ -71,7 +71,7 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test, (ao_num, ao_n
|
|||
|
||||
coef = List_comb_thr_b3_coef (i_1s,j,i)
|
||||
beta = List_comb_thr_b3_expo (i_1s,j,i)
|
||||
int_j1b = ao_abs_comb_b3_j1b(i_1s,j,i)
|
||||
int_env = ao_abs_comb_b3_env(i_1s,j,i)
|
||||
B_center(1) = List_comb_thr_b3_cent(1,i_1s,j,i)
|
||||
B_center(2) = List_comb_thr_b3_cent(2,i_1s,j,i)
|
||||
B_center(3) = List_comb_thr_b3_cent(3,i_1s,j,i)
|
||||
|
@ -81,11 +81,11 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test, (ao_num, ao_n
|
|||
!DIR$ FORCEINLINE
|
||||
call gaussian_product(expo_fit,r,beta,B_center,factor_ij_1s,beta_ij,center_ij_1s)
|
||||
coef_fit = -0.25d0 * coef_gauss_1_erf_x_2(i_fit) * coef
|
||||
! if(dabs(coef_fit*factor_ij_1s*int_j1b*sq_pi_3_2*(beta_ij)**(-1.5d0)).lt.thrsh_cycle_tc)cycle
|
||||
! if(dabs(coef_fit*factor_ij_1s*int_env*sq_pi_3_2*(beta_ij)**(-1.5d0)).lt.thrsh_cycle_tc)cycle
|
||||
! call overlap_gauss_r12_ao_with1s_v(B_center, beta, final_grid_points_transp, &
|
||||
! expo_fit, i, j, int_fit_v, n_points_final_grid)
|
||||
int_gauss = overlap_gauss_r12_ao_with1s(B_center, beta, r, expo_fit, i, j)
|
||||
int2_grad1u2_grad2u2_j1b2_test(j,i,ipoint) += coef_fit * int_gauss
|
||||
int2_grad1u2_grad2u2_env2_test(j,i,ipoint) += coef_fit * int_gauss
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
@ -98,26 +98,26 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test, (ao_num, ao_n
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 1, ao_num
|
||||
do j = 1, i-1
|
||||
int2_grad1u2_grad2u2_j1b2_test(j,i,ipoint) = int2_grad1u2_grad2u2_j1b2_test(i,j,ipoint)
|
||||
int2_grad1u2_grad2u2_env2_test(j,i,ipoint) = int2_grad1u2_grad2u2_env2_test(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_grad1u2_grad2u2_j1b2_test', wall1 - wall0
|
||||
print*, ' wall time for int2_grad1u2_grad2u2_env2_test (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test_v, (ao_num, ao_num, n_points_final_grid)]
|
||||
!
|
||||
! BEGIN_DOC
|
||||
! !
|
||||
! ! -\frac{1}{4} x int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2)^2 [1 - erf(mu r12)]^2
|
||||
! !
|
||||
! END_DOC
|
||||
!
|
||||
BEGIN_PROVIDER [double precision, int2_grad1u2_grad2u2_env2_test_v, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! -\frac{1}{4} x int dr2 phi_i(r2) phi_j(r2) 1s_env(r2)^2 [1 - erf(mu r12)]^2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
integer :: i, j, ipoint, i_1s, i_fit
|
||||
double precision :: r(3), expo_fit, coef_fit
|
||||
|
@ -128,24 +128,24 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test_v, (ao_num, ao
|
|||
double precision, allocatable :: int_fit_v(:),big_array(:,:,:)
|
||||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
|
||||
print*, ' providing int2_grad1u2_grad2u2_j1b2_test_v ...'
|
||||
print*, ' providing int2_grad1u2_grad2u2_env2_test_v ...'
|
||||
|
||||
provide mu_erf final_grid_points_transp j1b_pen
|
||||
provide mu_erf final_grid_points_transp
|
||||
call wall_time(wall0)
|
||||
|
||||
double precision :: int_j1b
|
||||
double precision :: int_env
|
||||
big_array(:,:,:) = 0.d0
|
||||
allocate(big_array(n_points_final_grid,ao_num, ao_num))
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center,&
|
||||
!$OMP coef_fit, expo_fit, int_fit_v, tmp,int_j1b) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_comb_thr_b3_size,&
|
||||
!$OMP final_grid_points_transp, ng_fit_jast, &
|
||||
!$OMP expo_gauss_1_erf_x_2, coef_gauss_1_erf_x_2, &
|
||||
!$OMP List_comb_thr_b3_coef, List_comb_thr_b3_expo, &
|
||||
!$OMP List_comb_thr_b3_cent, big_array,&
|
||||
!$OMP ao_abs_comb_b3_j1b,ao_overlap_abs,thrsh_cycle_tc)
|
||||
!
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center,&
|
||||
!$OMP coef_fit, expo_fit, int_fit_v, tmp,int_env) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_comb_thr_b3_size,&
|
||||
!$OMP final_grid_points_transp, ng_fit_jast, &
|
||||
!$OMP expo_gauss_1_erf_x_2, coef_gauss_1_erf_x_2, &
|
||||
!$OMP List_comb_thr_b3_coef, List_comb_thr_b3_expo, &
|
||||
!$OMP List_comb_thr_b3_cent, big_array,&
|
||||
!$OMP ao_abs_comb_b3_env,ao_overlap_abs,thrsh_cycle_tc)
|
||||
!
|
||||
allocate(int_fit_v(n_points_final_grid))
|
||||
!$OMP DO SCHEDULE(dynamic)
|
||||
do i = 1, ao_num
|
||||
|
@ -159,7 +159,7 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test_v, (ao_num, ao
|
|||
|
||||
coef = List_comb_thr_b3_coef (i_1s,j,i)
|
||||
beta = List_comb_thr_b3_expo (i_1s,j,i)
|
||||
int_j1b = ao_abs_comb_b3_j1b(i_1s,j,i)
|
||||
int_env = ao_abs_comb_b3_env(i_1s,j,i)
|
||||
B_center(1) = List_comb_thr_b3_cent(1,i_1s,j,i)
|
||||
B_center(2) = List_comb_thr_b3_cent(2,i_1s,j,i)
|
||||
B_center(3) = List_comb_thr_b3_cent(3,i_1s,j,i)
|
||||
|
@ -187,7 +187,7 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test_v, (ao_num, ao
|
|||
do i = 1, ao_num
|
||||
do j = i, ao_num
|
||||
do ipoint = 1, n_points_final_grid
|
||||
int2_grad1u2_grad2u2_j1b2_test_v(j,i,ipoint) = big_array(ipoint,j,i)
|
||||
int2_grad1u2_grad2u2_env2_test_v(j,i,ipoint) = big_array(ipoint,j,i)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -195,23 +195,23 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2_test_v, (ao_num, ao
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
int2_grad1u2_grad2u2_j1b2_test_v(j,i,ipoint) = big_array(ipoint,i,j)
|
||||
int2_grad1u2_grad2u2_env2_test_v(j,i,ipoint) = big_array(ipoint,i,j)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_grad1u2_grad2u2_j1b2_test_v', wall1 - wall0
|
||||
print*, ' wall time for int2_grad1u2_grad2u2_env2_test_v (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, int2_u2_j1b2_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, int2_u2_env2_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2)^2 [u_12^mu]^2
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2)^2 [u_12^mu]^2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -219,29 +219,29 @@ BEGIN_PROVIDER [ double precision, int2_u2_j1b2_test, (ao_num, ao_num, n_points_
|
|||
integer :: i, j, ipoint, i_1s, i_fit
|
||||
double precision :: r(3), int_fit, expo_fit, coef_fit
|
||||
double precision :: coef, beta, B_center(3), tmp
|
||||
double precision :: wall0, wall1,int_j1b
|
||||
double precision :: wall0, wall1,int_env
|
||||
|
||||
double precision, external :: overlap_gauss_r12_ao
|
||||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
double precision :: factor_ij_1s,beta_ij,center_ij_1s(3),sq_pi_3_2
|
||||
|
||||
print*, ' providing int2_u2_j1b2_test ...'
|
||||
print*, ' providing int2_u2_env2_test ...'
|
||||
|
||||
sq_pi_3_2 = (dacos(-1.d0))**(1.5d0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
provide mu_erf final_grid_points
|
||||
call wall_time(wall0)
|
||||
|
||||
int2_u2_j1b2_test = 0.d0
|
||||
int2_u2_env2_test = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp, int_j1b,factor_ij_1s,beta_ij,center_ij_1s) &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp, int_env,factor_ij_1s,beta_ij,center_ij_1s) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_comb_thr_b3_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_x_2, coef_gauss_j_mu_x_2, &
|
||||
!$OMP List_comb_thr_b3_coef, List_comb_thr_b3_expo,sq_pi_3_2, &
|
||||
!$OMP List_comb_thr_b3_cent, int2_u2_j1b2_test,ao_abs_comb_b3_j1b,thrsh_cycle_tc)
|
||||
!$OMP List_comb_thr_b3_cent, int2_u2_env2_test,ao_abs_comb_b3_env,thrsh_cycle_tc)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
|
@ -257,12 +257,12 @@ BEGIN_PROVIDER [ double precision, int2_u2_j1b2_test, (ao_num, ao_num, n_points_
|
|||
! i_1s = 1
|
||||
! --- --- ---
|
||||
|
||||
int_j1b = ao_abs_comb_b3_j1b(1,j,i)
|
||||
if(dabs(int_j1b).lt.thrsh_cycle_tc) cycle
|
||||
int_env = ao_abs_comb_b3_env(1,j,i)
|
||||
if(dabs(int_env).lt.thrsh_cycle_tc) cycle
|
||||
do i_fit = 1, ng_fit_jast
|
||||
expo_fit = expo_gauss_j_mu_x_2(i_fit)
|
||||
coef_fit = coef_gauss_j_mu_x_2(i_fit)
|
||||
! if(dabs(coef_fit*int_j1b*sq_pi_3_2*(expo_fit)**(-1.5d0)).lt.thrsh_cycle_tc)cycle
|
||||
! if(dabs(coef_fit*int_env*sq_pi_3_2*(expo_fit)**(-1.5d0)).lt.thrsh_cycle_tc)cycle
|
||||
int_fit = overlap_gauss_r12_ao(r, expo_fit, i, j)
|
||||
tmp += coef_fit * int_fit
|
||||
enddo
|
||||
|
@ -275,8 +275,8 @@ BEGIN_PROVIDER [ double precision, int2_u2_j1b2_test, (ao_num, ao_num, n_points_
|
|||
|
||||
coef = List_comb_thr_b3_coef (i_1s,j,i)
|
||||
beta = List_comb_thr_b3_expo (i_1s,j,i)
|
||||
int_j1b = ao_abs_comb_b3_j1b(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_j1b).lt.thrsh_cycle_tc)cycle
|
||||
int_env = ao_abs_comb_b3_env(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_env).lt.thrsh_cycle_tc)cycle
|
||||
B_center(1) = List_comb_thr_b3_cent(1,i_1s,j,i)
|
||||
B_center(2) = List_comb_thr_b3_cent(2,i_1s,j,i)
|
||||
B_center(3) = List_comb_thr_b3_cent(3,i_1s,j,i)
|
||||
|
@ -286,13 +286,13 @@ BEGIN_PROVIDER [ double precision, int2_u2_j1b2_test, (ao_num, ao_num, n_points_
|
|||
coef_fit = coef_gauss_j_mu_x_2(i_fit)
|
||||
!DIR$ FORCEINLINE
|
||||
call gaussian_product(expo_fit,r,beta,B_center,factor_ij_1s,beta_ij,center_ij_1s)
|
||||
! if(dabs(coef_fit*coef*factor_ij_1s*int_j1b*sq_pi_3_2*(beta_ij)**(-1.5d0)).lt.thrsh_cycle_tc)cycle
|
||||
! if(dabs(coef_fit*coef*factor_ij_1s*int_env*sq_pi_3_2*(beta_ij)**(-1.5d0)).lt.thrsh_cycle_tc)cycle
|
||||
int_fit = overlap_gauss_r12_ao_with1s(B_center, beta, r, expo_fit, i, j)
|
||||
tmp += coef * coef_fit * int_fit
|
||||
enddo
|
||||
enddo
|
||||
|
||||
int2_u2_j1b2_test(j,i,ipoint) = tmp
|
||||
int2_u2_env2_test(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -302,23 +302,23 @@ BEGIN_PROVIDER [ double precision, int2_u2_j1b2_test, (ao_num, ao_num, n_points_
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
int2_u2_j1b2_test(j,i,ipoint) = int2_u2_j1b2_test(i,j,ipoint)
|
||||
int2_u2_env2_test(j,i,ipoint) = int2_u2_env2_test(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_u2_j1b2_test', wall1 - wall0
|
||||
print*, ' wall time for int2_u2_env2_test (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2_test, (ao_num, ao_num, n_points_final_grid, 3)]
|
||||
BEGIN_PROVIDER [double precision, int2_u_grad1u_x_env2_test, (ao_num,ao_num,n_points_final_grid,3)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2)^2 u_12^mu [\grad_1 u_12^mu] r2
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2)^2 u_12^mu [\grad_1 u_12^mu] r2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -327,27 +327,27 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2_test, (ao_num, ao_num, n
|
|||
double precision :: r(3), int_fit(3), expo_fit, coef_fit
|
||||
double precision :: coef, beta, B_center(3), dist
|
||||
double precision :: alpha_1s, alpha_1s_inv, centr_1s(3), expo_coef_1s, coef_tmp
|
||||
double precision :: tmp_x, tmp_y, tmp_z, int_j1b
|
||||
double precision :: tmp_x, tmp_y, tmp_z, int_env
|
||||
double precision :: wall0, wall1, sq_pi_3_2,sq_alpha
|
||||
|
||||
print*, ' providing int2_u_grad1u_x_j1b2_test ...'
|
||||
print*, ' providing int2_u_grad1u_x_env2_test ...'
|
||||
|
||||
sq_pi_3_2 = dacos(-1.D0)**(1.d0)
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
provide mu_erf final_grid_points
|
||||
call wall_time(wall0)
|
||||
|
||||
int2_u_grad1u_x_j1b2_test = 0.d0
|
||||
int2_u_grad1u_x_env2_test = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, alpha_1s, dist, &
|
||||
!$OMP alpha_1s_inv, centr_1s, expo_coef_1s, coef_tmp, &
|
||||
!$OMP tmp_x, tmp_y, tmp_z,int_j1b,sq_alpha) &
|
||||
!$OMP tmp_x, tmp_y, tmp_z,int_env,sq_alpha) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_comb_thr_b3_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_1_erf, coef_gauss_j_mu_1_erf, &
|
||||
!$OMP List_comb_thr_b3_coef, List_comb_thr_b3_expo, &
|
||||
!$OMP List_comb_thr_b3_cent, int2_u_grad1u_x_j1b2_test,ao_abs_comb_b3_j1b,sq_pi_3_2,thrsh_cycle_tc)
|
||||
!$OMP List_comb_thr_b3_cent, int2_u_grad1u_x_env2_test,ao_abs_comb_b3_env,sq_pi_3_2,thrsh_cycle_tc)
|
||||
!$OMP DO
|
||||
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
@ -365,8 +365,8 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2_test, (ao_num, ao_num, n
|
|||
|
||||
coef = List_comb_thr_b3_coef (i_1s,j,i)
|
||||
beta = List_comb_thr_b3_expo (i_1s,j,i)
|
||||
int_j1b = ao_abs_comb_b3_j1b(i_1s,j,i)
|
||||
if(dabs(coef)*dabs(int_j1b).lt.thrsh_cycle_tc)cycle
|
||||
int_env = ao_abs_comb_b3_env(i_1s,j,i)
|
||||
if(dabs(coef)*dabs(int_env).lt.thrsh_cycle_tc)cycle
|
||||
B_center(1) = List_comb_thr_b3_cent(1,i_1s,j,i)
|
||||
B_center(2) = List_comb_thr_b3_cent(2,i_1s,j,i)
|
||||
B_center(3) = List_comb_thr_b3_cent(3,i_1s,j,i)
|
||||
|
@ -389,7 +389,7 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2_test, (ao_num, ao_num, n
|
|||
expo_coef_1s = beta * expo_fit * alpha_1s_inv * dist
|
||||
coef_tmp = coef * coef_fit * dexp(-expo_coef_1s)
|
||||
sq_alpha = alpha_1s_inv * dsqrt(alpha_1s_inv)
|
||||
! if(dabs(coef_tmp*int_j1b*sq_pi_3_2*sq_alpha) .lt. thrsh_cycle_tc) cycle
|
||||
! if(dabs(coef_tmp*int_env*sq_pi_3_2*sq_alpha) .lt. thrsh_cycle_tc) cycle
|
||||
|
||||
call NAI_pol_x_mult_erf_ao_with1s(i, j, alpha_1s, centr_1s, 1.d+9, r, int_fit)
|
||||
|
||||
|
@ -402,9 +402,9 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2_test, (ao_num, ao_num, n
|
|||
|
||||
enddo
|
||||
|
||||
int2_u_grad1u_x_j1b2_test(j,i,ipoint,1) = tmp_x
|
||||
int2_u_grad1u_x_j1b2_test(j,i,ipoint,2) = tmp_y
|
||||
int2_u_grad1u_x_j1b2_test(j,i,ipoint,3) = tmp_z
|
||||
int2_u_grad1u_x_env2_test(j,i,ipoint,1) = tmp_x
|
||||
int2_u_grad1u_x_env2_test(j,i,ipoint,2) = tmp_y
|
||||
int2_u_grad1u_x_env2_test(j,i,ipoint,3) = tmp_z
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -414,24 +414,25 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2_test, (ao_num, ao_num, n
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
int2_u_grad1u_x_j1b2_test(j,i,ipoint,1) = int2_u_grad1u_x_j1b2_test(i,j,ipoint,1)
|
||||
int2_u_grad1u_x_j1b2_test(j,i,ipoint,2) = int2_u_grad1u_x_j1b2_test(i,j,ipoint,2)
|
||||
int2_u_grad1u_x_j1b2_test(j,i,ipoint,3) = int2_u_grad1u_x_j1b2_test(i,j,ipoint,3)
|
||||
int2_u_grad1u_x_env2_test(j,i,ipoint,1) = int2_u_grad1u_x_env2_test(i,j,ipoint,1)
|
||||
int2_u_grad1u_x_env2_test(j,i,ipoint,2) = int2_u_grad1u_x_env2_test(i,j,ipoint,2)
|
||||
int2_u_grad1u_x_env2_test(j,i,ipoint,3) = int2_u_grad1u_x_env2_test(i,j,ipoint,3)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_u_grad1u_x_j1b2_test', wall1 - wall0
|
||||
print*, ' wall time for int2_u_grad1u_x_env2_test (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, int2_u_grad1u_env2_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2)^2 u_12^mu [\grad_1 u_12^mu]
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2)^2 u_12^mu [\grad_1 u_12^mu]
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -442,31 +443,31 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2_test, (ao_num, ao_num, n_p
|
|||
double precision :: alpha_1s, alpha_1s_inv, centr_1s(3), expo_coef_1s, tmp
|
||||
double precision :: wall0, wall1
|
||||
double precision, external :: NAI_pol_mult_erf_ao_with1s
|
||||
double precision :: j12_mu_r12,int_j1b
|
||||
double precision :: j12_mu_r12,int_env
|
||||
double precision :: sigma_ij,dist_ij_ipoint,dsqpi_3_2
|
||||
double precision :: beta_ij,center_ij_1s(3),factor_ij_1s
|
||||
|
||||
print*, ' providing int2_u_grad1u_j1b2_test ...'
|
||||
print*, ' providing int2_u_grad1u_env2_test ...'
|
||||
|
||||
dsqpi_3_2 = (dacos(-1.d0))**(1.5d0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen ao_overlap_abs List_comb_thr_b3_cent
|
||||
provide mu_erf final_grid_points ao_overlap_abs List_comb_thr_b3_cent
|
||||
call wall_time(wall0)
|
||||
|
||||
|
||||
int2_u_grad1u_j1b2_test = 0.d0
|
||||
int2_u_grad1u_env2_test = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp, alpha_1s, dist, &
|
||||
!$OMP beta_ij,center_ij_1s,factor_ij_1s, &
|
||||
!$OMP int_j1b,alpha_1s_inv, centr_1s, expo_coef_1s, coef_tmp) &
|
||||
!$OMP int_env,alpha_1s_inv, centr_1s, expo_coef_1s, coef_tmp) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_comb_thr_b3_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_1_erf, coef_gauss_j_mu_1_erf, &
|
||||
!$OMP ao_prod_dist_grid, ao_prod_sigma, ao_overlap_abs_grid,ao_prod_center,dsqpi_3_2, &
|
||||
!$OMP List_comb_thr_b3_coef, List_comb_thr_b3_expo, ao_abs_comb_b3_j1b, &
|
||||
!$OMP List_comb_thr_b3_cent, int2_u_grad1u_j1b2_test,thrsh_cycle_tc)
|
||||
!$OMP List_comb_thr_b3_coef, List_comb_thr_b3_expo, ao_abs_comb_b3_env, &
|
||||
!$OMP List_comb_thr_b3_cent, int2_u_grad1u_env2_test,thrsh_cycle_tc)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
do i = 1, ao_num
|
||||
|
@ -484,11 +485,9 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2_test, (ao_num, ao_num, n_p
|
|||
! i_1s = 1
|
||||
! --- --- ---
|
||||
|
||||
int_j1b = ao_abs_comb_b3_j1b(1,j,i)
|
||||
! if(dabs(int_j1b).lt.thrsh_cycle_tc) cycle
|
||||
int_env = ao_abs_comb_b3_env(1,j,i)
|
||||
do i_fit = 1, ng_fit_jast
|
||||
expo_fit = expo_gauss_j_mu_1_erf(i_fit)
|
||||
! if(dabs(int_j1b)*dsqpi_3_2*expo_fit**(-1.5d0).lt.thrsh_cycle_tc) cycle
|
||||
coef_fit = coef_gauss_j_mu_1_erf(i_fit)
|
||||
int_fit = NAI_pol_mult_erf_ao_with1s(i, j, expo_fit, r, 1.d+9, r)
|
||||
tmp += coef_fit * int_fit
|
||||
|
@ -502,8 +501,7 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2_test, (ao_num, ao_num, n_p
|
|||
|
||||
coef = List_comb_thr_b3_coef (i_1s,j,i)
|
||||
beta = List_comb_thr_b3_expo (i_1s,j,i)
|
||||
int_j1b = ao_abs_comb_b3_j1b(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_j1b).lt.thrsh_cycle_tc)cycle
|
||||
int_env = ao_abs_comb_b3_env(i_1s,j,i)
|
||||
B_center(1) = List_comb_thr_b3_cent(1,i_1s,j,i)
|
||||
B_center(2) = List_comb_thr_b3_cent(2,i_1s,j,i)
|
||||
B_center(3) = List_comb_thr_b3_cent(3,i_1s,j,i)
|
||||
|
@ -513,7 +511,6 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2_test, (ao_num, ao_num, n_p
|
|||
do i_fit = 1, ng_fit_jast
|
||||
expo_fit = expo_gauss_j_mu_1_erf(i_fit)
|
||||
call gaussian_product(expo_fit,r,beta,B_center,factor_ij_1s,beta_ij,center_ij_1s)
|
||||
! if(factor_ij_1s*dabs(coef*int_j1b)*dsqpi_3_2*beta_ij**(-1.5d0).lt.thrsh_cycle_tc)cycle
|
||||
coef_fit = coef_gauss_j_mu_1_erf(i_fit)
|
||||
|
||||
alpha_1s = beta + expo_fit
|
||||
|
@ -533,7 +530,7 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2_test, (ao_num, ao_num, n_p
|
|||
enddo
|
||||
enddo
|
||||
|
||||
int2_u_grad1u_j1b2_test(j,i,ipoint) = tmp
|
||||
int2_u_grad1u_env2_test(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -543,14 +540,15 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2_test, (ao_num, ao_num, n_p
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
int2_u_grad1u_j1b2_test(j,i,ipoint) = int2_u_grad1u_j1b2_test(i,j,ipoint)
|
||||
int2_u_grad1u_env2_test(j,i,ipoint) = int2_u_grad1u_env2_test(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_u_grad1u_j1b2_test', wall1 - wall0
|
||||
print*, ' wall time for int2_u_grad1u_env2_test (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
|
@ -6,7 +6,7 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2, (ao_num, ao_num, n_poin
|
|||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! -\frac{1}{4} x int dr2 phi_i(r2) phi_j(r2) [1 - erf(mu r12)]^2
|
||||
! \frac{1}{4} x int dr2 phi_i(r2) phi_j(r2) [1 - erf(mu r12)]^2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -21,7 +21,8 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2, (ao_num, ao_num, n_poin
|
|||
print*, ' providing int2_grad1u2_grad2u2 ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
provide mu_erf
|
||||
provide final_grid_points
|
||||
|
||||
int2_grad1u2_grad2u2 = 0.d0
|
||||
|
||||
|
@ -44,7 +45,7 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2, (ao_num, ao_num, n_poin
|
|||
expo_fit = expo_gauss_1_erf_x_2(i_fit)
|
||||
coef_fit = coef_gauss_1_erf_x_2(i_fit)
|
||||
|
||||
tmp += -0.25d0 * coef_fit * overlap_gauss_r12_ao(r, expo_fit, i, j)
|
||||
tmp += 0.25d0 * coef_fit * overlap_gauss_r12_ao(r, expo_fit, i, j)
|
||||
enddo
|
||||
|
||||
int2_grad1u2_grad2u2(j,i,ipoint) = tmp
|
||||
|
@ -63,17 +64,17 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2, (ao_num, ao_num, n_poin
|
|||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_grad1u2_grad2u2 =', wall1 - wall0
|
||||
print*, ' wall time for int2_grad1u2_grad2u2 (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, int2_grad1u2_grad2u2_env2, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! -\frac{1}{4} x int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2)^2 [1 - erf(mu r12)]^2
|
||||
! -\frac{1}{4} x int dr2 phi_i(r2) phi_j(r2) 1s_env(r2)^2 [1 - erf(mu r12)]^2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -87,21 +88,22 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2, (ao_num, ao_num, n
|
|||
double precision, external :: overlap_gauss_r12_ao
|
||||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
|
||||
print*, ' providing int2_grad1u2_grad2u2_j1b2 ...'
|
||||
print*, ' providing int2_grad1u2_grad2u2_env2 ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
provide mu_erf
|
||||
provide final_grid_points
|
||||
|
||||
int2_grad1u2_grad2u2_j1b2 = 0.d0
|
||||
int2_grad1u2_grad2u2_env2 = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_all_comb_b3_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_1_erf_x_2, coef_gauss_1_erf_x_2, &
|
||||
!$OMP List_all_comb_b3_coef, List_all_comb_b3_expo, &
|
||||
!$OMP List_all_comb_b3_cent, int2_grad1u2_grad2u2_j1b2)
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_square_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_1_erf_x_2, coef_gauss_1_erf_x_2, &
|
||||
!$OMP List_env1s_square_coef, List_env1s_square_expo, &
|
||||
!$OMP List_env1s_square_cent, int2_grad1u2_grad2u2_env2)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
|
@ -125,14 +127,14 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2, (ao_num, ao_num, n
|
|||
|
||||
! ---
|
||||
|
||||
do i_1s = 2, List_all_comb_b3_size
|
||||
do i_1s = 2, List_env1s_square_size
|
||||
|
||||
coef = List_all_comb_b3_coef (i_1s)
|
||||
coef = List_env1s_square_coef (i_1s)
|
||||
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
||||
beta = List_all_comb_b3_expo (i_1s)
|
||||
B_center(1) = List_all_comb_b3_cent(1,i_1s)
|
||||
B_center(2) = List_all_comb_b3_cent(2,i_1s)
|
||||
B_center(3) = List_all_comb_b3_cent(3,i_1s)
|
||||
beta = List_env1s_square_expo (i_1s)
|
||||
B_center(1) = List_env1s_square_cent(1,i_1s)
|
||||
B_center(2) = List_env1s_square_cent(2,i_1s)
|
||||
B_center(3) = List_env1s_square_cent(3,i_1s)
|
||||
|
||||
int_fit = overlap_gauss_r12_ao_with1s(B_center, beta, r, expo_fit, i, j)
|
||||
|
||||
|
@ -143,7 +145,7 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2, (ao_num, ao_num, n
|
|||
|
||||
enddo
|
||||
|
||||
int2_grad1u2_grad2u2_j1b2(j,i,ipoint) = tmp
|
||||
int2_grad1u2_grad2u2_env2(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -153,23 +155,23 @@ BEGIN_PROVIDER [ double precision, int2_grad1u2_grad2u2_j1b2, (ao_num, ao_num, n
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
int2_grad1u2_grad2u2_j1b2(j,i,ipoint) = int2_grad1u2_grad2u2_j1b2(i,j,ipoint)
|
||||
int2_grad1u2_grad2u2_env2(j,i,ipoint) = int2_grad1u2_grad2u2_env2(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_grad1u2_grad2u2_j1b2 =', wall1 - wall0
|
||||
print*, ' wall time for int2_grad1u2_grad2u2_env2 (min) =', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [double precision, int2_u2_j1b2, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, int2_u2_env2, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2)^2 [u_12^mu]^2
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2)^2 [u_12^mu]^2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -182,21 +184,22 @@ BEGIN_PROVIDER [double precision, int2_u2_j1b2, (ao_num, ao_num, n_points_final_
|
|||
double precision, external :: overlap_gauss_r12_ao
|
||||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
|
||||
print*, ' providing int2_u2_j1b2 ...'
|
||||
print*, ' providing int2_u2_env2 ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
provide mu_erf
|
||||
provide final_grid_points
|
||||
|
||||
int2_u2_j1b2 = 0.d0
|
||||
int2_u2_env2 = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_all_comb_b3_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_x_2, coef_gauss_j_mu_x_2, &
|
||||
!$OMP List_all_comb_b3_coef, List_all_comb_b3_expo, &
|
||||
!$OMP List_all_comb_b3_cent, int2_u2_j1b2)
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_square_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_x_2, coef_gauss_j_mu_x_2, &
|
||||
!$OMP List_env1s_square_coef, List_env1s_square_expo, &
|
||||
!$OMP List_env1s_square_cent, int2_u2_env2)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
|
@ -220,14 +223,14 @@ BEGIN_PROVIDER [double precision, int2_u2_j1b2, (ao_num, ao_num, n_points_final_
|
|||
|
||||
! ---
|
||||
|
||||
do i_1s = 2, List_all_comb_b3_size
|
||||
do i_1s = 2, List_env1s_square_size
|
||||
|
||||
coef = List_all_comb_b3_coef (i_1s)
|
||||
coef = List_env1s_square_coef (i_1s)
|
||||
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
||||
beta = List_all_comb_b3_expo (i_1s)
|
||||
B_center(1) = List_all_comb_b3_cent(1,i_1s)
|
||||
B_center(2) = List_all_comb_b3_cent(2,i_1s)
|
||||
B_center(3) = List_all_comb_b3_cent(3,i_1s)
|
||||
beta = List_env1s_square_expo (i_1s)
|
||||
B_center(1) = List_env1s_square_cent(1,i_1s)
|
||||
B_center(2) = List_env1s_square_cent(2,i_1s)
|
||||
B_center(3) = List_env1s_square_cent(3,i_1s)
|
||||
|
||||
int_fit = overlap_gauss_r12_ao_with1s(B_center, beta, r, expo_fit, i, j)
|
||||
|
||||
|
@ -238,7 +241,7 @@ BEGIN_PROVIDER [double precision, int2_u2_j1b2, (ao_num, ao_num, n_points_final_
|
|||
|
||||
enddo
|
||||
|
||||
int2_u2_j1b2(j,i,ipoint) = tmp
|
||||
int2_u2_env2(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -248,23 +251,23 @@ BEGIN_PROVIDER [double precision, int2_u2_j1b2, (ao_num, ao_num, n_points_final_
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
int2_u2_j1b2(j,i,ipoint) = int2_u2_j1b2(i,j,ipoint)
|
||||
int2_u2_env2(j,i,ipoint) = int2_u2_env2(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_u2_j1b2', wall1 - wall0
|
||||
print*, ' wall time for int2_u2_env2 (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2, (ao_num, ao_num, n_points_final_grid, 3)]
|
||||
BEGIN_PROVIDER [double precision, int2_u_grad1u_x_env2, (ao_num, ao_num, n_points_final_grid, 3)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2)^2 u_12^mu [\grad_1 u_12^mu] r2
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2)^2 u_12^mu [\grad_1 u_12^mu] r2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -276,23 +279,24 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2, (ao_num, ao_num, n_poin
|
|||
double precision :: tmp_x, tmp_y, tmp_z
|
||||
double precision :: wall0, wall1
|
||||
|
||||
print*, ' providing int2_u_grad1u_x_j1b2 ...'
|
||||
print*, ' providing int2_u_grad1u_x_env2 ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
provide mu_erf
|
||||
provide final_grid_points
|
||||
|
||||
int2_u_grad1u_x_j1b2 = 0.d0
|
||||
int2_u_grad1u_x_env2 = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, alpha_1s, dist, &
|
||||
!$OMP alpha_1s_inv, centr_1s, expo_coef_1s, coef_tmp, &
|
||||
!$OMP tmp_x, tmp_y, tmp_z) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_all_comb_b3_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_1_erf, coef_gauss_j_mu_1_erf, &
|
||||
!$OMP List_all_comb_b3_coef, List_all_comb_b3_expo, &
|
||||
!$OMP List_all_comb_b3_cent, int2_u_grad1u_x_j1b2)
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, alpha_1s, dist, &
|
||||
!$OMP alpha_1s_inv, centr_1s, expo_coef_1s, coef_tmp, &
|
||||
!$OMP tmp_x, tmp_y, tmp_z) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_square_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_1_erf, coef_gauss_j_mu_1_erf, &
|
||||
!$OMP List_env1s_square_coef, List_env1s_square_expo, &
|
||||
!$OMP List_env1s_square_cent, int2_u_grad1u_x_env2)
|
||||
!$OMP DO
|
||||
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
@ -321,14 +325,14 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2, (ao_num, ao_num, n_poin
|
|||
|
||||
! ---
|
||||
|
||||
do i_1s = 2, List_all_comb_b3_size
|
||||
do i_1s = 2, List_env1s_square_size
|
||||
|
||||
coef = List_all_comb_b3_coef (i_1s)
|
||||
coef = List_env1s_square_coef (i_1s)
|
||||
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
||||
beta = List_all_comb_b3_expo (i_1s)
|
||||
B_center(1) = List_all_comb_b3_cent(1,i_1s)
|
||||
B_center(2) = List_all_comb_b3_cent(2,i_1s)
|
||||
B_center(3) = List_all_comb_b3_cent(3,i_1s)
|
||||
beta = List_env1s_square_expo (i_1s)
|
||||
B_center(1) = List_env1s_square_cent(1,i_1s)
|
||||
B_center(2) = List_env1s_square_cent(2,i_1s)
|
||||
B_center(3) = List_env1s_square_cent(3,i_1s)
|
||||
dist = (B_center(1) - r(1)) * (B_center(1) - r(1)) &
|
||||
+ (B_center(2) - r(2)) * (B_center(2) - r(2)) &
|
||||
+ (B_center(3) - r(3)) * (B_center(3) - r(3))
|
||||
|
@ -355,9 +359,9 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2, (ao_num, ao_num, n_poin
|
|||
|
||||
enddo
|
||||
|
||||
int2_u_grad1u_x_j1b2(j,i,ipoint,1) = tmp_x
|
||||
int2_u_grad1u_x_j1b2(j,i,ipoint,2) = tmp_y
|
||||
int2_u_grad1u_x_j1b2(j,i,ipoint,3) = tmp_z
|
||||
int2_u_grad1u_x_env2(j,i,ipoint,1) = tmp_x
|
||||
int2_u_grad1u_x_env2(j,i,ipoint,2) = tmp_y
|
||||
int2_u_grad1u_x_env2(j,i,ipoint,3) = tmp_z
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -367,25 +371,25 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_x_j1b2, (ao_num, ao_num, n_poin
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
int2_u_grad1u_x_j1b2(j,i,ipoint,1) = int2_u_grad1u_x_j1b2(i,j,ipoint,1)
|
||||
int2_u_grad1u_x_j1b2(j,i,ipoint,2) = int2_u_grad1u_x_j1b2(i,j,ipoint,2)
|
||||
int2_u_grad1u_x_j1b2(j,i,ipoint,3) = int2_u_grad1u_x_j1b2(i,j,ipoint,3)
|
||||
int2_u_grad1u_x_env2(j,i,ipoint,1) = int2_u_grad1u_x_env2(i,j,ipoint,1)
|
||||
int2_u_grad1u_x_env2(j,i,ipoint,2) = int2_u_grad1u_x_env2(i,j,ipoint,2)
|
||||
int2_u_grad1u_x_env2(j,i,ipoint,3) = int2_u_grad1u_x_env2(i,j,ipoint,3)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_u_grad1u_x_j1b2 = ', wall1 - wall0
|
||||
print*, ' wall time for int2_u_grad1u_x_env2 (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [ double precision, int2_u_grad1u_env2, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2)^2 u_12^mu [\grad_1 u_12^mu]
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2)^2 u_12^mu [\grad_1 u_12^mu]
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -397,22 +401,23 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2, (ao_num, ao_num, n_points
|
|||
double precision :: wall0, wall1
|
||||
double precision, external :: NAI_pol_mult_erf_ao_with1s
|
||||
|
||||
print*, ' providing int2_u_grad1u_j1b2 ...'
|
||||
print*, ' providing int2_u_grad1u_env2 ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
provide mu_erf
|
||||
provide final_grid_points
|
||||
|
||||
int2_u_grad1u_j1b2 = 0.d0
|
||||
int2_u_grad1u_env2 = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp, alpha_1s, dist, &
|
||||
!$OMP alpha_1s_inv, centr_1s, expo_coef_1s, coef_tmp) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_all_comb_b3_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_1_erf, coef_gauss_j_mu_1_erf, &
|
||||
!$OMP List_all_comb_b3_coef, List_all_comb_b3_expo, &
|
||||
!$OMP List_all_comb_b3_cent, int2_u_grad1u_j1b2)
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp, alpha_1s, dist, &
|
||||
!$OMP alpha_1s_inv, centr_1s, expo_coef_1s, coef_tmp) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_square_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_1_erf, coef_gauss_j_mu_1_erf, &
|
||||
!$OMP List_env1s_square_coef, List_env1s_square_expo, &
|
||||
!$OMP List_env1s_square_cent, int2_u_grad1u_env2)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
do i = 1, ao_num
|
||||
|
@ -436,14 +441,14 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2, (ao_num, ao_num, n_points
|
|||
|
||||
! ---
|
||||
|
||||
do i_1s = 2, List_all_comb_b3_size
|
||||
do i_1s = 2, List_env1s_square_size
|
||||
|
||||
coef = List_all_comb_b3_coef (i_1s)
|
||||
coef = List_env1s_square_coef (i_1s)
|
||||
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
||||
beta = List_all_comb_b3_expo (i_1s)
|
||||
B_center(1) = List_all_comb_b3_cent(1,i_1s)
|
||||
B_center(2) = List_all_comb_b3_cent(2,i_1s)
|
||||
B_center(3) = List_all_comb_b3_cent(3,i_1s)
|
||||
beta = List_env1s_square_expo (i_1s)
|
||||
B_center(1) = List_env1s_square_cent(1,i_1s)
|
||||
B_center(2) = List_env1s_square_cent(2,i_1s)
|
||||
B_center(3) = List_env1s_square_cent(3,i_1s)
|
||||
dist = (B_center(1) - r(1)) * (B_center(1) - r(1)) &
|
||||
+ (B_center(2) - r(2)) * (B_center(2) - r(2)) &
|
||||
+ (B_center(3) - r(3)) * (B_center(3) - r(3))
|
||||
|
@ -468,7 +473,7 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2, (ao_num, ao_num, n_points
|
|||
|
||||
enddo
|
||||
|
||||
int2_u_grad1u_j1b2(j,i,ipoint) = tmp
|
||||
int2_u_grad1u_env2(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -478,13 +483,13 @@ BEGIN_PROVIDER [ double precision, int2_u_grad1u_j1b2, (ao_num, ao_num, n_points
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
int2_u_grad1u_j1b2(j,i,ipoint) = int2_u_grad1u_j1b2(i,j,ipoint)
|
||||
int2_u_grad1u_env2(j,i,ipoint) = int2_u_grad1u_env2(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for int2_u_grad1u_j1b2', wall1 - wall0
|
||||
print*, ' wall time for int2_u_grad1u_env2 (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, v_ij_erf_rk_cst_mu_env_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr phi_i(r) phi_j(r) 1s_j1b(r) (erf(mu(R) |r - R| - 1) / |r - R|
|
||||
! int dr phi_i(r) phi_j(r) 1s_env(r) (erf(mu(R) |r - R| - 1) / |r - R|
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -13,24 +13,23 @@ BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_num,
|
|||
integer :: i, j, ipoint, i_1s
|
||||
double precision :: r(3), int_mu, int_coulomb
|
||||
double precision :: coef, beta, B_center(3)
|
||||
double precision :: tmp,int_j1b
|
||||
double precision :: tmp,int_env
|
||||
double precision :: wall0, wall1
|
||||
double precision, external :: NAI_pol_mult_erf_ao_with1s
|
||||
double precision :: sigma_ij,dist_ij_ipoint,dsqpi_3_2
|
||||
|
||||
print*, ' providing v_ij_erf_rk_cst_mu_j1b_test ...'
|
||||
print*, ' providing v_ij_erf_rk_cst_mu_env_test ...'
|
||||
|
||||
dsqpi_3_2 = (dacos(-1.d0))**(1.5d0)
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
call wall_time(wall0)
|
||||
|
||||
v_ij_erf_rk_cst_mu_j1b_test = 0.d0
|
||||
v_ij_erf_rk_cst_mu_env_test = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, int_mu, int_coulomb, tmp, int_j1b)&
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, int_mu, int_coulomb, tmp, int_env)&
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_comb_thr_b2_size, final_grid_points, &
|
||||
!$OMP List_comb_thr_b2_coef, List_comb_thr_b2_expo, List_comb_thr_b2_cent,ao_abs_comb_b2_j1b, &
|
||||
!$OMP v_ij_erf_rk_cst_mu_j1b_test, mu_erf, &
|
||||
!$OMP List_comb_thr_b2_coef, List_comb_thr_b2_expo, List_comb_thr_b2_cent,ao_abs_comb_b2_env, &
|
||||
!$OMP v_ij_erf_rk_cst_mu_env_test, mu_erf, &
|
||||
!$OMP ao_overlap_abs_grid,ao_prod_center,ao_prod_sigma,dsqpi_3_2,thrsh_cycle_tc)
|
||||
!$OMP DO
|
||||
!do ipoint = 1, 10
|
||||
|
@ -48,8 +47,8 @@ BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_num,
|
|||
|
||||
coef = List_comb_thr_b2_coef (i_1s,j,i)
|
||||
beta = List_comb_thr_b2_expo (i_1s,j,i)
|
||||
int_j1b = ao_abs_comb_b2_j1b(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_j1b).lt.thrsh_cycle_tc)cycle
|
||||
int_env = ao_abs_comb_b2_env(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_env).lt.thrsh_cycle_tc)cycle
|
||||
B_center(1) = List_comb_thr_b2_cent(1,i_1s,j,i)
|
||||
B_center(2) = List_comb_thr_b2_cent(2,i_1s,j,i)
|
||||
B_center(3) = List_comb_thr_b2_cent(3,i_1s,j,i)
|
||||
|
@ -60,7 +59,7 @@ BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_num,
|
|||
tmp += coef * (int_mu - int_coulomb)
|
||||
enddo
|
||||
|
||||
v_ij_erf_rk_cst_mu_j1b_test(j,i,ipoint) = tmp
|
||||
v_ij_erf_rk_cst_mu_env_test(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -70,22 +69,22 @@ BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_num,
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
v_ij_erf_rk_cst_mu_j1b_test(j,i,ipoint) = v_ij_erf_rk_cst_mu_j1b_test(i,j,ipoint)
|
||||
v_ij_erf_rk_cst_mu_env_test(j,i,ipoint) = v_ij_erf_rk_cst_mu_env_test(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for v_ij_erf_rk_cst_mu_j1b_test', wall1 - wall0
|
||||
print*, ' wall time for v_ij_erf_rk_cst_mu_env_test (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_num, n_points_final_grid, 3)]
|
||||
BEGIN_PROVIDER [double precision, x_v_ij_erf_rk_cst_mu_env_test, (ao_num, ao_num, n_points_final_grid, 3)]
|
||||
|
||||
BEGIN_DOC
|
||||
! int dr x phi_i(r) phi_j(r) 1s_j1b(r) (erf(mu(R) |r - R|) - 1)/|r - R|
|
||||
! int dr x phi_i(r) phi_j(r) 1s_env(r) (erf(mu(R) |r - R|) - 1)/|r - R|
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
|
@ -93,23 +92,23 @@ BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_nu
|
|||
double precision :: coef, beta, B_center(3), r(3), ints(3), ints_coulomb(3)
|
||||
double precision :: tmp_x, tmp_y, tmp_z
|
||||
double precision :: wall0, wall1
|
||||
double precision :: sigma_ij,dist_ij_ipoint,dsqpi_3_2,int_j1b,factor_ij_1s,beta_ij,center_ij_1s
|
||||
double precision :: sigma_ij,dist_ij_ipoint,dsqpi_3_2,int_env,factor_ij_1s,beta_ij,center_ij_1s
|
||||
|
||||
print*, ' providing x_v_ij_erf_rk_cst_mu_j1b_test ...'
|
||||
print*, ' providing x_v_ij_erf_rk_cst_mu_env_test ...'
|
||||
|
||||
dsqpi_3_2 = (dacos(-1.d0))**(1.5d0)
|
||||
|
||||
provide expo_erfc_mu_gauss ao_prod_sigma ao_prod_center
|
||||
call wall_time(wall0)
|
||||
|
||||
x_v_ij_erf_rk_cst_mu_j1b_test = 0.d0
|
||||
x_v_ij_erf_rk_cst_mu_env_test = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, ints, ints_coulomb, &
|
||||
!$OMP int_j1b, tmp_x, tmp_y, tmp_z,factor_ij_1s,beta_ij,center_ij_1s) &
|
||||
!$OMP int_env, tmp_x, tmp_y, tmp_z,factor_ij_1s,beta_ij,center_ij_1s) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_comb_thr_b2_size, final_grid_points,&
|
||||
!$OMP List_comb_thr_b2_coef, List_comb_thr_b2_expo, List_comb_thr_b2_cent, &
|
||||
!$OMP x_v_ij_erf_rk_cst_mu_j1b_test, mu_erf,ao_abs_comb_b2_j1b, &
|
||||
!$OMP x_v_ij_erf_rk_cst_mu_env_test, mu_erf,ao_abs_comb_b2_env, &
|
||||
!$OMP ao_overlap_abs_grid,ao_prod_center,ao_prod_sigma,thrsh_cycle_tc)
|
||||
! !$OMP ao_overlap_abs_grid,ao_prod_center,ao_prod_sigma,dsqpi_3_2,expo_erfc_mu_gauss)
|
||||
!$OMP DO
|
||||
|
@ -129,8 +128,8 @@ BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_nu
|
|||
|
||||
coef = List_comb_thr_b2_coef (i_1s,j,i)
|
||||
beta = List_comb_thr_b2_expo (i_1s,j,i)
|
||||
int_j1b = ao_abs_comb_b2_j1b(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_j1b).lt.thrsh_cycle_tc)cycle
|
||||
int_env = ao_abs_comb_b2_env(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_env).lt.thrsh_cycle_tc)cycle
|
||||
B_center(1) = List_comb_thr_b2_cent(1,i_1s,j,i)
|
||||
B_center(2) = List_comb_thr_b2_cent(2,i_1s,j,i)
|
||||
B_center(3) = List_comb_thr_b2_cent(3,i_1s,j,i)
|
||||
|
@ -143,9 +142,9 @@ BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_nu
|
|||
tmp_z += coef * (ints(3) - ints_coulomb(3))
|
||||
enddo
|
||||
|
||||
x_v_ij_erf_rk_cst_mu_j1b_test(j,i,ipoint,1) = tmp_x
|
||||
x_v_ij_erf_rk_cst_mu_j1b_test(j,i,ipoint,2) = tmp_y
|
||||
x_v_ij_erf_rk_cst_mu_j1b_test(j,i,ipoint,3) = tmp_z
|
||||
x_v_ij_erf_rk_cst_mu_env_test(j,i,ipoint,1) = tmp_x
|
||||
x_v_ij_erf_rk_cst_mu_env_test(j,i,ipoint,2) = tmp_y
|
||||
x_v_ij_erf_rk_cst_mu_env_test(j,i,ipoint,3) = tmp_z
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -155,26 +154,26 @@ BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b_test, (ao_num, ao_nu
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
x_v_ij_erf_rk_cst_mu_j1b_test(j,i,ipoint,1) = x_v_ij_erf_rk_cst_mu_j1b_test(i,j,ipoint,1)
|
||||
x_v_ij_erf_rk_cst_mu_j1b_test(j,i,ipoint,2) = x_v_ij_erf_rk_cst_mu_j1b_test(i,j,ipoint,2)
|
||||
x_v_ij_erf_rk_cst_mu_j1b_test(j,i,ipoint,3) = x_v_ij_erf_rk_cst_mu_j1b_test(i,j,ipoint,3)
|
||||
x_v_ij_erf_rk_cst_mu_env_test(j,i,ipoint,1) = x_v_ij_erf_rk_cst_mu_env_test(i,j,ipoint,1)
|
||||
x_v_ij_erf_rk_cst_mu_env_test(j,i,ipoint,2) = x_v_ij_erf_rk_cst_mu_env_test(i,j,ipoint,2)
|
||||
x_v_ij_erf_rk_cst_mu_env_test(j,i,ipoint,3) = x_v_ij_erf_rk_cst_mu_env_test(i,j,ipoint,3)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for x_v_ij_erf_rk_cst_mu_j1b_test', wall1 - wall0
|
||||
print*, ' wall time for x_v_ij_erf_rk_cst_mu_env_test (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
! TODO analytically
|
||||
BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_env_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2) u(mu, r12)
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2) u(mu, r12)
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -185,29 +184,28 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_test, (ao_num, ao_num, n_po
|
|||
double precision :: tmp
|
||||
double precision :: wall0, wall1
|
||||
double precision :: beta_ij_u, factor_ij_1s_u, center_ij_1s_u(3), coeftot
|
||||
double precision :: sigma_ij, dist_ij_ipoint, dsqpi_3_2, int_j1b
|
||||
double precision :: sigma_ij, dist_ij_ipoint, dsqpi_3_2, int_env
|
||||
|
||||
double precision, external :: overlap_gauss_r12_ao
|
||||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
|
||||
print*, ' providing v_ij_u_cst_mu_j1b_test ...'
|
||||
print*, ' providing v_ij_u_cst_mu_env_test ...'
|
||||
|
||||
dsqpi_3_2 = (dacos(-1.d0))**(1.5d0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
call wall_time(wall0)
|
||||
|
||||
v_ij_u_cst_mu_j1b_test = 0.d0
|
||||
v_ij_u_cst_mu_env_test = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP beta_ij_u, factor_ij_1s_u, center_ij_1s_u, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp,coeftot,int_j1b) &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp,coeftot,int_env) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_x, coef_gauss_j_mu_x, &
|
||||
!$OMP List_comb_thr_b2_coef, List_comb_thr_b2_expo,List_comb_thr_b2_size, &
|
||||
!$OMP List_comb_thr_b2_cent, v_ij_u_cst_mu_j1b_test,ao_abs_comb_b2_j1b, &
|
||||
!$OMP List_comb_thr_b2_cent, v_ij_u_cst_mu_env_test,ao_abs_comb_b2_env, &
|
||||
!$OMP ao_overlap_abs_grid,ao_prod_center,ao_prod_sigma,dsqpi_3_2,thrsh_cycle_tc)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
@ -225,8 +223,8 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_test, (ao_num, ao_num, n_po
|
|||
! i_1s = 1
|
||||
! --- --- ---
|
||||
|
||||
int_j1b = ao_abs_comb_b2_j1b(1,j,i)
|
||||
! if(dabs(int_j1b).lt.thrsh_cycle_tc) cycle
|
||||
int_env = ao_abs_comb_b2_env(1,j,i)
|
||||
! if(dabs(int_env).lt.thrsh_cycle_tc) cycle
|
||||
do i_fit = 1, ng_fit_jast
|
||||
expo_fit = expo_gauss_j_mu_x(i_fit)
|
||||
coef_fit = coef_gauss_j_mu_x(i_fit)
|
||||
|
@ -242,8 +240,8 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_test, (ao_num, ao_num, n_po
|
|||
do i_1s = 2, List_comb_thr_b2_size(j,i)
|
||||
coef = List_comb_thr_b2_coef (i_1s,j,i)
|
||||
beta = List_comb_thr_b2_expo (i_1s,j,i)
|
||||
int_j1b = ao_abs_comb_b2_j1b(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_j1b).lt.thrsh_cycle_tc)cycle
|
||||
int_env = ao_abs_comb_b2_env(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_env).lt.thrsh_cycle_tc)cycle
|
||||
B_center(1) = List_comb_thr_b2_cent(1,i_1s,j,i)
|
||||
B_center(2) = List_comb_thr_b2_cent(2,i_1s,j,i)
|
||||
B_center(3) = List_comb_thr_b2_cent(3,i_1s,j,i)
|
||||
|
@ -259,7 +257,7 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_test, (ao_num, ao_num, n_po
|
|||
enddo
|
||||
enddo
|
||||
|
||||
v_ij_u_cst_mu_j1b_test(j,i,ipoint) = tmp
|
||||
v_ij_u_cst_mu_env_test(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -269,23 +267,23 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_test, (ao_num, ao_num, n_po
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
v_ij_u_cst_mu_j1b_test(j,i,ipoint) = v_ij_u_cst_mu_j1b_test(i,j,ipoint)
|
||||
v_ij_u_cst_mu_env_test(j,i,ipoint) = v_ij_u_cst_mu_env_test(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for v_ij_u_cst_mu_j1b_test', wall1 - wall0
|
||||
print*, ' wall time for v_ij_u_cst_mu_env_test (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_ng_1_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_env_ng_1_test, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2) u(mu, r12) with u(mu,r12) \approx 1/2 mu e^{-2.5 * mu (r12)^2}
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2) u(mu, r12) with u(mu,r12) \approx 1/2 mu e^{-2.5 * mu (r12)^2}
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -296,27 +294,26 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_ng_1_test, (ao_num, ao_num,
|
|||
double precision :: tmp
|
||||
double precision :: wall0, wall1
|
||||
double precision :: beta_ij_u, factor_ij_1s_u, center_ij_1s_u(3), coeftot
|
||||
double precision :: sigma_ij, dist_ij_ipoint, dsqpi_3_2, int_j1b
|
||||
double precision :: sigma_ij, dist_ij_ipoint, dsqpi_3_2, int_env
|
||||
|
||||
double precision, external :: overlap_gauss_r12_ao
|
||||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
|
||||
dsqpi_3_2 = (dacos(-1.d0))**(1.5d0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
call wall_time(wall0)
|
||||
|
||||
v_ij_u_cst_mu_j1b_ng_1_test = 0.d0
|
||||
v_ij_u_cst_mu_env_ng_1_test = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, &
|
||||
!$OMP beta_ij_u, factor_ij_1s_u, center_ij_1s_u, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp,coeftot,int_j1b) &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp,coeftot,int_env) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, &
|
||||
!$OMP final_grid_points, expo_good_j_mu_1gauss,coef_good_j_mu_1gauss, &
|
||||
!$OMP expo_gauss_j_mu_x, coef_gauss_j_mu_x, &
|
||||
!$OMP List_comb_thr_b2_coef, List_comb_thr_b2_expo,List_comb_thr_b2_size, &
|
||||
!$OMP List_comb_thr_b2_cent, v_ij_u_cst_mu_j1b_ng_1_test,ao_abs_comb_b2_j1b, &
|
||||
!$OMP List_comb_thr_b2_cent, v_ij_u_cst_mu_env_ng_1_test,ao_abs_comb_b2_env, &
|
||||
!$OMP ao_overlap_abs_grid,ao_prod_center,ao_prod_sigma,dsqpi_3_2,thrsh_cycle_tc)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
@ -334,8 +331,8 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_ng_1_test, (ao_num, ao_num,
|
|||
! i_1s = 1
|
||||
! --- --- ---
|
||||
|
||||
int_j1b = ao_abs_comb_b2_j1b(1,j,i)
|
||||
! if(dabs(int_j1b).lt.thrsh_cycle_tc) cycle
|
||||
int_env = ao_abs_comb_b2_env(1,j,i)
|
||||
! if(dabs(int_env).lt.thrsh_cycle_tc) cycle
|
||||
expo_fit = expo_good_j_mu_1gauss
|
||||
int_fit = overlap_gauss_r12_ao(r, expo_fit, i, j)
|
||||
tmp += int_fit
|
||||
|
@ -347,8 +344,8 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_ng_1_test, (ao_num, ao_num,
|
|||
do i_1s = 2, List_comb_thr_b2_size(j,i)
|
||||
coef = List_comb_thr_b2_coef (i_1s,j,i)
|
||||
beta = List_comb_thr_b2_expo (i_1s,j,i)
|
||||
int_j1b = ao_abs_comb_b2_j1b(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_j1b).lt.thrsh_cycle_tc)cycle
|
||||
int_env = ao_abs_comb_b2_env(i_1s,j,i)
|
||||
! if(dabs(coef)*dabs(int_env).lt.thrsh_cycle_tc)cycle
|
||||
B_center(1) = List_comb_thr_b2_cent(1,i_1s,j,i)
|
||||
B_center(2) = List_comb_thr_b2_cent(2,i_1s,j,i)
|
||||
B_center(3) = List_comb_thr_b2_cent(3,i_1s,j,i)
|
||||
|
@ -364,7 +361,7 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_ng_1_test, (ao_num, ao_num,
|
|||
! enddo
|
||||
enddo
|
||||
|
||||
v_ij_u_cst_mu_j1b_ng_1_test(j,i,ipoint) = tmp
|
||||
v_ij_u_cst_mu_env_ng_1_test(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -374,13 +371,13 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_ng_1_test, (ao_num, ao_num,
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
v_ij_u_cst_mu_j1b_ng_1_test(j,i,ipoint) = v_ij_u_cst_mu_j1b_ng_1_test(i,j,ipoint)
|
||||
v_ij_u_cst_mu_env_ng_1_test(j,i,ipoint) = v_ij_u_cst_mu_env_ng_1_test(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for v_ij_u_cst_mu_j1b_ng_1_test', wall1 - wall0
|
||||
print*, ' wall time for v_ij_u_cst_mu_env_ng_1_test (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, v_ij_erf_rk_cst_mu_env, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr phi_i(r) phi_j(r) 1s_j1b(r) (erf(mu(R) |r - R| - 1) / |r - R|
|
||||
! int dr phi_i(r) phi_j(r) 1s_env(r) (erf(mu(R) |r - R| - 1) / |r - R|
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -17,18 +17,20 @@ BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_po
|
|||
double precision :: wall0, wall1
|
||||
double precision, external :: NAI_pol_mult_erf_ao_with1s
|
||||
|
||||
print *, ' providing v_ij_erf_rk_cst_mu_j1b ...'
|
||||
PROVIDE mu_erf
|
||||
PROVIDE final_grid_points
|
||||
PROVIDE env_expo
|
||||
|
||||
print *, ' providing v_ij_erf_rk_cst_mu_env ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
|
||||
v_ij_erf_rk_cst_mu_j1b = 0.d0
|
||||
v_ij_erf_rk_cst_mu_env = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, int_mu, int_coulomb, tmp) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_all_comb_b2_size, final_grid_points, &
|
||||
!$OMP List_all_comb_b2_coef, List_all_comb_b2_expo, List_all_comb_b2_cent, &
|
||||
!$OMP v_ij_erf_rk_cst_mu_j1b, mu_erf)
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, final_grid_points, &
|
||||
!$OMP List_env1s_coef, List_env1s_expo, List_env1s_cent, &
|
||||
!$OMP v_ij_erf_rk_cst_mu_env, mu_erf)
|
||||
!$OMP DO
|
||||
!do ipoint = 1, 10
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
@ -43,28 +45,27 @@ BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_po
|
|||
|
||||
! ---
|
||||
|
||||
coef = List_all_comb_b2_coef (1)
|
||||
beta = List_all_comb_b2_expo (1)
|
||||
B_center(1) = List_all_comb_b2_cent(1,1)
|
||||
B_center(2) = List_all_comb_b2_cent(2,1)
|
||||
B_center(3) = List_all_comb_b2_cent(3,1)
|
||||
coef = List_env1s_coef (1)
|
||||
beta = List_env1s_expo (1)
|
||||
B_center(1) = List_env1s_cent(1,1)
|
||||
B_center(2) = List_env1s_cent(2,1)
|
||||
B_center(3) = List_env1s_cent(3,1)
|
||||
|
||||
int_mu = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r)
|
||||
int_coulomb = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r)
|
||||
! if(dabs(coef)*dabs(int_mu - int_coulomb) .lt. 1d-12) cycle
|
||||
|
||||
tmp += coef * (int_mu - int_coulomb)
|
||||
|
||||
! ---
|
||||
|
||||
do i_1s = 2, List_all_comb_b2_size
|
||||
do i_1s = 2, List_env1s_size
|
||||
|
||||
coef = List_all_comb_b2_coef (i_1s)
|
||||
coef = List_env1s_coef (i_1s)
|
||||
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
||||
beta = List_all_comb_b2_expo (i_1s)
|
||||
B_center(1) = List_all_comb_b2_cent(1,i_1s)
|
||||
B_center(2) = List_all_comb_b2_cent(2,i_1s)
|
||||
B_center(3) = List_all_comb_b2_cent(3,i_1s)
|
||||
beta = List_env1s_expo (i_1s)
|
||||
B_center(1) = List_env1s_cent(1,i_1s)
|
||||
B_center(2) = List_env1s_cent(2,i_1s)
|
||||
B_center(3) = List_env1s_cent(3,i_1s)
|
||||
|
||||
int_mu = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r)
|
||||
int_coulomb = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r)
|
||||
|
@ -74,7 +75,7 @@ BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_po
|
|||
|
||||
! ---
|
||||
|
||||
v_ij_erf_rk_cst_mu_j1b(j,i,ipoint) = tmp
|
||||
v_ij_erf_rk_cst_mu_env(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -84,22 +85,22 @@ BEGIN_PROVIDER [ double precision, v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_po
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
v_ij_erf_rk_cst_mu_j1b(j,i,ipoint) = v_ij_erf_rk_cst_mu_j1b(i,j,ipoint)
|
||||
v_ij_erf_rk_cst_mu_env(j,i,ipoint) = v_ij_erf_rk_cst_mu_env(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for v_ij_erf_rk_cst_mu_j1b', wall1 - wall0
|
||||
print*, ' wall time for v_ij_erf_rk_cst_mu_env (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_points_final_grid, 3)]
|
||||
BEGIN_PROVIDER [double precision, x_v_ij_erf_rk_cst_mu_env, (ao_num, ao_num, n_points_final_grid, 3)]
|
||||
|
||||
BEGIN_DOC
|
||||
! int dr x phi_i(r) phi_j(r) 1s_j1b(r) (erf(mu(R) |r - R|) - 1)/|r - R|
|
||||
! int dr x phi_i(r) phi_j(r) 1s_env(r) (erf(mu(R) |r - R|) - 1)/|r - R|
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
|
@ -108,17 +109,17 @@ BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_
|
|||
double precision :: tmp_x, tmp_y, tmp_z
|
||||
double precision :: wall0, wall1
|
||||
|
||||
print*, ' providing x_v_ij_erf_rk_cst_mu_j1b ...'
|
||||
print*, ' providing x_v_ij_erf_rk_cst_mu_env ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
x_v_ij_erf_rk_cst_mu_j1b = 0.d0
|
||||
x_v_ij_erf_rk_cst_mu_env = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, ints, ints_coulomb, &
|
||||
!$OMP tmp_x, tmp_y, tmp_z) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_all_comb_b2_size, final_grid_points,&
|
||||
!$OMP List_all_comb_b2_coef, List_all_comb_b2_expo, List_all_comb_b2_cent, &
|
||||
!$OMP x_v_ij_erf_rk_cst_mu_j1b, mu_erf)
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, final_grid_points,&
|
||||
!$OMP List_env1s_coef, List_env1s_expo, List_env1s_cent, &
|
||||
!$OMP x_v_ij_erf_rk_cst_mu_env, mu_erf)
|
||||
!$OMP DO
|
||||
!do ipoint = 1, 10
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
@ -135,11 +136,11 @@ BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_
|
|||
|
||||
! ---
|
||||
|
||||
coef = List_all_comb_b2_coef (1)
|
||||
beta = List_all_comb_b2_expo (1)
|
||||
B_center(1) = List_all_comb_b2_cent(1,1)
|
||||
B_center(2) = List_all_comb_b2_cent(2,1)
|
||||
B_center(3) = List_all_comb_b2_cent(3,1)
|
||||
coef = List_env1s_coef (1)
|
||||
beta = List_env1s_expo (1)
|
||||
B_center(1) = List_env1s_cent(1,1)
|
||||
B_center(2) = List_env1s_cent(2,1)
|
||||
B_center(3) = List_env1s_cent(3,1)
|
||||
|
||||
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, ints )
|
||||
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, ints_coulomb)
|
||||
|
@ -152,14 +153,14 @@ BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_
|
|||
|
||||
! ---
|
||||
|
||||
do i_1s = 2, List_all_comb_b2_size
|
||||
do i_1s = 2, List_env1s_size
|
||||
|
||||
coef = List_all_comb_b2_coef (i_1s)
|
||||
coef = List_env1s_coef (i_1s)
|
||||
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
||||
beta = List_all_comb_b2_expo (i_1s)
|
||||
B_center(1) = List_all_comb_b2_cent(1,i_1s)
|
||||
B_center(2) = List_all_comb_b2_cent(2,i_1s)
|
||||
B_center(3) = List_all_comb_b2_cent(3,i_1s)
|
||||
beta = List_env1s_expo (i_1s)
|
||||
B_center(1) = List_env1s_cent(1,i_1s)
|
||||
B_center(2) = List_env1s_cent(2,i_1s)
|
||||
B_center(3) = List_env1s_cent(3,i_1s)
|
||||
|
||||
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, ints )
|
||||
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, ints_coulomb)
|
||||
|
@ -171,9 +172,9 @@ BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_
|
|||
|
||||
! ---
|
||||
|
||||
x_v_ij_erf_rk_cst_mu_j1b(j,i,ipoint,1) = tmp_x
|
||||
x_v_ij_erf_rk_cst_mu_j1b(j,i,ipoint,2) = tmp_y
|
||||
x_v_ij_erf_rk_cst_mu_j1b(j,i,ipoint,3) = tmp_z
|
||||
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,1) = tmp_x
|
||||
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,2) = tmp_y
|
||||
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,3) = tmp_z
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -183,25 +184,25 @@ BEGIN_PROVIDER [ double precision, x_v_ij_erf_rk_cst_mu_j1b, (ao_num, ao_num, n_
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
x_v_ij_erf_rk_cst_mu_j1b(j,i,ipoint,1) = x_v_ij_erf_rk_cst_mu_j1b(i,j,ipoint,1)
|
||||
x_v_ij_erf_rk_cst_mu_j1b(j,i,ipoint,2) = x_v_ij_erf_rk_cst_mu_j1b(i,j,ipoint,2)
|
||||
x_v_ij_erf_rk_cst_mu_j1b(j,i,ipoint,3) = x_v_ij_erf_rk_cst_mu_j1b(i,j,ipoint,3)
|
||||
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,1) = x_v_ij_erf_rk_cst_mu_env(i,j,ipoint,1)
|
||||
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,2) = x_v_ij_erf_rk_cst_mu_env(i,j,ipoint,2)
|
||||
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,3) = x_v_ij_erf_rk_cst_mu_env(i,j,ipoint,3)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for x_v_ij_erf_rk_cst_mu_j1b =', wall1 - wall0
|
||||
print*, ' wall time for x_v_ij_erf_rk_cst_mu_env (min) =', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_fit, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_env_fit, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2) u(mu, r12)
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2) u(mu, r12)
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -214,23 +215,23 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_fit, (ao_num, ao_num, n_poi
|
|||
|
||||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
|
||||
print*, ' providing v_ij_u_cst_mu_j1b_fit ...'
|
||||
print*, ' providing v_ij_u_cst_mu_env_fit ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
provide mu_erf final_grid_points env_expo
|
||||
PROVIDE ng_fit_jast expo_gauss_j_mu_x coef_gauss_j_mu_x
|
||||
PROVIDE List_all_comb_b2_size List_all_comb_b2_coef List_all_comb_b2_expo List_all_comb_b2_cent
|
||||
PROVIDE List_env1s_size List_env1s_coef List_env1s_expo List_env1s_cent
|
||||
|
||||
v_ij_u_cst_mu_j1b_fit = 0.d0
|
||||
v_ij_u_cst_mu_env_fit = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
||||
!$OMP coef_fit, expo_fit, int_fit, tmp) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_all_comb_b2_size, &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, &
|
||||
!$OMP final_grid_points, ng_fit_jast, &
|
||||
!$OMP expo_gauss_j_mu_x, coef_gauss_j_mu_x, &
|
||||
!$OMP List_all_comb_b2_coef, List_all_comb_b2_expo, &
|
||||
!$OMP List_all_comb_b2_cent, v_ij_u_cst_mu_j1b_fit)
|
||||
!$OMP List_env1s_coef, List_env1s_expo, &
|
||||
!$OMP List_env1s_cent, v_ij_u_cst_mu_env_fit)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
|
@ -247,11 +248,11 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_fit, (ao_num, ao_num, n_poi
|
|||
|
||||
! ---
|
||||
|
||||
coef = List_all_comb_b2_coef (1)
|
||||
beta = List_all_comb_b2_expo (1)
|
||||
B_center(1) = List_all_comb_b2_cent(1,1)
|
||||
B_center(2) = List_all_comb_b2_cent(2,1)
|
||||
B_center(3) = List_all_comb_b2_cent(3,1)
|
||||
coef = List_env1s_coef (1)
|
||||
beta = List_env1s_expo (1)
|
||||
B_center(1) = List_env1s_cent(1,1)
|
||||
B_center(2) = List_env1s_cent(2,1)
|
||||
B_center(3) = List_env1s_cent(3,1)
|
||||
|
||||
int_fit = overlap_gauss_r12_ao_with1s(B_center, beta, r, expo_fit, i, j)
|
||||
|
||||
|
@ -259,14 +260,14 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_fit, (ao_num, ao_num, n_poi
|
|||
|
||||
! ---
|
||||
|
||||
do i_1s = 2, List_all_comb_b2_size
|
||||
do i_1s = 2, List_env1s_size
|
||||
|
||||
coef = List_all_comb_b2_coef (i_1s)
|
||||
coef = List_env1s_coef (i_1s)
|
||||
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
||||
beta = List_all_comb_b2_expo (i_1s)
|
||||
B_center(1) = List_all_comb_b2_cent(1,i_1s)
|
||||
B_center(2) = List_all_comb_b2_cent(2,i_1s)
|
||||
B_center(3) = List_all_comb_b2_cent(3,i_1s)
|
||||
beta = List_env1s_expo (i_1s)
|
||||
B_center(1) = List_env1s_cent(1,i_1s)
|
||||
B_center(2) = List_env1s_cent(2,i_1s)
|
||||
B_center(3) = List_env1s_cent(3,i_1s)
|
||||
|
||||
int_fit = overlap_gauss_r12_ao_with1s(B_center, beta, r, expo_fit, i, j)
|
||||
|
||||
|
@ -277,7 +278,7 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_fit, (ao_num, ao_num, n_poi
|
|||
|
||||
enddo
|
||||
|
||||
v_ij_u_cst_mu_j1b_fit(j,i,ipoint) = tmp
|
||||
v_ij_u_cst_mu_env_fit(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -287,23 +288,23 @@ BEGIN_PROVIDER [ double precision, v_ij_u_cst_mu_j1b_fit, (ao_num, ao_num, n_poi
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
v_ij_u_cst_mu_j1b_fit(j,i,ipoint) = v_ij_u_cst_mu_j1b_fit(i,j,ipoint)
|
||||
v_ij_u_cst_mu_env_fit(j,i,ipoint) = v_ij_u_cst_mu_env_fit(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for v_ij_u_cst_mu_j1b_fit', wall1 - wall0
|
||||
print*, ' wall time for v_ij_u_cst_mu_env_fit (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an_old, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_env_an_old, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2) u(mu, r12)
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2) u(mu, r12)
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -322,24 +323,24 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an_old, (ao_num, ao_num, n_p
|
|||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
double precision, external :: NAI_pol_mult_erf_ao_with1s
|
||||
|
||||
print*, ' providing v_ij_u_cst_mu_j1b_an_old ...'
|
||||
print*, ' providing v_ij_u_cst_mu_env_an_old ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
PROVIDE List_all_comb_b2_size List_all_comb_b2_coef List_all_comb_b2_expo List_all_comb_b2_cent
|
||||
provide mu_erf final_grid_points env_expo
|
||||
PROVIDE List_env1s_size List_env1s_coef List_env1s_expo List_env1s_cent
|
||||
|
||||
ct = inv_sq_pi_2 / mu_erf
|
||||
|
||||
v_ij_u_cst_mu_j1b_an_old = 0.d0
|
||||
v_ij_u_cst_mu_env_an_old = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, &
|
||||
!$OMP r1_2, tmp, int_c1, int_e1, int_o, int_c2, &
|
||||
!$OMP int_e2, int_c3, int_e3) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_all_comb_b2_size, &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, &
|
||||
!$OMP final_grid_points, mu_erf, ct, &
|
||||
!$OMP List_all_comb_b2_coef, List_all_comb_b2_expo, &
|
||||
!$OMP List_all_comb_b2_cent, v_ij_u_cst_mu_j1b_an_old)
|
||||
!$OMP List_env1s_coef, List_env1s_expo, &
|
||||
!$OMP List_env1s_cent, v_ij_u_cst_mu_env_an_old)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
||||
|
@ -353,11 +354,11 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an_old, (ao_num, ao_num, n_p
|
|||
|
||||
! ---
|
||||
|
||||
coef = List_all_comb_b2_coef (1)
|
||||
beta = List_all_comb_b2_expo (1)
|
||||
B_center(1) = List_all_comb_b2_cent(1,1)
|
||||
B_center(2) = List_all_comb_b2_cent(2,1)
|
||||
B_center(3) = List_all_comb_b2_cent(3,1)
|
||||
coef = List_env1s_coef (1)
|
||||
beta = List_env1s_expo (1)
|
||||
B_center(1) = List_env1s_cent(1,1)
|
||||
B_center(2) = List_env1s_cent(2,1)
|
||||
B_center(3) = List_env1s_cent(3,1)
|
||||
|
||||
int_c1 = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r)
|
||||
int_e1 = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r)
|
||||
|
@ -379,14 +380,14 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an_old, (ao_num, ao_num, n_p
|
|||
|
||||
! ---
|
||||
|
||||
do i_1s = 2, List_all_comb_b2_size
|
||||
do i_1s = 2, List_env1s_size
|
||||
|
||||
coef = List_all_comb_b2_coef (i_1s)
|
||||
coef = List_env1s_coef (i_1s)
|
||||
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
||||
beta = List_all_comb_b2_expo (i_1s)
|
||||
B_center(1) = List_all_comb_b2_cent(1,i_1s)
|
||||
B_center(2) = List_all_comb_b2_cent(2,i_1s)
|
||||
B_center(3) = List_all_comb_b2_cent(3,i_1s)
|
||||
beta = List_env1s_expo (i_1s)
|
||||
B_center(1) = List_env1s_cent(1,i_1s)
|
||||
B_center(2) = List_env1s_cent(2,i_1s)
|
||||
B_center(3) = List_env1s_cent(3,i_1s)
|
||||
|
||||
int_c1 = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r)
|
||||
int_e1 = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r)
|
||||
|
@ -410,7 +411,7 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an_old, (ao_num, ao_num, n_p
|
|||
|
||||
! ---
|
||||
|
||||
v_ij_u_cst_mu_j1b_an_old(j,i,ipoint) = tmp
|
||||
v_ij_u_cst_mu_env_an_old(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -420,23 +421,23 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an_old, (ao_num, ao_num, n_p
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
v_ij_u_cst_mu_j1b_an_old(j,i,ipoint) = v_ij_u_cst_mu_j1b_an_old(i,j,ipoint)
|
||||
v_ij_u_cst_mu_env_an_old(j,i,ipoint) = v_ij_u_cst_mu_env_an_old(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for v_ij_u_cst_mu_j1b_an_old', wall1 - wall0
|
||||
print*, ' wall time for v_ij_u_cst_mu_env_an_old (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an, (ao_num, ao_num, n_points_final_grid)]
|
||||
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_env_an, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_j1b(r2) u(mu, r12)
|
||||
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2) u(mu, r12)
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -454,23 +455,23 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an, (ao_num, ao_num, n_point
|
|||
double precision, external :: overlap_gauss_r12_ao_with1s
|
||||
double precision, external :: NAI_pol_mult_erf_ao_with1s
|
||||
|
||||
print*, ' providing v_ij_u_cst_mu_j1b_an ...'
|
||||
print*, ' providing v_ij_u_cst_mu_env_an ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
provide mu_erf final_grid_points j1b_pen
|
||||
PROVIDE List_all_comb_b2_size List_all_comb_b2_coef List_all_comb_b2_expo List_all_comb_b2_cent
|
||||
provide mu_erf final_grid_points env_expo
|
||||
PROVIDE List_env1s_size List_env1s_coef List_env1s_expo List_env1s_cent
|
||||
|
||||
ct = inv_sq_pi_2 / mu_erf
|
||||
|
||||
v_ij_u_cst_mu_j1b_an = 0.d0
|
||||
v_ij_u_cst_mu_env_an = 0.d0
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, &
|
||||
!$OMP r1_2, tmp, int_c, int_e, int_o) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_all_comb_b2_size, &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, &
|
||||
!$OMP final_grid_points, mu_erf, ct, &
|
||||
!$OMP List_all_comb_b2_coef, List_all_comb_b2_expo, &
|
||||
!$OMP List_all_comb_b2_cent, v_ij_u_cst_mu_j1b_an)
|
||||
!$OMP List_env1s_coef, List_env1s_expo, &
|
||||
!$OMP List_env1s_cent, v_ij_u_cst_mu_env_an)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
||||
|
@ -484,11 +485,11 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an, (ao_num, ao_num, n_point
|
|||
|
||||
! ---
|
||||
|
||||
coef = List_all_comb_b2_coef (1)
|
||||
beta = List_all_comb_b2_expo (1)
|
||||
B_center(1) = List_all_comb_b2_cent(1,1)
|
||||
B_center(2) = List_all_comb_b2_cent(2,1)
|
||||
B_center(3) = List_all_comb_b2_cent(3,1)
|
||||
coef = List_env1s_coef (1)
|
||||
beta = List_env1s_expo (1)
|
||||
B_center(1) = List_env1s_cent(1,1)
|
||||
B_center(2) = List_env1s_cent(2,1)
|
||||
B_center(3) = List_env1s_cent(3,1)
|
||||
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, int_c)
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, int_e)
|
||||
|
@ -504,14 +505,14 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an, (ao_num, ao_num, n_point
|
|||
|
||||
! ---
|
||||
|
||||
do i_1s = 2, List_all_comb_b2_size
|
||||
do i_1s = 2, List_env1s_size
|
||||
|
||||
coef = List_all_comb_b2_coef (i_1s)
|
||||
coef = List_env1s_coef (i_1s)
|
||||
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
||||
beta = List_all_comb_b2_expo (i_1s)
|
||||
B_center(1) = List_all_comb_b2_cent(1,i_1s)
|
||||
B_center(2) = List_all_comb_b2_cent(2,i_1s)
|
||||
B_center(3) = List_all_comb_b2_cent(3,i_1s)
|
||||
beta = List_env1s_expo (i_1s)
|
||||
B_center(1) = List_env1s_cent(1,i_1s)
|
||||
B_center(2) = List_env1s_cent(2,i_1s)
|
||||
B_center(3) = List_env1s_cent(3,i_1s)
|
||||
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, int_c)
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, int_e)
|
||||
|
@ -529,7 +530,7 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an, (ao_num, ao_num, n_point
|
|||
|
||||
! ---
|
||||
|
||||
v_ij_u_cst_mu_j1b_an(j,i,ipoint) = tmp
|
||||
v_ij_u_cst_mu_env_an(j,i,ipoint) = tmp
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -539,13 +540,13 @@ BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_j1b_an, (ao_num, ao_num, n_point
|
|||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
v_ij_u_cst_mu_j1b_an(j,i,ipoint) = v_ij_u_cst_mu_j1b_an(i,j,ipoint)
|
||||
v_ij_u_cst_mu_env_an(j,i,ipoint) = v_ij_u_cst_mu_env_an(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for v_ij_u_cst_mu_j1b_an', wall1 - wall0
|
||||
print*, ' wall time for v_ij_u_cst_mu_env_an (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
574
plugins/local/ao_many_one_e_ints/lin_fc_rsdft.irp.f
Normal file
574
plugins/local/ao_many_one_e_ints/lin_fc_rsdft.irp.f
Normal file
|
@ -0,0 +1,574 @@
|
|||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du_0, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du_x, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du_y, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du_z, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du_2, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! Ir2_Mu_long_Du_0 = int dr2 phi_i(r2) phi_j(r2) fc_env(r2) [(1 - erf(mu r_12) / r_12]
|
||||
!
|
||||
! Ir2_Mu_long_Du_x = int dr2 phi_i(r2) phi_j(r2) fc_env(r2) [(1 - erf(mu r_12) / r_12] * x2
|
||||
! Ir2_Mu_long_Du_y = int dr2 phi_i(r2) phi_j(r2) fc_env(r2) [(1 - erf(mu r_12) / r_12] * y2
|
||||
! Ir2_Mu_long_Du_z = int dr2 phi_i(r2) phi_j(r2) fc_env(r2) [(1 - erf(mu r_12) / r_12] * z2
|
||||
!
|
||||
! Ir2_Mu_long_Du_2 = int dr2 phi_i(r2) phi_j(r2) fc_env(r2) [(1 - erf(mu r_12) / r_12] * r2^2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: i, j, ipoint, i_1s
|
||||
double precision :: r(3), int_clb(7), int_erf(7)
|
||||
double precision :: c_1s, e_1s, R_1s(3)
|
||||
double precision :: tmp_Du_0, tmp_Du_x, tmp_Du_y, tmp_Du_z, tmp_Du_2
|
||||
double precision :: wall0, wall1
|
||||
|
||||
PROVIDE mu_erf
|
||||
PROVIDE final_grid_points
|
||||
PROVIDE List_env1s_size List_env1s_expo List_env1s_coef List_env1s_cent
|
||||
|
||||
|
||||
print *, ' providing Ir2_Mu_long_Du ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, c_1s, e_1s, R_1s, int_erf, int_clb, &
|
||||
!$OMP tmp_Du_0, tmp_Du_x, tmp_Du_y, tmp_Du_z, tmp_Du_2) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, final_grid_points, mu_erf, &
|
||||
!$OMP List_env1s_size, List_env1s_expo, &
|
||||
!$OMP List_env1s_coef, List_env1s_cent, &
|
||||
!$OMP Ir2_Mu_long_Du_0, Ir2_Mu_long_Du_x, &
|
||||
!$OMP Ir2_Mu_long_Du_y, Ir2_Mu_long_Du_z, &
|
||||
!$OMP Ir2_Mu_long_Du_2)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
r(2) = final_grid_points(2,ipoint)
|
||||
r(3) = final_grid_points(3,ipoint)
|
||||
|
||||
do i = 1, ao_num
|
||||
do j = i, ao_num
|
||||
|
||||
call NAI_pol_012_mult_erf_ao(i, j, 1.d+9, r, int_clb)
|
||||
call NAI_pol_012_mult_erf_ao(i, j, mu_erf, r, int_erf)
|
||||
|
||||
tmp_Du_0 = int_clb(1) - int_erf(1)
|
||||
tmp_Du_x = int_clb(2) - int_erf(2)
|
||||
tmp_Du_y = int_clb(3) - int_erf(3)
|
||||
tmp_Du_z = int_clb(4) - int_erf(4)
|
||||
tmp_Du_2 = int_clb(5) + int_clb(6) + int_clb(7) - int_erf(5) - int_erf(6) - int_erf(7)
|
||||
|
||||
do i_1s = 2, List_env1s_size
|
||||
|
||||
e_1s = List_env1s_expo(i_1s)
|
||||
c_1s = List_env1s_coef(i_1s)
|
||||
R_1s(1) = List_env1s_cent(1,i_1s)
|
||||
R_1s(2) = List_env1s_cent(2,i_1s)
|
||||
R_1s(3) = List_env1s_cent(3,i_1s)
|
||||
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, e_1s, R_1s, 1.d+9, r, int_clb)
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, e_1s, R_1s, mu_erf, r, int_erf)
|
||||
|
||||
tmp_Du_0 = tmp_Du_0 + c_1s * (int_clb(1) - int_erf(1))
|
||||
tmp_Du_x = tmp_Du_x + c_1s * (int_clb(2) - int_erf(2))
|
||||
tmp_Du_y = tmp_Du_y + c_1s * (int_clb(3) - int_erf(3))
|
||||
tmp_Du_z = tmp_Du_z + c_1s * (int_clb(4) - int_erf(4))
|
||||
tmp_Du_2 = tmp_Du_2 + c_1s * (int_clb(5) + int_clb(6) + int_clb(7) - int_erf(5) - int_erf(6) - int_erf(7))
|
||||
enddo
|
||||
|
||||
Ir2_Mu_long_Du_0(j,i,ipoint) = tmp_Du_0
|
||||
Ir2_Mu_long_Du_x(j,i,ipoint) = tmp_Du_x
|
||||
Ir2_Mu_long_Du_y(j,i,ipoint) = tmp_Du_y
|
||||
Ir2_Mu_long_Du_z(j,i,ipoint) = tmp_Du_z
|
||||
Ir2_Mu_long_Du_2(j,i,ipoint) = tmp_Du_2
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
Ir2_Mu_long_Du_0(j,i,ipoint) = Ir2_Mu_long_Du_0(i,j,ipoint)
|
||||
Ir2_Mu_long_Du_x(j,i,ipoint) = Ir2_Mu_long_Du_x(i,j,ipoint)
|
||||
Ir2_Mu_long_Du_y(j,i,ipoint) = Ir2_Mu_long_Du_y(i,j,ipoint)
|
||||
Ir2_Mu_long_Du_z(j,i,ipoint) = Ir2_Mu_long_Du_z(i,j,ipoint)
|
||||
Ir2_Mu_long_Du_2(j,i,ipoint) = Ir2_Mu_long_Du_2(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for Ir2_Mu_long_Du (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [double precision, Ir2_Mu_gauss_Du, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! Ir2_Mu_gauss_Du = int dr2 phi_i(r2) phi_j(r2) fc_env(r2) e^{-(mu r_12)^2}
|
||||
!
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: i, j, ipoint, i_1s
|
||||
double precision :: r(3)
|
||||
double precision :: coef, beta, B_center(3)
|
||||
double precision :: tmp_Du
|
||||
double precision :: mu_sq, dx, dy, dz, tmp_arg, rmu_sq(3)
|
||||
double precision :: e_1s, c_1s, R_1s(3)
|
||||
double precision :: wall0, wall1
|
||||
|
||||
double precision, external :: overlap_gauss_r12_ao
|
||||
|
||||
PROVIDE mu_erf
|
||||
PROVIDE final_grid_points
|
||||
PROVIDE List_env1s_size List_env1s_expo List_env1s_coef List_env1s_cent
|
||||
|
||||
|
||||
print *, ' providing Ir2_Mu_gauss_Du ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
mu_sq = mu_erf * mu_erf
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, dx, dy, dz, r, tmp_arg, coef, &
|
||||
!$OMP rmu_sq, e_1s, c_1s, R_1s, beta, B_center, tmp_Du) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, final_grid_points, mu_sq, &
|
||||
!$OMP List_env1s_size, List_env1s_expo, &
|
||||
!$OMP List_env1s_coef, List_env1s_cent, &
|
||||
!$OMP Ir2_Mu_gauss_Du)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
r(2) = final_grid_points(2,ipoint)
|
||||
r(3) = final_grid_points(3,ipoint)
|
||||
|
||||
rmu_sq(1) = mu_sq * r(1)
|
||||
rmu_sq(2) = mu_sq * r(2)
|
||||
rmu_sq(3) = mu_sq * r(3)
|
||||
|
||||
do i = 1, ao_num
|
||||
do j = i, ao_num
|
||||
|
||||
tmp_Du = overlap_gauss_r12_ao(r, mu_sq, j, i)
|
||||
|
||||
do i_1s = 2, List_env1s_size
|
||||
|
||||
e_1s = List_env1s_expo(i_1s)
|
||||
c_1s = List_env1s_coef(i_1s)
|
||||
R_1s(1) = List_env1s_cent(1,i_1s)
|
||||
R_1s(2) = List_env1s_cent(2,i_1s)
|
||||
R_1s(3) = List_env1s_cent(3,i_1s)
|
||||
|
||||
dx = r(1) - R_1s(1)
|
||||
dy = r(2) - R_1s(2)
|
||||
dz = r(3) - R_1s(3)
|
||||
|
||||
beta = mu_sq + e_1s
|
||||
tmp_arg = mu_sq * e_1s * (dx*dx + dy*dy + dz*dz) / beta
|
||||
coef = c_1s * dexp(-tmp_arg)
|
||||
B_center(1) = (rmu_sq(1) + e_1s * R_1s(1)) / beta
|
||||
B_center(2) = (rmu_sq(2) + e_1s * R_1s(2)) / beta
|
||||
B_center(3) = (rmu_sq(3) + e_1s * R_1s(3)) / beta
|
||||
|
||||
tmp_Du += coef * overlap_gauss_r12_ao(B_center, beta, j, i)
|
||||
enddo
|
||||
|
||||
Ir2_Mu_gauss_Du(j,i,ipoint) = tmp_Du
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
|
||||
Ir2_Mu_gauss_Du(j,i,ipoint) = Ir2_Mu_gauss_Du(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for Ir2_Mu_gauss_Du (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du2_0, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du2_x, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du2_y, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du2_z, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_long_Du2_2, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! Ir2_Mu_long_Du2_0 = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12) / r_12]
|
||||
!
|
||||
! Ir2_Mu_long_Du2_x = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12) / r_12] * x2
|
||||
! Ir2_Mu_long_Du2_y = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12) / r_12] * y2
|
||||
! Ir2_Mu_long_Du2_z = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12) / r_12] * z2
|
||||
!
|
||||
! Ir2_Mu_long_Du2_2 = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12) / r_12] * r2^2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: i, j, ipoint, i_1s
|
||||
double precision :: r(3), int_clb(7), int_erf(7)
|
||||
double precision :: coef, beta, B_center(3)
|
||||
double precision :: tmp_Du2_0, tmp_Du2_x, tmp_Du2_y, tmp_Du2_z, tmp_Du2_2
|
||||
double precision :: mu_sq, tmp_arg, dx, dy, dz, rmu_sq(3)
|
||||
double precision :: e_1s, c_1s, R_1s(3)
|
||||
double precision :: wall0, wall1
|
||||
|
||||
|
||||
PROVIDE mu_erf
|
||||
PROVIDE final_grid_points
|
||||
PROVIDE List_env1s_square_size List_env1s_square_expo List_env1s_square_coef List_env1s_square_cent
|
||||
|
||||
print *, ' providing Ir2_Mu_long_Du2 ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
mu_sq = mu_erf * mu_erf
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, r, rmu_sq, dx, dy, dz, &
|
||||
!$OMP e_1s, c_1s, R_1s, tmp_arg, coef, beta, B_center, &
|
||||
!$OMP int_erf, int_clb, &
|
||||
!$OMP tmp_Du2_0, tmp_Du2_x, tmp_Du2_y, tmp_Du2_z, tmp_Du2_2) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, final_grid_points, mu_sq, &
|
||||
!$OMP mu_erf, List_env1s_square_size, List_env1s_square_expo, &
|
||||
!$OMP List_env1s_square_coef, List_env1s_square_cent, &
|
||||
!$OMP Ir2_Mu_long_Du2_0, Ir2_Mu_long_Du2_x, &
|
||||
!$OMP Ir2_Mu_long_Du2_y, Ir2_Mu_long_Du2_z, &
|
||||
!$OMP Ir2_Mu_long_Du2_2)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
r(2) = final_grid_points(2,ipoint)
|
||||
r(3) = final_grid_points(3,ipoint)
|
||||
|
||||
rmu_sq(1) = mu_sq * r(1)
|
||||
rmu_sq(2) = mu_sq * r(2)
|
||||
rmu_sq(3) = mu_sq * r(3)
|
||||
|
||||
do i = 1, ao_num
|
||||
do j = i, ao_num
|
||||
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, mu_sq, r, 1.d+9, r, int_clb)
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, mu_sq, r, mu_erf, r, int_erf)
|
||||
|
||||
tmp_Du2_0 = int_clb(1) - int_erf(1)
|
||||
tmp_Du2_x = int_clb(2) - int_erf(2)
|
||||
tmp_Du2_y = int_clb(3) - int_erf(3)
|
||||
tmp_Du2_z = int_clb(4) - int_erf(4)
|
||||
tmp_Du2_2 = int_clb(5) + int_clb(6) + int_clb(7) - int_erf(5) - int_erf(6) - int_erf(7)
|
||||
|
||||
do i_1s = 2, List_env1s_square_size
|
||||
|
||||
e_1s = List_env1s_square_expo(i_1s)
|
||||
c_1s = List_env1s_square_coef(i_1s)
|
||||
R_1s(1) = List_env1s_square_cent(1,i_1s)
|
||||
R_1s(2) = List_env1s_square_cent(2,i_1s)
|
||||
R_1s(3) = List_env1s_square_cent(3,i_1s)
|
||||
|
||||
dx = r(1) - R_1s(1)
|
||||
dy = r(2) - R_1s(2)
|
||||
dz = r(3) - R_1s(3)
|
||||
|
||||
beta = mu_sq + e_1s
|
||||
tmp_arg = mu_sq * e_1s * (dx*dx + dy*dy + dz*dz) / beta
|
||||
coef = c_1s * dexp(-tmp_arg)
|
||||
B_center(1) = (rmu_sq(1) + e_1s * R_1s(1)) / beta
|
||||
B_center(2) = (rmu_sq(2) + e_1s * R_1s(2)) / beta
|
||||
B_center(3) = (rmu_sq(3) + e_1s * R_1s(3)) / beta
|
||||
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, int_clb)
|
||||
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, int_erf)
|
||||
|
||||
tmp_Du2_0 = tmp_Du2_0 + coef * (int_clb(1) - int_erf(1))
|
||||
tmp_Du2_x = tmp_Du2_x + coef * (int_clb(2) - int_erf(2))
|
||||
tmp_Du2_y = tmp_Du2_y + coef * (int_clb(3) - int_erf(3))
|
||||
tmp_Du2_z = tmp_Du2_z + coef * (int_clb(4) - int_erf(4))
|
||||
tmp_Du2_2 = tmp_Du2_2 + coef * (int_clb(5) + int_clb(6) + int_clb(7) - int_erf(5) - int_erf(6) - int_erf(7))
|
||||
enddo
|
||||
|
||||
Ir2_Mu_long_Du2_0(j,i,ipoint) = tmp_Du2_0
|
||||
Ir2_Mu_long_Du2_x(j,i,ipoint) = tmp_Du2_x
|
||||
Ir2_Mu_long_Du2_y(j,i,ipoint) = tmp_Du2_y
|
||||
Ir2_Mu_long_Du2_z(j,i,ipoint) = tmp_Du2_z
|
||||
Ir2_Mu_long_Du2_2(j,i,ipoint) = tmp_Du2_2
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
Ir2_Mu_long_Du2_0(j,i,ipoint) = Ir2_Mu_long_Du2_0(i,j,ipoint)
|
||||
Ir2_Mu_long_Du2_x(j,i,ipoint) = Ir2_Mu_long_Du2_x(i,j,ipoint)
|
||||
Ir2_Mu_long_Du2_y(j,i,ipoint) = Ir2_Mu_long_Du2_y(i,j,ipoint)
|
||||
Ir2_Mu_long_Du2_z(j,i,ipoint) = Ir2_Mu_long_Du2_z(i,j,ipoint)
|
||||
Ir2_Mu_long_Du2_2(j,i,ipoint) = Ir2_Mu_long_Du2_2(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for Ir2_Mu_long_Du2 (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [double precision, Ir2_Mu_gauss_Du2, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! Ir2_Mu_gauss_Du2 = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 e^{-(mu r_12)^2}
|
||||
!
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: i, j, ipoint, i_1s
|
||||
double precision :: r(3)
|
||||
double precision :: coef, beta, B_center(3)
|
||||
double precision :: tmp_Du2
|
||||
double precision :: mu_sq, dx, dy, dz, tmp_arg, rmu_sq(3)
|
||||
double precision :: e_1s, c_1s, R_1s(3)
|
||||
double precision :: wall0, wall1
|
||||
|
||||
double precision, external :: overlap_gauss_r12_ao
|
||||
|
||||
PROVIDE mu_erf
|
||||
PROVIDE final_grid_points
|
||||
PROVIDE List_env1s_square_size List_env1s_square_expo List_env1s_square_coef List_env1s_square_cent
|
||||
|
||||
|
||||
print *, ' providing Ir2_Mu_gauss_Du2 ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
mu_sq = 2.d0 * mu_erf * mu_erf
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, dx, dy, dz, r, tmp_arg, coef, &
|
||||
!$OMP rmu_sq, e_1s, c_1s, R_1s, beta, B_center, tmp_Du2) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, final_grid_points, mu_sq, &
|
||||
!$OMP List_env1s_square_size, List_env1s_square_expo, &
|
||||
!$OMP List_env1s_square_coef, List_env1s_square_cent, &
|
||||
!$OMP Ir2_Mu_gauss_Du2)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
r(2) = final_grid_points(2,ipoint)
|
||||
r(3) = final_grid_points(3,ipoint)
|
||||
|
||||
rmu_sq(1) = mu_sq * r(1)
|
||||
rmu_sq(2) = mu_sq * r(2)
|
||||
rmu_sq(3) = mu_sq * r(3)
|
||||
|
||||
do i = 1, ao_num
|
||||
do j = i, ao_num
|
||||
|
||||
tmp_Du2 = overlap_gauss_r12_ao(r, mu_sq, j, i)
|
||||
|
||||
do i_1s = 2, List_env1s_square_size
|
||||
|
||||
e_1s = List_env1s_square_expo(i_1s)
|
||||
c_1s = List_env1s_square_coef(i_1s)
|
||||
R_1s(1) = List_env1s_square_cent(1,i_1s)
|
||||
R_1s(2) = List_env1s_square_cent(2,i_1s)
|
||||
R_1s(3) = List_env1s_square_cent(3,i_1s)
|
||||
|
||||
dx = r(1) - R_1s(1)
|
||||
dy = r(2) - R_1s(2)
|
||||
dz = r(3) - R_1s(3)
|
||||
|
||||
beta = mu_sq + e_1s
|
||||
tmp_arg = mu_sq * e_1s * (dx*dx + dy*dy + dz*dz) / beta
|
||||
coef = c_1s * dexp(-tmp_arg)
|
||||
B_center(1) = (rmu_sq(1) + e_1s * R_1s(1)) / beta
|
||||
B_center(2) = (rmu_sq(2) + e_1s * R_1s(2)) / beta
|
||||
B_center(3) = (rmu_sq(3) + e_1s * R_1s(3)) / beta
|
||||
|
||||
tmp_Du2 += coef * overlap_gauss_r12_ao(B_center, beta, j, i)
|
||||
enddo
|
||||
|
||||
Ir2_Mu_gauss_Du2(j,i,ipoint) = tmp_Du2
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
|
||||
Ir2_Mu_gauss_Du2(j,i,ipoint) = Ir2_Mu_gauss_Du2(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for Ir2_Mu_gauss_Du2 (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [double precision, Ir2_Mu_short_Du2_0, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_short_Du2_x, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_short_Du2_y, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_short_Du2_z, (ao_num, ao_num, n_points_final_grid)]
|
||||
&BEGIN_PROVIDER [double precision, Ir2_Mu_short_Du2_2, (ao_num, ao_num, n_points_final_grid)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! Ir2_Mu_short_Du2_0 = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12)]^2
|
||||
!
|
||||
! Ir2_Mu_short_Du2_x = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12)]^2 * x2
|
||||
! Ir2_Mu_short_Du2_y = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12)]^2 * y2
|
||||
! Ir2_Mu_short_Du2_z = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12)]^2 * z2
|
||||
!
|
||||
! Ir2_Mu_short_Du2_2 = int dr2 phi_i(r2) phi_j(r2) [fc_env(r2)]^2 [(1 - erf(mu r_12)]^2 * r2^2
|
||||
!
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: i, j, ipoint, i_1s, i_fit
|
||||
double precision :: r(3), ints(7)
|
||||
double precision :: coef, beta, B_center(3)
|
||||
double precision :: tmp_Du2_0, tmp_Du2_x, tmp_Du2_y, tmp_Du2_z, tmp_Du2_2
|
||||
double precision :: tmp_arg, dx, dy, dz
|
||||
double precision :: expo_fit, coef_fit, e_1s, c_1s, R_1s(3)
|
||||
double precision :: wall0, wall1
|
||||
|
||||
PROVIDE final_grid_points
|
||||
PROVIDE List_env1s_square_size List_env1s_square_expo List_env1s_square_coef List_env1s_square_cent
|
||||
PROVIDE ng_fit_jast expo_gauss_1_erf_x_2 coef_gauss_1_erf_x_2
|
||||
|
||||
print *, ' providing Ir2_Mu_short_Du2 ...'
|
||||
call wall_time(wall0)
|
||||
|
||||
!$OMP PARALLEL DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, dx, dy, dz, &
|
||||
!$OMP expo_fit, coef_fit, e_1s, c_1s, R_1s, &
|
||||
!$OMP tmp_arg, coef, beta, B_center, ints, &
|
||||
!$OMP tmp_Du2_0, tmp_Du2_x, tmp_Du2_y, tmp_Du2_z, tmp_Du2_2) &
|
||||
!$OMP SHARED (n_points_final_grid, ao_num, final_grid_points, &
|
||||
!$OMP ng_fit_jast, expo_gauss_1_erf_x_2, coef_gauss_1_erf_x_2, &
|
||||
!$OMP List_env1s_square_size, List_env1s_square_expo, &
|
||||
!$OMP List_env1s_square_coef, List_env1s_square_cent, &
|
||||
!$OMP Ir2_Mu_short_Du2_0, Ir2_Mu_short_Du2_x, &
|
||||
!$OMP Ir2_Mu_short_Du2_y, Ir2_Mu_short_Du2_z, &
|
||||
!$OMP Ir2_Mu_short_Du2_2)
|
||||
!$OMP DO
|
||||
do ipoint = 1, n_points_final_grid
|
||||
|
||||
r(1) = final_grid_points(1,ipoint)
|
||||
r(2) = final_grid_points(2,ipoint)
|
||||
r(3) = final_grid_points(3,ipoint)
|
||||
|
||||
do i = 1, ao_num
|
||||
do j = i, ao_num
|
||||
|
||||
tmp_Du2_0 = 0.d0
|
||||
tmp_Du2_x = 0.d0
|
||||
tmp_Du2_y = 0.d0
|
||||
tmp_Du2_z = 0.d0
|
||||
tmp_Du2_2 = 0.d0
|
||||
do i_fit = 1, ng_fit_jast
|
||||
|
||||
expo_fit = expo_gauss_1_erf_x_2(i_fit)
|
||||
coef_fit = coef_gauss_1_erf_x_2(i_fit)
|
||||
|
||||
call overlap_gauss_r12_ao_012(r, expo_fit, i, j, ints)
|
||||
|
||||
tmp_Du2_0 += coef_fit * ints(1)
|
||||
tmp_Du2_x += coef_fit * ints(2)
|
||||
tmp_Du2_y += coef_fit * ints(3)
|
||||
tmp_Du2_z += coef_fit * ints(4)
|
||||
tmp_Du2_2 += coef_fit * (ints(5) + ints(6) + ints(7))
|
||||
|
||||
do i_1s = 2, List_env1s_square_size
|
||||
|
||||
e_1s = List_env1s_square_expo(i_1s)
|
||||
c_1s = List_env1s_square_coef(i_1s)
|
||||
R_1s(1) = List_env1s_square_cent(1,i_1s)
|
||||
R_1s(2) = List_env1s_square_cent(2,i_1s)
|
||||
R_1s(3) = List_env1s_square_cent(3,i_1s)
|
||||
|
||||
dx = r(1) - R_1s(1)
|
||||
dy = r(2) - R_1s(2)
|
||||
dz = r(3) - R_1s(3)
|
||||
|
||||
beta = expo_fit + e_1s
|
||||
tmp_arg = expo_fit * e_1s * (dx*dx + dy*dy + dz*dz) / beta
|
||||
coef = coef_fit * c_1s * dexp(-tmp_arg)
|
||||
B_center(1) = (expo_fit * r(1) + e_1s * R_1s(1)) / beta
|
||||
B_center(2) = (expo_fit * r(2) + e_1s * R_1s(2)) / beta
|
||||
B_center(3) = (expo_fit * r(3) + e_1s * R_1s(3)) / beta
|
||||
|
||||
call overlap_gauss_r12_ao_012(B_center, beta, i, j, ints)
|
||||
|
||||
tmp_Du2_0 += coef * ints(1)
|
||||
tmp_Du2_x += coef * ints(2)
|
||||
tmp_Du2_y += coef * ints(3)
|
||||
tmp_Du2_z += coef * ints(4)
|
||||
tmp_Du2_2 += coef * (ints(5) + ints(6) + ints(7))
|
||||
enddo ! i_1s
|
||||
enddo ! i_fit
|
||||
|
||||
Ir2_Mu_short_Du2_0(j,i,ipoint) = tmp_Du2_0
|
||||
Ir2_Mu_short_Du2_x(j,i,ipoint) = tmp_Du2_x
|
||||
Ir2_Mu_short_Du2_y(j,i,ipoint) = tmp_Du2_y
|
||||
Ir2_Mu_short_Du2_z(j,i,ipoint) = tmp_Du2_z
|
||||
Ir2_Mu_short_Du2_2(j,i,ipoint) = tmp_Du2_2
|
||||
enddo ! j
|
||||
enddo ! i
|
||||
enddo ! ipoint
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
do ipoint = 1, n_points_final_grid
|
||||
do i = 2, ao_num
|
||||
do j = 1, i-1
|
||||
Ir2_Mu_short_Du2_0(j,i,ipoint) = Ir2_Mu_short_Du2_0(i,j,ipoint)
|
||||
Ir2_Mu_short_Du2_x(j,i,ipoint) = Ir2_Mu_short_Du2_x(i,j,ipoint)
|
||||
Ir2_Mu_short_Du2_y(j,i,ipoint) = Ir2_Mu_short_Du2_y(i,j,ipoint)
|
||||
Ir2_Mu_short_Du2_z(j,i,ipoint) = Ir2_Mu_short_Du2_z(i,j,ipoint)
|
||||
Ir2_Mu_short_Du2_2(j,i,ipoint) = Ir2_Mu_short_Du2_2(i,j,ipoint)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
call wall_time(wall1)
|
||||
print*, ' wall time for Ir2_Mu_short_Du2 (min) = ', (wall1 - wall0) / 60.d0
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
197
plugins/local/ao_many_one_e_ints/listj1b_sorted.irp.f
Normal file
197
plugins/local/ao_many_one_e_ints/listj1b_sorted.irp.f
Normal file
|
@ -0,0 +1,197 @@
|
|||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [integer, List_comb_thr_b2_size, (ao_num, ao_num)]
|
||||
&BEGIN_PROVIDER [integer, max_List_comb_thr_b2_size]
|
||||
|
||||
implicit none
|
||||
integer :: i_1s, i, j, ipoint
|
||||
integer :: list(ao_num)
|
||||
double precision :: coef,beta,center(3),int_env
|
||||
double precision :: r(3),weight,dist
|
||||
|
||||
List_comb_thr_b2_size = 0
|
||||
print*,'List_env1s_size = ',List_env1s_size
|
||||
|
||||
do i = 1, ao_num
|
||||
do j = i, ao_num
|
||||
do i_1s = 1, List_env1s_size
|
||||
coef = List_env1s_coef(i_1s)
|
||||
if(dabs(coef).lt.thrsh_cycle_tc) cycle
|
||||
beta = List_env1s_expo(i_1s)
|
||||
beta = max(beta,1.d-12)
|
||||
center(1:3) = List_env1s_cent(1:3,i_1s)
|
||||
int_env = 0.d0
|
||||
do ipoint = 1, n_points_extra_final_grid
|
||||
r(1:3) = final_grid_points_extra(1:3,ipoint)
|
||||
weight = final_weight_at_r_vector_extra(ipoint)
|
||||
dist = ( center(1) - r(1) )*( center(1) - r(1) )
|
||||
dist += ( center(2) - r(2) )*( center(2) - r(2) )
|
||||
dist += ( center(3) - r(3) )*( center(3) - r(3) )
|
||||
int_env += dabs(aos_in_r_array_extra_transp(ipoint,i) * aos_in_r_array_extra_transp(ipoint,j))*dexp(-beta*dist) * weight
|
||||
enddo
|
||||
if(dabs(coef)*dabs(int_env).gt.thrsh_cycle_tc)then
|
||||
List_comb_thr_b2_size(j,i) += 1
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
do i = 1, ao_num
|
||||
do j = 1, i-1
|
||||
List_comb_thr_b2_size(j,i) = List_comb_thr_b2_size(i,j)
|
||||
enddo
|
||||
enddo
|
||||
do i = 1, ao_num
|
||||
list(i) = maxval(List_comb_thr_b2_size(:,i))
|
||||
enddo
|
||||
|
||||
max_List_comb_thr_b2_size = maxval(list)
|
||||
print*, ' max_List_comb_thr_b2_size = ',max_List_comb_thr_b2_size
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, List_comb_thr_b2_coef, ( max_List_comb_thr_b2_size,ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [ double precision, List_comb_thr_b2_expo, ( max_List_comb_thr_b2_size,ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [ double precision, List_comb_thr_b2_cent, (3,max_List_comb_thr_b2_size,ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [ double precision, ao_abs_comb_b2_env , ( max_List_comb_thr_b2_size,ao_num,ao_num)]
|
||||
|
||||
implicit none
|
||||
integer :: i_1s,i,j,ipoint,icount
|
||||
double precision :: coef,beta,center(3),int_env
|
||||
double precision :: r(3),weight,dist
|
||||
|
||||
ao_abs_comb_b2_env = 10000000.d0
|
||||
do i = 1, ao_num
|
||||
do j = i, ao_num
|
||||
icount = 0
|
||||
do i_1s = 1, List_env1s_size
|
||||
coef = List_env1s_coef (i_1s)
|
||||
if(dabs(coef).lt.thrsh_cycle_tc)cycle
|
||||
beta = List_env1s_expo (i_1s)
|
||||
center(1:3) = List_env1s_cent(1:3,i_1s)
|
||||
int_env = 0.d0
|
||||
do ipoint = 1, n_points_extra_final_grid
|
||||
r(1:3) = final_grid_points_extra(1:3,ipoint)
|
||||
weight = final_weight_at_r_vector_extra(ipoint)
|
||||
dist = ( center(1) - r(1) )*( center(1) - r(1) )
|
||||
dist += ( center(2) - r(2) )*( center(2) - r(2) )
|
||||
dist += ( center(3) - r(3) )*( center(3) - r(3) )
|
||||
int_env += dabs(aos_in_r_array_extra_transp(ipoint,i) * aos_in_r_array_extra_transp(ipoint,j))*dexp(-beta*dist) * weight
|
||||
enddo
|
||||
if(dabs(coef)*dabs(int_env).gt.thrsh_cycle_tc)then
|
||||
icount += 1
|
||||
List_comb_thr_b2_coef(icount,j,i) = coef
|
||||
List_comb_thr_b2_expo(icount,j,i) = beta
|
||||
List_comb_thr_b2_cent(1:3,icount,j,i) = center(1:3)
|
||||
ao_abs_comb_b2_env(icount,j,i) = int_env
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
do i = 1, ao_num
|
||||
do j = 1, i-1
|
||||
do icount = 1, List_comb_thr_b2_size(j,i)
|
||||
List_comb_thr_b2_coef(icount,j,i) = List_comb_thr_b2_coef(icount,i,j)
|
||||
List_comb_thr_b2_expo(icount,j,i) = List_comb_thr_b2_expo(icount,i,j)
|
||||
List_comb_thr_b2_cent(1:3,icount,j,i) = List_comb_thr_b2_cent(1:3,icount,i,j)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [integer, List_comb_thr_b3_size, (ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [integer, max_List_comb_thr_b3_size]
|
||||
|
||||
implicit none
|
||||
integer :: i_1s,i,j,ipoint
|
||||
integer :: list(ao_num)
|
||||
double precision :: coef,beta,center(3),int_env
|
||||
double precision :: r(3),weight,dist
|
||||
|
||||
List_comb_thr_b3_size = 0
|
||||
print*,'List_env1s_square_size = ',List_env1s_square_size
|
||||
do i = 1, ao_num
|
||||
do j = 1, ao_num
|
||||
do i_1s = 1, List_env1s_square_size
|
||||
coef = List_env1s_square_coef (i_1s)
|
||||
beta = List_env1s_square_expo (i_1s)
|
||||
center(1:3) = List_env1s_square_cent(1:3,i_1s)
|
||||
if(dabs(coef).lt.thrsh_cycle_tc)cycle
|
||||
int_env = 0.d0
|
||||
do ipoint = 1, n_points_extra_final_grid
|
||||
r(1:3) = final_grid_points_extra(1:3,ipoint)
|
||||
weight = final_weight_at_r_vector_extra(ipoint)
|
||||
dist = ( center(1) - r(1) )*( center(1) - r(1) )
|
||||
dist += ( center(2) - r(2) )*( center(2) - r(2) )
|
||||
dist += ( center(3) - r(3) )*( center(3) - r(3) )
|
||||
int_env += dabs(aos_in_r_array_extra_transp(ipoint,i) * aos_in_r_array_extra_transp(ipoint,j))*dexp(-beta*dist) * weight
|
||||
enddo
|
||||
if(dabs(coef)*dabs(int_env).gt.thrsh_cycle_tc) then
|
||||
List_comb_thr_b3_size(j,i) += 1
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
do i = 1, ao_num
|
||||
list(i) = maxval(List_comb_thr_b3_size(:,i))
|
||||
enddo
|
||||
|
||||
max_List_comb_thr_b3_size = maxval(list)
|
||||
print*, ' max_List_comb_thr_b3_size = ',max_List_comb_thr_b3_size
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [double precision, List_comb_thr_b3_coef, ( max_List_comb_thr_b3_size,ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [double precision, List_comb_thr_b3_expo, ( max_List_comb_thr_b3_size,ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [double precision, List_comb_thr_b3_cent, (3, max_List_comb_thr_b3_size,ao_num,ao_num)]
|
||||
&BEGIN_PROVIDER [double precision, ao_abs_comb_b3_env , ( max_List_comb_thr_b3_size,ao_num,ao_num)]
|
||||
|
||||
implicit none
|
||||
integer :: i_1s,i,j,ipoint,icount
|
||||
double precision :: coef,beta,center(3),int_env
|
||||
double precision :: r(3),weight,dist
|
||||
|
||||
ao_abs_comb_b3_env = 10000000.d0
|
||||
do i = 1, ao_num
|
||||
do j = 1, ao_num
|
||||
icount = 0
|
||||
do i_1s = 1, List_env1s_square_size
|
||||
coef = List_env1s_square_coef (i_1s)
|
||||
beta = List_env1s_square_expo (i_1s)
|
||||
beta = max(beta,1.d-12)
|
||||
center(1:3) = List_env1s_square_cent(1:3,i_1s)
|
||||
if(dabs(coef).lt.thrsh_cycle_tc)cycle
|
||||
int_env = 0.d0
|
||||
do ipoint = 1, n_points_extra_final_grid
|
||||
r(1:3) = final_grid_points_extra(1:3,ipoint)
|
||||
weight = final_weight_at_r_vector_extra(ipoint)
|
||||
dist = ( center(1) - r(1) )*( center(1) - r(1) )
|
||||
dist += ( center(2) - r(2) )*( center(2) - r(2) )
|
||||
dist += ( center(3) - r(3) )*( center(3) - r(3) )
|
||||
int_env += dabs(aos_in_r_array_extra_transp(ipoint,i) * aos_in_r_array_extra_transp(ipoint,j))*dexp(-beta*dist) * weight
|
||||
enddo
|
||||
if(dabs(coef)*dabs(int_env).gt.thrsh_cycle_tc)then
|
||||
icount += 1
|
||||
List_comb_thr_b3_coef(icount,j,i) = coef
|
||||
List_comb_thr_b3_expo(icount,j,i) = beta
|
||||
List_comb_thr_b3_cent(1:3,icount,j,i) = center(1:3)
|
||||
ao_abs_comb_b3_env(icount,j,i) = int_env
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
! ---
|
||||
|
|
@ -200,7 +200,7 @@ subroutine overlap_gauss_r12_v(D_center, LD_D, delta, A_center, B_center, power_
|
|||
|
||||
deallocate(A_new, A_center_new, fact_a_new, iorder_a_new, overlap)
|
||||
|
||||
end subroutine overlap_gauss_r12_v
|
||||
end
|
||||
|
||||
!---
|
||||
|
|
@ -3,3 +3,5 @@ mo_one_e_ints
|
|||
ao_many_one_e_ints
|
||||
dft_utils_in_r
|
||||
tc_keywords
|
||||
hamiltonian
|
||||
jastrow
|
|
@ -23,10 +23,9 @@ subroutine compute_ao_tc_sym_two_e_pot_jl(j, l, n_integrals, buffer_i, buffer_va
|
|||
|
||||
logical, external :: ao_two_e_integral_zero
|
||||
double precision :: ao_tc_sym_two_e_pot, ao_two_e_integral_erf
|
||||
double precision :: j1b_gauss_2e_j1, j1b_gauss_2e_j2
|
||||
double precision :: env_gauss_2e_j1, env_gauss_2e_j2
|
||||
|
||||
|
||||
PROVIDE j1b_type
|
||||
|
||||
thr = ao_integrals_threshold
|
||||
|
||||
|
@ -53,14 +52,6 @@ subroutine compute_ao_tc_sym_two_e_pot_jl(j, l, n_integrals, buffer_i, buffer_va
|
|||
integral_erf = ao_two_e_integral_erf(i, k, j, l)
|
||||
integral = integral_erf + integral_pot
|
||||
|
||||
!if( j1b_type .eq. 1 ) then
|
||||
! !print *, ' j1b type 1 is added'
|
||||
! integral = integral + j1b_gauss_2e_j1(i, k, j, l)
|
||||
!elseif( j1b_type .eq. 2 ) then
|
||||
! !print *, ' j1b type 2 is added'
|
||||
! integral = integral + j1b_gauss_2e_j2(i, k, j, l)
|
||||
!endif
|
||||
|
||||
if(abs(integral) < thr) then
|
||||
cycle
|
||||
endif
|
|
@ -1,10 +1,10 @@
|
|||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, j1b_gauss_hermII, (ao_num,ao_num)]
|
||||
BEGIN_PROVIDER [double precision, env_gauss_hermII, (ao_num,ao_num)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! :math:`\langle \chi_A | -0.5 \grad \tau_{1b} \cdot \grad \tau_{1b} | \chi_B \rangle`
|
||||
! :math:`\langle \chi_A | -0.5 \grad \tau_{env} \cdot \grad \tau_{env} | \chi_B \rangle`
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -22,8 +22,6 @@ BEGIN_PROVIDER [ double precision, j1b_gauss_hermII, (ao_num,ao_num)]
|
|||
|
||||
double precision :: int_gauss_4G
|
||||
|
||||
PROVIDE j1b_type j1b_pen j1b_coeff
|
||||
|
||||
! --------------------------------------------------------------------------------
|
||||
! -- Dummy call to provide everything
|
||||
dim1 = 100
|
||||
|
@ -38,10 +36,7 @@ BEGIN_PROVIDER [ double precision, j1b_gauss_hermII, (ao_num,ao_num)]
|
|||
! --------------------------------------------------------------------------------
|
||||
|
||||
|
||||
j1b_gauss_hermII(1:ao_num,1:ao_num) = 0.d0
|
||||
|
||||
if(j1b_type .eq. 1) then
|
||||
! \tau_1b = \sum_iA -[1 - exp(-alpha_A r_iA^2)]
|
||||
env_gauss_hermII(1:ao_num,1:ao_num) = 0.d0
|
||||
|
||||
!$OMP PARALLEL &
|
||||
!$OMP DEFAULT (NONE) &
|
||||
|
@ -51,113 +46,51 @@ BEGIN_PROVIDER [ double precision, j1b_gauss_hermII, (ao_num,ao_num)]
|
|||
!$OMP SHARED (ao_num, ao_prim_num, ao_expo_ordered_transp, &
|
||||
!$OMP ao_power, ao_nucl, nucl_coord, &
|
||||
!$OMP ao_coef_normalized_ordered_transp, &
|
||||
!$OMP nucl_num, j1b_pen, j1b_gauss_hermII)
|
||||
!$OMP nucl_num, env_expo, env_gauss_hermII)
|
||||
!$OMP DO SCHEDULE (dynamic)
|
||||
do j = 1, ao_num
|
||||
num_A = ao_nucl(j)
|
||||
power_A(1:3) = ao_power(j,1:3)
|
||||
A_center(1:3) = nucl_coord(num_A,1:3)
|
||||
|
||||
do i = 1, ao_num
|
||||
num_B = ao_nucl(i)
|
||||
power_B(1:3) = ao_power(i,1:3)
|
||||
B_center(1:3) = nucl_coord(num_B,1:3)
|
||||
|
||||
do l = 1, ao_prim_num(j)
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
|
||||
do m = 1, ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
|
||||
c = 0.d0
|
||||
do k1 = 1, nucl_num
|
||||
gama1 = j1b_pen(k1)
|
||||
C_center1(1:3) = nucl_coord(k1,1:3)
|
||||
|
||||
do k2 = 1, nucl_num
|
||||
gama2 = j1b_pen(k2)
|
||||
C_center2(1:3) = nucl_coord(k2,1:3)
|
||||
|
||||
! < XA | exp[-gama1 r_C1^2 -gama2 r_C2^2] r_C1 \cdot r_C2 | XB >
|
||||
c1 = int_gauss_4G( A_center, B_center, C_center1, C_center2 &
|
||||
, power_A, power_B, alpha, beta, gama1, gama2 )
|
||||
|
||||
c = c - 2.d0 * gama1 * gama2 * c1
|
||||
enddo
|
||||
do j = 1, ao_num
|
||||
num_A = ao_nucl(j)
|
||||
power_A(1:3) = ao_power(j,1:3)
|
||||
A_center(1:3) = nucl_coord(num_A,1:3)
|
||||
|
||||
do i = 1, ao_num
|
||||
num_B = ao_nucl(i)
|
||||
power_B(1:3) = ao_power(i,1:3)
|
||||
B_center(1:3) = nucl_coord(num_B,1:3)
|
||||
|
||||
do l = 1, ao_prim_num(j)
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
|
||||
do m = 1, ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
|
||||
c = 0.d0
|
||||
do k1 = 1, nucl_num
|
||||
gama1 = env_expo(k1)
|
||||
C_center1(1:3) = nucl_coord(k1,1:3)
|
||||
|
||||
do k2 = 1, nucl_num
|
||||
gama2 = env_expo(k2)
|
||||
C_center2(1:3) = nucl_coord(k2,1:3)
|
||||
|
||||
! < XA | exp[-gama1 r_C1^2 -gama2 r_C2^2] r_C1 \cdot r_C2 | XB >
|
||||
c1 = int_gauss_4G( A_center, B_center, C_center1, C_center2 &
|
||||
, power_A, power_B, alpha, beta, gama1, gama2 )
|
||||
|
||||
c = c - 2.d0 * gama1 * gama2 * c1
|
||||
enddo
|
||||
|
||||
j1b_gauss_hermII(i,j) = j1b_gauss_hermII(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
enddo
|
||||
|
||||
env_gauss_hermII(i,j) = env_gauss_hermII(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
elseif(j1b_type .eq. 2) then
|
||||
! \tau_1b = \sum_iA [c_A exp(-alpha_A r_iA^2)]
|
||||
|
||||
!$OMP PARALLEL &
|
||||
!$OMP DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (i, j, k1, k2, l, m, alpha, beta, gama1, gama2, &
|
||||
!$OMP A_center, B_center, C_center1, C_center2, &
|
||||
!$OMP power_A, power_B, num_A, num_B, c1, c, &
|
||||
!$OMP coef1, coef2) &
|
||||
!$OMP SHARED (ao_num, ao_prim_num, ao_expo_ordered_transp, &
|
||||
!$OMP ao_power, ao_nucl, nucl_coord, &
|
||||
!$OMP ao_coef_normalized_ordered_transp, &
|
||||
!$OMP nucl_num, j1b_pen, j1b_gauss_hermII, &
|
||||
!$OMP j1b_coeff)
|
||||
!$OMP DO SCHEDULE (dynamic)
|
||||
do j = 1, ao_num
|
||||
num_A = ao_nucl(j)
|
||||
power_A(1:3) = ao_power(j,1:3)
|
||||
A_center(1:3) = nucl_coord(num_A,1:3)
|
||||
|
||||
do i = 1, ao_num
|
||||
num_B = ao_nucl(i)
|
||||
power_B(1:3) = ao_power(i,1:3)
|
||||
B_center(1:3) = nucl_coord(num_B,1:3)
|
||||
|
||||
do l = 1, ao_prim_num(j)
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
|
||||
do m = 1, ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
|
||||
c = 0.d0
|
||||
do k1 = 1, nucl_num
|
||||
gama1 = j1b_pen (k1)
|
||||
coef1 = j1b_coeff(k1)
|
||||
C_center1(1:3) = nucl_coord(k1,1:3)
|
||||
|
||||
do k2 = 1, nucl_num
|
||||
gama2 = j1b_pen (k2)
|
||||
coef2 = j1b_coeff(k2)
|
||||
C_center2(1:3) = nucl_coord(k2,1:3)
|
||||
|
||||
! < XA | exp[-gama1 r_C1^2 -gama2 r_C2^2] r_C1 \cdot r_C2 | XB >
|
||||
c1 = int_gauss_4G( A_center, B_center, C_center1, C_center2 &
|
||||
, power_A, power_B, alpha, beta, gama1, gama2 )
|
||||
|
||||
c = c - 2.d0 * gama1 * gama2 * coef1 * coef2 * c1
|
||||
enddo
|
||||
enddo
|
||||
|
||||
j1b_gauss_hermII(i,j) = j1b_gauss_hermII(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
endif
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, j1b_gauss_hermI, (ao_num,ao_num)]
|
||||
BEGIN_PROVIDER [double precision, env_gauss_hermI, (ao_num,ao_num)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! :math:`\langle \chi_A | -0.5 \Delta \tau_{1b} | \chi_B \rangle`
|
||||
! :math:`\langle \chi_A | -0.5 \Delta \tau_{env} | \chi_B \rangle`
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -22,8 +22,6 @@ BEGIN_PROVIDER [ double precision, j1b_gauss_hermI, (ao_num,ao_num)]
|
|||
|
||||
double precision :: int_gauss_r0, int_gauss_r2
|
||||
|
||||
PROVIDE j1b_type j1b_pen j1b_coeff
|
||||
|
||||
! --------------------------------------------------------------------------------
|
||||
! -- Dummy call to provide everything
|
||||
dim1 = 100
|
||||
|
@ -37,10 +35,7 @@ BEGIN_PROVIDER [ double precision, j1b_gauss_hermI, (ao_num,ao_num)]
|
|||
, overlap_y, d_a_2, overlap_z, overlap, dim1 )
|
||||
! --------------------------------------------------------------------------------
|
||||
|
||||
j1b_gauss_hermI(1:ao_num,1:ao_num) = 0.d0
|
||||
|
||||
if(j1b_type .eq. 1) then
|
||||
! \tau_1b = \sum_iA -[1 - exp(-alpha_A r_iA^2)]
|
||||
env_gauss_hermI(1:ao_num,1:ao_num) = 0.d0
|
||||
|
||||
!$OMP PARALLEL &
|
||||
!$OMP DEFAULT (NONE) &
|
||||
|
@ -50,109 +45,50 @@ BEGIN_PROVIDER [ double precision, j1b_gauss_hermI, (ao_num,ao_num)]
|
|||
!$OMP SHARED (ao_num, ao_prim_num, ao_expo_ordered_transp, &
|
||||
!$OMP ao_power, ao_nucl, nucl_coord, &
|
||||
!$OMP ao_coef_normalized_ordered_transp, &
|
||||
!$OMP nucl_num, j1b_pen, j1b_gauss_hermI)
|
||||
!$OMP nucl_num, env_expo, env_gauss_hermI)
|
||||
!$OMP DO SCHEDULE (dynamic)
|
||||
do j = 1, ao_num
|
||||
num_A = ao_nucl(j)
|
||||
power_A(1:3) = ao_power(j,1:3)
|
||||
A_center(1:3) = nucl_coord(num_A,1:3)
|
||||
|
||||
do i = 1, ao_num
|
||||
num_B = ao_nucl(i)
|
||||
power_B(1:3) = ao_power(i,1:3)
|
||||
B_center(1:3) = nucl_coord(num_B,1:3)
|
||||
|
||||
do l = 1, ao_prim_num(j)
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
|
||||
do m = 1, ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
|
||||
c = 0.d0
|
||||
do k = 1, nucl_num
|
||||
gama = j1b_pen(k)
|
||||
C_center(1:3) = nucl_coord(k,1:3)
|
||||
|
||||
! < XA | exp[-gama r_C^2] | XB >
|
||||
c1 = int_gauss_r0( A_center, B_center, C_center &
|
||||
, power_A, power_B, alpha, beta, gama )
|
||||
|
||||
! < XA | r_A^2 exp[-gama r_C^2] | XB >
|
||||
c2 = int_gauss_r2( A_center, B_center, C_center &
|
||||
, power_A, power_B, alpha, beta, gama )
|
||||
|
||||
c = c + 3.d0 * gama * c1 - 2.d0 * gama * gama * c2
|
||||
enddo
|
||||
|
||||
j1b_gauss_hermI(i,j) = j1b_gauss_hermI(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
do j = 1, ao_num
|
||||
num_A = ao_nucl(j)
|
||||
power_A(1:3) = ao_power(j,1:3)
|
||||
A_center(1:3) = nucl_coord(num_A,1:3)
|
||||
|
||||
do i = 1, ao_num
|
||||
num_B = ao_nucl(i)
|
||||
power_B(1:3) = ao_power(i,1:3)
|
||||
B_center(1:3) = nucl_coord(num_B,1:3)
|
||||
|
||||
do l = 1, ao_prim_num(j)
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
|
||||
do m = 1, ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
|
||||
c = 0.d0
|
||||
do k = 1, nucl_num
|
||||
gama = env_expo(k)
|
||||
C_center(1:3) = nucl_coord(k,1:3)
|
||||
|
||||
! < XA | exp[-gama r_C^2] | XB >
|
||||
c1 = int_gauss_r0( A_center, B_center, C_center &
|
||||
, power_A, power_B, alpha, beta, gama )
|
||||
|
||||
! < XA | r_A^2 exp[-gama r_C^2] | XB >
|
||||
c2 = int_gauss_r2( A_center, B_center, C_center &
|
||||
, power_A, power_B, alpha, beta, gama )
|
||||
|
||||
c = c + 3.d0 * gama * c1 - 2.d0 * gama * gama * c2
|
||||
enddo
|
||||
|
||||
env_gauss_hermI(i,j) = env_gauss_hermI(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
elseif(j1b_type .eq. 2) then
|
||||
! \tau_1b = \sum_iA [c_A exp(-alpha_A r_iA^2)]
|
||||
|
||||
!$OMP PARALLEL &
|
||||
!$OMP DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (i, j, k, l, m, alpha, beta, gama, coef, &
|
||||
!$OMP A_center, B_center, C_center, power_A, power_B, &
|
||||
!$OMP num_A, num_B, c1, c2, c) &
|
||||
!$OMP SHARED (ao_num, ao_prim_num, ao_expo_ordered_transp, &
|
||||
!$OMP ao_power, ao_nucl, nucl_coord, &
|
||||
!$OMP ao_coef_normalized_ordered_transp, &
|
||||
!$OMP nucl_num, j1b_pen, j1b_gauss_hermI, &
|
||||
!$OMP j1b_coeff)
|
||||
!$OMP DO SCHEDULE (dynamic)
|
||||
do j = 1, ao_num
|
||||
num_A = ao_nucl(j)
|
||||
power_A(1:3) = ao_power(j,1:3)
|
||||
A_center(1:3) = nucl_coord(num_A,1:3)
|
||||
|
||||
do i = 1, ao_num
|
||||
num_B = ao_nucl(i)
|
||||
power_B(1:3) = ao_power(i,1:3)
|
||||
B_center(1:3) = nucl_coord(num_B,1:3)
|
||||
|
||||
do l = 1, ao_prim_num(j)
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
|
||||
do m = 1, ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
|
||||
c = 0.d0
|
||||
do k = 1, nucl_num
|
||||
gama = j1b_pen (k)
|
||||
coef = j1b_coeff(k)
|
||||
C_center(1:3) = nucl_coord(k,1:3)
|
||||
|
||||
! < XA | exp[-gama r_C^2] | XB >
|
||||
c1 = int_gauss_r0( A_center, B_center, C_center &
|
||||
, power_A, power_B, alpha, beta, gama )
|
||||
|
||||
! < XA | r_A^2 exp[-gama r_C^2] | XB >
|
||||
c2 = int_gauss_r2( A_center, B_center, C_center &
|
||||
, power_A, power_B, alpha, beta, gama )
|
||||
|
||||
c = c + 3.d0 * gama * coef * c1 - 2.d0 * gama * gama * coef * c2
|
||||
enddo
|
||||
|
||||
j1b_gauss_hermI(i,j) = j1b_gauss_hermI(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
endif
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
|
||||
! ---
|
||||
|
||||
BEGIN_PROVIDER [ double precision, j1b_gauss_nonherm, (ao_num,ao_num)]
|
||||
BEGIN_PROVIDER [double precision, env_gauss_nonherm, (ao_num,ao_num)]
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! j1b_gauss_nonherm(i,j) = \langle \chi_j | - grad \tau_{1b} \cdot grad | \chi_i \rangle
|
||||
! env_gauss_nonherm(i,j) = \langle \chi_j | - grad \tau_{env} \cdot grad | \chi_i \rangle
|
||||
!
|
||||
END_DOC
|
||||
|
||||
|
@ -22,8 +23,6 @@ BEGIN_PROVIDER [ double precision, j1b_gauss_nonherm, (ao_num,ao_num)]
|
|||
|
||||
double precision :: int_gauss_deriv
|
||||
|
||||
PROVIDE j1b_type j1b_pen j1b_coeff
|
||||
|
||||
! --------------------------------------------------------------------------------
|
||||
! -- Dummy call to provide everything
|
||||
dim1 = 100
|
||||
|
@ -38,10 +37,8 @@ BEGIN_PROVIDER [ double precision, j1b_gauss_nonherm, (ao_num,ao_num)]
|
|||
! --------------------------------------------------------------------------------
|
||||
|
||||
|
||||
j1b_gauss_nonherm(1:ao_num,1:ao_num) = 0.d0
|
||||
env_gauss_nonherm(1:ao_num,1:ao_num) = 0.d0
|
||||
|
||||
if(j1b_type .eq. 1) then
|
||||
! \tau_1b = \sum_iA -[1 - exp(-alpha_A r_iA^2)]
|
||||
|
||||
!$OMP PARALLEL &
|
||||
!$OMP DEFAULT (NONE) &
|
||||
|
@ -51,101 +48,46 @@ BEGIN_PROVIDER [ double precision, j1b_gauss_nonherm, (ao_num,ao_num)]
|
|||
!$OMP SHARED (ao_num, ao_prim_num, ao_expo_ordered_transp, &
|
||||
!$OMP ao_power, ao_nucl, nucl_coord, &
|
||||
!$OMP ao_coef_normalized_ordered_transp, &
|
||||
!$OMP nucl_num, j1b_pen, j1b_gauss_nonherm)
|
||||
!$OMP nucl_num, env_expo, env_gauss_nonherm)
|
||||
!$OMP DO SCHEDULE (dynamic)
|
||||
do j = 1, ao_num
|
||||
num_A = ao_nucl(j)
|
||||
power_A(1:3) = ao_power(j,1:3)
|
||||
A_center(1:3) = nucl_coord(num_A,1:3)
|
||||
|
||||
do i = 1, ao_num
|
||||
num_B = ao_nucl(i)
|
||||
power_B(1:3) = ao_power(i,1:3)
|
||||
B_center(1:3) = nucl_coord(num_B,1:3)
|
||||
|
||||
do l = 1, ao_prim_num(j)
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
|
||||
do m = 1, ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
|
||||
c = 0.d0
|
||||
do k = 1, nucl_num
|
||||
gama = j1b_pen(k)
|
||||
C_center(1:3) = nucl_coord(k,1:3)
|
||||
|
||||
! \langle \chi_A | exp[-gama r_C^2] r_C \cdot grad | \chi_B \rangle
|
||||
c1 = int_gauss_deriv( A_center, B_center, C_center &
|
||||
, power_A, power_B, alpha, beta, gama )
|
||||
|
||||
c = c + 2.d0 * gama * c1
|
||||
enddo
|
||||
|
||||
j1b_gauss_nonherm(i,j) = j1b_gauss_nonherm(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
do j = 1, ao_num
|
||||
num_A = ao_nucl(j)
|
||||
power_A(1:3) = ao_power(j,1:3)
|
||||
A_center(1:3) = nucl_coord(num_A,1:3)
|
||||
|
||||
do i = 1, ao_num
|
||||
num_B = ao_nucl(i)
|
||||
power_B(1:3) = ao_power(i,1:3)
|
||||
B_center(1:3) = nucl_coord(num_B,1:3)
|
||||
|
||||
do l = 1, ao_prim_num(j)
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
|
||||
do m = 1, ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
|
||||
c = 0.d0
|
||||
do k = 1, nucl_num
|
||||
gama = env_expo(k)
|
||||
C_center(1:3) = nucl_coord(k,1:3)
|
||||
|
||||
! \langle \chi_A | exp[-gama r_C^2] r_C \cdot grad | \chi_B \rangle
|
||||
c1 = int_gauss_deriv( A_center, B_center, C_center &
|
||||
, power_A, power_B, alpha, beta, gama )
|
||||
|
||||
c = c + 2.d0 * gama * c1
|
||||
enddo
|
||||
|
||||
env_gauss_nonherm(i,j) = env_gauss_nonherm(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
elseif(j1b_type .eq. 2) then
|
||||
! \tau_1b = \sum_iA [c_A exp(-alpha_A r_iA^2)]
|
||||
|
||||
!$OMP PARALLEL &
|
||||
!$OMP DEFAULT (NONE) &
|
||||
!$OMP PRIVATE (i, j, k, l, m, alpha, beta, gama, coef, &
|
||||
!$OMP A_center, B_center, C_center, power_A, power_B, &
|
||||
!$OMP num_A, num_B, c1, c) &
|
||||
!$OMP SHARED (ao_num, ao_prim_num, ao_expo_ordered_transp, &
|
||||
!$OMP ao_power, ao_nucl, nucl_coord, &
|
||||
!$OMP ao_coef_normalized_ordered_transp, &
|
||||
!$OMP nucl_num, j1b_pen, j1b_gauss_nonherm, &
|
||||
!$OMP j1b_coeff)
|
||||
!$OMP DO SCHEDULE (dynamic)
|
||||
do j = 1, ao_num
|
||||
num_A = ao_nucl(j)
|
||||
power_A(1:3) = ao_power(j,1:3)
|
||||
A_center(1:3) = nucl_coord(num_A,1:3)
|
||||
|
||||
do i = 1, ao_num
|
||||
num_B = ao_nucl(i)
|
||||
power_B(1:3) = ao_power(i,1:3)
|
||||
B_center(1:3) = nucl_coord(num_B,1:3)
|
||||
|
||||
do l = 1, ao_prim_num(j)
|
||||
alpha = ao_expo_ordered_transp(l,j)
|
||||
|
||||
do m = 1, ao_prim_num(i)
|
||||
beta = ao_expo_ordered_transp(m,i)
|
||||
|
||||
c = 0.d0
|
||||
do k = 1, nucl_num
|
||||
gama = j1b_pen (k)
|
||||
coef = j1b_coeff(k)
|
||||
C_center(1:3) = nucl_coord(k,1:3)
|
||||
|
||||
! \langle \chi_A | exp[-gama r_C^2] r_C \cdot grad | \chi_B \rangle
|
||||
c1 = int_gauss_deriv( A_center, B_center, C_center &
|
||||
, power_A, power_B, alpha, beta, gama )
|
||||
|
||||
c = c + 2.d0 * gama * coef * c1
|
||||
enddo
|
||||
|
||||
j1b_gauss_nonherm(i,j) = j1b_gauss_nonherm(i,j) &
|
||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!$OMP END DO
|
||||
!$OMP END PARALLEL
|
||||
|
||||
endif
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
|
|
@ -22,9 +22,6 @@ BEGIN_PROVIDER [ logical, ao_tc_sym_two_e_pot_in_map ]
|
|||
integer :: kk, m, j1, i1, lmax
|
||||
character*(64) :: fmt
|
||||
|
||||
!double precision :: j1b_gauss_coul_debug
|
||||
!integral = j1b_gauss_coul_debug(1,1,1,1)
|
||||
|
||||
integral = ao_tc_sym_two_e_pot(1,1,1,1)
|
||||
|
||||
double precision :: map_mb
|
|
@ -1,6 +1,6 @@
|
|||
! ---
|
||||
|
||||
double precision function j1b_gauss_2e_j1(i, j, k, l)
|
||||
double precision function env_gauss_2e_j1(i, j, k, l)
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
|
@ -36,10 +36,10 @@ double precision function j1b_gauss_2e_j1(i, j, k, l)
|
|||
double precision :: I_center(3), J_center(3), K_center(3), L_center(3)
|
||||
double precision :: ff, gg, cx, cy, cz
|
||||
|
||||
double precision :: j1b_gauss_2e_j1_schwartz
|
||||
double precision :: env_gauss_2e_j1_schwartz
|
||||
|
||||
if( ao_prim_num(i) * ao_prim_num(j) * ao_prim_num(k) * ao_prim_num(l) > 1024 ) then
|
||||
j1b_gauss_2e_j1 = j1b_gauss_2e_j1_schwartz(i, j, k, l)
|
||||
env_gauss_2e_j1 = env_gauss_2e_j1_schwartz(i, j, k, l)
|
||||
return
|
||||
endif
|
||||
|
||||
|
@ -59,7 +59,7 @@ double precision function j1b_gauss_2e_j1(i, j, k, l)
|
|||
L_center(p) = nucl_coord(num_l,p)
|
||||
enddo
|
||||
|
||||
j1b_gauss_2e_j1 = 0.d0
|
||||
env_gauss_2e_j1 = 0.d0
|
||||
|
||||
do p = 1, ao_prim_num(i)
|
||||
coef1 = ao_coef_normalized_ordered_transp(p, i)
|
||||
|
@ -89,18 +89,18 @@ double precision function j1b_gauss_2e_j1(i, j, k, l)
|
|||
, P1_center, P1_new, pp1, fact_p1, p1_inv, iorder_p &
|
||||
, Q1_center, Q1_new, qq1, fact_q1, q1_inv, iorder_q )
|
||||
|
||||
j1b_gauss_2e_j1 = j1b_gauss_2e_j1 + coef4 * ( cx + cy + cz )
|
||||
env_gauss_2e_j1 = env_gauss_2e_j1 + coef4 * ( cx + cy + cz )
|
||||
enddo ! s
|
||||
enddo ! r
|
||||
enddo ! q
|
||||
enddo ! p
|
||||
|
||||
return
|
||||
end function j1b_gauss_2e_j1
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
double precision function j1b_gauss_2e_j1_schwartz(i, j, k, l)
|
||||
double precision function env_gauss_2e_j1_schwartz(i, j, k, l)
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
|
@ -137,8 +137,6 @@ double precision function j1b_gauss_2e_j1_schwartz(i, j, k, l)
|
|||
double precision :: schwartz_ij, thr
|
||||
double precision, allocatable :: schwartz_kl(:,:)
|
||||
|
||||
PROVIDE j1b_pen
|
||||
|
||||
dim1 = n_pt_max_integrals
|
||||
thr = ao_integrals_threshold * ao_integrals_threshold
|
||||
|
||||
|
@ -186,8 +184,7 @@ double precision function j1b_gauss_2e_j1_schwartz(i, j, k, l)
|
|||
schwartz_kl(0,0) = max( schwartz_kl(0,r) , schwartz_kl(0,0) )
|
||||
enddo
|
||||
|
||||
|
||||
j1b_gauss_2e_j1_schwartz = 0.d0
|
||||
env_gauss_2e_j1_schwartz = 0.d0
|
||||
|
||||
do p = 1, ao_prim_num(i)
|
||||
expo1 = ao_expo_ordered_transp(p, i)
|
||||
|
@ -226,7 +223,7 @@ double precision function j1b_gauss_2e_j1_schwartz(i, j, k, l)
|
|||
, P1_center, P1_new, pp1, fact_p1, p1_inv, iorder_p &
|
||||
, Q1_center, Q1_new, qq1, fact_q1, q1_inv, iorder_q )
|
||||
|
||||
j1b_gauss_2e_j1_schwartz = j1b_gauss_2e_j1_schwartz + coef4 * ( cx + cy + cz )
|
||||
env_gauss_2e_j1_schwartz = env_gauss_2e_j1_schwartz + coef4 * ( cx + cy + cz )
|
||||
enddo ! s
|
||||
enddo ! r
|
||||
enddo ! q
|
||||
|
@ -235,7 +232,7 @@ double precision function j1b_gauss_2e_j1_schwartz(i, j, k, l)
|
|||
deallocate( schwartz_kl )
|
||||
|
||||
return
|
||||
end function j1b_gauss_2e_j1_schwartz
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -263,14 +260,12 @@ subroutine get_cxcycz_j1( dim1, cx, cy, cz &
|
|||
double precision :: general_primitive_integral_erf_shifted
|
||||
double precision :: general_primitive_integral_coul_shifted
|
||||
|
||||
PROVIDE j1b_pen
|
||||
|
||||
cx = 0.d0
|
||||
cy = 0.d0
|
||||
cz = 0.d0
|
||||
do ii = 1, nucl_num
|
||||
|
||||
expoii = j1b_pen(ii)
|
||||
expoii = env_expo(ii)
|
||||
Centerii(1:3) = nucl_coord(ii, 1:3)
|
||||
|
||||
call gaussian_product(pp1, P1_center, expoii, Centerii, factii, pp2, P2_center)
|
|
@ -1,6 +1,6 @@
|
|||
! ---
|
||||
|
||||
double precision function j1b_gauss_2e_j2(i, j, k, l)
|
||||
double precision function env_gauss_2e_j2(i, j, k, l)
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
|
@ -36,12 +36,12 @@ double precision function j1b_gauss_2e_j2(i, j, k, l)
|
|||
double precision :: I_center(3), J_center(3), K_center(3), L_center(3)
|
||||
double precision :: ff, gg, cx, cy, cz
|
||||
|
||||
double precision :: j1b_gauss_2e_j2_schwartz
|
||||
double precision :: env_gauss_2e_j2_schwartz
|
||||
|
||||
dim1 = n_pt_max_integrals
|
||||
|
||||
if( ao_prim_num(i) * ao_prim_num(j) * ao_prim_num(k) * ao_prim_num(l) > 1024 ) then
|
||||
j1b_gauss_2e_j2 = j1b_gauss_2e_j2_schwartz(i, j, k, l)
|
||||
env_gauss_2e_j2 = env_gauss_2e_j2_schwartz(i, j, k, l)
|
||||
return
|
||||
endif
|
||||
|
||||
|
@ -61,7 +61,7 @@ double precision function j1b_gauss_2e_j2(i, j, k, l)
|
|||
L_center(p) = nucl_coord(num_l,p)
|
||||
enddo
|
||||
|
||||
j1b_gauss_2e_j2 = 0.d0
|
||||
env_gauss_2e_j2 = 0.d0
|
||||
|
||||
do p = 1, ao_prim_num(i)
|
||||
coef1 = ao_coef_normalized_ordered_transp(p, i)
|
||||
|
@ -91,18 +91,18 @@ double precision function j1b_gauss_2e_j2(i, j, k, l)
|
|||
, P1_center, P1_new, pp1, fact_p1, p1_inv, iorder_p &
|
||||
, Q1_center, Q1_new, qq1, fact_q1, q1_inv, iorder_q )
|
||||
|
||||
j1b_gauss_2e_j2 = j1b_gauss_2e_j2 + coef4 * ( cx + cy + cz )
|
||||
env_gauss_2e_j2 = env_gauss_2e_j2 + coef4 * ( cx + cy + cz )
|
||||
enddo ! s
|
||||
enddo ! r
|
||||
enddo ! q
|
||||
enddo ! p
|
||||
|
||||
return
|
||||
end function j1b_gauss_2e_j2
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
double precision function j1b_gauss_2e_j2_schwartz(i, j, k, l)
|
||||
double precision function env_gauss_2e_j2_schwartz(i, j, k, l)
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
|
@ -187,7 +187,7 @@ double precision function j1b_gauss_2e_j2_schwartz(i, j, k, l)
|
|||
enddo
|
||||
|
||||
|
||||
j1b_gauss_2e_j2_schwartz = 0.d0
|
||||
env_gauss_2e_j2_schwartz = 0.d0
|
||||
|
||||
do p = 1, ao_prim_num(i)
|
||||
expo1 = ao_expo_ordered_transp(p, i)
|
||||
|
@ -226,7 +226,7 @@ double precision function j1b_gauss_2e_j2_schwartz(i, j, k, l)
|
|||
, P1_center, P1_new, pp1, fact_p1, p1_inv, iorder_p &
|
||||
, Q1_center, Q1_new, qq1, fact_q1, q1_inv, iorder_q )
|
||||
|
||||
j1b_gauss_2e_j2_schwartz = j1b_gauss_2e_j2_schwartz + coef4 * ( cx + cy + cz )
|
||||
env_gauss_2e_j2_schwartz = env_gauss_2e_j2_schwartz + coef4 * ( cx + cy + cz )
|
||||
enddo ! s
|
||||
enddo ! r
|
||||
enddo ! q
|
||||
|
@ -235,7 +235,7 @@ double precision function j1b_gauss_2e_j2_schwartz(i, j, k, l)
|
|||
deallocate( schwartz_kl )
|
||||
|
||||
return
|
||||
end function j1b_gauss_2e_j2_schwartz
|
||||
end
|
||||
|
||||
! ---
|
||||
|
||||
|
@ -263,15 +263,13 @@ subroutine get_cxcycz_j2( dim1, cx, cy, cz &
|
|||
double precision :: general_primitive_integral_erf_shifted
|
||||
double precision :: general_primitive_integral_coul_shifted
|
||||
|
||||
PROVIDE j1b_pen j1b_coeff
|
||||
|
||||
cx = 0.d0
|
||||
cy = 0.d0
|
||||
cz = 0.d0
|
||||
do ii = 1, nucl_num
|
||||
|
||||
expoii = j1b_pen (ii)
|
||||
coefii = j1b_coeff(ii)
|
||||
expoii = env_expo(ii)
|
||||
coefii = env_coef(ii)
|
||||
Centerii(1:3) = nucl_coord(ii, 1:3)
|
||||
|
||||
call gaussian_product(pp1, P1_center, expoii, Centerii, factii, pp2, P2_center)
|
|
@ -174,7 +174,7 @@ double precision function general_primitive_integral_coul_shifted( dim
|
|||
general_primitive_integral_coul_shifted = fact_p * fact_q * accu * pi_5_2 * p_inv * q_inv / dsqrt(p_plus_q)
|
||||
|
||||
return
|
||||
end function general_primitive_integral_coul_shifted
|
||||
end
|
||||
!______________________________________________________________________________________________________________________
|
||||
!______________________________________________________________________________________________________________________
|
||||
|
||||
|
@ -354,7 +354,7 @@ double precision function general_primitive_integral_erf_shifted( dim
|
|||
general_primitive_integral_erf_shifted = fact_p * fact_q * accu * pi_5_2 * p_inv * q_inv / dsqrt(p_plus_q)
|
||||
|
||||
return
|
||||
end function general_primitive_integral_erf_shifted
|
||||
end
|
||||
!______________________________________________________________________________________________________________________
|
||||
!______________________________________________________________________________________________________________________
|
||||
|
||||
|
@ -362,3 +362,48 @@ end function general_primitive_integral_erf_shifted
|
|||
|
||||
|
||||
|
||||
|
||||
! ---
|
||||
|
||||
subroutine inv_r_times_poly(r, dist_r, dist_vec, poly)
|
||||
|
||||
BEGIN_DOC
|
||||
!
|
||||
! returns
|
||||
!
|
||||
! poly(1) = x / sqrt(x^2+y^2+z^2), poly(2) = y / sqrt(x^2+y^2+z^2), poly(3) = z / sqrt(x^2+y^2+z^2)
|
||||
!
|
||||
! with the arguments
|
||||
!
|
||||
! r(1) = x, r(2) = y, r(3) = z, dist_r = sqrt(x^2+y^2+z^2)
|
||||
!
|
||||
! dist_vec(1) = sqrt(y^2+z^2), dist_vec(2) = sqrt(x^2+z^2), dist_vec(3) = sqrt(x^2+y^2)
|
||||
!
|
||||
END_DOC
|
||||
|
||||
implicit none
|
||||
double precision, intent(in) :: r(3), dist_r, dist_vec(3)
|
||||
double precision, intent(out) :: poly(3)
|
||||
integer :: i
|
||||
double precision :: inv_dist
|
||||
|
||||
if (dist_r .gt. 1.d-8)then
|
||||
inv_dist = 1.d0/dist_r
|
||||
do i = 1, 3
|
||||
poly(i) = r(i) * inv_dist
|
||||
enddo
|
||||
else
|
||||
do i = 1, 3
|
||||
if(dabs(r(i)).lt.dist_vec(i)) then
|
||||
inv_dist = 1.d0/dist_r
|
||||
poly(i) = r(i) * inv_dist
|
||||
else
|
||||
poly(i) = 1.d0
|
||||
endif
|
||||
enddo
|
||||
endif
|
||||
|
||||
end
|
||||
|
||||
! ---
|
||||
|
|
@ -12,7 +12,7 @@ This basis set correction relies mainy on :
|
|||
When HF is a qualitative representation of the electron pairs (i.e. weakly correlated systems), such an approach for \mu(r) is OK.
|
||||
See for instance JPCL, 10, 2931-2937 (2019) for typical flavours of the results.
|
||||
Thanks to the trivial nature of such a two-body rdm, the equation (22) of J. Chem. Phys. 149, 194301 (2018) can be rewritten in a very efficient way, and therefore the limiting factor of such an approach is the AO->MO four-index transformation of the two-electron integrals.
|
||||
b) "mu_of_r_potential = cas_ful" uses the two-body rdm of CAS-like wave function (i.e. linear combination of Slater determinants developped in an active space with the MOs stored in the EZFIO folder).
|
||||
b) "mu_of_r_potential = cas_full" uses the two-body rdm of CAS-like wave function (i.e. linear combination of Slater determinants developped in an active space with the MOs stored in the EZFIO folder).
|
||||
If the CAS is properly chosen (i.e. the CAS-like wave function qualitatively represents the wave function of the systems), then such an approach is OK for \mu(r) even in the case of strong correlation.
|
||||
|
||||
+) The use of DFT correlation functionals with multi-determinant reference (Ecmd). These functionals are originally defined in the RS-DFT framework (see for instance Theor. Chem. Acc.114, 305(2005)) and design to capture short-range correlation effects. A important quantity arising in the Ecmd is the exact on-top pair density of the system, and the main differences of approximated Ecmd relies on different approximations for the exact on-top pair density.
|
|
@ -39,7 +39,7 @@
|
|||
grad_rho_a(1:3) = one_e_dm_and_grad_alpha_in_r(1:3,ipoint,istate)
|
||||
grad_rho_b(1:3) = one_e_dm_and_grad_beta_in_r(1:3,ipoint,istate)
|
||||
|
||||
if(mu_of_r_potential == "cas_ful")then
|
||||
if(mu_of_r_potential == "cas_full")then
|
||||
! You take the on-top of the CAS wave function which is computed with mu(r)
|
||||
on_top = on_top_cas_mu_r(ipoint,istate)
|
||||
else
|
||||
|
@ -101,7 +101,7 @@
|
|||
grad_rho_a(1:3) = one_e_dm_and_grad_alpha_in_r(1:3,ipoint,istate)
|
||||
grad_rho_b(1:3) = one_e_dm_and_grad_beta_in_r(1:3,ipoint,istate)
|
||||
|
||||
if(mu_of_r_potential == "cas_ful")then
|
||||
if(mu_of_r_potential == "cas_full")then
|
||||
! You take the on-top of the CAS wave function which is computed with mu(r)
|
||||
on_top = on_top_cas_mu_r(ipoint,istate)
|
||||
else
|
||||
|
@ -163,7 +163,7 @@
|
|||
grad_rho_a(1:3) = one_e_dm_and_grad_alpha_in_r(1:3,ipoint,istate)
|
||||
grad_rho_b(1:3) = one_e_dm_and_grad_beta_in_r(1:3,ipoint,istate)
|
||||
|
||||
if(mu_of_r_potential == "cas_ful")then
|
||||
if(mu_of_r_potential == "cas_full")then
|
||||
! You take the on-top of the CAS wave function which is computed with mu(r)
|
||||
on_top = on_top_cas_mu_r(ipoint,istate)
|
||||
else
|
|
@ -4,8 +4,8 @@ subroutine print_basis_correction
|
|||
provide mu_average_prov
|
||||
if(mu_of_r_potential.EQ."hf")then
|
||||
provide ecmd_lda_mu_of_r ecmd_pbe_ueg_mu_of_r
|
||||
else if(mu_of_r_potential.EQ."cas_ful".or.mu_of_r_potential.EQ."cas_truncated")then
|
||||
provide ecmd_lda_mu_of_r ecmd_pbe_ueg_mu_of_r
|
||||
else if(mu_of_r_potential.EQ."cas_full".or.mu_of_r_potential.EQ."cas_truncated")then
|
||||
provide ecmd_lda_mu_of_r ecmd_pbe_ueg_mu_of_r
|
||||
provide ecmd_pbe_on_top_mu_of_r ecmd_pbe_on_top_su_mu_of_r
|
||||
endif
|
||||
|
||||
|
@ -25,7 +25,7 @@ subroutine print_basis_correction
|
|||
if(mu_of_r_potential.EQ."hf")then
|
||||
print*, ''
|
||||
print*,'Using a HF-like two-body density to define mu(r)'
|
||||
print*,'This assumes that HF is a qualitative representation of the wave function '
|
||||
print*,'This assumes that HF is a qualitative representation of the wave function '
|
||||
print*,'********************************************'
|
||||
print*,'Functionals more suited for weak correlation'
|
||||
print*,'********************************************'
|
||||
|
@ -38,10 +38,10 @@ subroutine print_basis_correction
|
|||
write(*, '(A29,X,I3,X,A3,X,F16.10)') ' ECMD PBE-UEG , state ',istate,' = ',ecmd_pbe_ueg_mu_of_r(istate)
|
||||
enddo
|
||||
|
||||
else if(mu_of_r_potential.EQ."cas_ful".or.mu_of_r_potential.EQ."cas_truncated".or.mu_of_r_potential.EQ."pure_act")then
|
||||
else if(mu_of_r_potential.EQ."cas_full".or.mu_of_r_potential.EQ."cas_truncated".or.mu_of_r_potential.EQ."pure_act")then
|
||||
print*, ''
|
||||
print*,'Using a CAS-like two-body density to define mu(r)'
|
||||
print*,'This assumes that the CAS is a qualitative representation of the wave function '
|
||||
print*,'This assumes that the CAS is a qualitative representation of the wave function '
|
||||
print*,'********************************************'
|
||||
print*,'Functionals more suited for weak correlation'
|
||||
print*,'********************************************'
|
||||
|
@ -56,14 +56,14 @@ subroutine print_basis_correction
|
|||
print*,''
|
||||
print*,'********************************************'
|
||||
print*,'********************************************'
|
||||
print*,'+) PBE-on-top Ecmd functional : JCP, 152, 174104 (2020) '
|
||||
print*,'+) PBE-on-top Ecmd functional : JCP, 152, 174104 (2020) '
|
||||
print*,'PBE at mu=0, extrapolated ontop pair density at large mu, usual spin-polarization'
|
||||
do istate = 1, N_states
|
||||
write(*, '(A29,X,I3,X,A3,X,F16.10)') ' ECMD PBE-OT , state ',istate,' = ',ecmd_pbe_on_top_mu_of_r(istate)
|
||||
enddo
|
||||
print*,''
|
||||
print*,'********************************************'
|
||||
print*,'+) PBE-on-top no spin polarization Ecmd functional : JCP, 152, 174104 (2020)'
|
||||
print*,'+) PBE-on-top no spin polarization Ecmd functional : JCP, 152, 174104 (2020)'
|
||||
print*,'PBE at mu=0, extrapolated ontop pair density at large mu, and ZERO SPIN POLARIZATION'
|
||||
do istate = 1, N_states
|
||||
write(*, '(A29,X,I3,X,A3,X,F16.10)') ' ECMD SU-PBE-OT , state ',istate,' = ',ecmd_pbe_on_top_su_mu_of_r(istate)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user