pyscf 2.6.2__py3-none-macosx_11_0_arm64.whl → 2.7.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.
Files changed (244) hide show
  1. pyscf/__init__.py +2 -2
  2. pyscf/adc/__init__.py +3 -8
  3. pyscf/adc/dfadc.py +22 -6
  4. pyscf/adc/radc.py +106 -15
  5. pyscf/adc/radc_amplitudes.py +7 -1
  6. pyscf/adc/radc_ao2mo.py +4 -2
  7. pyscf/adc/radc_ea.py +524 -8
  8. pyscf/adc/radc_ip.py +492 -60
  9. pyscf/adc/radc_ip_cvs.py +4 -2
  10. pyscf/adc/uadc.py +116 -27
  11. pyscf/adc/uadc_amplitudes.py +215 -20
  12. pyscf/adc/uadc_ao2mo.py +30 -9
  13. pyscf/adc/uadc_ea.py +34 -44
  14. pyscf/adc/uadc_ip.py +9 -4
  15. pyscf/adc/uadc_ip_cvs.py +4 -1
  16. pyscf/agf2/__init__.py +2 -2
  17. pyscf/agf2/aux_space.py +1 -1
  18. pyscf/agf2/chkfile.py +1 -1
  19. pyscf/ao2mo/outcore.py +6 -4
  20. pyscf/cc/__init__.py +21 -3
  21. pyscf/cc/bccd.py +0 -46
  22. pyscf/cc/ccsd.py +16 -8
  23. pyscf/cc/uccsd.py +1 -1
  24. pyscf/data/elements.py +1 -1
  25. pyscf/df/__init__.py +2 -1
  26. pyscf/df/addons.py +79 -51
  27. pyscf/df/autoaux.py +191 -0
  28. pyscf/df/df.py +5 -1
  29. pyscf/df/grad/casscf.py +0 -41
  30. pyscf/df/hessian/rhf.py +2 -10
  31. pyscf/df/hessian/rks.py +1 -7
  32. pyscf/df/hessian/uhf.py +3 -13
  33. pyscf/df/hessian/uks.py +1 -8
  34. pyscf/df/incore.py +17 -5
  35. pyscf/dft/dks.py +1 -1
  36. pyscf/dft/libxc.py +65 -639
  37. pyscf/dft/numint.py +7 -3
  38. pyscf/dft/radi.py +39 -5
  39. pyscf/dft/rks.py +1 -1
  40. pyscf/dft/xc_deriv.py +1 -1
  41. pyscf/dft/xcfun.py +53 -2
  42. pyscf/eph/eph_fd.py +1 -1
  43. pyscf/eph/rhf.py +6 -36
  44. pyscf/eph/rks.py +0 -4
  45. pyscf/eph/uhf.py +1 -7
  46. pyscf/eph/uks.py +1 -7
  47. pyscf/fci/addons.py +117 -2
  48. pyscf/fci/cistring.py +1 -1
  49. pyscf/fci/direct_nosym.py +3 -3
  50. pyscf/fci/direct_spin0_symm.py +22 -43
  51. pyscf/fci/direct_spin1.py +65 -9
  52. pyscf/fci/direct_spin1_symm.py +49 -14
  53. pyscf/fci/direct_uhf.py +4 -4
  54. pyscf/fci/selected_ci_symm.py +1 -1
  55. pyscf/grad/lagrange.py +11 -3
  56. pyscf/grad/mp2.py +1 -1
  57. pyscf/grad/sacasscf.py +1 -1
  58. pyscf/grad/tdrks.py +1 -1
  59. pyscf/gto/basis/__init__.py +7 -0
  60. pyscf/gto/basis/bse.py +68 -15
  61. pyscf/gto/basis/parse_cp2k_pp.py +1 -1
  62. pyscf/gto/basis/parse_nwchem.py +1 -1
  63. pyscf/gto/basis/parse_nwchem_ecp.py +2 -1
  64. pyscf/gto/basis/sap_grasp_large.dat +2438 -0
  65. pyscf/gto/basis/sap_grasp_small.dat +1434 -0
  66. pyscf/gto/mole.py +99 -44
  67. pyscf/gw/gw_ac.py +2 -2
  68. pyscf/gw/gw_cd.py +2 -2
  69. pyscf/gw/rpa.py +2 -2
  70. pyscf/gw/ugw_ac.py +2 -2
  71. pyscf/gw/urpa.py +1 -1
  72. pyscf/hessian/rhf.py +30 -128
  73. pyscf/hessian/rks.py +1 -6
  74. pyscf/hessian/uhf.py +28 -138
  75. pyscf/hessian/uks.py +1 -8
  76. pyscf/lib/ao2mo/nr_ao2mo.c +1 -1
  77. pyscf/lib/ao2mo/nrr_ao2mo.c +1 -1
  78. pyscf/lib/ao2mo/r_ao2mo.c +1 -1
  79. pyscf/lib/cc/ccsd_pack.c +1 -1
  80. pyscf/lib/cc/ccsd_t.c +6 -6
  81. pyscf/lib/cc/uccsd_t.c +4 -4
  82. pyscf/lib/deps/include/XCFun/XCFunExport.h +1 -0
  83. pyscf/lib/dft/grid_common.c +1 -1
  84. pyscf/lib/dft/libxc_itrf.c +4 -1
  85. pyscf/lib/dft/xcfun_itrf.c +1 -1
  86. pyscf/lib/diis.py +1 -1
  87. pyscf/lib/exceptions.py +3 -0
  88. pyscf/lib/gto/fill_grids_int2c.c +11 -9
  89. pyscf/lib/gto/fill_int2e.c +7 -5
  90. pyscf/lib/gto/fill_r_4c.c +1 -1
  91. pyscf/lib/gto/ft_ao.c +1 -1
  92. pyscf/lib/gto/ft_ao.h +1 -1
  93. pyscf/lib/gto/gto.h +2 -2
  94. pyscf/lib/gto/nr_ecp.c +3 -2
  95. pyscf/lib/libagf2.dylib +0 -0
  96. pyscf/lib/libao2mo.dylib +0 -0
  97. pyscf/lib/libcc.dylib +0 -0
  98. pyscf/lib/libcgto.dylib +0 -0
  99. pyscf/lib/libcvhf.dylib +0 -0
  100. pyscf/lib/libdft.dylib +0 -0
  101. pyscf/lib/libfci.dylib +0 -0
  102. pyscf/lib/libmcscf.dylib +0 -0
  103. pyscf/lib/libnp_helper.dylib +0 -0
  104. pyscf/lib/libpbc.dylib +0 -0
  105. pyscf/lib/libri.dylib +0 -0
  106. pyscf/lib/libxc_itrf.dylib +0 -0
  107. pyscf/lib/libxcfun_itrf.dylib +0 -0
  108. pyscf/lib/linalg_helper.py +112 -192
  109. pyscf/lib/mcscf/fci_contract.c +2 -2
  110. pyscf/lib/misc.py +47 -14
  111. pyscf/lib/numpy_helper.py +1 -1
  112. pyscf/lib/pbc/nr_ecp.c +10 -3
  113. pyscf/lib/pbc/pbc.h +1 -1
  114. pyscf/lib/vhf/nr_sgx_direct.c +8 -6
  115. pyscf/lib/vhf/optimizer.c +2 -2
  116. pyscf/lo/iao.py +1 -1
  117. pyscf/lo/ibo.py +3 -3
  118. pyscf/lo/pipek_jacobi.py +1 -1
  119. pyscf/mcscf/__init__.py +2 -2
  120. pyscf/mcscf/addons.py +3 -3
  121. pyscf/mcscf/apc.py +2 -2
  122. pyscf/mcscf/casci.py +8 -6
  123. pyscf/mcscf/chkfile.py +70 -41
  124. pyscf/mcscf/dmet_cas.py +2 -2
  125. pyscf/mcscf/mc1step.py +62 -38
  126. pyscf/mcscf/newton_casscf.py +5 -5
  127. pyscf/mcscf/ucasci.py +1 -1
  128. pyscf/mcscf/umc1step.py +44 -25
  129. pyscf/md/integrators.py +3 -3
  130. pyscf/mp/mp2.py +6 -5
  131. pyscf/mp/ump2.py +7 -6
  132. pyscf/pbc/adc/kadc_rhf.py +1 -1
  133. pyscf/pbc/adc/kadc_rhf_amplitudes.py +2 -2
  134. pyscf/pbc/ao2mo/eris.py +1 -1
  135. pyscf/pbc/cc/kccsd_rhf.py +3 -3
  136. pyscf/pbc/cc/kccsd_t_rhf.py +2 -2
  137. pyscf/pbc/ci/kcis_rhf.py +2 -2
  138. pyscf/pbc/df/aft.py +2 -2
  139. pyscf/pbc/df/aft_ao2mo.py +1 -1
  140. pyscf/pbc/df/df.py +84 -11
  141. pyscf/pbc/df/df_jk.py +2 -1
  142. pyscf/pbc/df/fft.py +6 -2
  143. pyscf/pbc/df/fft_ao2mo.py +4 -0
  144. pyscf/pbc/df/fft_jk.py +11 -3
  145. pyscf/pbc/df/ft_ao.py +4 -3
  146. pyscf/pbc/df/gdf_builder.py +5 -4
  147. pyscf/pbc/df/incore.py +1 -1
  148. pyscf/pbc/df/mdf.py +6 -3
  149. pyscf/pbc/df/rsdf.py +2 -2
  150. pyscf/pbc/df/rsdf_builder.py +11 -6
  151. pyscf/pbc/df/rsdf_helper.py +1 -1
  152. pyscf/pbc/dft/cdft.py +5 -5
  153. pyscf/pbc/dft/multigrid/multigrid.py +19 -26
  154. pyscf/pbc/dft/multigrid/multigrid_pair.py +1 -1
  155. pyscf/pbc/dft/multigrid/pp.py +1 -1
  156. pyscf/pbc/dft/numint.py +30 -21
  157. pyscf/pbc/eph/eph_fd.py +1 -1
  158. pyscf/pbc/geomopt/geometric_solver.py +1 -1
  159. pyscf/pbc/gto/cell.py +37 -19
  160. pyscf/pbc/gto/ecp.py +12 -12
  161. pyscf/pbc/gto/eval_gto.py +2 -2
  162. pyscf/pbc/gto/pseudo/pp.py +1 -1
  163. pyscf/pbc/gw/krgw_ac.py +4 -4
  164. pyscf/pbc/gw/krgw_cd.py +4 -4
  165. pyscf/pbc/gw/kugw_ac.py +3 -3
  166. pyscf/pbc/lib/kpts_helper.py +4 -3
  167. pyscf/pbc/lib/linalg_helper.py +1 -1
  168. pyscf/pbc/mp/kmp2.py +1 -1
  169. pyscf/pbc/mpitools/mpi.py +1 -1
  170. pyscf/pbc/scf/addons.py +15 -11
  171. pyscf/pbc/scf/cphf.py +1 -1
  172. pyscf/pbc/scf/ghf.py +1 -1
  173. pyscf/pbc/scf/hf.py +21 -24
  174. pyscf/pbc/scf/kghf.py +33 -29
  175. pyscf/pbc/scf/khf.py +71 -26
  176. pyscf/pbc/scf/krohf.py +5 -7
  177. pyscf/pbc/scf/kuhf.py +53 -22
  178. pyscf/pbc/scf/rsjk.py +13 -9
  179. pyscf/pbc/scf/scfint.py +1 -1
  180. pyscf/pbc/scf/stability.py +1 -1
  181. pyscf/pbc/scf/uhf.py +3 -1
  182. pyscf/pbc/symm/symmetry.py +2 -2
  183. pyscf/pbc/tdscf/kproxy.py +1 -1
  184. pyscf/pbc/tdscf/kproxy_supercell.py +2 -2
  185. pyscf/pbc/tdscf/krhf.py +215 -133
  186. pyscf/pbc/tdscf/krhf_slow_supercell.py +1 -1
  187. pyscf/pbc/tdscf/krks.py +1 -45
  188. pyscf/pbc/tdscf/kuhf.py +58 -105
  189. pyscf/pbc/tdscf/kuks.py +0 -56
  190. pyscf/pbc/tdscf/proxy.py +1 -1
  191. pyscf/pbc/tdscf/rhf.py +111 -3
  192. pyscf/pbc/tdscf/rks.py +2 -1
  193. pyscf/pbc/tdscf/uhf.py +203 -1
  194. pyscf/pbc/tdscf/uks.py +2 -1
  195. pyscf/pbc/tools/k2gamma.py +7 -4
  196. pyscf/pbc/tools/pbc.py +63 -56
  197. pyscf/pbc/tools/pyscf_ase.py +0 -1
  198. pyscf/pbc/tools/pywannier90.py +1 -1
  199. pyscf/qmmm/mm_mole.py +1 -1
  200. pyscf/scf/_response_functions.py +2 -2
  201. pyscf/scf/_vhf.py +14 -10
  202. pyscf/scf/addons.py +29 -15
  203. pyscf/scf/cphf.py +14 -52
  204. pyscf/scf/dhf.py +39 -10
  205. pyscf/scf/dispersion.py +9 -8
  206. pyscf/scf/ghf.py +25 -13
  207. pyscf/scf/ghf_symm.py +2 -2
  208. pyscf/scf/hf.py +245 -29
  209. pyscf/scf/rohf.py +37 -5
  210. pyscf/scf/stability.py +142 -112
  211. pyscf/scf/ucphf.py +21 -16
  212. pyscf/scf/uhf.py +95 -58
  213. pyscf/sgx/sgx.py +1 -1
  214. pyscf/sgx/sgx_jk.py +4 -4
  215. pyscf/solvent/_ddcosmo_tdscf_grad.py +1 -1
  216. pyscf/solvent/ddcosmo.py +1 -1
  217. pyscf/solvent/pol_embed.py +1 -1
  218. pyscf/soscf/ciah.py +1 -1
  219. pyscf/soscf/newton_ah.py +1 -1
  220. pyscf/symm/__init__.py +1 -1
  221. pyscf/symm/addons.py +5 -5
  222. pyscf/tdscf/_lr_eig.py +505 -0
  223. pyscf/tdscf/common_slow.py +1 -1
  224. pyscf/tdscf/dhf.py +41 -37
  225. pyscf/tdscf/dks.py +0 -4
  226. pyscf/tdscf/ghf.py +91 -71
  227. pyscf/tdscf/gks.py +16 -16
  228. pyscf/tdscf/proxy.py +2 -2
  229. pyscf/tdscf/rhf.py +143 -96
  230. pyscf/tdscf/rks.py +15 -14
  231. pyscf/tdscf/uhf.py +117 -70
  232. pyscf/tdscf/uks.py +17 -18
  233. pyscf/tools/fcidump.py +3 -0
  234. pyscf/x2c/sfx2c1e.py +1 -1
  235. pyscf/x2c/tdscf.py +4 -4
  236. pyscf/x2c/x2c.py +15 -11
  237. {pyscf-2.6.2.dist-info → pyscf-2.7.0.dist-info}/METADATA +24 -24
  238. {pyscf-2.6.2.dist-info → pyscf-2.7.0.dist-info}/NOTICE +3 -1
  239. {pyscf-2.6.2.dist-info → pyscf-2.7.0.dist-info}/RECORD +242 -240
  240. {pyscf-2.6.2.dist-info → pyscf-2.7.0.dist-info}/WHEEL +1 -1
  241. pyscf/dft/gen_libxc_param.py +0 -35
  242. pyscf/dft/gen_xcfun_param.py +0 -209
  243. {pyscf-2.6.2.dist-info → pyscf-2.7.0.dist-info}/LICENSE +0 -0
  244. {pyscf-2.6.2.dist-info → pyscf-2.7.0.dist-info}/top_level.txt +0 -0
