mirror of
https://github.com/LCPQ/quantum_package
synced 2024-08-24 21:41:46 +02:00
Merge branch 'master' of https://github.com/garniron/quantum_package into garniron-master
This commit is contained in:
commit
f5dbaaf452
@ -24,6 +24,7 @@ addons:
|
|||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- $HOME/.opam/
|
- $HOME/.opam/
|
||||||
|
- $HOME/lapack-release
|
||||||
|
|
||||||
language: python
|
language: python
|
||||||
python:
|
python:
|
||||||
|
@ -40,9 +40,9 @@ Demo
|
|||||||
|
|
||||||
### 1) Configure
|
### 1) Configure
|
||||||
|
|
||||||
$ ./configure <config_file>
|
$ ./configure.py <config_file>
|
||||||
|
|
||||||
For example you can type `./configure config/gfortran.cfg`
|
For example you can type `./configure.py config/gfortran.cfg`
|
||||||
|
|
||||||
This command has two purposes :
|
This command has two purposes :
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ OPENMP : 1 ; Append OpenMP flags
|
|||||||
#
|
#
|
||||||
[OPT]
|
[OPT]
|
||||||
FC : -traceback
|
FC : -traceback
|
||||||
FCFLAGS : -xSSE4.2 -O2 -ip -ftz -g
|
FCFLAGS : -xAVX -O2 -ip -ftz -g
|
||||||
|
|
||||||
# Profiling flags
|
# Profiling flags
|
||||||
#################
|
#################
|
||||||
|
@ -31,8 +31,8 @@ OPENMP : 1 ; Append OpenMP flags
|
|||||||
# -ftz : Flushes denormal results to zero
|
# -ftz : Flushes denormal results to zero
|
||||||
#
|
#
|
||||||
[OPT]
|
[OPT]
|
||||||
FCFLAGS : -xAVX -O2 -ip -ftz -g -traceback
|
FCFLAGS : -xSSE4.2 -O2 -ip -ftz -g -traceback
|
||||||
|
# !xAVX
|
||||||
# Profiling flags
|
# Profiling flags
|
||||||
#################
|
#################
|
||||||
#
|
#
|
||||||
|
4
configure
vendored
4
configure
vendored
@ -247,7 +247,7 @@ def checking(d_dependency):
|
|||||||
version = check_output("irpf90 -v".split()).strip()
|
version = check_output("irpf90 -v".split()).strip()
|
||||||
|
|
||||||
from distutils.version import LooseVersion
|
from distutils.version import LooseVersion
|
||||||
if LooseVersion(version) < LooseVersion("1.6.7"):
|
if LooseVersion(version) < LooseVersion("1.7.2"):
|
||||||
return 0
|
return 0
|
||||||
else:
|
else:
|
||||||
return a
|
return a
|
||||||
@ -502,7 +502,7 @@ def create_ninja_and_rc(l_installed):
|
|||||||
'export LIBRARY_PATH=$(qp_prepend_export "LIBRARY_PATH" "${QP_ROOT}"/lib:"${QP_ROOT}"/lib64)',
|
'export LIBRARY_PATH=$(qp_prepend_export "LIBRARY_PATH" "${QP_ROOT}"/lib:"${QP_ROOT}"/lib64)',
|
||||||
'export C_INCLUDE_PATH=$(qp_prepend_export "C_INCLUDE_PATH" "${QP_ROOT}"/include)',
|
'export C_INCLUDE_PATH=$(qp_prepend_export "C_INCLUDE_PATH" "${QP_ROOT}"/include)',
|
||||||
'',
|
'',
|
||||||
'if [[ $SHELL == "bash" ]] ; then',
|
'if [[ $SHELL == "/bin/bash" ]] ; then',
|
||||||
' source ${QP_ROOT}/install/EZFIO/Bash/ezfio.sh',
|
' source ${QP_ROOT}/install/EZFIO/Bash/ezfio.sh',
|
||||||
'fi',
|
'fi',
|
||||||
'',
|
'',
|
||||||
|
956
data/basis/av5z-bfd
Normal file
956
data/basis/av5z-bfd
Normal file
@ -0,0 +1,956 @@
|
|||||||
|
NEON
|
||||||
|
S 9
|
||||||
|
1 0.205835 0.057514
|
||||||
|
2 0.391384 0.215776
|
||||||
|
3 0.744196 0.374799
|
||||||
|
4 1.415048 0.326313
|
||||||
|
5 2.690638 0.166383
|
||||||
|
6 5.116103 -0.039149
|
||||||
|
7 9.727994 -0.085909
|
||||||
|
8 18.497256 0.006816
|
||||||
|
9 35.171534 0.000206
|
||||||
|
S 1
|
||||||
|
1 0.318678 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.830178 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.591904 1.000000
|
||||||
|
S 1
|
||||||
|
1 2.744999 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.121772 0.029943
|
||||||
|
2 0.238248 0.114200
|
||||||
|
3 0.466136 0.219618
|
||||||
|
4 0.912002 0.268864
|
||||||
|
5 1.784344 0.256932
|
||||||
|
6 3.491095 0.191378
|
||||||
|
7 6.830378 0.112176
|
||||||
|
8 13.363732 0.063317
|
||||||
|
9 26.146332 0.008057
|
||||||
|
P 1
|
||||||
|
1 0.218226 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.636921 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.888191 1.000000
|
||||||
|
P 1
|
||||||
|
1 3.020108 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.654924 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.931502 1.000000
|
||||||
|
D 1
|
||||||
|
1 5.027566 1.000000
|
||||||
|
D 1
|
||||||
|
1 6.989700 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.314297 1.000000
|
||||||
|
F 1
|
||||||
|
1 4.065928 1.000000
|
||||||
|
F 1
|
||||||
|
1 5.587487 1.000000
|
||||||
|
G 1
|
||||||
|
1 2.070925 1.000000
|
||||||
|
G 1
|
||||||
|
1 6.073107 1.000000
|
||||||
|
H 1
|
||||||
|
1 3.743118 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0957000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0654000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.2130000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.4250000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.8090000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 1.6280000 1.0000000
|
||||||
|
|
||||||
|
BORON
|
||||||
|
S 9
|
||||||
|
1 0.040569 0.032031
|
||||||
|
2 0.081044 0.243317
|
||||||
|
3 0.161898 0.434636
|
||||||
|
4 0.323418 0.329581
|
||||||
|
5 0.646080 0.111875
|
||||||
|
6 1.290648 -0.078699
|
||||||
|
7 2.578276 -0.098781
|
||||||
|
8 5.150520 0.016164
|
||||||
|
9 10.288990 -0.000016
|
||||||
|
S 1
|
||||||
|
1 0.070664 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.170896 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.375720 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.614105 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.029207 0.019909
|
||||||
|
2 0.058408 0.141775
|
||||||
|
3 0.116803 0.294463
|
||||||
|
4 0.233582 0.309028
|
||||||
|
5 0.467115 0.236378
|
||||||
|
6 0.934132 0.131317
|
||||||
|
7 1.868068 0.066454
|
||||||
|
8 3.735743 0.021248
|
||||||
|
9 7.470701 0.002837
|
||||||
|
P 1
|
||||||
|
1 0.057917 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.143772 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.436327 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.566611 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.134838 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.380163 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.808233 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.022256 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.272717 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.799174 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.002171 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.486131 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.824366 1.000000
|
||||||
|
H 1
|
||||||
|
1 0.632779 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0261000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0157000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0431000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0843000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.2020000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 0.3840000 1.0000000
|
||||||
|
|
||||||
|
ALUMINUM
|
||||||
|
S 9
|
||||||
|
1 0.045518 0.206193
|
||||||
|
2 0.100308 0.559887
|
||||||
|
3 0.221051 0.407852
|
||||||
|
4 0.487132 -0.041098
|
||||||
|
5 1.073500 -0.238652
|
||||||
|
6 2.365686 0.038132
|
||||||
|
7 5.213294 -0.003935
|
||||||
|
8 11.488606 0.000470
|
||||||
|
9 25.317597 -0.000014
|
||||||
|
S 1
|
||||||
|
1 0.056415 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.155063 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.332041 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.725343 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.014848 0.009932
|
||||||
|
2 0.030967 0.160212
|
||||||
|
3 0.064586 0.389171
|
||||||
|
4 0.134700 0.373235
|
||||||
|
5 0.280932 0.195800
|
||||||
|
6 0.585913 0.022947
|
||||||
|
7 1.221985 -0.053293
|
||||||
|
8 2.548578 0.004846
|
||||||
|
9 5.315330 -0.000726
|
||||||
|
P 1
|
||||||
|
1 0.033949 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.083154 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.251360 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.314422 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.088651 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.241216 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.575129 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.989127 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.148598 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.374850 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.781006 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.259548 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.561381 1.000000
|
||||||
|
H 1
|
||||||
|
1 0.328731 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0177000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0115000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0294000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0509000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.1069000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 0.2270000 1.0000000
|
||||||
|
|
||||||
|
NITROGEN
|
||||||
|
S 9
|
||||||
|
1 0.098869 0.067266
|
||||||
|
2 0.211443 0.334290
|
||||||
|
3 0.452197 0.454257
|
||||||
|
4 0.967080 0.267861
|
||||||
|
5 2.068221 0.000248
|
||||||
|
6 4.423150 -0.132606
|
||||||
|
7 9.459462 0.014437
|
||||||
|
8 20.230246 0.000359
|
||||||
|
9 43.264919 -0.000094
|
||||||
|
S 1
|
||||||
|
1 0.115320 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.286632 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.702011 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.532221 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.073234 0.035758
|
||||||
|
2 0.145867 0.153945
|
||||||
|
3 0.290535 0.277656
|
||||||
|
4 0.578683 0.297676
|
||||||
|
5 1.152612 0.234403
|
||||||
|
6 2.295756 0.140321
|
||||||
|
7 4.572652 0.067219
|
||||||
|
8 9.107739 0.031594
|
||||||
|
9 18.140657 0.003301
|
||||||
|
P 1
|
||||||
|
1 0.120601 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.322697 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.978538 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.272759 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.305579 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.891436 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.542532 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.798122 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.587676 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.592967 1.000000
|
||||||
|
F 1
|
||||||
|
1 2.443045 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.038637 1.000000
|
||||||
|
G 1
|
||||||
|
1 2.842018 1.000000
|
||||||
|
H 1
|
||||||
|
1 2.272542 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0518000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0369000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0971000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.1920000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.4360000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 0.7880000 1.0000000
|
||||||
|
|
||||||
|
FLUORINE
|
||||||
|
S 9
|
||||||
|
1 0.172723 0.070240
|
||||||
|
2 0.364875 0.311088
|
||||||
|
3 0.770795 0.444675
|
||||||
|
4 1.628295 0.287011
|
||||||
|
5 3.439757 0.018759
|
||||||
|
6 7.266451 -0.128608
|
||||||
|
7 15.350300 0.009104
|
||||||
|
8 32.427348 0.000810
|
||||||
|
9 68.502433 -0.000133
|
||||||
|
S 1
|
||||||
|
1 0.191146 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.459697 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.250265 1.000000
|
||||||
|
S 1
|
||||||
|
1 2.542428 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.101001 0.035321
|
||||||
|
2 0.204414 0.136924
|
||||||
|
3 0.413707 0.249353
|
||||||
|
4 0.837289 0.286620
|
||||||
|
5 1.694565 0.254541
|
||||||
|
6 3.429580 0.169572
|
||||||
|
7 6.941026 0.088542
|
||||||
|
8 14.047737 0.039843
|
||||||
|
9 28.430799 0.003378
|
||||||
|
P 1
|
||||||
|
1 0.170574 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.489019 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.505085 1.000000
|
||||||
|
P 1
|
||||||
|
1 2.018698 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.517711 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.523306 1.000000
|
||||||
|
D 1
|
||||||
|
1 3.901897 1.000000
|
||||||
|
D 1
|
||||||
|
1 5.603581 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.981494 1.000000
|
||||||
|
F 1
|
||||||
|
1 2.950321 1.000000
|
||||||
|
F 1
|
||||||
|
1 4.297889 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.638933 1.000000
|
||||||
|
G 1
|
||||||
|
1 4.619953 1.000000
|
||||||
|
H 1
|
||||||
|
1 2.963127 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0806000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0550000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1720000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.3310000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.6630000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 1.3260000 1.0000000
|
||||||
|
|
||||||
|
CHLORINE
|
||||||
|
S 9
|
||||||
|
1 0.119944 0.148917
|
||||||
|
2 0.257348 0.503616
|
||||||
|
3 0.552157 0.523995
|
||||||
|
4 1.184691 0.013612
|
||||||
|
5 2.541836 -0.328846
|
||||||
|
6 5.453681 0.056309
|
||||||
|
7 11.701243 -0.001301
|
||||||
|
8 25.105812 -0.000294
|
||||||
|
9 53.866226 0.000076
|
||||||
|
S 1
|
||||||
|
1 0.152049 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.639110 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.801438 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.671380 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.074374 0.084925
|
||||||
|
2 0.155084 0.270658
|
||||||
|
3 0.323378 0.396022
|
||||||
|
4 0.674303 0.324325
|
||||||
|
5 1.406043 0.100661
|
||||||
|
6 2.931855 -0.069802
|
||||||
|
7 6.113450 -0.000951
|
||||||
|
8 12.747651 0.001501
|
||||||
|
9 26.581165 -0.000249
|
||||||
|
P 1
|
||||||
|
1 0.103926 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.275582 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.667436 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.171614 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.237419 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.729517 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.924049 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.522182 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.335123 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.789116 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.609975 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.576133 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.402971 1.000000
|
||||||
|
H 1
|
||||||
|
1 1.099609 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0479000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0348000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1003000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.1640000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.2770000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 0.6070000 1.0000000
|
||||||
|
|
||||||
|
CARBON
|
||||||
|
S 9
|
||||||
|
1 0.051344 0.013991
|
||||||
|
2 0.102619 0.169852
|
||||||
|
3 0.205100 0.397529
|
||||||
|
4 0.409924 0.380369
|
||||||
|
5 0.819297 0.180113
|
||||||
|
6 1.637494 -0.033512
|
||||||
|
7 3.272791 -0.121499
|
||||||
|
8 6.541187 0.015176
|
||||||
|
9 13.073594 -0.000705
|
||||||
|
S 1
|
||||||
|
1 0.098302 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.232034 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.744448 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.009914 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.029281 0.001787
|
||||||
|
2 0.058547 0.050426
|
||||||
|
3 0.117063 0.191634
|
||||||
|
4 0.234064 0.302667
|
||||||
|
5 0.468003 0.289868
|
||||||
|
6 0.935757 0.210979
|
||||||
|
7 1.871016 0.112024
|
||||||
|
8 3.741035 0.054425
|
||||||
|
9 7.480076 0.021931
|
||||||
|
P 1
|
||||||
|
1 0.084047 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.216618 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.576869 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.006252 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.206619 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.606933 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.001526 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.504882 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.400573 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.099564 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.501091 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.797648 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.401343 1.000000
|
||||||
|
H 1
|
||||||
|
1 1.001703 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0394000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0272000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0701000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.1380000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.3190000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 0.5860000 1.0000000
|
||||||
|
|
||||||
|
OXYGEN
|
||||||
|
S 9
|
||||||
|
1 0.125346 0.055741
|
||||||
|
2 0.268022 0.304848
|
||||||
|
3 0.573098 0.453752
|
||||||
|
4 1.225429 0.295926
|
||||||
|
5 2.620277 0.019567
|
||||||
|
6 5.602818 -0.128627
|
||||||
|
7 11.980245 0.012024
|
||||||
|
8 25.616801 0.000407
|
||||||
|
9 54.775216 -0.000076
|
||||||
|
S 1
|
||||||
|
1 0.160664 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.384526 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.935157 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.937532 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.083598 0.044958
|
||||||
|
2 0.167017 0.150175
|
||||||
|
3 0.333673 0.255999
|
||||||
|
4 0.666627 0.281879
|
||||||
|
5 1.331816 0.242835
|
||||||
|
6 2.660761 0.161134
|
||||||
|
7 5.315785 0.082308
|
||||||
|
8 10.620108 0.039899
|
||||||
|
9 21.217318 0.004679
|
||||||
|
P 1
|
||||||
|
1 0.130580 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.372674 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.178227 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.589967 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.401152 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.174596 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.823972 1.000000
|
||||||
|
D 1
|
||||||
|
1 4.292433 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.708666 1.000000
|
||||||
|
F 1
|
||||||
|
1 2.006788 1.000000
|
||||||
|
F 1
|
||||||
|
1 3.223721 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.207657 1.000000
|
||||||
|
G 1
|
||||||
|
1 3.584495 1.000000
|
||||||
|
H 1
|
||||||
|
1 2.615818 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0655000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0446000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1310000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.2370000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.5170000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 1.0240000 1.0000000
|
||||||
|
|
||||||
|
HYDROGEN
|
||||||
|
S 9
|
||||||
|
1 0.013000 0.000706
|
||||||
|
2 0.029900 -0.002119
|
||||||
|
3 0.068770 0.057693
|
||||||
|
4 0.158170 0.230695
|
||||||
|
5 0.363792 0.277612
|
||||||
|
6 0.836721 0.169833
|
||||||
|
7 1.924458 0.097443
|
||||||
|
8 4.426254 0.029966
|
||||||
|
9 10.180385 -0.000452
|
||||||
|
S 1
|
||||||
|
1 0.122344 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.402892 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.715047 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.379838 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.003000 0.001242
|
||||||
|
2 0.007800 -0.000913
|
||||||
|
3 0.020281 -0.000054
|
||||||
|
4 0.052730 -0.000238
|
||||||
|
5 0.137097 -0.011530
|
||||||
|
6 0.356451 -0.018235
|
||||||
|
7 0.926774 -0.013929
|
||||||
|
8 2.409612 -0.009395
|
||||||
|
9 6.264991 -0.000347
|
||||||
|
P 1
|
||||||
|
1 0.784765 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.173606 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.513665 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.917388 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.466379 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.132171 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.649608 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.793185 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.606813 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0207000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0744000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1560000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.2740000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.5430000 1.0000000
|
||||||
|
|
||||||
|
PHOSPHORUS
|
||||||
|
S 9
|
||||||
|
1 0.074718 0.140225
|
||||||
|
2 0.160834 0.506746
|
||||||
|
3 0.346202 0.499893
|
||||||
|
4 0.745215 0.037301
|
||||||
|
5 1.604109 -0.284591
|
||||||
|
6 3.452917 0.024766
|
||||||
|
7 7.432561 0.001798
|
||||||
|
8 15.998924 -0.000314
|
||||||
|
9 34.438408 0.000088
|
||||||
|
S 1
|
||||||
|
1 0.082092 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.195525 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.434767 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.027573 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.050242 0.072095
|
||||||
|
2 0.102391 0.278735
|
||||||
|
3 0.208669 0.411034
|
||||||
|
4 0.425256 0.304724
|
||||||
|
5 0.866651 0.091727
|
||||||
|
6 1.766191 -0.057060
|
||||||
|
7 3.599410 -0.005103
|
||||||
|
8 7.335418 0.000328
|
||||||
|
9 14.949217 -0.000046
|
||||||
|
P 1
|
||||||
|
1 0.074159 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.189382 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.470798 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.815677 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.167800 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.457307 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.021650 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.598720 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.214751 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.482380 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.984966 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.406484 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.924507 1.000000
|
||||||
|
H 1
|
||||||
|
1 0.831913 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0335000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0253000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0624000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0950000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.1840000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 0.3720000 1.0000000
|
||||||
|
|
||||||
|
SILICON
|
||||||
|
S 9
|
||||||
|
1 0.059887 0.167492
|
||||||
|
2 0.130108 0.532550
|
||||||
|
3 0.282668 0.464290
|
||||||
|
4 0.614115 -0.002322
|
||||||
|
5 1.334205 -0.268234
|
||||||
|
6 2.898645 0.031921
|
||||||
|
7 6.297493 -0.000106
|
||||||
|
8 13.681707 -0.000145
|
||||||
|
9 29.724387 0.000067
|
||||||
|
S 1
|
||||||
|
1 0.075500 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.196459 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.424036 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.920486 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.036525 0.078761
|
||||||
|
2 0.076137 0.308331
|
||||||
|
3 0.158712 0.417773
|
||||||
|
4 0.330843 0.281676
|
||||||
|
5 0.689658 0.069876
|
||||||
|
6 1.437625 -0.056306
|
||||||
|
7 2.996797 0.000744
|
||||||
|
8 6.246966 -0.000259
|
||||||
|
9 13.022097 -0.000022
|
||||||
|
P 1
|
||||||
|
1 0.048136 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.115813 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.238594 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.496918 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.127945 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.353096 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.805426 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.247695 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.172876 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.402208 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.833081 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.299885 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.647054 1.000000
|
||||||
|
H 1
|
||||||
|
1 0.557542 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0260000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0192000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0468000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0735000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.1510000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 0.3230000 1.0000000
|
||||||
|
|
||||||
|
ARGON
|
||||||
|
S 9
|
||||||
|
1 0.147347 0.155473
|
||||||
|
2 0.312164 0.494617
|
||||||
|
3 0.661339 0.526705
|
||||||
|
4 1.401090 0.021986
|
||||||
|
5 2.968301 -0.338533
|
||||||
|
6 6.288539 0.056023
|
||||||
|
7 13.322677 -0.000115
|
||||||
|
8 28.224956 -0.000595
|
||||||
|
9 59.796402 0.000127
|
||||||
|
S 1
|
||||||
|
1 0.189594 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.778040 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.971266 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.979612 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.090580 0.079101
|
||||||
|
2 0.188085 0.260718
|
||||||
|
3 0.390548 0.395065
|
||||||
|
4 0.810953 0.334954
|
||||||
|
5 1.683902 0.107462
|
||||||
|
6 3.496535 -0.073657
|
||||||
|
7 7.260371 -0.001407
|
||||||
|
8 15.075781 0.001710
|
||||||
|
9 31.304069 -0.000275
|
||||||
|
P 1
|
||||||
|
1 0.133916 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.356186 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.833562 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.430927 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.268113 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.697753 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.185366 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.118102 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.422461 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.973776 1.000000
|
||||||
|
F 1
|
||||||
|
1 2.020616 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.695217 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.690111 1.000000
|
||||||
|
H 1
|
||||||
|
1 1.258944 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0538000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0402000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1210000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.2090000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.3340000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 0.7420000 1.0000000
|
||||||
|
|
||||||
|
SULFUR
|
||||||
|
S 9
|
||||||
|
1 0.095120 0.140074
|
||||||
|
2 0.202385 0.490942
|
||||||
|
3 0.430611 0.515297
|
||||||
|
4 0.916203 0.050320
|
||||||
|
5 1.949388 -0.298908
|
||||||
|
6 4.147674 0.019827
|
||||||
|
7 8.824926 0.007266
|
||||||
|
8 18.776623 -0.001602
|
||||||
|
9 39.950656 0.000271
|
||||||
|
S 1
|
||||||
|
1 0.113918 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.282790 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.626702 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.338226 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.057087 0.081938
|
||||||
|
2 0.115901 0.251826
|
||||||
|
3 0.235305 0.376344
|
||||||
|
4 0.477723 0.320902
|
||||||
|
5 0.969889 0.143779
|
||||||
|
6 1.969099 -0.045543
|
||||||
|
7 3.997726 -0.017191
|
||||||
|
8 8.116307 0.002580
|
||||||
|
9 16.477979 -0.000222
|
||||||
|
P 1
|
||||||
|
1 0.079101 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.210632 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.522537 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.924454 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.186546 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.462328 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.955579 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.334308 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.274343 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.661568 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.389533 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.486698 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.166495 1.000000
|
||||||
|
H 1
|
||||||
|
1 0.839494 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0420000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0294000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0794000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.1188000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.2200000 1.0000000
|
||||||
|
H 1
|
||||||
|
1 0.4720000 1.0000000
|
||||||
|
|
||||||
|
HELIUM
|
||||||
|
S 9
|
||||||
|
1 0.077786 0.012425
|
||||||
|
2 0.161528 0.128251
|
||||||
|
3 0.335425 0.282221
|
||||||
|
4 0.696535 0.292427
|
||||||
|
5 1.446408 0.215025
|
||||||
|
6 3.003576 0.125450
|
||||||
|
7 6.237154 0.064912
|
||||||
|
8 12.951926 0.038892
|
||||||
|
9 26.895662 0.002531
|
||||||
|
S 1
|
||||||
|
1 1.324312 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.876976 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.294075 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.116506 1.000000
|
||||||
|
P 8
|
||||||
|
1 0.228528 -0.000116
|
||||||
|
2 0.422019 2.116950
|
||||||
|
3 0.779333 -2.182954
|
||||||
|
4 1.439180 1.545850
|
||||||
|
5 2.657706 -0.879477
|
||||||
|
6 4.907934 0.469710
|
||||||
|
7 9.063386 -0.224631
|
||||||
|
8 16.737180 0.098422
|
||||||
|
P 1
|
||||||
|
1 6.741009 1.000000
|
||||||
|
P 1
|
||||||
|
1 2.647340 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.893850 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.842278 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.175208 1.000000
|
||||||
|
D 1
|
||||||
|
1 4.285515 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.749734 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.632074 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.623669 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0466400 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.1400000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.2892000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.5345000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.7899000 1.0000000
|
||||||
|
|
||||||
|
|
804
data/basis/avdz-bfd
Normal file
804
data/basis/avdz-bfd
Normal file
@ -0,0 +1,804 @@
|
|||||||
|
ARSENIC
|
||||||
|
S 9
|
||||||
|
1 0.079412 0.192043
|
||||||
|
2 0.178687 0.611682
|
||||||
|
3 0.402068 0.439261
|
||||||
|
4 0.904702 -0.110280
|
||||||
|
5 2.035691 -0.394179
|
||||||
|
6 4.580555 0.145632
|
||||||
|
7 10.306811 -0.021379
|
||||||
|
8 23.191593 0.003205
|
||||||
|
9 52.183937 -0.000469
|
||||||
|
S 1
|
||||||
|
1 0.051480 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.050626 0.105058
|
||||||
|
2 0.108692 0.361819
|
||||||
|
3 0.233354 0.452107
|
||||||
|
4 0.500995 0.231243
|
||||||
|
5 1.075603 -0.009549
|
||||||
|
6 2.309248 -0.121767
|
||||||
|
7 4.957802 0.028648
|
||||||
|
8 10.644071 -0.002941
|
||||||
|
9 22.852115 0.000293
|
||||||
|
P 1
|
||||||
|
1 0.095623 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.297652 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0411520 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0312680 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1078000 1.0000000
|
||||||
|
|
||||||
|
LITHIUM
|
||||||
|
S 9
|
||||||
|
1 0.010125 0.007841
|
||||||
|
2 0.023437 0.258118
|
||||||
|
3 0.054251 0.423307
|
||||||
|
4 0.125581 0.167825
|
||||||
|
5 0.290697 -0.068332
|
||||||
|
6 0.672909 -0.119269
|
||||||
|
7 1.557659 0.007736
|
||||||
|
8 3.605689 0.003630
|
||||||
|
9 8.346494 -0.000646
|
||||||
|
S 1
|
||||||
|
1 0.103721 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.018300 -0.005906
|
||||||
|
2 0.031699 -0.031422
|
||||||
|
3 0.054908 -0.043628
|
||||||
|
4 0.095111 -0.016781
|
||||||
|
5 0.164751 -0.078594
|
||||||
|
6 0.285379 0.015562
|
||||||
|
7 0.494330 -0.030830
|
||||||
|
8 0.856273 0.006185
|
||||||
|
9 1.483225 -0.008621
|
||||||
|
P 1
|
||||||
|
1 0.070391 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.110720 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0086400 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0057900 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0725000 1.0000000
|
||||||
|
|
||||||
|
GERMANIUM
|
||||||
|
S 9
|
||||||
|
1 0.066287 0.213230
|
||||||
|
2 0.150128 0.605570
|
||||||
|
3 0.340013 0.413442
|
||||||
|
4 0.770064 -0.106356
|
||||||
|
5 1.744049 -0.364579
|
||||||
|
6 3.949940 0.127448
|
||||||
|
7 8.945864 -0.017166
|
||||||
|
8 20.260687 0.002454
|
||||||
|
9 45.886614 -0.000355
|
||||||
|
S 1
|
||||||
|
1 0.043781 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.036511 0.098680
|
||||||
|
2 0.080524 0.372290
|
||||||
|
3 0.177593 0.443836
|
||||||
|
4 0.391677 0.232585
|
||||||
|
5 0.863832 0.000058
|
||||||
|
6 1.905157 -0.108282
|
||||||
|
7 4.201772 0.021894
|
||||||
|
8 9.266892 -0.001911
|
||||||
|
9 20.437873 0.000181
|
||||||
|
P 1
|
||||||
|
1 0.074726 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.234278 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0339610 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0239450 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0771000 1.0000000
|
||||||
|
|
||||||
|
NEON
|
||||||
|
S 9
|
||||||
|
1 0.205835 0.057514
|
||||||
|
2 0.391384 0.215776
|
||||||
|
3 0.744196 0.374799
|
||||||
|
4 1.415048 0.326313
|
||||||
|
5 2.690638 0.166383
|
||||||
|
6 5.116103 -0.039149
|
||||||
|
7 9.727994 -0.085909
|
||||||
|
8 18.497256 0.006816
|
||||||
|
9 35.171534 0.000206
|
||||||
|
S 1
|
||||||
|
1 0.455383 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.121772 0.029943
|
||||||
|
2 0.238248 0.114200
|
||||||
|
3 0.466136 0.219618
|
||||||
|
4 0.912002 0.268864
|
||||||
|
5 1.784344 0.256932
|
||||||
|
6 3.491095 0.191378
|
||||||
|
7 6.830378 0.112176
|
||||||
|
8 13.363732 0.063317
|
||||||
|
9 26.146332 0.008057
|
||||||
|
P 1
|
||||||
|
1 0.472224 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.371533 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.1230000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.1064000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.6310000 1.0000000
|
||||||
|
|
||||||
|
BORON
|
||||||
|
S 9
|
||||||
|
1 0.040569 0.032031
|
||||||
|
2 0.081044 0.243317
|
||||||
|
3 0.161898 0.434636
|
||||||
|
4 0.323418 0.329581
|
||||||
|
5 0.646080 0.111875
|
||||||
|
6 1.290648 -0.078699
|
||||||
|
7 2.578276 -0.098781
|
||||||
|
8 5.150520 0.016164
|
||||||
|
9 10.288990 -0.000016
|
||||||
|
S 1
|
||||||
|
1 0.082513 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.029207 0.019909
|
||||||
|
2 0.058408 0.141775
|
||||||
|
3 0.116803 0.294463
|
||||||
|
4 0.233582 0.309028
|
||||||
|
5 0.467115 0.236378
|
||||||
|
6 0.934132 0.131317
|
||||||
|
7 1.868068 0.066454
|
||||||
|
8 3.735743 0.021248
|
||||||
|
9 7.470701 0.002837
|
||||||
|
P 1
|
||||||
|
1 0.086803 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.349879 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0310500 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0237800 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0904000 1.0000000
|
||||||
|
|
||||||
|
GALLIUM
|
||||||
|
S 9
|
||||||
|
1 0.054628 0.253171
|
||||||
|
2 0.123743 0.598295
|
||||||
|
3 0.280299 0.356909
|
||||||
|
4 0.634926 -0.056544
|
||||||
|
5 1.438218 -0.411266
|
||||||
|
6 3.257814 0.156079
|
||||||
|
7 7.379514 -0.025142
|
||||||
|
8 16.715879 0.004089
|
||||||
|
9 37.864367 -0.000622
|
||||||
|
S 1
|
||||||
|
1 0.031898 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.029207 0.759400
|
||||||
|
2 0.064420 -0.022059
|
||||||
|
3 0.142086 0.368252
|
||||||
|
4 0.313389 0.051142
|
||||||
|
5 0.691221 0.036655
|
||||||
|
6 1.524577 -0.078589
|
||||||
|
7 3.362652 0.017781
|
||||||
|
8 7.416764 -0.002498
|
||||||
|
9 16.358632 0.000386
|
||||||
|
P 1
|
||||||
|
1 0.027155 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.182311 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0243480 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0151640 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0537000 1.0000000
|
||||||
|
|
||||||
|
ALUMINUM
|
||||||
|
S 9
|
||||||
|
1 0.045518 0.206193
|
||||||
|
2 0.100308 0.559887
|
||||||
|
3 0.221051 0.407852
|
||||||
|
4 0.487132 -0.041098
|
||||||
|
5 1.073500 -0.238652
|
||||||
|
6 2.365686 0.038132
|
||||||
|
7 5.213294 -0.003935
|
||||||
|
8 11.488606 0.000470
|
||||||
|
9 25.317597 -0.000014
|
||||||
|
S 1
|
||||||
|
1 0.044024 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.014848 0.009932
|
||||||
|
2 0.030967 0.160212
|
||||||
|
3 0.064586 0.389171
|
||||||
|
4 0.134700 0.373235
|
||||||
|
5 0.280932 0.195800
|
||||||
|
6 0.585913 0.022947
|
||||||
|
7 1.221985 -0.053293
|
||||||
|
8 2.548578 0.004846
|
||||||
|
9 5.315330 -0.000726
|
||||||
|
P 1
|
||||||
|
1 0.206631 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.193079 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0231000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0153000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0535000 1.0000000
|
||||||
|
|
||||||
|
MAGNESIUM
|
||||||
|
S 9
|
||||||
|
1 0.030975 0.165290
|
||||||
|
2 0.062959 0.506272
|
||||||
|
3 0.127970 0.333197
|
||||||
|
4 0.260111 0.057482
|
||||||
|
5 0.528700 -0.137614
|
||||||
|
6 1.074630 -0.135378
|
||||||
|
7 2.184285 0.048310
|
||||||
|
8 4.439759 -0.005312
|
||||||
|
9 9.024217 0.000465
|
||||||
|
S 1
|
||||||
|
1 0.162370 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.047055 1.502038
|
||||||
|
2 0.083253 -1.433944
|
||||||
|
3 0.147298 1.318987
|
||||||
|
4 0.260611 -0.741124
|
||||||
|
5 0.461094 0.436300
|
||||||
|
6 0.815803 -0.243798
|
||||||
|
7 1.443383 0.086774
|
||||||
|
8 2.553745 -0.028677
|
||||||
|
9 4.518286 0.006085
|
||||||
|
P 1
|
||||||
|
1 0.121683 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.135526 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0148800 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0093500 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0595000 1.0000000
|
||||||
|
|
||||||
|
NITROGEN
|
||||||
|
S 9
|
||||||
|
1 0.098869 0.067266
|
||||||
|
2 0.211443 0.334290
|
||||||
|
3 0.452197 0.454257
|
||||||
|
4 0.967080 0.267861
|
||||||
|
5 2.068221 0.000248
|
||||||
|
6 4.423150 -0.132606
|
||||||
|
7 9.459462 0.014437
|
||||||
|
8 20.230246 0.000359
|
||||||
|
9 43.264919 -0.000094
|
||||||
|
S 1
|
||||||
|
1 0.175123 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.073234 0.035758
|
||||||
|
2 0.145867 0.153945
|
||||||
|
3 0.290535 0.277656
|
||||||
|
4 0.578683 0.297676
|
||||||
|
5 1.152612 0.234403
|
||||||
|
6 2.295756 0.140321
|
||||||
|
7 4.572652 0.067219
|
||||||
|
8 9.107739 0.031594
|
||||||
|
9 18.140657 0.003301
|
||||||
|
P 1
|
||||||
|
1 0.223042 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.832058 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0612400 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0561100 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.2300000 1.0000000
|
||||||
|
|
||||||
|
BROMINE
|
||||||
|
S 9
|
||||||
|
1 0.114626 0.199832
|
||||||
|
2 0.253024 0.605806
|
||||||
|
3 0.558520 0.486414
|
||||||
|
4 1.232866 -0.208964
|
||||||
|
5 2.721403 -0.328448
|
||||||
|
6 6.007171 0.118471
|
||||||
|
7 13.260109 -0.013112
|
||||||
|
8 29.270100 0.001206
|
||||||
|
9 64.610234 -0.000121
|
||||||
|
S 1
|
||||||
|
1 0.074712 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.067990 0.107992
|
||||||
|
2 0.145507 0.331860
|
||||||
|
3 0.311403 0.442871
|
||||||
|
4 0.666441 0.283256
|
||||||
|
5 1.426267 -0.026045
|
||||||
|
6 3.052389 -0.111323
|
||||||
|
7 6.532494 0.021712
|
||||||
|
8 13.980353 -0.001188
|
||||||
|
9 29.919703 0.000022
|
||||||
|
P 1
|
||||||
|
1 0.129654 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.417296 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0569460 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0410490 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1719000 1.0000000
|
||||||
|
|
||||||
|
FLUORINE
|
||||||
|
S 9
|
||||||
|
1 0.172723 0.070240
|
||||||
|
2 0.364875 0.311088
|
||||||
|
3 0.770795 0.444675
|
||||||
|
4 1.628295 0.287011
|
||||||
|
5 3.439757 0.018759
|
||||||
|
6 7.266451 -0.128608
|
||||||
|
7 15.350300 0.009104
|
||||||
|
8 32.427348 0.000810
|
||||||
|
9 68.502433 -0.000133
|
||||||
|
S 1
|
||||||
|
1 0.344569 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.101001 0.035321
|
||||||
|
2 0.204414 0.136924
|
||||||
|
3 0.413707 0.249353
|
||||||
|
4 0.837289 0.286620
|
||||||
|
5 1.694565 0.254541
|
||||||
|
6 3.429580 0.169572
|
||||||
|
7 6.941026 0.088542
|
||||||
|
8 14.047737 0.039843
|
||||||
|
9 28.430799 0.003378
|
||||||
|
P 1
|
||||||
|
1 0.364831 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.722479 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0986300 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0850200 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.4640000 1.0000000
|
||||||
|
|
||||||
|
CHLORINE
|
||||||
|
S 9
|
||||||
|
1 0.119944 0.148917
|
||||||
|
2 0.257348 0.503616
|
||||||
|
3 0.552157 0.523995
|
||||||
|
4 1.184691 0.013612
|
||||||
|
5 2.541836 -0.328846
|
||||||
|
6 5.453681 0.056309
|
||||||
|
7 11.701243 -0.001301
|
||||||
|
8 25.105812 -0.000294
|
||||||
|
9 53.866226 0.000076
|
||||||
|
S 1
|
||||||
|
1 0.120667 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.074374 0.084925
|
||||||
|
2 0.155084 0.270658
|
||||||
|
3 0.323378 0.396022
|
||||||
|
4 0.674303 0.324325
|
||||||
|
5 1.406043 0.100661
|
||||||
|
6 2.931855 -0.069802
|
||||||
|
7 6.113450 -0.000951
|
||||||
|
8 12.747651 0.001501
|
||||||
|
9 26.581165 -0.000249
|
||||||
|
P 1
|
||||||
|
1 0.168333 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.651071 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0608000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0466000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1960000 1.0000000
|
||||||
|
|
||||||
|
CARBON
|
||||||
|
S 9
|
||||||
|
1 0.051344 0.013991
|
||||||
|
2 0.102619 0.169852
|
||||||
|
3 0.205100 0.397529
|
||||||
|
4 0.409924 0.380369
|
||||||
|
5 0.819297 0.180113
|
||||||
|
6 1.637494 -0.033512
|
||||||
|
7 3.272791 -0.121499
|
||||||
|
8 6.541187 0.015176
|
||||||
|
9 13.073594 -0.000705
|
||||||
|
S 1
|
||||||
|
1 0.127852 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.029281 0.001787
|
||||||
|
2 0.058547 0.050426
|
||||||
|
3 0.117063 0.191634
|
||||||
|
4 0.234064 0.302667
|
||||||
|
5 0.468003 0.289868
|
||||||
|
6 0.935757 0.210979
|
||||||
|
7 1.871016 0.112024
|
||||||
|
8 3.741035 0.054425
|
||||||
|
9 7.480076 0.021931
|
||||||
|
P 1
|
||||||
|
1 0.149161 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.561160 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0469000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0404100 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1510000 1.0000000
|
||||||
|
|
||||||
|
OXYGEN
|
||||||
|
S 9
|
||||||
|
1 0.125346 0.055741
|
||||||
|
2 0.268022 0.304848
|
||||||
|
3 0.573098 0.453752
|
||||||
|
4 1.225429 0.295926
|
||||||
|
5 2.620277 0.019567
|
||||||
|
6 5.602818 -0.128627
|
||||||
|
7 11.980245 0.012024
|
||||||
|
8 25.616801 0.000407
|
||||||
|
9 54.775216 -0.000076
|
||||||
|
S 1
|
||||||
|
1 0.258551 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.083598 0.044958
|
||||||
|
2 0.167017 0.150175
|
||||||
|
3 0.333673 0.255999
|
||||||
|
4 0.666627 0.281879
|
||||||
|
5 1.331816 0.242835
|
||||||
|
6 2.660761 0.161134
|
||||||
|
7 5.315785 0.082308
|
||||||
|
8 10.620108 0.039899
|
||||||
|
9 21.217318 0.004679
|
||||||
|
P 1
|
||||||
|
1 0.267865 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.232753 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0789600 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0685600 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.3320000 1.0000000
|
||||||
|
|
||||||
|
KRYPTON
|
||||||
|
S 9
|
||||||
|
1 0.129911 0.183453
|
||||||
|
2 0.282220 0.596016
|
||||||
|
3 0.613098 0.506410
|
||||||
|
4 1.331901 -0.150926
|
||||||
|
5 2.893437 -0.423611
|
||||||
|
6 6.285735 0.162644
|
||||||
|
7 13.655203 -0.023284
|
||||||
|
8 29.664719 0.003157
|
||||||
|
9 64.443973 -0.000422
|
||||||
|
S 1
|
||||||
|
1 0.634619 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.079314 0.096705
|
||||||
|
2 0.167216 0.312567
|
||||||
|
3 0.352539 0.448237
|
||||||
|
4 0.743252 0.298640
|
||||||
|
5 1.566988 -0.003641
|
||||||
|
6 3.303659 -0.138798
|
||||||
|
7 6.965055 0.029989
|
||||||
|
8 14.684325 -0.002578
|
||||||
|
9 30.958748 0.000205
|
||||||
|
P 1
|
||||||
|
1 0.149902 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.487932 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0651450 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0466060 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.2155000 1.0000000
|
||||||
|
|
||||||
|
HYDROGEN
|
||||||
|
S 9
|
||||||
|
1 0.013000 0.000706
|
||||||
|
2 0.029900 -0.002119
|
||||||
|
3 0.068770 0.057693
|
||||||
|
4 0.158170 0.230695
|
||||||
|
5 0.363792 0.277612
|
||||||
|
6 0.836721 0.169833
|
||||||
|
7 1.924458 0.097443
|
||||||
|
8 4.426254 0.029966
|
||||||
|
9 10.180385 -0.000452
|
||||||
|
S 1
|
||||||
|
1 0.170483 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.003000 0.001242
|
||||||
|
2 0.007800 -0.000913
|
||||||
|
3 0.020281 -0.000054
|
||||||
|
4 0.052730 -0.000238
|
||||||
|
5 0.137097 -0.011530
|
||||||
|
6 0.356451 -0.018235
|
||||||
|
7 0.926774 -0.013929
|
||||||
|
8 2.409612 -0.009395
|
||||||
|
9 6.264991 -0.000347
|
||||||
|
S 1
|
||||||
|
1 0.0297400 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.1410000 1.0000000
|
||||||
|
|
||||||
|
PHOSPHORUS
|
||||||
|
S 9
|
||||||
|
1 0.074718 0.140225
|
||||||
|
2 0.160834 0.506746
|
||||||
|
3 0.346202 0.499893
|
||||||
|
4 0.745215 0.037301
|
||||||
|
5 1.604109 -0.284591
|
||||||
|
6 3.452917 0.024766
|
||||||
|
7 7.432561 0.001798
|
||||||
|
8 15.998924 -0.000314
|
||||||
|
9 34.438408 0.000088
|
||||||
|
S 1
|
||||||
|
1 0.077260 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.050242 0.072095
|
||||||
|
2 0.102391 0.278735
|
||||||
|
3 0.208669 0.411034
|
||||||
|
4 0.425256 0.304724
|
||||||
|
5 0.866651 0.091727
|
||||||
|
6 1.766191 -0.057060
|
||||||
|
7 3.599410 -0.005103
|
||||||
|
8 7.335418 0.000328
|
||||||
|
9 14.949217 -0.000046
|
||||||
|
P 1
|
||||||
|
1 0.113433 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.390944 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0417000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0343000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1130000 1.0000000
|
||||||
|
|
||||||
|
SILICON
|
||||||
|
S 9
|
||||||
|
1 0.059887 0.167492
|
||||||
|
2 0.130108 0.532550
|
||||||
|
3 0.282668 0.464290
|
||||||
|
4 0.614115 -0.002322
|
||||||
|
5 1.334205 -0.268234
|
||||||
|
6 2.898645 0.031921
|
||||||
|
7 6.297493 -0.000106
|
||||||
|
8 13.681707 -0.000145
|
||||||
|
9 29.724387 0.000067
|
||||||
|
S 1
|
||||||
|
1 0.059803 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.036525 0.078761
|
||||||
|
2 0.076137 0.308331
|
||||||
|
3 0.158712 0.417773
|
||||||
|
4 0.330843 0.281676
|
||||||
|
5 0.689658 0.069876
|
||||||
|
6 1.437625 -0.056306
|
||||||
|
7 2.996797 0.000744
|
||||||
|
8 6.246966 -0.000259
|
||||||
|
9 13.022097 -0.000022
|
||||||
|
P 1
|
||||||
|
1 0.081570 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.283626 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0332000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0250000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0823000 1.0000000
|
||||||
|
|
||||||
|
ARGON
|
||||||
|
S 9
|
||||||
|
1 0.147347 0.155473
|
||||||
|
2 0.312164 0.494617
|
||||||
|
3 0.661339 0.526705
|
||||||
|
4 1.401090 0.021986
|
||||||
|
5 2.968301 -0.338533
|
||||||
|
6 6.288539 0.056023
|
||||||
|
7 13.322677 -0.000115
|
||||||
|
8 28.224956 -0.000595
|
||||||
|
9 59.796402 0.000127
|
||||||
|
S 1
|
||||||
|
1 0.147526 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.090580 0.079101
|
||||||
|
2 0.188085 0.260718
|
||||||
|
3 0.390548 0.395065
|
||||||
|
4 0.810953 0.334954
|
||||||
|
5 1.683902 0.107462
|
||||||
|
6 3.496535 -0.073657
|
||||||
|
7 7.260371 -0.001407
|
||||||
|
8 15.075781 0.001710
|
||||||
|
9 31.304069 -0.000275
|
||||||
|
P 1
|
||||||
|
1 0.211798 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.810888 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0709000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0533000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.2400000 1.0000000
|
||||||
|
|
||||||
|
SODIUM
|
||||||
|
S 9
|
||||||
|
1 0.013061 0.200118
|
||||||
|
2 0.030041 0.467652
|
||||||
|
3 0.069092 0.227738
|
||||||
|
4 0.158908 -0.061581
|
||||||
|
5 0.365481 -0.137533
|
||||||
|
6 0.840589 0.003323
|
||||||
|
7 1.933315 0.003741
|
||||||
|
8 4.446533 -0.001117
|
||||||
|
9 10.226816 0.000244
|
||||||
|
S 1
|
||||||
|
1 0.865135 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.002593 -0.002840
|
||||||
|
2 0.006741 0.005340
|
||||||
|
3 0.017525 -0.025936
|
||||||
|
4 0.045563 -0.053466
|
||||||
|
5 0.118461 -0.053691
|
||||||
|
6 0.307987 0.014439
|
||||||
|
7 0.800738 0.006199
|
||||||
|
8 2.081847 -0.001026
|
||||||
|
9 5.412617 0.000168
|
||||||
|
P 1
|
||||||
|
1 0.106025 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.050790 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0072500 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0063300 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0468000 1.0000000
|
||||||
|
|
||||||
|
BERYLLIUM
|
||||||
|
S 9
|
||||||
|
1 0.030068 0.025105
|
||||||
|
2 0.054002 0.178890
|
||||||
|
3 0.096986 0.263939
|
||||||
|
4 0.174186 0.435946
|
||||||
|
5 0.312836 -0.008188
|
||||||
|
6 0.561850 0.049509
|
||||||
|
7 1.009077 -0.114576
|
||||||
|
8 1.812290 -0.067207
|
||||||
|
9 3.254852 0.017250
|
||||||
|
S 1
|
||||||
|
1 0.239392 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.015064 0.735052
|
||||||
|
2 0.028584 -0.476214
|
||||||
|
3 0.054236 0.564806
|
||||||
|
4 0.102911 -0.108575
|
||||||
|
5 0.195269 0.233862
|
||||||
|
6 0.370513 -0.009003
|
||||||
|
7 0.703030 0.067510
|
||||||
|
8 1.333967 -0.002868
|
||||||
|
9 2.531139 0.017869
|
||||||
|
P 1
|
||||||
|
1 0.222969 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.217340 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0187700 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0085000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0740000 1.0000000
|
||||||
|
|
||||||
|
SELENIUM
|
||||||
|
S 9
|
||||||
|
1 0.096883 0.200965
|
||||||
|
2 0.217674 0.615093
|
||||||
|
3 0.489067 0.462636
|
||||||
|
4 1.098828 -0.204179
|
||||||
|
5 2.468828 -0.307584
|
||||||
|
6 5.546920 0.109895
|
||||||
|
7 12.462726 -0.012288
|
||||||
|
8 28.001040 0.001205
|
||||||
|
9 62.912258 -0.000132
|
||||||
|
S 1
|
||||||
|
1 0.062467 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.056147 0.073504
|
||||||
|
2 0.122259 0.334692
|
||||||
|
3 0.266220 0.473323
|
||||||
|
4 0.579694 0.276571
|
||||||
|
5 1.262286 -0.032356
|
||||||
|
6 2.748631 -0.103709
|
||||||
|
7 5.985152 0.020181
|
||||||
|
8 13.032685 -0.001095
|
||||||
|
9 28.378708 0.000019
|
||||||
|
P 1
|
||||||
|
1 0.107381 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.348649 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0487470 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0354920 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1283000 1.0000000
|
||||||
|
|
||||||
|
SULFUR
|
||||||
|
S 9
|
||||||
|
1 0.095120 0.140074
|
||||||
|
2 0.202385 0.490942
|
||||||
|
3 0.430611 0.515297
|
||||||
|
4 0.916203 0.050320
|
||||||
|
5 1.949388 -0.298908
|
||||||
|
6 4.147674 0.019827
|
||||||
|
7 8.824926 0.007266
|
||||||
|
8 18.776623 -0.001602
|
||||||
|
9 39.950656 0.000271
|
||||||
|
S 1
|
||||||
|
1 0.098454 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.057087 0.081938
|
||||||
|
2 0.115901 0.251826
|
||||||
|
3 0.235305 0.376344
|
||||||
|
4 0.477723 0.320902
|
||||||
|
5 0.969889 0.143779
|
||||||
|
6 1.969099 -0.045543
|
||||||
|
7 3.997726 -0.017191
|
||||||
|
8 8.116307 0.002580
|
||||||
|
9 16.477979 -0.000222
|
||||||
|
P 1
|
||||||
|
1 0.128926 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.514135 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0507000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0399000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1520000 1.0000000
|
||||||
|
|
||||||
|
HELIUM
|
||||||
|
S 9
|
||||||
|
1 0.077786 0.012425
|
||||||
|
2 0.161528 0.128251
|
||||||
|
3 0.335425 0.282221
|
||||||
|
4 0.696535 0.292427
|
||||||
|
5 1.446408 0.215025
|
||||||
|
6 3.003576 0.125450
|
||||||
|
7 6.237154 0.064912
|
||||||
|
8 12.951926 0.038892
|
||||||
|
9 26.895662 0.002531
|
||||||
|
S 1
|
||||||
|
1 0.321750 1.000000
|
||||||
|
P 8
|
||||||
|
1 0.228528 -0.000116
|
||||||
|
2 0.422019 2.116950
|
||||||
|
3 0.779333 -2.182954
|
||||||
|
4 1.439180 1.545850
|
||||||
|
5 2.657706 -0.879477
|
||||||
|
6 4.907934 0.469710
|
||||||
|
7 9.063386 -0.224631
|
||||||
|
8 16.737180 0.098422
|
||||||
|
S 1
|
||||||
|
1 0.0725500 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.2473000 1.0000000
|
||||||
|
|
||||||
|
|
988
data/basis/avqz-bfd
Normal file
988
data/basis/avqz-bfd
Normal file
@ -0,0 +1,988 @@
|
|||||||
|
LITHIUM
|
||||||
|
S 9
|
||||||
|
1 0.010125 0.007841
|
||||||
|
2 0.023437 0.258118
|
||||||
|
3 0.054251 0.423307
|
||||||
|
4 0.125581 0.167825
|
||||||
|
5 0.290697 -0.068332
|
||||||
|
6 0.672909 -0.119269
|
||||||
|
7 1.557659 0.007736
|
||||||
|
8 3.605689 0.003630
|
||||||
|
9 8.346494 -0.000646
|
||||||
|
S 1
|
||||||
|
1 0.024834 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.109770 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.519693 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.018300 -0.005906
|
||||||
|
2 0.031699 -0.031422
|
||||||
|
3 0.054908 -0.043628
|
||||||
|
4 0.095111 -0.016781
|
||||||
|
5 0.164751 -0.078594
|
||||||
|
6 0.285379 0.015562
|
||||||
|
7 0.494330 -0.030830
|
||||||
|
8 0.856273 0.006185
|
||||||
|
9 1.483225 -0.008621
|
||||||
|
P 1
|
||||||
|
1 0.070662 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.115823 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.207505 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.029817 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.089353 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.214990 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.099930 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.240323 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.199570 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0063600 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0075600 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0266000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0552000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.1050000 1.0000000
|
||||||
|
|
||||||
|
NEON
|
||||||
|
S 9
|
||||||
|
1 0.205835 0.057514
|
||||||
|
2 0.391384 0.215776
|
||||||
|
3 0.744196 0.374799
|
||||||
|
4 1.415048 0.326313
|
||||||
|
5 2.690638 0.166383
|
||||||
|
6 5.116103 -0.039149
|
||||||
|
7 9.727994 -0.085909
|
||||||
|
8 18.497256 0.006816
|
||||||
|
9 35.171534 0.000206
|
||||||
|
S 1
|
||||||
|
1 0.399186 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.658402 1.000000
|
||||||
|
S 1
|
||||||
|
1 2.261159 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.121772 0.029943
|
||||||
|
2 0.238248 0.114200
|
||||||
|
3 0.466136 0.219618
|
||||||
|
4 0.912002 0.268864
|
||||||
|
5 1.784344 0.256932
|
||||||
|
6 3.491095 0.191378
|
||||||
|
7 6.830378 0.112176
|
||||||
|
8 13.363732 0.063317
|
||||||
|
9 26.146332 0.008057
|
||||||
|
P 1
|
||||||
|
1 0.245215 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.757342 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.938376 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.738131 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.188751 1.000000
|
||||||
|
D 1
|
||||||
|
1 6.170224 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.589986 1.000000
|
||||||
|
F 1
|
||||||
|
1 4.849402 1.000000
|
||||||
|
G 1
|
||||||
|
1 3.228793 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.1054000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0817800 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.2730000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.6890000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 1.2240000 1.0000000
|
||||||
|
|
||||||
|
BORON
|
||||||
|
S 9
|
||||||
|
1 0.040569 0.032031
|
||||||
|
2 0.081044 0.243317
|
||||||
|
3 0.161898 0.434636
|
||||||
|
4 0.323418 0.329581
|
||||||
|
5 0.646080 0.111875
|
||||||
|
6 1.290648 -0.078699
|
||||||
|
7 2.578276 -0.098781
|
||||||
|
8 5.150520 0.016164
|
||||||
|
9 10.288990 -0.000016
|
||||||
|
S 1
|
||||||
|
1 0.082968 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.305133 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.422217 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.029207 0.019909
|
||||||
|
2 0.058408 0.141775
|
||||||
|
3 0.116803 0.294463
|
||||||
|
4 0.233582 0.309028
|
||||||
|
5 0.467115 0.236378
|
||||||
|
6 0.934132 0.131317
|
||||||
|
7 1.868068 0.066454
|
||||||
|
8 3.735743 0.021248
|
||||||
|
9 7.470701 0.002837
|
||||||
|
P 1
|
||||||
|
1 0.066445 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.196614 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.447031 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.149100 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.410733 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.142614 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.315902 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.870011 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.710746 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0272100 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0187800 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0466000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.1130000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.2730000 1.0000000
|
||||||
|
|
||||||
|
ALUMINUM
|
||||||
|
S 9
|
||||||
|
1 0.045518 0.206193
|
||||||
|
2 0.100308 0.559887
|
||||||
|
3 0.221051 0.407852
|
||||||
|
4 0.487132 -0.041098
|
||||||
|
5 1.073500 -0.238652
|
||||||
|
6 2.365686 0.038132
|
||||||
|
7 5.213294 -0.003935
|
||||||
|
8 11.488606 0.000470
|
||||||
|
9 25.317597 -0.000014
|
||||||
|
S 1
|
||||||
|
1 0.058688 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.150215 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.324193 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.014848 0.009932
|
||||||
|
2 0.030967 0.160212
|
||||||
|
3 0.064586 0.389171
|
||||||
|
4 0.134700 0.373235
|
||||||
|
5 0.280932 0.195800
|
||||||
|
6 0.585913 0.022947
|
||||||
|
7 1.221985 -0.053293
|
||||||
|
8 2.548578 0.004846
|
||||||
|
9 5.315330 -0.000726
|
||||||
|
P 1
|
||||||
|
1 0.034866 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.403929 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.084117 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.092392 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.245212 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.726318 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.160909 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.409285 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.352027 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0183000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0121000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0282000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0582000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.1530000 1.0000000
|
||||||
|
|
||||||
|
MAGNESIUM
|
||||||
|
S 9
|
||||||
|
1 0.030975 0.165290
|
||||||
|
2 0.062959 0.506272
|
||||||
|
3 0.127970 0.333197
|
||||||
|
4 0.260111 0.057482
|
||||||
|
5 0.528700 -0.137614
|
||||||
|
6 1.074630 -0.135378
|
||||||
|
7 2.184285 0.048310
|
||||||
|
8 4.439759 -0.005312
|
||||||
|
9 9.024217 0.000465
|
||||||
|
S 1
|
||||||
|
1 0.023378 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.188141 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.616205 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.047055 1.502038
|
||||||
|
2 0.083253 -1.433944
|
||||||
|
3 0.147298 1.318987
|
||||||
|
4 0.260611 -0.741124
|
||||||
|
5 0.461094 0.436300
|
||||||
|
6 0.815803 -0.243798
|
||||||
|
7 1.443383 0.086774
|
||||||
|
8 2.553745 -0.028677
|
||||||
|
9 4.518286 0.006085
|
||||||
|
P 1
|
||||||
|
1 0.089167 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.209210 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.846859 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.095526 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.734089 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.233222 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.127025 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.304907 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.192272 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0123900 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0070600 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0382000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0700000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.1480000 1.0000000
|
||||||
|
|
||||||
|
NITROGEN
|
||||||
|
S 9
|
||||||
|
1 0.098869 0.067266
|
||||||
|
2 0.211443 0.334290
|
||||||
|
3 0.452197 0.454257
|
||||||
|
4 0.967080 0.267861
|
||||||
|
5 2.068221 0.000248
|
||||||
|
6 4.423150 -0.132606
|
||||||
|
7 9.459462 0.014437
|
||||||
|
8 20.230246 0.000359
|
||||||
|
9 43.264919 -0.000094
|
||||||
|
S 1
|
||||||
|
1 0.135764 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.310826 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.625001 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.073234 0.035758
|
||||||
|
2 0.145867 0.153945
|
||||||
|
3 0.290535 0.277656
|
||||||
|
4 0.578683 0.297676
|
||||||
|
5 1.152612 0.234403
|
||||||
|
6 2.295756 0.140321
|
||||||
|
7 4.572652 0.067219
|
||||||
|
8 9.107739 0.031594
|
||||||
|
9 18.140657 0.003301
|
||||||
|
P 1
|
||||||
|
1 0.140736 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.413103 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.020750 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.346233 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.009895 1.000000
|
||||||
|
D 1
|
||||||
|
1 3.028459 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.691129 1.000000
|
||||||
|
F 1
|
||||||
|
1 2.024747 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.357512 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0546400 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0440200 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1110000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.2450000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.5590000 1.0000000
|
||||||
|
|
||||||
|
FLUORINE
|
||||||
|
S 9
|
||||||
|
1 0.172723 0.070240
|
||||||
|
2 0.364875 0.311088
|
||||||
|
3 0.770795 0.444675
|
||||||
|
4 1.628295 0.287011
|
||||||
|
5 3.439757 0.018759
|
||||||
|
6 7.266451 -0.128608
|
||||||
|
7 15.350300 0.009104
|
||||||
|
8 32.427348 0.000810
|
||||||
|
9 68.502433 -0.000133
|
||||||
|
S 1
|
||||||
|
1 0.294345 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.048013 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.705653 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.101001 0.035321
|
||||||
|
2 0.204414 0.136924
|
||||||
|
3 0.413707 0.249353
|
||||||
|
4 0.837289 0.286620
|
||||||
|
5 1.694565 0.254541
|
||||||
|
6 3.429580 0.169572
|
||||||
|
7 6.941026 0.088542
|
||||||
|
8 14.047737 0.039843
|
||||||
|
9 28.430799 0.003378
|
||||||
|
P 1
|
||||||
|
1 0.205806 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.647240 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.650688 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.587354 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.724392 1.000000
|
||||||
|
D 1
|
||||||
|
1 4.998085 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.178147 1.000000
|
||||||
|
F 1
|
||||||
|
1 3.694285 1.000000
|
||||||
|
G 1
|
||||||
|
1 2.406583 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0859400 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0656800 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.2070000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.4600000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.9240000 1.0000000
|
||||||
|
|
||||||
|
CHLORINE
|
||||||
|
S 9
|
||||||
|
1 0.119944 0.148917
|
||||||
|
2 0.257348 0.503616
|
||||||
|
3 0.552157 0.523995
|
||||||
|
4 1.184691 0.013612
|
||||||
|
5 2.541836 -0.328846
|
||||||
|
6 5.453681 0.056309
|
||||||
|
7 11.701243 -0.001301
|
||||||
|
8 25.105812 -0.000294
|
||||||
|
9 53.866226 0.000076
|
||||||
|
S 1
|
||||||
|
1 0.161594 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.440111 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.848928 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.074374 0.084925
|
||||||
|
2 0.155084 0.270658
|
||||||
|
3 0.323378 0.396022
|
||||||
|
4 0.674303 0.324325
|
||||||
|
5 1.406043 0.100661
|
||||||
|
6 2.931855 -0.069802
|
||||||
|
7 6.113450 -0.000951
|
||||||
|
8 12.747651 0.001501
|
||||||
|
9 26.581165 -0.000249
|
||||||
|
P 1
|
||||||
|
1 0.111309 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.286881 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.289403 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.253063 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.642589 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.654717 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.448175 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.189807 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.848307 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0519000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0376000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0952000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.2170000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.3780000 1.0000000
|
||||||
|
|
||||||
|
CARBON
|
||||||
|
S 9
|
||||||
|
1 0.051344 0.013991
|
||||||
|
2 0.102619 0.169852
|
||||||
|
3 0.205100 0.397529
|
||||||
|
4 0.409924 0.380369
|
||||||
|
5 0.819297 0.180113
|
||||||
|
6 1.637494 -0.033512
|
||||||
|
7 3.272791 -0.121499
|
||||||
|
8 6.541187 0.015176
|
||||||
|
9 13.073594 -0.000705
|
||||||
|
S 1
|
||||||
|
1 0.109576 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.846879 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.269659 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.029281 0.001787
|
||||||
|
2 0.058547 0.050426
|
||||||
|
3 0.117063 0.191634
|
||||||
|
4 0.234064 0.302667
|
||||||
|
5 0.468003 0.289868
|
||||||
|
6 0.935757 0.210979
|
||||||
|
7 1.871016 0.112024
|
||||||
|
8 3.741035 0.054425
|
||||||
|
9 7.480076 0.021931
|
||||||
|
P 1
|
||||||
|
1 0.105389 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.313254 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.804681 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.240171 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.684884 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.013760 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.457302 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.324930 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.034180 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0414500 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0321800 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0766000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.1870000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.4240000 1.0000000
|
||||||
|
|
||||||
|
OXYGEN
|
||||||
|
S 9
|
||||||
|
1 0.125346 0.055741
|
||||||
|
2 0.268022 0.304848
|
||||||
|
3 0.573098 0.453752
|
||||||
|
4 1.225429 0.295926
|
||||||
|
5 2.620277 0.019567
|
||||||
|
6 5.602818 -0.128627
|
||||||
|
7 11.980245 0.012024
|
||||||
|
8 25.616801 0.000407
|
||||||
|
9 54.775216 -0.000076
|
||||||
|
S 1
|
||||||
|
1 0.224380 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.843157 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.351771 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.083598 0.044958
|
||||||
|
2 0.167017 0.150175
|
||||||
|
3 0.333673 0.255999
|
||||||
|
4 0.666627 0.281879
|
||||||
|
5 1.331816 0.242835
|
||||||
|
6 2.660761 0.161134
|
||||||
|
7 5.315785 0.082308
|
||||||
|
8 10.620108 0.039899
|
||||||
|
9 21.217318 0.004679
|
||||||
|
P 1
|
||||||
|
1 0.148562 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.452364 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.106737 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.455711 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.344331 1.000000
|
||||||
|
D 1
|
||||||
|
1 4.008867 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.876289 1.000000
|
||||||
|
F 1
|
||||||
|
1 2.763115 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.759081 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0695900 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0534800 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1540000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.3240000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.7140000 1.0000000
|
||||||
|
|
||||||
|
HYDROGEN
|
||||||
|
S 9
|
||||||
|
1 0.013000 0.000706
|
||||||
|
2 0.029900 -0.002119
|
||||||
|
3 0.068770 0.057693
|
||||||
|
4 0.158170 0.230695
|
||||||
|
5 0.363792 0.277612
|
||||||
|
6 0.836721 0.169833
|
||||||
|
7 1.924458 0.097443
|
||||||
|
8 4.426254 0.029966
|
||||||
|
9 10.180385 -0.000452
|
||||||
|
S 1
|
||||||
|
1 0.120599 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.404783 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.715129 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.003000 0.001242
|
||||||
|
2 0.007800 -0.000913
|
||||||
|
3 0.020281 -0.000054
|
||||||
|
4 0.052730 -0.000238
|
||||||
|
5 0.137097 -0.011530
|
||||||
|
6 0.356451 -0.018235
|
||||||
|
7 0.926774 -0.013929
|
||||||
|
8 2.409612 -0.009395
|
||||||
|
9 6.264991 -0.000347
|
||||||
|
P 1
|
||||||
|
1 0.774536 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.263038 1.000000
|
||||||
|
D 1
|
||||||
|
1 2.315883 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.636656 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.130819 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0236300 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0848000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1900000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.3600000 1.0000000
|
||||||
|
|
||||||
|
PHOSPHORUS
|
||||||
|
S 9
|
||||||
|
1 0.074718 0.140225
|
||||||
|
2 0.160834 0.506746
|
||||||
|
3 0.346202 0.499893
|
||||||
|
4 0.745215 0.037301
|
||||||
|
5 1.604109 -0.284591
|
||||||
|
6 3.452917 0.024766
|
||||||
|
7 7.432561 0.001798
|
||||||
|
8 15.998924 -0.000314
|
||||||
|
9 34.438408 0.000088
|
||||||
|
S 1
|
||||||
|
1 0.098851 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.255593 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.546057 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.050242 0.072095
|
||||||
|
2 0.102391 0.278735
|
||||||
|
3 0.208669 0.411034
|
||||||
|
4 0.425256 0.304724
|
||||||
|
5 0.866651 0.091727
|
||||||
|
6 1.766191 -0.057060
|
||||||
|
7 3.599410 -0.005103
|
||||||
|
8 7.335418 0.000328
|
||||||
|
9 14.949217 -0.000046
|
||||||
|
P 1
|
||||||
|
1 0.074522 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.764539 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.182211 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.186505 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.502400 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.576445 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.280702 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.719161 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.599144 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0354000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0272000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0594000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.1090000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.2500000 1.0000000
|
||||||
|
|
||||||
|
SILICON
|
||||||
|
S 9
|
||||||
|
1 0.059887 0.167492
|
||||||
|
2 0.130108 0.532550
|
||||||
|
3 0.282668 0.464290
|
||||||
|
4 0.614115 -0.002322
|
||||||
|
5 1.334205 -0.268234
|
||||||
|
6 2.898645 0.031921
|
||||||
|
7 6.297493 -0.000106
|
||||||
|
8 13.681707 -0.000145
|
||||||
|
9 29.724387 0.000067
|
||||||
|
S 1
|
||||||
|
1 0.079900 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.206024 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.435017 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.036525 0.078761
|
||||||
|
2 0.076137 0.308331
|
||||||
|
3 0.158712 0.417773
|
||||||
|
4 0.330843 0.281676
|
||||||
|
5 0.689658 0.069876
|
||||||
|
6 1.437625 -0.056306
|
||||||
|
7 2.996797 0.000744
|
||||||
|
8 6.246966 -0.000259
|
||||||
|
9 13.022097 -0.000022
|
||||||
|
P 1
|
||||||
|
1 0.054575 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.599112 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.134681 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.133118 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.350967 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.063961 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.211319 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.535932 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.465365 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0275000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0200000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0435000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0846000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.2120000 1.0000000
|
||||||
|
|
||||||
|
ARGON
|
||||||
|
S 9
|
||||||
|
1 0.147347 0.155473
|
||||||
|
2 0.312164 0.494617
|
||||||
|
3 0.661339 0.526705
|
||||||
|
4 1.401090 0.021986
|
||||||
|
5 2.968301 -0.338533
|
||||||
|
6 6.288539 0.056023
|
||||||
|
7 13.322677 -0.000115
|
||||||
|
8 28.224956 -0.000595
|
||||||
|
9 59.796402 0.000127
|
||||||
|
S 1
|
||||||
|
1 0.196024 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.540061 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.020348 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.090580 0.079101
|
||||||
|
2 0.188085 0.260718
|
||||||
|
3 0.390548 0.395065
|
||||||
|
4 0.810953 0.334954
|
||||||
|
5 1.683902 0.107462
|
||||||
|
6 3.496535 -0.073657
|
||||||
|
7 7.260371 -0.001407
|
||||||
|
8 15.075781 0.001710
|
||||||
|
9 31.304069 -0.000275
|
||||||
|
P 1
|
||||||
|
1 0.140701 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.604300 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.367738 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.304103 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.760464 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.900944 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.583628 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.480507 1.000000
|
||||||
|
G 1
|
||||||
|
1 1.030824 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0610000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0435000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.1160000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.2940000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.4590000 1.0000000
|
||||||
|
|
||||||
|
SODIUM
|
||||||
|
S 9
|
||||||
|
1 0.013061 0.200118
|
||||||
|
2 0.030041 0.467652
|
||||||
|
3 0.069092 0.227738
|
||||||
|
4 0.158908 -0.061581
|
||||||
|
5 0.365481 -0.137533
|
||||||
|
6 0.840589 0.003323
|
||||||
|
7 1.933315 0.003741
|
||||||
|
8 4.446533 -0.001117
|
||||||
|
9 10.226816 0.000244
|
||||||
|
S 1
|
||||||
|
1 0.064915 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.134458 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.771046 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.002593 -0.002840
|
||||||
|
2 0.006741 0.005340
|
||||||
|
3 0.017525 -0.025936
|
||||||
|
4 0.045563 -0.053466
|
||||||
|
5 0.118461 -0.053691
|
||||||
|
6 0.307987 0.014439
|
||||||
|
7 0.800738 0.006199
|
||||||
|
8 2.081847 -0.001026
|
||||||
|
9 5.412617 0.000168
|
||||||
|
P 1
|
||||||
|
1 0.059662 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.096714 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.552976 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.046917 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.813868 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.127780 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.129992 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.626429 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.588778 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0050300 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0077200 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0210000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0453000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.0866000 1.0000000
|
||||||
|
|
||||||
|
BERYLLIUM
|
||||||
|
S 9
|
||||||
|
1 0.030068 0.025105
|
||||||
|
2 0.054002 0.178890
|
||||||
|
3 0.096986 0.263939
|
||||||
|
4 0.174186 0.435946
|
||||||
|
5 0.312836 -0.008188
|
||||||
|
6 0.561850 0.049509
|
||||||
|
7 1.009077 -0.114576
|
||||||
|
8 1.812290 -0.067207
|
||||||
|
9 3.254852 0.017250
|
||||||
|
S 1
|
||||||
|
1 0.012287 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.175341 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.244398 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.015064 0.735052
|
||||||
|
2 0.028584 -0.476214
|
||||||
|
3 0.054236 0.564806
|
||||||
|
4 0.102911 -0.108575
|
||||||
|
5 0.195269 0.233862
|
||||||
|
6 0.370513 -0.009003
|
||||||
|
7 0.703030 0.067510
|
||||||
|
8 1.333967 -0.002868
|
||||||
|
9 2.531139 0.017869
|
||||||
|
P 1
|
||||||
|
1 0.317061 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.585739 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.108346 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.125228 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.801065 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.301656 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.153439 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.377536 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.338801 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0143900 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0065000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0554000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.0930000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.1834000 1.0000000
|
||||||
|
|
||||||
|
SULFUR
|
||||||
|
S 9
|
||||||
|
1 0.095120 0.140074
|
||||||
|
2 0.202385 0.490942
|
||||||
|
3 0.430611 0.515297
|
||||||
|
4 0.916203 0.050320
|
||||||
|
5 1.949388 -0.298908
|
||||||
|
6 4.147674 0.019827
|
||||||
|
7 8.824926 0.007266
|
||||||
|
8 18.776623 -0.001602
|
||||||
|
9 39.950656 0.000271
|
||||||
|
S 1
|
||||||
|
1 0.123759 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.315587 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.651905 1.000000
|
||||||
|
P 9
|
||||||
|
1 0.057087 0.081938
|
||||||
|
2 0.115901 0.251826
|
||||||
|
3 0.235305 0.376344
|
||||||
|
4 0.477723 0.320902
|
||||||
|
5 0.969889 0.143779
|
||||||
|
6 1.969099 -0.045543
|
||||||
|
7 3.997726 -0.017191
|
||||||
|
8 8.116307 0.002580
|
||||||
|
9 16.477979 -0.000222
|
||||||
|
P 1
|
||||||
|
1 0.078717 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.202707 1.000000
|
||||||
|
P 1
|
||||||
|
1 0.301333 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.215701 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.560638 1.000000
|
||||||
|
D 1
|
||||||
|
1 1.588204 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.356554 1.000000
|
||||||
|
F 1
|
||||||
|
1 0.961826 1.000000
|
||||||
|
G 1
|
||||||
|
1 0.694803 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0428000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.0317000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.0748000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.1400000 1.0000000
|
||||||
|
G 1
|
||||||
|
1 0.2970000 1.0000000
|
||||||
|
|
||||||
|
HELIUM
|
||||||
|
S 9
|
||||||
|
1 0.077786 0.012425
|
||||||
|
2 0.161528 0.128251
|
||||||
|
3 0.335425 0.282221
|
||||||
|
4 0.696535 0.292427
|
||||||
|
5 1.446408 0.215025
|
||||||
|
6 3.003576 0.125450
|
||||||
|
7 6.237154 0.064912
|
||||||
|
8 12.951926 0.038892
|
||||||
|
9 26.895662 0.002531
|
||||||
|
S 1
|
||||||
|
1 0.937228 1.000000
|
||||||
|
S 1
|
||||||
|
1 1.223567 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.229163 1.000000
|
||||||
|
P 8
|
||||||
|
1 0.228528 -0.000116
|
||||||
|
2 0.422019 2.116950
|
||||||
|
3 0.779333 -2.182954
|
||||||
|
4 1.439180 1.545850
|
||||||
|
5 2.657706 -0.879477
|
||||||
|
6 4.907934 0.469710
|
||||||
|
7 9.063386 -0.224631
|
||||||
|
8 16.737180 0.098422
|
||||||
|
P 1
|
||||||
|
1 3.888767 1.000000
|
||||||
|
P 1
|
||||||
|
1 1.015492 1.000000
|
||||||
|
D 1
|
||||||
|
1 0.939402 1.000000
|
||||||
|
D 1
|
||||||
|
1 3.054371 1.000000
|
||||||
|
F 1
|
||||||
|
1 1.021427 1.000000
|
||||||
|
S 1
|
||||||
|
1 0.0481900 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.1626000 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.3510000 1.0000000
|
||||||
|
F 1
|
||||||
|
1 0.6906000 1.0000000
|
||||||
|
|
||||||
|
|
1038
data/basis/avtz-bfd
Normal file
1038
data/basis/avtz-bfd
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -x
|
#!/bin/bash -x
|
||||||
|
|
||||||
git clone https://github.com/Reference-LAPACK/lapack-release.git
|
git clone https://github.com/Reference-LAPACK/lapack-release.git || echo "Clone failed"
|
||||||
cd lapack-release
|
cd lapack-release
|
||||||
cp make.inc.example make.inc
|
cp make.inc.example make.inc
|
||||||
make -j 8
|
make -j 8
|
||||||
|
@ -93,8 +93,16 @@ end = struct
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
let write_n_states n =
|
let write_n_states n =
|
||||||
States_number.to_int n
|
let n_states =
|
||||||
|> Ezfio.set_determinants_n_states
|
States_number.to_int n
|
||||||
|
in
|
||||||
|
Ezfio.set_determinants_n_states n_states;
|
||||||
|
let data =
|
||||||
|
Array.create n_states 1.
|
||||||
|
|> Array.to_list
|
||||||
|
in
|
||||||
|
Ezfio.ezfio_array_of_list ~rank:1 ~dim:[| n_states |] ~data
|
||||||
|
|> Ezfio.set_determinants_state_average_weight
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let write_state_average_weight data =
|
let write_state_average_weight data =
|
||||||
@ -111,21 +119,31 @@ end = struct
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
let read_state_average_weight () =
|
let read_state_average_weight () =
|
||||||
|
let n_states =
|
||||||
|
read_n_states ()
|
||||||
|
|> States_number.to_int
|
||||||
|
in
|
||||||
if not (Ezfio.has_determinants_state_average_weight ()) then
|
if not (Ezfio.has_determinants_state_average_weight ()) then
|
||||||
begin
|
begin
|
||||||
let n_states =
|
|
||||||
read_n_states ()
|
|
||||||
|> States_number.to_int
|
|
||||||
in
|
|
||||||
let data =
|
let data =
|
||||||
Array.init n_states (fun _ -> 1./.(float_of_int n_states))
|
Array.init n_states (fun _ -> 1./.(float_of_int n_states))
|
||||||
|> Array.map ~f:Positive_float.of_float
|
|> Array.map ~f:Positive_float.of_float
|
||||||
in
|
in
|
||||||
write_state_average_weight data;
|
write_state_average_weight data
|
||||||
end;
|
end;
|
||||||
Ezfio.get_determinants_state_average_weight ()
|
let result =
|
||||||
|> Ezfio.flattened_ezfio
|
Ezfio.get_determinants_state_average_weight ()
|
||||||
|> Array.map ~f:Positive_float.of_float
|
|> Ezfio.flattened_ezfio
|
||||||
|
|> Array.map ~f:Positive_float.of_float
|
||||||
|
in
|
||||||
|
if Array.length result = n_states then
|
||||||
|
result
|
||||||
|
else
|
||||||
|
let data =
|
||||||
|
Array.init n_states (fun _ -> 1./.(float_of_int n_states))
|
||||||
|
|> Array.map ~f:Positive_float.of_float
|
||||||
|
in
|
||||||
|
(write_state_average_weight data; data)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_expected_s2 () =
|
let read_expected_s2 () =
|
||||||
|
@ -830,10 +830,11 @@ let run ~port =
|
|||||||
let () =
|
let () =
|
||||||
if debug_env then
|
if debug_env then
|
||||||
begin
|
begin
|
||||||
Printf.sprintf "q:%d r:%d n:%d : %s\n%!"
|
Printf.sprintf "q:%d r:%d n:%d c:%d : %s\n%!"
|
||||||
(Queuing_system.number_of_queued program_state.queue)
|
(Queuing_system.number_of_queued program_state.queue)
|
||||||
(Queuing_system.number_of_running program_state.queue)
|
(Queuing_system.number_of_running program_state.queue)
|
||||||
(Queuing_system.number_of_tasks program_state.queue)
|
(Queuing_system.number_of_tasks program_state.queue)
|
||||||
|
(Queuing_system.number_of_clients program_state.queue)
|
||||||
(Message.to_string message)
|
(Message.to_string message)
|
||||||
|> debug
|
|> debug
|
||||||
end
|
end
|
||||||
|
13
ocaml/myocamlbuild.ml
Normal file
13
ocaml/myocamlbuild.ml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
open Ocamlbuild_plugin;;
|
||||||
|
open Command;;
|
||||||
|
|
||||||
|
dispatch begin function
|
||||||
|
| Before_rules ->
|
||||||
|
begin
|
||||||
|
end
|
||||||
|
| After_rules ->
|
||||||
|
begin
|
||||||
|
flag ["ocaml";"compile";"native";"gprof"] (S [ A "-p"]);
|
||||||
|
end
|
||||||
|
| _ -> ()
|
||||||
|
end
|
@ -58,7 +58,7 @@ let input_data = "
|
|||||||
|
|
||||||
* Det_number_max : int
|
* Det_number_max : int
|
||||||
assert (x > 0) ;
|
assert (x > 0) ;
|
||||||
if (x > 10000000000) then
|
if (x > 10_00_000_000) then
|
||||||
warning \"More than 10 billion determinants\";
|
warning \"More than 10 billion determinants\";
|
||||||
|
|
||||||
* States_number : int
|
* States_number : int
|
||||||
@ -142,18 +142,18 @@ let input_data = "
|
|||||||
let input_ezfio = "
|
let input_ezfio = "
|
||||||
* MO_number : int
|
* MO_number : int
|
||||||
mo_basis_mo_tot_num
|
mo_basis_mo_tot_num
|
||||||
1 : 10000
|
1 : 10_000
|
||||||
More than 10000 MOs
|
More than 10_000 MOs
|
||||||
|
|
||||||
* AO_number : int
|
* AO_number : int
|
||||||
ao_basis_ao_num
|
ao_basis_ao_num
|
||||||
1 : 10000
|
1 : 10_000
|
||||||
More than 10000 AOs
|
More than 10_000 AOs
|
||||||
|
|
||||||
* Nucl_number : int
|
* Nucl_number : int
|
||||||
nuclei_nucl_num
|
nuclei_nucl_num
|
||||||
1 : 10000
|
1 : 10_000
|
||||||
More than 10000 nuclei
|
More than 10_000 nuclei
|
||||||
|
|
||||||
* N_int_number : int
|
* N_int_number : int
|
||||||
determinants_n_int
|
determinants_n_int
|
||||||
@ -162,8 +162,8 @@ let input_ezfio = "
|
|||||||
|
|
||||||
* Det_number : int
|
* Det_number : int
|
||||||
determinants_n_det
|
determinants_n_det
|
||||||
1 : 10000000000
|
1 : 10_000_000_000
|
||||||
More than 10 billion of determinants
|
More than 10 billion determinants
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
||||||
@ -214,6 +214,26 @@ end = struct
|
|||||||
| _ -> raise (Invalid_argument (\"Wrong IO type : \"^s))
|
| _ -> raise (Invalid_argument (\"Wrong IO type : \"^s))
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module Perturbation : sig
|
||||||
|
type t [@@deriving sexp]
|
||||||
|
val to_string : t -> string
|
||||||
|
val of_string : string -> t
|
||||||
|
end = struct
|
||||||
|
type t =
|
||||||
|
| EN
|
||||||
|
| Barycentric
|
||||||
|
[@@deriving sexp]
|
||||||
|
|
||||||
|
let to_string = function
|
||||||
|
| EN -> \"EN\"
|
||||||
|
| Barycentric -> \"Barycentric\"
|
||||||
|
let of_string s =
|
||||||
|
match (String.lowercase_ascii s) with
|
||||||
|
| \"en\" -> EN
|
||||||
|
| \"barycentric\" -> Barycentric
|
||||||
|
| _ -> raise (Invalid_argument (\"Wrong Perturbation type : \"^s))
|
||||||
|
end
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import *
|
from generate_h_apply import *
|
||||||
|
|
||||||
s = H_apply("just_1h_1p")
|
s = H_apply("just_1h_1p")
|
||||||
|
@ -1 +1 @@
|
|||||||
Generators_restart Perturbation Properties Selectors_no_sorted Utils Davidson
|
Generators_restart Perturbation Properties Selectors_no_sorted Utils DavidsonUndressed
|
||||||
|
17
plugins/Bk/EZFIO.cfg
Normal file
17
plugins/Bk/EZFIO.cfg
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
[energy]
|
||||||
|
type: double precision
|
||||||
|
doc: Calculated energy
|
||||||
|
interface: ezfio
|
||||||
|
|
||||||
|
[thresh_dressed_ci]
|
||||||
|
type: Threshold
|
||||||
|
doc: Threshold on the convergence of the dressed CI energy
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 1.e-5
|
||||||
|
|
||||||
|
[n_it_max_dressed_ci]
|
||||||
|
type: Strictly_positive_int
|
||||||
|
doc: Maximum number of dressed CI iterations
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 10
|
||||||
|
|
2
plugins/Bk/NEEDED_CHILDREN_MODULES
Normal file
2
plugins/Bk/NEEDED_CHILDREN_MODULES
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Bitmask dress_zmq DavidsonDressed
|
||||||
|
|
12
plugins/Bk/README.rst
Normal file
12
plugins/Bk/README.rst
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
==
|
||||||
|
Bk
|
||||||
|
==
|
||||||
|
|
||||||
|
Needed Modules
|
||||||
|
==============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
||||||
|
Documentation
|
||||||
|
=============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
26
plugins/Bk/bk.irp.f
Normal file
26
plugins/Bk/bk.irp.f
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
program bk
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Shifted-Bk method
|
||||||
|
END_DOC
|
||||||
|
read_wf = .True.
|
||||||
|
state_following = .True.
|
||||||
|
TOUCH read_wf state_following
|
||||||
|
call run()
|
||||||
|
end
|
||||||
|
|
||||||
|
subroutine run
|
||||||
|
implicit none
|
||||||
|
call diagonalize_ci_dressed
|
||||||
|
integer :: istate
|
||||||
|
print *, 'Bk Energy'
|
||||||
|
print *, '---------'
|
||||||
|
print *, ''
|
||||||
|
do istate = 1,N_states
|
||||||
|
print *, istate, CI_energy_dressed(istate)
|
||||||
|
enddo
|
||||||
|
! call save_wavefunction
|
||||||
|
call ezfio_set_bk_energy(ci_energy_dressed(1))
|
||||||
|
end
|
||||||
|
|
||||||
|
|
65
plugins/Bk/dressing.irp.f
Normal file
65
plugins/Bk/dressing.irp.f
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
BEGIN_PROVIDER [ double precision, fock_diag_tmp_, (2,mo_tot_num+1,Nproc) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, current_generator_, (Nproc) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Temporary arrays for speedup
|
||||||
|
END_DOC
|
||||||
|
current_generator_(:) = 0
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
subroutine dress_with_alpha_buffer(Nstates,Ndet,Nint,delta_ij_loc, i_gen, minilist, det_minilist, n_minilist, alpha, iproc)
|
||||||
|
use bitmasks
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
!delta_ij_loc(:,:,1) : dressing column for H
|
||||||
|
!delta_ij_loc(:,:,2) : dressing column for S2
|
||||||
|
!minilist : indices of determinants connected to alpha ( in psi_det_sorted )
|
||||||
|
!n_minilist : size of minilist
|
||||||
|
!alpha : alpha determinant
|
||||||
|
END_DOC
|
||||||
|
integer, intent(in) :: Nint, Ndet, Nstates, n_minilist, iproc, i_gen
|
||||||
|
integer(bit_kind), intent(in) :: alpha(Nint,2), det_minilist(Nint, 2, n_minilist)
|
||||||
|
integer,intent(in) :: minilist(n_minilist)
|
||||||
|
double precision, intent(inout) :: delta_ij_loc(Nstates,Ndet,2)
|
||||||
|
|
||||||
|
integer :: j, j_mini, i_state
|
||||||
|
double precision :: c_alpha(N_states), h_alpha_alpha, hdress, sdress
|
||||||
|
double precision :: i_h_alpha, i_s_alpha, alpha_h_psi(N_states)
|
||||||
|
|
||||||
|
double precision, external :: diag_H_mat_elem_fock
|
||||||
|
|
||||||
|
if(current_generator_(iproc) /= i_gen) then
|
||||||
|
current_generator_(iproc) = i_gen
|
||||||
|
call build_fock_tmp(fock_diag_tmp_(1,1,iproc),psi_det_generators(1,1,i_gen),N_int)
|
||||||
|
end if
|
||||||
|
|
||||||
|
h_alpha_alpha = diag_H_mat_elem_fock(psi_det_generators(1,1,i_gen),alpha,fock_diag_tmp_(1,1,iproc),N_int)
|
||||||
|
call i_H_psi_minilist(alpha,det_minilist,minilist,n_minilist,psi_coef,N_int,n_minilist,size(psi_coef,1),N_states,alpha_h_psi)
|
||||||
|
|
||||||
|
do i_state=1,N_states
|
||||||
|
if (h_alpha_alpha - dress_e0_denominator(i_state) > 0.1d0 ) then
|
||||||
|
c_alpha(i_state) = alpha_h_psi(i_state) / &
|
||||||
|
(dress_e0_denominator(i_state) - h_alpha_alpha)
|
||||||
|
else
|
||||||
|
c_alpha(i_state) = 0.d0
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
|
||||||
|
do j_mini=1,n_minilist
|
||||||
|
j = minilist(j_mini)
|
||||||
|
call i_H_j (det_minilist(1,1,j_mini),alpha,N_int,i_h_alpha)
|
||||||
|
call get_s2(det_minilist(1,1,j_mini),alpha,N_int,i_s_alpha)
|
||||||
|
do i_state=1,N_states
|
||||||
|
hdress = c_alpha(i_state) * i_h_alpha
|
||||||
|
sdress = c_alpha(i_state) * i_s_alpha
|
||||||
|
delta_ij_loc(i_state,j,1) = delta_ij_loc(i_state,j,1) + hdress
|
||||||
|
delta_ij_loc(i_state,j,2) = delta_ij_loc(i_state,j,2) + sdress
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
|||||||
Generators_CAS Perturbation Selectors_CASSD ZMQ
|
Generators_CAS Perturbation Selectors_CASSD ZMQ DavidsonUndressed
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
! Generates subroutine H_apply_cid
|
! Generates subroutine H_apply_cid
|
||||||
! ----------------------------------
|
! ----------------------------------
|
||||||
|
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import H_apply
|
from generate_h_apply import H_apply
|
||||||
H = H_apply("cid",do_double_exc=True,do_mono_exc=False)
|
H = H_apply("cid",do_double_exc=True,do_mono_exc=False)
|
||||||
print H
|
print H
|
||||||
|
@ -1 +1 @@
|
|||||||
Selectors_full SingleRefMethod Davidson
|
Selectors_full SingleRefMethod DavidsonUndressed
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import *
|
from generate_h_apply import *
|
||||||
from perturbation import perturbations
|
from perturbation import perturbations
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ subroutine H_apply_cisd_selection(perturbation,pt2, norm_pert, H_pert_diag, N_st
|
|||||||
integer, intent(in) :: N_st
|
integer, intent(in) :: N_st
|
||||||
double precision, intent(inout):: pt2(N_st), norm_pert(N_st), H_pert_diag(N_st)
|
double precision, intent(inout):: pt2(N_st), norm_pert(N_st), H_pert_diag(N_st)
|
||||||
|
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from perturbation import perturbations
|
from perturbation import perturbations
|
||||||
|
|
||||||
for perturbation in perturbations:
|
for perturbation in perturbations:
|
||||||
|
@ -1 +1 @@
|
|||||||
Perturbation CID
|
Perturbation CID DavidsonUndressed
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
! Generates subroutine H_apply_cisd
|
! Generates subroutine H_apply_cisd
|
||||||
! ----------------------------------
|
! ----------------------------------
|
||||||
|
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import H_apply
|
from generate_h_apply import H_apply
|
||||||
H = H_apply("cis",do_double_exc=False)
|
H = H_apply("cis",do_double_exc=False)
|
||||||
print H
|
print H
|
||||||
|
@ -1 +1 @@
|
|||||||
Selectors_full SingleRefMethod Davidson
|
Selectors_full SingleRefMethod DavidsonUndressed
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
! Generates subroutine H_apply_cisd
|
! Generates subroutine H_apply_cisd
|
||||||
! ----------------------------------
|
! ----------------------------------
|
||||||
|
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import H_apply
|
from generate_h_apply import H_apply
|
||||||
H = H_apply("cisd")
|
H = H_apply("cisd")
|
||||||
print H
|
print H
|
||||||
|
@ -1 +1 @@
|
|||||||
Selectors_full SingleRefMethod Davidson
|
Selectors_full SingleRefMethod DavidsonUndressed
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import *
|
from generate_h_apply import *
|
||||||
from perturbation import perturbations
|
from perturbation import perturbations
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import *
|
from generate_h_apply import *
|
||||||
from perturbation import perturbations
|
from perturbation import perturbations
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ subroutine H_apply_cisd_selection(perturbation,pt2, norm_pert, H_pert_diag, N_st
|
|||||||
integer, intent(in) :: N_st
|
integer, intent(in) :: N_st
|
||||||
double precision, intent(inout):: pt2(N_st), norm_pert(N_st), H_pert_diag(N_st)
|
double precision, intent(inout):: pt2(N_st), norm_pert(N_st), H_pert_diag(N_st)
|
||||||
|
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from perturbation import perturbations
|
from perturbation import perturbations
|
||||||
|
|
||||||
for perturbation in perturbations:
|
for perturbation in perturbations:
|
||||||
|
@ -1 +1 @@
|
|||||||
Determinants Davidson
|
Determinants DavidsonUndressed
|
||||||
|
1
plugins/DavidsonDressed/NEEDED_CHILDREN_MODULES
Normal file
1
plugins/DavidsonDressed/NEEDED_CHILDREN_MODULES
Normal file
@ -0,0 +1 @@
|
|||||||
|
Davidson
|
14
plugins/DavidsonDressed/README.rst
Normal file
14
plugins/DavidsonDressed/README.rst
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
===============
|
||||||
|
DavidsonDressed
|
||||||
|
===============
|
||||||
|
|
||||||
|
Davidson with single-column dressing
|
||||||
|
|
||||||
|
Needed Modules
|
||||||
|
==============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
||||||
|
Documentation
|
||||||
|
=============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
191
plugins/DavidsonDressed/diagonalize_CI.irp.f
Normal file
191
plugins/DavidsonDressed/diagonalize_CI.irp.f
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
BEGIN_PROVIDER [ double precision, CI_energy_dressed, (N_states_diag) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! N_states lowest eigenvalues of the CI matrix
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
integer :: j
|
||||||
|
character*(8) :: st
|
||||||
|
call write_time(6)
|
||||||
|
do j=1,min(N_det,N_states_diag)
|
||||||
|
CI_energy_dressed(j) = CI_electronic_energy_dressed(j) + nuclear_repulsion
|
||||||
|
enddo
|
||||||
|
do j=1,min(N_det,N_states)
|
||||||
|
write(st,'(I4)') j
|
||||||
|
call write_double(6,CI_energy_dressed(j),'Energy of state '//trim(st))
|
||||||
|
call write_double(6,CI_eigenvectors_s2_dressed(j),'S^2 of state '//trim(st))
|
||||||
|
enddo
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, CI_electronic_energy_dressed, (N_states_diag) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, CI_eigenvectors_dressed, (N_det,N_states_diag) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, CI_eigenvectors_s2_dressed, (N_states_diag) ]
|
||||||
|
BEGIN_DOC
|
||||||
|
! Eigenvectors/values of the CI matrix
|
||||||
|
END_DOC
|
||||||
|
implicit none
|
||||||
|
double precision :: ovrlp,u_dot_v
|
||||||
|
integer :: i_good_state
|
||||||
|
integer, allocatable :: index_good_state_array(:)
|
||||||
|
logical, allocatable :: good_state_array(:)
|
||||||
|
double precision, allocatable :: s2_values_tmp(:)
|
||||||
|
integer :: i_other_state
|
||||||
|
double precision, allocatable :: eigenvectors(:,:), eigenvectors_s2(:,:), eigenvalues(:)
|
||||||
|
integer :: i_state
|
||||||
|
double precision :: e_0
|
||||||
|
integer :: i,j,k,mrcc_state
|
||||||
|
double precision, allocatable :: s2_eigvalues(:)
|
||||||
|
double precision, allocatable :: e_array(:)
|
||||||
|
integer, allocatable :: iorder(:)
|
||||||
|
|
||||||
|
PROVIDE threshold_davidson nthreads_davidson
|
||||||
|
! Guess values for the "N_states" states of the CI_eigenvectors_dressed
|
||||||
|
do j=1,min(N_states,N_det)
|
||||||
|
do i=1,N_det
|
||||||
|
CI_eigenvectors_dressed(i,j) = psi_coef(i,j)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
do j=min(N_states,N_det)+1,N_states_diag
|
||||||
|
do i=1,N_det
|
||||||
|
CI_eigenvectors_dressed(i,j) = 0.d0
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
if (diag_algorithm == "Davidson") then
|
||||||
|
|
||||||
|
do j=1,min(N_states,N_det)
|
||||||
|
do i=1,N_det
|
||||||
|
CI_eigenvectors_dressed(i,j) = psi_coef(i,j)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
call davidson_diag_HS2(psi_det,CI_eigenvectors_dressed, CI_eigenvectors_s2_dressed,&
|
||||||
|
size(CI_eigenvectors_dressed,1), CI_electronic_energy_dressed,&
|
||||||
|
N_det,min(N_det,N_states),min(N_det,N_states_diag),N_int,1)
|
||||||
|
call u_0_S2_u_0(CI_eigenvectors_s2_dressed,CI_eigenvectors_dressed,N_det,psi_det,N_int,&
|
||||||
|
N_states_diag,size(CI_eigenvectors_dressed,1))
|
||||||
|
|
||||||
|
|
||||||
|
else if (diag_algorithm == "Lapack") then
|
||||||
|
|
||||||
|
allocate (eigenvectors(size(H_matrix_dressed,1),N_det))
|
||||||
|
allocate (eigenvalues(N_det))
|
||||||
|
|
||||||
|
call lapack_diag(eigenvalues,eigenvectors, &
|
||||||
|
H_matrix_dressed,size(H_matrix_dressed,1),N_det)
|
||||||
|
CI_electronic_energy_dressed(:) = 0.d0
|
||||||
|
if (s2_eig) then
|
||||||
|
i_state = 0
|
||||||
|
allocate (s2_eigvalues(N_det))
|
||||||
|
allocate(index_good_state_array(N_det),good_state_array(N_det))
|
||||||
|
good_state_array = .False.
|
||||||
|
|
||||||
|
call u_0_S2_u_0(s2_eigvalues,eigenvectors,N_det,psi_det,N_int,&
|
||||||
|
N_det,size(eigenvectors,1))
|
||||||
|
do j=1,N_det
|
||||||
|
! Select at least n_states states with S^2 values closed to "expected_s2"
|
||||||
|
if(dabs(s2_eigvalues(j)-expected_s2).le.0.5d0)then
|
||||||
|
i_state +=1
|
||||||
|
index_good_state_array(i_state) = j
|
||||||
|
good_state_array(j) = .True.
|
||||||
|
endif
|
||||||
|
if(i_state.eq.N_states) then
|
||||||
|
exit
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
if(i_state .ne.0)then
|
||||||
|
! Fill the first "i_state" states that have a correct S^2 value
|
||||||
|
do j = 1, i_state
|
||||||
|
do i=1,N_det
|
||||||
|
CI_eigenvectors_dressed(i,j) = eigenvectors(i,index_good_state_array(j))
|
||||||
|
enddo
|
||||||
|
CI_electronic_energy_dressed(j) = eigenvalues(index_good_state_array(j))
|
||||||
|
CI_eigenvectors_s2_dressed(j) = s2_eigvalues(index_good_state_array(j))
|
||||||
|
enddo
|
||||||
|
i_other_state = 0
|
||||||
|
do j = 1, N_det
|
||||||
|
if(good_state_array(j))cycle
|
||||||
|
i_other_state +=1
|
||||||
|
if(i_state+i_other_state.gt.n_states_diag)then
|
||||||
|
exit
|
||||||
|
endif
|
||||||
|
do i=1,N_det
|
||||||
|
CI_eigenvectors_dressed(i,i_state+i_other_state) = eigenvectors(i,j)
|
||||||
|
enddo
|
||||||
|
CI_electronic_energy_dressed(i_state+i_other_state) = eigenvalues(j)
|
||||||
|
CI_eigenvectors_s2_dressed(i_state+i_other_state) = s2_eigvalues(i_state+i_other_state)
|
||||||
|
enddo
|
||||||
|
else
|
||||||
|
print*,''
|
||||||
|
print*,'!!!!!!!! WARNING !!!!!!!!!'
|
||||||
|
print*,' Within the ',N_det,'determinants selected'
|
||||||
|
print*,' and the ',N_states_diag,'states requested'
|
||||||
|
print*,' We did not find any state with S^2 values close to ',expected_s2
|
||||||
|
print*,' We will then set the first N_states eigenvectors of the H matrix'
|
||||||
|
print*,' as the CI_eigenvectors_dressed'
|
||||||
|
print*,' You should consider more states and maybe ask for s2_eig to be .True. or just enlarge the CI space'
|
||||||
|
print*,''
|
||||||
|
do j=1,min(N_states_diag,N_det)
|
||||||
|
do i=1,N_det
|
||||||
|
CI_eigenvectors_dressed(i,j) = eigenvectors(i,j)
|
||||||
|
enddo
|
||||||
|
CI_electronic_energy_dressed(j) = eigenvalues(j)
|
||||||
|
CI_eigenvectors_s2_dressed(j) = s2_eigvalues(j)
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
|
deallocate(index_good_state_array,good_state_array)
|
||||||
|
deallocate(s2_eigvalues)
|
||||||
|
else
|
||||||
|
call u_0_S2_u_0(CI_eigenvectors_s2_dressed,eigenvectors,N_det,psi_det,N_int,&
|
||||||
|
min(N_det,N_states_diag),size(eigenvectors,1))
|
||||||
|
! Select the "N_states_diag" states of lowest energy
|
||||||
|
do j=1,min(N_det,N_states_diag)
|
||||||
|
do i=1,N_det
|
||||||
|
CI_eigenvectors_dressed(i,j) = eigenvectors(i,j)
|
||||||
|
enddo
|
||||||
|
CI_electronic_energy_dressed(j) = eigenvalues(j)
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
|
deallocate(eigenvectors,eigenvalues)
|
||||||
|
endif
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
subroutine diagonalize_CI_dressed
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Replace the coefficients of the CI states by the coefficients of the
|
||||||
|
! eigenstates of the CI matrix
|
||||||
|
END_DOC
|
||||||
|
integer :: i,j
|
||||||
|
do j=1,N_states
|
||||||
|
do i=1,N_det
|
||||||
|
psi_coef(i,j) = CI_eigenvectors_dressed(i,j)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
SOFT_TOUCH psi_coef
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, h_matrix_dressed, (N_det,N_det) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Dressed H with Delta_ij
|
||||||
|
END_DOC
|
||||||
|
integer :: i, j, k
|
||||||
|
|
||||||
|
h_matrix_dressed(1:N_det,1:N_det) = h_matrix_all_dets(1:N_det,1:N_det)
|
||||||
|
do k=1,N_states
|
||||||
|
do j=1,N_det
|
||||||
|
do i=1,N_det
|
||||||
|
h_matrix_dressed(i,j) = h_matrix_dressed(i,j) + &
|
||||||
|
0.5d0 * (dressing_column_h(i,k) * psi_coef(j,k) + &
|
||||||
|
dressing_column_h(j,k) * psi_coef(i,k))
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import *
|
from generate_h_apply import *
|
||||||
|
|
||||||
s = H_apply("just_1h_1p")
|
s = H_apply("just_1h_1p")
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import *
|
from generate_h_apply import *
|
||||||
|
|
||||||
s = H_apply("FCI")
|
s = H_apply("FCI")
|
||||||
|
@ -1 +1 @@
|
|||||||
Perturbation Selectors_full Generators_full Davidson
|
Perturbation Selectors_full Generators_full DavidsonUndressed
|
||||||
|
@ -1 +1 @@
|
|||||||
Perturbation Selectors_full Generators_full ZMQ FourIdx MPI
|
Perturbation Selectors_full Generators_full ZMQ FourIdx MPI DavidsonUndressed
|
||||||
|
@ -12,14 +12,21 @@ BEGIN_PROVIDER [ double precision, pt2_E0_denominator, (N_states) ]
|
|||||||
! E0 in the denominator of the PT2
|
! E0 in the denominator of the PT2
|
||||||
END_DOC
|
END_DOC
|
||||||
if (initialize_pt2_E0_denominator) then
|
if (initialize_pt2_E0_denominator) then
|
||||||
pt2_E0_denominator(1:N_states) = psi_energy(1:N_states)
|
if (h0_type == "EN") then
|
||||||
|
pt2_E0_denominator(1:N_states) = psi_energy(1:N_states)
|
||||||
|
else if (h0_type == "Barycentric") then
|
||||||
|
pt2_E0_denominator(1:N_states) = barycentric_electronic_energy(1:N_states)
|
||||||
|
else
|
||||||
|
print *, h0_type, ' not implemented'
|
||||||
|
stop
|
||||||
|
endif
|
||||||
! call ezfio_get_full_ci_zmq_energy(pt2_E0_denominator(1))
|
! call ezfio_get_full_ci_zmq_energy(pt2_E0_denominator(1))
|
||||||
! pt2_E0_denominator(1) -= nuclear_repulsion
|
! pt2_E0_denominator(1) -= nuclear_repulsion
|
||||||
! pt2_E0_denominator(1:N_states) = HF_energy - nuclear_repulsion
|
! pt2_E0_denominator(1:N_states) = HF_energy - nuclear_repulsion
|
||||||
! pt2_E0_denominator(1:N_states) = barycentric_electronic_energy(1:N_states)
|
|
||||||
call write_double(6,pt2_E0_denominator(1)+nuclear_repulsion, 'PT2 Energy denominator')
|
call write_double(6,pt2_E0_denominator(1)+nuclear_repulsion, 'PT2 Energy denominator')
|
||||||
else
|
else
|
||||||
pt2_E0_denominator = -huge(1.d0)
|
pt2_E0_denominator = -huge(1.d0)
|
||||||
endif
|
endif
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ subroutine run
|
|||||||
double precision :: E_CI_before, relative_error, absolute_error, eqt
|
double precision :: E_CI_before, relative_error, absolute_error, eqt
|
||||||
|
|
||||||
allocate (pt2(N_states))
|
allocate (pt2(N_states))
|
||||||
|
call diagonalize_CI()
|
||||||
pt2 = 0.d0
|
pt2 = 0.d0
|
||||||
|
|
||||||
E_CI_before = pt2_E0_denominator(1) + nuclear_repulsion
|
E_CI_before = pt2_E0_denominator(1) + nuclear_repulsion
|
||||||
|
@ -342,7 +342,7 @@ subroutine pt2_collector(zmq_socket_pull, E, b, tbc, comb, Ncomb, computed, pt2_
|
|||||||
endif
|
endif
|
||||||
end if
|
end if
|
||||||
end do pullLoop
|
end do pullLoop
|
||||||
|
|
||||||
E0 = sum(pt2_detail(pt2_stoch_istate,:first_det_of_teeth(tooth)-1))
|
E0 = sum(pt2_detail(pt2_stoch_istate,:first_det_of_teeth(tooth)-1))
|
||||||
prop = ((1d0 - dfloat(comb_teeth - tooth + 1) * comb_step) - pt2_cweight(first_det_of_teeth(tooth)-1))
|
prop = ((1d0 - dfloat(comb_teeth - tooth + 1) * comb_step) - pt2_cweight(first_det_of_teeth(tooth)-1))
|
||||||
prop = prop * pt2_weight_inv(first_det_of_teeth(tooth))
|
prop = prop * pt2_weight_inv(first_det_of_teeth(tooth))
|
||||||
@ -513,7 +513,7 @@ END_PROVIDER
|
|||||||
double precision :: norm_left, stato
|
double precision :: norm_left, stato
|
||||||
integer, external :: pt2_find
|
integer, external :: pt2_find
|
||||||
|
|
||||||
pt2_weight(1) = psi_coef_generators(1,pt2_stoch_istate)**2
|
pt2_weight(1) = psi_coef_generators(1,pt2_stoch_istate)**2
|
||||||
pt2_cweight(1) = psi_coef_generators(1,pt2_stoch_istate)**2
|
pt2_cweight(1) = psi_coef_generators(1,pt2_stoch_istate)**2
|
||||||
|
|
||||||
do i=1,N_det_generators
|
do i=1,N_det_generators
|
||||||
|
@ -41,7 +41,7 @@ subroutine run_pt2_slave(thread,iproc,energy)
|
|||||||
|
|
||||||
buf%N = 0
|
buf%N = 0
|
||||||
n_tasks = 0
|
n_tasks = 0
|
||||||
call create_selection_buffer(1, 2, buf)
|
call create_selection_buffer(0, 0, buf)
|
||||||
|
|
||||||
done = .False.
|
done = .False.
|
||||||
do while (.not.done)
|
do while (.not.done)
|
||||||
|
@ -5,7 +5,6 @@ BEGIN_PROVIDER [ integer, fragment_count ]
|
|||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Number of fragments for the deterministic part
|
! Number of fragments for the deterministic part
|
||||||
END_DOC
|
END_DOC
|
||||||
! fragment_count = (elec_alpha_num-n_core_orb)*mo_tot_num
|
|
||||||
fragment_count = (elec_alpha_num-n_core_orb)**2
|
fragment_count = (elec_alpha_num-n_core_orb)**2
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
@ -71,7 +70,6 @@ subroutine select_connected(i_generator,E0,pt2,b,subset)
|
|||||||
hole_mask(k,2) = iand(generators_bitmask(k,2,s_hole,l), psi_det_generators(k,2,i_generator))
|
hole_mask(k,2) = iand(generators_bitmask(k,2,s_hole,l), psi_det_generators(k,2,i_generator))
|
||||||
particle_mask(k,1) = iand(generators_bitmask(k,1,s_part,l), not(psi_det_generators(k,1,i_generator)) )
|
particle_mask(k,1) = iand(generators_bitmask(k,1,s_part,l), not(psi_det_generators(k,1,i_generator)) )
|
||||||
particle_mask(k,2) = iand(generators_bitmask(k,2,s_part,l), not(psi_det_generators(k,2,i_generator)) )
|
particle_mask(k,2) = iand(generators_bitmask(k,2,s_part,l), not(psi_det_generators(k,2,i_generator)) )
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
call select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,b,subset)
|
call select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,b,subset)
|
||||||
enddo
|
enddo
|
||||||
@ -255,6 +253,7 @@ subroutine get_m0(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs)
|
|||||||
deallocate(lbanned)
|
deallocate(lbanned)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,buf,subset)
|
subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,buf,subset)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
use selection_types
|
use selection_types
|
||||||
@ -291,7 +290,7 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
|
|||||||
|
|
||||||
monoAdo = .true.
|
monoAdo = .true.
|
||||||
monoBdo = .true.
|
monoBdo = .true.
|
||||||
|
|
||||||
|
|
||||||
do k=1,N_int
|
do k=1,N_int
|
||||||
hole (k,1) = iand(psi_det_generators(k,1,i_generator), hole_mask(k,1))
|
hole (k,1) = iand(psi_det_generators(k,1,i_generator), hole_mask(k,1))
|
||||||
@ -299,7 +298,8 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
|
|||||||
particle(k,1) = iand(not(psi_det_generators(k,1,i_generator)), particle_mask(k,1))
|
particle(k,1) = iand(not(psi_det_generators(k,1,i_generator)), particle_mask(k,1))
|
||||||
particle(k,2) = iand(not(psi_det_generators(k,2,i_generator)), particle_mask(k,2))
|
particle(k,2) = iand(not(psi_det_generators(k,2,i_generator)), particle_mask(k,2))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
|
||||||
integer :: N_holes(2), N_particles(2)
|
integer :: N_holes(2), N_particles(2)
|
||||||
integer :: hole_list(N_int*bit_kind_size,2)
|
integer :: hole_list(N_int*bit_kind_size,2)
|
||||||
integer :: particle_list(N_int*bit_kind_size,2)
|
integer :: particle_list(N_int*bit_kind_size,2)
|
||||||
@ -599,7 +599,6 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
|
|||||||
|
|
||||||
logical, external :: detEq
|
logical, external :: detEq
|
||||||
|
|
||||||
|
|
||||||
if(sp == 3) then
|
if(sp == 3) then
|
||||||
s1 = 1
|
s1 = 1
|
||||||
s2 = 2
|
s2 = 2
|
||||||
@ -617,6 +616,7 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
|
|||||||
do p2=ib,mo_tot_num
|
do p2=ib,mo_tot_num
|
||||||
if(bannedOrb(p2, s2)) cycle
|
if(bannedOrb(p2, s2)) cycle
|
||||||
if(banned(p1,p2)) cycle
|
if(banned(p1,p2)) cycle
|
||||||
|
|
||||||
if( sum(abs(mat(1:N_states, p1, p2))) == 0d0) cycle
|
if( sum(abs(mat(1:N_states, p1, p2))) == 0d0) cycle
|
||||||
call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int)
|
call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int)
|
||||||
|
|
||||||
@ -633,7 +633,6 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
|
|||||||
e_pert = 0.5d0 * (tmp - delta_E)
|
e_pert = 0.5d0 * (tmp - delta_E)
|
||||||
pt2(istate) = pt2(istate) + e_pert
|
pt2(istate) = pt2(istate) + e_pert
|
||||||
min_e_pert = min(e_pert,min_e_pert)
|
min_e_pert = min(e_pert,min_e_pert)
|
||||||
! ci(istate) = e_pert / mat(istate, p1, p2)
|
|
||||||
end do
|
end do
|
||||||
|
|
||||||
if(min_e_pert <= buf%mini) then
|
if(min_e_pert <= buf%mini) then
|
||||||
@ -771,6 +770,7 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
|
|||||||
|
|
||||||
if(tip == 3) then
|
if(tip == 3) then
|
||||||
puti = p(1, mi)
|
puti = p(1, mi)
|
||||||
|
if(bannedOrb(puti, mi)) return
|
||||||
do i = 1, 3
|
do i = 1, 3
|
||||||
putj = p(i, ma)
|
putj = p(i, ma)
|
||||||
if(banned(putj,puti,bant)) cycle
|
if(banned(putj,puti,bant)) cycle
|
||||||
@ -793,11 +793,12 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
|
|||||||
h2 = h(1,2)
|
h2 = h(1,2)
|
||||||
do j = 1,2
|
do j = 1,2
|
||||||
putj = p(j, 2)
|
putj = p(j, 2)
|
||||||
|
if(bannedOrb(putj, 2)) cycle
|
||||||
p2 = p(turn2(j), 2)
|
p2 = p(turn2(j), 2)
|
||||||
do i = 1,2
|
do i = 1,2
|
||||||
puti = p(i, 1)
|
puti = p(i, 1)
|
||||||
|
|
||||||
if(banned(puti,putj,bant)) cycle
|
if(banned(puti,putj,bant) .or. bannedOrb(puti,1)) cycle
|
||||||
p1 = p(turn2(i), 1)
|
p1 = p(turn2(i), 1)
|
||||||
|
|
||||||
hij = mo_bielec_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2)
|
hij = mo_bielec_integral(p1, p2, h1, h2) * get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2)
|
||||||
@ -812,8 +813,10 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
|
|||||||
h2 = h(2, ma)
|
h2 = h(2, ma)
|
||||||
do i=1,3
|
do i=1,3
|
||||||
puti = p(i, ma)
|
puti = p(i, ma)
|
||||||
|
if(bannedOrb(puti,ma)) cycle
|
||||||
do j=i+1,4
|
do j=i+1,4
|
||||||
putj = p(j, ma)
|
putj = p(j, ma)
|
||||||
|
if(bannedOrb(putj,ma)) cycle
|
||||||
if(banned(puti,putj,1)) cycle
|
if(banned(puti,putj,1)) cycle
|
||||||
|
|
||||||
i1 = turn2d(1, i, j)
|
i1 = turn2d(1, i, j)
|
||||||
@ -830,7 +833,9 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
|
|||||||
p1 = p(1, mi)
|
p1 = p(1, mi)
|
||||||
do i=1,3
|
do i=1,3
|
||||||
puti = p(turn3(1,i), ma)
|
puti = p(turn3(1,i), ma)
|
||||||
|
if(bannedOrb(puti,ma)) cycle
|
||||||
putj = p(turn3(2,i), ma)
|
putj = p(turn3(2,i), ma)
|
||||||
|
if(bannedOrb(putj,ma)) cycle
|
||||||
if(banned(puti,putj,1)) cycle
|
if(banned(puti,putj,1)) cycle
|
||||||
p2 = p(i, ma)
|
p2 = p(i, ma)
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ subroutine add_to_selection_buffer(b, det, val)
|
|||||||
double precision, intent(in) :: val
|
double precision, intent(in) :: val
|
||||||
integer :: i
|
integer :: i
|
||||||
|
|
||||||
if(val <= b%mini) then
|
if(b%N > 0 .and. val <= b%mini) then
|
||||||
b%cur += 1
|
b%cur += 1
|
||||||
b%det(1:N_int,1:2,b%cur) = det(1:N_int,1:2)
|
b%det(1:N_int,1:2,b%cur) = det(1:N_int,1:2)
|
||||||
b%val(b%cur) = val
|
b%val(b%cur) = val
|
||||||
@ -119,7 +119,7 @@ subroutine sort_selection_buffer(b)
|
|||||||
integer(bit_kind), pointer :: detmp(:,:,:)
|
integer(bit_kind), pointer :: detmp(:,:,:)
|
||||||
integer :: i, nmwen
|
integer :: i, nmwen
|
||||||
logical, external :: detEq
|
logical, external :: detEq
|
||||||
if (b%cur == 0) return
|
if (b%N == 0 .or. b%cur == 0) return
|
||||||
nmwen = min(b%N, b%cur)
|
nmwen = min(b%N, b%cur)
|
||||||
|
|
||||||
allocate(iorder(b%cur), detmp(N_int, 2, size(b%det,3)))
|
allocate(iorder(b%cur), detmp(N_int, 2, size(b%det,3)))
|
||||||
|
@ -7,22 +7,11 @@ BEGIN_PROVIDER [ integer, N_det_generators ]
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: i,k,l
|
integer :: i,k,l
|
||||||
logical :: good
|
logical :: good
|
||||||
|
integer, external :: number_of_holes,number_of_particles
|
||||||
call write_time(6)
|
call write_time(6)
|
||||||
N_det_generators = 0
|
N_det_generators = 0
|
||||||
do i=1,N_det
|
do i=1,N_det
|
||||||
do l=1,n_cas_bitmask
|
good = ( number_of_holes(psi_det_sorted(1,1,i)) ==0).and.(number_of_particles(psi_det_sorted(1,1,i))==0 )
|
||||||
good = .True.
|
|
||||||
do k=1,N_int
|
|
||||||
good = good .and. ( &
|
|
||||||
iand(not(cas_bitmask(k,1,l)), psi_det_sorted(k,1,i)) == &
|
|
||||||
iand(not(cas_bitmask(k,1,l)), HF_bitmask(k,1)) ) .and. ( &
|
|
||||||
iand(not(cas_bitmask(k,2,l)), psi_det_sorted(k,2,i)) == &
|
|
||||||
iand(not(cas_bitmask(k,2,l)), HF_bitmask(k,2)) )
|
|
||||||
enddo
|
|
||||||
if (good) then
|
|
||||||
exit
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
if (good) then
|
if (good) then
|
||||||
N_det_generators += 1
|
N_det_generators += 1
|
||||||
endif
|
endif
|
||||||
@ -40,28 +29,17 @@ END_PROVIDER
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: i, k, l, m
|
integer :: i, k, l, m
|
||||||
logical :: good
|
logical :: good
|
||||||
|
integer, external :: number_of_holes,number_of_particles
|
||||||
m=0
|
m=0
|
||||||
do i=1,N_det
|
do i=1,N_det
|
||||||
do l=1,n_cas_bitmask
|
good = ( number_of_holes(psi_det_sorted(1,1,i)) ==0).and.(number_of_particles(psi_det_sorted(1,1,i))==0 )
|
||||||
good = .True.
|
|
||||||
do k=1,N_int
|
|
||||||
good = good .and. ( &
|
|
||||||
iand(not(cas_bitmask(k,1,l)), psi_det_sorted(k,1,i)) == &
|
|
||||||
iand(not(cas_bitmask(k,1,l)), HF_bitmask(k,1)) .and. ( &
|
|
||||||
iand(not(cas_bitmask(k,2,l)), psi_det_sorted(k,2,i)) == &
|
|
||||||
iand(not(cas_bitmask(k,2,l)), HF_bitmask(k,2) )) )
|
|
||||||
enddo
|
|
||||||
if (good) then
|
|
||||||
exit
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
if (good) then
|
if (good) then
|
||||||
m = m+1
|
m = m+1
|
||||||
do k=1,N_int
|
do k=1,N_int
|
||||||
psi_det_generators(k,1,m) = psi_det_sorted(k,1,i)
|
psi_det_generators(k,1,m) = psi_det_sorted(k,1,i)
|
||||||
psi_det_generators(k,2,m) = psi_det_sorted(k,2,i)
|
psi_det_generators(k,2,m) = psi_det_sorted(k,2,i)
|
||||||
enddo
|
enddo
|
||||||
psi_coef_generators(m,:) = psi_coef(m,:)
|
psi_coef_generators(m,:) = psi_coef_sorted(m,:)
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import *
|
from generate_h_apply import *
|
||||||
from perturbation import perturbations
|
from perturbation import perturbations
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
Perturbation Selectors_full SingleRefMethod ZMQ
|
Perturbation Selectors_full SingleRefMethod ZMQ DavidsonUndressed
|
||||||
|
@ -1,21 +1,19 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import *
|
from generate_h_apply import *
|
||||||
|
|
||||||
s = H_apply("mrcc")
|
s = H_apply("mrcc")
|
||||||
s.data["parameters"] = ", delta_ij_, delta_ii_, Nstates, Ndet_non_ref, Ndet_ref"
|
s.data["parameters"] = ", delta_ij_, Nstates, Ndet_non_ref, Ndet_ref"
|
||||||
s.data["declarations"] += """
|
s.data["declarations"] += """
|
||||||
integer, intent(in) :: Nstates, Ndet_ref, Ndet_non_ref
|
integer, intent(in) :: Nstates, Ndet_ref, Ndet_non_ref
|
||||||
double precision, intent(in) :: delta_ij_(Nstates, Ndet_non_ref, Ndet_ref)
|
double precision, intent(in) :: delta_ij_(Nstates, Ndet_non_ref, Ndet_ref)
|
||||||
double precision, intent(in) :: delta_ii_(Nstates, Ndet_ref)
|
|
||||||
"""
|
"""
|
||||||
s.data["keys_work"] = "call mrcc_dress(delta_ij_,delta_ii_,Nstates,Ndet_non_ref,Ndet_ref,i_generator,key_idx,keys_out,N_int,iproc,key_mask)"
|
s.data["keys_work"] = "call mrcc_dress(delta_ij_,Nstates,Ndet_non_ref,Ndet_ref,i_generator,key_idx,keys_out,N_int,iproc,key_mask)"
|
||||||
s.data["params_post"] += ", delta_ij_, delta_ii_, Nstates, Ndet_non_ref, Ndet_ref"
|
s.data["params_post"] += ", delta_ij_, Nstates, Ndet_non_ref, Ndet_ref"
|
||||||
s.data["params_main"] += "delta_ij_, delta_ii_, Nstates, Ndet_non_ref, Ndet_ref"
|
s.data["params_main"] += "delta_ij_, Nstates, Ndet_non_ref, Ndet_ref"
|
||||||
s.data["decls_main"] += """
|
s.data["decls_main"] += """
|
||||||
integer, intent(in) :: Ndet_ref, Ndet_non_ref, Nstates
|
integer, intent(in) :: Ndet_ref, Ndet_non_ref, Nstates
|
||||||
double precision, intent(in) :: delta_ij_(Nstates,Ndet_non_ref,Ndet_ref)
|
double precision, intent(in) :: delta_ij_(Nstates,Ndet_non_ref,Ndet_ref)
|
||||||
double precision, intent(in) :: delta_ii_(Nstates,Ndet_ref)
|
|
||||||
"""
|
"""
|
||||||
s.data["finalization"] = ""
|
s.data["finalization"] = ""
|
||||||
s.data["copy_buffer"] = ""
|
s.data["copy_buffer"] = ""
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -14,14 +14,13 @@ BEGIN_PROVIDER [ integer(omp_lock_kind), psi_ref_lock, (psi_det_size) ]
|
|||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
subroutine mrcc_dress(delta_ij_, delta_ii_, Nstates, Ndet_non_ref, Ndet_ref,i_generator,n_selected,det_buffer,Nint,iproc,key_mask)
|
subroutine mrcc_dress(delta_ij_, Nstates, Ndet_non_ref, Ndet_ref,i_generator,n_selected,det_buffer,Nint,iproc,key_mask)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
integer, intent(in) :: i_generator,n_selected, Nint, iproc
|
integer, intent(in) :: i_generator,n_selected, Nint, iproc
|
||||||
integer, intent(in) :: Nstates, Ndet_ref, Ndet_non_ref
|
integer, intent(in) :: Nstates, Ndet_ref, Ndet_non_ref
|
||||||
double precision, intent(inout) :: delta_ij_(Nstates,Ndet_non_ref,Ndet_ref)
|
double precision, intent(inout) :: delta_ij_(Nstates,Ndet_non_ref,Ndet_ref)
|
||||||
double precision, intent(inout) :: delta_ii_(Nstates,Ndet_ref)
|
|
||||||
|
|
||||||
integer(bit_kind), intent(in) :: det_buffer(Nint,2,n_selected)
|
integer(bit_kind), intent(in) :: det_buffer(Nint,2,n_selected)
|
||||||
integer :: i,j,k,l,m
|
integer :: i,j,k,l,m
|
||||||
@ -265,10 +264,8 @@ subroutine mrcc_dress(delta_ij_, delta_ii_, Nstates, Ndet_non_ref, Ndet_ref,i_ge
|
|||||||
do l_sd=1,idx_alpha(0)
|
do l_sd=1,idx_alpha(0)
|
||||||
k_sd = idx_alpha(l_sd)
|
k_sd = idx_alpha(l_sd)
|
||||||
delta_ij_(i_state,k_sd,i_I) = delta_ij_(i_state,k_sd,i_I) + dIa_hla(i_state,k_sd)
|
delta_ij_(i_state,k_sd,i_I) = delta_ij_(i_state,k_sd,i_I) + dIa_hla(i_state,k_sd)
|
||||||
delta_ii_(i_state,i_I) = delta_ii_(i_state,i_I) - dIa_hla(i_state,k_sd) * ci_inv(i_state) * psi_non_ref_coef_transp(i_state,k_sd)
|
|
||||||
enddo
|
enddo
|
||||||
else
|
else
|
||||||
!delta_ii_(i_state,i_I) = 0.d0
|
|
||||||
do l_sd=1,idx_alpha(0)
|
do l_sd=1,idx_alpha(0)
|
||||||
k_sd = idx_alpha(l_sd)
|
k_sd = idx_alpha(l_sd)
|
||||||
delta_ij_(i_state,k_sd,i_I) = delta_ij_(i_state,k_sd,i_I) + 0.5d0 * dIa_hla(i_state,k_sd)
|
delta_ij_(i_state,k_sd,i_I) = delta_ij_(i_state,k_sd,i_I) + 0.5d0 * dIa_hla(i_state,k_sd)
|
||||||
|
@ -139,210 +139,6 @@ BEGIN_PROVIDER [ double precision, hij_mrcc, (N_det_non_ref,N_det_ref) ]
|
|||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, h_matrix_dressed, (N_det,N_det,N_states) ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Dressed H with Delta_ij
|
|
||||||
END_DOC
|
|
||||||
integer :: i, j,istate,ii,jj
|
|
||||||
do istate = 1,N_states
|
|
||||||
do j=1,N_det
|
|
||||||
do i=1,N_det
|
|
||||||
h_matrix_dressed(i,j,istate) = h_matrix_all_dets(i,j)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
do ii = 1, N_det_ref
|
|
||||||
i =idx_ref(ii)
|
|
||||||
h_matrix_dressed(i,i,istate) += delta_ii(istate,ii)
|
|
||||||
do jj = 1, N_det_non_ref
|
|
||||||
j =idx_non_ref(jj)
|
|
||||||
h_matrix_dressed(i,j,istate) += delta_ij(istate,jj,ii)
|
|
||||||
h_matrix_dressed(j,i,istate) += delta_ij(istate,jj,ii)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, CI_electronic_energy_dressed, (N_states_diag) ]
|
|
||||||
&BEGIN_PROVIDER [ double precision, CI_eigenvectors_dressed, (N_det,N_states_diag) ]
|
|
||||||
&BEGIN_PROVIDER [ double precision, CI_eigenvectors_s2_dressed, (N_states_diag) ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Eigenvectors/values of the dressed CI matrix
|
|
||||||
END_DOC
|
|
||||||
double precision :: ovrlp,u_dot_v
|
|
||||||
integer :: i_good_state
|
|
||||||
integer, allocatable :: index_good_state_array(:)
|
|
||||||
logical, allocatable :: good_state_array(:)
|
|
||||||
double precision, allocatable :: s2_values_tmp(:)
|
|
||||||
integer :: i_other_state
|
|
||||||
double precision, allocatable :: eigenvectors(:,:), eigenvalues(:)
|
|
||||||
integer :: i_state
|
|
||||||
double precision :: e_0
|
|
||||||
integer :: i,j,k
|
|
||||||
double precision, allocatable :: s2_eigvalues(:)
|
|
||||||
double precision, allocatable :: e_array(:)
|
|
||||||
integer, allocatable :: iorder(:)
|
|
||||||
|
|
||||||
integer :: mrcc_state
|
|
||||||
|
|
||||||
do j=1,min(N_states,N_det)
|
|
||||||
do i=1,N_det
|
|
||||||
CI_eigenvectors_dressed(i,j) = psi_coef(i,j)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
if (diag_algorithm == "Davidson") then
|
|
||||||
|
|
||||||
allocate (eigenvectors(size(CI_eigenvectors_dressed,1),size(CI_eigenvectors_dressed,2)),&
|
|
||||||
eigenvalues(size(CI_electronic_energy_dressed,1)))
|
|
||||||
do j=1,min(N_states,N_det)
|
|
||||||
do i=1,N_det
|
|
||||||
eigenvectors(i,j) = psi_coef(i,j)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
do mrcc_state=1,N_states
|
|
||||||
do j=mrcc_state,min(N_states,N_det)
|
|
||||||
do i=1,N_det
|
|
||||||
eigenvectors(i,j) = psi_coef(i,j)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
call davidson_diag_mrcc_HS2(psi_det,eigenvectors, &
|
|
||||||
size(eigenvectors,1), &
|
|
||||||
eigenvalues,N_det,N_states,N_states_diag,N_int, &
|
|
||||||
6,mrcc_state)
|
|
||||||
CI_eigenvectors_dressed(1:N_det,mrcc_state) = eigenvectors(1:N_det,mrcc_state)
|
|
||||||
CI_electronic_energy_dressed(mrcc_state) = eigenvalues(mrcc_state)
|
|
||||||
enddo
|
|
||||||
do k=N_states+1,N_states_diag
|
|
||||||
CI_eigenvectors_dressed(1:N_det,k) = eigenvectors(1:N_det,k)
|
|
||||||
CI_electronic_energy_dressed(k) = eigenvalues(k)
|
|
||||||
enddo
|
|
||||||
call u_0_S2_u_0(CI_eigenvectors_s2_dressed,CI_eigenvectors_dressed,N_det,psi_det,N_int,&
|
|
||||||
N_states_diag,size(CI_eigenvectors_dressed,1))
|
|
||||||
|
|
||||||
deallocate (eigenvectors,eigenvalues)
|
|
||||||
|
|
||||||
else if (diag_algorithm == "Lapack") then
|
|
||||||
|
|
||||||
allocate (eigenvectors(size(H_matrix_dressed,1),N_det))
|
|
||||||
allocate (eigenvalues(N_det))
|
|
||||||
call lapack_diag(eigenvalues,eigenvectors, &
|
|
||||||
H_matrix_dressed,size(H_matrix_dressed,1),N_det)
|
|
||||||
CI_electronic_energy_dressed(:) = 0.d0
|
|
||||||
if (s2_eig) then
|
|
||||||
i_state = 0
|
|
||||||
allocate (s2_eigvalues(N_det))
|
|
||||||
allocate(index_good_state_array(N_det),good_state_array(N_det))
|
|
||||||
good_state_array = .False.
|
|
||||||
call u_0_S2_u_0(s2_eigvalues,eigenvectors,N_det,psi_det,N_int,&
|
|
||||||
N_det,size(eigenvectors,1))
|
|
||||||
do j=1,N_det
|
|
||||||
! Select at least n_states states with S^2 values closed to "expected_s2"
|
|
||||||
if(dabs(s2_eigvalues(j)-expected_s2).le.0.5d0)then
|
|
||||||
i_state += 1
|
|
||||||
index_good_state_array(i_state) = j
|
|
||||||
good_state_array(j) = .True.
|
|
||||||
endif
|
|
||||||
if (i_state==N_states) then
|
|
||||||
exit
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
if (i_state /= 0) then
|
|
||||||
! Fill the first "i_state" states that have a correct S^2 value
|
|
||||||
do j = 1, i_state
|
|
||||||
do i=1,N_det
|
|
||||||
CI_eigenvectors_dressed(i,j) = eigenvectors(i,index_good_state_array(j))
|
|
||||||
enddo
|
|
||||||
CI_electronic_energy_dressed(j) = eigenvalues(index_good_state_array(j))
|
|
||||||
CI_eigenvectors_s2_dressed(j) = s2_eigvalues(index_good_state_array(j))
|
|
||||||
enddo
|
|
||||||
i_other_state = 0
|
|
||||||
do j = 1, N_det
|
|
||||||
if(good_state_array(j))cycle
|
|
||||||
i_other_state +=1
|
|
||||||
if(i_state+i_other_state.gt.n_states_diag)then
|
|
||||||
exit
|
|
||||||
endif
|
|
||||||
do i=1,N_det
|
|
||||||
CI_eigenvectors_dressed(i,i_state+i_other_state) = eigenvectors(i,j)
|
|
||||||
enddo
|
|
||||||
CI_electronic_energy_dressed(i_state+i_other_state) = eigenvalues(j)
|
|
||||||
CI_eigenvectors_s2_dressed(i_state+i_other_state) = s2_eigvalues(i_state+i_other_state)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
else
|
|
||||||
print*,''
|
|
||||||
print*,'!!!!!!!! WARNING !!!!!!!!!'
|
|
||||||
print*,' Within the ',N_det,'determinants selected'
|
|
||||||
print*,' and the ',N_states_diag,'states requested'
|
|
||||||
print*,' We did not find any state with S^2 values close to ',expected_s2
|
|
||||||
print*,' We will then set the first N_states eigenvectors of the H matrix'
|
|
||||||
print*,' as the CI_eigenvectors_dressed'
|
|
||||||
print*,' You should consider more states and maybe ask for s2_eig to be .True. or just enlarge the CI space'
|
|
||||||
print*,''
|
|
||||||
do j=1,min(N_states_diag,N_det)
|
|
||||||
do i=1,N_det
|
|
||||||
CI_eigenvectors_dressed(i,j) = eigenvectors(i,j)
|
|
||||||
enddo
|
|
||||||
CI_electronic_energy_dressed(j) = eigenvalues(j)
|
|
||||||
CI_eigenvectors_s2_dressed(j) = s2_eigvalues(j)
|
|
||||||
enddo
|
|
||||||
endif
|
|
||||||
deallocate(index_good_state_array,good_state_array)
|
|
||||||
deallocate(s2_eigvalues)
|
|
||||||
else
|
|
||||||
call u_0_S2_u_0(CI_eigenvectors_s2_dressed,eigenvectors,N_det,psi_det,N_int,&
|
|
||||||
min(N_det,N_states_diag),size(eigenvectors,1))
|
|
||||||
! Select the "N_states_diag" states of lowest energy
|
|
||||||
do j=1,min(N_det,N_states_diag)
|
|
||||||
do i=1,N_det
|
|
||||||
CI_eigenvectors_dressed(i,j) = eigenvectors(i,j)
|
|
||||||
enddo
|
|
||||||
CI_electronic_energy_dressed(j) = eigenvalues(j)
|
|
||||||
enddo
|
|
||||||
endif
|
|
||||||
deallocate(eigenvectors,eigenvalues)
|
|
||||||
endif
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, CI_energy_dressed, (N_states_diag) ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! N_states lowest eigenvalues of the dressed CI matrix
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
integer :: j
|
|
||||||
character*(8) :: st
|
|
||||||
call write_time(6)
|
|
||||||
do j=1,min(N_det,N_states)
|
|
||||||
write(st,'(I4)') j
|
|
||||||
CI_energy_dressed(j) = CI_electronic_energy_dressed(j) + nuclear_repulsion
|
|
||||||
call write_double(6,CI_energy_dressed(j),'Energy of state '//trim(st))
|
|
||||||
call write_double(6,CI_eigenvectors_s2_dressed(j),'S^2 of state '//trim(st))
|
|
||||||
enddo
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
subroutine diagonalize_CI_dressed(lambda)
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Replace the coefficients of the CI states by the coefficients of the
|
|
||||||
! eigenstates of the CI matrix
|
|
||||||
END_DOC
|
|
||||||
double precision, intent(in) :: lambda
|
|
||||||
integer :: i,j
|
|
||||||
do j=1,N_states
|
|
||||||
do i=1,N_det
|
|
||||||
psi_coef(i,j) = lambda * CI_eigenvectors_dressed(i,j) + (1.d0 - lambda) * psi_coef(i,j)
|
|
||||||
enddo
|
|
||||||
call normalize(psi_coef(1,j), N_det)
|
|
||||||
enddo
|
|
||||||
SOFT_TOUCH psi_coef
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
logical function is_generable(det1, det2, Nint)
|
logical function is_generable(det1, det2, Nint)
|
||||||
|
@ -1,101 +0,0 @@
|
|||||||
subroutine multi_state(CI_electronic_energy_dressed_,CI_eigenvectors_dressed_,LDA)
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Multi-state mixing
|
|
||||||
END_DOC
|
|
||||||
integer, intent(in) :: LDA
|
|
||||||
double precision, intent(inout) :: CI_electronic_energy_dressed_(N_states)
|
|
||||||
double precision, intent(inout) :: CI_eigenvectors_dressed_(LDA,N_states)
|
|
||||||
double precision, allocatable :: h(:,:,:), s(:,:), Psi(:,:), H_Psi(:,:,:), H_jj(:)
|
|
||||||
|
|
||||||
allocate( h(N_states,N_states,0:N_states), s(N_states,N_states) )
|
|
||||||
allocate( Psi(LDA,N_states), H_Psi(LDA,N_states,0:N_states) )
|
|
||||||
allocate (H_jj(LDA) )
|
|
||||||
|
|
||||||
! e_0(i) = u_dot_v(v_0(1,i),u_0(1,i),n)/u_dot_u(u_0(1,i),n)
|
|
||||||
|
|
||||||
integer :: i,j,k,istate
|
|
||||||
double precision :: U(N_states,N_states), Vt(N_states,N_states), D(N_states)
|
|
||||||
double precision, external :: diag_H_mat_elem
|
|
||||||
do istate=1,N_states
|
|
||||||
do i=1,N_det
|
|
||||||
H_jj(i) = diag_H_mat_elem(psi_det(1,1,i),N_int)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
do i=1,N_det_ref
|
|
||||||
H_jj(idx_ref(i)) += delta_ii(istate,i)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
do k=1,N_states
|
|
||||||
do i=1,N_det
|
|
||||||
Psi(i,k) = CI_eigenvectors_dressed_(i,k)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
call H_u_0_mrcc_nstates(H_Psi(1,1,istate),Psi,H_jj,N_det,psi_det,N_int,istate,N_states,LDA)
|
|
||||||
|
|
||||||
do k=1,N_states
|
|
||||||
do i=1,N_states
|
|
||||||
double precision, external :: u_dot_v
|
|
||||||
h(i,k,istate) = u_dot_v(Psi(1,i), H_Psi(1,k,istate), N_det)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
do k=1,N_states
|
|
||||||
do i=1,N_states
|
|
||||||
s(i,k) = u_dot_v(Psi(1,i), Psi(1,k), N_det)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
print *, s(:,:)
|
|
||||||
print *, ''
|
|
||||||
|
|
||||||
h(:,:,0) = h(:,:,1)
|
|
||||||
do istate=2,N_states
|
|
||||||
U(:,:) = h(:,:,0)
|
|
||||||
call dgemm('N','N',N_states,N_states,N_states,1.d0,&
|
|
||||||
U, size(U,1), h(1,1,istate), size(h,1), 0.d0, &
|
|
||||||
h(1,1,0), size(Vt,1))
|
|
||||||
enddo
|
|
||||||
|
|
||||||
call svd(h(1,1,0), size(h,1), U, size(U,1), D, Vt, size(Vt,1), N_states, N_states)
|
|
||||||
do k=1,N_states
|
|
||||||
D(k) = D(k)**(1./dble(N_states))
|
|
||||||
if (D(k) > 0.d0) then
|
|
||||||
D(k) = -D(k)
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
|
|
||||||
do j=1,N_states
|
|
||||||
do i=1,N_states
|
|
||||||
h(i,j,0) = 0.d0
|
|
||||||
do k=1,N_states
|
|
||||||
h(i,j,0) += U(i,k) * D(k) * Vt(k,j)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
print *, h(:,:,0)
|
|
||||||
print *,''
|
|
||||||
|
|
||||||
integer :: LWORK, INFO
|
|
||||||
double precision, allocatable :: WORK(:)
|
|
||||||
LWORK=3*N_states
|
|
||||||
allocate (WORK(LWORK))
|
|
||||||
call dsygv(1, 'V', 'U', N_states, h(1,1,0), size(h,1), s, size(s,1), D, WORK, LWORK, INFO)
|
|
||||||
deallocate(WORK)
|
|
||||||
|
|
||||||
do j=1,N_states
|
|
||||||
do i=1,N_det
|
|
||||||
CI_eigenvectors_dressed_(i,j) = 0.d0
|
|
||||||
do k=1,N_states
|
|
||||||
CI_eigenvectors_dressed_(i,j) += Psi(i,k) * h(k,j,0)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
CI_electronic_energy_dressed_(j) = D(j)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
|
|
||||||
deallocate (h,s, H_jj)
|
|
||||||
deallocate( Psi, H_Psi )
|
|
||||||
end
|
|
@ -1 +1 @@
|
|||||||
MRPT_Utils Selectors_full Generators_full
|
MRPT_Utils Selectors_full Generators_full DavidsonUndressed
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from generate_h_apply import *
|
from generate_h_apply import *
|
||||||
|
|
||||||
s = H_apply("mrpt")
|
s = H_apply("mrpt")
|
||||||
|
@ -62,4 +62,9 @@ doc: Thresholds on selectors (fraction of the norm) for final PT2 calculation
|
|||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: 1.
|
default: 1.
|
||||||
|
|
||||||
|
[h0_type]
|
||||||
|
type: Perturbation
|
||||||
|
doc: Type of zeroth-order Hamiltonian [ EN | Barycentric ]
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: EN
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
Determinants Properties Hartree_Fock Davidson MRPT_Utils
|
Determinants Hartree_Fock Davidson MRPT_Utils
|
||||||
|
@ -1,75 +0,0 @@
|
|||||||
subroutine pt2_dipole_moment_z(det_pert,c_pert,e_2_pert,H_pert_diag,Nint,ndet,n_st,minilist,idx_minilist,N_minilist)
|
|
||||||
use bitmasks
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: Nint,ndet,n_st
|
|
||||||
integer(bit_kind), intent(in) :: det_pert(Nint,2)
|
|
||||||
double precision , intent(out) :: c_pert(n_st),e_2_pert(n_st),H_pert_diag(N_st)
|
|
||||||
double precision :: i_O1_psi_array(N_st)
|
|
||||||
double precision :: i_H_psi_array(N_st)
|
|
||||||
|
|
||||||
integer, intent(in) :: N_minilist
|
|
||||||
integer, intent(in) :: idx_minilist(0:N_det_selectors)
|
|
||||||
integer(bit_kind), intent(in) :: minilist(Nint,2,N_det_selectors)
|
|
||||||
|
|
||||||
BEGIN_DOC
|
|
||||||
! compute the perturbatibe contribution to the dipole moment of one determinant
|
|
||||||
!
|
|
||||||
! for the various n_st states, at various level of theory.
|
|
||||||
!
|
|
||||||
! c_pert(i) = <psi(i)|H|det_pert>/(<psi(i)|H|psi(i)> - <det_pert|H|det_pert>)
|
|
||||||
!
|
|
||||||
! e_2_pert(i) = c_pert(i) * <det_pert|Z|psi(i)>
|
|
||||||
!
|
|
||||||
! H_pert_diag(i) = c_pert(i)^2 * <det_pert|Z|det_pert>
|
|
||||||
!
|
|
||||||
! To get the contribution of the first order :
|
|
||||||
!
|
|
||||||
! <Z_1> = sum(over i) e_2_pert(i)
|
|
||||||
!
|
|
||||||
! To get the contribution of the diagonal elements of the second order :
|
|
||||||
!
|
|
||||||
! [ <Z_0> + <Z_1> + sum(over i) H_pert_diag(i) ] / [1. + sum(over i) c_pert(i) **2]
|
|
||||||
!
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
integer :: i,j
|
|
||||||
double precision :: diag_H_mat_elem
|
|
||||||
integer :: exc(0:2,2,2)
|
|
||||||
integer :: degree
|
|
||||||
double precision :: phase,delta_e,h,oii,diag_o1_mat_elem
|
|
||||||
integer :: h1,h2,p1,p2,s1,s2
|
|
||||||
ASSERT (Nint == N_int)
|
|
||||||
ASSERT (Nint > 0)
|
|
||||||
|
|
||||||
! call get_excitation_degree(HF_bitmask,det_pert,degree,N_int)
|
|
||||||
! if(degree.gt.degree_max_generators+1)then
|
|
||||||
! H_pert_diag = 0.d0
|
|
||||||
! e_2_pert = 0.d0
|
|
||||||
! c_pert = 0.d0
|
|
||||||
! return
|
|
||||||
! endif
|
|
||||||
|
|
||||||
call i_O1_psi(mo_dipole_z,det_pert,psi_selectors,psi_selectors_coef,Nint,N_det_selectors,psi_selectors_size,N_st,i_O1_psi_array)
|
|
||||||
!call i_H_psi(det_pert,psi_selectors,psi_selectors_coef,Nint,N_det_selectors,psi_selectors_size,N_st,i_H_psi_array)
|
|
||||||
call i_H_psi_minilist(det_pert,minilist,idx_minilist,N_minilist,psi_selectors_coef,Nint,N_minilist,psi_selectors_size,N_st,i_H_psi_array)
|
|
||||||
|
|
||||||
h = diag_H_mat_elem(det_pert,Nint)
|
|
||||||
oii = diag_O1_mat_elem(mo_dipole_z,det_pert,N_int)
|
|
||||||
|
|
||||||
|
|
||||||
do i =1,N_st
|
|
||||||
if(CI_electronic_energy(i)>h.and.CI_electronic_energy(i).ne.0.d0)then
|
|
||||||
c_pert(i) = -1.d0
|
|
||||||
e_2_pert(i) = selection_criterion*selection_criterion_factor*2.d0
|
|
||||||
else if (dabs(CI_electronic_energy(i) - h) > 1.d-6) then
|
|
||||||
c_pert(i) = i_H_psi_array(i) / (CI_electronic_energy(i) - h)
|
|
||||||
e_2_pert(i) = c_pert(i) * (i_O1_psi_array(i)+i_O1_psi_array(i) )
|
|
||||||
H_pert_diag(i) = e_2_pert(i) + c_pert(i) * c_pert(i) * oii
|
|
||||||
else
|
|
||||||
c_pert(i) = -1.d0
|
|
||||||
e_2_pert(i) = -dabs(i_H_psi_array(i))
|
|
||||||
H_pert_diag(i) = c_pert(i) * i_O1_psi_array(i)
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
end
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
from perturbation import perturbations
|
from perturbation import perturbations
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
BEGIN_SHELL [ /usr/bin/env python ]
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
||||||
import perturbation
|
import perturbation
|
||||||
END_SHELL
|
END_SHELL
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
Determinants Davidson
|
Determinants DavidsonUndressed
|
||||||
|
@ -1 +1 @@
|
|||||||
Psiref_Utils Davidson
|
Psiref_Utils
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
program overwrite_w_cas
|
|
||||||
read_wf = .True.
|
|
||||||
TOUCH read_wf
|
|
||||||
call extract_ref
|
|
||||||
end
|
|
@ -325,3 +325,17 @@ BEGIN_PROVIDER [double precision, ref_hamiltonian_matrix, (n_det_ref,n_det_ref)]
|
|||||||
enddo
|
enddo
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer, idx_non_ref_from_sorted, (N_det) ]
|
||||||
|
implicit none
|
||||||
|
integer :: i,inpsisor
|
||||||
|
|
||||||
|
idx_non_ref_from_sorted = 0
|
||||||
|
|
||||||
|
do i=1,N_det
|
||||||
|
inpsisor = psi_det_sorted_order(i)
|
||||||
|
if(inpsisor <= 0) stop "idx_non_ref_from_sorted"
|
||||||
|
idx_non_ref_from_sorted(inpsisor) = idx_non_ref_rev(i)
|
||||||
|
end do
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
Determinants Davidson Full_CI_ZMQ
|
Determinants DavidsonUndressed Full_CI_ZMQ
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/env python2
|
||||||
|
|
||||||
print "#QP -> QMCPACK"
|
print "#QP -> QMCPACK"
|
||||||
|
|
||||||
@ -333,11 +333,14 @@ if do_pseudo:
|
|||||||
# |_/ (/_ |_
|
# |_/ (/_ |_
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
psi_coef = ezfio.get_determinants_psi_coef()
|
psi_coef = ezfio.get_determinants_psi_coef()
|
||||||
psi_det = ezfio.get_determinants_psi_det()
|
psi_det = ezfio.get_determinants_psi_det()
|
||||||
bit_kind = ezfio.get_determinants_bit_kind()
|
bit_kind = ezfio.get_determinants_bit_kind()
|
||||||
|
|
||||||
|
|
||||||
|
nexcitedstate = ezfio.get_determinants_n_states()
|
||||||
|
|
||||||
print ""
|
print ""
|
||||||
print "BEGIN_DET"
|
print "BEGIN_DET"
|
||||||
print ""
|
print ""
|
||||||
@ -349,7 +352,11 @@ if "QP_STATE" in os.environ:
|
|||||||
state = int(os.environ["QP_STATE"])-1
|
state = int(os.environ["QP_STATE"])-1
|
||||||
else:
|
else:
|
||||||
state = 0
|
state = 0
|
||||||
psi_coef = psi_coef[state]
|
|
||||||
|
psi_coef_small = psi_coef[state]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
encode = 8*bit_kind
|
encode = 8*bit_kind
|
||||||
|
|
||||||
@ -359,11 +366,35 @@ def bindigits(n, bits):
|
|||||||
|
|
||||||
decode = lambda det: ''.join(bindigits(i,encode)[::-1] for i in det)[:mo_num]
|
decode = lambda det: ''.join(bindigits(i,encode)[::-1] for i in det)[:mo_num]
|
||||||
|
|
||||||
for coef, (det_a, det_b) in zip(psi_coef, psi_det):
|
MultiDetAlpha = []
|
||||||
|
MultiDetBeta = []
|
||||||
|
for coef, (det_a, det_b) in zip(psi_coef_small, psi_det):
|
||||||
|
|
||||||
print coef
|
print coef
|
||||||
print decode(det_a)
|
MyDetA=decode(det_a)
|
||||||
print decode(det_b)
|
MyDetB=decode(det_b)
|
||||||
|
print MyDetA
|
||||||
|
print MyDetB
|
||||||
print ''
|
print ''
|
||||||
|
MultiDetAlpha.append( det_a )
|
||||||
|
MultiDetBeta.append( det_b )
|
||||||
print "END_DET"
|
print "END_DET"
|
||||||
|
|
||||||
|
import h5py
|
||||||
|
H5_qmcpack=h5py.File('MultiDet.h5','w')
|
||||||
|
groupMultiDet=H5_qmcpack.create_group("MultiDet")
|
||||||
|
groupMultiDet.create_dataset("NbDet",(1,),dtype="f8",data=len(psi_coef_small))
|
||||||
|
|
||||||
|
groupMultiDet.create_dataset("Coeff",(len(psi_coef_small),),dtype="f8",data=psi_coef)
|
||||||
|
groupMultiDet.create_dataset("nstate",(1,),dtype="i4",data=len(MyDetA))
|
||||||
|
groupMultiDet.create_dataset("nexcitedstate",(1,),dtype="i4",data=nexcitedstate)
|
||||||
|
groupMultiDet.create_dataset("Nbits",(1,),dtype="i4",data=len(det_a))
|
||||||
|
|
||||||
|
print "temp=",MultiDetAlpha[0]
|
||||||
|
mylen="S"+str(len(MyDetA))
|
||||||
|
groupMultiDet.create_dataset("CI_Alpha",(len(psi_coef_small),len(det_a)),dtype='i8',data=MultiDetAlpha)
|
||||||
|
|
||||||
|
mylen="S"+str(len(MyDetB))
|
||||||
|
groupMultiDet.create_dataset("CI_Beta",(len(psi_coef_small),len(det_b)),dtype='i8',data=MultiDetBeta)
|
||||||
|
|
||||||
|
H5_qmcpack.close()
|
||||||
|
@ -14,9 +14,13 @@ END_PROVIDER
|
|||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Determinants on which we apply <i|H|psi> for perturbation.
|
! Determinants on which we apply <i|H|psi> for perturbation.
|
||||||
|
! The selectors are equivalent to Selectors_full, but in a different
|
||||||
|
! order. The Generators_CAS determinants appear first, then all the
|
||||||
|
! others.
|
||||||
END_DOC
|
END_DOC
|
||||||
integer :: i, k, l, m
|
integer :: i, k, l, m
|
||||||
logical :: good
|
logical :: good
|
||||||
|
integer, external :: number_of_holes,number_of_particles
|
||||||
|
|
||||||
do i=1,N_det_generators
|
do i=1,N_det_generators
|
||||||
do k=1,N_int
|
do k=1,N_int
|
||||||
@ -33,19 +37,7 @@ END_PROVIDER
|
|||||||
m=N_det_generators
|
m=N_det_generators
|
||||||
|
|
||||||
do i=1,N_det
|
do i=1,N_det
|
||||||
do l=1,n_cas_bitmask
|
good = ( number_of_holes(psi_det_sorted(1,1,i)) ==0).and.(number_of_particles(psi_det_sorted(1,1,i))==0 )
|
||||||
good = .True.
|
|
||||||
do k=1,N_int
|
|
||||||
good = good .and. ( &
|
|
||||||
iand(not(cas_bitmask(k,1,l)), psi_det_sorted(k,1,i)) == &
|
|
||||||
iand(not(cas_bitmask(k,1,l)), HF_bitmask(k,1)) .and. ( &
|
|
||||||
iand(not(cas_bitmask(k,2,l)), psi_det_sorted(k,2,i)) == &
|
|
||||||
iand(not(cas_bitmask(k,2,l)), HF_bitmask(k,2) )) )
|
|
||||||
enddo
|
|
||||||
if (good) then
|
|
||||||
exit
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
if (.not.good) then
|
if (.not.good) then
|
||||||
m = m+1
|
m = m+1
|
||||||
do k=1,N_int
|
do k=1,N_int
|
||||||
@ -57,7 +49,7 @@ END_PROVIDER
|
|||||||
enddo
|
enddo
|
||||||
if (N_det /= m) then
|
if (N_det /= m) then
|
||||||
print *, N_det, m
|
print *, N_det, m
|
||||||
stop 'N_det /= m'
|
stop 'Selectors_CASSD : N_det /= m'
|
||||||
endif
|
endif
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
@ -8,13 +8,17 @@ subroutine get_occupation_from_dets(istate,occupation)
|
|||||||
integer :: i,j, ispin
|
integer :: i,j, ispin
|
||||||
integer :: list(N_int*bit_kind_size,2)
|
integer :: list(N_int*bit_kind_size,2)
|
||||||
integer :: n_elements(2)
|
integer :: n_elements(2)
|
||||||
double precision :: c
|
double precision :: c, norm_2
|
||||||
ASSERT (istate > 0)
|
ASSERT (istate > 0)
|
||||||
ASSERT (istate <= N_states)
|
ASSERT (istate <= N_states)
|
||||||
|
|
||||||
occupation = 0.d0
|
occupation = 0.d0
|
||||||
|
double precision, external :: u_dot_u
|
||||||
|
|
||||||
|
norm_2 = 1.d0/u_dot_u(psi_coef(1,istate),N_det)
|
||||||
|
|
||||||
do i=1,N_det
|
do i=1,N_det
|
||||||
c = psi_coef(i,istate)*psi_coef(i,istate)
|
c = psi_coef(i,istate)*psi_coef(i,istate)*norm_2
|
||||||
call bitstring_to_list_ab(psi_det(1,1,i), list, n_elements, N_int)
|
call bitstring_to_list_ab(psi_det(1,1,i), list, n_elements, N_int)
|
||||||
do ispin=1,2
|
do ispin=1,2
|
||||||
do j=1,n_elements(ispin)
|
do j=1,n_elements(ispin)
|
||||||
|
17
plugins/dress_zmq/EZFIO.cfg
Normal file
17
plugins/dress_zmq/EZFIO.cfg
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
[energy]
|
||||||
|
type: double precision
|
||||||
|
doc: Calculated energy
|
||||||
|
interface: ezfio
|
||||||
|
|
||||||
|
[thresh_dressed_ci]
|
||||||
|
type: Threshold
|
||||||
|
doc: Threshold on the convergence of the dressed CI energy
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 1.e-5
|
||||||
|
|
||||||
|
[n_it_max_dressed_ci]
|
||||||
|
type: Strictly_positive_int
|
||||||
|
doc: Maximum number of dressed CI iterations
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 10
|
||||||
|
|
12
plugins/dress_zmq/EZFIO.cfg.example
Normal file
12
plugins/dress_zmq/EZFIO.cfg.example
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[thresh_dressed_ci]
|
||||||
|
type: Threshold
|
||||||
|
doc: Threshold on the convergence of the dressed CI energy
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 1.e-5
|
||||||
|
|
||||||
|
[n_it_max_dressed_ci]
|
||||||
|
type: Strictly_positive_int
|
||||||
|
doc: Maximum number of dressed CI iterations
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 10
|
||||||
|
|
1
plugins/dress_zmq/NEEDED_CHILDREN_MODULES
Normal file
1
plugins/dress_zmq/NEEDED_CHILDREN_MODULES
Normal file
@ -0,0 +1 @@
|
|||||||
|
Selectors_full Generators_full ZMQ
|
12
plugins/dress_zmq/README.rst
Normal file
12
plugins/dress_zmq/README.rst
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
=========
|
||||||
|
dress_zmq
|
||||||
|
=========
|
||||||
|
|
||||||
|
Needed Modules
|
||||||
|
==============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
||||||
|
Documentation
|
||||||
|
=============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
1198
plugins/dress_zmq/alpha_factory.irp.f
Normal file
1198
plugins/dress_zmq/alpha_factory.irp.f
Normal file
File diff suppressed because it is too large
Load Diff
60
plugins/dress_zmq/dress_general.irp.f
Normal file
60
plugins/dress_zmq/dress_general.irp.f
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
subroutine run_dressing(N_st,energy)
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer, intent(in) :: N_st
|
||||||
|
double precision, intent(out) :: energy(N_st)
|
||||||
|
|
||||||
|
integer :: i,j
|
||||||
|
|
||||||
|
double precision :: E_new, E_old, delta_e
|
||||||
|
integer :: iteration
|
||||||
|
|
||||||
|
integer :: n_it_dress_max
|
||||||
|
double precision :: thresh_dress
|
||||||
|
|
||||||
|
thresh_dress = thresh_dressed_ci
|
||||||
|
n_it_dress_max = n_it_max_dressed_ci
|
||||||
|
|
||||||
|
if(n_it_dress_max == 1) then
|
||||||
|
do j=1,N_states
|
||||||
|
do i=1,N_det
|
||||||
|
psi_coef(i,j) = CI_eigenvectors_dressed(i,j)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
SOFT_TOUCH psi_coef ci_energy_dressed
|
||||||
|
call write_double(6,ci_energy_dressed(1),"Final dress energy")
|
||||||
|
! call ezfio_set_dress_zmq_energy(ci_energy_dressed(1))
|
||||||
|
call save_wavefunction
|
||||||
|
else
|
||||||
|
E_new = 0.d0
|
||||||
|
delta_E = 1.d0
|
||||||
|
iteration = 0
|
||||||
|
do while (delta_E > thresh_dress)
|
||||||
|
iteration += 1
|
||||||
|
print *, '==============================================='
|
||||||
|
print *, 'Iteration', iteration, '/', n_it_dress_max
|
||||||
|
print *, '==============================================='
|
||||||
|
print *, ''
|
||||||
|
E_old = dress_e0_denominator(1) !sum(ci_energy_dressed(1:N_states))
|
||||||
|
do i=1,N_st
|
||||||
|
call write_double(6,ci_energy_dressed(i),"Energy")
|
||||||
|
enddo
|
||||||
|
call diagonalize_ci_dressed
|
||||||
|
E_new = dress_e0_denominator(1) !sum(ci_energy_dressed(1:N_states))
|
||||||
|
|
||||||
|
delta_E = (E_new - E_old)/dble(N_states)
|
||||||
|
print *, ''
|
||||||
|
call write_double(6,thresh_dress,"thresh_dress")
|
||||||
|
call write_double(6,delta_E,"delta_E")
|
||||||
|
delta_E = dabs(delta_E)
|
||||||
|
call save_wavefunction
|
||||||
|
! call ezfio_set_dress_zmq_energy(ci_energy_dressed(1))
|
||||||
|
if (iteration >= n_it_dress_max) then
|
||||||
|
exit
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
call write_double(6,ci_energy_dressed(1),"Final energy")
|
||||||
|
endif
|
||||||
|
energy(1:N_st) = ci_energy_dressed(1:N_st)
|
||||||
|
end
|
||||||
|
|
75
plugins/dress_zmq/dress_slave.irp.f
Normal file
75
plugins/dress_zmq/dress_slave.irp.f
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
subroutine dress_slave
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Helper subroutine to compute the dress in distributed mode.
|
||||||
|
END_DOC
|
||||||
|
read_wf = .False.
|
||||||
|
distributed_davidson = .False.
|
||||||
|
SOFT_TOUCH read_wf distributed_davidson
|
||||||
|
call provide_everything
|
||||||
|
call switch_qp_run_to_master
|
||||||
|
call run_wf
|
||||||
|
end
|
||||||
|
|
||||||
|
subroutine provide_everything
|
||||||
|
PROVIDE H_apply_buffer_allocated mo_bielec_integrals_in_map psi_det_generators psi_coef_generators psi_det_sorted_bit psi_selectors n_det_generators n_states generators_bitmask zmq_context
|
||||||
|
end
|
||||||
|
|
||||||
|
subroutine run_wf
|
||||||
|
use f77_zmq
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer(ZMQ_PTR), external :: new_zmq_to_qp_run_socket
|
||||||
|
integer(ZMQ_PTR) :: zmq_to_qp_run_socket
|
||||||
|
double precision :: energy(N_states_diag)
|
||||||
|
character*(64) :: states(1)
|
||||||
|
integer :: rc, i
|
||||||
|
|
||||||
|
call provide_everything
|
||||||
|
|
||||||
|
zmq_context = f77_zmq_ctx_new ()
|
||||||
|
states(1) = 'dress'
|
||||||
|
|
||||||
|
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
||||||
|
|
||||||
|
do
|
||||||
|
|
||||||
|
call wait_for_states(states,zmq_state,1)
|
||||||
|
|
||||||
|
if(trim(zmq_state) == 'Stopped') then
|
||||||
|
|
||||||
|
exit
|
||||||
|
|
||||||
|
else if (trim(zmq_state) == 'dress') then
|
||||||
|
|
||||||
|
! Selection
|
||||||
|
! ---------
|
||||||
|
|
||||||
|
print *, 'dress'
|
||||||
|
call zmq_get_psi(zmq_to_qp_run_socket,1,energy,N_states)
|
||||||
|
|
||||||
|
PROVIDE psi_bilinear_matrix_columns_loc psi_det_alpha_unique psi_det_beta_unique
|
||||||
|
PROVIDE psi_bilinear_matrix_rows psi_det_sorted_order psi_bilinear_matrix_order
|
||||||
|
PROVIDE psi_bilinear_matrix_transp_rows_loc psi_bilinear_matrix_transp_columns
|
||||||
|
PROVIDE psi_bilinear_matrix_transp_order
|
||||||
|
|
||||||
|
!$OMP PARALLEL PRIVATE(i)
|
||||||
|
i = omp_get_thread_num()
|
||||||
|
call dress_slave_tcp(i, energy)
|
||||||
|
!$OMP END PARALLEL
|
||||||
|
print *, 'dress done'
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
end do
|
||||||
|
end
|
||||||
|
|
||||||
|
subroutine dress_slave_tcp(i,energy)
|
||||||
|
implicit none
|
||||||
|
double precision, intent(in) :: energy(N_states_diag)
|
||||||
|
integer, intent(in) :: i
|
||||||
|
logical :: lstop
|
||||||
|
lstop = .False.
|
||||||
|
call run_dress_slave(0,i,energy,lstop)
|
||||||
|
end
|
||||||
|
|
638
plugins/dress_zmq/dress_stoch_routines.irp.f
Normal file
638
plugins/dress_zmq/dress_stoch_routines.irp.f
Normal file
@ -0,0 +1,638 @@
|
|||||||
|
BEGIN_PROVIDER [ integer, fragment_first ]
|
||||||
|
implicit none
|
||||||
|
fragment_first = first_det_of_teeth(1)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
subroutine ZMQ_dress(E, dress, delta_out, delta_s2_out, relative_error)
|
||||||
|
use f77_zmq
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
character(len=64000) :: task
|
||||||
|
|
||||||
|
integer(ZMQ_PTR) :: zmq_to_qp_run_socket, zmq_socket_pull
|
||||||
|
integer, external :: omp_get_thread_num
|
||||||
|
double precision, intent(in) :: E(N_states), relative_error
|
||||||
|
double precision, intent(out) :: dress(N_states)
|
||||||
|
double precision, intent(out) :: delta_out(N_states, N_det)
|
||||||
|
double precision, intent(out) :: delta_s2_out(N_states, N_det)
|
||||||
|
|
||||||
|
double precision, allocatable :: delta(:,:)
|
||||||
|
double precision, allocatable :: delta_s2(:,:)
|
||||||
|
|
||||||
|
integer :: i, j, k, Ncp
|
||||||
|
|
||||||
|
double precision, external :: omp_get_wtime
|
||||||
|
double precision :: time
|
||||||
|
integer, external :: add_task_to_taskserver
|
||||||
|
double precision :: state_average_weight_save(N_states)
|
||||||
|
|
||||||
|
|
||||||
|
allocate(delta(N_states,N_det), delta_s2(N_det,N_states))
|
||||||
|
state_average_weight_save(:) = state_average_weight(:)
|
||||||
|
do dress_stoch_istate=1,N_states
|
||||||
|
SOFT_TOUCH dress_stoch_istate
|
||||||
|
state_average_weight(:) = 0.d0
|
||||||
|
state_average_weight(dress_stoch_istate) = 1.d0
|
||||||
|
TOUCH state_average_weight
|
||||||
|
|
||||||
|
provide nproc fragment_first fragment_count mo_bielec_integrals_in_map mo_mono_elec_integral dress_weight psi_selectors
|
||||||
|
|
||||||
|
|
||||||
|
print *, '========== ================= ================= ================='
|
||||||
|
print *, ' Samples Energy Stat. Error Seconds '
|
||||||
|
print *, '========== ================= ================= ================='
|
||||||
|
|
||||||
|
|
||||||
|
call new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull, 'dress')
|
||||||
|
|
||||||
|
integer, external :: zmq_put_psi
|
||||||
|
integer, external :: zmq_put_N_det_generators
|
||||||
|
integer, external :: zmq_put_N_det_selectors
|
||||||
|
integer, external :: zmq_put_dvector
|
||||||
|
integer, external :: zmq_set_running
|
||||||
|
if (zmq_put_psi(zmq_to_qp_run_socket,1) == -1) then
|
||||||
|
stop 'Unable to put psi on ZMQ server'
|
||||||
|
endif
|
||||||
|
if (zmq_put_N_det_generators(zmq_to_qp_run_socket, 1) == -1) then
|
||||||
|
stop 'Unable to put N_det_generators on ZMQ server'
|
||||||
|
endif
|
||||||
|
if (zmq_put_N_det_selectors(zmq_to_qp_run_socket, 1) == -1) then
|
||||||
|
stop 'Unable to put N_det_selectors on ZMQ server'
|
||||||
|
endif
|
||||||
|
if (zmq_put_dvector(zmq_to_qp_run_socket,1,'energy',dress_e0_denominator,size(dress_e0_denominator)) == -1) then
|
||||||
|
stop 'Unable to put energy on ZMQ server'
|
||||||
|
endif
|
||||||
|
|
||||||
|
integer(ZMQ_PTR), external :: new_zmq_to_qp_run_socket
|
||||||
|
integer :: ipos
|
||||||
|
ipos=1
|
||||||
|
do i=1,N_dress_jobs
|
||||||
|
if(dress_jobs(i) > fragment_first) then
|
||||||
|
write(task(ipos:ipos+20),'(I9,1X,I9,''|'')') 0, dress_jobs(i)
|
||||||
|
ipos += 20
|
||||||
|
if (ipos > 63980) then
|
||||||
|
if (add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) == -1) then
|
||||||
|
stop 'Unable to add task to task server'
|
||||||
|
endif
|
||||||
|
|
||||||
|
ipos=1
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
do j=1,fragment_count
|
||||||
|
write(task(ipos:ipos+20),'(I9,1X,I9,''|'')') j, dress_jobs(i)
|
||||||
|
ipos += 20
|
||||||
|
if (ipos > 63980) then
|
||||||
|
if (add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) == -1) then
|
||||||
|
stop 'Unable to add task to task server'
|
||||||
|
endif
|
||||||
|
ipos=1
|
||||||
|
endif
|
||||||
|
end do
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
if (ipos > 1) then
|
||||||
|
if (add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) == -1) then
|
||||||
|
stop 'Unable to add task to task server'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if (zmq_set_running(zmq_to_qp_run_socket) == -1) then
|
||||||
|
print *, irp_here, ': Failed in zmq_set_running'
|
||||||
|
endif
|
||||||
|
|
||||||
|
!$OMP PARALLEL DEFAULT(shared) NUM_THREADS(nproc+1) &
|
||||||
|
!$OMP PRIVATE(i)
|
||||||
|
i = omp_get_thread_num()
|
||||||
|
if (i==0) then
|
||||||
|
call dress_collector(zmq_socket_pull,E, relative_error, delta, delta_s2, dress,&
|
||||||
|
dress_stoch_istate)
|
||||||
|
else
|
||||||
|
call dress_slave_inproc(i)
|
||||||
|
endif
|
||||||
|
!$OMP END PARALLEL
|
||||||
|
delta_out(dress_stoch_istate,1:N_det) = delta(dress_stoch_istate,1:N_det)
|
||||||
|
delta_s2_out(dress_stoch_istate,1:N_det) = delta_s2_out(dress_stoch_istate,1:N_det)
|
||||||
|
call end_parallel_job(zmq_to_qp_run_socket, zmq_socket_pull, 'dress')
|
||||||
|
|
||||||
|
print *, '========== ================= ================= ================='
|
||||||
|
enddo
|
||||||
|
FREE dress_stoch_istate
|
||||||
|
state_average_weight(:) = state_average_weight_save(:)
|
||||||
|
TOUCH state_average_weight
|
||||||
|
deallocate(delta,delta_s2)
|
||||||
|
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
subroutine dress_slave_inproc(i)
|
||||||
|
implicit none
|
||||||
|
integer, intent(in) :: i
|
||||||
|
|
||||||
|
call run_dress_slave(1,i,dress_e0_denominator)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
subroutine dress_collector(zmq_socket_pull, E, relative_error, delta, delta_s2, dress, istate)
|
||||||
|
use f77_zmq
|
||||||
|
use bitmasks
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
integer(ZMQ_PTR), intent(in) :: zmq_socket_pull
|
||||||
|
integer, intent(in) :: istate
|
||||||
|
|
||||||
|
double precision, intent(in) :: relative_error, E(N_states)
|
||||||
|
double precision, intent(out) :: dress(N_states)
|
||||||
|
double precision, allocatable :: cp(:,:,:,:)
|
||||||
|
|
||||||
|
double precision, intent(out) :: delta(N_states, N_det)
|
||||||
|
double precision, intent(out) :: delta_s2(N_states, N_det)
|
||||||
|
double precision, allocatable :: delta_loc(:,:,:), delta_det(:,:,:,:)
|
||||||
|
double precision, allocatable :: dress_detail(:,:)
|
||||||
|
double precision :: dress_mwen(N_states)
|
||||||
|
integer(ZMQ_PTR),external :: new_zmq_to_qp_run_socket
|
||||||
|
integer(ZMQ_PTR) :: zmq_to_qp_run_socket
|
||||||
|
|
||||||
|
integer(ZMQ_PTR), external :: new_zmq_pull_socket
|
||||||
|
|
||||||
|
integer :: more
|
||||||
|
integer :: i, j, k, i_state, N
|
||||||
|
integer :: task_id, ind
|
||||||
|
double precision, save :: time0 = -1.d0
|
||||||
|
double precision :: time, timeLast, old_tooth
|
||||||
|
double precision, external :: omp_get_wtime
|
||||||
|
integer :: cur_cp, old_cur_cp
|
||||||
|
integer, allocatable :: parts_to_get(:)
|
||||||
|
logical, allocatable :: actually_computed(:)
|
||||||
|
integer :: total_computed
|
||||||
|
|
||||||
|
delta = 0d0
|
||||||
|
delta_s2 = 0d0
|
||||||
|
allocate(delta_det(N_states, N_det, 0:comb_teeth+1, 2))
|
||||||
|
allocate(cp(N_states, N_det, N_cp, 2), dress_detail(N_states, N_det))
|
||||||
|
allocate(delta_loc(N_states, N_det, 2))
|
||||||
|
dress_detail = 0d0
|
||||||
|
delta_det = 0d0
|
||||||
|
cp = 0d0
|
||||||
|
total_computed = 0
|
||||||
|
character*(512) :: task
|
||||||
|
|
||||||
|
allocate(actually_computed(N_det_generators), parts_to_get(N_det_generators))
|
||||||
|
|
||||||
|
dress_mwen =0.d0
|
||||||
|
|
||||||
|
parts_to_get(:) = 1
|
||||||
|
if(fragment_first > 0) then
|
||||||
|
do i=1,fragment_first
|
||||||
|
parts_to_get(i) = fragment_count
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
|
|
||||||
|
actually_computed = .false.
|
||||||
|
|
||||||
|
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
||||||
|
more = 1
|
||||||
|
if (time0 < 0.d0) then
|
||||||
|
call wall_time(time0)
|
||||||
|
endif
|
||||||
|
timeLast = time0
|
||||||
|
cur_cp = 0
|
||||||
|
old_cur_cp = 0
|
||||||
|
logical :: loop
|
||||||
|
loop = .true.
|
||||||
|
|
||||||
|
pullLoop : do while (loop)
|
||||||
|
call pull_dress_results(zmq_socket_pull, ind, delta_loc, task_id)
|
||||||
|
dress_mwen(:) = 0d0
|
||||||
|
|
||||||
|
!!!!! A VERIFIER !!!!!
|
||||||
|
do i_state=1,N_states
|
||||||
|
do i=1, N_det
|
||||||
|
dress_mwen(i_state) += delta_loc(i_state, i, 1) * psi_coef(i, i_state)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
dress_detail(:, ind) += dress_mwen(:)
|
||||||
|
do j=1,N_cp !! optimizable
|
||||||
|
if(cps(ind, j) > 0d0) then
|
||||||
|
if(tooth_of_det(ind) < cp_first_tooth(j)) stop "coef on supposedely deterministic det"
|
||||||
|
double precision :: fac
|
||||||
|
integer :: toothMwen
|
||||||
|
logical :: fracted
|
||||||
|
fac = cps(ind, j) / cps_N(j) * dress_weight_inv(ind) * comb_step
|
||||||
|
cp(1:N_states,1:N_det,j,1) += delta_loc(1:N_states,1:N_det,1) * fac
|
||||||
|
cp(1:N_states,1:N_det,j,2) += delta_loc(1:N_states,1:N_det,2) * fac
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
toothMwen = tooth_of_det(ind)
|
||||||
|
fracted = (toothMwen /= 0)
|
||||||
|
if(fracted) fracted = (ind == first_det_of_teeth(toothMwen))
|
||||||
|
|
||||||
|
if(fracted) then
|
||||||
|
delta_det(1:N_states,1:N_det,toothMwen-1, 1) = delta_det(1:N_states,1:N_det,toothMwen-1, 1) + delta_loc(1:N_states,1:N_det,1) * (1d0-fractage(toothMwen))
|
||||||
|
delta_det(1:N_states,1:N_det,toothMwen-1, 2) = delta_det(1:N_states,1:N_det,toothMwen-1, 2) + delta_loc(1:N_states,1:N_det,2) * (1d0-fractage(toothMwen))
|
||||||
|
delta_det(1:N_states,1:N_det,toothMwen , 1) = delta_det(1:N_states,1:N_det,toothMwen , 1) + delta_loc(1:N_states,1:N_det,1) * (fractage(toothMwen))
|
||||||
|
delta_det(1:N_states,1:N_det,toothMwen , 2) = delta_det(1:N_states,1:N_det,toothMwen , 2) + delta_loc(1:N_states,1:N_det,2) * (fractage(toothMwen))
|
||||||
|
else
|
||||||
|
delta_det(1:N_states,1:N_det,toothMwen , 1) = delta_det(1:N_states,1:N_det,toothMwen , 1) + delta_loc(1:N_states,1:N_det,1)
|
||||||
|
delta_det(1:N_states,1:N_det,toothMwen , 2) = delta_det(1:N_states,1:N_det,toothMwen , 2) + delta_loc(1:N_states,1:N_det,2)
|
||||||
|
end if
|
||||||
|
|
||||||
|
parts_to_get(ind) -= 1
|
||||||
|
if(parts_to_get(ind) == 0) then
|
||||||
|
actually_computed(ind) = .true.
|
||||||
|
total_computed += 1
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
integer, external :: zmq_delete_tasks
|
||||||
|
if (zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,1,more) == -1) then
|
||||||
|
stop 'Unable to delete tasks'
|
||||||
|
endif
|
||||||
|
if(more == 0) loop = .false.
|
||||||
|
|
||||||
|
time = omp_get_wtime()
|
||||||
|
|
||||||
|
if((time - timeLast > 2d0) .or. (.not. loop)) then
|
||||||
|
timeLast = time
|
||||||
|
cur_cp = N_cp
|
||||||
|
|
||||||
|
do i=1,N_det_generators
|
||||||
|
if(.not. actually_computed(dress_jobs(i))) then
|
||||||
|
if(i /= 1) then
|
||||||
|
cur_cp = done_cp_at(i-1)
|
||||||
|
else
|
||||||
|
cur_cp = 0
|
||||||
|
end if
|
||||||
|
exit
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
if(cur_cp == 0) cycle pullLoop
|
||||||
|
|
||||||
|
double precision :: su, su2, eqt, avg, E0, val
|
||||||
|
integer, external :: zmq_abort
|
||||||
|
|
||||||
|
su = 0d0
|
||||||
|
su2 = 0d0
|
||||||
|
|
||||||
|
do i=1, int(cps_N(cur_cp))
|
||||||
|
call get_comb_val(comb(i), dress_detail, cur_cp, val, istate)
|
||||||
|
su += val
|
||||||
|
su2 += val*val
|
||||||
|
end do
|
||||||
|
avg = su / cps_N(cur_cp)
|
||||||
|
eqt = dsqrt( ((su2 / cps_N(cur_cp)) - avg*avg) / cps_N(cur_cp) )
|
||||||
|
E0 = sum(dress_detail(istate, :first_det_of_teeth(cp_first_tooth(cur_cp))-1))
|
||||||
|
if(cp_first_tooth(cur_cp) <= comb_teeth) then
|
||||||
|
E0 = E0 + dress_detail(istate, first_det_of_teeth(cp_first_tooth(cur_cp))) * (1d0-fractage(cp_first_tooth(cur_cp)))
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
call wall_time(time)
|
||||||
|
if ((dabs(eqt) < relative_error .and. cps_N(cur_cp) >= 30) .or. total_computed == N_det_generators) then
|
||||||
|
! Termination
|
||||||
|
print '(2X, F16.7, 2X, G16.3, 2X, F16.4, A20)', avg+E(istate)+E0, eqt, time-time0, ''
|
||||||
|
if (zmq_abort(zmq_to_qp_run_socket) == -1) then
|
||||||
|
call sleep(1)
|
||||||
|
if (zmq_abort(zmq_to_qp_run_socket) == -1) then
|
||||||
|
print *, irp_here, ': Error in sending abort signal (2)'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
if (cur_cp > old_cur_cp) then
|
||||||
|
old_cur_cp = cur_cp
|
||||||
|
print '(2X, F16.7, 2X, G16.3, 2X, F16.4, A20)', avg+E(istate)+E0, eqt, time-time0, ''
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
end if
|
||||||
|
end do pullLoop
|
||||||
|
|
||||||
|
if(total_computed == N_det_generators) then
|
||||||
|
delta (1:N_states,1:N_det) = 0d0
|
||||||
|
delta_s2(1:N_states,1:N_det) = 0d0
|
||||||
|
do i=comb_teeth+1,0,-1
|
||||||
|
delta (1:N_states,1:N_det) = delta (1:N_states,1:N_det) + delta_det(1:N_states,1:N_det,i,1)
|
||||||
|
delta_s2(1:N_states,1:N_det) = delta_s2(1:N_states,1:N_det) + delta_det(1:N_states,1:N_det,i,2)
|
||||||
|
end do
|
||||||
|
else
|
||||||
|
|
||||||
|
delta (1:N_states,1:N_det) = cp(1:N_states,1:N_det,cur_cp,1)
|
||||||
|
delta_s2(1:N_states,1:N_det) = cp(1:N_states,1:N_det,cur_cp,2)
|
||||||
|
do i=cp_first_tooth(cur_cp)-1,0,-1
|
||||||
|
delta (1:N_states,1:N_det) = delta (1:N_states,1:N_det) + delta_det(1:N_states,1:N_det,i,1)
|
||||||
|
delta_s2(1:N_states,1:N_det) = delta_s2(1:N_states,1:N_det) + delta_det(1:N_states,1:N_det,i,2)
|
||||||
|
end do
|
||||||
|
|
||||||
|
end if
|
||||||
|
dress(istate) = E(istate)+E0
|
||||||
|
call end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
integer function dress_find(v, w, sze, imin, imax)
|
||||||
|
implicit none
|
||||||
|
integer, intent(in) :: sze, imin, imax
|
||||||
|
double precision, intent(in) :: v, w(sze)
|
||||||
|
integer :: i,l,h
|
||||||
|
integer, parameter :: block=64
|
||||||
|
|
||||||
|
l = imin
|
||||||
|
h = imax-1
|
||||||
|
|
||||||
|
do while(h-l >= block)
|
||||||
|
i = ishft(h+l,-1)
|
||||||
|
if(w(i+1) > v) then
|
||||||
|
h = i-1
|
||||||
|
else
|
||||||
|
l = i+1
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
!DIR$ LOOP COUNT (64)
|
||||||
|
do dress_find=l,h
|
||||||
|
if(w(dress_find) >= v) then
|
||||||
|
exit
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
end function
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer, gen_per_cp ]
|
||||||
|
&BEGIN_PROVIDER [ integer, comb_teeth ]
|
||||||
|
&BEGIN_PROVIDER [ integer, N_cps_max ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! N_cps_max : max number of checkpoints
|
||||||
|
!
|
||||||
|
! gen_per_cp : number of generators per checkpoint
|
||||||
|
END_DOC
|
||||||
|
comb_teeth = 64
|
||||||
|
N_cps_max = 256
|
||||||
|
gen_per_cp = (N_det_generators / N_cps_max) + 1
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer, N_cp ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, cps_N, (N_cps_max) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, cp_first_tooth, (N_cps_max) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, done_cp_at, (N_det_generators) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, cps, (N_det_generators, N_cps_max) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, N_dress_jobs ]
|
||||||
|
&BEGIN_PROVIDER [ integer, dress_jobs, (N_det_generators) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, comb, (N_det_generators) ]
|
||||||
|
implicit none
|
||||||
|
logical, allocatable :: computed(:)
|
||||||
|
integer :: i, j, last_full, dets(comb_teeth)
|
||||||
|
integer :: k, l, cur_cp, under_det(comb_teeth+1)
|
||||||
|
integer, allocatable :: iorder(:), first_cp(:)
|
||||||
|
|
||||||
|
allocate(iorder(N_det_generators), first_cp(N_cps_max+1))
|
||||||
|
allocate(computed(N_det_generators))
|
||||||
|
first_cp = 1
|
||||||
|
cps = 0d0
|
||||||
|
cur_cp = 1
|
||||||
|
done_cp_at = 0
|
||||||
|
|
||||||
|
computed = .false.
|
||||||
|
|
||||||
|
N_dress_jobs = first_det_of_comb - 1
|
||||||
|
do i=1, N_dress_jobs
|
||||||
|
dress_jobs(i) = i
|
||||||
|
computed(i) = .true.
|
||||||
|
end do
|
||||||
|
|
||||||
|
l=first_det_of_comb
|
||||||
|
call RANDOM_NUMBER(comb)
|
||||||
|
do i=1,N_det_generators
|
||||||
|
comb(i) = comb(i) * comb_step
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
call add_comb(comb(i), computed, cps(1, cur_cp), N_dress_jobs, dress_jobs)
|
||||||
|
|
||||||
|
if(N_dress_jobs / gen_per_cp > (cur_cp-1) .or. N_dress_jobs == N_det_generators) then
|
||||||
|
first_cp(cur_cp+1) = N_dress_jobs
|
||||||
|
done_cp_at(N_dress_jobs) = cur_cp
|
||||||
|
cps_N(cur_cp) = dfloat(i)
|
||||||
|
if(N_dress_jobs /= N_det_generators) then
|
||||||
|
cps(:, cur_cp+1) = cps(:, cur_cp)
|
||||||
|
cur_cp += 1
|
||||||
|
end if
|
||||||
|
|
||||||
|
if (N_dress_jobs == N_det_generators) exit
|
||||||
|
end if
|
||||||
|
do while (computed(l))
|
||||||
|
l=l+1
|
||||||
|
enddo
|
||||||
|
k=N_dress_jobs+1
|
||||||
|
dress_jobs(k) = l
|
||||||
|
computed(l) = .True.
|
||||||
|
N_dress_jobs = k
|
||||||
|
enddo
|
||||||
|
N_cp = cur_cp
|
||||||
|
if(N_dress_jobs /= N_det_generators .or. N_cp > N_cps_max) then
|
||||||
|
print *, N_dress_jobs, N_det_generators, N_cp, N_cps_max
|
||||||
|
stop "error in jobs creation"
|
||||||
|
end if
|
||||||
|
|
||||||
|
cur_cp = 0
|
||||||
|
do i=1,N_dress_jobs
|
||||||
|
if(done_cp_at(i) /= 0) cur_cp = done_cp_at(i)
|
||||||
|
done_cp_at(i) = cur_cp
|
||||||
|
end do
|
||||||
|
|
||||||
|
|
||||||
|
under_det = 0
|
||||||
|
cp_first_tooth = 0
|
||||||
|
do i=1,N_dress_jobs
|
||||||
|
do j=comb_teeth+1,1,-1
|
||||||
|
if(dress_jobs(i) <= first_det_of_teeth(j)) then
|
||||||
|
under_det(j) = under_det(j) + 1
|
||||||
|
if(under_det(j) == first_det_of_teeth(j))then
|
||||||
|
do l=done_cp_at(i)+1, N_cp
|
||||||
|
cps(:first_det_of_teeth(j)-1, l) = 0d0
|
||||||
|
cp_first_tooth(l) = j
|
||||||
|
end do
|
||||||
|
cps(first_det_of_teeth(j), done_cp_at(i)+1) = &
|
||||||
|
cps(first_det_of_teeth(j), done_cp_at(i)+1) * fractage(j)
|
||||||
|
end if
|
||||||
|
else
|
||||||
|
exit
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
cps(:, N_cp) = 0d0
|
||||||
|
cp_first_tooth(N_cp) = comb_teeth+1
|
||||||
|
|
||||||
|
iorder = -1
|
||||||
|
do i=1,N_cp-1
|
||||||
|
call isort(dress_jobs(first_cp(i)+1:first_cp(i+1)),iorder,first_cp(i+1)-first_cp(i))
|
||||||
|
end do
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
subroutine get_comb_val(stato, detail, cur_cp, val, istate)
|
||||||
|
implicit none
|
||||||
|
integer, intent(in) :: cur_cp, istate
|
||||||
|
integer :: first
|
||||||
|
double precision, intent(in) :: stato, detail(N_states, N_det_generators)
|
||||||
|
double precision, intent(out) :: val
|
||||||
|
double precision :: curs
|
||||||
|
integer :: j, k
|
||||||
|
integer, external :: dress_find
|
||||||
|
|
||||||
|
curs = 1d0 - stato
|
||||||
|
val = 0d0
|
||||||
|
first = cp_first_tooth(cur_cp)
|
||||||
|
|
||||||
|
do j = comb_teeth, first, -1
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
k = dress_find(curs, dress_cweight,size(dress_cweight), first_det_of_teeth(j), first_det_of_teeth(j+1))
|
||||||
|
if(k == first_det_of_teeth(first)) then
|
||||||
|
val += detail(istate, k) * dress_weight_inv(k) * comb_step * fractage(first)
|
||||||
|
else
|
||||||
|
val += detail(istate, k) * dress_weight_inv(k) * comb_step
|
||||||
|
end if
|
||||||
|
|
||||||
|
curs -= comb_step
|
||||||
|
end do
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
subroutine get_comb(stato, dets)
|
||||||
|
implicit none
|
||||||
|
double precision, intent(in) :: stato
|
||||||
|
integer, intent(out) :: dets(comb_teeth)
|
||||||
|
double precision :: curs
|
||||||
|
integer :: j
|
||||||
|
integer, external :: dress_find
|
||||||
|
|
||||||
|
curs = 1d0 - stato
|
||||||
|
do j = comb_teeth, 1, -1
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
dets(j) = dress_find(curs, dress_cweight,size(dress_cweight), first_det_of_teeth(j), first_det_of_teeth(j+1))
|
||||||
|
curs -= comb_step
|
||||||
|
end do
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
subroutine add_comb(com, computed, cp, N, tbc)
|
||||||
|
implicit none
|
||||||
|
double precision, intent(in) :: com
|
||||||
|
integer, intent(inout) :: N
|
||||||
|
double precision, intent(inout) :: cp(N_det)
|
||||||
|
logical, intent(inout) :: computed(N_det_generators)
|
||||||
|
integer, intent(inout) :: tbc(N_det_generators)
|
||||||
|
integer :: i, k, l, dets(comb_teeth)
|
||||||
|
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
call get_comb(com, dets)
|
||||||
|
|
||||||
|
k=N+1
|
||||||
|
do i = 1, comb_teeth
|
||||||
|
l = dets(i)
|
||||||
|
cp(l) += 1d0
|
||||||
|
if(.not.(computed(l))) then
|
||||||
|
tbc(k) = l
|
||||||
|
k = k+1
|
||||||
|
computed(l) = .true.
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
N = k-1
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer, dress_stoch_istate ]
|
||||||
|
implicit none
|
||||||
|
dress_stoch_istate = 1
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, dress_weight, (N_det_generators) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, dress_weight_inv, (N_det_generators) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, dress_cweight, (N_det_generators) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, dress_cweight_cache, (N_det_generators) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, fractage, (comb_teeth) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, comb_step ]
|
||||||
|
&BEGIN_PROVIDER [ integer, first_det_of_teeth, (comb_teeth+1) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, first_det_of_comb ]
|
||||||
|
&BEGIN_PROVIDER [ integer, tooth_of_det, (N_det_generators) ]
|
||||||
|
implicit none
|
||||||
|
integer :: i
|
||||||
|
double precision :: norm_left, stato
|
||||||
|
integer, external :: dress_find
|
||||||
|
|
||||||
|
dress_weight(1) = psi_coef_generators(1,dress_stoch_istate)**2
|
||||||
|
dress_cweight(1) = psi_coef_generators(1,dress_stoch_istate)**2
|
||||||
|
|
||||||
|
do i=1,N_det_generators
|
||||||
|
dress_weight(i) = psi_coef_generators(i,dress_stoch_istate)**2
|
||||||
|
enddo
|
||||||
|
|
||||||
|
! Important to loop backwards for numerical precision
|
||||||
|
dress_cweight(N_det_generators) = dress_weight(N_det_generators)
|
||||||
|
do i=N_det_generators-1,1,-1
|
||||||
|
dress_cweight(i) = dress_weight(i) + dress_cweight(i+1)
|
||||||
|
end do
|
||||||
|
|
||||||
|
do i=1,N_det_generators
|
||||||
|
dress_weight(i) = dress_weight(i) / dress_cweight(1)
|
||||||
|
dress_cweight(i) = dress_cweight(i) / dress_cweight(1)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
do i=1,N_det_generators-1
|
||||||
|
dress_cweight(i) = 1.d0 - dress_cweight(i+1)
|
||||||
|
end do
|
||||||
|
dress_cweight(N_det_generators) = 1.d0
|
||||||
|
|
||||||
|
norm_left = 1d0
|
||||||
|
|
||||||
|
comb_step = 1d0/dfloat(comb_teeth)
|
||||||
|
first_det_of_comb = 1
|
||||||
|
do i=1,min(100,N_det_generators)
|
||||||
|
if(dress_weight(i)/norm_left < comb_step) then
|
||||||
|
first_det_of_comb = i
|
||||||
|
exit
|
||||||
|
end if
|
||||||
|
norm_left -= dress_weight(i)
|
||||||
|
end do
|
||||||
|
first_det_of_comb = max(2,first_det_of_comb)
|
||||||
|
call write_int(6, first_det_of_comb-1, 'Size of deterministic set')
|
||||||
|
|
||||||
|
|
||||||
|
comb_step = (1d0 - dress_cweight(first_det_of_comb-1)) * comb_step
|
||||||
|
|
||||||
|
stato = 1d0 - comb_step
|
||||||
|
iloc = N_det_generators
|
||||||
|
do i=comb_teeth, 1, -1
|
||||||
|
integer :: iloc
|
||||||
|
iloc = dress_find(stato, dress_cweight, N_det_generators, 1, iloc)
|
||||||
|
first_det_of_teeth(i) = iloc
|
||||||
|
fractage(i) = (dress_cweight(iloc) - stato) / dress_weight(iloc)
|
||||||
|
stato -= comb_step
|
||||||
|
end do
|
||||||
|
first_det_of_teeth(comb_teeth+1) = N_det_generators + 1
|
||||||
|
first_det_of_teeth(1) = first_det_of_comb
|
||||||
|
|
||||||
|
|
||||||
|
if(first_det_of_teeth(1) /= first_det_of_comb) then
|
||||||
|
print *, 'Error in ', irp_here
|
||||||
|
stop "comb provider"
|
||||||
|
endif
|
||||||
|
|
||||||
|
do i=1,N_det_generators
|
||||||
|
dress_weight_inv(i) = 1.d0/dress_weight(i)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
tooth_of_det(:first_det_of_teeth(1)-1) = 0
|
||||||
|
do i=1,comb_teeth
|
||||||
|
tooth_of_det(first_det_of_teeth(i):first_det_of_teeth(i+1)-1) = i
|
||||||
|
end do
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
21
plugins/dress_zmq/dress_zmq_routines.irp.f
Normal file
21
plugins/dress_zmq/dress_zmq_routines.irp.f
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
subroutine dress_zmq()
|
||||||
|
implicit none
|
||||||
|
double precision, allocatable :: energy(:)
|
||||||
|
allocate (energy(N_states))
|
||||||
|
|
||||||
|
read_wf = .True.
|
||||||
|
SOFT_TOUCH read_wf
|
||||||
|
|
||||||
|
if (.True.) then
|
||||||
|
integer :: i,j
|
||||||
|
do j=1,N_states
|
||||||
|
do i=1,N_det
|
||||||
|
psi_coef(i,j) = CI_eigenvectors(i,j)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
SOFT_TOUCH psi_coef
|
||||||
|
endif
|
||||||
|
call run_dressing(N_states,energy)
|
||||||
|
deallocate(energy)
|
||||||
|
end
|
||||||
|
|
101
plugins/dress_zmq/dressing.irp.f
Normal file
101
plugins/dress_zmq/dressing.irp.f
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
use bitmasks
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer, N_dress_teeth ]
|
||||||
|
N_dress_teeth = 10
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, dress_norm_acc, (0:N_det, N_states) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, dress_norm, (0:N_det, N_states) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, dress_teeth_size, (0:N_det, N_states) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, dress_teeth, (0:N_dress_teeth+1, N_states) ]
|
||||||
|
implicit none
|
||||||
|
integer :: i, j, st, nt
|
||||||
|
double precision :: norm_sto, jump, norm_mwen, norm_loc
|
||||||
|
|
||||||
|
if(N_states /= 1) stop "dress_sto may not work with N_states /= 1"
|
||||||
|
|
||||||
|
do st=1,N_states
|
||||||
|
dress_teeth(0,st) = 1
|
||||||
|
norm_sto = 1d0
|
||||||
|
do i=1,N_det
|
||||||
|
dress_teeth(1,st) = i
|
||||||
|
jump = (1d0 / dfloat(N_dress_teeth)) * norm_sto
|
||||||
|
if(psi_coef_generators(i,1)**2 < jump / 2d0) exit
|
||||||
|
norm_sto -= psi_coef_generators(i,1)**2
|
||||||
|
end do
|
||||||
|
|
||||||
|
norm_loc = 0d0
|
||||||
|
dress_norm_acc(0,st) = 0d0
|
||||||
|
nt = 1
|
||||||
|
|
||||||
|
do i=1,dress_teeth(1,st)-1
|
||||||
|
dress_norm_acc(i,st) = dress_norm_acc(i-1,st) + psi_coef_generators(i,st)**2
|
||||||
|
end do
|
||||||
|
|
||||||
|
do i=dress_teeth(1,st), N_det_generators!-dress_teeth(1,st)+1
|
||||||
|
norm_mwen = psi_coef_generators(i,st)**2!-1+dress_teeth(1,st),st)**2
|
||||||
|
dress_norm_acc(i,st) = dress_norm_acc(i-1,st) + norm_mwen
|
||||||
|
norm_loc += norm_mwen
|
||||||
|
if(norm_loc > (jump*dfloat(nt))) then
|
||||||
|
nt = nt + 1
|
||||||
|
dress_teeth(nt,st) = i
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
if(nt > N_dress_teeth+1) then
|
||||||
|
print *, "foireouse dress_teeth", nt, dress_teeth(nt,st), N_det
|
||||||
|
stop
|
||||||
|
end if
|
||||||
|
|
||||||
|
dress_teeth(N_dress_teeth+1,st) = N_det+1
|
||||||
|
norm_loc = 0d0
|
||||||
|
do i=N_dress_teeth, 0, -1
|
||||||
|
dress_teeth_size(i,st) = dress_norm_acc(dress_teeth(i+1,st)-1,st) - dress_norm_acc(dress_teeth(i,st)-1, st)
|
||||||
|
dress_norm_acc(dress_teeth(i,st):dress_teeth(i+1,st)-1,st) -= dress_norm_acc(dress_teeth(i,st)-1, st)
|
||||||
|
dress_norm_acc(dress_teeth(i,st):dress_teeth(i+1,st)-1,st) = &
|
||||||
|
dress_norm_acc(dress_teeth(i,st):dress_teeth(i+1,st)-1,st) / dress_teeth_size(i,st)
|
||||||
|
dress_norm(dress_teeth(i,st), st) = dress_norm_acc(dress_teeth(i,st), st)
|
||||||
|
do j=dress_teeth(i,st)+1, dress_teeth(i+1,1)-1
|
||||||
|
dress_norm(j,1) = dress_norm_acc(j, st) - dress_norm_acc(j-1, st)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, delta_ij, (N_states,N_det,2) ]
|
||||||
|
use bitmasks
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer :: i,j,k
|
||||||
|
|
||||||
|
double precision, allocatable :: dress(:), del(:,:), del_s2(:,:)
|
||||||
|
double precision :: E_CI_before(N_states), relative_error
|
||||||
|
! double precision, save :: errr = 0d0
|
||||||
|
|
||||||
|
allocate(dress(N_states), del(N_states, N_det), del_s2(N_states, N_det))
|
||||||
|
|
||||||
|
delta_ij = 0d0
|
||||||
|
|
||||||
|
E_CI_before(:) = dress_E0_denominator(:) + nuclear_repulsion
|
||||||
|
threshold_selectors = 1.d0
|
||||||
|
threshold_generators = 1d0
|
||||||
|
! if(errr /= 0d0) then
|
||||||
|
! errr = errr / 2d0
|
||||||
|
! else
|
||||||
|
! errr = 1d-4
|
||||||
|
! end if
|
||||||
|
relative_error = 1.d-4
|
||||||
|
call write_double(6,relative_error,"Convergence of the stochastic algorithm")
|
||||||
|
|
||||||
|
call ZMQ_dress(E_CI_before, dress, del, del_s2, abs(relative_error))
|
||||||
|
delta_ij(:,:,1) = del(:,:)
|
||||||
|
delta_ij(:,:,2) = del_s2(:,:)
|
||||||
|
|
||||||
|
deallocate(dress, del, del_s2)
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
|
30
plugins/dress_zmq/dressing_vector.irp.f
Normal file
30
plugins/dress_zmq/dressing_vector.irp.f
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, dressing_column_h, (N_det,N_states) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, dressing_column_s, (N_det,N_states) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! \Delta_{state-specific}. \Psi
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
integer :: i,ii,k,j, l
|
||||||
|
double precision :: f, tmp
|
||||||
|
double precision, external :: u_dot_v
|
||||||
|
|
||||||
|
dressing_column_h(:,:) = 0.d0
|
||||||
|
dressing_column_s(:,:) = 0.d0
|
||||||
|
|
||||||
|
do k=1,N_states
|
||||||
|
do j = 1, n_det
|
||||||
|
dressing_column_h(j,k) = delta_ij(k,j,1)
|
||||||
|
dressing_column_s(j,k) = delta_ij(k,j,2)
|
||||||
|
enddo
|
||||||
|
! tmp = u_dot_v(dressing_column_h(1,k), psi_coef(1,k), N_det) &
|
||||||
|
! - dressing_column_h(l,k) * psi_coef(l,k)
|
||||||
|
! dressing_column_h(l,k) -= tmp * f
|
||||||
|
! tmp = u_dot_v(dressing_column_s(1,k), psi_coef(1,k), N_det) &
|
||||||
|
! - dressing_column_s(l,k) * psi_coef(l,k)
|
||||||
|
! dressing_column_s(l,k) -= tmp * f
|
||||||
|
enddo
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
25
plugins/dress_zmq/energy.irp.f
Normal file
25
plugins/dress_zmq/energy.irp.f
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
BEGIN_PROVIDER [ logical, initialize_dress_E0_denominator ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! If true, initialize dress_E0_denominator
|
||||||
|
END_DOC
|
||||||
|
initialize_dress_E0_denominator = .True.
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, dress_E0_denominator, (N_states) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! E0 in the denominator of the dress
|
||||||
|
END_DOC
|
||||||
|
integer :: i
|
||||||
|
if (initialize_dress_E0_denominator) then
|
||||||
|
call u_0_H_u_0(dress_E0_denominator,psi_coef,N_det,psi_det,N_int,N_states,size(psi_coef,1))
|
||||||
|
do i=N_det+1,N_states
|
||||||
|
dress_E0_denominator(i) = 0.d0
|
||||||
|
enddo
|
||||||
|
call write_double(6,dress_E0_denominator(1)+nuclear_repulsion, 'dress Energy denominator')
|
||||||
|
else
|
||||||
|
dress_E0_denominator = -huge(1.d0)
|
||||||
|
endif
|
||||||
|
END_PROVIDER
|
||||||
|
|
129
plugins/dress_zmq/run_dress_slave.irp.f
Normal file
129
plugins/dress_zmq/run_dress_slave.irp.f
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
BEGIN_PROVIDER [ integer, fragment_count ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Number of fragments for the deterministic part
|
||||||
|
END_DOC
|
||||||
|
fragment_count = 1
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
subroutine run_dress_slave(thread,iproc,energy)
|
||||||
|
use f77_zmq
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
double precision, intent(in) :: energy(N_states_diag)
|
||||||
|
integer, intent(in) :: thread, iproc
|
||||||
|
integer :: rc, i, subset, i_generator
|
||||||
|
|
||||||
|
integer :: worker_id, task_id, ctask, ltask
|
||||||
|
character*(512) :: task
|
||||||
|
|
||||||
|
integer(ZMQ_PTR),external :: new_zmq_to_qp_run_socket
|
||||||
|
integer(ZMQ_PTR) :: zmq_to_qp_run_socket
|
||||||
|
|
||||||
|
integer(ZMQ_PTR), external :: new_zmq_push_socket
|
||||||
|
integer(ZMQ_PTR) :: zmq_socket_push
|
||||||
|
|
||||||
|
logical :: done
|
||||||
|
|
||||||
|
double precision,allocatable :: dress_detail(:)
|
||||||
|
integer :: ind
|
||||||
|
|
||||||
|
double precision,allocatable :: delta_ij_loc(:,:,:)
|
||||||
|
double precision :: div(N_states)
|
||||||
|
integer :: h,p,n,i_state
|
||||||
|
logical :: ok
|
||||||
|
|
||||||
|
allocate(delta_ij_loc(N_states,N_det,2))
|
||||||
|
|
||||||
|
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
||||||
|
zmq_socket_push = new_zmq_push_socket(thread)
|
||||||
|
call connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread)
|
||||||
|
if(worker_id == -1) then
|
||||||
|
print *, "WORKER -1"
|
||||||
|
call end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
|
||||||
|
call end_zmq_push_socket(zmq_socket_push,thread)
|
||||||
|
return
|
||||||
|
end if
|
||||||
|
do i=1,N_states
|
||||||
|
div(i) = psi_coef(dressed_column_idx(i), i)
|
||||||
|
end do
|
||||||
|
do
|
||||||
|
call get_task_from_taskserver(zmq_to_qp_run_socket,worker_id, task_id, task)
|
||||||
|
|
||||||
|
if(task_id /= 0) then
|
||||||
|
read (task,*) subset, i_generator
|
||||||
|
delta_ij_loc = 0d0
|
||||||
|
call alpha_callback(delta_ij_loc, i_generator, subset, iproc)
|
||||||
|
|
||||||
|
call task_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id)
|
||||||
|
call push_dress_results(zmq_socket_push, i_generator, delta_ij_loc, task_id)
|
||||||
|
else
|
||||||
|
exit
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
call disconnect_from_taskserver(zmq_to_qp_run_socket,worker_id)
|
||||||
|
call end_zmq_push_socket(zmq_socket_push,thread)
|
||||||
|
call end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
subroutine push_dress_results(zmq_socket_push, ind, delta_loc, task_id)
|
||||||
|
use f77_zmq
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer(ZMQ_PTR), intent(in) :: zmq_socket_push
|
||||||
|
double precision, intent(in) :: delta_loc(N_states, N_det, 2)
|
||||||
|
integer, intent(in) :: ind, task_id
|
||||||
|
integer :: rc, i
|
||||||
|
|
||||||
|
|
||||||
|
rc = f77_zmq_send( zmq_socket_push, ind, 4, ZMQ_SNDMORE)
|
||||||
|
if(rc /= 4) stop "push"
|
||||||
|
|
||||||
|
|
||||||
|
rc = f77_zmq_send( zmq_socket_push, delta_loc, 8*N_states*N_det*2, ZMQ_SNDMORE)
|
||||||
|
if(rc /= 8*N_states*N_det*2) stop "push"
|
||||||
|
|
||||||
|
rc = f77_zmq_send( zmq_socket_push, task_id, 4, 0)
|
||||||
|
if(rc /= 4) stop "push"
|
||||||
|
|
||||||
|
! Activate is zmq_socket_push is a REQ
|
||||||
|
IRP_IF ZMQ_PUSH
|
||||||
|
IRP_ELSE
|
||||||
|
character*(2) :: ok
|
||||||
|
rc = f77_zmq_recv( zmq_socket_push, ok, 2, 0)
|
||||||
|
IRP_ENDIF
|
||||||
|
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
subroutine pull_dress_results(zmq_socket_pull, ind, delta_loc, task_id)
|
||||||
|
use f77_zmq
|
||||||
|
implicit none
|
||||||
|
integer(ZMQ_PTR), intent(in) :: zmq_socket_pull
|
||||||
|
double precision, intent(inout) :: delta_loc(N_states, N_det, 2)
|
||||||
|
integer, intent(out) :: ind
|
||||||
|
integer, intent(out) :: task_id
|
||||||
|
integer :: rc, i
|
||||||
|
|
||||||
|
|
||||||
|
rc = f77_zmq_recv( zmq_socket_pull, ind, 4, 0)
|
||||||
|
if(rc /= 4) stop "pull"
|
||||||
|
|
||||||
|
rc = f77_zmq_recv( zmq_socket_pull, delta_loc, N_states*8*N_det*2, 0)
|
||||||
|
if(rc /= 8*N_states*N_det*2) stop "pull"
|
||||||
|
|
||||||
|
rc = f77_zmq_recv( zmq_socket_pull, task_id, 4, 0)
|
||||||
|
if(rc /= 4) stop "pull"
|
||||||
|
|
||||||
|
! Activate is zmq_socket_pull is a REP
|
||||||
|
IRP_IF ZMQ_PUSH
|
||||||
|
IRP_ELSE
|
||||||
|
rc = f77_zmq_send( zmq_socket_pull, 'ok', 2, 0)
|
||||||
|
IRP_ENDIF
|
||||||
|
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
|
1
plugins/mrcc_sto/NEEDED_CHILDREN_MODULES
Normal file
1
plugins/mrcc_sto/NEEDED_CHILDREN_MODULES
Normal file
@ -0,0 +1 @@
|
|||||||
|
dress_zmq DavidsonDressed Psiref_CAS MRPT_Utils Perturbation MRCC_Utils
|
12
plugins/mrcc_sto/README.rst
Normal file
12
plugins/mrcc_sto/README.rst
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
========
|
||||||
|
mrcc_sto
|
||||||
|
========
|
||||||
|
|
||||||
|
Needed Modules
|
||||||
|
==============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
||||||
|
Documentation
|
||||||
|
=============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
240
plugins/mrcc_sto/mrcc_sto.irp.f
Normal file
240
plugins/mrcc_sto/mrcc_sto.irp.f
Normal file
@ -0,0 +1,240 @@
|
|||||||
|
|
||||||
|
program mrcc_sto
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! TODO
|
||||||
|
END_DOC
|
||||||
|
call dress_zmq()
|
||||||
|
call ezfio_set_mrcc_sto_energy(ci_energy_dressed(1))
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, hij_cache_, (N_det,Nproc) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, sij_cache_, (N_det,Nproc) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, dIa_hla_, (N_states,N_det,Nproc) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, dIa_sla_, (N_states,N_det,Nproc) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, excs_ , (0:2,2,2,N_det,Nproc) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, phases_, (N_det, Nproc) ]
|
||||||
|
BEGIN_DOC
|
||||||
|
! temporay arrays for dress_with_alpha_buffer. Avoids reallocation.
|
||||||
|
END_DOC
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
subroutine dress_with_alpha_buffer(delta_ij_loc, i_gen, minilist, det_minilist, n_minilist, alpha, iproc)
|
||||||
|
use bitmasks
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
!delta_ij_loc(:,:,1) : dressing column for H
|
||||||
|
!delta_ij_loc(:,:,2) : dressing column for S2
|
||||||
|
!minilist : indices of determinants connected to alpha ( in psi_det_sorted )
|
||||||
|
!n_minilist : size of minilist
|
||||||
|
!alpha : alpha determinant
|
||||||
|
END_DOC
|
||||||
|
integer(bit_kind), intent(in) :: alpha(N_int,2), det_minilist(N_int, 2, n_minilist)
|
||||||
|
integer,intent(in) :: minilist(n_minilist), n_minilist, iproc, i_gen
|
||||||
|
double precision, intent(inout) :: delta_ij_loc(N_states,N_det,2)
|
||||||
|
|
||||||
|
|
||||||
|
integer :: i,j,k,l,m
|
||||||
|
integer :: degree1, degree2, degree
|
||||||
|
|
||||||
|
double precision :: hIk, hla, hIl, sla, dIk(N_states), dka(N_states), dIa(N_states), hka
|
||||||
|
double precision :: phase, phase2
|
||||||
|
integer :: exc(0:2,2,2)
|
||||||
|
integer :: h1,h2,p1,p2,s1,s2
|
||||||
|
integer(bit_kind) :: tmp_det(N_int,2), ctrl
|
||||||
|
integer :: i_state, k_sd, l_sd, m_sd, ll_sd, i_I
|
||||||
|
double precision :: Delta_E_inv(N_states)
|
||||||
|
double precision :: sdress, hdress
|
||||||
|
logical :: ok, ok2
|
||||||
|
integer :: canbediamond
|
||||||
|
PROVIDE mo_class
|
||||||
|
|
||||||
|
|
||||||
|
if(n_minilist == 1) return
|
||||||
|
|
||||||
|
do i=1,n_minilist
|
||||||
|
if(idx_non_ref_rev(minilist(i)) == 0) return
|
||||||
|
end do
|
||||||
|
|
||||||
|
if (perturbative_triples) then
|
||||||
|
PROVIDE one_anhil fock_virt_total fock_core_inactive_total one_creat
|
||||||
|
endif
|
||||||
|
|
||||||
|
canbediamond = 0
|
||||||
|
do l_sd=1,n_minilist
|
||||||
|
call get_excitation(det_minilist(1,1,l_sd),alpha,exc,degree1,phase,N_int)
|
||||||
|
call decode_exc(exc,degree1,h1,p1,h2,p2,s1,s2)
|
||||||
|
|
||||||
|
ok = (mo_class(h1)(1:1) == 'A' .or. mo_class(h1)(1:1) == 'I') .and. &
|
||||||
|
(mo_class(p1)(1:1) == 'A' .or. mo_class(p1)(1:1) == 'V')
|
||||||
|
if(ok .and. degree1 == 2) then
|
||||||
|
ok = (mo_class(h2)(1:1) == 'A' .or. mo_class(h2)(1:1) == 'I') .and. &
|
||||||
|
(mo_class(p2)(1:1) == 'A' .or. mo_class(p2)(1:1) == 'V')
|
||||||
|
end if
|
||||||
|
|
||||||
|
if(ok) then
|
||||||
|
canbediamond += 1
|
||||||
|
excs_(:,:,:,l_sd,iproc) = exc(:,:,:)
|
||||||
|
phases_(l_sd, iproc) = phase
|
||||||
|
else
|
||||||
|
phases_(l_sd, iproc) = 0d0
|
||||||
|
end if
|
||||||
|
!call i_h_j(alpha,det_minilist(1,1,l_sd),N_int,hij_cache_(l_sd,iproc))
|
||||||
|
!call get_s2(alpha,det_minilist(1,1,l_sd),N_int,sij_cache_(l_sd,iproc))
|
||||||
|
call i_h_j_s2(alpha,det_minilist(1,1,l_sd),N_int,hij_cache_(l_sd,iproc), sij_cache_(l_sd,iproc))
|
||||||
|
enddo
|
||||||
|
if(canbediamond <= 1) return
|
||||||
|
|
||||||
|
do i_I=1,N_det_ref
|
||||||
|
call get_excitation_degree(alpha,psi_ref(1,1,i_I),degree1,N_int)
|
||||||
|
if (degree1 > 4) then
|
||||||
|
cycle
|
||||||
|
endif
|
||||||
|
|
||||||
|
do i_state=1,N_states
|
||||||
|
dIa(i_state) = 0.d0
|
||||||
|
enddo
|
||||||
|
|
||||||
|
do k_sd=1,n_minilist
|
||||||
|
if(phases_(k_sd,iproc) == 0d0) cycle
|
||||||
|
call get_excitation_degree(psi_ref(1,1,i_I),det_minilist(1,1,k_sd),degree,N_int)
|
||||||
|
if (degree > 2) then
|
||||||
|
cycle
|
||||||
|
endif
|
||||||
|
|
||||||
|
!call get_excitation(det_minilist(1,1,k_sd),alpha,exc,degree2,phase,N_int)
|
||||||
|
phase = phases_(k_sd, iproc)
|
||||||
|
exc(:,:,:) = excs_(:,:,:,k_sd,iproc)
|
||||||
|
degree2 = exc(0,1,1) + exc(0,1,2)
|
||||||
|
call apply_excitation(psi_ref(1,1,i_I), exc, tmp_det, ok, N_int)
|
||||||
|
|
||||||
|
if((.not. ok) .and. (.not. perturbative_triples)) cycle
|
||||||
|
|
||||||
|
do i_state=1,N_states
|
||||||
|
dka(i_state) = 0.d0
|
||||||
|
enddo
|
||||||
|
|
||||||
|
ok2 = .false.
|
||||||
|
!do i_state=1,N_states
|
||||||
|
! !if(dka(i_state) == 0) cycle
|
||||||
|
! dIk(i_state) = dij(i_I, idx_non_ref_rev(minilist(k_sd)), i_state)
|
||||||
|
! if(dIk(i_state) /= 0d0) then
|
||||||
|
! ok2 = .true.
|
||||||
|
! endif
|
||||||
|
!enddo
|
||||||
|
!if(.not. ok2) cycle
|
||||||
|
|
||||||
|
if (ok) then
|
||||||
|
phase2 = 0d0
|
||||||
|
do l_sd=k_sd+1,n_minilist
|
||||||
|
if(phases_(l_sd, iproc) == 0d0) cycle
|
||||||
|
call get_excitation_degree(tmp_det,det_minilist(1,1,l_sd),degree,N_int)
|
||||||
|
if (degree == 0) then
|
||||||
|
do i_state=1,N_states
|
||||||
|
dIk(i_state) = dij(i_I, idx_non_ref_rev(minilist(k_sd)), i_state)
|
||||||
|
if(dIk(i_state) /= 0d0) then
|
||||||
|
if(phase2 == 0d0) call get_excitation(psi_ref(1,1,i_I),det_minilist(1,1,l_sd),exc,degree,phase2,N_int)
|
||||||
|
dka(i_state) = dij(i_I, idx_non_ref_rev(minilist(l_sd)), i_state) * phase * phase2
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
|
||||||
|
!call get_excitation(psi_ref(1,1,i_I),det_minilist(1,1,l_sd),exc,degree,phase2,N_int)
|
||||||
|
!do i_state=1,N_states
|
||||||
|
! if(dIk(i_state) /= 0d0) dka(i_state) = dij(i_I, idx_non_ref_rev(minilist(l_sd)), i_state) * phase * phase2
|
||||||
|
!enddo
|
||||||
|
exit
|
||||||
|
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
else if (perturbative_triples) then
|
||||||
|
hka = hij_cache_(k_sd,iproc)
|
||||||
|
if (dabs(hka) > 1.d-12) then
|
||||||
|
call get_delta_e_dyall_general_mp(psi_ref(1,1,i_I),alpha,Delta_E_inv)
|
||||||
|
|
||||||
|
do i_state=1,N_states
|
||||||
|
ASSERT (Delta_E_inv(i_state) < 0.d0)
|
||||||
|
dka(i_state) = hka / Delta_E_inv(i_state)
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
if (perturbative_triples.and. (degree2 == 1) ) then
|
||||||
|
call i_h_j(psi_ref(1,1,i_I),tmp_det,N_int,hka)
|
||||||
|
hka = hij_cache_(k_sd,iproc) - hka
|
||||||
|
if (dabs(hka) > 1.d-12) then
|
||||||
|
call get_delta_e_dyall_general_mp(psi_ref(1,1,i_I),alpha,Delta_E_inv)
|
||||||
|
do i_state=1,N_states
|
||||||
|
ASSERT (Delta_E_inv(i_state) < 0.d0)
|
||||||
|
dka(i_state) = hka / Delta_E_inv(i_state)
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
do i_state=1,N_states
|
||||||
|
dIa(i_state) = dIa(i_state) + dIk(i_state) * dka(i_state)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
ok2 = .false.
|
||||||
|
do i_state=1,N_states
|
||||||
|
if(dIa(i_state) /= 0d0) ok2 = .true.
|
||||||
|
enddo
|
||||||
|
if(.not. ok2) cycle
|
||||||
|
|
||||||
|
do l_sd=1,n_minilist
|
||||||
|
k_sd = minilist(l_sd)
|
||||||
|
hla = hij_cache_(l_sd,iproc)
|
||||||
|
sla = sij_cache_(l_sd,iproc)
|
||||||
|
do i_state=1,N_states
|
||||||
|
hdress = dIa(i_state) * hla * psi_ref_coef(i_I,i_state)
|
||||||
|
sdress = dIa(i_state) * sla * psi_ref_coef(i_I,i_state)
|
||||||
|
!!!$OMP ATOMIC
|
||||||
|
delta_ij_loc(i_state,k_sd,1) += hdress
|
||||||
|
!!!$OMP ATOMIC
|
||||||
|
delta_ij_loc(i_state,k_sd,2) += sdress
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!! TESTS MINILIST
|
||||||
|
subroutine test_minilist(minilist, n_minilist, alpha)
|
||||||
|
use bitmasks
|
||||||
|
implicit none
|
||||||
|
integer, intent(in) :: n_minilist
|
||||||
|
integer(bit_kind),intent(in) :: alpha(N_int, 2)
|
||||||
|
integer, intent(in) :: minilist(n_minilist)
|
||||||
|
integer :: a, i, deg
|
||||||
|
integer :: refc(N_det), testc(N_det)
|
||||||
|
|
||||||
|
refc = 0
|
||||||
|
testc = 0
|
||||||
|
do i=1,N_det
|
||||||
|
call get_excitation_degree(psi_det(1,1,i), alpha, deg, N_int)
|
||||||
|
if(deg <= 2) refc(i) = refc(i) + 1
|
||||||
|
end do
|
||||||
|
do i=1,n_minilist
|
||||||
|
call get_excitation_degree(psi_det(1,1,minilist(i)), alpha, deg, N_int)
|
||||||
|
if(deg <= 2) then
|
||||||
|
testc(minilist(i)) += 1
|
||||||
|
else
|
||||||
|
stop "NON LINKED IN MINILIST"
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
|
||||||
|
do i=1,N_det
|
||||||
|
if(refc(i) /= testc(i)) then
|
||||||
|
print *, "MINILIST FAIL ", sum(refc), sum(testc), n_minilist
|
||||||
|
exit
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
|
@ -1 +1 @@
|
|||||||
Perturbation Selectors_full Generators_full Psiref_CAS MRCC_Utils ZMQ
|
DavidsonDressed Perturbation Selectors_full Generators_full Psiref_CAS MRCC_Utils ZMQ
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -402,17 +402,15 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
subroutine mrsc2_dressing_collector(zmq_socket_pull,delta_ii_,delta_ij_,delta_ii_s2_,delta_ij_s2_)
|
subroutine mrsc2_dressing_collector(zmq_socket_pull,delta_ij_,delta_ij_s2_)
|
||||||
use f77_zmq
|
use f77_zmq
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Collects results from the AO integral calculation
|
! Collects results from the AO integral calculation
|
||||||
END_DOC
|
END_DOC
|
||||||
|
|
||||||
double precision,intent(inout) :: delta_ij_(N_states,N_det_non_ref,N_det_ref)
|
double precision,intent(inout) :: delta_ij_(N_states,N_det_non_ref)
|
||||||
double precision,intent(inout) :: delta_ii_(N_states,N_det_ref)
|
double precision,intent(inout) :: delta_ij_s2_(N_states,N_det_non_ref)
|
||||||
double precision,intent(inout) :: delta_ij_s2_(N_states,N_det_non_ref,N_det_ref)
|
|
||||||
double precision,intent(inout) :: delta_ii_s2_(N_states,N_det_ref)
|
|
||||||
integer(ZMQ_PTR), intent(in) :: zmq_socket_pull
|
integer(ZMQ_PTR), intent(in) :: zmq_socket_pull
|
||||||
|
|
||||||
! integer :: j,l
|
! integer :: j,l
|
||||||
@ -431,15 +429,18 @@ subroutine mrsc2_dressing_collector(zmq_socket_pull,delta_ii_,delta_ij_,delta_ii
|
|||||||
integer :: I_i, J, l, i_state, n(2), kk
|
integer :: I_i, J, l, i_state, n(2), kk
|
||||||
integer,allocatable :: idx(:,:)
|
integer,allocatable :: idx(:,:)
|
||||||
|
|
||||||
delta_ii_(:,:) = 0d0
|
delta_ij_(:,:) = 0d0
|
||||||
delta_ij_(:,:,:) = 0d0
|
delta_ij_s2_(:,:) = 0d0
|
||||||
delta_ii_s2_(:,:) = 0d0
|
|
||||||
delta_ij_s2_(:,:,:) = 0d0
|
|
||||||
|
|
||||||
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
||||||
|
|
||||||
allocate ( delta(N_states,0:N_det_non_ref,2), delta_s2(N_states,0:N_det_non_ref,2) )
|
allocate ( delta(N_states,0:N_det_non_ref,2), delta_s2(N_states,0:N_det_non_ref,2) )
|
||||||
|
|
||||||
|
double precision :: c0(N_states)
|
||||||
|
do i_state=1,N_states
|
||||||
|
c0(i_state) = 1.d0/psi_coef(dressed_column_idx(i_state),i_state)
|
||||||
|
enddo
|
||||||
|
|
||||||
allocate(idx(N_det_non_ref,2))
|
allocate(idx(N_det_non_ref,2))
|
||||||
more = 1
|
more = 1
|
||||||
do while (more == 1)
|
do while (more == 1)
|
||||||
@ -449,34 +450,19 @@ subroutine mrsc2_dressing_collector(zmq_socket_pull,delta_ii_,delta_ij_,delta_ii
|
|||||||
|
|
||||||
do l=1, n(1)
|
do l=1, n(1)
|
||||||
do i_state=1,N_states
|
do i_state=1,N_states
|
||||||
delta_ij_(i_state,idx(l,1),i_I) += delta(i_state,l,1)
|
delta_ij_(i_state,idx(l,1)) += delta(i_state,l,1) * psi_ref_coef(i_I,i_state) * c0(i_state)
|
||||||
delta_ij_s2_(i_state,idx(l,1),i_I) += delta_s2(i_state,l,1)
|
delta_ij_s2_(i_state,idx(l,1)) += delta_s2(i_state,l,1) * psi_ref_coef(i_I,i_state) * c0(i_state)
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
|
|
||||||
do l=1, n(2)
|
do l=1, n(2)
|
||||||
do i_state=1,N_states
|
do i_state=1,N_states
|
||||||
delta_ij_(i_state,idx(l,2),J) += delta(i_state,l,2)
|
delta_ij_(i_state,idx(l,2)) += delta(i_state,l,2) * psi_ref_coef(J,i_state) * c0(i_state)
|
||||||
delta_ij_s2_(i_state,idx(l,2),J) += delta_s2(i_state,l,2)
|
delta_ij_s2_(i_state,idx(l,2)) += delta_s2(i_state,l,2) * psi_ref_coef(J,i_state) * c0(i_state)
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
|
|
||||||
|
|
||||||
if(n(1) /= 0) then
|
|
||||||
do i_state=1,N_states
|
|
||||||
delta_ii_(i_state,i_I) += delta(i_state,0,1)
|
|
||||||
delta_ii_s2_(i_state,i_I) += delta_s2(i_state,0,1)
|
|
||||||
end do
|
|
||||||
end if
|
|
||||||
|
|
||||||
if(n(2) /= 0) then
|
|
||||||
do i_state=1,N_states
|
|
||||||
delta_ii_(i_state,J) += delta(i_state,0,2)
|
|
||||||
delta_ii_s2_(i_state,J) += delta_s2(i_state,0,2)
|
|
||||||
end do
|
|
||||||
end if
|
|
||||||
|
|
||||||
|
|
||||||
if (task_id /= 0) then
|
if (task_id /= 0) then
|
||||||
integer, external :: zmq_delete_task
|
integer, external :: zmq_delete_task
|
||||||
if (zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more) == -1) then
|
if (zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more) == -1) then
|
||||||
@ -495,10 +481,8 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, delta_ij_old, (N_states,N_det_non_ref,N_det_ref) ]
|
BEGIN_PROVIDER [ double precision, delta_ij_old, (N_states,N_det_non_ref) ]
|
||||||
&BEGIN_PROVIDER [ double precision, delta_ii_old, (N_states,N_det_ref) ]
|
&BEGIN_PROVIDER [ double precision, delta_ij_s2_old, (N_states,N_det_non_ref) ]
|
||||||
&BEGIN_PROVIDER [ double precision, delta_ij_s2_old, (N_states,N_det_non_ref,N_det_ref) ]
|
|
||||||
&BEGIN_PROVIDER [ double precision, delta_ii_s2_old, (N_states,N_det_ref) ]
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
integer :: i_state, i, i_I, J, k, kk, degree, degree2, m, l, deg, ni, m2
|
integer :: i_state, i, i_I, J, k, kk, degree, degree2, m, l, deg, ni, m2
|
||||||
@ -612,11 +596,11 @@ end
|
|||||||
print *, nzer, ntot, float(nzer) / float(ntot)
|
print *, nzer, ntot, float(nzer) / float(ntot)
|
||||||
provide nproc
|
provide nproc
|
||||||
!$OMP PARALLEL DEFAULT(none) &
|
!$OMP PARALLEL DEFAULT(none) &
|
||||||
!$OMP SHARED(delta_ii_old,delta_ij_old,delta_ii_s2_old,delta_ij_s2_old,zmq_socket_pull)&
|
!$OMP SHARED(delta_ij_old,delta_ij_s2_old,zmq_socket_pull)&
|
||||||
!$OMP PRIVATE(i) NUM_THREADS(nproc+1)
|
!$OMP PRIVATE(i) NUM_THREADS(nproc+1)
|
||||||
i = omp_get_thread_num()
|
i = omp_get_thread_num()
|
||||||
if (i==0) then
|
if (i==0) then
|
||||||
call mrsc2_dressing_collector(zmq_socket_pull,delta_ii_old,delta_ij_old,delta_ii_s2_old,delta_ij_s2_old)
|
call mrsc2_dressing_collector(zmq_socket_pull,delta_ij_old,delta_ij_s2_old)
|
||||||
else
|
else
|
||||||
call mrsc2_dressing_slave_inproc(i)
|
call mrsc2_dressing_slave_inproc(i)
|
||||||
endif
|
endif
|
||||||
|
31
plugins/mrcepa0/dressing_vector.irp.f
Normal file
31
plugins/mrcepa0/dressing_vector.irp.f
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, dressing_column_h, (N_det,N_states) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, dressing_column_s, (N_det,N_states) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Null dressing vectors
|
||||||
|
END_DOC
|
||||||
|
dressing_column_h(:,:) = 0.d0
|
||||||
|
dressing_column_s(:,:) = 0.d0
|
||||||
|
|
||||||
|
integer :: i,ii,k,j,jj, l
|
||||||
|
double precision :: f, tmp
|
||||||
|
double precision, external :: u_dot_v
|
||||||
|
|
||||||
|
do k=1,N_states
|
||||||
|
l = dressed_column_idx(k)
|
||||||
|
f = 1.d0/psi_coef(l,k)
|
||||||
|
do jj = 1, n_det_non_ref
|
||||||
|
j = idx_non_ref(jj)
|
||||||
|
dressing_column_h(j,k) = delta_ij (k,jj) * f
|
||||||
|
dressing_column_s(j,k) = delta_ij_s2(k,jj) * f
|
||||||
|
enddo
|
||||||
|
tmp = u_dot_v(dressing_column_h(1,k), psi_coef(1,k), N_det)
|
||||||
|
dressing_column_h(l,k) -= tmp * f
|
||||||
|
tmp = u_dot_v(dressing_column_s(1,k), psi_coef(1,k), N_det)
|
||||||
|
dressing_column_s(l,k) -= tmp * f
|
||||||
|
enddo
|
||||||
|
! stop
|
||||||
|
END_PROVIDER
|
||||||
|
|
@ -25,7 +25,11 @@ subroutine run_wf
|
|||||||
double precision :: energy(N_states_diag)
|
double precision :: energy(N_states_diag)
|
||||||
character*(64) :: states(1)
|
character*(64) :: states(1)
|
||||||
integer :: rc, i
|
integer :: rc, i
|
||||||
|
|
||||||
|
integer, external :: zmq_get_dvector, zmq_get_N_det_generators
|
||||||
|
integer, external :: zmq_get_psi, zmq_get_N_det_selectors
|
||||||
|
integer, external :: zmq_get_N_states_diag
|
||||||
|
|
||||||
call provide_everything
|
call provide_everything
|
||||||
|
|
||||||
zmq_context = f77_zmq_ctx_new ()
|
zmq_context = f77_zmq_ctx_new ()
|
||||||
@ -34,20 +38,24 @@ subroutine run_wf
|
|||||||
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
||||||
|
|
||||||
do
|
do
|
||||||
|
|
||||||
call wait_for_states(states,zmq_state,1)
|
call wait_for_states(states,zmq_state,1)
|
||||||
|
if(zmq_state(1:7) == 'Stopped') then
|
||||||
if(trim(zmq_state) == 'Stopped') then
|
|
||||||
|
|
||||||
exit
|
exit
|
||||||
|
|
||||||
else if (trim(zmq_state) == 'mrcc') then
|
else if (zmq_state(1:4) == 'mrcc') then
|
||||||
|
|
||||||
! Selection
|
! Selection
|
||||||
! ---------
|
! ---------
|
||||||
|
|
||||||
print *, 'mrcc'
|
!call wall_time(t0)
|
||||||
call zmq_get_psi(zmq_to_qp_run_socket,1,energy,N_states)
|
if (zmq_get_psi(zmq_to_qp_run_socket,1) == -1) cycle
|
||||||
|
if (zmq_get_N_det_generators (zmq_to_qp_run_socket, 1) == -1) cycle
|
||||||
|
if (zmq_get_N_det_selectors(zmq_to_qp_run_socket, 1) == -1) cycle
|
||||||
|
if (zmq_get_dvector(zmq_to_qp_run_socket,1,'energy',energy,N_states) == -1) cycle
|
||||||
|
|
||||||
|
!call wall_time(t1)
|
||||||
|
!call write_double(6,(t1-t0),'Broadcast time')
|
||||||
|
|
||||||
PROVIDE psi_bilinear_matrix_columns_loc psi_det_alpha_unique psi_det_beta_unique
|
PROVIDE psi_bilinear_matrix_columns_loc psi_det_alpha_unique psi_det_beta_unique
|
||||||
PROVIDE psi_bilinear_matrix_rows psi_det_sorted_order psi_bilinear_matrix_order
|
PROVIDE psi_bilinear_matrix_rows psi_det_sorted_order psi_bilinear_matrix_order
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
program mrcc_stoch
|
|
||||||
implicit none
|
|
||||||
read_wf = .True.
|
|
||||||
SOFT_TOUCH read_wf
|
|
||||||
PROVIDE mo_bielec_integrals_in_map
|
|
||||||
call run
|
|
||||||
end
|
|
||||||
|
|
||||||
subroutine run
|
|
||||||
implicit none
|
|
||||||
integer :: i,j,k
|
|
||||||
logical, external :: detEq
|
|
||||||
|
|
||||||
double precision, allocatable :: mrcc(:)
|
|
||||||
integer :: degree
|
|
||||||
integer :: n_det_before, to_select
|
|
||||||
double precision :: threshold_davidson_in
|
|
||||||
|
|
||||||
double precision :: E_CI_before, relative_error
|
|
||||||
|
|
||||||
allocate (mrcc(N_states))
|
|
||||||
mrcc = 0.d0
|
|
||||||
!call random_seed()
|
|
||||||
E_CI_before = mrcc_E0_denominator(1) + nuclear_repulsion
|
|
||||||
threshold_selectors = 1.d0
|
|
||||||
threshold_generators = 1d0
|
|
||||||
relative_error = 5.d-2
|
|
||||||
call ZMQ_mrcc(E_CI_before, mrcc, relative_error)
|
|
||||||
!print *, 'Final step'
|
|
||||||
!print *, 'N_det = ', N_det
|
|
||||||
print *, 'mrcc = ', mrcc
|
|
||||||
!print *, 'E = ', E_CI_before
|
|
||||||
!print *, 'E+mrcc = ', E_CI_before+mrcc
|
|
||||||
!print *, '-----'
|
|
||||||
!call ezfio_set_full_ci_zmq_energy_mrcc(E_CI_before+mrcc(1))
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
@ -13,7 +13,7 @@ BEGIN_PROVIDER [ integer, mrcc_stoch_istate ]
|
|||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
subroutine ZMQ_mrcc(E, mrcc, delta, delta_s2, relative_error)
|
subroutine ZMQ_mrcc(E, mrcc, delta, delta_s2, relative_error)
|
||||||
use dress_types
|
!use dress_types
|
||||||
use f77_zmq
|
use f77_zmq
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
@ -32,7 +32,7 @@ subroutine ZMQ_mrcc(E, mrcc, delta, delta_s2, relative_error)
|
|||||||
|
|
||||||
double precision, external :: omp_get_wtime
|
double precision, external :: omp_get_wtime
|
||||||
double precision :: time
|
double precision :: time
|
||||||
|
integer, external :: add_task_to_taskserver
|
||||||
|
|
||||||
state_average_weight(:) = 0.d0
|
state_average_weight(:) = 0.d0
|
||||||
state_average_weight(mrcc_stoch_istate) = 1.d0
|
state_average_weight(mrcc_stoch_istate) = 1.d0
|
||||||
@ -54,7 +54,7 @@ subroutine ZMQ_mrcc(E, mrcc, delta, delta_s2, relative_error)
|
|||||||
integer, external :: zmq_put_N_det_generators
|
integer, external :: zmq_put_N_det_generators
|
||||||
integer, external :: zmq_put_N_det_selectors
|
integer, external :: zmq_put_N_det_selectors
|
||||||
integer, external :: zmq_put_dvector
|
integer, external :: zmq_put_dvector
|
||||||
|
integer, external :: zmq_set_running
|
||||||
if (zmq_put_psi(zmq_to_qp_run_socket,1) == -1) then
|
if (zmq_put_psi(zmq_to_qp_run_socket,1) == -1) then
|
||||||
stop 'Unable to put psi on ZMQ server'
|
stop 'Unable to put psi on ZMQ server'
|
||||||
endif
|
endif
|
||||||
@ -73,7 +73,6 @@ subroutine ZMQ_mrcc(E, mrcc, delta, delta_s2, relative_error)
|
|||||||
! end do
|
! end do
|
||||||
|
|
||||||
integer(ZMQ_PTR), external :: new_zmq_to_qp_run_socket
|
integer(ZMQ_PTR), external :: new_zmq_to_qp_run_socket
|
||||||
integer, external :: add_task_to_taskserver, zmq_set_running
|
|
||||||
integer :: ipos
|
integer :: ipos
|
||||||
ipos=1
|
ipos=1
|
||||||
do i=1,N_mrcc_jobs
|
do i=1,N_mrcc_jobs
|
||||||
@ -105,7 +104,6 @@ subroutine ZMQ_mrcc(E, mrcc, delta, delta_s2, relative_error)
|
|||||||
stop 'Unable to add task to task server'
|
stop 'Unable to add task to task server'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (zmq_set_running(zmq_to_qp_run_socket) == -1) then
|
if (zmq_set_running(zmq_to_qp_run_socket) == -1) then
|
||||||
print *, irp_here, ': Failed in zmq_set_running'
|
print *, irp_here, ': Failed in zmq_set_running'
|
||||||
endif
|
endif
|
||||||
@ -114,8 +112,7 @@ subroutine ZMQ_mrcc(E, mrcc, delta, delta_s2, relative_error)
|
|||||||
!$OMP PRIVATE(i)
|
!$OMP PRIVATE(i)
|
||||||
i = omp_get_thread_num()
|
i = omp_get_thread_num()
|
||||||
if (i==0) then
|
if (i==0) then
|
||||||
call mrcc_collector(zmq_socket_pull,E(mrcc_stoch_istate), relative_error, delta, delta_s2, mrcc)
|
call mrcc_collector(zmq_socket_pull,E, relative_error, delta, delta_s2, mrcc)
|
||||||
|
|
||||||
else
|
else
|
||||||
call mrcc_slave_inproc(i)
|
call mrcc_slave_inproc(i)
|
||||||
endif
|
endif
|
||||||
@ -146,15 +143,14 @@ subroutine mrcc_collector(zmq_socket_pull, E, relative_error, delta, delta_s2, m
|
|||||||
|
|
||||||
integer(ZMQ_PTR), intent(in) :: zmq_socket_pull
|
integer(ZMQ_PTR), intent(in) :: zmq_socket_pull
|
||||||
|
|
||||||
double precision, intent(in) :: relative_error, E
|
double precision, intent(in) :: relative_error, E(N_states)
|
||||||
double precision, intent(out) :: mrcc(N_states)
|
double precision, intent(out) :: mrcc(N_states)
|
||||||
double precision, allocatable :: cp(:,:,:,:)
|
double precision, allocatable :: cp(:,:,:,:)
|
||||||
|
|
||||||
double precision, intent(out) :: delta(N_states, N_det_non_ref)
|
double precision, intent(out) :: delta(N_states, N_det_non_ref)
|
||||||
double precision, intent(out) :: delta_s2(N_states, N_det_non_ref)
|
double precision, intent(out) :: delta_s2(N_states, N_det_non_ref)
|
||||||
double precision, allocatable :: delta_loc(:,:,:), delta_det(:,:,:,:)
|
double precision, allocatable :: delta_loc(:,:,:,:), delta_det(:,:,:,:)
|
||||||
double precision, allocatable :: mrcc_detail(:,:)
|
double precision, allocatable :: mrcc_detail(:,:)
|
||||||
double precision :: mrcc_mwen(N_states)
|
|
||||||
integer(ZMQ_PTR),external :: new_zmq_to_qp_run_socket
|
integer(ZMQ_PTR),external :: new_zmq_to_qp_run_socket
|
||||||
integer(ZMQ_PTR) :: zmq_to_qp_run_socket
|
integer(ZMQ_PTR) :: zmq_to_qp_run_socket
|
||||||
|
|
||||||
@ -164,21 +160,31 @@ subroutine mrcc_collector(zmq_socket_pull, E, relative_error, delta, delta_s2, m
|
|||||||
integer :: i, j, k, i_state, N, ntask
|
integer :: i, j, k, i_state, N, ntask
|
||||||
integer, allocatable :: task_id(:)
|
integer, allocatable :: task_id(:)
|
||||||
integer :: Nindex
|
integer :: Nindex
|
||||||
integer, allocatable :: ind(:)
|
integer :: ind
|
||||||
double precision, save :: time0 = -1.d0
|
double precision :: time, time0, timeInit, old_tooth
|
||||||
double precision :: time, timeLast, old_tooth
|
|
||||||
double precision, external :: omp_get_wtime
|
double precision, external :: omp_get_wtime
|
||||||
integer :: cur_cp, old_cur_cp
|
integer :: cur_cp, old_cur_cp
|
||||||
integer, allocatable :: parts_to_get(:)
|
integer, allocatable :: parts_to_get(:)
|
||||||
logical, allocatable :: actually_computed(:)
|
logical, allocatable :: actually_computed(:)
|
||||||
integer :: total_computed
|
integer :: total_computed
|
||||||
|
integer, parameter :: delta_loc_N = 4
|
||||||
|
integer :: delta_loc_slot, delta_loc_i(delta_loc_N)
|
||||||
|
double precision :: mrcc_mwen(N_states, delta_loc_N), lcoef(delta_loc_N)
|
||||||
|
logical :: ok
|
||||||
|
double precision :: usf, num
|
||||||
|
integer(8), save :: rezo = 0_8
|
||||||
|
|
||||||
|
usf = 0d0
|
||||||
|
num = 0d0
|
||||||
|
|
||||||
|
print *, "TARGET ERROR :", relative_error
|
||||||
|
delta = 0d0
|
||||||
|
delta_s2 = 0d0
|
||||||
allocate(delta_det(N_states, N_det_non_ref, 0:comb_teeth+1, 2))
|
allocate(delta_det(N_states, N_det_non_ref, 0:comb_teeth+1, 2))
|
||||||
allocate(cp(N_states, N_det_non_ref, N_cp, 2), mrcc_detail(N_states, N_det_generators))
|
allocate(cp(N_states, N_det_non_ref, N_cp, 2), mrcc_detail(N_states, N_det_generators))
|
||||||
allocate(delta_loc(N_states, N_det_non_ref, 2))
|
allocate(delta_loc(N_states, N_det_non_ref, 2, delta_loc_N))
|
||||||
mrcc_detail = 0d0
|
mrcc_detail = 0d0
|
||||||
delta_det = 0d0
|
delta_det = 0d0
|
||||||
!mrcc_detail = mrcc_detail / 0d0
|
|
||||||
cp = 0d0
|
cp = 0d0
|
||||||
total_computed = 0
|
total_computed = 0
|
||||||
character*(512) :: task
|
character*(512) :: task
|
||||||
@ -197,83 +203,116 @@ subroutine mrcc_collector(zmq_socket_pull, E, relative_error, delta, delta_s2, m
|
|||||||
actually_computed = .false.
|
actually_computed = .false.
|
||||||
|
|
||||||
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
||||||
allocate(task_id(N_det_generators), ind(1))
|
allocate(task_id(N_det_generators))
|
||||||
more = 1
|
more = 1
|
||||||
if (time0 < 0.d0) then
|
time = omp_get_wtime()
|
||||||
call wall_time(time0)
|
time0 = time
|
||||||
endif
|
timeInit = time
|
||||||
timeLast = time0
|
|
||||||
cur_cp = 0
|
cur_cp = 0
|
||||||
old_cur_cp = 0
|
old_cur_cp = 0
|
||||||
|
delta_loc_slot = 1
|
||||||
|
delta_loc_i = 0
|
||||||
pullLoop : do while (more == 1)
|
pullLoop : do while (more == 1)
|
||||||
call pull_mrcc_results(zmq_socket_pull, Nindex, ind, mrcc_mwen, delta_loc, task_id, ntask)
|
call pull_mrcc_results(zmq_socket_pull, Nindex, ind, mrcc_mwen(1, delta_loc_slot), delta_loc(1,1,1,delta_loc_slot), task_id, ntask)
|
||||||
|
|
||||||
if(Nindex /= 1) stop "tried pull multiple Nindex"
|
if(Nindex /= 1) stop "tried pull multiple Nindex"
|
||||||
|
delta_loc_i(delta_loc_slot) = ind
|
||||||
do i=1,Nindex
|
|
||||||
mrcc_detail(:, ind(i)) += mrcc_mwen(:)
|
|
||||||
do j=1,N_cp !! optimizable
|
|
||||||
if(cps(ind(i), j) > 0d0) then
|
|
||||||
if(tooth_of_det(ind(i)) < cp_first_tooth(j)) stop "coef on supposedely deterministic det"
|
|
||||||
double precision :: fac
|
|
||||||
integer :: toothMwen
|
|
||||||
logical :: fracted
|
|
||||||
fac = cps(ind(i), j) / cps_N(j) * mrcc_weight_inv(ind(i)) * comb_step
|
|
||||||
do k=1,N_det_non_ref
|
|
||||||
do i_state=1,N_states
|
|
||||||
cp(i_state,k,j,1) += delta_loc(i_state,k,1) * fac
|
|
||||||
cp(i_state,k,j,2) += delta_loc(i_state,k,2) * fac
|
|
||||||
end do
|
|
||||||
end do
|
|
||||||
end if
|
|
||||||
end do
|
|
||||||
toothMwen = tooth_of_det(ind(i))
|
|
||||||
fracted = (toothMwen /= 0)
|
|
||||||
if(fracted) fracted = (ind(i) == first_det_of_teeth(toothMwen))
|
|
||||||
|
|
||||||
if(fracted) then
|
|
||||||
delta_det(:,:,toothMwen-1, 1) += delta_loc(:,:,1) * (1d0-fractage(toothMwen))
|
|
||||||
delta_det(:,:,toothMwen-1, 2) += delta_loc(:,:,2) * (1d0-fractage(toothMwen))
|
|
||||||
delta_det(:,:,toothMwen, 1) += delta_loc(:,:,1) * (fractage(toothMwen))
|
|
||||||
delta_det(:,:,toothMwen, 2) += delta_loc(:,:,2) * (fractage(toothMwen))
|
|
||||||
else
|
|
||||||
delta_det(:,:,toothMwen, 1) += delta_loc(:,:,1)
|
|
||||||
delta_det(:,:,toothMwen, 2) += delta_loc(:,:,2)
|
|
||||||
end if
|
|
||||||
|
|
||||||
parts_to_get(ind(i)) -= 1
|
|
||||||
if(parts_to_get(ind(i)) == 0) then
|
|
||||||
actually_computed(ind(i)) = .true.
|
|
||||||
!print *, "CONTRIB", ind(i), psi_non_ref_coef(ind(i),1), mrcc_detail(1, ind(i))
|
|
||||||
total_computed += 1
|
|
||||||
end if
|
|
||||||
end do
|
|
||||||
|
|
||||||
|
|
||||||
integer, external :: zmq_delete_tasks
|
integer, external :: zmq_delete_tasks
|
||||||
if (zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,ntask,more) == -1) then
|
if (zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,ntask,more) == -1) then
|
||||||
stop 'Unable to delete tasks'
|
stop 'Unable to delete tasks'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
time = omp_get_wtime()
|
time = omp_get_wtime()
|
||||||
|
if(more /= 1 .or. delta_loc_slot == delta_loc_N) then
|
||||||
|
time0 = time
|
||||||
|
do i=1,delta_loc_N
|
||||||
|
if(delta_loc_i(i) /= 0) then
|
||||||
|
mrcc_detail(:, delta_loc_i(i)) += mrcc_mwen(:,i)
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
|
||||||
if(time - timeLast > 1d0 .or. more /= 1) then
|
do j=1,N_cp !! optimizable
|
||||||
timeLast = time
|
ok = .false.
|
||||||
|
do i=1,delta_loc_N
|
||||||
|
if(delta_loc_i(i) == 0) then
|
||||||
|
lcoef(i) = 0d0
|
||||||
|
else
|
||||||
|
lcoef(i) = cps(delta_loc_i(i), j) / cps_N(j) * mrcc_weight_inv(delta_loc_i(i)) * comb_step
|
||||||
|
if(lcoef(i) /= 0d0) then
|
||||||
|
ok = .true.
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
if(.not. ok) cycle
|
||||||
|
double precision :: fac
|
||||||
|
integer :: toothMwen
|
||||||
|
logical :: fracted, toothMwendid(0:10000)
|
||||||
|
do k=1,N_det_non_ref
|
||||||
|
do i_state=1,N_states
|
||||||
|
cp(i_state,k,j,1) += delta_loc(i_state,k,1,1) * lcoef(1) + &
|
||||||
|
delta_loc(i_state,k,1,2) * lcoef(2) + &
|
||||||
|
delta_loc(i_state,k,1,3) * lcoef(3) + &
|
||||||
|
delta_loc(i_state,k,1,4) * lcoef(4)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
do k=1,N_det_non_ref
|
||||||
|
do i_state=1,N_states
|
||||||
|
cp(i_state,k,j,2) += delta_loc(i_state,k,2,1) * lcoef(1) + &
|
||||||
|
delta_loc(i_state,k,2,2) * lcoef(2) + &
|
||||||
|
delta_loc(i_state,k,2,3) * lcoef(3) + &
|
||||||
|
delta_loc(i_state,k,2,4) * lcoef(4)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
end do
|
||||||
|
|
||||||
|
do i=1,delta_loc_N
|
||||||
|
ind = delta_loc_i(i)
|
||||||
|
if(ind == 0) cycle
|
||||||
|
toothMwen = tooth_of_det(ind)
|
||||||
|
|
||||||
|
fracted = (toothMwen /= 0)
|
||||||
|
if(fracted) fracted = (ind == first_det_of_teeth(toothMwen))
|
||||||
|
|
||||||
|
if(fracted) then
|
||||||
|
delta_det(:,:,toothMwen-1, 1) += delta_loc(:,:,1,i) * (1d0-fractage(toothMwen))
|
||||||
|
delta_det(:,:,toothMwen-1, 2) += delta_loc(:,:,2,i) * (1d0-fractage(toothMwen))
|
||||||
|
delta_det(:,:,toothMwen, 1) += delta_loc(:,:,1,i) * (fractage(toothMwen))
|
||||||
|
delta_det(:,:,toothMwen, 2) += delta_loc(:,:,2,i) * (fractage(toothMwen))
|
||||||
|
else
|
||||||
|
delta_det(:,:,toothMwen, 1) += delta_loc(:,:,1,i)
|
||||||
|
delta_det(:,:,toothMwen, 2) += delta_loc(:,:,2,i)
|
||||||
|
end if
|
||||||
|
parts_to_get(ind) -= 1
|
||||||
|
if(parts_to_get(ind) == 0) then
|
||||||
|
actually_computed(ind) = .true.
|
||||||
|
total_computed += 1
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
|
||||||
|
delta_loc_slot = 1
|
||||||
|
delta_loc_i = 0
|
||||||
|
|
||||||
|
|
||||||
|
!if(time - time0 > 10d0 .or. more /= 1) then
|
||||||
cur_cp = N_cp
|
cur_cp = N_cp
|
||||||
if(.not. actually_computed(mrcc_jobs(1))) cycle pullLoop
|
!if(.not. actually_computed(mrcc_jobs(1))) cycle pullLoop
|
||||||
|
|
||||||
do i=2,N_det_generators
|
do i=1,N_det_generators
|
||||||
if(.not. actually_computed(mrcc_jobs(i))) then
|
if(.not. actually_computed(mrcc_jobs(i))) then
|
||||||
print *, "first not comp", i
|
if(i==1) then
|
||||||
cur_cp = done_cp_at(i-1)
|
cur_cp = 0
|
||||||
|
else
|
||||||
|
cur_cp = done_cp_at(i-1)
|
||||||
|
end if
|
||||||
exit
|
exit
|
||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
if(cur_cp == 0) cycle pullLoop
|
if(cur_cp == 0) then
|
||||||
|
print *, "no checkpoint reached so far..."
|
||||||
|
cycle pullLoop
|
||||||
|
end if
|
||||||
!!!!!!!!!!!!
|
!!!!!!!!!!!!
|
||||||
double precision :: su, su2, eqt, avg, E0, val
|
double precision :: su, su2, eqt, avg, E0, val
|
||||||
integer, external :: zmq_abort
|
integer, external :: zmq_abort
|
||||||
@ -281,14 +320,10 @@ subroutine mrcc_collector(zmq_socket_pull, E, relative_error, delta, delta_s2, m
|
|||||||
su = 0d0
|
su = 0d0
|
||||||
su2 = 0d0
|
su2 = 0d0
|
||||||
|
|
||||||
if(N_states > 1) stop "mrcc_stoch : N_states == 1"
|
|
||||||
do i=1, int(cps_N(cur_cp))
|
do i=1, int(cps_N(cur_cp))
|
||||||
!if(.not. actually_computed(i)) stop "not computed"
|
|
||||||
!call get_comb_val(comb(i), mrcc_detail, cp_first_tooth(cur_cp), val)
|
|
||||||
call get_comb_val(comb(i), mrcc_detail, cur_cp, val)
|
call get_comb_val(comb(i), mrcc_detail, cur_cp, val)
|
||||||
!val = mrcc_detail(1, i) * mrcc_weight_inv(i) * comb_step
|
su += val
|
||||||
su += val ! cps(i, cur_cp) * val
|
su2 += val**2
|
||||||
su2 += val**2 ! cps(i, cur_cp) * val**2
|
|
||||||
end do
|
end do
|
||||||
avg = su / cps_N(cur_cp)
|
avg = su / cps_N(cur_cp)
|
||||||
eqt = dsqrt( ((su2 / cps_N(cur_cp)) - avg**2) / cps_N(cur_cp) )
|
eqt = dsqrt( ((su2 / cps_N(cur_cp)) - avg**2) / cps_N(cur_cp) )
|
||||||
@ -296,32 +331,26 @@ subroutine mrcc_collector(zmq_socket_pull, E, relative_error, delta, delta_s2, m
|
|||||||
if(cp_first_tooth(cur_cp) <= comb_teeth) then
|
if(cp_first_tooth(cur_cp) <= comb_teeth) then
|
||||||
E0 = E0 + mrcc_detail(1, first_det_of_teeth(cp_first_tooth(cur_cp))) * (1d0-fractage(cp_first_tooth(cur_cp)))
|
E0 = E0 + mrcc_detail(1, first_det_of_teeth(cp_first_tooth(cur_cp))) * (1d0-fractage(cp_first_tooth(cur_cp)))
|
||||||
end if
|
end if
|
||||||
call wall_time(time)
|
|
||||||
if ((dabs(eqt) < relative_error .and. cps_N(cur_cp) >= 30) .or. total_computed == N_det_generators) then
|
|
||||||
! Termination
|
|
||||||
!print '(G10.3, 2X, F16.7, 2X, G16.3, 2X, F16.4, A20)', Nabove(tooth), avg+E, eqt, time-time0, ''
|
|
||||||
|
|
||||||
! print *, "GREPME", cur_cp, E+E0+avg, eqt, time-time0, total_computed
|
if(cur_cp /= old_cur_cp) then
|
||||||
|
old_cur_cp = cur_cp
|
||||||
|
print '(I5,F15.7,E12.4,F10.2)', cur_cp, E(mrcc_stoch_istate)+E0+avg, eqt, time-timeInit
|
||||||
|
end if
|
||||||
|
|
||||||
|
if ((dabs(eqt) < relative_error .and. cps_N(cur_cp) >= 30) .or. total_computed == N_det_generators) then
|
||||||
if (zmq_abort(zmq_to_qp_run_socket) == -1) then
|
if (zmq_abort(zmq_to_qp_run_socket) == -1) then
|
||||||
call sleep(1)
|
call sleep(1)
|
||||||
if (zmq_abort(zmq_to_qp_run_socket) == -1) then
|
if (zmq_abort(zmq_to_qp_run_socket) == -1) then
|
||||||
print *, irp_here, ': Error in sending abort signal (2)'
|
print *, irp_here, ': Error in sending abort signal (2)'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
else
|
|
||||||
if (cur_cp > old_cur_cp) then
|
|
||||||
old_cur_cp = cur_cp
|
|
||||||
! print *, "GREPME", cur_cp, E+E0+avg, eqt, time-time0, total_computed
|
|
||||||
|
|
||||||
!print '(G10.3, 2X, F16.7, 2X, G16.3, 2X, F16.4, A20)', Nabove(tooth), avg+E, eqt, time-time0, ''
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
else
|
||||||
|
delta_loc_slot += 1
|
||||||
end if
|
end if
|
||||||
end do pullLoop
|
end do pullLoop
|
||||||
|
|
||||||
if(total_computed == N_det_generators) then
|
if(total_computed == N_det_generators) then
|
||||||
print *, "TOTALLY COMPUTED"
|
|
||||||
delta = 0d0
|
delta = 0d0
|
||||||
delta_s2 = 0d0
|
delta_s2 = 0d0
|
||||||
do i=comb_teeth+1,0,-1
|
do i=comb_teeth+1,0,-1
|
||||||
@ -329,22 +358,15 @@ subroutine mrcc_collector(zmq_socket_pull, E, relative_error, delta, delta_s2, m
|
|||||||
delta_s2 += delta_det(:,:,i,2)
|
delta_s2 += delta_det(:,:,i,2)
|
||||||
end do
|
end do
|
||||||
else
|
else
|
||||||
|
delta = cp(:,:,cur_cp,1)
|
||||||
|
delta_s2 = cp(:,:,cur_cp,2)
|
||||||
delta = cp(:,:,cur_cp,1)
|
do i=cp_first_tooth(cur_cp)-1,0,-1
|
||||||
delta_s2 = cp(:,:,cur_cp,2)
|
delta += delta_det(:,:,i,1)
|
||||||
|
delta_s2 += delta_det(:,:,i,2)
|
||||||
do i=cp_first_tooth(cur_cp)-1,0,-1
|
end do
|
||||||
delta += delta_det(:,:,i,1)
|
|
||||||
delta_s2 += delta_det(:,:,i,2)
|
|
||||||
end do
|
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
mrcc = E
|
||||||
mrcc(1) = E
|
|
||||||
|
|
||||||
call end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
|
call end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
|
||||||
|
|
||||||
end subroutine
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
@ -380,7 +402,7 @@ end function
|
|||||||
&BEGIN_PROVIDER [ integer, N_cps_max ]
|
&BEGIN_PROVIDER [ integer, N_cps_max ]
|
||||||
implicit none
|
implicit none
|
||||||
comb_teeth = 16
|
comb_teeth = 16
|
||||||
N_cps_max = 32
|
N_cps_max = 64
|
||||||
!comb_per_cp = 64
|
!comb_per_cp = 64
|
||||||
gen_per_cp = (N_det_generators / N_cps_max) + 1
|
gen_per_cp = (N_det_generators / N_cps_max) + 1
|
||||||
N_cps_max += 1
|
N_cps_max += 1
|
||||||
@ -402,6 +424,8 @@ END_PROVIDER
|
|||||||
integer :: i, j, last_full, dets(comb_teeth)
|
integer :: i, j, last_full, dets(comb_teeth)
|
||||||
integer :: k, l, cur_cp, under_det(comb_teeth+1)
|
integer :: k, l, cur_cp, under_det(comb_teeth+1)
|
||||||
integer, allocatable :: iorder(:), first_cp(:)
|
integer, allocatable :: iorder(:), first_cp(:)
|
||||||
|
double precision :: tmp
|
||||||
|
|
||||||
|
|
||||||
allocate(iorder(N_det_generators), first_cp(N_cps_max+1))
|
allocate(iorder(N_det_generators), first_cp(N_cps_max+1))
|
||||||
allocate(computed(N_det_generators))
|
allocate(computed(N_det_generators))
|
||||||
@ -481,11 +505,10 @@ END_PROVIDER
|
|||||||
cps(:, N_cp) = 0d0
|
cps(:, N_cp) = 0d0
|
||||||
cp_first_tooth(N_cp) = comb_teeth+1
|
cp_first_tooth(N_cp) = comb_teeth+1
|
||||||
|
|
||||||
iorder = -1132154665
|
!iorder = -1132154665
|
||||||
do i=1,N_cp-1
|
!do i=1,N_cp-1
|
||||||
call isort(mrcc_jobs(first_cp(i)+1:first_cp(i+1)),iorder,first_cp(i+1)-first_cp(i))
|
! call isort(mrcc_jobs(first_cp(i)+1:first_cp(i+1)),iorder,first_cp(i+1)-first_cp(i))
|
||||||
end do
|
!end do
|
||||||
! end subroutine
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,8 +14,6 @@ subroutine run(N_st,energy)
|
|||||||
|
|
||||||
integer :: n_it_mrcc_max
|
integer :: n_it_mrcc_max
|
||||||
double precision :: thresh_mrcc
|
double precision :: thresh_mrcc
|
||||||
double precision, allocatable :: lambda(:)
|
|
||||||
allocate (lambda(N_states))
|
|
||||||
|
|
||||||
thresh_mrcc = thresh_dressed_ci
|
thresh_mrcc = thresh_dressed_ci
|
||||||
n_it_mrcc_max = n_it_max_dressed_ci
|
n_it_mrcc_max = n_it_max_dressed_ci
|
||||||
@ -34,7 +32,6 @@ subroutine run(N_st,energy)
|
|||||||
E_new = 0.d0
|
E_new = 0.d0
|
||||||
delta_E = 1.d0
|
delta_E = 1.d0
|
||||||
iteration = 0
|
iteration = 0
|
||||||
lambda = 1.d0
|
|
||||||
do while (delta_E > thresh_mrcc)
|
do while (delta_E > thresh_mrcc)
|
||||||
iteration += 1
|
iteration += 1
|
||||||
print *, '==============================================='
|
print *, '==============================================='
|
||||||
@ -45,12 +42,9 @@ subroutine run(N_st,energy)
|
|||||||
do i=1,N_st
|
do i=1,N_st
|
||||||
call write_double(6,ci_energy_dressed(i),"Energy")
|
call write_double(6,ci_energy_dressed(i),"Energy")
|
||||||
enddo
|
enddo
|
||||||
call diagonalize_ci_dressed(lambda)
|
call diagonalize_ci_dressed
|
||||||
E_new = mrcc_e0_denominator(1) !sum(ci_energy_dressed(1:N_states))
|
E_new = mrcc_e0_denominator(1) !sum(ci_energy_dressed(1:N_states))
|
||||||
|
|
||||||
! if (.true.) then
|
|
||||||
! provide delta_ij_mrcc_pouet
|
|
||||||
! endif
|
|
||||||
delta_E = (E_new - E_old)/dble(N_states)
|
delta_E = (E_new - E_old)/dble(N_states)
|
||||||
print *, ''
|
print *, ''
|
||||||
call write_double(6,thresh_mrcc,"thresh_mrcc")
|
call write_double(6,thresh_mrcc,"thresh_mrcc")
|
||||||
|
@ -35,20 +35,16 @@ subroutine run_mrcc_slave(thread,iproc,energy)
|
|||||||
integer(bit_kind) :: mask(N_int,2), omask(N_int,2)
|
integer(bit_kind) :: mask(N_int,2), omask(N_int,2)
|
||||||
|
|
||||||
double precision,allocatable :: delta_ij_loc(:,:,:)
|
double precision,allocatable :: delta_ij_loc(:,:,:)
|
||||||
double precision,allocatable :: delta_ii_loc(:,:)
|
|
||||||
!double precision,allocatable :: delta_ij_s2_loc(:,:,:)
|
!double precision,allocatable :: delta_ij_s2_loc(:,:,:)
|
||||||
!double precision,allocatable :: delta_ii_s2_loc(:,:)
|
|
||||||
integer :: h,p,n
|
integer :: h,p,n
|
||||||
logical :: ok
|
logical :: ok
|
||||||
double precision :: contrib(N_states)
|
double precision :: contrib(N_states)
|
||||||
|
|
||||||
allocate(delta_ij_loc(N_states,N_det_non_ref,2) &
|
allocate(delta_ij_loc(N_states,N_det_non_ref,2) )
|
||||||
,delta_ii_loc(N_states,2))! &
|
|
||||||
!,delta_ij_s2_loc(N_states,N_det_non_ref,N_det_ref) &
|
!,delta_ij_s2_loc(N_states,N_det_non_ref,N_det_ref) &
|
||||||
!,delta_ii_s2_loc(N_states, N_det_ref))
|
|
||||||
|
|
||||||
|
|
||||||
allocate(abuf(N_int, 2, N_det_non_ref))
|
allocate(abuf(N_int, 2, N_det_non_ref))
|
||||||
|
|
||||||
allocate(mrcc_detail(N_states, N_det_generators))
|
allocate(mrcc_detail(N_states, N_det_generators))
|
||||||
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
||||||
@ -73,7 +69,6 @@ subroutine run_mrcc_slave(thread,iproc,energy)
|
|||||||
else
|
else
|
||||||
integer :: i_generator, i_i_generator, subset
|
integer :: i_generator, i_i_generator, subset
|
||||||
read (task,*) subset, ind
|
read (task,*) subset, ind
|
||||||
|
|
||||||
! if(buf%N == 0) then
|
! if(buf%N == 0) then
|
||||||
! ! Only first time
|
! ! Only first time
|
||||||
! call create_selection_buffer(1, 2, buf)
|
! call create_selection_buffer(1, 2, buf)
|
||||||
@ -82,9 +77,7 @@ subroutine run_mrcc_slave(thread,iproc,energy)
|
|||||||
contrib = 0d0
|
contrib = 0d0
|
||||||
i_generator = ind(i_i_generator)
|
i_generator = ind(i_i_generator)
|
||||||
delta_ij_loc = 0d0
|
delta_ij_loc = 0d0
|
||||||
delta_ii_loc = 0d0
|
|
||||||
!delta_ij_s2_loc = 0d0
|
!delta_ij_s2_loc = 0d0
|
||||||
!delta_ii_s2_loc = 0d0
|
|
||||||
!call select_connected(i_generator,energy,mrcc_detail(1, i_i_generator),buf,subset)
|
!call select_connected(i_generator,energy,mrcc_detail(1, i_i_generator),buf,subset)
|
||||||
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!
|
!!!!!!!!!!!!!!!!!!!!!!
|
||||||
@ -103,7 +96,7 @@ subroutine run_mrcc_slave(thread,iproc,energy)
|
|||||||
n = n - 1
|
n = n - 1
|
||||||
|
|
||||||
if(n /= 0) then
|
if(n /= 0) then
|
||||||
call mrcc_part_dress_1c(delta_ij_loc(1,1,1), delta_ii_loc(1,1), delta_ij_loc(1,1,2), delta_ii_loc(1,2), &
|
call mrcc_part_dress(delta_ij_loc(1,1,1), delta_ij_loc(1,1,2), &
|
||||||
i_generator,n,abuf,N_int,omask,contrib)
|
i_generator,n,abuf,N_int,omask,contrib)
|
||||||
endif
|
endif
|
||||||
end do
|
end do
|
||||||
|
1
plugins/pyscf/NEEDED_CHILDREN_MODULES
Normal file
1
plugins/pyscf/NEEDED_CHILDREN_MODULES
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
137
plugins/pyscf/PyscfToQp.py
Normal file
137
plugins/pyscf/PyscfToQp.py
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
|
||||||
|
import numpy,re,sys
|
||||||
|
|
||||||
|
def pyscf2QP(cell,mf, kpts=[], int_threshold = 1E-15):
|
||||||
|
# The integral will be not printed in they are bellow that
|
||||||
|
|
||||||
|
|
||||||
|
PBC=False
|
||||||
|
ComputeMode= re.split('[. ]', str(mf))
|
||||||
|
print 'ComputeMode=',ComputeMode
|
||||||
|
|
||||||
|
for n in ComputeMode:
|
||||||
|
if n in ("UHF","KUHF","UKS"):
|
||||||
|
sys.exit('Unrestricted calculation unsupported in Quantum Package')
|
||||||
|
if n == "pbc":
|
||||||
|
PBC=True
|
||||||
|
|
||||||
|
if PBC and len(kpts) == 0:
|
||||||
|
sys.exit("ERROR (read!): You need to specify explicit the list of K-point (including gamma)")
|
||||||
|
|
||||||
|
print 'Performing PBC?:',PBC
|
||||||
|
if PBC:
|
||||||
|
from pyscf.pbc import ao2mo
|
||||||
|
from pyscf.pbc import tools
|
||||||
|
else:
|
||||||
|
from pyscf import ao2mo
|
||||||
|
|
||||||
|
natom = len(cell.atom_coords())
|
||||||
|
print 'n_atom', natom
|
||||||
|
print 'num_elec', cell.nelectron
|
||||||
|
print 'nucl_num', len(cell.atom_coords())
|
||||||
|
|
||||||
|
|
||||||
|
print ''
|
||||||
|
mo_coeff = mf.mo_coeff # List of mo_coeff for each k-point
|
||||||
|
if not PBC:
|
||||||
|
nmo = mo_coeff.shape[1]
|
||||||
|
else:
|
||||||
|
nmo = mo_coeff[0].shape[1]
|
||||||
|
|
||||||
|
|
||||||
|
# Wrote all the parameter need to creat a dummy EZFIO folder who will containt the integral after.
|
||||||
|
# More an implentation detail than a real thing
|
||||||
|
with open('param','w') as f:
|
||||||
|
f.write(' '.join(map(str,(cell.nelectron, nmo, natom))))
|
||||||
|
# _
|
||||||
|
# |\ | _ | _ _. ._ |_) _ ._ | _ o _ ._
|
||||||
|
# | \| |_| (_ | (/_ (_| | | \ (/_ |_) |_| | _> | (_) | |
|
||||||
|
# |
|
||||||
|
|
||||||
|
print 'mf, cell', mf.energy_nuc(), cell.energy_nuc()
|
||||||
|
shift = tools.pbc.madelung(cell, numpy.zeros(3))*cell.nelectron * -.5 if PBC else 0
|
||||||
|
e_nuc = cell.energy_nuc() + shift
|
||||||
|
|
||||||
|
print 'nucl_repul', e_nuc
|
||||||
|
with open('e_nuc','w') as f:
|
||||||
|
f.write(str(e_nuc))
|
||||||
|
|
||||||
|
|
||||||
|
from itertools import product
|
||||||
|
|
||||||
|
# ___
|
||||||
|
# | ._ _|_ _ _ ._ _. | _ |\/| _ ._ _
|
||||||
|
# _|_ | | |_ (/_ (_| | (_| | _> | | (_) | | (_)
|
||||||
|
# _|
|
||||||
|
|
||||||
|
if PBC:
|
||||||
|
h_ao = ('kinetic', mf.get_hcore(kpts=kpts) ) # Give only one k point ?
|
||||||
|
dummy_ao = ('nuclear', numpy.zeros( (len(kpts),nmo,nmo), dtype=numpy.float ))
|
||||||
|
else:
|
||||||
|
h_ao = ('kinetic', mf.get_hcore() )
|
||||||
|
dummy_ao = ('nuclear', numpy.zeros( (nmo,nmo), dtype=numpy.float ))
|
||||||
|
|
||||||
|
def gen_mono_MO(mo_coeff,l_int,shift=0):
|
||||||
|
# 2Id transfortion Transformation. For now we handle only one or zero K point.
|
||||||
|
print 'l_int.shape=',l_int.shape
|
||||||
|
|
||||||
|
l_int_mo = reduce(numpy.dot, (mo_coeff.T, l_int, mo_coeff)) #This formula is only right for one kpt.
|
||||||
|
|
||||||
|
print 'l_int_mo=',l_int_mo
|
||||||
|
|
||||||
|
for i,j in product(range(nmo), repeat=2):
|
||||||
|
int_ = l_int_mo[i,j]
|
||||||
|
yield (i+1+shift,j+1+shift, int_)
|
||||||
|
|
||||||
|
# Print
|
||||||
|
for name, ao in (h_ao,dummy_ao):
|
||||||
|
with open('%s_mo' % name,'w') as f:
|
||||||
|
print '%s_mo' % name
|
||||||
|
if not PBC:
|
||||||
|
for mono in gen_mono_MO(mo_coeff,ao):
|
||||||
|
f.write('%s %s %s\n'% mono)
|
||||||
|
else:
|
||||||
|
for i,(m,a) in enumerate(zip(mo_coeff,ao)):
|
||||||
|
for mono in gen_mono_MO(m,a,i):
|
||||||
|
f.write('%s %s %s\n'% mono)
|
||||||
|
|
||||||
|
# ___ _
|
||||||
|
# | ._ _|_ _ _ ._ _. | _ |_) o
|
||||||
|
# _|_ | | |_ (/_ (_| | (_| | _> |_) |
|
||||||
|
# _|
|
||||||
|
#
|
||||||
|
|
||||||
|
def ao2mo_amazing(mo_coeff):
|
||||||
|
if PBC:
|
||||||
|
eri_4d= mf.with_df.ao2mo(mo_coeff,compact=False)
|
||||||
|
else:
|
||||||
|
eri_4d= ao2mo.kernel(cell,mo_coeff,compact=False)
|
||||||
|
|
||||||
|
return eri_4d.reshape((nmo,)*4)
|
||||||
|
|
||||||
|
|
||||||
|
def write_amazing(eri_4d, shift=0):
|
||||||
|
|
||||||
|
# HANDLE 8 FOLD by Scemama way. Maybe we can use compact=True
|
||||||
|
for l in range(nmo):
|
||||||
|
for k in range(nmo):
|
||||||
|
for j in range(l,nmo):
|
||||||
|
for i in range(max(j,k),nmo):
|
||||||
|
v = eri_4d[i,k,j,l]
|
||||||
|
if abs(v) > int_threshold:
|
||||||
|
f.write('%s %s %s %s %s\n' % (i+1+shift,j+1+shift,k+1+shift,l+1+shift,v))
|
||||||
|
|
||||||
|
|
||||||
|
if PBC:
|
||||||
|
eri_4d= mf.with_df.ao2mo(mo_coeff[0],compact=False)
|
||||||
|
else: #Molecular
|
||||||
|
eri_4d= ao2mo.kernel(cell,mo_coeff,compact=False)
|
||||||
|
|
||||||
|
eri_4d = eri_4d.reshape((nmo,)*4)
|
||||||
|
|
||||||
|
f = open('bielec_mo','w')
|
||||||
|
for i,mc in enumerate(mo_coeff):
|
||||||
|
eri = ao2mo_amazing(mc)
|
||||||
|
write_amazing(eri, nmo*i)
|
||||||
|
|
||||||
|
|
21
plugins/pyscf/README.rst
Normal file
21
plugins/pyscf/README.rst
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
=====
|
||||||
|
pyscf
|
||||||
|
=====
|
||||||
|
Converter from Pyscf to Quatum Package for Molecules AND Solids
|
||||||
|
Import this script in your Pyscf input.
|
||||||
|
|
||||||
|
|
||||||
|
Use as follow:
|
||||||
|
```
|
||||||
|
from MolPyscfToQP import pyscf2QP
|
||||||
|
pyscf2QP(cell,mf,kpts=kpts,int_threshold = 1E-15)
|
||||||
|
|
||||||
|
```
|
||||||
|
Needed Modules
|
||||||
|
==============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
||||||
|
Documentation
|
||||||
|
=============
|
||||||
|
.. Do not edit this section It was auto-generated
|
||||||
|
.. by the `update_README.py` script.
|
38
plugins/pyscf/pyscf.main.irp.f
Normal file
38
plugins/pyscf/pyscf.main.irp.f
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
program pyscf
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! TODO
|
||||||
|
END_DOC
|
||||||
|
print *, ' _/ '
|
||||||
|
print *, ' -:\_?, _Jm####La '
|
||||||
|
print *, 'J"(:" > _]#AZ#Z#UUZ##, '
|
||||||
|
print *, '_,::./ %(|i%12XmX1*1XL _?, '
|
||||||
|
print *, ' \..\ _\(vmWQwodY+ia%lnL _",/ ( '
|
||||||
|
print *, ' .:< ]J=mQD?WXn<uQWmmvd, -.-:=!'
|
||||||
|
print *, ' "{Z jC]QW|=3Zv)Bi3BmXv3 = _7'
|
||||||
|
print *, ' ]h[Z6)WQ;)jZs]C;|$BZv+, : ./ '
|
||||||
|
print *, ' -#sJX%$Wmm#ev]hinW#Xi:` c ; '
|
||||||
|
print *, ' #X#X23###1}vI$WWmX1>|,)nr" '
|
||||||
|
print *, ' 4XZ#Xov1v}=)vnXAX1nnv;1n" '
|
||||||
|
print *, ' ]XX#ZXoovvvivnnnlvvo2*i7 '
|
||||||
|
print *, ' "23Z#1S2oo2XXSnnnoSo2>v" '
|
||||||
|
print *, ' miX#L -~`""!!1}oSoe|i7 '
|
||||||
|
print *, ' 4cn#m, v221=|v[ '
|
||||||
|
print *, ' ]hI3Zma,;..__wXSe=+vo '
|
||||||
|
print *, ' ]Zov*XSUXXZXZXSe||vo2 '
|
||||||
|
print *, ' ]Z#><iiii|i||||==vn2( '
|
||||||
|
print *, ' ]Z#i<ii||+|=||=:{no2[ '
|
||||||
|
print *, ' ]ZUsiiiiivi|=||=vo22[ '
|
||||||
|
print *, ' ]XZvlliiIi|i=|+|vooo '
|
||||||
|
print *, ' =v1llli||||=|||||lii( '
|
||||||
|
print *, ' ]iillii||||||||=>=|< '
|
||||||
|
print *, ' -ziiiii||||||+||==+> '
|
||||||
|
print *, ' -%|+++||=|=+|=|==/ '
|
||||||
|
print *, ' -a>====+|====-:- '
|
||||||
|
print *, ' "~,- -- /- '
|
||||||
|
print *, ' -. )> '
|
||||||
|
print *, ' .~ +- '
|
||||||
|
print *, ' . .... : . '
|
||||||
|
print *, ' -------~ '
|
||||||
|
print *, ''
|
||||||
|
end
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user