pyscf 2.9.0__py3-none-macosx_11_0_arm64.whl → 2.11.0__py3-none-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyscf/__init__.py +1 -1
- pyscf/adc/radc.py +40 -11
- pyscf/adc/radc_amplitudes.py +71 -82
- pyscf/adc/radc_ao2mo.py +11 -4
- pyscf/adc/radc_ea.py +61 -75
- pyscf/adc/radc_ee.py +1218 -0
- pyscf/adc/radc_ip.py +18 -19
- pyscf/adc/radc_ip_cvs.py +0 -3
- pyscf/adc/uadc.py +50 -17
- pyscf/adc/uadc_amplitudes.py +105 -146
- pyscf/adc/uadc_ao2mo.py +17 -3
- pyscf/adc/uadc_ea.py +121 -169
- pyscf/adc/uadc_ee.py +23146 -0
- pyscf/adc/uadc_ip.py +32 -38
- pyscf/adc/uadc_ip_cvs.py +4 -2
- pyscf/agf2/chkfile.py +2 -1
- pyscf/cc/ccsd.py +1 -8
- pyscf/cc/ccsd_t_lambda.py +200 -0
- pyscf/cc/ccsd_t_rdm.py +351 -0
- pyscf/cc/dfccsd.py +4 -1
- pyscf/cc/dfuccsd.py +4 -1
- pyscf/cc/eom_rccsd.py +5 -2
- pyscf/cc/uccsd.py +0 -2
- pyscf/ci/gcisd.py +2 -2
- pyscf/df/addons.py +113 -33
- pyscf/df/autoaux.py +1 -1
- pyscf/df/df.py +29 -9
- pyscf/df/df_jk.py +54 -15
- pyscf/df/grad/casdm2_util.py +1 -9
- pyscf/df/grad/lpdft.py +42 -0
- pyscf/df/grad/mcpdft.py +41 -0
- pyscf/df/grad/mspdft.py +54 -0
- pyscf/df/hessian/rhf.py +9 -2
- pyscf/df/hessian/rks.py +6 -2
- pyscf/df/hessian/uhf.py +9 -2
- pyscf/df/incore.py +10 -0
- pyscf/df/outcore.py +11 -0
- pyscf/dft/__init__.py +10 -1
- pyscf/dft/gen_grid.py +80 -7
- pyscf/dft/libxc.py +442 -143
- pyscf/dft/numint.py +24 -14
- pyscf/dft/numint2c.py +5 -4
- pyscf/dft/rkspu.py +350 -0
- pyscf/dft/ukspu.py +245 -0
- pyscf/dft/xc_deriv.py +1 -1
- pyscf/dft/xcfun.py +7 -6
- pyscf/fci/direct_spin1.py +82 -1
- pyscf/fci/fci_dhf_slow.py +31 -5
- pyscf/fci/selected_ci.py +5 -0
- pyscf/geomopt/geometric_solver.py +21 -14
- pyscf/grad/casci.py +4 -1
- pyscf/grad/casscf.py +5 -0
- pyscf/grad/ccsd.py +6 -3
- pyscf/grad/ccsd_t.py +2 -2
- pyscf/grad/ccsd_t_slow.py +149 -0
- pyscf/grad/cisd.py +4 -2
- pyscf/grad/cmspdft.py +386 -0
- pyscf/grad/dhf.py +4 -1
- pyscf/grad/lpdft.py +700 -0
- pyscf/grad/mcpdft.py +654 -0
- pyscf/grad/mp2.py +5 -2
- pyscf/grad/mspdft.py +683 -0
- pyscf/grad/rhf.py +4 -9
- pyscf/grad/rkspu.py +131 -0
- pyscf/grad/sacasscf.py +4 -1
- pyscf/grad/tdrhf.py +9 -4
- pyscf/grad/tdrks.py +9 -4
- pyscf/grad/tduhf.py +1 -4
- pyscf/grad/tduks.py +6 -4
- pyscf/grad/ukspu.py +76 -0
- pyscf/gto/basis/__init__.py +3 -7
- pyscf/gto/basis/bse.py +16 -7
- pyscf/gto/basis/bse_meta.json +1 -0
- pyscf/gto/basis/ma-def2-qzvp.dat +751 -1
- pyscf/gto/basis/ma-def2-qzvpp.dat +751 -1
- pyscf/gto/basis/ma-def2-svp.dat +751 -1
- pyscf/gto/basis/ma-def2-svpp.dat +751 -1
- pyscf/gto/basis/ma-def2-tzvp.dat +751 -1
- pyscf/gto/basis/ma-def2-tzvpp.dat +751 -1
- pyscf/gto/basis/parse_nwchem.py +3 -1
- pyscf/gto/basis/parse_nwchem_ecp.py +4 -5
- pyscf/gto/mole.py +221 -43
- pyscf/gw/gw_ac.py +1 -1
- pyscf/gw/ugw_ac.py +1 -1
- pyscf/hessian/rhf.py +4 -1
- pyscf/hessian/rks.py +1535 -2
- pyscf/hessian/thermo.py +4 -1
- pyscf/lib/CMakeLists.txt +8 -2
- pyscf/lib/cc/CMakeLists.txt +1 -1
- pyscf/lib/cc/ccsd_t_lambda.c +149 -0
- pyscf/lib/deps/include/cint.h +1 -1
- pyscf/lib/deps/lib/libcint.6.dylib +0 -0
- pyscf/lib/dft/CMakeLists.txt +1 -1
- pyscf/lib/dft/grid_basis.c +131 -0
- pyscf/lib/dft/grid_collocate.c +298 -264
- pyscf/lib/dft/grid_common.c +573 -162
- pyscf/lib/dft/grid_common.h +111 -56
- pyscf/lib/dft/grid_integrate.c +390 -100
- pyscf/lib/dft/libxc_itrf.c +200 -222
- pyscf/lib/dft/multigrid.c +39 -10
- pyscf/lib/dft/nr_numint.c +346 -0
- pyscf/lib/exceptions.py +3 -0
- pyscf/lib/libagf2.dylib +0 -0
- pyscf/lib/libao2mo.dylib +0 -0
- pyscf/lib/libcc.dylib +0 -0
- pyscf/lib/libcgto.dylib +0 -0
- pyscf/lib/libcvhf.dylib +0 -0
- pyscf/lib/libdft.dylib +0 -0
- pyscf/lib/libfci.dylib +0 -0
- pyscf/lib/libmcscf.dylib +0 -0
- pyscf/lib/libmp.dylib +0 -0
- pyscf/lib/libnp_helper.dylib +0 -0
- pyscf/lib/libpbc.dylib +0 -0
- pyscf/lib/libpdft.dylib +0 -0
- pyscf/lib/libri.dylib +0 -0
- pyscf/lib/libxc_itrf.dylib +0 -0
- pyscf/lib/libxcfun_itrf.dylib +0 -0
- pyscf/lib/linalg_helper.py +4 -1
- pyscf/lib/misc.py +31 -13
- pyscf/lib/np_helper/CMakeLists.txt +1 -1
- pyscf/lib/np_helper/imatcopy.c +2 -2
- pyscf/lib/np_helper/np_broadcast.c +91 -0
- pyscf/lib/np_helper/np_helper.h +11 -0
- pyscf/lib/numpy_helper.py +52 -0
- pyscf/lib/pbc/grid_ao.c +522 -0
- pyscf/lib/pdft/CMakeLists.txt +8 -0
- pyscf/lib/pdft/nr_numint.c +123 -0
- pyscf/lo/pipek.py +31 -18
- pyscf/mcpdft/__init__.py +113 -0
- pyscf/mcpdft/_dms.py +258 -0
- pyscf/mcpdft/_libxc.py +135 -0
- pyscf/mcpdft/chkfile.py +130 -0
- pyscf/mcpdft/cmspdft.py +191 -0
- pyscf/mcpdft/lpdft.py +768 -0
- pyscf/mcpdft/mcpdft.py +864 -0
- pyscf/mcpdft/mspdft.py +659 -0
- pyscf/mcpdft/otfnal.py +1236 -0
- pyscf/mcpdft/otpd.py +300 -0
- pyscf/mcpdft/pdft_eff.py +497 -0
- pyscf/mcpdft/pdft_feff.py +415 -0
- pyscf/mcpdft/pdft_veff.py +390 -0
- pyscf/mcpdft/tfnal_derivs.py +830 -0
- pyscf/mcpdft/xmspdft.py +193 -0
- pyscf/mcscf/apc.py +103 -59
- pyscf/mcscf/casci.py +10 -3
- pyscf/mcscf/df.py +6 -2
- pyscf/mcscf/mc1step.py +1 -0
- pyscf/mp/dfgmp2.py +27 -33
- pyscf/mp/dfmp2.py +17 -49
- pyscf/mp/dfmp2_native.py +0 -20
- pyscf/mp/dfump2.py +25 -63
- pyscf/mp/dfump2_native.py +0 -21
- pyscf/mp/gmp2.py +3 -3
- pyscf/mp/mp2.py +44 -21
- pyscf/mp/ump2.py +13 -2
- pyscf/nac/mspdft.py +196 -0
- pyscf/pbc/df/aft.py +64 -22
- pyscf/pbc/df/aft_jk.py +4 -10
- pyscf/pbc/df/df.py +93 -15
- pyscf/pbc/df/df_jk.py +30 -5
- pyscf/pbc/df/fft.py +65 -25
- pyscf/pbc/df/fft_jk.py +18 -6
- pyscf/pbc/df/incore.py +1 -1
- pyscf/pbc/df/mdf.py +41 -9
- pyscf/pbc/df/rsdf.py +14 -10
- pyscf/pbc/df/rsdf_builder.py +26 -13
- pyscf/pbc/dft/__init__.py +4 -4
- pyscf/pbc/dft/gen_grid.py +7 -0
- pyscf/pbc/dft/gks.py +3 -3
- pyscf/pbc/dft/kgks.py +3 -3
- pyscf/pbc/dft/krks.py +154 -79
- pyscf/pbc/dft/krks_ksymm.py +37 -94
- pyscf/pbc/dft/krkspu.py +198 -155
- pyscf/pbc/dft/krkspu_ksymm.py +34 -2
- pyscf/pbc/dft/kroks.py +4 -2
- pyscf/pbc/dft/kuks.py +77 -74
- pyscf/pbc/dft/kuks_ksymm.py +38 -89
- pyscf/pbc/dft/kukspu.py +188 -61
- pyscf/pbc/dft/kukspu_ksymm.py +21 -2
- pyscf/pbc/dft/multigrid/__init__.py +2 -41
- pyscf/pbc/dft/multigrid/_backend_c.py +570 -0
- pyscf/pbc/dft/multigrid/multigrid.py +290 -247
- pyscf/pbc/dft/multigrid/multigrid_pair.py +375 -753
- pyscf/pbc/dft/multigrid/pp.py +81 -115
- pyscf/pbc/dft/numint.py +58 -31
- pyscf/pbc/dft/numint2c.py +3 -0
- pyscf/pbc/dft/rks.py +163 -79
- pyscf/pbc/dft/roks.py +4 -23
- pyscf/pbc/dft/uks.py +82 -91
- pyscf/pbc/grad/krhf.py +18 -6
- pyscf/pbc/grad/krks.py +20 -62
- pyscf/pbc/grad/krks_stress.py +404 -0
- pyscf/pbc/grad/krkspu.py +142 -0
- pyscf/pbc/grad/kuhf.py +10 -5
- pyscf/pbc/grad/kuks.py +16 -29
- pyscf/pbc/grad/kuks_stress.py +308 -0
- pyscf/pbc/grad/kukspu.py +83 -0
- pyscf/pbc/grad/rhf.py +22 -8
- pyscf/pbc/grad/rks.py +6 -1
- pyscf/pbc/grad/rks_stress.py +462 -0
- pyscf/pbc/grad/uhf.py +19 -8
- pyscf/pbc/grad/uks.py +6 -1
- pyscf/pbc/grad/uks_stress.py +246 -0
- pyscf/pbc/gto/cell.py +195 -101
- pyscf/pbc/gto/eval_gto.py +19 -15
- pyscf/pbc/gto/neighborlist.py +23 -25
- pyscf/pbc/gto/pseudo/pp_int.py +3 -2
- pyscf/pbc/lib/kpts.py +63 -24
- pyscf/pbc/lib/kpts_helper.py +11 -0
- pyscf/pbc/scf/_response_functions.py +0 -448
- pyscf/pbc/scf/ghf.py +3 -2
- pyscf/pbc/scf/hf.py +67 -22
- pyscf/pbc/scf/kghf.py +3 -2
- pyscf/pbc/scf/khf.py +36 -9
- pyscf/pbc/scf/khf_ksymm.py +7 -4
- pyscf/pbc/scf/krohf.py +3 -2
- pyscf/pbc/scf/kuhf.py +21 -3
- pyscf/pbc/scf/rohf.py +3 -2
- pyscf/pbc/scf/uhf.py +24 -2
- pyscf/pbc/symm/symmetry.py +9 -3
- pyscf/pbc/tdscf/krhf.py +10 -9
- pyscf/pbc/tdscf/krks.py +4 -0
- pyscf/pbc/tdscf/kuhf.py +9 -7
- pyscf/pbc/tdscf/rhf.py +4 -4
- pyscf/pbc/tdscf/rks.py +4 -4
- pyscf/pbc/tdscf/uhf.py +6 -2
- pyscf/pbc/tdscf/uks.py +4 -4
- pyscf/pbc/tools/k2gamma.py +6 -13
- pyscf/pbc/tools/make_test_cell.py +4 -2
- pyscf/pbc/tools/pbc.py +111 -48
- pyscf/pbc/tools/pyscf_ase.py +91 -35
- pyscf/qmmm/itrf.py +43 -51
- pyscf/qmmm/mm_mole.py +1 -1
- pyscf/qmmm/pbc/__init__.py +19 -0
- pyscf/qmmm/pbc/itrf.py +1046 -0
- pyscf/qmmm/pbc/mm_mole.py +398 -0
- pyscf/scf/__init__.py +12 -12
- pyscf/scf/_response_functions.py +33 -32
- pyscf/scf/addons.py +1 -1
- pyscf/scf/dhf.py +50 -25
- pyscf/scf/hf.py +38 -19
- pyscf/scf/rohf.py +1 -3
- pyscf/scf/stability.py +1 -0
- pyscf/scf/uhf.py +2 -0
- pyscf/sgx/sgx.py +16 -8
- pyscf/solvent/__init__.py +63 -47
- pyscf/solvent/_attach_solvent.py +171 -48
- pyscf/solvent/ddcosmo.py +16 -19
- pyscf/solvent/ddpcm.py +1 -8
- pyscf/solvent/grad/ddcosmo_grad.py +1 -77
- pyscf/solvent/{_ddcosmo_tdscf_grad.py → grad/ddcosmo_tdscf_grad.py} +35 -56
- pyscf/solvent/grad/pcm.py +36 -17
- pyscf/solvent/grad/smd.py +2 -60
- pyscf/solvent/hessian/pcm.py +27 -16
- pyscf/solvent/hessian/smd.py +6 -85
- pyscf/solvent/pcm.py +114 -39
- pyscf/solvent/pol_embed.py +54 -9
- pyscf/solvent/smd.py +114 -25
- pyscf/soscf/ciah.py +14 -7
- pyscf/soscf/newton_ah.py +19 -3
- pyscf/symm/geom.py +12 -0
- pyscf/symm/param.py +1 -1
- pyscf/tdscf/__init__.py +13 -13
- pyscf/tdscf/dhf.py +23 -19
- pyscf/tdscf/ghf.py +72 -42
- pyscf/tdscf/gks.py +15 -16
- pyscf/tdscf/rhf.py +163 -65
- pyscf/tdscf/rks.py +25 -25
- pyscf/tdscf/uhf.py +134 -57
- pyscf/tdscf/uks.py +25 -26
- pyscf/x2c/_response_functions.py +3 -2
- pyscf/x2c/tdscf.py +10 -18
- {pyscf-2.9.0.dist-info → pyscf-2.11.0.dist-info}/METADATA +3 -3
- {pyscf-2.9.0.dist-info → pyscf-2.11.0.dist-info}/RECORD +278 -232
- {pyscf-2.9.0.dist-info → pyscf-2.11.0.dist-info}/WHEEL +1 -1
- {pyscf-2.9.0.dist-info → pyscf-2.11.0.dist-info}/licenses/NOTICE +6 -2
- pyscf/lib/dft/utils.c +0 -71
- pyscf/lib/dft/utils.h +0 -27
- {pyscf-2.9.0.dist-info → pyscf-2.11.0.dist-info}/licenses/LICENSE +0 -0
- {pyscf-2.9.0.dist-info → pyscf-2.11.0.dist-info}/top_level.txt +0 -0
pyscf/__init__.py
CHANGED
pyscf/adc/radc.py
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
# Author: Abdelrahman Ahmed <>
|
|
16
16
|
# Samragni Banerjee <samragnibanerjee4@gmail.com>
|
|
17
17
|
# James Serna <jamcar456@gmail.com>
|
|
18
|
-
# Terrence Stahl
|
|
18
|
+
# Terrence Stahl <terrencestahl1@gmail.com>
|
|
19
19
|
# Alexander Sokolov <alexander.y.sokolov@gmail.com>
|
|
20
20
|
#
|
|
21
21
|
|
|
@@ -23,15 +23,12 @@
|
|
|
23
23
|
Restricted algebraic diagrammatic construction
|
|
24
24
|
'''
|
|
25
25
|
import numpy as np
|
|
26
|
-
import pyscf.ao2mo as ao2mo
|
|
27
26
|
from pyscf import lib
|
|
28
27
|
from pyscf.lib import logger
|
|
29
28
|
from pyscf.adc import radc_ao2mo
|
|
30
|
-
from pyscf.adc import dfadc
|
|
31
29
|
from pyscf.adc import radc_amplitudes
|
|
32
30
|
from pyscf import __config__
|
|
33
31
|
from pyscf import df
|
|
34
|
-
from pyscf import symm
|
|
35
32
|
|
|
36
33
|
|
|
37
34
|
# Excited-state kernel
|
|
@@ -50,6 +47,20 @@ def kernel(adc, nroots=1, guess=None, eris=None, verbose=None):
|
|
|
50
47
|
if eris is None:
|
|
51
48
|
eris = adc.transform_integrals()
|
|
52
49
|
|
|
50
|
+
if adc.approx_trans_moments:
|
|
51
|
+
if adc.method in ("adc(2)", "adc(2)-x"):
|
|
52
|
+
logger.warn(
|
|
53
|
+
adc,
|
|
54
|
+
"Approximations for transition moments are requested...\n"
|
|
55
|
+
+ adc.method
|
|
56
|
+
+ " transition properties will neglect second-order amplitudes...")
|
|
57
|
+
else:
|
|
58
|
+
logger.warn(
|
|
59
|
+
adc,
|
|
60
|
+
"Approximations for transition moments are requested...\n"
|
|
61
|
+
+ adc.method
|
|
62
|
+
+ " transition properties will neglect third-order amplitudes...")
|
|
63
|
+
|
|
53
64
|
imds = adc.get_imds(eris)
|
|
54
65
|
matvec, diag = adc.gen_matvec(imds, eris)
|
|
55
66
|
|
|
@@ -57,24 +68,34 @@ def kernel(adc, nroots=1, guess=None, eris=None, verbose=None):
|
|
|
57
68
|
|
|
58
69
|
conv, adc.E, U = lib.linalg_helper.davidson_nosym1(
|
|
59
70
|
lambda xs : [matvec(x) for x in xs],
|
|
60
|
-
guess, diag, nroots=nroots, verbose=log, tol=adc.conv_tol,
|
|
71
|
+
guess, diag, nroots=nroots, verbose=log, tol=adc.conv_tol, max_memory=adc.max_memory,
|
|
61
72
|
max_cycle=adc.max_cycle, max_space=adc.max_space, tol_residual=adc.tol_residual)
|
|
62
73
|
|
|
63
74
|
adc.U = np.array(U).T.copy()
|
|
64
75
|
|
|
65
|
-
if adc.compute_properties:
|
|
76
|
+
if adc.compute_properties and adc.method_type != "ee":
|
|
66
77
|
adc.P,adc.X = adc.get_properties(nroots)
|
|
78
|
+
else:
|
|
79
|
+
adc.P = None
|
|
80
|
+
adc.X = None
|
|
81
|
+
|
|
67
82
|
nfalse = np.shape(conv)[0] - np.sum(conv)
|
|
68
83
|
|
|
84
|
+
spin_mult = None
|
|
85
|
+
if adc.method_type in ("ip", "ea"):
|
|
86
|
+
spin_mult = "doublet"
|
|
87
|
+
else:
|
|
88
|
+
spin_mult = "singlet"
|
|
89
|
+
|
|
69
90
|
header = ("\n*************************************************************"
|
|
70
|
-
"\n
|
|
91
|
+
"\n ADC calculation summary (" + spin_mult + " states only)"
|
|
71
92
|
"\n*************************************************************")
|
|
72
93
|
logger.info(adc, header)
|
|
73
94
|
|
|
74
95
|
for n in range(nroots):
|
|
75
96
|
print_string = ('%s root %d | Energy (Eh) = %14.10f | Energy (eV) = %12.8f ' %
|
|
76
97
|
(adc.method, n, adc.E[n], adc.E[n]*27.2114))
|
|
77
|
-
if adc.compute_properties:
|
|
98
|
+
if adc.compute_properties and adc.method_type != "ee":
|
|
78
99
|
print_string += ("| Spec. factor = %10.8f " % adc.P[n])
|
|
79
100
|
print_string += ("| conv = %s" % conv[n])
|
|
80
101
|
logger.info(adc, print_string)
|
|
@@ -198,7 +219,6 @@ class RADC(lib.StreamObject):
|
|
|
198
219
|
}
|
|
199
220
|
|
|
200
221
|
def __init__(self, mf, frozen=0, mo_coeff=None, mo_occ=None):
|
|
201
|
-
from pyscf import gto
|
|
202
222
|
|
|
203
223
|
if 'dft' in str(mf.__module__):
|
|
204
224
|
raise NotImplementedError('DFT reference for UADC')
|
|
@@ -216,8 +236,8 @@ class RADC(lib.StreamObject):
|
|
|
216
236
|
|
|
217
237
|
self.max_space = getattr(__config__, 'adc_radc_RADC_max_space', 12)
|
|
218
238
|
self.max_cycle = getattr(__config__, 'adc_radc_RADC_max_cycle', 50)
|
|
219
|
-
self.conv_tol = getattr(__config__, 'adc_radc_RADC_conv_tol', 1e-
|
|
220
|
-
self.tol_residual = getattr(__config__, 'adc_radc_RADC_tol_residual', 1e-
|
|
239
|
+
self.conv_tol = getattr(__config__, 'adc_radc_RADC_conv_tol', 1e-8)
|
|
240
|
+
self.tol_residual = getattr(__config__, 'adc_radc_RADC_tol_residual', 1e-5)
|
|
221
241
|
self.scf_energy = mf.e_tot
|
|
222
242
|
|
|
223
243
|
self.frozen = frozen
|
|
@@ -369,6 +389,9 @@ class RADC(lib.StreamObject):
|
|
|
369
389
|
if (self.method_type == "ea"):
|
|
370
390
|
e_exc, v_exc, spec_fac, x, adc_es = self.ea_adc(nroots=nroots, guess=guess, eris=eris)
|
|
371
391
|
|
|
392
|
+
elif (self.method_type == "ee"):
|
|
393
|
+
e_exc, v_exc, spec_fac, x, adc_es = self.ee_adc(nroots=nroots, guess=guess, eris=eris)
|
|
394
|
+
|
|
372
395
|
elif(self.method_type == "ip"):
|
|
373
396
|
if not isinstance(self.ncvs, type(None)) and self.ncvs > 0:
|
|
374
397
|
e_exc, v_exc, spec_fac, x, adc_es = self.ip_cvs_adc(
|
|
@@ -393,6 +416,12 @@ class RADC(lib.StreamObject):
|
|
|
393
416
|
e_exc, v_exc, spec_fac, x = adc_es.kernel(nroots, guess, eris)
|
|
394
417
|
return e_exc, v_exc, spec_fac, x, adc_es
|
|
395
418
|
|
|
419
|
+
def ee_adc(self, nroots=1, guess=None, eris=None):
|
|
420
|
+
from pyscf.adc import radc_ee
|
|
421
|
+
adc_es = radc_ee.RADCEE(self)
|
|
422
|
+
e_exc, v_exc, spec_fac, x = adc_es.kernel(nroots, guess, eris)
|
|
423
|
+
return e_exc, v_exc, spec_fac, x, adc_es
|
|
424
|
+
|
|
396
425
|
def ip_adc(self, nroots=1, guess=None, eris=None):
|
|
397
426
|
from pyscf.adc import radc_ip
|
|
398
427
|
adc_es = radc_ip.RADCIP(self)
|
pyscf/adc/radc_amplitudes.py
CHANGED
|
@@ -23,14 +23,10 @@
|
|
|
23
23
|
Restricted algebraic diagrammatic construction
|
|
24
24
|
'''
|
|
25
25
|
import numpy as np
|
|
26
|
-
import pyscf.ao2mo as ao2mo
|
|
27
26
|
from pyscf import lib
|
|
28
27
|
from pyscf.lib import logger
|
|
29
28
|
from pyscf.adc import radc_ao2mo
|
|
30
29
|
from pyscf.adc import dfadc
|
|
31
|
-
from pyscf import __config__
|
|
32
|
-
from pyscf import df
|
|
33
|
-
from pyscf import symm
|
|
34
30
|
import h5py
|
|
35
31
|
import tempfile
|
|
36
32
|
|
|
@@ -91,18 +87,15 @@ def compute_amplitudes(myadc, eris):
|
|
|
91
87
|
|
|
92
88
|
if isinstance(eris.ovvv, type(None)):
|
|
93
89
|
chnk_size = radc_ao2mo.calculate_chunk_size(myadc)
|
|
94
|
-
a
|
|
95
|
-
for p in range(0,nocc,chnk_size):
|
|
90
|
+
for a,b in lib.prange(0,nocc,chnk_size):
|
|
96
91
|
eris_ovvv = dfadc.get_ovvv_df(
|
|
97
|
-
myadc, eris.Lov, eris.Lvv,
|
|
98
|
-
|
|
99
|
-
t1_2
|
|
100
|
-
t1_2 -= 0.5*lib.einsum('
|
|
101
|
-
t1_2
|
|
102
|
-
t1_2 += 0.5*lib.einsum('kcad,kicd->ia',eris_ovvv,t2_1[a:a+k,:],optimize=True)
|
|
92
|
+
myadc, eris.Lov, eris.Lvv, a, chnk_size).reshape(-1,nvir,nvir,nvir)
|
|
93
|
+
t1_2 += 1.5*lib.einsum('kdac,ikcd->ia',eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
94
|
+
t1_2 -= 0.5*lib.einsum('kdac,kicd->ia',eris_ovvv,t2_1[a:b,:],optimize=True)
|
|
95
|
+
t1_2 -= 0.5*lib.einsum('kcad,ikcd->ia',eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
96
|
+
t1_2 += 0.5*lib.einsum('kcad,kicd->ia',eris_ovvv,t2_1[a:b,:],optimize=True)
|
|
103
97
|
|
|
104
98
|
del eris_ovvv
|
|
105
|
-
a += k
|
|
106
99
|
else :
|
|
107
100
|
eris_ovvv = radc_ao2mo.unpack_eri_1(eris.ovvv, nvir)
|
|
108
101
|
t1_2 += 1.5*lib.einsum('kdac,ikcd->ia',eris_ovvv,t2_1,optimize=True)
|
|
@@ -135,6 +128,7 @@ def compute_amplitudes(myadc, eris):
|
|
|
135
128
|
eris_vvvv = eris.vvvv
|
|
136
129
|
temp = t2_1.reshape(nocc*nocc,nvir*nvir)
|
|
137
130
|
t2_1_vvvv = np.dot(temp,eris_vvvv.T).reshape(nocc,nocc,nvir,nvir)
|
|
131
|
+
del temp
|
|
138
132
|
elif isinstance(eris.vvvv, list):
|
|
139
133
|
t2_1_vvvv = contract_ladder(myadc,t2_1[:],eris.vvvv)
|
|
140
134
|
else:
|
|
@@ -201,146 +195,143 @@ def compute_amplitudes(myadc, eris):
|
|
|
201
195
|
|
|
202
196
|
if isinstance(eris.ovvv, type(None)):
|
|
203
197
|
chnk_size = radc_ao2mo.calculate_chunk_size(myadc)
|
|
204
|
-
a
|
|
205
|
-
for p in range(0,nocc,chnk_size):
|
|
198
|
+
for a,b in lib.prange(0,nocc,chnk_size):
|
|
206
199
|
eris_ovvv = dfadc.get_ovvv_df(
|
|
207
|
-
myadc, eris.Lov, eris.Lvv,
|
|
208
|
-
k = eris_ovvv.shape[0]
|
|
200
|
+
myadc, eris.Lov, eris.Lvv, a, chnk_size).reshape(-1,nvir,nvir,nvir)
|
|
209
201
|
|
|
210
|
-
t1_3 += 0.5*lib.einsum('ilde,lead->ia', t2_2[:,a:
|
|
211
|
-
t1_3 -= 0.5*lib.einsum('lide,lead->ia', t2_2[a:
|
|
202
|
+
t1_3 += 0.5*lib.einsum('ilde,lead->ia', t2_2[:,a:b],eris_ovvv,optimize=True)
|
|
203
|
+
t1_3 -= 0.5*lib.einsum('lide,lead->ia', t2_2[a:b],eris_ovvv,optimize=True)
|
|
212
204
|
|
|
213
|
-
t1_3 -= 0.5*lib.einsum('ilde,ldae->ia', t2_2[:,a:
|
|
214
|
-
t1_3 += 0.5*lib.einsum('lide,ldae->ia', t2_2[a:
|
|
205
|
+
t1_3 -= 0.5*lib.einsum('ilde,ldae->ia', t2_2[:,a:b],eris_ovvv,optimize=True)
|
|
206
|
+
t1_3 += 0.5*lib.einsum('lide,ldae->ia', t2_2[a:b],eris_ovvv,optimize=True)
|
|
215
207
|
|
|
216
208
|
t1_3 -= lib.einsum('ildf,mefa,lmde->ia',
|
|
217
|
-
t2_1[:], eris_ovvv, t2_1[:,a:
|
|
209
|
+
t2_1[:], eris_ovvv, t2_1[:,a:b] ,optimize=True)
|
|
218
210
|
t1_3 += lib.einsum('ildf,mefa,mlde->ia',
|
|
219
|
-
t2_1[:], eris_ovvv, t2_1[a:
|
|
211
|
+
t2_1[:], eris_ovvv, t2_1[a:b] ,optimize=True)
|
|
220
212
|
t1_3 += lib.einsum('lidf,mefa,lmde->ia',
|
|
221
|
-
t2_1[:], eris_ovvv, t2_1[:,a:
|
|
213
|
+
t2_1[:], eris_ovvv, t2_1[:,a:b] ,optimize=True)
|
|
222
214
|
t1_3 -= lib.einsum('lidf,mefa,mlde->ia',
|
|
223
|
-
t2_1[:], eris_ovvv, t2_1[a:
|
|
215
|
+
t2_1[:], eris_ovvv, t2_1[a:b] ,optimize=True)
|
|
224
216
|
|
|
225
217
|
t1_3 += lib.einsum('ildf,mafe,lmde->ia',
|
|
226
|
-
t2_1[:], eris_ovvv, t2_1[:,a:
|
|
218
|
+
t2_1[:], eris_ovvv, t2_1[:,a:b] ,optimize=True)
|
|
227
219
|
t1_3 -= lib.einsum('ildf,mafe,mlde->ia',
|
|
228
|
-
t2_1[:], eris_ovvv, t2_1[a:
|
|
220
|
+
t2_1[:], eris_ovvv, t2_1[a:b] ,optimize=True)
|
|
229
221
|
t1_3 -= lib.einsum('lidf,mafe,lmde->ia',
|
|
230
|
-
t2_1[:], eris_ovvv, t2_1[:,a:
|
|
222
|
+
t2_1[:], eris_ovvv, t2_1[:,a:b] ,optimize=True)
|
|
231
223
|
t1_3 += lib.einsum('lidf,mafe,mlde->ia',
|
|
232
|
-
t2_1[:], eris_ovvv, t2_1[a:
|
|
224
|
+
t2_1[:], eris_ovvv, t2_1[a:b] ,optimize=True)
|
|
233
225
|
|
|
234
226
|
t1_3 += lib.einsum('ilfd,mefa,mled->ia',
|
|
235
|
-
t2_1[:],eris_ovvv, t2_1[a:
|
|
227
|
+
t2_1[:],eris_ovvv, t2_1[a:b],optimize=True)
|
|
236
228
|
t1_3 -= lib.einsum('ilfd,mafe,mled->ia',
|
|
237
|
-
t2_1[:],eris_ovvv, t2_1[a:
|
|
229
|
+
t2_1[:],eris_ovvv, t2_1[a:b],optimize=True)
|
|
238
230
|
|
|
239
231
|
t1_3 += 0.5*lib.einsum('ilaf,mefd,lmde->ia',
|
|
240
|
-
t2_1[:],eris_ovvv,t2_1[:,a:
|
|
232
|
+
t2_1[:],eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
241
233
|
t1_3 -= 0.5*lib.einsum('ilaf,mefd,mlde->ia',
|
|
242
|
-
t2_1[:],eris_ovvv,t2_1[a:
|
|
234
|
+
t2_1[:],eris_ovvv,t2_1[a:b],optimize=True)
|
|
243
235
|
t1_3 -= 0.5*lib.einsum('liaf,mefd,lmde->ia',
|
|
244
|
-
t2_1[:],eris_ovvv,t2_1[:,a:
|
|
236
|
+
t2_1[:],eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
245
237
|
t1_3 += 0.5*lib.einsum('liaf,mefd,mlde->ia',
|
|
246
|
-
t2_1[:],eris_ovvv,t2_1[a:
|
|
238
|
+
t2_1[:],eris_ovvv,t2_1[a:b],optimize=True)
|
|
247
239
|
|
|
248
240
|
t1_3 -= 0.5*lib.einsum('ilaf,mdfe,lmde->ia',
|
|
249
|
-
t2_1[:],eris_ovvv,t2_1[:,a:
|
|
241
|
+
t2_1[:],eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
250
242
|
t1_3 += 0.5*lib.einsum('ilaf,mdfe,mlde->ia',
|
|
251
|
-
t2_1[:],eris_ovvv,t2_1[a:
|
|
243
|
+
t2_1[:],eris_ovvv,t2_1[a:b],optimize=True)
|
|
252
244
|
t1_3 += 0.5*lib.einsum('liaf,mdfe,lmde->ia',
|
|
253
|
-
t2_1[:],eris_ovvv,t2_1[:,a:
|
|
245
|
+
t2_1[:],eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
254
246
|
t1_3 -= 0.5*lib.einsum('liaf,mdfe,mlde->ia',
|
|
255
|
-
t2_1[:],eris_ovvv,t2_1[a:
|
|
247
|
+
t2_1[:],eris_ovvv,t2_1[a:b],optimize=True)
|
|
256
248
|
|
|
257
|
-
t1_3[a:
|
|
249
|
+
t1_3[a:b] += 0.5*lib.einsum('lmdf,iaef,lmde->ia',
|
|
258
250
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
259
|
-
t1_3[a:
|
|
251
|
+
t1_3[a:b] -= 0.5*lib.einsum('lmdf,iaef,mlde->ia',
|
|
260
252
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
261
|
-
t1_3[a:
|
|
253
|
+
t1_3[a:b] -= 0.5*lib.einsum('mldf,iaef,lmde->ia',
|
|
262
254
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
263
|
-
t1_3[a:
|
|
255
|
+
t1_3[a:b] += 0.5*lib.einsum('mldf,iaef,mlde->ia',
|
|
264
256
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
265
257
|
|
|
266
|
-
t1_3[a:
|
|
258
|
+
t1_3[a:b] -= 0.5*lib.einsum('lmdf,ifea,lmde->ia',
|
|
267
259
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
268
|
-
t1_3[a:
|
|
260
|
+
t1_3[a:b] += 0.5*lib.einsum('lmdf,ifea,mlde->ia',
|
|
269
261
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
270
|
-
t1_3[a:
|
|
262
|
+
t1_3[a:b] += 0.5*lib.einsum('mldf,ifea,lmde->ia',
|
|
271
263
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
272
|
-
t1_3[a:
|
|
264
|
+
t1_3[a:b] -= 0.5*lib.einsum('mldf,ifea,mlde->ia',
|
|
273
265
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
274
266
|
|
|
275
|
-
t1_3[a:
|
|
267
|
+
t1_3[a:b] += lib.einsum('mlfd,iaef,mled->ia',t2_1[:],
|
|
276
268
|
eris_ovvv,t2_1[:],optimize=True)
|
|
277
|
-
t1_3[a:
|
|
269
|
+
t1_3[a:b] -= lib.einsum('mlfd,ifea,mled->ia',t2_1[:],
|
|
278
270
|
eris_ovvv,t2_1[:],optimize=True)
|
|
279
271
|
|
|
280
|
-
t1_3[a:
|
|
272
|
+
t1_3[a:b] -= 0.25*lib.einsum('lmef,iedf,lmad->ia',
|
|
281
273
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
282
|
-
t1_3[a:
|
|
274
|
+
t1_3[a:b] += 0.25*lib.einsum('lmef,iedf,mlad->ia',
|
|
283
275
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
284
|
-
t1_3[a:
|
|
276
|
+
t1_3[a:b] += 0.25*lib.einsum('mlef,iedf,lmad->ia',
|
|
285
277
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
286
|
-
t1_3[a:
|
|
278
|
+
t1_3[a:b] -= 0.25*lib.einsum('mlef,iedf,mlad->ia',
|
|
287
279
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
288
280
|
|
|
289
|
-
t1_3[a:
|
|
281
|
+
t1_3[a:b] += 0.25*lib.einsum('lmef,ifde,lmad->ia',
|
|
290
282
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
291
|
-
t1_3[a:
|
|
283
|
+
t1_3[a:b] -= 0.25*lib.einsum('lmef,ifde,mlad->ia',
|
|
292
284
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
293
|
-
t1_3[a:
|
|
285
|
+
t1_3[a:b] -= 0.25*lib.einsum('mlef,ifde,lmad->ia',
|
|
294
286
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
295
|
-
t1_3[a:
|
|
287
|
+
t1_3[a:b] += 0.25*lib.einsum('mlef,ifde,mlad->ia',
|
|
296
288
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
297
289
|
|
|
298
290
|
t1_3 += 0.5*lib.einsum('ilaf,mefd,lmde->ia',
|
|
299
|
-
t2_1[:],eris_ovvv,t2_1[:,a:
|
|
291
|
+
t2_1[:],eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
300
292
|
t1_3 -= 0.5*lib.einsum('ilaf,mefd,mlde->ia',
|
|
301
|
-
t2_1[:],eris_ovvv,t2_1[a:
|
|
293
|
+
t2_1[:],eris_ovvv,t2_1[a:b],optimize=True)
|
|
302
294
|
|
|
303
295
|
t1_3 -= 0.5*lib.einsum('ilaf,mdfe,lmde->ia',
|
|
304
|
-
t2_1[:],eris_ovvv,t2_1[:,a:
|
|
296
|
+
t2_1[:],eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
305
297
|
t1_3 += 0.5*lib.einsum('ilaf,mdfe,mlde->ia',
|
|
306
|
-
t2_1[:],eris_ovvv,t2_1[a:
|
|
298
|
+
t2_1[:],eris_ovvv,t2_1[a:b],optimize=True)
|
|
307
299
|
|
|
308
|
-
t1_3 -= lib.einsum('ildf,mafe,mlde->ia',t2_1[:],eris_ovvv,t2_1[a:
|
|
309
|
-
t1_3 += lib.einsum('ilaf,mefd,mled->ia',t2_1[:],eris_ovvv,t2_1[a:
|
|
300
|
+
t1_3 -= lib.einsum('ildf,mafe,mlde->ia',t2_1[:],eris_ovvv,t2_1[a:b],optimize=True)
|
|
301
|
+
t1_3 += lib.einsum('ilaf,mefd,mled->ia',t2_1[:],eris_ovvv,t2_1[a:b],optimize=True)
|
|
310
302
|
|
|
311
|
-
t1_3[a:
|
|
303
|
+
t1_3[a:b] += 0.5*lib.einsum('lmdf,iaef,lmde->ia',
|
|
312
304
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
313
|
-
t1_3[a:
|
|
305
|
+
t1_3[a:b] -= 0.5*lib.einsum('lmdf,iaef,mlde->ia',
|
|
314
306
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
315
|
-
t1_3[a:
|
|
307
|
+
t1_3[a:b] -= 0.5*lib.einsum('mldf,iaef,lmde->ia',
|
|
316
308
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
317
|
-
t1_3[a:
|
|
309
|
+
t1_3[a:b] += 0.5*lib.einsum('mldf,iaef,mlde->ia',
|
|
318
310
|
t2_1[:],eris_ovvv,t2_1[:],optimize=True)
|
|
319
311
|
|
|
320
|
-
t1_3[a:
|
|
312
|
+
t1_3[a:b] += lib.einsum('lmdf,iaef,lmde->ia',t2_1[:],
|
|
321
313
|
eris_ovvv,t2_1[:],optimize=True)
|
|
322
|
-
t1_3[a:
|
|
314
|
+
t1_3[a:b] -= lib.einsum('lmef,iedf,lmad->ia',t2_1[:],
|
|
323
315
|
eris_ovvv,t2_1[:],optimize=True)
|
|
324
316
|
|
|
325
|
-
t1_3 += lib.einsum('ilde,lead->ia',t2_2[:,a:
|
|
317
|
+
t1_3 += lib.einsum('ilde,lead->ia',t2_2[:,a:b],eris_ovvv,optimize=True)
|
|
326
318
|
|
|
327
319
|
t1_3 -= lib.einsum('ildf,mefa,lmde->ia',
|
|
328
|
-
t2_1[:],eris_ovvv, t2_1[:,a:
|
|
320
|
+
t2_1[:],eris_ovvv, t2_1[:,a:b],optimize=True)
|
|
329
321
|
t1_3 += lib.einsum('lidf,mefa,lmde->ia',
|
|
330
|
-
t2_1[:],eris_ovvv, t2_1[:,a:
|
|
322
|
+
t2_1[:],eris_ovvv, t2_1[:,a:b],optimize=True)
|
|
331
323
|
|
|
332
324
|
t1_3 += lib.einsum('ilfd,mefa,lmde->ia',
|
|
333
|
-
t2_1[:],eris_ovvv,t2_1[:,a:
|
|
325
|
+
t2_1[:],eris_ovvv,t2_1[:,a:b] ,optimize=True)
|
|
334
326
|
t1_3 -= lib.einsum('ilfd,mefa,mlde->ia',
|
|
335
|
-
t2_1[:],eris_ovvv,t2_1[a:
|
|
327
|
+
t2_1[:],eris_ovvv,t2_1[a:b] ,optimize=True)
|
|
336
328
|
|
|
337
329
|
t1_3 += lib.einsum('ilaf,mefd,lmde->ia',
|
|
338
|
-
t2_1[:],eris_ovvv,t2_1[:,a:
|
|
330
|
+
t2_1[:],eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
339
331
|
t1_3 -= lib.einsum('liaf,mefd,lmde->ia',
|
|
340
|
-
t2_1[:],eris_ovvv,t2_1[:,a:
|
|
332
|
+
t2_1[:],eris_ovvv,t2_1[:,a:b],optimize=True)
|
|
341
333
|
|
|
342
334
|
del eris_ovvv
|
|
343
|
-
a += k
|
|
344
335
|
|
|
345
336
|
else :
|
|
346
337
|
eris_ovvv = radc_ao2mo.unpack_eri_1(eris.ovvv, nvir)
|
|
@@ -553,13 +544,11 @@ def contract_ladder(myadc,t_amp,vvvv):
|
|
|
553
544
|
t[a:a+k] = np.dot(dataset,t_amp).reshape(-1,nvir,nocc*nocc)
|
|
554
545
|
a += k
|
|
555
546
|
elif getattr(myadc, 'with_df', None):
|
|
556
|
-
for
|
|
557
|
-
vvvv_p = dfadc.get_vvvv_df(myadc, vvvv,
|
|
558
|
-
k = vvvv_p.shape[0]
|
|
547
|
+
for a,b in lib.prange(0,nvir,chnk_size):
|
|
548
|
+
vvvv_p = dfadc.get_vvvv_df(myadc, vvvv, a, chnk_size)
|
|
559
549
|
vvvv_p = vvvv_p.reshape(-1,nvir*nvir)
|
|
560
|
-
t[a:
|
|
550
|
+
t[a:b] = np.dot(vvvv_p,t_amp).reshape(-1,nvir,nocc*nocc)
|
|
561
551
|
del vvvv_p
|
|
562
|
-
a += k
|
|
563
552
|
else:
|
|
564
553
|
raise Exception("Unknown vvvv type")
|
|
565
554
|
|
pyscf/adc/radc_ao2mo.py
CHANGED
|
@@ -22,8 +22,6 @@ import numpy as np
|
|
|
22
22
|
import pyscf.ao2mo as ao2mo
|
|
23
23
|
from pyscf import lib
|
|
24
24
|
from pyscf.lib import logger
|
|
25
|
-
import h5py
|
|
26
|
-
import tempfile
|
|
27
25
|
|
|
28
26
|
### Incore integral transformation for integrals in Chemists' notation###
|
|
29
27
|
def transform_integrals_incore(myadc):
|
|
@@ -44,8 +42,11 @@ def transform_integrals_incore(myadc):
|
|
|
44
42
|
eris.oovv = ao2mo.general(myadc._scf._eri, (occ, occ, vir, vir), compact=False).reshape(nocc, nocc, nvir, nvir).copy() # noqa: E501
|
|
45
43
|
eris.ovvo = ao2mo.general(myadc._scf._eri, (occ, vir, vir, occ), compact=False).reshape(nocc, nvir, nvir, nocc).copy() # noqa: E501
|
|
46
44
|
eris.ovvv = ao2mo.general(myadc._scf._eri, (occ, vir, vir, vir), compact=True).reshape(nocc, nvir, -1).copy() # noqa: E501
|
|
45
|
+
eris.vvvv = None
|
|
47
46
|
|
|
48
|
-
if (myadc.method == "adc(2)-x" and myadc.approx_trans_moments is False)
|
|
47
|
+
if ((myadc.method == "adc(2)-x" and myadc.approx_trans_moments is False)
|
|
48
|
+
or (myadc.method == "adc(2)-x" and myadc.method_type == "ee")
|
|
49
|
+
or (myadc.method == "adc(3)")):
|
|
49
50
|
eris.vvvv = ao2mo.general(myadc._scf._eri, (vir, vir, vir, vir),
|
|
50
51
|
compact=False).reshape(nvir, nvir, nvir, nvir)
|
|
51
52
|
eris.vvvv = np.ascontiguousarray(eris.vvvv.transpose(0,2,1,3))
|
|
@@ -85,6 +86,8 @@ def transform_integrals_outcore(myadc):
|
|
|
85
86
|
'ovvo', (nocc,nvir,nvir,nocc), 'f8', chunks=(nocc,1,nvir,nocc))
|
|
86
87
|
eris.ovvv = eris.feri1.create_dataset('ovvv', (nocc,nvir,nvpair), 'f8')
|
|
87
88
|
|
|
89
|
+
eris.vvvv = None
|
|
90
|
+
|
|
88
91
|
def save_occ_frac(p0, p1, eri):
|
|
89
92
|
eri = eri.reshape(p1-p0,nocc,nmo,nmo)
|
|
90
93
|
eris.oooo[p0:p1] = eri[:,:,:nocc,:nocc]
|
|
@@ -117,6 +120,7 @@ def transform_integrals_outcore(myadc):
|
|
|
117
120
|
fload = ao2mo.outcore._load_from_h5g
|
|
118
121
|
buf = np.empty((blksize*nocc,nao_pair))
|
|
119
122
|
buf_prefetch = np.empty_like(buf)
|
|
123
|
+
|
|
120
124
|
def load(buf_prefetch, p0, rowmax):
|
|
121
125
|
if p0 < rowmax:
|
|
122
126
|
p1 = min(rowmax, p0+blksize)
|
|
@@ -151,7 +155,10 @@ def transform_integrals_outcore(myadc):
|
|
|
151
155
|
|
|
152
156
|
############### forming eris_vvvv ########################################
|
|
153
157
|
|
|
154
|
-
if (myadc.method == "adc(2)-x" and myadc.approx_trans_moments is False)
|
|
158
|
+
if ((myadc.method == "adc(2)-x" and myadc.approx_trans_moments is False)
|
|
159
|
+
or (myadc.method == "adc(2)-x" and myadc.method_type == "ee")
|
|
160
|
+
or (myadc.method == "adc(3)")):
|
|
161
|
+
|
|
155
162
|
eris.vvvv = []
|
|
156
163
|
|
|
157
164
|
cput3 = logger.process_clock(), logger.perf_counter()
|