pyscf/adc/radc_ea.py CHANGED
@@ -12,9 +12,11 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  #
15
- # Author: Samragni Banerjee <samragnibanerjee4@gmail.com>
15
+ # Author: Abdelrahman Ahmed <>
16
+ # Samragni Banerjee <samragnibanerjee4@gmail.com>
17
+ # James Serna <jamcar456@gmail.com>
18
+ # Terrence Stahl <>
16
19
  # Alexander Sokolov <alexander.y.sokolov@gmail.com>
17
- #
18
20
 
19
21
  '''
20
22
  Restricted algebraic diagrammatic construction
@@ -912,6 +914,516 @@ def analyze(myadc):
912
914
 
913
915
  myadc.analyze_spec_factor()
914
916
 
917
+ def make_rdm1(adc):
918
+
919
+ cput0 = (logger.process_clock(), logger.perf_counter())
920
+ log = logger.Logger(adc.stdout, adc.verbose)
921
+
922
+ nroots = adc.U.shape[1]
923
+ U = adc.renormalize_eigenvectors(nroots)
924
+
925
+ list_rdm1 = []
926
+
927
+ for i in range(U.shape[1]):
928
+ rdm1 = make_rdm1_eigenvectors(adc, U[:,i], U[:,i])
929
+ list_rdm1.append(rdm1)
930
+
931
+ cput0 = log.timer_debug1("completed OPDM calculation", *cput0)
932
+ return list_rdm1
933
+
934
+ def make_rdm1_eigenvectors(adc, L, R):
935
+ # Using SQA EA
936
+ L = np.array(L).ravel()
937
+ R = np.array(R).ravel()
938
+
939
+ t1_ccee = adc.t2[0][:]
940
+ t2_ce = adc.t1[0][:]
941
+
942
+ nocc = adc._nocc
943
+ nvir = adc._nvir
944
+ nmo = nocc + nvir
945
+ n_singles = nvir
946
+ n_doubles = nvir * nvir * nocc
947
+
948
+ s1 = 0
949
+ f1 = n_singles
950
+ s2 = f1
951
+ f2 = s2 + n_doubles
952
+
953
+ rdm1 = np.zeros((nmo,nmo))
954
+ kd_oc = np.identity(nocc)
955
+
956
+ L1 = L[s1:f1]
957
+ L2 = L[s2:f2]
958
+ R1 = R[s1:f1]
959
+ R2 = R[s2:f2]
960
+
961
+ L2 = L2.reshape(nocc,nvir,nvir)
962
+ R2 = R2.reshape(nocc,nvir,nvir)
963
+
964
+ einsum = lib.einsum
965
+ einsum_type = True
966
+
967
+ ############# block- ij
968
+ ### 000 ###
969
+ rdm1[:nocc, :nocc] += 2 * einsum('a,a,IJ->IJ', L1, R1, kd_oc, optimize = einsum_type)
970
+
971
+ ### 101 ###
972
+ rdm1[:nocc, :nocc] -= 2 * einsum('Jab,Iab->IJ', L2, R2, optimize = einsum_type)
973
+ rdm1[:nocc, :nocc] += 1 * einsum('Jab,Iba->IJ', L2, R2, optimize = einsum_type)
974
+ rdm1[:nocc, :nocc] += 4 * einsum('iab,iab,IJ->IJ', L2, R2, kd_oc, optimize = einsum_type)
975
+ rdm1[:nocc, :nocc] -= 2 * einsum('iab,iba,IJ->IJ', L2, R2, kd_oc, optimize = einsum_type)
976
+
977
+ ### 020 ###
978
+ rdm1[:nocc, :nocc] -= 2 * einsum('a,a,Iibc,Jibc->IJ', L1, R1,
979
+ t1_ccee, t1_ccee, optimize = einsum_type)
980
+ rdm1[:nocc, :nocc] += einsum('a,a,Iibc,Jicb->IJ', L1, R1, t1_ccee,
981
+ t1_ccee, optimize = einsum_type)
982
+ rdm1[:nocc, :nocc] += 2 * einsum('a,b,Iiac,Jibc->IJ', L1, R1,
983
+ t1_ccee, t1_ccee, optimize = einsum_type)
984
+ rdm1[:nocc, :nocc] -= einsum('a,b,Iiac,Jicb->IJ', L1, R1, t1_ccee,
985
+ t1_ccee, optimize = einsum_type)
986
+ rdm1[:nocc, :nocc] -= einsum('a,b,Iica,Jibc->IJ', L1, R1, t1_ccee,
987
+ t1_ccee, optimize = einsum_type)
988
+ rdm1[:nocc, :nocc] += einsum('a,b,Iica,Jicb->IJ', L1, R1, t1_ccee,
989
+ t1_ccee, optimize = einsum_type)
990
+ rdm1[:nocc, :nocc] -= 2 * einsum('a,a,Iibc,Jibc->IJ', L1, R1,
991
+ t1_ccee, t1_ccee, optimize = einsum_type)
992
+ rdm1[:nocc, :nocc] += einsum('a,a,Iibc,Jicb->IJ', L1, R1, t1_ccee,
993
+ t1_ccee, optimize = einsum_type)
994
+ rdm1[:nocc, :nocc] += einsum('a,b,Iica,Jicb->IJ', L1, R1, t1_ccee,
995
+ t1_ccee, optimize = einsum_type)
996
+
997
+ ############# block- ab
998
+ ### 000 ###
999
+ rdm1[nocc:, nocc:] += einsum('B,A->AB', L1, R1, optimize = einsum_type)
1000
+
1001
+ ### 020 ###
1002
+ rdm1[nocc:, nocc:] -= einsum('A,a,ijab,ijBb->AB', L1, R1, t1_ccee,
1003
+ t1_ccee, optimize = einsum_type)
1004
+ rdm1[nocc:, nocc:] += 1/2 * einsum('A,a,ijab,jiBb->AB', L1,
1005
+ R1, t1_ccee, t1_ccee, optimize = einsum_type)
1006
+ rdm1[nocc:, nocc:] -= einsum('a,B,ijab,ijAb->AB', L1, R1, t1_ccee,
1007
+ t1_ccee, optimize = einsum_type)
1008
+ rdm1[nocc:, nocc:] += 1/2 * einsum('a,B,ijab,jiAb->AB', L1,
1009
+ R1, t1_ccee, t1_ccee, optimize = einsum_type)
1010
+ rdm1[nocc:, nocc:] += 2 * einsum('a,a,ijAb,ijBb->AB', L1, R1,
1011
+ t1_ccee, t1_ccee, optimize = einsum_type)
1012
+ rdm1[nocc:, nocc:] -= einsum('a,a,ijAb,jiBb->AB', L1, R1, t1_ccee,
1013
+ t1_ccee, optimize = einsum_type)
1014
+ rdm1[nocc:, nocc:] -= einsum('a,b,ijBa,ijAb->AB', L1, R1, t1_ccee,
1015
+ t1_ccee, optimize = einsum_type)
1016
+ rdm1[nocc:, nocc:] += einsum('a,b,ijBa,jiAb->AB', L1, R1, t1_ccee,
1017
+ t1_ccee, optimize = einsum_type)
1018
+ rdm1[nocc:, nocc:] += 2 * einsum('a,a,ijAb,ijBb->AB', L1, R1,
1019
+ t1_ccee, t1_ccee, optimize = einsum_type)
1020
+ rdm1[nocc:, nocc:] -= einsum('a,a,ijAb,jiBb->AB', L1, R1, t1_ccee,
1021
+ t1_ccee, optimize = einsum_type)
1022
+ rdm1[nocc:, nocc:] -= einsum('a,b,ijBa,ijAb->AB', L1, R1, t1_ccee,
1023
+ t1_ccee, optimize = einsum_type)
1024
+
1025
+ ### 101 ###
1026
+ rdm1[nocc:, nocc:] += 2 * einsum('iAa,iBa->AB', R2, R2, optimize = einsum_type)
1027
+ rdm1[nocc:, nocc:] -= einsum('iAa,iaB->AB', R2, R2, optimize = einsum_type)
1028
+ rdm1[nocc:, nocc:] -= einsum('iaA,iBa->AB', L2, R2, optimize = einsum_type)
1029
+ rdm1[nocc:, nocc:] += 2 * einsum('iaA,iaB->AB', L2, R2, optimize = einsum_type)
1030
+
1031
+ ############# block- ai
1032
+ # 020 #
1033
+ rdm1[nocc:, :nocc] -= einsum('a,A,Ia->AI', L1, R1, t2_ce, optimize = einsum_type)
1034
+ rdm1[nocc:, :nocc] += 2 * einsum('a,a,IA->AI', L1, R1, t2_ce, optimize = einsum_type)
1035
+
1036
+ # 011 #
1037
+ rdm1[nocc:, :nocc] -= 2 * einsum('A,iab,Iiab->AI', L1, R2, t1_ccee, optimize = einsum_type)
1038
+ rdm1[nocc:, :nocc] += einsum('A,iab,Iiba->AI', L1, R2, t1_ccee, optimize = einsum_type)
1039
+ rdm1[nocc:, :nocc] += 2 * einsum('a,iab,IiAb->AI', L1, R2, t1_ccee, optimize = einsum_type)
1040
+ rdm1[nocc:, :nocc] -= einsum('a,iab,iIAb->AI', L1, R2, t1_ccee, optimize = einsum_type)
1041
+ rdm1[nocc:, :nocc] -= 2 * einsum('a,iba,IiAb->AI', L1, R2, t1_ccee, optimize = einsum_type)
1042
+ rdm1[nocc:, :nocc] += einsum('a,iba,iIAb->AI', L1, R2, t1_ccee, optimize = einsum_type)
1043
+ rdm1[nocc:, :nocc] += 2 * einsum('a,iab,IiAb->AI', L1, R2, t1_ccee, optimize = einsum_type)
1044
+ rdm1[nocc:, :nocc] -= einsum('a,iab,iIAb->AI', L1, R2, t1_ccee, optimize = einsum_type)
1045
+
1046
+ # 110 #
1047
+ rdm1[nocc:, :nocc] -= einsum('IAa,a->AI',L2, R1, optimize = einsum_type)
1048
+ rdm1[nocc:, :nocc] += 2 * einsum('IaA,a->AI',L2, R1, optimize = einsum_type)
1049
+
1050
+ ############# block- ia
1051
+ rdm1[:nocc, nocc:] = rdm1[nocc:, :nocc].T
1052
+
1053
+ ####### ADC(3) SPIN ADAPTED EXCITED STATE OPDM WITH SQA ################
1054
+ if adc.method == "adc(3)":
1055
+ ### Redudant Variables used for names from SQA
1056
+ einsum_type = True
1057
+ t3_ce = adc.t1[1][:]
1058
+ t2_ccee = adc.t2[1][:]
1059
+
1060
+ ############# block- ij
1061
+ # 120 #
1062
+ rdm1[:nocc, :nocc] -= 2 * einsum('Jab,a,Ib->IJ', L2, R1, t2_ce, optimize = einsum_type)
1063
+ rdm1[:nocc, :nocc] += einsum('Jab,b,Ia->IJ', L2, R1, t2_ce, optimize = einsum_type)
1064
+
1065
+ # 021 #
1066
+ rdm1[:nocc, :nocc] -= 2 * einsum('a,Iab,Jb->IJ', L1, R2, t2_ce, optimize = einsum_type)
1067
+ rdm1[:nocc, :nocc] += einsum('a,Iba,Jb->IJ', L1, R2, t2_ce, optimize = einsum_type)
1068
+
1069
+ # 030 #
1070
+ rdm1[:nocc, :nocc] -= 4 * einsum('a,a,Iibc,Jibc->IJ', L1,
1071
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1072
+ rdm1[:nocc, :nocc] += 2 * einsum('a,a,Iibc,Jicb->IJ', L1,
1073
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1074
+ rdm1[:nocc, :nocc] -= 4 * einsum('a,a,Jibc,Iibc->IJ', L1,
1075
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1076
+ rdm1[:nocc, :nocc] += 2 * einsum('a,a,Jibc,Iicb->IJ', L1,
1077
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1078
+ rdm1[:nocc, :nocc] += 2 * einsum('a,b,Iibc,Jiac->IJ', L1,
1079
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1080
+ rdm1[:nocc, :nocc] -= einsum('a,b,Iibc,Jica->IJ', L1, R1,
1081
+ t1_ccee, t2_ccee, optimize = einsum_type)
1082
+ rdm1[:nocc, :nocc] -= einsum('a,b,Iicb,Jiac->IJ', L1, R1,
1083
+ t1_ccee, t2_ccee, optimize = einsum_type)
1084
+ rdm1[:nocc, :nocc] += 2 * einsum('a,b,Iicb,Jica->IJ', L1,
1085
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1086
+ rdm1[:nocc, :nocc] += 2 * einsum('a,b,Jiac,Iibc->IJ', L1,
1087
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1088
+ rdm1[:nocc, :nocc] -= einsum('a,b,Jiac,Iicb->IJ', L1, R1,
1089
+ t1_ccee, t2_ccee, optimize = einsum_type)
1090
+ rdm1[:nocc, :nocc] -= einsum('a,b,Jica,Iibc->IJ', L1, R1,
1091
+ t1_ccee, t2_ccee, optimize = einsum_type)
1092
+ rdm1[:nocc, :nocc] += 2 * einsum('a,b,Jica,Iicb->IJ', L1,
1093
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1094
+
1095
+ ############# block- ab
1096
+ # 120 #
1097
+ rdm1[nocc:, nocc:] -= einsum('iAa,a,iB->AB', L2, R1, t2_ce, optimize = einsum_type)
1098
+ rdm1[nocc:, nocc:] += 2 * einsum('iaA,a,iB->AB', L2, R1, t2_ce, optimize = einsum_type)
1099
+
1100
+ # 021 #
1101
+ rdm1[nocc:, nocc:] += 2 * einsum('a,iaB,iA->AB', L1, R2, t2_ce, optimize = einsum_type)
1102
+ rdm1[nocc:, nocc:] -= einsum('a,iBa,iA->AB', L1, R2, t2_ce, optimize = einsum_type)
1103
+
1104
+ # 030 #
1105
+ rdm1[nocc:, nocc:] -= einsum('B,a,ijAb,ijab->AB', L1, R1,
1106
+ t1_ccee, t2_ccee, optimize = einsum_type)
1107
+ rdm1[nocc:, nocc:] += 1/2 * einsum('B,a,ijAb,jiab->AB',
1108
+ L1, R1, t1_ccee, t2_ccee, optimize = einsum_type)
1109
+ rdm1[nocc:, nocc:] -= einsum('B,a,ijab,ijAb->AB', L1, R1,
1110
+ t1_ccee, t2_ccee, optimize = einsum_type)
1111
+ rdm1[nocc:, nocc:] += 1/2 * einsum('B,a,ijab,jiAb->AB',
1112
+ L1, R1, t1_ccee, t2_ccee, optimize = einsum_type)
1113
+ rdm1[nocc:, nocc:] -= einsum('a,A,ijBb,ijab->AB', L1, R1,
1114
+ t1_ccee, t2_ccee, optimize = einsum_type)
1115
+ rdm1[nocc:, nocc:] += 1/2 * einsum('a,A,ijBb,jiab->AB',
1116
+ L1, R1, t1_ccee, t2_ccee, optimize = einsum_type)
1117
+ rdm1[nocc:, nocc:] -= einsum('a,A,ijab,ijBb->AB', L1, R1,
1118
+ t1_ccee, t2_ccee, optimize = einsum_type)
1119
+ rdm1[nocc:, nocc:] += 1/2 * einsum('a,A,ijab,jiBb->AB',
1120
+ L1, R1, t1_ccee, t2_ccee, optimize = einsum_type)
1121
+ rdm1[nocc:, nocc:] += 4 * einsum('a,a,ijAb,ijBb->AB', L1,
1122
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1123
+ rdm1[nocc:, nocc:] -= 2 * einsum('a,a,ijAb,jiBb->AB', L1,
1124
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1125
+ rdm1[nocc:, nocc:] += 4 * einsum('a,a,ijBb,ijAb->AB', L1,
1126
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1127
+ rdm1[nocc:, nocc:] -= 2 * einsum('a,a,ijBb,jiAb->AB', L1,
1128
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1129
+ rdm1[nocc:, nocc:] -= 2 * einsum('a,b,ijAa,ijBb->AB', L1,
1130
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1131
+ rdm1[nocc:, nocc:] += einsum('a,b,ijAa,jiBb->AB', L1, R1,
1132
+ t1_ccee, t2_ccee, optimize = einsum_type)
1133
+ rdm1[nocc:, nocc:] -= 2 * einsum('a,b,ijBb,ijAa->AB', L1,
1134
+ R1, t1_ccee, t2_ccee, optimize = einsum_type)
1135
+ rdm1[nocc:, nocc:] += einsum('a,b,ijBb,jiAa->AB', L1, R1,
1136
+ t1_ccee, t2_ccee, optimize = einsum_type)
1137
+
1138
+ ############# block- ia
1139
+ # 120 #
1140
+ rdm1[:nocc, nocc:] -= 2 * einsum('iab,A,Iiab->IA', L2, R1, t2_ccee, optimize = einsum_type)
1141
+ rdm1[:nocc, nocc:] += einsum('iab,A,Iiba->IA', L2, R1, t2_ccee, optimize = einsum_type)
1142
+ rdm1[:nocc, nocc:] += 4 * einsum('iab,a,IiAb->IA', L2, R1, t2_ccee, optimize = einsum_type)
1143
+ rdm1[:nocc, nocc:] -= 2 * einsum('iab,a,iIAb->IA', L2, R1, t2_ccee, optimize = einsum_type)
1144
+ rdm1[:nocc, nocc:] -= 2 * einsum('iab,b,IiAa->IA', L2, R1, t2_ccee, optimize = einsum_type)
1145
+ rdm1[:nocc, nocc:] += einsum('iab,b,iIAa->IA', L2, R1, t2_ccee, optimize = einsum_type)
1146
+
1147
+ # 021 #
1148
+ rdm1[:nocc, nocc:] -= einsum('a,Iab,ijbc,ijAc->IA', L1, R2,
1149
+ t1_ccee, t1_ccee, optimize = einsum_type)
1150
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,Iab,ijbc,jiAc->IA',
1151
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1152
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,Ibc,ijAa,jibc->IA',
1153
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1154
+ rdm1[:nocc, nocc:] -= einsum('a,iaA,ijbc,Ijbc->IA', L1, R2,
1155
+ t1_ccee, t1_ccee, optimize = einsum_type)
1156
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iaA,ijbc,Ijcb->IA',
1157
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1158
+ rdm1[:nocc, nocc:] += einsum('a,iab,ijbc,IjAc->IA', L1, R2,
1159
+ t1_ccee, t1_ccee, optimize = einsum_type)
1160
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iab,ijbc,jIAc->IA',
1161
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1162
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iab,ijcb,IjAc->IA',
1163
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1164
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iab,ijcb,jIAc->IA',
1165
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1166
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,ibA,Ijca,ijcb->IA',
1167
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1168
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,ibc,IjAa,ijcb->IA',
1169
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1170
+
1171
+ rdm1[:nocc, nocc:] -= einsum('a,Iab,ijbc,ijAc->IA', L1, R2,
1172
+ t1_ccee, t1_ccee, optimize = einsum_type)
1173
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,Iab,ijbc,jiAc->IA',
1174
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1175
+ rdm1[:nocc, nocc:] += einsum('a,Iba,ijbc,ijAc->IA', L1, R2,
1176
+ t1_ccee, t1_ccee, optimize = einsum_type)
1177
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,Iba,ijbc,jiAc->IA',
1178
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1179
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,Ibc,ijAa,ijbc->IA',
1180
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1181
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,Ibc,ijAa,jibc->IA',
1182
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1183
+ rdm1[:nocc, nocc:] += einsum('a,iAa,ijbc,Ijbc->IA', L1, R2,
1184
+ t1_ccee, t1_ccee, optimize = einsum_type)
1185
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iAa,ijbc,Ijcb->IA',
1186
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1187
+ rdm1[:nocc, nocc:] -= einsum('a,iAb,Ijac,ijbc->IA', L1, R2,
1188
+ t1_ccee, t1_ccee, optimize = einsum_type)
1189
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iAb,Ijac,ijcb->IA',
1190
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1191
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iAb,Ijca,ijbc->IA',
1192
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1193
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iAb,Ijca,ijcb->IA',
1194
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1195
+ rdm1[:nocc, nocc:] -= einsum('a,iaA,ijbc,Ijbc->IA', L1, R2,
1196
+ t1_ccee, t1_ccee, optimize = einsum_type)
1197
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iaA,ijbc,Ijcb->IA',
1198
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1199
+ rdm1[:nocc, nocc:] += einsum('a,iab,ijbc,IjAc->IA', L1, R2,
1200
+ t1_ccee, t1_ccee, optimize = einsum_type)
1201
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iab,ijbc,jIAc->IA',
1202
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1203
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iab,ijcb,IjAc->IA',
1204
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1205
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iab,ijcb,jIAc->IA',
1206
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1207
+ rdm1[:nocc, nocc:] += einsum('a,ibA,Ijac,ijbc->IA', L1, R2,
1208
+ t1_ccee, t1_ccee, optimize = einsum_type)
1209
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,ibA,Ijac,ijcb->IA',
1210
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1211
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,ibA,Ijca,ijbc->IA',
1212
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1213
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,ibA,Ijca,ijcb->IA',
1214
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1215
+ rdm1[:nocc, nocc:] -= einsum('a,iba,ijbc,IjAc->IA', L1, R2,
1216
+ t1_ccee, t1_ccee, optimize = einsum_type)
1217
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iba,ijbc,jIAc->IA',
1218
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1219
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iba,ijcb,IjAc->IA',
1220
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1221
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iba,ijcb,jIAc->IA',
1222
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1223
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,ibc,IjAa,ijbc->IA',
1224
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1225
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,ibc,IjAa,ijcb->IA',
1226
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1227
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,ibc,jIAa,ijbc->IA',
1228
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1229
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,ibc,jIAa,ijcb->IA',
1230
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1231
+
1232
+ rdm1[:nocc, nocc:] += einsum('a,iab,ijbc,IjAc->IA', L1, R2,
1233
+ t1_ccee, t1_ccee, optimize = einsum_type)
1234
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iab,ijbc,jIAc->IA',
1235
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1236
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iab,ijcb,IjAc->IA',
1237
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1238
+ rdm1[:nocc, nocc:] -= einsum('a,iba,ijbc,IjAc->IA', L1, R2,
1239
+ t1_ccee, t1_ccee, optimize = einsum_type)
1240
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iba,ijbc,jIAc->IA',
1241
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1242
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iba,ijcb,IjAc->IA',
1243
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1244
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,ibc,IjAa,ijbc->IA',
1245
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1246
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,ibc,IjAa,ijcb->IA',
1247
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1248
+
1249
+ rdm1[:nocc, nocc:] -= einsum('a,iAb,Ijac,ijbc->IA', L1, R2,
1250
+ t1_ccee, t1_ccee, optimize = einsum_type)
1251
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iAb,Ijac,ijcb->IA',
1252
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1253
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,iAb,Ijca,ijbc->IA',
1254
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1255
+ rdm1[:nocc, nocc:] += einsum('a,iab,ijbc,IjAc->IA', L1, R2,
1256
+ t1_ccee, t1_ccee, optimize = einsum_type)
1257
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iab,ijbc,jIAc->IA',
1258
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1259
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,iab,ijcb,IjAc->IA',
1260
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1261
+ rdm1[:nocc, nocc:] -= 1/2 * einsum('a,ibc,IjAa,ijcb->IA',
1262
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1263
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,ibc,jIAa,ijcb->IA',
1264
+ L1, R2, t1_ccee, t1_ccee, optimize = einsum_type)
1265
+
1266
+ # 030 #
1267
+ rdm1[:nocc, nocc:] -= einsum('A,a,Ia->IA', L1, R1, t3_ce, optimize = einsum_type)
1268
+ rdm1[:nocc, nocc:] += 2 * einsum('a,a,IA->IA', L1, R1, t3_ce, optimize = einsum_type)
1269
+ rdm1[:nocc, nocc:] -= einsum('A,a,Iiab,ib->IA', L1, R1, t1_ccee,
1270
+ t2_ce, optimize = einsum_type)
1271
+ rdm1[:nocc, nocc:] += 1/2 * einsum('A,a,Iiba,ib->IA', L1,
1272
+ R1, t1_ccee, t2_ce, optimize = einsum_type)
1273
+ rdm1[:nocc, nocc:] += 2 * einsum('a,a,IiAb,ib->IA', L1, R1,
1274
+ t1_ccee, t2_ce, optimize = einsum_type)
1275
+ rdm1[:nocc, nocc:] -= einsum('a,a,iIAb,ib->IA', L1, R1, t1_ccee,
1276
+ t2_ce, optimize = einsum_type)
1277
+ rdm1[:nocc, nocc:] -= einsum('a,b,IiAb,ia->IA', L1, R1, t1_ccee,
1278
+ t2_ce, optimize = einsum_type)
1279
+ rdm1[:nocc, nocc:] += 1/2 * einsum('a,b,iIAb,ia->IA', L1,
1280
+ R1, t1_ccee, t2_ce, optimize = einsum_type)
1281
+
1282
+ ############# block- ai
1283
+ # 120 #
1284
+ rdm1[nocc:, :nocc] -= einsum('Iab,a,ijbc,ijAc->AI', L2, R1,
1285
+ t1_ccee, t1_ccee, optimize = einsum_type)
1286
+ rdm1[nocc:, :nocc] += 1/2 * einsum('Iab,a,ijbc,jiAc->AI',
1287
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1288
+ rdm1[nocc:, :nocc] += 1/2 * einsum('Iab,c,ijab,jiAc->AI',
1289
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1290
+ rdm1[nocc:, :nocc] -= einsum('iaA,a,ijbc,Ijbc->AI', L2, R1,
1291
+ t1_ccee, t1_ccee, optimize = einsum_type)
1292
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iaA,a,ijbc,Ijcb->AI',
1293
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1294
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iaA,b,ijca,Ijcb->AI',
1295
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1296
+ rdm1[nocc:, :nocc] += einsum('iab,a,ijbc,IjAc->AI', L2, R1,
1297
+ t1_ccee, t1_ccee, optimize = einsum_type)
1298
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,a,ijbc,jIAc->AI',
1299
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1300
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,a,ijcb,IjAc->AI',
1301
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1302
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,a,ijcb,jIAc->AI',
1303
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1304
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,c,ijba,IjAc->AI',
1305
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1306
+
1307
+ rdm1[nocc:, :nocc] -= einsum('Iab,a,ijbc,ijAc->AI', L2, R1,
1308
+ t1_ccee, t1_ccee, optimize = einsum_type)
1309
+ rdm1[nocc:, :nocc] += 1/2 * einsum('Iab,a,ijbc,jiAc->AI',
1310
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1311
+ rdm1[nocc:, :nocc] += einsum('Iab,b,ijac,ijAc->AI', L2, R1,
1312
+ t1_ccee, t1_ccee, optimize = einsum_type)
1313
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('Iab,b,ijac,jiAc->AI',
1314
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1315
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('Iab,c,ijab,ijAc->AI',
1316
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1317
+ rdm1[nocc:, :nocc] += 1/2 * einsum('Iab,c,ijab,jiAc->AI',
1318
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1319
+ rdm1[nocc:, :nocc] += einsum('iAa,a,ijbc,Ijbc->AI', L2, R1,
1320
+ t1_ccee, t1_ccee, optimize = einsum_type)
1321
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iAa,a,ijbc,Ijcb->AI',
1322
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1323
+ rdm1[nocc:, :nocc] -= einsum('iAa,b,ijac,Ijbc->AI', L2, R1,
1324
+ t1_ccee, t1_ccee, optimize = einsum_type)
1325
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iAa,b,ijac,Ijcb->AI',
1326
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1327
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iAa,b,ijca,Ijbc->AI',
1328
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1329
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iAa,b,ijca,Ijcb->AI',
1330
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1331
+ rdm1[nocc:, :nocc] -= einsum('iaA,a,ijbc,Ijbc->AI', L2, R1,
1332
+ t1_ccee, t1_ccee, optimize = einsum_type)
1333
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iaA,a,ijbc,Ijcb->AI',
1334
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1335
+ rdm1[nocc:, :nocc] += einsum('iaA,b,ijac,Ijbc->AI', L2, R1,
1336
+ t1_ccee, t1_ccee, optimize = einsum_type)
1337
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iaA,b,ijac,Ijcb->AI',
1338
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1339
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iaA,b,ijca,Ijbc->AI',
1340
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1341
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iaA,b,ijca,Ijcb->AI',
1342
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1343
+ rdm1[nocc:, :nocc] += einsum('iab,a,ijbc,IjAc->AI', L2, R1,
1344
+ t1_ccee, t1_ccee, optimize = einsum_type)
1345
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,a,ijbc,jIAc->AI',
1346
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1347
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,a,ijcb,IjAc->AI',
1348
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1349
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,a,ijcb,jIAc->AI',
1350
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1351
+ rdm1[nocc:, :nocc] -= einsum('iab,b,ijac,IjAc->AI', L2, R1,
1352
+ t1_ccee, t1_ccee, optimize = einsum_type)
1353
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,b,ijac,jIAc->AI',
1354
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1355
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,b,ijca,IjAc->AI',
1356
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1357
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,b,ijca,jIAc->AI',
1358
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1359
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,c,ijab,IjAc->AI',
1360
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1361
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,c,ijab,jIAc->AI',
1362
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1363
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,c,ijba,IjAc->AI',
1364
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1365
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,c,ijba,jIAc->AI',
1366
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1367
+
1368
+ rdm1[nocc:, :nocc] += einsum('iab,a,ijbc,IjAc->AI', L2, R1,
1369
+ t1_ccee, t1_ccee, optimize = einsum_type)
1370
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,a,ijbc,jIAc->AI',
1371
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1372
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,a,ijcb,IjAc->AI',
1373
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1374
+ rdm1[nocc:, :nocc] -= einsum('iab,b,ijac,IjAc->AI', L2, R1,
1375
+ t1_ccee, t1_ccee, optimize = einsum_type)
1376
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,b,ijac,jIAc->AI',
1377
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1378
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,b,ijca,IjAc->AI',
1379
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1380
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,c,ijab,IjAc->AI',
1381
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1382
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,c,ijba,IjAc->AI',
1383
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1384
+
1385
+ rdm1[nocc:, :nocc] -= einsum('iAa,b,ijac,Ijbc->AI', L2, R1,
1386
+ t1_ccee, t1_ccee, optimize = einsum_type)
1387
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iAa,b,ijac,Ijcb->AI',
1388
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1389
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iAa,b,ijca,Ijbc->AI',
1390
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1391
+ rdm1[nocc:, :nocc] += einsum('iab,a,ijbc,IjAc->AI', L2, R1,
1392
+ t1_ccee, t1_ccee, optimize = einsum_type)
1393
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,a,ijbc,jIAc->AI',
1394
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1395
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,a,ijcb,IjAc->AI',
1396
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1397
+ rdm1[nocc:, :nocc] -= 1/2 * einsum('iab,c,ijba,IjAc->AI',
1398
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1399
+ rdm1[nocc:, :nocc] += 1/2 * einsum('iab,c,ijba,jIAc->AI',
1400
+ L2, R1, t1_ccee, t1_ccee, optimize = einsum_type)
1401
+
1402
+ # 021 #
1403
+ rdm1[nocc:, :nocc] -= 2 * einsum('A,iab,Iiab->AI', L1, R2, t2_ccee, optimize = einsum_type)
1404
+ rdm1[nocc:, :nocc] += einsum('A,iab,Iiba->AI', L1, R2, t2_ccee, optimize = einsum_type)
1405
+ rdm1[nocc:, :nocc] += 4 * einsum('a,iab,IiAb->AI', L1, R2, t2_ccee, optimize = einsum_type)
1406
+ rdm1[nocc:, :nocc] -= 2 * einsum('a,iab,iIAb->AI', L1, R2, t2_ccee, optimize = einsum_type)
1407
+ rdm1[nocc:, :nocc] -= 2 * einsum('a,iba,IiAb->AI', L1, R2, t2_ccee, optimize = einsum_type)
1408
+ rdm1[nocc:, :nocc] += einsum('a,iba,iIAb->AI', L1, R2, t2_ccee, optimize = einsum_type)
1409
+
1410
+ # 030 #
1411
+ rdm1[nocc:, :nocc] -= einsum('a,A,Ia->AI', L1, R1, t3_ce, optimize = einsum_type)
1412
+ rdm1[nocc:, :nocc] += 2 * einsum('a,a,IA->AI', L1, R1, t3_ce, optimize = einsum_type)
1413
+ rdm1[nocc:, :nocc] -= einsum('a,A,Iiab,ib->AI', L1, R1, t1_ccee,
1414
+ t2_ce, optimize = einsum_type)
1415
+ rdm1[nocc:, :nocc] += 1/2 * einsum('a,A,Iiba,ib->AI', L1,
1416
+ R1, t1_ccee, t2_ce, optimize = einsum_type)
1417
+ rdm1[nocc:, :nocc] += 2 * einsum('a,a,IiAb,ib->AI', L1, R1,
1418
+ t1_ccee, t2_ce, optimize = einsum_type)
1419
+ rdm1[nocc:, :nocc] -= einsum('a,a,iIAb,ib->AI', L1, R1, t1_ccee,
1420
+ t2_ce, optimize = einsum_type)
1421
+ rdm1[nocc:, :nocc] -= einsum('a,b,IiAa,ib->AI', L1, R1, t1_ccee,
1422
+ t2_ce, optimize = einsum_type)
1423
+ rdm1[nocc:, :nocc] += 1/2 * einsum('a,b,iIAa,ib->AI', L1,
1424
+ R1, t1_ccee, t2_ce, optimize = einsum_type)
1425
+ return rdm1
1426
+
915
1427
 
916
1428
  def compute_dyson_mo(myadc):
917
1429
 
@@ -1000,24 +1512,28 @@ class RADCEA(radc.RADC):
1000
1512
  self.with_df = adc.with_df
1001
1513
  self.compute_properties = adc.compute_properties
1002
1514
  self.approx_trans_moments = adc.approx_trans_moments
1003
- self.E = None
1004
- self.U = None
1005
- self.P = None
1006
- self.X = None
1515
+
1007
1516
  self.evec_print_tol = adc.evec_print_tol
1008
1517
  self.spec_factor_print_tol = adc.spec_factor_print_tol
1009
1518
 
1519
+ self.E = adc.E
1520
+ self.U = adc.U
1521
+ self.P = adc.P
1522
+ self.X = adc.X
1523
+
1010
1524
  kernel = radc.kernel
1011
1525
  get_imds = get_imds
1012
1526
  matvec = matvec
1013
1527
  get_diag = get_diag
1014
1528
  get_trans_moments = get_trans_moments
1015
- renormalize_eigenvectors = renormalize_eigenvectors
1016
1529
  get_properties = get_properties
1530
+
1531
+ renormalize_eigenvectors = renormalize_eigenvectors
1532
+ analyze = analyze
1017
1533
  analyze_spec_factor = analyze_spec_factor
1018
1534
  analyze_eigenvector = analyze_eigenvector
1019
- analyze = analyze
1020
1535
  compute_dyson_mo = compute_dyson_mo
1536
+ make_rdm1 = make_rdm1
1021
1537
 
1022
1538
  def get_init_guess(self, nroots=1, diag=None, ascending=True):
1023
1539
  if diag is None :