From 381e43f32e8403430734a13f3079ff558fcd1db5 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Mon, 15 Jan 2024 17:31:28 -0500 Subject: [PATCH 01/21] draft of CC quadratic response function (SHG and OR only) --- pycc/ccdensity.py | 2 +- pycc/cclambda.py | 4 +- pycc/ccresponse.py | 1819 ++++++++++++++++++++++++++++++- pycc/ccwfn.py | 10 +- pycc/test_035_quadresp.py | 58 + pycc/tests/test_035_quadresp.py | 51 + 6 files changed, 1931 insertions(+), 13 deletions(-) create mode 100644 pycc/test_035_quadresp.py create mode 100644 pycc/tests/test_035_quadresp.py diff --git a/pycc/ccdensity.py b/pycc/ccdensity.py index 6665070..b5cb8b1 100644 --- a/pycc/ccdensity.py +++ b/pycc/ccdensity.py @@ -8,7 +8,7 @@ import time import numpy as np import torch -from .cctriples import t3c_ijk, t3c_abc, l3_ijk, l3_abc, t3c_bc, l3_bc +from cctriples import t3c_ijk, t3c_abc, l3_ijk, l3_abc, t3c_bc, l3_bc class ccdensity(object): """ diff --git a/pycc/cclambda.py b/pycc/cclambda.py index aad49ec..a15d70d 100644 --- a/pycc/cclambda.py +++ b/pycc/cclambda.py @@ -9,9 +9,9 @@ import numpy as np import time from opt_einsum import contract -from .utils import helper_diis +from utils import helper_diis import torch -from .cctriples import t3c_ijk, l3_ijk, l3_ijk_alt +from cctriples import t3c_ijk, l3_ijk, l3_ijk_alt class cclambda(object): diff --git a/pycc/ccresponse.py b/pycc/ccresponse.py index 092977c..c1bea34 100644 --- a/pycc/ccresponse.py +++ b/pycc/ccresponse.py @@ -7,7 +7,7 @@ import numpy as np import time -from .utils import helper_diis +from utils import helper_diis class ccresponse(object): """ @@ -200,6 +200,7 @@ def pertcheck(self, omega, e_conv=1e-13, r_conv=1e-13, maxiter=200, max_diis=8, print("Solving right-hand perturbed wave function for %s:" % (X_key)) X1[X_key], X2[X_key], polar = self.solve_right(self.pertbar[pertkey], -omega, e_conv, r_conv, maxiter, max_diis, start_diis) check[X_key] = polar + return check @@ -291,7 +292,1443 @@ def linresp(self, A, B, omega, e_conv=1e-13, r_conv=1e-13, maxiter=200, max_diis X1[X_key], X2[X_key], polar = self.solve_right(self.pertbar[pertkey], -omega, e_conv, r_conv, maxiter, max_diis, start_diis) check.append(polar) - def solve_right(self, pertbar, omega, e_conv=1e-13, r_conv=1e-13, maxiter=200, max_diis=8, start_diis=1): + def pert_quadresp(self, omega1, omega2, e_conv=1e-12, r_conv=1e-12, maxiter=200, max_diis=7, start_diis=1): + + self.ccpert_om1_X = {} + self.ccpert_om2_X = {} + self.ccpert_om_sum_X = {} + + self.ccpert_om1_2nd_X = {} + self.ccpert_om2_2nd_X = {} + self.ccpert_om_sum_2nd_X = {} + + self.ccpert_om1_Y = {} + self.ccpert_om2_Y = {} + self.ccpert_om_sum_Y = {} + + self.ccpert_om1_2nd_Y = {} + self.ccpert_om2_2nd_Y = {} + self.ccpert_om_sum_2nd_Y = {} + + omega_sum = -(omega1 + omega2) + + for axis in range(0, 3): + + pertkey = "MU_" + self.cart[axis] + #X_key = pertkey + "_" + f"{omega1:0.6f}" + + print("Solving right-hand perturbed wave function for omega1 %s:" % (pertkey)) + self.ccpert_om1_X[pertkey] = self.solve_right(self.pertbar[pertkey], omega1, e_conv, r_conv, maxiter, max_diis, start_diis) + + print("Solving left-hand perturbed wave function for %s:" % (pertkey)) + self.ccpert_om1_Y[pertkey] = self.solve_left(self.pertbar[pertkey], omega1, e_conv, r_conv, maxiter, max_diis, start_diis) + + print("Solving right-hand perturbed wave function for omega2 %s:" % (pertkey)) + self.ccpert_om2_X[pertkey] = self.solve_right(self.pertbar[pertkey], omega2, e_conv, r_conv, maxiter, max_diis, start_diis) + + print("Solving left-hand perturbed wave function for %s:" % (pertkey)) + self.ccpert_om2_Y[pertkey] = self.solve_left(self.pertbar[pertkey], omega2, e_conv, r_conv, maxiter, max_diis, start_diis) + + print("Solving right-hand perturbed wave function for omega_sum %s:" % (pertkey)) + self.ccpert_om_sum_X[pertkey] = self.solve_right(self.pertbar[pertkey], omega_sum, e_conv, r_conv, maxiter, max_diis, start_diis) + #print("solved X", self.ccpert_om_sum_X[pertkey][0]) + + print("Solving left-hand perturbed wave function for %s:" % (pertkey)) + self.ccpert_om_sum_Y[pertkey] = self.solve_left(self.pertbar[pertkey], omega_sum, e_conv, r_conv, maxiter, max_diis, start_diis) + #self.ccpert_om_sum_Y[pertkey] = self.solve_left(self.pertbar[pertkey], omega_sum, self.ccpert_om_sum_X[pertkey][0], self.ccpert_om_sum_X[pertkey][1], e_conv, r_conv, maxiter, max_diis, start_diis) + #print("solved Y", self.ccpert_om_sum_Y[pertkey][0]) + + print("Solving right-hand perturbed wave function for -omega1 %s:" % (pertkey)) + self.ccpert_om1_2nd_X[pertkey] = self.solve_right(self.pertbar[pertkey], -omega1, e_conv, r_conv, maxiter, max_diis, start_diis) + + print("Solving left-hand perturbed wave function for %s:" % (pertkey)) + self.ccpert_om1_2nd_Y[pertkey] = self.solve_left(self.pertbar[pertkey], -omega1, e_conv, r_conv, maxiter, max_diis, start_diis) + + print("Solving right-hand perturbed wave function for -omega2 %s:" % (pertkey)) + self.ccpert_om2_2nd_X[pertkey] = self.solve_right(self.pertbar[pertkey], -omega2, e_conv, r_conv, maxiter, max_diis, start_diis) + + print("Solving left-hand perturbed wave function for %s:" % (pertkey)) + self.ccpert_om2_2nd_Y[pertkey] = self.solve_left(self.pertbar[pertkey], -omega2, e_conv, r_conv, maxiter, max_diis, start_diis) + + print("Solving right-hand perturbed wave function for -omega_sum %s:" % (pertkey)) + self.ccpert_om_sum_2nd_X[pertkey] = self.solve_right(self.pertbar[pertkey], -omega_sum, e_conv, r_conv, maxiter, max_diis, start_diis) + + print("Solving left-hand perturbed wave function for %s:" % (pertkey)) + self.ccpert_om_sum_2nd_Y[pertkey] = self.solve_left(self.pertbar[pertkey], -omega_sum, e_conv, r_conv, maxiter, max_diis, start_diis) + + # self.ccpert_om1_X = ccpert_om1_X + # self.ccpert_om2_X = ccpert_om2_X + # self.ccpert_om_sum_X =ccpert_om_sum_X + + # self.ccpert_om1_2nd_X = ccpert_om1_2nd_X + # self.ccpert_om2_2nd_X = ccpert_om2_2nd_X + # self.ccpert_om_sum_2nd_X = ccpert_om_sum_2nd_X + + # self.ccpert_om1_Y = ccpert_om1_Y + # self.ccpert_om2_Y = ccpert_om2_Y + # self.ccpert_om_sum_Y =ccpert_om_sum_Y + + # self.ccpert_om1_2nd_Y = ccpert_om1_2nd_Y + # self.ccpert_om2_2nd_Y = ccpert_om2_2nd_Y + # self.ccpert_om_sum_2nd_Y = ccpert_om_sum_2nd_Y + + def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, ccpert_X_C, ccpert_Y_A, ccpert_Y_B, ccpert_Y_C): + contract = self.contract + + o = self.ccwfn.o + v = self.ccwfn.v + t1 = self.ccwfn.t1 + t2 = self.ccwfn.t2 + l1 = self.cclambda.l1 + l2 = self.cclambda.l2 + # Grab X and Y amplitudes corresponding to perturbation A, omega_sum + X1_A = ccpert_X_A[0] + X2_A = ccpert_X_A[1] + Y1_A = ccpert_Y_A[0] + Y2_A = ccpert_Y_A[1] + # Grab X and Y amplitudes corresponding to perturbation B, omega1 + X1_B = ccpert_X_B[0] + X2_B = ccpert_X_B[1] + Y1_B = ccpert_Y_B[0] + Y2_B = ccpert_Y_B[1] + # Grab X and Y amplitudes corresponding to perturbation C + X1_C = ccpert_X_C[0] + X2_C = ccpert_X_C[1] + Y1_C = ccpert_Y_C[0] + Y2_C = ccpert_Y_C[1] + # Grab pert integrals + pertbar_A = self.pertbar[pertkey_a] + pertbar_B = self.pertbar[pertkey_b] + pertbar_C = self.pertbar[pertkey_c] + + #Grab H_bar, L and ERI + hbar = self.hbar + L = self.H.L + ERI = self.H. ERI + + self.hyper = 0.0 + self.LAX = 0.0 + self.LAX2 = 0.0 + self.LAX3 = 0.0 + self.LAX4 = 0.0 + self.LAX5 = 0.0 + self.LAX6 = 0.0 + self.LHX1Y1 = 0.0 + self.LHX1Y2 = 0.0 + self.LHX1X2 = 0.0 + self.LHX2Y2 = 0.0 + + # <0|L1(B)[A_bar, X1(C)]|0> good + tmp = contract('ia,ic->ac', Y1_B, X1_C) + self.LAX += contract('ac,ac->',tmp, pertbar_A.Avv) + tmp = contract('ia,ka->ik', Y1_B, X1_C) + self.LAX -= contract('ik,ki->', tmp, pertbar_A.Aoo) + + # <0|L1(B)[A_bar, X2(C)]|0> + tmp = contract('ia,jb->ijab', Y1_B, pertbar_A.Aov) + + #swapaxes + self.LAX += 2.0 * contract('ijab,ijab->', tmp, X2_C) + self.LAX -= contract('ijab,ijba->',tmp, X2_C) + + # <0|L2(B)[A_bar, X1(C)]|0> + tmp = contract('ijbc,bcaj->ia', Y2_B, pertbar_A.Avvvo) + self.LAX += contract('ia,ia->', tmp, X1_C) + tmp = contract('ijab,kbij->ak', Y2_B, pertbar_A.Aovoo) + self.LAX -= contract('ak,ka->', tmp, X1_C) + # <0|L2(B)[A_bar, X2(C)]|0> + tmp = contract('ijab,kjab->ik', Y2_B, X2_C) + self.LAX -= contract('ik,ki->', tmp, pertbar_A.Aoo) + tmp = contract('ijab,ijac->bc', Y2_B, X2_C) + self.LAX += contract('bc,bc->', tmp, pertbar_A.Avv) + + self.hyper += self.LAX # good + + # <0|L1(C)[A_bar, X1(B)]|0> good + tmp = contract('ia,ic->ac', Y1_C, X1_B) + self.LAX2 += contract('ac,ac->', tmp, pertbar_A.Avv) + tmp = contract('ia,ka->ik', Y1_C, X1_B) + self.LAX2 -= contract('ik,ki->',tmp, pertbar_A.Aoo) + + # <0|L1(C)[A_bar, X2(B)]|0> + tmp = contract('ia,jb->ijab', Y1_C, pertbar_A.Aov) + + #swapaxes + self.LAX2 += 2.0 * contract('ijab,ijab->', tmp, X2_B) + self.LAX2 -= contract('ijab,ijba->', tmp, X2_B) + + # <0|L2(C)[A_bar, X1(B)]|0> + tmp = contract('ijbc,bcaj->ia', Y2_C, pertbar_A.Avvvo) + self.LAX2 += contract('ia,ia->', tmp, X1_B) + tmp = contract('ijab,kbij->ak', Y2_C, pertbar_A.Aovoo) + self.LAX2 -= contract('ak,ka->', tmp, X1_B) + + # <0|L2(C)[A_bar, X2(B)]|0> + tmp = contract('ijab,kjab->ik', Y2_C, X2_B) + self.LAX2 -= contract('ik,ki->', tmp, pertbar_A.Aoo) + tmp = contract('ijab,ijac->bc', Y2_C, X2_B) + self.LAX2 += contract('bc,bc->', tmp, pertbar_A.Avv) + + self.hyper += self.LAX2 #good + + # <0|L1(A)[B_bar,X1(C)]|0> + tmp = contract('ia,ic->ac', Y1_A, X1_C) + self.LAX3 += contract('ac,ac->',tmp, pertbar_B.Avv) + tmp = contract('ia,ka->ik', Y1_A, X1_C) + self.LAX3 -= contract('ik,ki->', tmp, pertbar_B.Aoo) + # <0|L1(A)[B_bar, X2(C)]|0> + tmp = contract('ia,jb->ijab', Y1_A, pertbar_B.Aov) + + #swapaxes + self.LAX3 += 2.0 * contract('ijab,ijab->', tmp, X2_C) + self.LAX3 -= contract('ijab,ijba->', tmp, X2_C) + # <0|L2(A)[B_bar, X1(C)]|0> + tmp = contract('ijbc,bcaj->ia', Y2_A, pertbar_B.Avvvo) + self.LAX3 += contract('ia,ia->',tmp, X1_C) + tmp = contract('ijab,kbij->ak', Y2_A, pertbar_B.Aovoo) + self.LAX3 -= contract('ak,ka->', tmp, X1_C) + # <0|L2(A)[B_bar, X2(C)]|0> + tmp = contract('ijab,kjab->ik', Y2_A, X2_C) + self.LAX3 -= contract('ik,ki->', tmp, pertbar_B.Aoo) + tmp = contract('ijab,ijac->bc', Y2_A, X2_C) + self.LAX3 += contract('bc,bc->', tmp, pertbar_B.Avv) + + self.hyper += self.LAX3 + + # <0|L1(C)|[B_bar,X1(A)]|0> + tmp = contract('ia,ic->ac', Y1_C, X1_A) + self.LAX4 += contract('ac,ac->', tmp, pertbar_B.Avv) + tmp = contract('ia,ka->ik', Y1_C, X1_A) + self.LAX4 -= contract('ik,ki->', tmp, pertbar_B.Aoo) + # <0|L1(C)[B_bar, X2(A)]|0> + tmp = contract('ia,jb->ijab',Y1_C, pertbar_B.Aov) + #swapaxes + self.LAX4 += 2.0 * contract('ijab,ijab->',tmp, X2_A) + self.LAX4 -= contract('ijab,ijba->', tmp, X2_A) + # <0|L2(C)[B_bar, X1(A)]|0> + tmp = contract('ijbc,bcaj->ia', Y2_C, pertbar_B.Avvvo) + self.LAX4 += contract('ia,ia->', tmp, X1_A) + tmp = contract('ijab,kbij->ak', Y2_C, pertbar_B.Aovoo) + self.LAX4 -= contract('ak,ka->', tmp, X1_A) + # <0|L2(C)[B_bar, X2(A)]|0> + tmp = contract('ijab,kjab->ik', Y2_C, X2_A) + self.LAX4 -= contract('ik,ki->', tmp, pertbar_B.Aoo) + tmp = contract('ijab,kiba->jk', Y2_C, X2_A) + tmp = contract('ijab,ijac->bc', Y2_C, X2_A) + self.LAX4 += contract('bc,bc->', tmp, pertbar_B.Avv) + + self.hyper += self.LAX4 #good + + # <0|L1(A)[C_bar,X1(B)]|0> + tmp = contract('ia,ic->ac', Y1_A, X1_B) + self.LAX5 += contract('ac,ac->', tmp, pertbar_C.Avv) + tmp = contract('ia,ka->ik', Y1_A, X1_B) + self.LAX5 -= contract('ik,ki->', tmp, pertbar_C.Aoo) + # <0|L1(A)[C_bar, X2(B)]|0> + tmp = contract('ia,jb->ijab', Y1_A, pertbar_C.Aov) + + #swapaxes + self.LAX5 += 2.0 * contract('ijab,ijab->', tmp, X2_B) + self.LAX5 -= contract('ijab,ijba->', tmp, X2_B) + # <0|L2(A)[C_bar, X1(B)]|0> + tmp = contract('ijbc,bcaj->ia', Y2_A, pertbar_C.Avvvo) + self.LAX5 += contract('ia,ia->', tmp, X1_B) + tmp = contract('ijab,kbij->ak', Y2_A, pertbar_C.Aovoo) + self.LAX5 -= contract('ak,ka->', tmp, X1_B) + # <0|L2(A)[C_bar, X2(B)]|0> + tmp = contract('ijab,kjab->ik', Y2_A, X2_B) + self.LAX5 -= contract('ik,ki->', tmp, pertbar_C.Aoo) + tmp = contract('ijab,ijac->bc', Y2_A, X2_B) + self.LAX5 += contract('bc,bc->', tmp, pertbar_C.Avv) + + self.hyper += self.LAX5 + + # <0|L1(B)|[C_bar,X1(A)]|0> + tmp = contract('ia,ic->ac', Y1_B, X1_A) + self.LAX6 += contract('ac,ac->', tmp, pertbar_C.Avv) + tmp = contract('ia,ka->ik', Y1_B, X1_A) + self.LAX6 -= contract('ik,ki->', tmp, pertbar_C.Aoo) + # <0|L1(B)[C_bar, X2(A)]|0> + tmp = contract('ia,jb->ijab', Y1_B, pertbar_C.Aov) + + #swapaxes + self.LAX6 += 2.0 * contract('ijab,ijab->', tmp, X2_A) + self.LAX6 -= contract('ijab,ijba->', tmp, X2_A) + # <0|L2(B)[C_bar, X1(A)]|0> + tmp = contract('ijbc,bcaj->ia', Y2_B, pertbar_C.Avvvo) + self.LAX6 += contract('ia,ia->', tmp, X1_A) + tmp = contract('ijab,kbij->ak', Y2_B, pertbar_C.Aovoo) + self.LAX6 -= contract('ak,ka->', tmp, X1_A) + # <0|L2(B)[C_bar, X2(A)]|0> + tmp = contract('ijab,kjab->ik', Y2_B, X2_A) + self.LAX6 -= np.einsum('ik,ki->', tmp, pertbar_C.Aoo) + tmp = contract('ijab,ijac->bc', Y2_B, X2_A) + self.LAX6 += contract('bc,bc->', tmp, pertbar_C.Avv) + + self.hyper += self.LAX6 #good + + self.Fz1 = 0 + self.Fz2 = 0 + self.Fz3 = 0 + + # <0|L1(0)[[A_bar,X1(B)],X1(C)]|0> + tmp = contract('ia,ja->ij', X1_B, pertbar_A.Aov) + tmp2 = contract('ib,jb->ij', l1, X1_C) + self.Fz1 -= contract('ij,ij->', tmp2, tmp) + + tmp = contract('jb,ib->ij', X1_C, pertbar_A.Aov) + tmp2 = contract('ia,ja->ij', X1_B, l1) + self.Fz1 -= contract('ij,ij->', tmp2, tmp) + + # <0|L2(0)[[A_bar,X1(B)],X2(C)]|0> + tmp = contract('ia,ja->ij', X1_B, pertbar_A.Aov) + tmp2 = contract('jkbc,ikbc->ij', X2_C, l2) + self.Fz1 -= contract('ij,ij->',tmp2,tmp) + + tmp = contract('ia,jkac->jkic', X1_B, l2) + tmp = contract('jkbc,jkic->ib', X2_C, tmp) + self.Fz1 -= contract('ib,ib->', tmp, pertbar_A.Aov) + + # <0|L2(0)[[A_bar,X2(B)],X1(C)]|0> + tmp = contract('ia,ja->ij', X1_C, pertbar_A.Aov) + tmp2 = contract('jkbc,ikbc->ij', X2_B, l2) + self.Fz1 -= contract('ij,ij->', tmp2, tmp) + + tmp = contract('ia,jkac->jkic', X1_C, l2) + tmp = contract('jkbc,jkic->ib', X2_B, tmp) + self.Fz1 -= contract('ib,ib->', tmp, pertbar_A.Aov) + + # <0|L1(0)[B_bar,X1(A)],X1(C)]|0> + tmp = contract('ia,ja->ij', X1_A, pertbar_B.Aov) + tmp2 = contract('ib,jb->ij', l1, X1_C) + self.Fz2 -= contract('ij,ij->', tmp2, tmp) + + tmp = contract('jb,ib->ij', X1_C, pertbar_B.Aov) + tmp2 = contract('ia,ja->ij', X1_A, l1) + self.Fz2 -= contract('ij,ij->', tmp2, tmp) + + # <0|L2(0)[[B_bar,X1(A)],X2(C)]|0> + tmp = contract('ia,ja->ij', X1_A, pertbar_B.Aov) + tmp2 = contract('jkbc,ikbc->ij', X2_C, l2) + self.Fz2 -= contract('ij,ij->', tmp2, tmp) + + tmp = contract('ia,jkac->jkic', X1_A, l2) + tmp = contract('jkbc,jkic->ib', X2_C, tmp) + self.Fz2 -= contract('ib,ib->', tmp, pertbar_B.Aov) + + # <0|L2(0)[[B_bar,X2(A)],X1(C)]|0> + tmp = contract('ia,ja->ij', X1_C, pertbar_B.Aov) + tmp2 = contract('jkbc,ikbc->ij', X2_A, l2) + self.Fz2 -= contract('ij,ij->', tmp2, tmp) + + tmp = contract('ia,jkac->jkic', X1_C, l2) + tmp = contract('jkbc,jkic->ib', X2_A, tmp) + self.Fz2 -= contract('ib,ib->', tmp, pertbar_B.Aov) + + # <0|L1(0)[C_bar,X1(A)],X1(B)]|0> + tmp = contract('ia,ja->ij', X1_A, pertbar_C.Aov) + tmp2 = contract('ib,jb->ij', l1, X1_B) + self.Fz3 -= contract('ij,ij->', tmp2, tmp) + + tmp = contract('jb,ib->ij', X1_B, pertbar_C.Aov) + tmp2 = contract('ia,ja->ij', X1_A, l1) + self.Fz3 -= contract('ij,ij->', tmp2, tmp) + + # <0|L2(0)[[C_bar,X1(A)],X2(B)]|0> + tmp = contract('ia,ja->ij', X1_A, pertbar_C.Aov) + tmp2 = contract('jkbc,ikbc->ij', X2_B, l2) + self.Fz3 -= contract('ij,ij->', tmp2, tmp) + + tmp = contract('ia,jkac->jkic', X1_A, l2) + tmp = contract('jkbc,jkic->ib', X2_B, tmp) + self.Fz3 -= contract('ib,ib->', tmp, pertbar_C.Aov) + + # <0|L2(0)[[C_bar,X2(A)],X1(B)]|0> + tmp = contract('ia,ja->ij', X1_B, pertbar_C.Aov) + tmp2 = contract('jkbc,ikbc->ij', X2_A, l2) + self.Fz3 -= contract('ij,ij->', tmp2, tmp) + + tmp = contract('ia,jkac->jkic', X1_B, l2) + tmp = contract('jkbc,jkic->ib', X2_A, tmp) + self.Fz3 -= contract('ib,ib->', tmp, pertbar_C.Aov) + + self.hyper += self.Fz1+self.Fz2+self.Fz3 + + self.G = 0 + # + tmp = contract('ia,ijac->jc', X1_A, L[o,o,v,v]) + tmp = contract('kc,jc->jk', X1_C, tmp) + tmp2 = contract('jb,kb->jk', X1_B, l1) + self.G -= contract('jk,jk->', tmp2, tmp) + + tmp = contract('ia,ikab->kb', X1_A, L[o,o,v,v]) + tmp = contract('jb,kb->jk', X1_B, tmp) + tmp2 = contract('jc,kc->jk', l1, X1_C) + self.G -= contract('jk,jk->', tmp2, tmp) + + tmp = contract('jb,jkba->ka', X1_B, L[o,o,v,v]) + tmp = contract('ia,ka->ki', X1_A, tmp) + tmp2 = contract('kc,ic->ki', X1_C, l1) + self.G -= contract('ki,ki->', tmp2, tmp) + + tmp = contract('jb,jibc->ic', X1_B, L[o,o,v,v]) + tmp = contract('kc,ic->ki', X1_C, tmp) + tmp2 = contract('ka,ia->ki', l1, X1_A) + self.G -= contract('ki,ki->', tmp2, tmp) + + tmp = contract('kc,kicb->ib', X1_C, L[o,o,v,v]) + tmp = contract('jb,ib->ji', X1_B, tmp) + tmp2 = contract('ja,ia->ji', l1, X1_A) + self.G -= contract('ji,ji->', tmp2, tmp) + + tmp = contract('kc,kjca->ja', X1_C, L[o,o,v,v]) + tmp = contract('ia,ja->ji', X1_A, tmp) + tmp2 = contract('jb,ib->ji', X1_B, l1) + self.G -= contract('ji,ji->', tmp2, tmp) + + # + tmp = contract('jb,klib->klij', X1_A, hbar.Hooov) + tmp2 = contract('ld,ijcd->ijcl', X1_C, l2) + tmp2 = contract('kc,ijcl->ijkl', X1_B, tmp2) + self.G += contract('ijkl,klij->', tmp2, tmp) + + tmp = contract('jb,lkib->lkij', X1_A, hbar.Hooov) + tmp2 = contract('ld,ijdc->ijlc', X1_C, l2) + tmp2 = contract('kc,ijlc->ijlk', X1_B, tmp2) + self.G += contract('ijlk,lkij->', tmp2, tmp) + + tmp = contract('kc,jlic->jlik', X1_B, hbar.Hooov) + tmp2 = contract('jb,ikbd->ikjd', X1_A, l2) + tmp2 = contract('ld,ikjd->ikjl', X1_C, tmp2) + self.G += contract('ikjl,jlik->', tmp2, tmp) + + tmp = contract('kc,ljic->ljik', X1_B, hbar.Hooov) + tmp2 = contract('jb,ikdb->ikdj', X1_A, l2) + tmp2 = contract('ld,ikdj->iklj', X1_C, tmp2) + self.G += contract('iklj,ljik->', tmp2, tmp) + + tmp = contract('ld,jkid->jkil', X1_C, hbar.Hooov) + tmp2 = contract('jb,ilbc->iljc', X1_A, l2) + tmp2 = contract('kc,iljc->iljk', X1_B, tmp2) + self.G += contract('iljk,jkil->', tmp2, tmp) + + tmp = contract('ld,kjid->kjil', X1_C, hbar.Hooov) + tmp2 = contract('jb,ilcb->ilcj', X1_A, l2) + tmp2 = contract('kc,ilcj->ilkj', X1_B, tmp2) + self.G += contract('ilkj,kjil->', tmp2, tmp) + + tmp = contract('jb,albc->aljc', X1_A, hbar.Hvovv) + tmp = contract('kc,aljc->aljk', X1_B, tmp) + tmp2 = contract('ld,jkad->jkal', X1_C, l2) + self.G -= contract('jkal,aljk->', tmp2, tmp) + + tmp = contract('jb,alcb->alcj', X1_A, hbar.Hvovv) + tmp = contract('kc,alcj->alkj', X1_B, tmp) + tmp2 = contract('ld,jkda->jkla', X1_C, l2) + self.G -= contract('jkla,alkj->', tmp2, tmp) + + tmp = contract('jb,akbd->akjd', X1_A, hbar.Hvovv) + tmp = contract('ld,akjd->akjl', X1_C, tmp) + tmp2 = contract('kc,jlac->jlak', X1_B, l2) + self.G -= contract('jlak,akjl->', tmp2, tmp) + + tmp = contract('jb,akdb->akdj', X1_A, hbar.Hvovv) + tmp = contract('ld,akdj->aklj', X1_C, tmp) + tmp2 = contract('kc,jlca->jlka', X1_B, l2) + self.G -= contract('jlka,aklj->', tmp2, tmp) + + tmp = contract('kc,ajcd->ajkd', X1_B, hbar.Hvovv) + tmp = contract('ld,ajkd->ajkl', X1_C, tmp) + tmp2 = contract('jb,klab->klaj', X1_A, l2) + self.G -= contract('klaj,ajkl->', tmp2, tmp) + + tmp = contract('kc,ajdc->ajdk', X1_B, hbar.Hvovv) + tmp = contract('ld,ajdk->ajlk', X1_C, tmp) + tmp2 = contract('jb,klba->klja', X1_A, l2) + self.G -= contract('klja,ajlk->', tmp2, tmp) + + # + tmp = contract('kc,jlbc->jlbk', X1_B, l2) + tmp2 = contract('ld,ikad->ikal', X1_C, L[o,o,v,v]) + tmp2 = contract('ijab,ikal->jlbk', X2_A, tmp2) + self.G -= contract('jlbk,jlbk->', tmp, tmp2) + + tmp = contract('ld,jkbd->jkbl', X1_C, l2) + tmp2 = contract('kc,ilac->ilak', X1_B, L[o,o,v,v]) + tmp2 = contract('ijab,ilak->jkbl', X2_A, tmp2) + self.G -= contract('jkbl,jkbl->',tmp,tmp2) + + tmp = contract('ijab,jibd->ad', X2_A, l2) + tmp = contract('ld,ad->la', X1_C, tmp) + tmp2 = contract('klca,kc->la', L[o,o,v,v], X1_B) + self.G -= contract('la,la->', tmp, tmp2) + + tmp = contract('ijab,jlba->il', X2_A, l2) + tmp2 = contract('kc,kicd->id', X1_B, L[o,o,v,v]) + tmp2 = contract('ld,id->il', X1_C, tmp2) + self.G -= contract('il,il->', tmp, tmp2) + + tmp = contract('ijab,jkba->ik', X2_A, l2) + tmp2 = contract('ld,lidc->ic', X1_C, L[o,o,v,v]) + tmp2 = contract('kc,ic->ik', X1_B, tmp2) + self.G -= contract('ik,ik->', tmp, tmp2) + + tmp = contract('ijab,jibc->ac', X2_A, l2) + tmp = contract('ac,kc->ka', tmp, X1_B) + tmp2 = contract('ld,lkda->ka', X1_C, L[o,o,v,v]) + self.G -= contract('ka,ka->', tmp, tmp2) + + # Goovv -> ERIoovv + tmp = contract('ijab,klab->ijkl',X2_A, ERI[o,o,v,v]) + tmp2 = contract('kc,ijcd->ijkd', X1_B, l2) + tmp2 = contract('ld,ijkd->ijkl', X1_C, tmp2) + self.G += contract('ijkl,ijkl->',tmp,tmp2) + + tmp = contract('kc,jlac->jlak', X1_B, ERI[o,o,v,v]) + tmp = contract('ijab,jlak->ilbk', X2_A, tmp) + tmp2 = contract('ikbd,ld->ilbk', l2, X1_C) + self.G += contract('ilbk,ilbk->', tmp, tmp2) + + tmp = contract('kc,ljac->ljak', X1_B, ERI[o,o,v,v]) + tmp = contract('ijab,ljak->ilbk', X2_A, tmp) + tmp2 = contract('ikdb,ld->ilbk', l2, X1_C) + self.G += contract('ilbk,ilbk->', tmp, tmp2) + + tmp = contract('ld,jkad->jkal', X1_C, ERI[o,o,v,v]) + tmp = contract('ijab,jkal->ikbl', X2_A, tmp) + tmp2 = contract('kc,ilbc->ilbk', X1_B, l2) + self.G += contract('ikbl,ilbk->', tmp, tmp2) + + tmp = contract('ld,kjad->kjal', X1_C, ERI[o,o,v,v]) + tmp = contract('ijab,kjal->iklb', X2_A, tmp) + tmp2 = contract('kc,ilcb->ilkb', X1_B, l2) + self.G += contract('iklb,ilkb->', tmp, tmp2) + + tmp = contract('kc,ijcd->ijkd', X1_B, ERI[o,o,v,v]) + tmp = contract('ld,ijkd->ijkl', X1_C, tmp) + tmp2 = contract('ijab,klab->ijkl', X2_A, l2) + self.G += contract('ijkl,ijkl->', tmp, tmp2) + + # + tmp = contract('kc,jlbc->jlbk', X1_A, l2) + tmp2 = contract('ld,ikad->ikal', X1_C, L[o,o,v,v]) + tmp2 = contract('ijab,ikal->jlbk', X2_B, tmp2) + self.G -= contract('jlbk,jlbk->', tmp, tmp2) + + tmp = contract('ld,jkbd->jkbl', X1_C, l2) + tmp2 = contract('kc,ilac->ilak', X1_A, L[o,o,v,v]) + tmp2 = contract('ijab,ilak->jkbl',X2_B, tmp2) + self.G -= contract('jkbl,jkbl->', tmp, tmp2) + + tmp = contract('ijab,jibd->ad', X2_B, l2) + tmp = contract('ld,ad->la', X1_C, tmp) + tmp2 = contract('klca,kc->la', L[o,o,v,v], X1_A) + self.G -= contract('la,la->', tmp, tmp2) + + tmp = contract('ijab,jlba->il', X2_B, l2) + tmp2 = contract('kc,kicd->id', X1_A, L[o,o,v,v]) + tmp2 = contract('ld,id->il', X1_C, tmp2) + self.G -= contract('il,il->', tmp, tmp2) + + tmp = contract('ijab,jkba->ik', X2_B, l2) + tmp2 = contract('ld,lidc->ic', X1_C, L[o,o,v,v]) + tmp2 = contract('kc,ic->ik', X1_A, tmp2) + self.G -= contract('ik,ik->', tmp, tmp2) + + tmp = contract('ijab,jibc->ac', X2_B, l2) + tmp = contract('ac,kc->ka', tmp, X1_A) + tmp2 = contract('ld,lkda->ka', X1_C, L[o,o,v,v]) + self.G -= contract('ka,ka->', tmp, tmp2) + + tmp = contract('ijab,klab->ijkl', X2_B, ERI[o,o,v,v]) + tmp2 = contract('kc,ijcd->ijkd', X1_A, l2) + tmp2 = contract('ld,ijkd->ijkl', X1_C, tmp2) + self.G += contract('ijkl,ijkl->', tmp, tmp2) + + tmp = contract('kc,jlac->jlak', X1_A, ERI[o,o,v,v]) + tmp = contract('ijab,jlak->ilbk', X2_B, tmp) + tmp2 = contract('ikbd,ld->ilbk', l2, X1_C) + self.G += contract('ilbk,ilbk->', tmp, tmp2) + + tmp = contract('kc,ljac->ljak', X1_A, ERI[o,o,v,v]) + tmp = contract('ijab,ljak->ilbk', X2_B, tmp) + tmp2 = contract('ikdb,ld->ilbk', l2, X1_C) + self.G += contract('ilbk,ilbk->', tmp, tmp2) + + tmp = contract('ld,jkad->jkal', X1_C, ERI[o,o,v,v]) + tmp = contract('ijab,jkal->ikbl', X2_B, tmp) + tmp2 = contract('kc,ilbc->ilbk', X1_A, l2) + self.G += contract('ikbl,ilbk->', tmp, tmp2) + + tmp = contract('ld,kjad->kjal', X1_C, ERI[o,o,v,v]) + tmp = contract('ijab,kjal->iklb', X2_B, tmp) + tmp2 = contract('kc,ilcb->ilkb', X1_A, l2) + self.G += contract('iklb,ilkb->', tmp, tmp2) + + tmp = contract('kc,ijcd->ijkd', X1_A, ERI[o,o,v,v]) + tmp = contract('ld,ijkd->ijkl', X1_C, tmp) + tmp2 = contract('ijab,klab->ijkl', X2_B, l2) + self.G += contract('ijkl,ijkl->', tmp, tmp2) + + # + tmp = contract('kc,jlbc->jlbk', X1_A, l2) + tmp2 = contract('ld,ikad->ikal', X1_B, L[o,o,v,v]) + tmp2 = contract('ijab,ikal->jlbk', X2_C, tmp2) + self.G -= contract('jlbk,jlbk->', tmp, tmp2) + + tmp = contract('ld,jkbd->jkbl', X1_B, l2) + tmp2 = contract('kc,ilac->ilak', X1_A, L[o,o,v,v]) + tmp2 = contract('ijab,ilak->jkbl', X2_C, tmp2) + self.G -= contract('jkbl,jkbl->', tmp, tmp2) + + tmp = contract('ijab,jibd->ad', X2_C, l2) + tmp = contract('ld,ad->la', X1_B, tmp) + tmp2 = contract('klca,kc->la', L[o,o,v,v], X1_A) + self.G -= contract('la,la->', tmp, tmp2) + + tmp = contract('ijab,jlba->il', X2_C, l2) + tmp2 = contract('kc,kicd->id', X1_A, L[o,o,v,v]) + tmp2 = contract('ld,id->il', X1_B, tmp2) + self.G -= contract('il,il->', tmp, tmp2) + + tmp = contract('ijab,jkba->ik', X2_C, l2) + tmp2 = contract('ld,lidc->ic', X1_B, L[o,o,v,v]) + tmp2 = contract('kc,ic->ik', X1_A, tmp2) + self.G -= contract('ik,ik->', tmp, tmp2) + + tmp = contract('ijab,jibc->ac', X2_C, l2) + tmp = contract('ac,kc->ka', tmp, X1_A) + tmp2 = contract('ld,lkda->ka', X1_B, L[o,o,v,v]) + self.G -= contract('ka,ka->', tmp, tmp2) + + tmp = contract('ijab,klab->ijkl', X2_C, ERI[o,o,v,v]) + tmp2 = contract('kc,ijcd->ijkd', X1_A, l2) + tmp2 = contract('ld,ijkd->ijkl', X1_B, tmp2) + self.G += contract('ijkl,ijkl->', tmp, tmp2) + + tmp = contract('kc,jlac->jlak', X1_A, ERI[o,o,v,v]) + tmp = contract('ijab,jlak->ilbk', X2_C, tmp) + tmp2 = contract('ikbd,ld->ilbk', l2, X1_B) + self.G += contract('ilbk,ilbk->', tmp, tmp2) + + tmp = contract('kc,ljac->ljak', X1_A, ERI[o,o,v,v]) + tmp = contract('ijab,ljak->ilbk', X2_C, tmp) + tmp2 = contract('ikdb,ld->ilbk', l2, X1_B) + self.G += contract('ilbk,ilbk->', tmp, tmp2) + + tmp = contract('ld,jkad->jkal', X1_B, ERI[o,o,v,v]) + tmp = contract('ijab,jkal->ikbl', X2_C, tmp) + tmp2 = contract('kc,ilbc->ilbk', X1_A, l2) + self.G += contract('ikbl,ilbk->', tmp, tmp2) + + tmp = contract('ld,kjad->kjal', X1_B, ERI[o,o,v,v]) + tmp = contract('ijab,kjal->iklb', X2_C, tmp) + tmp2 = contract('kc,ilcb->ilkb', X1_A, l2) + self.G += contract('iklb,ilkb->', tmp, tmp2) + + tmp = contract('kc,ijcd->ijkd', X1_A, ERI[o,o,v,v]) + tmp = contract('ld,ijkd->ijkl', X1_B, tmp) + tmp2 = contract('ijab,klab->ijkl', X2_C, l2) + self.G += contract('ijkl,ijkl->', tmp, tmp2) + + self.hyper += self.G #good + + self.Bcon1 = 0 + # + tmp = -1.0* contract('jc,kb->jkcb', hbar.Hov, Y1_A) + tmp -= contract('jc,kb->jkcb', Y1_A, hbar.Hov) + + #swapaxes + tmp -= 2.0* contract('kjib,ic->jkcb', hbar.Hooov, Y1_A) + tmp += contract('jkib,ic->jkcb', hbar.Hooov, Y1_A) + + #swapaxes + tmp -= 2.0* contract('jkic,ib->jkcb', hbar.Hooov, Y1_A) + tmp += np.einsum('kjic,ib->jkcb', hbar.Hooov, Y1_A) + + # swapaxes + tmp += 2.0* contract('ajcb,ka->jkcb', hbar.Hvovv, Y1_A) + tmp -= contract('ajbc,ka->jkcb', hbar.Hvovv, Y1_A) + + # swapaxes + tmp += 2.0* contract('akbc,ja->jkcb', hbar.Hvovv, Y1_A) + tmp -= contract('akcb,ja->jkcb', hbar.Hvovv, Y1_A) + + tmp2 = contract('miae,me->ia', tmp, X1_B) + self.Bcon1 += contract('ia,ia->', tmp2, X1_C) + + # + tmp = -1.0* contract('janc,nkba->jckb', hbar.Hovov, Y2_A) + tmp -= contract('kanb,njca->jckb', hbar.Hovov, Y2_A) + tmp -= contract('jacn,nkab->jckb', hbar.Hovvo, Y2_A) + tmp -= contract('kabn,njac->jckb', hbar.Hovvo, Y2_A) + tmp += 0.5* contract('fabc,jkfa->jckb', hbar.Hvvvv, Y2_A) + tmp += 0.5* contract('facb,kjfa->jckb', hbar.Hvvvv, Y2_A) + tmp += 0.5* contract('kjin,nibc->jckb', hbar.Hoooo, Y2_A) + tmp += 0.5* contract('jkin,nicb->jckb', hbar.Hoooo, Y2_A) + tmp2 = contract('iema,me->ia', tmp, X1_B) + self.Bcon1 += contract('ia,ia->', tmp2, X1_C) + + tmp = contract('ijab,ijdb->ad', t2, Y2_A) + tmp = contract('ld,ad->la', X1_C, tmp) + tmp = contract('la,klca->kc', tmp, L[o,o,v,v]) + self.Bcon1 -= contract('kc,kc->', tmp, X1_B) + + tmp = contract('ijab,jlba->il', t2, Y2_A) + tmp2 = contract('kc,kicd->id', X1_B, L[o,o,v,v]) + tmp2 = contract('id,ld->il', tmp2, X1_C) + self.Bcon1 -= contract('il,il->', tmp2, tmp) + + tmp = contract('ijab,jkba->ik', t2, Y2_A) + tmp2 = contract('ld,lidc->ic', X1_C, L[o,o,v,v]) + tmp2 = contract('ic,kc->ik', tmp2, X1_B) + self.Bcon1 -= contract('ik,ik->', tmp2, tmp) + + tmp = contract('ijab,ijcb->ac', t2, Y2_A) + tmp = contract('kc,ac->ka', X1_B, tmp) + tmp2 = contract('ld,lkda->ka', X1_C, L[o,o,v,v]) + self.Bcon1 -= contract('ka,ka->', tmp2, tmp) + + # + tmp = contract("klcd,ijcd->ijkl", X2_C, Y2_A) + tmp = contract("ijkl,ijab->klab", tmp, X2_B) + self.Bcon1 += 0.5* contract('klab,klab->', tmp, ERI[o,o,v,v]) + + tmp = contract("ijab,ikbd->jkad", X2_B, Y2_A) + tmp = contract("jkad,klcd->jlac", tmp, X2_C) + self.Bcon1 += contract('jlac,jlac->',tmp, ERI[o,o,v,v]) + + tmp = contract("klcd,ikdb->licb", X2_C, Y2_A) + tmp = contract("licb,ijab->ljca", tmp, X2_B) + self.Bcon1 += contract('ljca,ljac->', tmp, ERI[o,o,v,v]) + + tmp = contract("ijab,klab->ijkl", X2_B, Y2_A) + tmp = contract("ijkl,klcd->ijcd", tmp, X2_C) + self.Bcon1 += 0.5* contract('ijcd,ijcd->',tmp, ERI[o,o,v,v]) + + tmp = contract("ijab,ijac->bc", X2_B, L[o,o,v,v]) + tmp = contract("bc,klcd->klbd", tmp, X2_C) + self.Bcon1 -= contract("klbd,klbd->", tmp, Y2_A) + tmp = contract("ijab,ikab->jk", X2_B, L[o,o,v,v]) + tmp = contract("jk,klcd->jlcd", tmp, X2_C) + self.Bcon1 -= contract("jlcd,jlcd->", tmp, Y2_A) + tmp = contract("ikbc,klcd->ilbd", L[o,o,v,v], X2_C) + tmp = contract("ilbd,ijab->jlad", tmp, X2_B) + self.Bcon1 -= contract("jlad,jlad->", tmp, Y2_A) + tmp = contract("ijab,jlbc->ilac", X2_B, Y2_A) + tmp = contract("ilac,klcd->ikad", tmp, X2_C) + self.Bcon1 -= contract("ikad,ikad->", tmp, L[o,o,v,v]) + tmp = contract("klca,klcd->ad", L[o,o,v,v], X2_C) + tmp = contract("ad,ijdb->ijab", tmp, Y2_A) + self.Bcon1 -= contract("ijab,ijab->", tmp, X2_B) + tmp = contract("kicd,klcd->il",L[o,o,v,v], X2_C) + tmp = contract("ijab,il->ljab", X2_B, tmp) + self.Bcon1 -= contract("ljab,ljab->", tmp, Y2_A) + + tmp = contract("klcd,ikac->lida", X2_C, Y2_A) + tmp = contract("lida,jlbd->ijab", tmp, L[o,o,v,v]) + self.Bcon1 += 2.0* contract("ijab,ijab->", tmp, X2_B) + + # + tmp = 2.0* contract("jkbc,kc->jb", X2_C, Y1_A) + tmp -= contract("jkcb,kc->jb", X2_C, Y1_A) + tmp = contract('ijab,jb->ia', L[o,o,v,v], tmp) + self.Bcon1 += contract("ia,ia->", tmp, X1_B) + + tmp = contract("jkbc,jkba->ca", X2_C, L[o,o,v,v]) + tmp = contract("ia,ca->ic", X1_B, tmp) + self.Bcon1 -= contract("ic,ic->", tmp, Y1_A) + + tmp = contract("jkbc,jibc->ki", X2_C, L[o,o,v,v]) + tmp = contract("ki,ia->ka", tmp, X1_B) + self.Bcon1 -= contract("ka,ka->", tmp, Y1_A) + + # + tmp = contract("klcd,lkdb->cb", X2_C, Y2_A) + tmp = contract("jb,cb->jc", X1_B, tmp) + self.Bcon1 -= contract("jc,jc->", tmp, hbar.Hov) + + tmp = contract("klcd,ljdc->kj", X2_C, Y2_A) + tmp = contract("kj,jb->kb", tmp, X1_B) + self.Bcon1 -= contract("kb,kb->", tmp, hbar.Hov) + + tmp = contract('lkda,klcd->ac', Y2_A, X2_C) + tmp2 = contract('jb,ajcb->ac', X1_B, hbar.Hvovv) + self.Bcon1 += 2.0* contract('ac,ac->', tmp, tmp2) + + tmp = contract('lkda,klcd->ac', Y2_A, X2_C) + tmp2 = contract('jb,ajbc->ac', X1_B, hbar.Hvovv) + self.Bcon1 -= contract('ac,ac->', tmp, tmp2) + + tmp = contract('jb,ljda->lbda', X1_B, Y2_A) + tmp2 = 2.0* contract('klcd,akbc->ldab', X2_C, hbar.Hvovv) + tmp2 -= contract('klcd,akcb->ldab', X2_C, hbar.Hvovv) + self.Bcon1 += contract('lbda,ldab->', tmp, tmp2) + + tmp = contract('ia,fkba->fkbi', X1_B, hbar.Hvovv) + tmp = contract('fkbi,jifc->kjbc', tmp, Y2_A) + self.Bcon1 -= contract('jkbc,kjbc->', X2_C, tmp) + + tmp = contract('ia,fjac->fjic', X1_B, hbar.Hvovv) + tmp = contract('fjic,ikfb->jkbc', tmp, Y2_A) + self.Bcon1 -= contract('jkbc,jkbc->', X2_C, tmp) + + tmp = contract('ia,jkfa->jkfi', X1_B, Y2_A) + tmp2 = contract('jkbc,fibc->jkfi', X2_C, hbar.Hvovv) + self.Bcon1 -= contract('jkfi,jkfi->', tmp2, tmp) + + tmp = contract('jb,kjib->ki', X1_B, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_C, Y2_A) + self.Bcon1 -= 2.0*contract('ki,ki->', tmp, tmp2) + + tmp = contract('jb,jkib->ki', X1_B, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_C, Y2_A) + self.Bcon1 += contract('ki,ki->', tmp, tmp2) + + tmp = 2.0* contract('jkic,klcd->jild', hbar.Hooov, X2_C) + tmp -= contract('kjic,klcd->jild', hbar.Hooov, X2_C) + tmp = contract('jild,jb->bild', tmp, X1_B) + self.Bcon1 -= contract('bild,ilbd->', tmp, Y2_A) + + tmp = contract('ia,jkna->jkni', X1_B, hbar.Hooov) + tmp2 = contract('jkbc,nibc->jkni', X2_C, Y2_A) + self.Bcon1 += contract('jkni,jkni->', tmp2, tmp) + + tmp = contract('ia,nkab->nkib', X1_B, Y2_A) + tmp = contract('jkbc,nkib->jnic', X2_C, tmp) + self.Bcon1 += contract('jnic,ijnc->', tmp, hbar.Hooov) + + tmp = contract('ia,nkba->nkbi', X1_B, Y2_A) + tmp = contract('jkbc,nkbi->jnci', X2_C, tmp) + self.Bcon1 += contract('jnci,jinc->', tmp, hbar.Hooov) + + # + #swapaxes + tmp = 2.0* contract("jkbc,kc->jb", X2_B, Y1_A) + tmp -= contract("jkcb,kc->jb", X2_B, Y1_A) + tmp = contract('ijab,jb->ia', L[o,o,v,v], tmp) + self.Bcon1 += contract("ia,ia->", tmp, X1_C) + + tmp = contract("jkbc,jkba->ca", X2_B, L[o,o,v,v]) + tmp = contract("ia,ca->ic", X1_C, tmp) + self.Bcon1 -= contract("ic,ic->", tmp, Y1_A) + + tmp = contract("jkbc,jibc->ki", X2_B, L[o,o,v,v]) + tmp = contract("ki,ia->ka", tmp, X1_C) + self.Bcon1 -= contract("ka,ka->", tmp, Y1_A) + + # + tmp = contract("klcd,lkdb->cb", X2_B, Y2_A) + tmp = contract("jb,cb->jc", X1_C, tmp) + self.Bcon1 -= contract("jc,jc->", tmp, hbar.Hov) + + tmp = contract("klcd,ljdc->kj", X2_B, Y2_A) + tmp = contract("kj,jb->kb", tmp, X1_C) + self.Bcon1 -= contract("kb,kb->", tmp, hbar.Hov) + + tmp = contract('lkda,klcd->ac', Y2_A, X2_B) + tmp2 = contract('jb,ajcb->ac', X1_C, hbar.Hvovv) + self.Bcon1 += 2.0* contract('ac,ac->', tmp, tmp2) + + tmp = contract('lkda,klcd->ac', Y2_A, X2_B) + tmp2 = contract('jb,ajbc->ac', X1_C, hbar.Hvovv) + self.Bcon1 -= contract('ac,ac->', tmp, tmp2) + + tmp = contract('jb,ljda->lbda', X1_C, Y2_A) + + #swapaxes + tmp2 = 2.0* contract('klcd,akbc->ldab', X2_B, hbar.Hvovv) + tmp2 -= contract('klcd,akcb->ldab', X2_B, hbar.Hvovv) + self.Bcon1 += contract('lbda,ldab->', tmp, tmp2) + + tmp = contract('ia,fkba->fkbi', X1_C, hbar.Hvovv) + tmp = contract('fkbi,jifc->kjbc', tmp, Y2_A) + self.Bcon1 -= contract('jkbc,kjbc->', X2_B, tmp) + + tmp = contract('ia,fjac->fjic', X1_C, hbar.Hvovv) + tmp = contract('fjic,ikfb->jkbc', tmp, Y2_A) + self.Bcon1 -= contract('jkbc,jkbc->', X2_B, tmp) + + tmp = contract('ia,jkfa->jkfi', X1_C, Y2_A) + tmp2 = contract('jkbc,fibc->jkfi', X2_B, hbar.Hvovv) + self.Bcon1 -= contract('jkfi,jkfi->', tmp2, tmp) + + tmp = contract('jb,kjib->ki', X1_C, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_B, Y2_A) + self.Bcon1 -= 2.0* contract('ki,ki->', tmp, tmp2) + + tmp = contract('jb,jkib->ki', X1_C, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_B, Y2_A) + self.Bcon1 += contract('ki,ki->', tmp, tmp2) + + tmp = 2.0* contract('jkic,klcd->jild', hbar.Hooov, X2_B) + tmp -= contract('kjic,klcd->jild', hbar.Hooov, X2_B) + tmp = contract('jild,jb->bild', tmp, X1_C) + self.Bcon1 -= contract('bild,ilbd->', tmp, Y2_A) + + tmp = contract('ia,jkna->jkni', X1_C, hbar.Hooov) + tmp2 = contract('jkbc,nibc->jkni', X2_B, Y2_A) + self.Bcon1 += contract('jkni,jkni->', tmp2, tmp) + + tmp = contract('ia,nkab->nkib', X1_C, Y2_A) + tmp = contract('jkbc,nkib->jnic', X2_B, tmp) + self.Bcon1 += contract('jnic,ijnc->', tmp, hbar.Hooov) + + tmp = contract('ia,nkba->nkbi', X1_C, Y2_A) + tmp = contract('jkbc,nkbi->jnci', X2_B, tmp) + self.Bcon1 += contract('jnci,jinc->', tmp, hbar.Hooov) + + self.Bcon2 = 0 + # + tmp = -1.0* contract('jc,kb->jkcb', hbar.Hov, Y1_B) + tmp -= contract('jc,kb->jkcb', Y1_B, hbar.Hov) + + #swapaxes + tmp -= 2.0* contract('kjib,ic->jkcb',hbar.Hooov, Y1_B) + tmp += contract('jkib,ic->jkcb', hbar.Hooov, Y1_B) + + #swapaxes + tmp -= 2.0* contract('jkic,ib->jkcb', hbar.Hooov, Y1_B) + tmp += contract('kjic,ib->jkcb', hbar.Hooov, Y1_B) + + tmp += 2.0* contract('ajcb,ka->jkcb', hbar.Hvovv, Y1_B) + tmp -= contract('ajbc,ka->jkcb', hbar.Hvovv, Y1_B) + tmp += 2.0* contract('akbc,ja->jkcb', hbar.Hvovv, Y1_B) + tmp -= contract('akcb,ja->jkcb', hbar.Hvovv, Y1_B) + + tmp2 = contract('miae,me->ia', tmp, X1_A) + self.Bcon2 += contract('ia,ia->', tmp2, X1_C) + + # + tmp = -1.0* contract('janc,nkba->jckb', hbar.Hovov, Y2_B) + tmp -= contract('kanb,njca->jckb', hbar.Hovov, Y2_B) + tmp -= contract('jacn,nkab->jckb', hbar.Hovvo, Y2_B) + tmp -= contract('kabn,njac->jckb', hbar.Hovvo, Y2_B) + + # swapaxes? + tmp += 0.5*contract('fabc,jkfa->jckb', hbar.Hvvvv, Y2_B) + tmp += 0.5*contract('facb,kjfa->jckb', hbar.Hvvvv, Y2_B) + + # swapaxes? + tmp += 0.5* contract('kjin,nibc->jckb', hbar.Hoooo, Y2_B) + tmp += 0.5* contract('jkin,nicb->jckb', hbar.Hoooo, Y2_B) + tmp2 = contract('iema,me->ia', tmp, X1_A) + self.Bcon2 += contract('ia,ia->', tmp2, X1_C) + + tmp = contract('ijab,ijdb->ad', t2, Y2_B) + tmp = contract('ld,ad->la', X1_C, tmp) + tmp = contract('la,klca->kc', tmp, L[o,o,v,v]) + self.Bcon2 -= contract('kc,kc->', tmp, X1_A) + + tmp = contract('ijab,jlba->il', t2, Y2_B) + tmp2 = contract('kc,kicd->id', X1_A, L[o,o,v,v]) + tmp2 = contract('id,ld->il', tmp2, X1_C) + self.Bcon2 -= contract('il,il->', tmp2, tmp) + + tmp = contract('ijab,jkba->ik', t2, Y2_B) + tmp2 = contract('ld,lidc->ic', X1_C, L[o,o,v,v]) + tmp2 = contract('ic,kc->ik', tmp2, X1_A) + self.Bcon2 -= contract('ik,ik->', tmp2, tmp) + + tmp = contract('ijab,ijcb->ac', t2, Y2_B) + tmp = contract('kc,ac->ka', X1_A, tmp) + tmp2 = contract('ld,lkda->ka', X1_C, L[o,o,v,v]) + self.Bcon2 -= contract('ka,ka->', tmp2, tmp) + + # + tmp = contract("klcd,ijcd->ijkl", X2_C, Y2_B) + tmp = contract("ijkl,ijab->klab", tmp, X2_A) + self.Bcon2 += 0.5* contract('klab,klab->', tmp, ERI[o,o,v,v]) + + tmp = contract("ijab,ikbd->jkad", X2_A, Y2_B) + tmp = contract("jkad,klcd->jlac", tmp, X2_C) + self.Bcon2 += contract('jlac,jlac->', tmp, ERI[o,o,v,v]) + + tmp = contract("klcd,ikdb->licb", X2_C, Y2_B) + tmp = contract("licb,ijab->ljca", tmp, X2_A) + self.Bcon2 += contract('ljca,ljac->', tmp, ERI[o,o,v,v]) + + tmp = contract("ijab,klab->ijkl", X2_A, Y2_B) + tmp = contract("ijkl,klcd->ijcd", tmp, X2_C) + self.Bcon2 += 0.5* contract('ijcd,ijcd->', tmp, ERI[o,o,v,v]) + + tmp = contract("ijab,ijac->bc", X2_A, L[o,o,v,v]) + tmp = contract("bc,klcd->klbd", tmp, X2_C) + self.Bcon2 -= contract("klbd,klbd->", tmp, Y2_B) + tmp = contract("ijab,ikab->jk", X2_A, L[o,o,v,v]) + tmp = contract("jk,klcd->jlcd", tmp, X2_C) + self.Bcon2 -= contract("jlcd,jlcd->", tmp, Y2_B) + tmp = contract("ikbc,klcd->ilbd", L[o,o,v,v], X2_C) + tmp = contract("ilbd,ijab->jlad", tmp, X2_A) + self.Bcon2 -= contract("jlad,jlad->", tmp, Y2_B) + tmp = contract("ijab,jlbc->ilac", X2_A, Y2_B) + tmp = contract("ilac,klcd->ikad", tmp, X2_C) + self.Bcon2 -= contract("ikad,ikad->", tmp, L[o,o,v,v]) + tmp = contract("klca,klcd->ad", L[o,o,v,v], X2_C) + tmp = contract("ad,ijdb->ijab", tmp, Y2_B) + self.Bcon2 -= contract("ijab,ijab->", tmp, X2_A) + tmp = contract("kicd,klcd->il", L[o,o,v,v], X2_C) + tmp = contract("ijab,il->ljab", X2_A, tmp) + self.Bcon2 -= contract("ljab,ljab->", tmp, Y2_B) + + tmp = contract("klcd,ikac->lida", X2_C, Y2_B) + tmp = contract("lida,jlbd->ijab", tmp, L[o,o,v,v]) + self.Bcon2 += 2.0* contract("ijab,ijab->", tmp, X2_A) + + # + #swapaxes + tmp = 2.0* contract("jkbc,kc->jb", X2_C, Y1_B) + tmp -= contract("jkcb,kc->jb", X2_C, Y1_B) + tmp = contract('ijab,jb->ia', L[o,o,v,v], tmp) + self.Bcon2 += contract("ia,ia->", tmp, X1_A) + + tmp = contract("jkbc,jkba->ca", X2_C, L[o,o,v,v]) + tmp = contract("ia,ca->ic", X1_A, tmp) + self.Bcon2 -= contract("ic,ic->", tmp, Y1_B) + + tmp = contract("jkbc,jibc->ki", X2_C, L[o,o,v,v]) + tmp = contract("ki,ia->ka", tmp, X1_A) + self.Bcon2 -= contract("ka,ka->", tmp, Y1_B) + + # + tmp = contract("klcd,lkdb->cb", X2_C, Y2_B) + tmp = contract("jb,cb->jc", X1_A, tmp) + self.Bcon2 -= contract("jc,jc->", tmp, hbar.Hov) + + tmp = contract("klcd,ljdc->kj", X2_C, Y2_B) + tmp = contract("kj,jb->kb", tmp, X1_A) + self.Bcon2 -= contract("kb,kb->", tmp, hbar.Hov) + + tmp = contract('lkda,klcd->ac', Y2_B, X2_C) + tmp2 = contract('jb,ajcb->ac', X1_A, hbar.Hvovv) + self.Bcon2 += 2.0* contract('ac,ac->', tmp, tmp2) + + tmp = contract('lkda,klcd->ac', Y2_B, X2_C) + tmp2 = contract('jb,ajbc->ac', X1_A, hbar.Hvovv) + self.Bcon2 -= contract('ac,ac->', tmp, tmp2) + + tmp = contract('jb,ljda->lbda', X1_A, Y2_B) + + #swapaxes + tmp2 = 2.0* contract('klcd,akbc->ldab', X2_C, hbar.Hvovv) + tmp2 -= contract('klcd,akcb->ldab', X2_C, hbar.Hvovv) + self.Bcon2 += contract('lbda,ldab->', tmp, tmp2) + + tmp = contract('ia,fkba->fkbi', X1_A, hbar.Hvovv) + tmp = contract('fkbi,jifc->kjbc', tmp, Y2_B) + self.Bcon2 -= contract('jkbc,kjbc->', X2_C, tmp) + + tmp = contract('ia,fjac->fjic', X1_A, hbar.Hvovv) + tmp = contract('fjic,ikfb->jkbc', tmp, Y2_B) + self.Bcon2 -= contract('jkbc,jkbc->', X2_C, tmp) + + tmp = contract('ia,jkfa->jkfi', X1_A, Y2_B) + tmp2 = contract('jkbc,fibc->jkfi', X2_C, hbar.Hvovv) + self.Bcon2 -= contract('jkfi,jkfi->', tmp2, tmp) + + tmp = contract('jb,kjib->ki', X1_A, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_C, Y2_B) + self.Bcon2 -= 2.0* contract('ki,ki->', tmp, tmp2) + + tmp = contract('jb,jkib->ki', X1_A, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_C, Y2_B) + self.Bcon2 += contract('ki,ki->', tmp, tmp2) + + #swapaxes + tmp = 2.0* contract('jkic,klcd->jild', hbar.Hooov, X2_C) + tmp -= contract('kjic,klcd->jild', hbar.Hooov, X2_C) + tmp = contract('jild,jb->bild', tmp, X1_A) + self.Bcon2 -= contract('bild,ilbd->', tmp, Y2_B) + + tmp = contract('ia,jkna->jkni', X1_A, hbar.Hooov) + tmp2 = contract('jkbc,nibc->jkni', X2_C, Y2_B) + self.Bcon2 += contract('jkni,jkni->', tmp2, tmp) + + tmp = contract('ia,nkab->nkib', X1_A, Y2_B) + tmp = contract('jkbc,nkib->jnic', X2_C, tmp) + self.Bcon2 += contract('jnic,ijnc->', tmp, hbar.Hooov) + + tmp = contract('ia,nkba->nkbi', X1_A, Y2_B) + tmp = contract('jkbc,nkbi->jnci', X2_C,tmp) + self.Bcon2 += contract('jnci,jinc->', tmp, hbar.Hooov) + + # + # swapaxes + tmp = 2.0* contract("jkbc,kc->jb", X2_A, Y1_B) + tmp -= contract("jkcb,kc->jb", X2_A, Y1_B) + tmp = contract('ijab,jb->ia', L[o,o,v,v], tmp) + self.Bcon2 += contract("ia,ia->", tmp, X1_C) + + tmp = contract("jkbc,jkba->ca", X2_A, L[o,o,v,v]) + tmp = contract("ia,ca->ic", X1_C, tmp) + self.Bcon2 -= contract("ic,ic->", tmp, Y1_B) + + tmp = contract("jkbc,jibc->ki", X2_A, L[o,o,v,v]) + tmp = contract("ki,ia->ka", tmp, X1_C) + self.Bcon2 -= contract("ka,ka->", tmp, Y1_B) + + # + tmp = contract("klcd,lkdb->cb", X2_A, Y2_B) + tmp = contract("jb,cb->jc", X1_C, tmp) + self.Bcon2 -= contract("jc,jc->", tmp, hbar.Hov) + + tmp = contract("klcd,ljdc->kj", X2_A, Y2_B) + tmp = contract("kj,jb->kb", tmp, X1_C) + self.Bcon2 -= contract("kb,kb->",tmp, hbar.Hov) + + tmp = contract('lkda,klcd->ac', Y2_B, X2_A) + tmp2 = contract('jb,ajcb->ac', X1_C, hbar.Hvovv) + self.Bcon2 += 2.0* contract('ac,ac->', tmp, tmp2) + + tmp = contract('lkda,klcd->ac', Y2_B, X2_A) + tmp2 = contract('jb,ajbc->ac', X1_C, hbar.Hvovv) + self.Bcon2 -= contract('ac,ac->', tmp, tmp2) + + tmp = contract('jb,ljda->lbda', X1_C, Y2_B) + + #swapaxes + tmp2 = 2.0* contract('klcd,akbc->ldab', X2_A, hbar.Hvovv) + tmp2 -= contract('klcd,akcb->ldab', X2_A, hbar.Hvovv) + self.Bcon2 += contract('lbda,ldab->', tmp, tmp2) + + tmp = contract('ia,fkba->fkbi', X1_C, hbar.Hvovv) + tmp = contract('fkbi,jifc->kjbc', tmp, Y2_B) + self.Bcon2 -= contract('jkbc,kjbc->', X2_A, tmp) + + tmp = contract('ia,fjac->fjic', X1_C, hbar.Hvovv) + tmp = contract('fjic,ikfb->jkbc', tmp, Y2_B) + self.Bcon2 -= contract('jkbc,jkbc->', X2_A, tmp) + + tmp = contract('ia,jkfa->jkfi', X1_C, Y2_B) + tmp2 = contract('jkbc,fibc->jkfi', X2_A, hbar.Hvovv) + self.Bcon2 -= contract('jkfi,jkfi->', tmp2, tmp) + + tmp = contract('jb,kjib->ki', X1_C, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_A, Y2_B) + self.Bcon2 -= 2.0* contract('ki,ki->', tmp, tmp2) + + tmp = contract('jb,jkib->ki', X1_C, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_A, Y2_B) + self.Bcon2 += contract('ki,ki->', tmp, tmp2) + + tmp = 2.0* contract('jkic,klcd->jild', hbar.Hooov, X2_A) + tmp -= contract('kjic,klcd->jild', hbar.Hooov, X2_A) + tmp = contract('jild,jb->bild', tmp, X1_C) + self.Bcon2 -= contract('bild,ilbd->', tmp, Y2_B) + + tmp = contract('ia,jkna->jkni', X1_C, hbar.Hooov) + tmp2 = contract('jkbc,nibc->jkni', X2_A, Y2_B) + self.Bcon2 += contract('jkni,jkni->', tmp2, tmp) + + tmp = contract('ia,nkab->nkib', X1_C, Y2_B) + tmp = contract('jkbc,nkib->jnic', X2_A, tmp) + self.Bcon2 += contract('jnic,ijnc->', tmp, hbar.Hooov) + + tmp = contract('ia,nkba->nkbi', X1_C, Y2_B) + tmp = contract('jkbc,nkbi->jnci', X2_A, tmp) + self.Bcon2 += contract('jnci,jinc->', tmp, hbar.Hooov) + + self.Bcon3 = 0 + # <0|L1(C)[[Hbar(0),X1(A),X1(B)]]|0> + tmp = -1.0* contract('jc,kb->jkcb', hbar.Hov, Y1_C) + tmp -= contract('jc,kb->jkcb', Y1_C, hbar.Hov) + + #swapaxes + tmp -= 2.0* contract('kjib,ic->jkcb', hbar.Hooov, Y1_C) + tmp += contract('jkib,ic->jkcb', hbar.Hooov, Y1_C) + + #swapaxes + tmp -= 2.0* contract('jkic,ib->jkcb', hbar.Hooov, Y1_C) + tmp += contract('kjic,ib->jkcb', hbar.Hooov, Y1_C) + + #swapaxes + tmp += 2.0* contract('ajcb,ka->jkcb', hbar.Hvovv, Y1_C) + tmp -= contract('ajbc,ka->jkcb', hbar.Hvovv, Y1_C) + tmp += 2.0* contract('akbc,ja->jkcb', hbar.Hvovv, Y1_C) + tmp -= contract('akcb,ja->jkcb', hbar.Hvovv, Y1_C) + + tmp2 = contract('miae,me->ia', tmp, X1_A) + self.Bcon3 += contract('ia,ia->', tmp2, X1_B) + + # <0|L2(C)|[[Hbar(0),X1(A)],X1(B)]|0> + tmp = -1.0* contract('janc,nkba->jckb', hbar.Hovov, Y2_C) + tmp -= contract('kanb,njca->jckb', hbar.Hovov, Y2_C) + tmp -= contract('jacn,nkab->jckb', hbar.Hovvo, Y2_C) + tmp -= contract('kabn,njac->jckb', hbar.Hovvo, Y2_C) + + #swapaxes? + tmp += 0.5* contract('fabc,jkfa->jckb', hbar.Hvvvv, Y2_C) + tmp += 0.5* contract('facb,kjfa->jckb', hbar.Hvvvv, Y2_C) + + #swapaxes? + tmp += 0.5* contract('kjin,nibc->jckb', hbar.Hoooo, Y2_C) + tmp += 0.5* contract('jkin,nicb->jckb', hbar.Hoooo, Y2_C) + tmp2 = contract('iema,me->ia', tmp, X1_A) + self.Bcon3 += contract('ia,ia->', tmp2, X1_B) + + tmp = contract('ijab,ijdb->ad', t2, Y2_C) + tmp = contract('ld,ad->la', X1_B, tmp) + tmp = contract('la,klca->kc', tmp, L[o,o,v,v]) + self.Bcon3 -= contract('kc,kc->',tmp, X1_A) + + tmp = contract('ijab,jlba->il', t2, Y2_C) + tmp2 = contract('kc,kicd->id', X1_A, L[o,o,v,v]) + tmp2 = contract('id,ld->il', tmp2, X1_B) + self.Bcon3 -= contract('il,il->', tmp2, tmp) + + tmp = contract('ijab,jkba->ik', t2, Y2_C) + tmp2 = contract('ld,lidc->ic', X1_B, L[o,o,v,v]) + tmp2 = contract('ic,kc->ik', tmp2, X1_A) + self.Bcon3 -= contract('ik,ik->', tmp2, tmp) + + tmp = contract('ijab,ijcb->ac', t2, Y2_C) + tmp = contract('kc,ac->ka', X1_A, tmp) + tmp2 = contract('ld,lkda->ka', X1_B, L[o,o,v,v]) + self.Bcon3 -= contract('ka,ka->', tmp2, tmp) + + # <0|L2(C)[[Hbar(0),X2(A)],X2(B)]|0> + tmp = contract("klcd,ijcd->ijkl", X2_B, Y2_C) + tmp = contract("ijkl,ijab->klab", tmp, X2_A) + self.Bcon3 += 0.5* contract('klab,klab->', tmp, ERI[o,o,v,v]) + + tmp = contract("ijab,ikbd->jkad", X2_A, Y2_C) + tmp = contract("jkad,klcd->jlac", tmp, X2_B) + self.Bcon3 += contract('jlac,jlac->', tmp, ERI[o,o,v,v]) + + tmp = contract("klcd,ikdb->licb", X2_B, Y2_C) + tmp = contract("licb,ijab->ljca", tmp, X2_A) + self.Bcon3 += contract('ljca,ljac->', tmp, ERI[o,o,v,v]) + + tmp = contract("ijab,klab->ijkl", X2_A, Y2_C) + tmp = contract("ijkl,klcd->ijcd", tmp, X2_B) + self.Bcon3 += 0.5* contract('ijcd,ijcd->', tmp, ERI[o,o,v,v]) + + tmp = contract("ijab,ijac->bc", X2_A, L[o,o,v,v]) + tmp = contract("bc,klcd->klbd", tmp, X2_B) + self.Bcon3 -= contract("klbd,klbd->", tmp, Y2_C) + tmp = contract("ijab,ikab->jk", X2_A, L[o,o,v,v]) + tmp = contract("jk,klcd->jlcd", tmp, X2_B) + self.Bcon3 -= contract("jlcd,jlcd->", tmp, Y2_C) + tmp = contract("ikbc,klcd->ilbd", L[o,o,v,v], X2_B) + tmp = contract("ilbd,ijab->jlad", tmp, X2_A) + self.Bcon3 -= contract("jlad,jlad->", tmp, Y2_C) + tmp = contract("ijab,jlbc->ilac", X2_A, Y2_C) + tmp = contract("ilac,klcd->ikad", tmp, X2_B) + self.Bcon3 -= contract("ikad,ikad->", tmp, L[o,o,v,v]) + tmp = contract("klca,klcd->ad", L[o,o,v,v], X2_B) + tmp = contract("ad,ijdb->ijab", tmp, Y2_C) + self.Bcon3 -= contract("ijab,ijab->", tmp, X2_A) + tmp = contract("kicd,klcd->il", L[o,o,v,v], X2_B) + tmp = contract("ijab,il->ljab", X2_A, tmp) + self.Bcon3 -= contract("ljab,ljab->", tmp, Y2_C) + + tmp = contract("klcd,ikac->lida", X2_B, Y2_C) + tmp = contract("lida,jlbd->ijab", tmp, L[o,o,v,v]) + self.Bcon3 += 2.0* contract("ijab,ijab->", tmp, X2_A) + + # <0|L1(C)[[Hbar(0),X1(A)],X2(B)]]|0> + #swapaxes + tmp = 2.0 * contract("jkbc,kc->jb", X2_B, Y1_C) + tmp -= contract("jkcb,kc->jb", X2_B, Y1_C) + tmp = contract('ijab,jb->ia', L[o,o,v,v], tmp) + self.Bcon3 += contract("ia,ia->", tmp, X1_A) + + tmp = contract("jkbc,jkba->ca", X2_B, L[o,o,v,v]) + tmp = contract("ia,ca->ic", X1_A, tmp) + self.Bcon3 -= contract("ic,ic->", tmp, Y1_C) + + tmp = contract("jkbc,jibc->ki", X2_B, L[o,o,v,v]) + tmp = contract("ki,ia->ka", tmp, X1_A) + self.Bcon3 -= contract("ka,ka->", tmp, Y1_C) + + # <0|L2(C)[[Hbar(0),X1(A)],X2(B)]]|0> + tmp = contract("klcd,lkdb->cb", X2_B, Y2_C) + tmp = contract("jb,cb->jc", X1_A, tmp) + self.Bcon3 -= contract("jc,jc->", tmp, hbar.Hov) + + tmp = contract("klcd,ljdc->kj", X2_B, Y2_C) + tmp = contract("kj,jb->kb", tmp, X1_A) + self.Bcon3 -= contract("kb,kb->", tmp, hbar.Hov) + + tmp = contract('lkda,klcd->ac', Y2_C, X2_B) + tmp2 = contract('jb,ajcb->ac', X1_A, hbar.Hvovv) + self.Bcon3 += 2.0* contract('ac,ac->', tmp, tmp2) + + tmp = contract('lkda,klcd->ac', Y2_C, X2_B) + tmp2 = contract('jb,ajbc->ac', X1_A, hbar.Hvovv) + self.Bcon3 -= contract('ac,ac->', tmp, tmp2) + + tmp = contract('jb,ljda->lbda', X1_A, Y2_C) + + #swapaxes + tmp2 = 2.0* contract('klcd,akbc->ldab', X2_B, hbar.Hvovv) + tmp2 -= contract('klcd,akcb->ldab', X2_B, hbar.Hvovv) + self.Bcon3 += contract('lbda,ldab->', tmp, tmp2) + + tmp = contract('ia,fkba->fkbi', X1_A, hbar.Hvovv) + tmp = contract('fkbi,jifc->kjbc', tmp, Y2_C) + self.Bcon3 -= contract('jkbc,kjbc->', X2_B, tmp) + + tmp = contract('ia,fjac->fjic', X1_A, hbar.Hvovv) + tmp = contract('fjic,ikfb->jkbc', tmp, Y2_C) + self.Bcon3 -= contract('jkbc,jkbc->', X2_B, tmp) + + tmp = contract('ia,jkfa->jkfi', X1_A, Y2_C) + tmp2 = contract('jkbc,fibc->jkfi', X2_B, hbar.Hvovv) + self.Bcon3 -= contract('jkfi,jkfi->', tmp2, tmp) + + tmp = contract('jb,kjib->ki', X1_A, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_B, Y2_C) + self.Bcon3 -= 2.0* contract('ki,ki->', tmp, tmp2) + + tmp = contract('jb,jkib->ki', X1_A, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_B, Y2_C) + self.Bcon3 += contract('ki,ki->', tmp, tmp2) + + #swapaxes + tmp = 2.0* contract('jkic,klcd->jild', hbar.Hooov, X2_B) + tmp -= contract('kjic,klcd->jild', hbar.Hooov, X2_B) + tmp = contract('jild,jb->bild', tmp, X1_A) + self.Bcon3 -= contract('bild,ilbd->', tmp, Y2_C) + + tmp = contract('ia,jkna->jkni', X1_A, hbar.Hooov) + tmp2 = contract('jkbc,nibc->jkni', X2_B, Y2_C) + self.Bcon3 += contract('jkni,jkni->', tmp2, tmp) + + tmp = contract('ia,nkab->nkib', X1_A, Y2_C) + tmp = contract('jkbc,nkib->jnic', X2_B, tmp) + self.Bcon3 += contract('jnic,ijnc->', tmp, hbar.Hooov) + + tmp = contract('ia,nkba->nkbi', X1_A, Y2_C) + tmp = contract('jkbc,nkbi->jnci', X2_B, tmp) + self.Bcon3 += contract('jnci,jinc->', tmp, hbar.Hooov) + + # <0|L1(C)[[Hbar(0),X2(A)],X1(B)]]|0> + tmp = 2.0* contract("jkbc,kc->jb", X2_A, Y1_C) + tmp -= contract("jkcb,kc->jb", X2_A, Y1_C) + tmp = contract('ijab,jb->ia', L[o,o,v,v], tmp) + self.Bcon3 += contract("ia,ia->", tmp, X1_B) + + tmp = contract("jkbc,jkba->ca", X2_A, L[o,o,v,v]) + tmp = contract("ia,ca->ic", X1_B, tmp) + self.Bcon3 -= contract("ic,ic->", tmp, Y1_C) + + tmp = contract("jkbc,jibc->ki", X2_A, L[o,o,v,v]) + tmp = contract("ki,ia->ka", tmp, X1_B) + self.Bcon3 -= contract("ka,ka->", tmp, Y1_C) + + # <0|L1(C)[[Hbar(0),X2(A)],X1(B)]]|0> + tmp = contract("klcd,lkdb->cb", X2_A, Y2_C) + tmp = contract("jb,cb->jc", X1_B, tmp) + self.Bcon3 -= contract("jc,jc->", tmp, hbar.Hov) + + tmp = contract("klcd,ljdc->kj", X2_A, Y2_C) + tmp = contract("kj,jb->kb", tmp, X1_B) + self.Bcon3 -= contract("kb,kb->",tmp, hbar.Hov) + + tmp = contract('lkda,klcd->ac', Y2_C, X2_A) + tmp2 = contract('jb,ajcb->ac', X1_B, hbar.Hvovv) + self.Bcon3 += 2.0* contract('ac,ac->', tmp, tmp2) + + tmp = contract('lkda,klcd->ac', Y2_C, X2_A) + tmp2 = contract('jb,ajbc->ac', X1_B, hbar.Hvovv) + self.Bcon3 -= contract('ac,ac->', tmp, tmp2) + + tmp = contract('jb,ljda->lbda', X1_B, Y2_C) + + #swapaxes + tmp2 = 2.0* contract('klcd,akbc->ldab', X2_A, hbar.Hvovv) + tmp2 -= contract('klcd,akcb->ldab', X2_A, hbar.Hvovv) + self.Bcon3 += contract('lbda,ldab->', tmp, tmp2) + + tmp = contract('ia,fkba->fkbi', X1_B, hbar.Hvovv) + tmp = contract('fkbi,jifc->kjbc', tmp, Y2_C) + self.Bcon3 -= contract('jkbc,kjbc->', X2_A, tmp) + + tmp = contract('ia,fjac->fjic', X1_B, hbar.Hvovv) + tmp = contract('fjic,ikfb->jkbc', tmp, Y2_C) + self.Bcon3 -= contract('jkbc,jkbc->', X2_A, tmp) + + tmp = contract('ia,jkfa->jkfi', X1_B, Y2_C) + tmp2 = contract('jkbc,fibc->jkfi', X2_A, hbar.Hvovv) + self.Bcon3 -= contract('jkfi,jkfi->', tmp2, tmp) + + tmp = contract('jb,kjib->ki', X1_B, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_A, Y2_C) + self.Bcon3 -= 2.0*contract('ki,ki->', tmp, tmp2) + + tmp = contract('jb,jkib->ki', X1_B, hbar.Hooov) + tmp2 = contract('klcd,ilcd->ki', X2_A, Y2_C) + self.Bcon3 += contract('ki,ki->', tmp, tmp2) + + #swapaxes + tmp = 2.0* contract('jkic,klcd->jild', hbar.Hooov, X2_A) + tmp -= contract('kjic,klcd->jild', hbar.Hooov, X2_A) + tmp = contract('jild,jb->bild', tmp, X1_B) + self.Bcon3 -= contract('bild,ilbd->', tmp, Y2_C) + + tmp = contract('ia,jkna->jkni', X1_B, hbar.Hooov) + tmp2 = contract('jkbc,nibc->jkni', X2_A, Y2_C) + self.Bcon3 += contract('jkni,jkni->', tmp2, tmp) + + tmp = contract('ia,nkab->nkib', X1_B, Y2_C) + tmp = contract('jkbc,nkib->jnic', X2_A, tmp) + self.Bcon3 += contract('jnic,ijnc->', tmp, hbar.Hooov) + + tmp = contract('ia,nkba->nkbi', X1_B, Y2_C) + tmp = contract('jkbc,nkbi->jnci', X2_A, tmp) + self.Bcon3 += contract('jnci,jinc->', tmp, hbar.Hooov) + + self.hyper += self.Bcon1 + self.Bcon2 + self.Bcon3 + + return self.hyper + + def hyperpolar(self): + solver_start = time.time() + + ccpert_om1_X = self.ccpert_om1_X + ccpert_om2_X = self.ccpert_om2_X + ccpert_om_sum_X = self.ccpert_om_sum_X + + ccpert_om1_2nd_X = self.ccpert_om1_2nd_X + ccpert_om2_2nd_X = self.ccpert_om2_2nd_X + ccpert_om_sum_2nd_X = self.ccpert_om_sum_2nd_X + + ccpert_om1_Y = self.ccpert_om1_Y + ccpert_om2_Y = self.ccpert_om2_Y + ccpert_om_sum_Y = self.ccpert_om_sum_Y + + ccpert_om1_2nd_Y = self.ccpert_om1_2nd_Y + ccpert_om2_2nd_Y = self.ccpert_om2_2nd_Y + ccpert_om_sum_2nd_Y = self.ccpert_om_sum_2nd_Y + + hyper_AB_1st = np.zeros((3,3,3)) + hyper_AB_2nd = np.zeros((3,3,3)) + hyper_AB = np.zeros((3,3,3)) + + for a in range(0, 3): + pertkey_a = "MU_" + self.cart[a] + for b in range(0, 3): + pertkey_b = "MU_" + self.cart[b] + for c in range(0, 3): + pertkey_c = "MU_" + self.cart[c] + + hyper_AB_1st[a,b,c] = self.quadraticresp(pertkey_a, pertkey_b, pertkey_c, ccpert_om_sum_X[pertkey_a], ccpert_om1_X[pertkey_b], ccpert_om2_X[pertkey_c], ccpert_om_sum_Y[pertkey_a], ccpert_om1_Y[pertkey_b], ccpert_om2_Y[pertkey_c] ) + hyper_AB_2nd[a,b,c] = self.quadraticresp(pertkey_a, pertkey_b, pertkey_c, ccpert_om_sum_2nd_X[pertkey_a], ccpert_om1_2nd_X[pertkey_b], ccpert_om2_2nd_X[pertkey_c], ccpert_om_sum_2nd_Y[pertkey_a], ccpert_om1_2nd_Y[pertkey_b], ccpert_om2_2nd_Y[pertkey_c]) + hyper_AB[a,b,c] = (hyper_AB_1st[a,b,c] + hyper_AB_2nd[a,b,c] )/2 + + self.hyper_AB = hyper_AB + + print("\Beta_zxx = %10.12lf" %(hyper_AB[2,0,0])) + print("\Beta_xzx = %10.12lf" %(hyper_AB[0,2,0])) + print("\Beta_xxz = %10.12lf" %(hyper_AB[0,0,2])) + print("\Beta_zyy = %10.12lf" %(hyper_AB[2,1,1])) + print("\Beta_yzy = %10.12lf" %(hyper_AB[1,2,1])) + print("\Beta_yyz = %10.12lf" %(hyper_AB[1,1,2])) + print("\Beta_zzz = %10.12lf" %(hyper_AB[2,2,2])) + print("\n First Dipole Hyperpolarizability computed in %.3f seconds.\n" % (time.time() - solver_start)) + + def solve_right(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, max_diis=7, start_diis=1): solver_start = time.time() Dia = self.Dia @@ -338,6 +1775,72 @@ def solve_right(self, pertbar, omega, e_conv=1e-13, r_conv=1e-13, maxiter=200, m if niter >= start_diis: self.X1, self.X2 = diis.extrapolate(self.X1, self.X2) + def solve_left(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, max_diis=7, start_diis=1): + solver_start = time.time() + + Dia = self.Dia + Dijab = self.Dijab + + # initial guess + X1_guess = pertbar.Avo.T/(Dia + omega) + X2_guess = pertbar.Avvoo/(Dijab + omega) + #print("guess X1", X1_guess) + #print("guess X2", X2_guess) + #print("X1 used for inital Y1", self.X1) + #print("X2 used for initial Y2", self.X2) + + # initial guess + Y1 = 2.0 * X1_guess.copy() + Y2 = 4.0 * X2_guess.copy() + Y2 -= 2.0 * X2_guess.copy().swapaxes(2,3) + #print("initial Y1", Y1) + #print("inital Y2", Y2) + # need to understand this + pseudo = self.pseudoresponse(pertbar, Y1, Y2) + print(f"Iter {0:3d}: CC Pseudoresponse = {pseudo.real:.15f} dP = {pseudo.real:.5E}") + + diis = helper_diis(Y1, Y2, max_diis) + contract = self.ccwfn.contract + + self.Y1 = Y1 + self.Y2 = Y2 + + # uses updated X1 and X2 + self.im_Y1 = self.in_Y1(pertbar, self.X1, self.X2) + self.im_Y2 = self.in_Y2(pertbar, self.X1, self.X2) + print("Im_y1 density", np.sqrt(np.einsum('ia, ia ->', self.im_Y1, self.im_Y1))) + #print("im_Y1", self.im_Y1) + #print("im_Y2", self.im_Y2) + for niter in range(1, maxiter+1): + pseudo_last = pseudo + + Y1 = self.Y1 + Y2 = self.Y2 + + r1 = self.r_Y1(pertbar, omega) + r2 = self.r_Y2(pertbar, omega) + + self.Y1 += r1/(Dia + omega) + self.Y2 += r2/(Dijab + omega) + + rms = contract('ia,ia->', np.conj(r1/(Dia+omega)), r1/(Dia+omega)) + #print("rms for r1/energy density", rms) + rms += contract('ijab,ijab->', np.conj(r2/(Dijab+omega)), r2/(Dijab+omega)) + rms = np.sqrt(rms) + + # need to undertsand this + pseudo = self.pseudoresponse(pertbar, self.Y1, self.Y2) + pseudodiff = np.abs(pseudo - pseudo_last) + print(f"Iter {niter:3d}: CC Pseudoresponse = {pseudo.real:.15f} dP = {pseudodiff:.5E} rms = {rms.real:.5E}") + + if ((abs(pseudodiff) < e_conv) and abs(rms) < r_conv): + print("\nPerturbed wave function converged in %.3f seconds.\n" % (time.time() - solver_start)) + return self.Y1, self.Y2 , pseudo + + diis.add_error_vector(self.Y1, self.Y2) + if niter >= start_diis: + self.Y1, self.Y2 = diis.extrapolate(self.Y1, self.Y2) + def r_X1(self, pertbar, omega): contract = self.contract o = self.ccwfn.o @@ -391,14 +1894,320 @@ def r_X2(self, pertbar, omega): return r_X2 + def in_Y1(self, pertbar, X1, X2): + contract = self.contract + o = self.ccwfn.o + v = self.ccwfn.v + #X1 = self.X1 + #X2 = self.X2 + Y1 = self.Y1 + + Y2 = self.Y2 + l1 = self.cclambda.l1 + l2 = self.cclambda.l2 + cclambda = self.cclambda + t2 = self.ccwfn.t2 + hbar = self.hbar + L = self.H.L + + # Inhomogenous terms appearing in Y1 equations + #seems like these imhomogenous terms are computing at the beginning and not involve in the iteration itself + #may require moving to a sperate function + + # good + r_Y1 = 2.0 * pertbar.Aov.copy() + # good + r_Y1 -= contract('im,ma->ia', pertbar.Aoo, l1) + r_Y1 += contract('ie,ea->ia', l1, pertbar.Avv) + # + r_Y1 += contract('imfe,feam->ia', l2, pertbar.Avvvo) + + #can combine the next two to swapaxes type contraction + r_Y1 -= 0.5 * contract('ienm,mnea->ia', pertbar.Aovoo, l2) + r_Y1 -= 0.5 * contract('iemn,mnae->ia', pertbar.Aovoo, l2) + + # good + r_Y1 += 2.0 * contract('imae,me->ia', L[o,o,v,v], X1) + + # + tmp = -1.0 * contract('ma,ie->miae', hbar.Hov, l1) + tmp -= contract('ma,ie->miae', l1, hbar.Hov) + tmp -= 2.0 * contract('mina,ne->miae', hbar.Hooov, l1) + + #double check this one + tmp += contract('imna,ne->miae', hbar.Hooov, l1) + + #can combine the next two to swapaxes type contraction + tmp -= 2.0 * contract('imne,na->miae', hbar.Hooov, l1) + tmp += contract('mine,na->miae', hbar.Hooov, l1) + + #can combine the next two to swapaxes type contraction + tmp += 2.0 * contract('fmae,if->miae', hbar.Hvovv, l1) + tmp -= contract('fmea,if->miae', hbar.Hvovv, l1) + + #can combine the next two to swapaxes type contraction + tmp += 2.0 * contract('fiea,mf->miae', hbar.Hvovv, l1) + tmp -= contract('fiae,mf->miae', hbar.Hvovv, l1) + r_Y1 += contract('miae,me->ia', tmp, X1) + + # good + + #can combine the next two to swapaxes type contraction + tmp = 2.0 * contract('mnef,nf->me', X2, l1) + tmp -= contract('mnfe,nf->me', X2, l1) + r_Y1 += contract('imae,me->ia', L[o,o,v,v], tmp) + #print("Goo denisty", np.sqrt(np.einsum('ij, ij ->', cclambda.build_Goo(X2, L[o,o,v,v]), cclambda.build_Goo(X2, L[o,o,v,v])))) + #print("l1 density", np.sqrt(np.einsum('ia, ia ->', l1, l1))) + r_Y1 -= contract('ni,na->ia', cclambda.build_Goo(X2, L[o,o,v,v]), l1) + r_Y1 += contract('ie,ea->ia', l1, cclambda.build_Gvv(L[o,o,v,v], X2)) + + # good + + # can reorganize thesenext four to two swapaxes type contraction + tmp = -1.0 * contract('nief,mfna->iema', l2, hbar.Hovov) + tmp -= contract('ifne,nmaf->iema', hbar.Hovov, l2) + tmp -= contract('inef,mfan->iema', l2, hbar.Hovvo) + tmp -= contract('ifen,nmfa->iema', hbar.Hovvo, l2) + + #can combine the next two to swapaxes type contraction + tmp += 0.5 * contract('imfg,fgae->iema', l2, hbar.Hvvvv) + tmp += 0.5 * contract('imgf,fgea->iema', l2, hbar.Hvvvv) + + #can combine the next two to swapaxes type contraction + tmp += 0.5 * contract('imno,onea->iema', hbar.Hoooo, l2) + tmp += 0.5 * contract('mino,noea->iema', hbar.Hoooo, l2) + r_Y1 += contract('iema,me->ia', tmp, X1) + + #contains regular Gvv as well as Goo, think about just calling it from cclambda instead of generating it + tmp = contract('nb,fb->nf', X1, cclambda.build_Gvv(l2, t2)) + r_Y1 += contract('inaf,nf->ia', L[o,o,v,v], tmp) + tmp = contract('me,fa->mefa', X1, cclambda.build_Gvv(l2, t2)) + r_Y1 += contract('mief,mefa->ia', L[o,o,v,v], tmp) + tmp = contract('me,ni->meni', X1, cclambda.build_Goo(t2, l2)) + r_Y1 -= contract('meni,mnea->ia', tmp, L[o,o,v,v]) + tmp = contract('jf,nj->fn', X1, cclambda.build_Goo(t2, l2)) + r_Y1 -= contract('inaf,fn->ia', L[o,o,v,v], tmp) + + # + r_Y1 -= contract('mi,ma->ia', cclambda.build_Goo(X2, l2), hbar.Hov) + r_Y1 += contract('ie,ea->ia', hbar.Hov, cclambda.build_Gvv(l2, X2)) + tmp = contract('imfg,mnef->igne', l2, X2) + r_Y1 -= contract('igne,gnea->ia', tmp, hbar.Hvovv) + tmp = contract('mifg,mnef->igne', l2, X2) + r_Y1 -= contract('igne,gnae->ia', tmp, hbar.Hvovv) + tmp = contract('mnga,mnef->gaef', l2, X2) + r_Y1 -= contract('gief,gaef->ia', hbar.Hvovv, tmp) + + #can combine the next two to swapaxes type contraction + tmp = 2.0 * contract('gmae,mnef->ganf', hbar.Hvovv, X2) + tmp -= contract('gmea,mnef->ganf', hbar.Hvovv, X2) + r_Y1 += contract('nifg,ganf->ia', l2, tmp) + + #can combine the next two to swapaxes type contraction + r_Y1 -= 2.0 * contract('giea,ge->ia', hbar.Hvovv, cclambda.build_Gvv(X2, l2)) + r_Y1 += contract('giae,ge->ia', hbar.Hvovv, cclambda.build_Gvv(X2, l2)) + tmp = contract('oief,mnef->oimn', l2, X2) + r_Y1 += contract('oimn,mnoa->ia', tmp, hbar.Hooov) + tmp = contract('mofa,mnef->oane', l2, X2) + r_Y1 += contract('inoe,oane->ia', hbar.Hooov, tmp) + tmp = contract('onea,mnef->oamf', l2, X2) + r_Y1 += contract('miof,oamf->ia', hbar.Hooov, tmp) + + #can combine the next two to swapaxes type contraction + r_Y1 -= 2.0 * contract('mioa,mo->ia', hbar.Hooov, cclambda.build_Goo(X2, l2)) + r_Y1 += contract('imoa,mo->ia', hbar.Hooov, cclambda.build_Goo(X2, l2)) + + #can combine the next two to swapaxes type contraction + tmp = -2.0 * contract('imoe,mnef->ionf', hbar.Hooov, X2) + tmp += contract('mioe,mnef->ionf', hbar.Hooov, X2) + r_Y1 += contract('ionf,nofa->ia', tmp, l2) + + return r_Y1 + + def r_Y1(self, pertbar, omega): + contract = self.contract + o = self.ccwfn.o + v = self.ccwfn.v + Y1 = self.Y1 + Y2 = self.Y2 + l2 = self.cclambda.l2 + cclambda = self.cclambda + t2 = self.ccwfn.t2 + hbar = self.hbar + L = self.H.L + + #imhomogenous terms + r_Y1 = self.im_Y1.copy() + #homogenous terms appearing in Y1 equations + r_Y1 += omega * Y1 + r_Y1 += contract('ie,ea->ia', Y1, hbar.Hvv) + r_Y1 -= contract('im,ma->ia', hbar.Hoo, Y1) + r_Y1 += 2.0 * contract('ieam,me->ia', hbar.Hovvo, Y1) + r_Y1 -= contract('iema,me->ia', hbar.Hovov, Y1) + r_Y1 += contract('imef,efam->ia', Y2, hbar.Hvvvo) + r_Y1 -= contract('iemn,mnae->ia', hbar.Hovoo, Y2) + + #can combine the next two to swapaxes type contraction + r_Y1 -= 2.0 * contract('eifa,ef->ia', hbar.Hvovv, cclambda.build_Gvv(t2, Y2)) + r_Y1 += contract('eiaf,ef->ia', hbar.Hvovv, cclambda.build_Gvv(t2, Y2)) + + #can combine the next two to swapaxes type contraction + r_Y1 -= 2.0 * contract('mina,mn->ia', hbar.Hooov, cclambda.build_Goo(t2, Y2)) + r_Y1 += contract('imna,mn->ia', hbar.Hooov, cclambda.build_Goo(t2, Y2)) + + return r_Y1 + + def in_Y2(self, pertbar, X1, X2): + contract = self.contract + o = self.ccwfn.o + v = self.ccwfn.v + #X1 = self.X1 + #X2 = self.X2 + Y1 = self.Y1 + Y2 = self.Y2 + l1 = self.cclambda.l1 + l2 = self.cclambda.l2 + cclambda = self.cclambda + t2 = self.ccwfn.t2 + hbar = self.hbar + L = self.H.L + ERI = self.H.ERI + + # Inhomogenous terms appearing in Y2 equations + # good + + #next two turn to swapaxes contraction + r_Y2 = 2.0 * contract('ia,jb->ijab', l1, pertbar.Aov.copy()) + r_Y2 -= contract('ja,ib->ijab', l1, pertbar.Aov) + + # good + r_Y2 += contract('ijeb,ea->ijab', l2, pertbar.Avv) + r_Y2 -= contract('im,mjab->ijab', pertbar.Aoo, l2) + + # good + tmp = contract('me,ja->meja', X1, l1) + r_Y2 -= contract('mieb,meja->ijab', L[o,o,v,v], tmp) + tmp = contract('me,mb->eb', X1, l1) + r_Y2 -= contract('ijae,eb->ijab', L[o,o,v,v], tmp) + tmp = contract('me,ie->mi', X1, l1) + r_Y2 -= contract('mi,jmba->ijab', tmp, L[o,o,v,v]) + tmp = 2.0 *contract('me,jb->mejb', X1, l1) + r_Y2 += contract('imae,mejb->ijab', L[o,o,v,v], tmp) + + # + tmp = contract('me,ma->ea', X1, hbar.Hov) + r_Y2 -= contract('ijeb,ea->ijab', l2, tmp) + tmp = contract('me,ie->mi', X1, hbar.Hov) + r_Y2 -= contract('mi,jmba->ijab', tmp, l2) + tmp = contract('me,ijef->mijf', X1, l2) + r_Y2 -= contract('mijf,fmba->ijab', tmp, hbar.Hvovv) + tmp = contract('me,imbf->eibf', X1, l2) + r_Y2 -= contract('eibf,fjea->ijab', tmp, hbar.Hvovv) + tmp = contract('me,jmfa->ejfa', X1, l2) + r_Y2 -= contract('fibe,ejfa->ijab', hbar.Hvovv, tmp) + + #swapaxes contraction + tmp = 2.0 * contract('me,fmae->fa', X1, hbar.Hvovv) + tmp -= contract('me,fmea->fa', X1, hbar.Hvovv) + r_Y2 += contract('ijfb,fa->ijab', l2, tmp) + + #swapaxes contraction + tmp = 2.0 * contract('me,fiea->mfia', X1, hbar.Hvovv) + tmp -= contract('me,fiae->mfia', X1, hbar.Hvovv) + r_Y2 += contract('mfia,jmbf->ijab', tmp, l2) + tmp = contract('me,jmna->ejna', X1, hbar.Hooov) + r_Y2 += contract('ineb,ejna->ijab', l2, tmp) + + tmp = contract('me,mjna->ejna', X1, hbar.Hooov) + r_Y2 += contract('nieb,ejna->ijab', l2, tmp) + tmp = contract('me,nmba->enba', X1, l2) + r_Y2 += contract('jine,enba->ijab', hbar.Hooov, tmp) + + #swapaxes + tmp = 2.0 * contract('me,mina->eina', X1, hbar.Hooov) + tmp -= contract('me,imna->eina', X1, hbar.Hooov) + r_Y2 -= contract('eina,njeb->ijab', tmp, l2) + + #swapaxes + tmp = 2.0 * contract('me,imne->in', X1, hbar.Hooov) + tmp -= contract('me,mine->in', X1, hbar.Hooov) + r_Y2 -= contract('in,jnba->ijab', tmp, l2) + + # + tmp = 0.5 * contract('ijef,mnef->ijmn', l2, X2) + r_Y2 += contract('ijmn,mnab->ijab', tmp, ERI[o,o,v,v]) + tmp = 0.5 * contract('ijfe,mnef->ijmn', ERI[o,o,v,v], X2) + r_Y2 += contract('ijmn,mnba->ijab', tmp, l2) + tmp = contract('mifb,mnef->ibne', l2, X2) + r_Y2 += contract('ibne,jnae->ijab', tmp, ERI[o,o,v,v]) + tmp = contract('imfb,mnef->ibne', l2, X2) + r_Y2 += contract('ibne,njae->ijab', tmp, ERI[o,o,v,v]) + tmp = contract('mjfb,mnef->jbne', l2, X2) + r_Y2 -= contract('jbne,inae->ijab', tmp, L[o,o,v,v]) + + #temp intermediate? + r_Y2 -= contract('in,jnba->ijab', cclambda.build_Goo(L[o,o,v,v], X2), l2) + r_Y2 += contract('ijfb,af->ijab', l2, cclambda.build_Gvv(X2, L[o,o,v,v])) + r_Y2 += contract('ijae,be->ijab', L[o,o,v,v], cclambda.build_Gvv(X2, l2)) + r_Y2 -= contract('imab,jm->ijab', L[o,o,v,v], cclambda.build_Goo(l2, X2)) + tmp = contract('nifb,mnef->ibme', l2, X2) + r_Y2 -= contract('ibme,mjea->ijab', tmp, L[o,o,v,v]) + tmp = 2.0 * contract('njfb,mnef->jbme', l2, X2) + r_Y2 += contract('imae,jbme->ijab', L[o,o,v,v], tmp) + +# r_Y2 = r_Y2 + r_Y2.swapaxes(0,1).swapaxes(2,3) + + return r_Y2 + + def r_Y2(self, pertbar, omega): + contract = self.contract + o = self.ccwfn.o + v = self.ccwfn.v + Y1 = self.Y1 + Y2 = self.Y2 + l1 = self.cclambda.l1 + l2 = self.cclambda.l2 + cclambda = self.cclambda + t2 = self.ccwfn.t2 + hbar = self.hbar + L = self.H.L + ERI = self.H.ERI + + #inhomogenous terms + r_Y2 = self.im_Y2.copy() + + # Homogenous terms now! + # a factor of 0.5 because of the relation/comment just above + # and due to the fact that Y2_ijab = Y2_jiba + r_Y2 += 0.5 * omega * self.Y2.copy() + r_Y2 += 2.0 * contract('ia,jb->ijab', Y1, hbar.Hov) + r_Y2 -= contract('ja,ib->ijab', Y1, hbar.Hov) + r_Y2 += contract('ijeb,ea->ijab', Y2, hbar.Hvv) + r_Y2 -= contract('im,mjab->ijab', hbar.Hoo, Y2) + r_Y2 += 0.5 * contract('ijmn,mnab->ijab', hbar.Hoooo, Y2) + r_Y2 += 0.5 * contract('ijef,efab->ijab', Y2, hbar.Hvvvv) + r_Y2 += 2.0 * contract('ie,ejab->ijab', Y1, hbar.Hvovv) + r_Y2 -= contract('ie,ejba->ijab', Y1, hbar.Hvovv) + r_Y2 -= 2.0 * contract('mb,jima->ijab', Y1, hbar.Hooov) + r_Y2 += contract('mb,ijma->ijab', Y1, hbar.Hooov) + r_Y2 += 2.0 * contract('ieam,mjeb->ijab', hbar.Hovvo, Y2) + r_Y2 -= contract('iema,mjeb->ijab', hbar.Hovov, Y2) + r_Y2 -= contract('mibe,jema->ijab', Y2, hbar.Hovov) + r_Y2 -= contract('mieb,jeam->ijab', Y2, hbar.Hovvo) + r_Y2 += contract('ijeb,ae->ijab', L[o,o,v,v], cclambda.build_Gvv(t2, Y2)) + r_Y2 -= contract('mi,mjab->ijab', cclambda.build_Goo(t2, Y2), L[o,o,v,v]) + + r_Y2 = r_Y2 + r_Y2.swapaxes(0,1).swapaxes(2,3) + + return r_Y2 + def pseudoresponse(self, pertbar, X1, X2): contract = self.ccwfn.contract polar1 = 2.0 * contract('ai,ia->', np.conj(pertbar.Avo), X1) polar2 = 2.0 * contract('ijab,ijab->', np.conj(pertbar.Avvoo), (2.0*X2 - X2.swapaxes(2,3))) - return -2.0*(polar1 + polar2) - - + return -2.0*(polar1 + polar2) + class pertbar(object): def __init__(self, pert, ccwfn): o = ccwfn.o diff --git a/pycc/ccwfn.py b/pycc/ccwfn.py index bce9abd..bbf2423 100644 --- a/pycc/ccwfn.py +++ b/pycc/ccwfn.py @@ -10,11 +10,11 @@ import time import numpy as np import torch -from .utils import helper_diis, cc_contract -from .hamiltonian import Hamiltonian -from .local import Local -from .cctriples import t_tjl, t3c_ijk, t3d_ijk, t3c_abc, t3d_abc -from .lccwfn import lccwfn +from utils import helper_diis, cc_contract +from hamiltonian import Hamiltonian +from local import Local +from cctriples import t_tjl, t3c_ijk, t3d_ijk, t3c_abc, t3d_abc +from lccwfn import lccwfn class ccwfn(object): """ diff --git a/pycc/test_035_quadresp.py b/pycc/test_035_quadresp.py new file mode 100644 index 0000000..fa92af9 --- /dev/null +++ b/pycc/test_035_quadresp.py @@ -0,0 +1,58 @@ +""" +Test CCSD linear response functions. +""" + +# Import package, test suite, and other packages as needed +import psi4 + +from ccwfn import ccwfn +from cchbar import cchbar +from cclambda import cclambda +from ccdensity import ccdensity +from ccresponse import ccresponse + +geom = """ +O +H 1 1.8084679 +H 1 1.8084679 2 104.5 +units bohr +symmetry c1 +no_reorient +""" + +hf = """ +F 0.0000000 0.0000000 -0.087290008493927 +H 0.0000000 0.0000000 1.645494724632280 +units bohr +no_reorient +symmetry c1 +""" + +psi4.set_memory('2 GiB') +psi4.core.set_output_file('output.dat', False) +psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12 +}) +mol = psi4.geometry(hf) +rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + +e_conv = 1e-12 +r_conv = 1e-12 + +cc = ccwfn(rhf_wfn) +ecc = cc.solve_cc(e_conv, r_conv) +hbar = cchbar(cc) +cclambda = cclambda(cc, hbar) +lecc = cclambda.solve_lambda(e_conv, r_conv) +density = ccdensity(cc, cclambda) + +resp = ccresponse(density) + +omega1 = 0.0656 +omega2 = 0.0656 + +resp.pert_quadresp(omega1, omega2) +resp.hyperpolar() diff --git a/pycc/tests/test_035_quadresp.py b/pycc/tests/test_035_quadresp.py new file mode 100644 index 0000000..9e49b21 --- /dev/null +++ b/pycc/tests/test_035_quadresp.py @@ -0,0 +1,51 @@ +""" +Test CCSD linear response functions. +""" + +# Import package, test suite, and other packages as needed +import psi4 + +from ccwfn import ccwfn +from cchbar import cchbar +from cclambda import cclambda +from ccdensity import ccdensity + +geom = psi4.geometry(""" +O +H 1 1.8084679 +H 1 1.8084679 2 104.5 +units bohr +symmetry c1 +no_reorient +""") + +psi4.set_memory('2 GiB') +psi4.core.set_output_file('output.dat', False) +psi4.set_options({'basis': 'STO-3G', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12 +}) +mol = psi4.geometry(geom) +rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + +e_conv = 1e-12 +r_conv = 1e-12 + +cc = pycc.ccwfn(rhf_wfn) +ecc = cc.solve_cc(e_conv, r_conv) +hbar = pycc.cchbar(cc) +cclambda = pycc.cclambda(cc, hbar) +lecc = cclambda.solve_lambda(e_conv, r_conv) +density = pycc.ccdensity(cc, cclambda) + +resp = pycc.ccresponse(density) + +omega = 0.0656 +omega = 0.14238 + +resp.pert_quadresp(omega1, omega2) +resp.hyperpolar() From c5931b5ceed8d0201e0fcf52e8f512e365258677 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Wed, 17 Jan 2024 10:44:59 -0500 Subject: [PATCH 02/21] draft of ccresponse simualtion code --- pycc/ccdensity.py | 2 +- pycc/cclambda.py | 4 +- pycc/ccresponse.py | 45 ++++++++++++++------- pycc/ccwfn.py | 10 ++--- pycc/test_036_localfilter_quadresp.py | 58 +++++++++++++++++++++++++++ 5 files changed, 97 insertions(+), 22 deletions(-) create mode 100644 pycc/test_036_localfilter_quadresp.py diff --git a/pycc/ccdensity.py b/pycc/ccdensity.py index b5cb8b1..6665070 100644 --- a/pycc/ccdensity.py +++ b/pycc/ccdensity.py @@ -8,7 +8,7 @@ import time import numpy as np import torch -from cctriples import t3c_ijk, t3c_abc, l3_ijk, l3_abc, t3c_bc, l3_bc +from .cctriples import t3c_ijk, t3c_abc, l3_ijk, l3_abc, t3c_bc, l3_bc class ccdensity(object): """ diff --git a/pycc/cclambda.py b/pycc/cclambda.py index a15d70d..aad49ec 100644 --- a/pycc/cclambda.py +++ b/pycc/cclambda.py @@ -9,9 +9,9 @@ import numpy as np import time from opt_einsum import contract -from utils import helper_diis +from .utils import helper_diis import torch -from cctriples import t3c_ijk, l3_ijk, l3_ijk_alt +from .cctriples import t3c_ijk, l3_ijk, l3_ijk_alt class cclambda(object): diff --git a/pycc/ccresponse.py b/pycc/ccresponse.py index c1bea34..8c42728 100644 --- a/pycc/ccresponse.py +++ b/pycc/ccresponse.py @@ -7,7 +7,7 @@ import numpy as np import time -from utils import helper_diis +from .utils import helper_diis class ccresponse(object): """ @@ -1756,12 +1756,21 @@ def solve_right(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, m r1 = self.r_X1(pertbar, omega) r2 = self.r_X2(pertbar, omega) - self.X1 += r1/(Dia + omega) - self.X2 += r2/(Dijab + omega) + if self.ccwfn.local is not None: + inc1, inc2 = self.ccwfn.Local.filter_amps(r1, r2) + self.X1 += inc1 + self.X2 += inc2 - rms = contract('ia,ia->', np.conj(r1/(Dia+omega)), r1/(Dia+omega)) - rms += contract('ijab,ijab->', np.conj(r2/(Dijab+omega)), r2/(Dijab+omega)) - rms = np.sqrt(rms) + rms = contract('ia,ia->', np.conj(inc1/(Dia+omega)), inc1/(Dia+omega)) + rms += contract('ijab,ijab->', np.conj(inc2/(Dijab+omega)), inc2/(Dijab+omega)) + rms = np.sqrt(rms) + else: + self.X1 += r1/(Dia + omega) + self.X2 += r2/(Dijab + omega) + + rms = contract('ia,ia->', np.conj(r1/(Dia+omega)), r1/(Dia+omega)) + rms += contract('ijab,ijab->', np.conj(r2/(Dijab+omega)), r2/(Dijab+omega)) + rms = np.sqrt(rms) pseudo = self.pseudoresponse(pertbar, self.X1, self.X2) pseudodiff = np.abs(pseudo - pseudo_last) @@ -1820,14 +1829,22 @@ def solve_left(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, ma r1 = self.r_Y1(pertbar, omega) r2 = self.r_Y2(pertbar, omega) - self.Y1 += r1/(Dia + omega) - self.Y2 += r2/(Dijab + omega) - - rms = contract('ia,ia->', np.conj(r1/(Dia+omega)), r1/(Dia+omega)) - #print("rms for r1/energy density", rms) - rms += contract('ijab,ijab->', np.conj(r2/(Dijab+omega)), r2/(Dijab+omega)) - rms = np.sqrt(rms) - + if self.ccwfn.local is not None: + inc1, inc2 = self.ccwfn.Local.filter_amps(r1, r2) + self.Y1 += inc1 + self.Y2 += inc2 + + rms = contract('ia,ia->', np.conj(inc1/(Dia+omega)), inc1/(Dia+omega)) + rms += contract('ijab,ijab->', np.conj(inc2/(Dijab+omega)), inc2/(Dijab+omega)) + rms = np.sqrt(rms) + else: + self.Y1 += r1/(Dia + omega) + self.Y2 += r2/(Dijab + omega) + + rms = contract('ia,ia->', np.conj(r1/(Dia+omega)), r1/(Dia+omega)) + rms += contract('ijab,ijab->', np.conj(r2/(Dijab+omega)), r2/(Dijab+omega)) + rms = np.sqrt(rms) + # need to undertsand this pseudo = self.pseudoresponse(pertbar, self.Y1, self.Y2) pseudodiff = np.abs(pseudo - pseudo_last) diff --git a/pycc/ccwfn.py b/pycc/ccwfn.py index bbf2423..bce9abd 100644 --- a/pycc/ccwfn.py +++ b/pycc/ccwfn.py @@ -10,11 +10,11 @@ import time import numpy as np import torch -from utils import helper_diis, cc_contract -from hamiltonian import Hamiltonian -from local import Local -from cctriples import t_tjl, t3c_ijk, t3d_ijk, t3c_abc, t3d_abc -from lccwfn import lccwfn +from .utils import helper_diis, cc_contract +from .hamiltonian import Hamiltonian +from .local import Local +from .cctriples import t_tjl, t3c_ijk, t3d_ijk, t3c_abc, t3d_abc +from .lccwfn import lccwfn class ccwfn(object): """ diff --git a/pycc/test_036_localfilter_quadresp.py b/pycc/test_036_localfilter_quadresp.py new file mode 100644 index 0000000..48f4e59 --- /dev/null +++ b/pycc/test_036_localfilter_quadresp.py @@ -0,0 +1,58 @@ +""" +Test CCSD linear response functions. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +#from ccwfn import ccwfn +#from cchbar import cchbar +#from cclambda import cclambda +#from ccdensity import ccdensity +#from ccresponse import ccresponse + +geom = """ +O +H 1 1.8084679 +H 1 1.8084679 2 104.5 +units bohr +symmetry c1 +no_reorient +""" + +hf = """ +F 0.0000000 0.0000000 -0.087290008493927 +H 0.0000000 0.0000000 1.645494724632280 +units bohr +no_reorient +symmetry c1 +""" + +psi4.set_memory('2 GiB') +psi4.core.set_output_file('output.dat', False) +psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12 +}) +mol = psi4.geometry(hf) +rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + +e_conv = 1e-12 +r_conv = 1e-12 + +cc = pycc.ccwfn(rhf_wfn, model='CCSD',local='PNO', local_cutoff=1e-05,filter=True) +ecc = cc.solve_cc(e_conv, r_conv) +hbar = pycc.cchbar(cc) +cclambda = pycc.cclambda(cc, hbar) +lecc = cclambda.solve_lambda(e_conv, r_conv) +density = pycc.ccdensity(cc, cclambda) + +resp = pycc.ccresponse(density) + +omega1 = 0.0656 +omega2 = 0.0656 + +resp.pert_quadresp(omega1, omega2) +resp.hyperpolar() From f06543ee2c4c9493bc7f828e76befcaee1a9e1ed Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Mon, 8 Apr 2024 10:35:04 -0400 Subject: [PATCH 03/21] Added CPNO++ to local --- pycc/ccwfn.py | 2 +- pycc/local.py | 77 ++++++++++++++++++++++++++++--- pycc/tests/test_035_cpnoppcc.py | 80 +++++++++++++++++++++++++++++++++ 3 files changed, 151 insertions(+), 8 deletions(-) create mode 100644 pycc/tests/test_035_cpnoppcc.py diff --git a/pycc/ccwfn.py b/pycc/ccwfn.py index bce9abd..e308ae9 100644 --- a/pycc/ccwfn.py +++ b/pycc/ccwfn.py @@ -87,7 +87,7 @@ def __init__(self, scf_wfn, **kwargs): self.make_t3_density = kwargs.pop('make_t3_density', False) - valid_local_models = [None, 'PNO', 'PAO','PNO++'] + valid_local_models = [None, 'PNO', 'PAO','CPNO++','PNO++'] local = kwargs.pop('local', None) # TODO: case-protect this kwarg if local not in valid_local_models: diff --git a/pycc/local.py b/pycc/local.py index 64f735e..9e01847 100644 --- a/pycc/local.py +++ b/pycc/local.py @@ -49,6 +49,7 @@ class Local(object): _build_PAO(): build PAO orbital rotation tensors _build_PNO(): build PNO orbital rotation tensors _build_PNOpp(): build PNO++ orbital rotation tensors + _build_cPNOpp(): build cPNO++ orbital rotation tensors trans_integrals(): transform Fock matrix and ERI from the MO basis to a local basis Notes @@ -86,6 +87,8 @@ def _build(self): self._build_PAO() elif self.local.upper() in ["PNO++"]: self._build_PNOpp() + elif self.local.upper() in ["CPNO++"]: + self._build_cPNOpp() else: raise Exception("Not a valid local type!") @@ -326,14 +329,14 @@ def _build_PNO(self): # MP2 loop (optional) if self.it2_opt: self._MP2_loop(t2,self.H.F,self.H.ERI,self.H.L,Dijab) - + print("Computing PNOs. Canonical VMO dim: %d" % (self.nv)) #Constructing the PNO density D = self._pairdensity(t2) - + # Now obtain the Q and L - Q, L, eps, dim = self.QL_tensors(v,self.local,t2,D) + Q, L, eps, dim = self.QL_tensors(v,t2,D,local ='PNO') self.Q = Q # transform between canonical VMO and local spaces self.L = L # transform between local and semicanonical local spaces @@ -385,7 +388,7 @@ def _build_PNOpp(self): D = self._pert_pairdensity(t2) # Now obtain Q and L - Q, L, eps, dim = self.QL_tensors(v,self.local,t2,D) + Q, L, eps, dim = self.QL_tensors(v,t2,D,local ='PNO++') self.Q = Q # transform between canonical VMO and local spaces self.L = L # transform between local and semicanonical local spaces @@ -401,6 +404,66 @@ def _build_PNOpp(self): self.Q[ji] = self.Q[ij] self.L[ji] = self.L[ij] + def _build_cPNOpp(self): + """ + Perform MP2 loop in non-canonical MO basis, then construct pair density based on t2 amplitudes + then build MP2-level PNO + + Attributes + ---------- + Q: transform between canonical VMO and PNO++ spaces + L: transform between LPNO and semicanonical PNO++ spaces + dim: dimension of cPNO++ space + eps: semicananonical cPNO++ energies + + Notes + ----- + Equations from D'Cunha & Crawford 2021 [10.1021/acs.jctc.0c01086] + """ + v = slice(self.no, self.no+self.nv) + + self._build_PNO() + Q_PNO = self.Q + + self._build_PNOpp() + Q_PNOpp = self.Q + + self.Q = [] # truncated PNO list + self.dim = np.zeros((self.no*self.no), dtype=int) # dimension of local space for each pair + self.L = [] # semicanonical PNO list + self.eps = [] # approximated virtual orbital energies + T2_local = 0 + for ij in range(self.no*self.no): + i = ij // self.no + j = ij % self.no + + Q_comb = np.hstack((Q_PNO[ij], Q_PNOpp[ij])) + Q_ortho, trash = np.linalg.qr(Q_comb) + self.Q.append(Q_ortho) + # Compute semicanonical virtual space + F = Q_ortho.T @ self.H.F[v,v] @ Q_ortho # Fock matrix in local basis + eval, evec = np.linalg.eigh(F) + self.eps.append(eval) + self.L.append(evec) + self.dim[ij] = Q_ortho.shape[1] + T2_local += self.dim[ij] * self.dim[ij] + print(self.local + " dimension of pair %d = %d" % (ij, self.dim[ij])) + + print("Average " + self.local + " dimension: %2.3f" % (np.average(self.dim))) + print("T2 " + self.local + ": %d" % (T2_local)) + T2_full = (self.no*self.no)*(self.nv*self.nv) + print("T2 full: %d" % (T2_full)) + print("T2 Ratio: %3.12f" % (T2_local/T2_full)) + + #temporary way to generate make sure the phase factor of Q_ij and L_ij matches with Q_ji and L_ji + for i in range(self.no): + for j in range(0,i): + ij = i*self.no + j + ji = j*self.no + i + + self.Q[ji] = self.Q[ij] + self.L[ji] = self.L[ij] + def _pert_pairdensity(self,t2): ''' Constructing the approximated perturbed pair density @@ -483,7 +546,7 @@ def _pairdensity(self, t_ijab): D[ij] *= 0.5 return D - def QL_tensors(self,v,local,t2,D): + def QL_tensors(self,v,t2,D,local): # Create list for Q, L and eps Q_full = np.zeros_like(t2.copy().reshape((self.no*self.no,self.nv,self.nv))) Q = [] # truncated PNO list @@ -496,7 +559,7 @@ def QL_tensors(self,v,local,t2,D): for ij in range(self.no*self.no): i = ij // self.no j = ij % self.no - + # Compute local and truncate occ[ij], Q_full[ij] = np.linalg.eigh(D[ij]) if (occ[ij] < 0).any(): # Check for negative occupation numbers @@ -505,7 +568,7 @@ def QL_tensors(self,v,local,t2,D): Using absolute values - please check if your input is correct.".format(neg)) dim[ij] = (np.abs(occ[ij]) > self.cutoff).sum() Q.append(Q_full[ij, :, (self.nv-dim[ij]):]) - + # Compute semicanonical virtual space F = Q[ij].T @ self.H.F[v,v] @ Q[ij] # Fock matrix in local basis eval, evec = np.linalg.eigh(F) diff --git a/pycc/tests/test_035_cpnoppcc.py b/pycc/tests/test_035_cpnoppcc.py new file mode 100644 index 0000000..a265cb7 --- /dev/null +++ b/pycc/tests/test_035_cpnoppcc.py @@ -0,0 +1,80 @@ +""" +Test basic CPNO++-CCSD energy +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + + +def test_cpnopp_ccsd(): + """H2O CPNO++-CCSD Test""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 8}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + max_diis = 8 + + ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7, it2_opt=False) + eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) + + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) + + #Ruhee's ccsd_lpno code + esim = -0.22303320613504354 + lsim = -0.21890326836263854 + + assert (abs(esim - eccsd) < 1e-7) + assert (abs(lsim - lccsd) < 1e-7) + +def test_pnopp_ccsd_opt(): + """H2O CPNO++-CCSD with Optimized Initial T2 Amplitudes""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 8}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + max_diis = 8 + + ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7) + eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) + + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) + + #Comparing against simulation code + esim = -0.223866820104919 + lsim = -0.21966259490352782 + + assert (abs(esim - eccsd) < 1e-7) + assert (abs(lsim - lccsd) < 1e-7) From 2b3a61db9483f1d717b837b47e0f3cb7e1509d65 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Tue, 9 Apr 2024 13:17:44 -0400 Subject: [PATCH 04/21] Simulation code of quadratic response function --- pycc/ccresponse.py | 176 +++++++++++++++++----------- pycc/data/molecules.py | 23 +++- pycc/local.py | 35 ++++++ pycc/tests/test_037_quadresp.py | 93 +++++++++++++++ pycc/tests/test_038_sim_quadresp.py | 133 +++++++++++++++++++++ 5 files changed, 390 insertions(+), 70 deletions(-) create mode 100644 pycc/tests/test_037_quadresp.py create mode 100644 pycc/tests/test_038_sim_quadresp.py diff --git a/pycc/ccresponse.py b/pycc/ccresponse.py index 8c42728..3048dcd 100644 --- a/pycc/ccresponse.py +++ b/pycc/ccresponse.py @@ -17,10 +17,18 @@ class ccresponse(object): ------- linresp(): Compute a CC linear response function. + quadresp(): + Compute a CC quadratic response function. + hyperpolar(): + Compute a first electric dipole hyperpolarizability average. solve_right(): Solve the right-hand perturbed wave function equations. + solve_left(): + Solve the left-hand perturbed wave function equations. pertcheck(): Check first-order perturbed wave functions for all available perturbation operators. + pert_quadresp(): + Obtain the solutions of the right- and left-hand perturbed wave function equations for the CC quadritc response function. """ def __init__(self, ccdensity, omega1 = 0, omega2 = 0): @@ -93,6 +101,14 @@ def __init__(self, ccdensity, omega1 = 0, omega2 = 0): self.Dia = eps_occ.reshape(-1,1) - eps_vir self.Dijab = eps_occ.reshape(-1,1,1,1) + eps_occ.reshape(-1,1,1) - eps_vir.reshape(-1,1) - eps_vir + #HBAR-based denominators for simulation code + if self.ccwfn.local is not None: + self.eps_occ = np.diag(self.hbar.Hoo) + self.eps_vir = [] + for ij in range(self.ccwfn.no*self.ccwfn.no): + tmp = self.ccwfn.Local.Q[ij].T @ self.hbar.Hvv @ self.ccwfn.Local.Q[ij] + self.eps_vir.append(np.diag(self.ccwfn.Local.L[ij].T @ tmp @ self.ccwfn.Local.L[ij])) + def pertcheck(self, omega, e_conv=1e-13, r_conv=1e-13, maxiter=200, max_diis=8, start_diis=1): """ Build first-order perturbed wave functions for all available perturbations and return a dict of their converged pseudoresponse values. Primarily for testing purposes. @@ -293,7 +309,32 @@ def linresp(self, A, B, omega, e_conv=1e-13, r_conv=1e-13, maxiter=200, max_diis check.append(polar) def pert_quadresp(self, omega1, omega2, e_conv=1e-12, r_conv=1e-12, maxiter=200, max_diis=7, start_diis=1): + """ + Build first-order perturbed wave functions (left- and right-hand) for the electric dipole operator (Mu) + Parameters + ---------- + omega1: float + First external field frequency. + omega2: float + Second external field frequency. + e_conv : float + convergence condition for the pseudoresponse value (default if 1e-13) + r_conv : float + convergence condition for perturbed wave function rmsd (default if 1e-13) + maxiter : int + maximum allowed number of iterations of the wave function equations (default is 100) + max_diis : int + maximum number of error vectors in the DIIS extrapolation (default is 8; set to 0 to deactivate) + start_diis : int + earliest iteration to start DIIS extrapolations (default is 1) + + To Do + ----- + Organize to only compute the neccesary perturbed wave functions. For example, + """ + + #dictionaries for perturbed waves functions self.ccpert_om1_X = {} self.ccpert_om2_X = {} self.ccpert_om_sum_X = {} @@ -315,8 +356,7 @@ def pert_quadresp(self, omega1, omega2, e_conv=1e-12, r_conv=1e-12, maxiter=200, for axis in range(0, 3): pertkey = "MU_" + self.cart[axis] - #X_key = pertkey + "_" + f"{omega1:0.6f}" - + print("Solving right-hand perturbed wave function for omega1 %s:" % (pertkey)) self.ccpert_om1_X[pertkey] = self.solve_right(self.pertbar[pertkey], omega1, e_conv, r_conv, maxiter, max_diis, start_diis) @@ -331,12 +371,9 @@ def pert_quadresp(self, omega1, omega2, e_conv=1e-12, r_conv=1e-12, maxiter=200, print("Solving right-hand perturbed wave function for omega_sum %s:" % (pertkey)) self.ccpert_om_sum_X[pertkey] = self.solve_right(self.pertbar[pertkey], omega_sum, e_conv, r_conv, maxiter, max_diis, start_diis) - #print("solved X", self.ccpert_om_sum_X[pertkey][0]) print("Solving left-hand perturbed wave function for %s:" % (pertkey)) self.ccpert_om_sum_Y[pertkey] = self.solve_left(self.pertbar[pertkey], omega_sum, e_conv, r_conv, maxiter, max_diis, start_diis) - #self.ccpert_om_sum_Y[pertkey] = self.solve_left(self.pertbar[pertkey], omega_sum, self.ccpert_om_sum_X[pertkey][0], self.ccpert_om_sum_X[pertkey][1], e_conv, r_conv, maxiter, max_diis, start_diis) - #print("solved Y", self.ccpert_om_sum_Y[pertkey][0]) print("Solving right-hand perturbed wave function for -omega1 %s:" % (pertkey)) self.ccpert_om1_2nd_X[pertkey] = self.solve_right(self.pertbar[pertkey], -omega1, e_conv, r_conv, maxiter, max_diis, start_diis) @@ -356,23 +393,39 @@ def pert_quadresp(self, omega1, omega2, e_conv=1e-12, r_conv=1e-12, maxiter=200, print("Solving left-hand perturbed wave function for %s:" % (pertkey)) self.ccpert_om_sum_2nd_Y[pertkey] = self.solve_left(self.pertbar[pertkey], -omega_sum, e_conv, r_conv, maxiter, max_diis, start_diis) - # self.ccpert_om1_X = ccpert_om1_X - # self.ccpert_om2_X = ccpert_om2_X - # self.ccpert_om_sum_X =ccpert_om_sum_X - - # self.ccpert_om1_2nd_X = ccpert_om1_2nd_X - # self.ccpert_om2_2nd_X = ccpert_om2_2nd_X - # self.ccpert_om_sum_2nd_X = ccpert_om_sum_2nd_X - - # self.ccpert_om1_Y = ccpert_om1_Y - # self.ccpert_om2_Y = ccpert_om2_Y - # self.ccpert_om_sum_Y =ccpert_om_sum_Y - - # self.ccpert_om1_2nd_Y = ccpert_om1_2nd_Y - # self.ccpert_om2_2nd_Y = ccpert_om2_2nd_Y - # self.ccpert_om_sum_2nd_Y = ccpert_om_sum_2nd_Y - def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, ccpert_X_C, ccpert_Y_A, ccpert_Y_B, ccpert_Y_C): + """ + Calculate the CC quadratic-response function for one-electron perturbations A,B and C at field-frequency omega1(w1) and omega2(w2). + + The quadratic response function, <>w1, generally requires the following perturbed wave functions and frequencies: + A(-w1-w2), A*(w1+w2), B(w1), B*(-w1), C(w2), C*(w2) + + Parameters + ---------- + pertkey_a: string + String identifying the one-electron perturbation, A, along a cartesian axis + pertkey_b: string + String identifying the one-electron perturbation, B, along a cartesian axis + pertkey_c: string + String identifying the one-electron perturbation, C, along a cartesian axis + ccpert_X_A: + Perturbed right-hand wave functions for A along a cartesian axis + ccpert_X_B: + + Return + ------ + hyper: float + A value of the chosen quadratic response function corresponding to a specified cartesian direction. For example, Beta_xyz. + + Notes + ----- + Only the electric dipole is used for computing second harmonic generation (SHG) where w1 and w2 are identical and optical refractivity (OR) + where w1 = -w2 + + To Do + ----- + - Expand to include all avaiable one-electron perturbations + """ contract = self.contract o = self.ccwfn.o @@ -391,7 +444,7 @@ def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, X2_B = ccpert_X_B[1] Y1_B = ccpert_Y_B[0] Y2_B = ccpert_Y_B[1] - # Grab X and Y amplitudes corresponding to perturbation C + # Grab X and Y amplitudes corresponding to perturbation C, omega2 X1_C = ccpert_X_C[0] X2_C = ccpert_X_C[1] Y1_C = ccpert_Y_C[0] @@ -418,7 +471,7 @@ def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, self.LHX1X2 = 0.0 self.LHX2Y2 = 0.0 - # <0|L1(B)[A_bar, X1(C)]|0> good + # <0|L1(B)[A_bar, X1(C)]|0> tmp = contract('ia,ic->ac', Y1_B, X1_C) self.LAX += contract('ac,ac->',tmp, pertbar_A.Avv) tmp = contract('ia,ka->ik', Y1_B, X1_C) @@ -442,9 +495,9 @@ def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, tmp = contract('ijab,ijac->bc', Y2_B, X2_C) self.LAX += contract('bc,bc->', tmp, pertbar_A.Avv) - self.hyper += self.LAX # good + self.hyper += self.LAX - # <0|L1(C)[A_bar, X1(B)]|0> good + # <0|L1(C)[A_bar, X1(B)]|0> tmp = contract('ia,ic->ac', Y1_C, X1_B) self.LAX2 += contract('ac,ac->', tmp, pertbar_A.Avv) tmp = contract('ia,ka->ik', Y1_C, X1_B) @@ -469,7 +522,7 @@ def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, tmp = contract('ijab,ijac->bc', Y2_C, X2_B) self.LAX2 += contract('bc,bc->', tmp, pertbar_A.Avv) - self.hyper += self.LAX2 #good + self.hyper += self.LAX2 # <0|L1(A)[B_bar,X1(C)]|0> tmp = contract('ia,ic->ac', Y1_A, X1_C) @@ -517,7 +570,7 @@ def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, tmp = contract('ijab,ijac->bc', Y2_C, X2_A) self.LAX4 += contract('bc,bc->', tmp, pertbar_B.Avv) - self.hyper += self.LAX4 #good + self.hyper += self.LAX4 # <0|L1(A)[C_bar,X1(B)]|0> tmp = contract('ia,ic->ac', Y1_A, X1_B) @@ -565,7 +618,7 @@ def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, tmp = contract('ijab,ijac->bc', Y2_B, X2_A) self.LAX6 += contract('bc,bc->', tmp, pertbar_C.Avv) - self.hyper += self.LAX6 #good + self.hyper += self.LAX6 self.Fz1 = 0 self.Fz2 = 0 @@ -778,7 +831,6 @@ def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, tmp2 = contract('ld,lkda->ka', X1_C, L[o,o,v,v]) self.G -= contract('ka,ka->', tmp, tmp2) - # Goovv -> ERIoovv tmp = contract('ijab,klab->ijkl',X2_A, ERI[o,o,v,v]) tmp2 = contract('kc,ijcd->ijkd', X1_B, l2) tmp2 = contract('ld,ijkd->ijkl', X1_C, tmp2) @@ -931,7 +983,7 @@ def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, tmp2 = contract('ijab,klab->ijkl', X2_C, l2) self.G += contract('ijkl,ijkl->', tmp, tmp2) - self.hyper += self.G #good + self.hyper += self.G self.Bcon1 = 0 # @@ -1684,6 +1736,12 @@ def quadraticresp(self, pertkey_a, pertkey_b, pertkey_c, ccpert_X_A, ccpert_X_B, return self.hyper def hyperpolar(self): + """ + Return + ------ + Beta_avg: float + Hyperpolarizability average + """ solver_start = time.time() ccpert_om1_X = self.ccpert_om1_X @@ -1717,17 +1775,15 @@ def hyperpolar(self): hyper_AB_2nd[a,b,c] = self.quadraticresp(pertkey_a, pertkey_b, pertkey_c, ccpert_om_sum_2nd_X[pertkey_a], ccpert_om1_2nd_X[pertkey_b], ccpert_om2_2nd_X[pertkey_c], ccpert_om_sum_2nd_Y[pertkey_a], ccpert_om1_2nd_Y[pertkey_b], ccpert_om2_2nd_Y[pertkey_c]) hyper_AB[a,b,c] = (hyper_AB_1st[a,b,c] + hyper_AB_2nd[a,b,c] )/2 - self.hyper_AB = hyper_AB - - print("\Beta_zxx = %10.12lf" %(hyper_AB[2,0,0])) - print("\Beta_xzx = %10.12lf" %(hyper_AB[0,2,0])) - print("\Beta_xxz = %10.12lf" %(hyper_AB[0,0,2])) - print("\Beta_zyy = %10.12lf" %(hyper_AB[2,1,1])) - print("\Beta_yzy = %10.12lf" %(hyper_AB[1,2,1])) - print("\Beta_yyz = %10.12lf" %(hyper_AB[1,1,2])) - print("\Beta_zzz = %10.12lf" %(hyper_AB[2,2,2])) + Beta_avg = 0 + for i in range(0,3): + Beta_avg += (hyper_AB[2,i,i] + hyper_AB[i,2,i] + hyper_AB[i,i,2])/5 + + print("Beta_avg = %10.12lf" %(Beta_avg)) print("\n First Dipole Hyperpolarizability computed in %.3f seconds.\n" % (time.time() - solver_start)) + return Beta_avg + def solve_right(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, max_diis=7, start_diis=1): solver_start = time.time() @@ -1757,7 +1813,7 @@ def solve_right(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, m r2 = self.r_X2(pertbar, omega) if self.ccwfn.local is not None: - inc1, inc2 = self.ccwfn.Local.filter_amps(r1, r2) + inc1, inc2 = self.ccwfn.Local.filter_pertamps(r1, r2, self.eps_occ, self.eps_vir) self.X1 += inc1 self.X2 += inc2 @@ -1785,6 +1841,13 @@ def solve_right(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, m self.X1, self.X2 = diis.extrapolate(self.X1, self.X2) def solve_left(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, max_diis=7, start_diis=1): + ''' + Notes + ----- + The first-order lambda equations are partition into to two expressions: inhomogeneous (in_Y1 and in_Y2) and homogeneous terms (r_Y1 and r_Y2), + the inhomogenous terms contains only terms that are not changing over the iterative process of obtaining the solutions for these equations. Therefore, it is + computed only once and is called when solving for the homogenous terms. + ''' solver_start = time.time() Dia = self.Dia @@ -1793,18 +1856,12 @@ def solve_left(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, ma # initial guess X1_guess = pertbar.Avo.T/(Dia + omega) X2_guess = pertbar.Avvoo/(Dijab + omega) - #print("guess X1", X1_guess) - #print("guess X2", X2_guess) - #print("X1 used for inital Y1", self.X1) - #print("X2 used for initial Y2", self.X2) # initial guess Y1 = 2.0 * X1_guess.copy() Y2 = 4.0 * X2_guess.copy() Y2 -= 2.0 * X2_guess.copy().swapaxes(2,3) - #print("initial Y1", Y1) - #print("inital Y2", Y2) - # need to understand this + pseudo = self.pseudoresponse(pertbar, Y1, Y2) print(f"Iter {0:3d}: CC Pseudoresponse = {pseudo.real:.15f} dP = {pseudo.real:.5E}") @@ -1817,9 +1874,7 @@ def solve_left(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, ma # uses updated X1 and X2 self.im_Y1 = self.in_Y1(pertbar, self.X1, self.X2) self.im_Y2 = self.in_Y2(pertbar, self.X1, self.X2) - print("Im_y1 density", np.sqrt(np.einsum('ia, ia ->', self.im_Y1, self.im_Y1))) - #print("im_Y1", self.im_Y1) - #print("im_Y2", self.im_Y2) + for niter in range(1, maxiter+1): pseudo_last = pseudo @@ -1830,7 +1885,7 @@ def solve_left(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, ma r2 = self.r_Y2(pertbar, omega) if self.ccwfn.local is not None: - inc1, inc2 = self.ccwfn.Local.filter_amps(r1, r2) + inc1, inc2 = self.ccwfn.Local.filter_pertamps(r1, r2, self.eps_occ, self.eps_vir) self.Y1 += inc1 self.Y2 += inc2 @@ -1844,8 +1899,7 @@ def solve_left(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, ma rms = contract('ia,ia->', np.conj(r1/(Dia+omega)), r1/(Dia+omega)) rms += contract('ijab,ijab->', np.conj(r2/(Dijab+omega)), r2/(Dijab+omega)) rms = np.sqrt(rms) - - # need to undertsand this + pseudo = self.pseudoresponse(pertbar, self.Y1, self.Y2) pseudodiff = np.abs(pseudo - pseudo_last) print(f"Iter {niter:3d}: CC Pseudoresponse = {pseudo.real:.15f} dP = {pseudodiff:.5E} rms = {rms.real:.5E}") @@ -1915,8 +1969,6 @@ def in_Y1(self, pertbar, X1, X2): contract = self.contract o = self.ccwfn.o v = self.ccwfn.v - #X1 = self.X1 - #X2 = self.X2 Y1 = self.Y1 Y2 = self.Y2 @@ -1927,10 +1979,6 @@ def in_Y1(self, pertbar, X1, X2): hbar = self.hbar L = self.H.L - # Inhomogenous terms appearing in Y1 equations - #seems like these imhomogenous terms are computing at the beginning and not involve in the iteration itself - #may require moving to a sperate function - # good r_Y1 = 2.0 * pertbar.Aov.copy() # good @@ -1973,8 +2021,6 @@ def in_Y1(self, pertbar, X1, X2): tmp = 2.0 * contract('mnef,nf->me', X2, l1) tmp -= contract('mnfe,nf->me', X2, l1) r_Y1 += contract('imae,me->ia', L[o,o,v,v], tmp) - #print("Goo denisty", np.sqrt(np.einsum('ij, ij ->', cclambda.build_Goo(X2, L[o,o,v,v]), cclambda.build_Goo(X2, L[o,o,v,v])))) - #print("l1 density", np.sqrt(np.einsum('ia, ia ->', l1, l1))) r_Y1 -= contract('ni,na->ia', cclambda.build_Goo(X2, L[o,o,v,v]), l1) r_Y1 += contract('ie,ea->ia', l1, cclambda.build_Gvv(L[o,o,v,v], X2)) @@ -1995,7 +2041,6 @@ def in_Y1(self, pertbar, X1, X2): tmp += 0.5 * contract('mino,noea->iema', hbar.Hoooo, l2) r_Y1 += contract('iema,me->ia', tmp, X1) - #contains regular Gvv as well as Goo, think about just calling it from cclambda instead of generating it tmp = contract('nb,fb->nf', X1, cclambda.build_Gvv(l2, t2)) r_Y1 += contract('inaf,nf->ia', L[o,o,v,v], tmp) tmp = contract('me,fa->mefa', X1, cclambda.build_Gvv(l2, t2)) @@ -2055,7 +2100,6 @@ def r_Y1(self, pertbar, omega): #imhomogenous terms r_Y1 = self.im_Y1.copy() - #homogenous terms appearing in Y1 equations r_Y1 += omega * Y1 r_Y1 += contract('ie,ea->ia', Y1, hbar.Hvv) r_Y1 -= contract('im,ma->ia', hbar.Hoo, Y1) @@ -2090,7 +2134,6 @@ def in_Y2(self, pertbar, X1, X2): L = self.H.L ERI = self.H.ERI - # Inhomogenous terms appearing in Y2 equations # good #next two turn to swapaxes contraction @@ -2172,8 +2215,6 @@ def in_Y2(self, pertbar, X1, X2): tmp = 2.0 * contract('njfb,mnef->jbme', l2, X2) r_Y2 += contract('imae,jbme->ijab', L[o,o,v,v], tmp) -# r_Y2 = r_Y2 + r_Y2.swapaxes(0,1).swapaxes(2,3) - return r_Y2 def r_Y2(self, pertbar, omega): @@ -2192,10 +2233,7 @@ def r_Y2(self, pertbar, omega): #inhomogenous terms r_Y2 = self.im_Y2.copy() - # Homogenous terms now! - # a factor of 0.5 because of the relation/comment just above - # and due to the fact that Y2_ijab = Y2_jiba r_Y2 += 0.5 * omega * self.Y2.copy() r_Y2 += 2.0 * contract('ia,jb->ijab', Y1, hbar.Hov) r_Y2 -= contract('ja,ib->ijab', Y1, hbar.Hov) diff --git a/pycc/data/molecules.py b/pycc/data/molecules.py index 0ea22a1..8676250 100644 --- a/pycc/data/molecules.py +++ b/pycc/data/molecules.py @@ -26,6 +26,16 @@ symmetry c1 """ +# CO +co = """ +C 0.000000 0.000000 0.000000 +O 0.000000 0.000000 -2.132000 +noreorient +nocom +units au +symmetry c1 +""" + # Håkon's H2O test case h2o_hek=""" units au @@ -43,8 +53,8 @@ symmetry c1 units bohr """ -### Water molecule +### Water molecule h2o = """ O H 1 1.1 @@ -52,6 +62,15 @@ symmetry c1 """ +### Water molecule from Dalton +h2o_dalton = """ +O 0.000000000000 0.000000000000 0.000000000000 +H 0.000000000000 -0.756689920000 0.585891940000 +H 0.000000000000 0.756689920000 0.585891940000 +units Angstrom +symmetry c1 +""" + ### Water cluster ## Number of water molecules ## 2 @@ -269,10 +288,12 @@ moldict["He"] = he moldict["Be"] = be moldict["LiH"] = lih +moldict["CO"] = co moldict["H2"] = h2 moldict["H2O_HEK"] = h2o_hek moldict["H2O_Teach"] = h2o_tutorial moldict["H2O"] = h2o +moldict["H2O_D"] = h2o_dalton moldict["(H2O)_2"] = h2o_2 moldict["(H2O)_3"] = h2o_3 moldict["(H2O)_4"] = h2o_4 diff --git a/pycc/local.py b/pycc/local.py index 9e01847..80215d6 100644 --- a/pycc/local.py +++ b/pycc/local.py @@ -843,6 +843,41 @@ def filter_amps(self, r1, r2): return t1, t2 + def filter_pertamps(self, r1, r2, eps_occ, eps_vir): + no = self.no + nv = self.nv + dim = self.dim + + t1 = np.zeros((no,nv)) + for i in range(no): + ii = i * no + i + + X = self.Q[ii].T @ r1[i] + Y = self.L[ii].T @ X + + for a in range(dim[ii]): + Y[a] = Y[a]/(eps_occ[i] - eps_vir[ii][a]) + + X = self.L[ii] @ Y + t1[i] = self.Q[ii] @ X + + t2 = np.zeros((no,no,nv,nv)) + for ij in range(no*no): + i = ij // no + j = ij % no + + X = self.Q[ij].T @ r2[i,j] @ self.Q[ij] + Y = self.L[ij].T @ X @ self.L[ij] + + for a in range(dim[ij]): + for b in range(dim[ij]): + Y[a,b] = Y[a,b]/(eps_occ[i] + eps_occ[j] - eps_vir[ij][a] - eps_vir[ij][b]) + + X = self.L[ij] @ Y @ self.L[ij].T + t2[i,j] = self.Q[ij] @ X @ self.Q[ij].T + + return t1, t2 + def filter_res(self, r1, r2): no = self.no nv = self.nv diff --git a/pycc/tests/test_037_quadresp.py b/pycc/tests/test_037_quadresp.py new file mode 100644 index 0000000..be198b2 --- /dev/null +++ b/pycc/tests/test_037_quadresp.py @@ -0,0 +1,93 @@ +""" +Test CCSD quadratic response function. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + +def test_ccsd_SHG(): + """ H2O Second Harmonic Generation CCSD Test """ + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12}) + mol = psi4.geometry(moldict["H2O_D"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-12 + r_conv = 1e-12 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + + # SHG frequencies + omega1 = 0.0656 + omega2 = 0.0656 + + resp.pert_quadresp(omega1, omega2) + SHG = resp.hyperpolar() + + #Dalton + H2O_SHG = -19.7591180824 + + # Other system's Dalton SHG value, all validated #PyCC SHG values + #CO_SHG = -32.4314012752 #CO = -32.431401275449 + #HF_SHG = 10.23985062319 #HF = 10.239850624779 + #HCl_SHG = -21.348258444480 #HCl = -21.348258543702 + + assert(abs(SHG - H2O_SHG) < 1e-7) + +def test_ccsd_OR(): + """ CO Optical Refractivity CCSD Test """ + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12}) + mol = psi4.geometry(moldict["CO"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-12 + r_conv = 1e-12 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + + #OR frequencies + omega1 = -0.0656 + omega2 = 0.0656 + + resp.pert_quadresp(omega1, omega2) + OR = resp.hyperpolar() + + #Dalton + CO_OR = -29.3364710172 + + # Other system's Dalton OR value, all validated #PyCC OR values + #H2O_OR = -17.257079066 #H2O = 17.257079081719 + #HF_OR = 9.6113353644 #HF = 9.611335367514 + #HCl_OR = -19.34209144399 #HCl = -19.342091493471 + + assert(abs(OR - CO_OR) < 1e-7) diff --git a/pycc/tests/test_038_sim_quadresp.py b/pycc/tests/test_038_sim_quadresp.py new file mode 100644 index 0000000..b76b1a3 --- /dev/null +++ b/pycc/tests/test_038_sim_quadresp.py @@ -0,0 +1,133 @@ +""" +Test simulation code of CCSD quadratic response function. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + +def test_PNO_ccsd_SHG(): + """ H2O Second Harmonic Generation PNO-CCSD Test using local filter""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12}) + mol = psi4.geometry(moldict["H2O_D"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-12 + r_conv = 1e-12 + + cc = pycc.ccwfn(rhf_wfn, local="PNO", local_cutoff=0, filter=True) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + + # SHG frequencies + omega1 = 0.0656 + omega2 = 0.0656 + + resp.pert_quadresp(omega1, omega2) + SHG = resp.hyperpolar() + + #Dalton + H2O_SHG = -19.7591180824 + + ### Untruncated ### + # Other system's Dalton SHG value, all validated #PyCC SHG values + #CO_SHG = -32.4314012752 #CO = -32.431401275449 + #HF_SHG = 10.23985062319 #HF = 10.239850624779 + #HCl_SHG = -21.348258444480 #HCl = -21.348258543702 + + assert(abs(SHG - H2O_SHG) < 1e-7) + +def test_PNOpp_ccsd_OR(): + """ CO Optical Refractivity PNO++-CCSD Test using local filter""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12}) + mol = psi4.geometry(moldict["CO"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-12 + r_conv = 1e-12 + + cc = pycc.ccwfn(rhf_wfn, local="PNO++", local_cutoff = 1e-7, filter=True) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + + #OR frequencies + omega1 = -0.0656 + omega2 = 0.0656 + + resp.pert_quadresp(omega1, omega2) + OR = resp.hyperpolar() + + #Dalton + CO_OR = -29.3364710172 + + ### Untruncated ### + # Other system's Dalton OR value, all validated #PyCC OR values + #H2O_OR = -17.257079066 #H2O = 17.257079081719 + #HF_OR = 9.6113353644 #HF = 9.611335367514 + #HCl_OR = -19.34209144399 #HCl = -19.342091493471 + + #can only compare to itself + OR_sim = OR + assert(abs(OR - OR_sim) < 1e-12) + +def test_CPNOpp_ccsd_SHG(): + """ H2O Second Harmonic Generation CPNO++-CCSD Test using local filter""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12}) + mol = psi4.geometry(moldict["H2O_D"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-12 + r_conv = 1e-12 + + cc = pycc.ccwfn(rhf_wfn, local="CPNO++", local_cutoff = 1e-7, filter=True) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + + #SHG frequencies + omega1 = 0.0656 + omega2 = 0.0656 + + resp.pert_quadresp(omega1, omega2) + SHG = resp.hyperpolar() + + #can only compare to itself + SHG_sim = SHG + assert(abs(SHG - SHG_sim) < 1e-12) From 4f9fff9f5f2938e056ba5f63f053c990cb3b796b Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Tue, 9 Apr 2024 13:40:28 -0400 Subject: [PATCH 05/21] cleaned up a bit --- pycc/ccresponse.py | 4 ++-- pycc/local.py | 6 +++--- pycc/tests/test_038_sim_quadresp.py | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pycc/ccresponse.py b/pycc/ccresponse.py index 3048dcd..0fc0074 100644 --- a/pycc/ccresponse.py +++ b/pycc/ccresponse.py @@ -1813,7 +1813,7 @@ def solve_right(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, m r2 = self.r_X2(pertbar, omega) if self.ccwfn.local is not None: - inc1, inc2 = self.ccwfn.Local.filter_pertamps(r1, r2, self.eps_occ, self.eps_vir) + inc1, inc2 = self.ccwfn.Local.filter_pertamps(r1, r2, self.eps_occ, self.eps_vir, omega) self.X1 += inc1 self.X2 += inc2 @@ -1885,7 +1885,7 @@ def solve_left(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, ma r2 = self.r_Y2(pertbar, omega) if self.ccwfn.local is not None: - inc1, inc2 = self.ccwfn.Local.filter_pertamps(r1, r2, self.eps_occ, self.eps_vir) + inc1, inc2 = self.ccwfn.Local.filter_pertamps(r1, r2, self.eps_occ, self.eps_vir, omega) self.Y1 += inc1 self.Y2 += inc2 diff --git a/pycc/local.py b/pycc/local.py index 80215d6..81a2d7b 100644 --- a/pycc/local.py +++ b/pycc/local.py @@ -843,7 +843,7 @@ def filter_amps(self, r1, r2): return t1, t2 - def filter_pertamps(self, r1, r2, eps_occ, eps_vir): + def filter_pertamps(self, r1, r2, eps_occ, eps_vir, omega): no = self.no nv = self.nv dim = self.dim @@ -856,7 +856,7 @@ def filter_pertamps(self, r1, r2, eps_occ, eps_vir): Y = self.L[ii].T @ X for a in range(dim[ii]): - Y[a] = Y[a]/(eps_occ[i] - eps_vir[ii][a]) + Y[a] = Y[a]/(eps_occ[i] - eps_vir[ii][a] + omega) X = self.L[ii] @ Y t1[i] = self.Q[ii] @ X @@ -871,7 +871,7 @@ def filter_pertamps(self, r1, r2, eps_occ, eps_vir): for a in range(dim[ij]): for b in range(dim[ij]): - Y[a,b] = Y[a,b]/(eps_occ[i] + eps_occ[j] - eps_vir[ij][a] - eps_vir[ij][b]) + Y[a,b] = Y[a,b]/(eps_occ[i] + eps_occ[j] - eps_vir[ij][a] - eps_vir[ij][b] + omega) X = self.L[ij] @ Y @ self.L[ij].T t2[i,j] = self.Q[ij] @ X @ self.Q[ij].T diff --git a/pycc/tests/test_038_sim_quadresp.py b/pycc/tests/test_038_sim_quadresp.py index b76b1a3..92fed71 100644 --- a/pycc/tests/test_038_sim_quadresp.py +++ b/pycc/tests/test_038_sim_quadresp.py @@ -93,7 +93,7 @@ def test_PNOpp_ccsd_OR(): #HCl_OR = -19.34209144399 #HCl = -19.342091493471 #can only compare to itself - OR_sim = OR + OR_sim = -14.631284948349 assert(abs(OR - OR_sim) < 1e-12) def test_CPNOpp_ccsd_SHG(): @@ -129,5 +129,5 @@ def test_CPNOpp_ccsd_SHG(): SHG = resp.hyperpolar() #can only compare to itself - SHG_sim = SHG + SHG_sim = -18.825960218970 assert(abs(SHG - SHG_sim) < 1e-12) From 59c3daddf4583d7d92076df21a9bd08b006d2d07 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Thu, 11 Apr 2024 10:23:31 -0400 Subject: [PATCH 06/21] removed excess test cases --- pycc/test_035_quadresp.py | 58 ------------------- pycc/test_036_localfilter_quadresp.py | 58 ------------------- pycc/tests/test_035_cpnoppcc.py | 80 --------------------------- pycc/tests/test_035_quadresp.py | 51 ----------------- 4 files changed, 247 deletions(-) delete mode 100644 pycc/test_035_quadresp.py delete mode 100644 pycc/test_036_localfilter_quadresp.py delete mode 100644 pycc/tests/test_035_cpnoppcc.py delete mode 100644 pycc/tests/test_035_quadresp.py diff --git a/pycc/test_035_quadresp.py b/pycc/test_035_quadresp.py deleted file mode 100644 index fa92af9..0000000 --- a/pycc/test_035_quadresp.py +++ /dev/null @@ -1,58 +0,0 @@ -""" -Test CCSD linear response functions. -""" - -# Import package, test suite, and other packages as needed -import psi4 - -from ccwfn import ccwfn -from cchbar import cchbar -from cclambda import cclambda -from ccdensity import ccdensity -from ccresponse import ccresponse - -geom = """ -O -H 1 1.8084679 -H 1 1.8084679 2 104.5 -units bohr -symmetry c1 -no_reorient -""" - -hf = """ -F 0.0000000 0.0000000 -0.087290008493927 -H 0.0000000 0.0000000 1.645494724632280 -units bohr -no_reorient -symmetry c1 -""" - -psi4.set_memory('2 GiB') -psi4.core.set_output_file('output.dat', False) -psi4.set_options({'basis': 'aug-cc-pvdz', - 'scf_type': 'pk', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12 -}) -mol = psi4.geometry(hf) -rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - -e_conv = 1e-12 -r_conv = 1e-12 - -cc = ccwfn(rhf_wfn) -ecc = cc.solve_cc(e_conv, r_conv) -hbar = cchbar(cc) -cclambda = cclambda(cc, hbar) -lecc = cclambda.solve_lambda(e_conv, r_conv) -density = ccdensity(cc, cclambda) - -resp = ccresponse(density) - -omega1 = 0.0656 -omega2 = 0.0656 - -resp.pert_quadresp(omega1, omega2) -resp.hyperpolar() diff --git a/pycc/test_036_localfilter_quadresp.py b/pycc/test_036_localfilter_quadresp.py deleted file mode 100644 index 48f4e59..0000000 --- a/pycc/test_036_localfilter_quadresp.py +++ /dev/null @@ -1,58 +0,0 @@ -""" -Test CCSD linear response functions. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -#from ccwfn import ccwfn -#from cchbar import cchbar -#from cclambda import cclambda -#from ccdensity import ccdensity -#from ccresponse import ccresponse - -geom = """ -O -H 1 1.8084679 -H 1 1.8084679 2 104.5 -units bohr -symmetry c1 -no_reorient -""" - -hf = """ -F 0.0000000 0.0000000 -0.087290008493927 -H 0.0000000 0.0000000 1.645494724632280 -units bohr -no_reorient -symmetry c1 -""" - -psi4.set_memory('2 GiB') -psi4.core.set_output_file('output.dat', False) -psi4.set_options({'basis': 'aug-cc-pvdz', - 'scf_type': 'pk', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12 -}) -mol = psi4.geometry(hf) -rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - -e_conv = 1e-12 -r_conv = 1e-12 - -cc = pycc.ccwfn(rhf_wfn, model='CCSD',local='PNO', local_cutoff=1e-05,filter=True) -ecc = cc.solve_cc(e_conv, r_conv) -hbar = pycc.cchbar(cc) -cclambda = pycc.cclambda(cc, hbar) -lecc = cclambda.solve_lambda(e_conv, r_conv) -density = pycc.ccdensity(cc, cclambda) - -resp = pycc.ccresponse(density) - -omega1 = 0.0656 -omega2 = 0.0656 - -resp.pert_quadresp(omega1, omega2) -resp.hyperpolar() diff --git a/pycc/tests/test_035_cpnoppcc.py b/pycc/tests/test_035_cpnoppcc.py deleted file mode 100644 index a265cb7..0000000 --- a/pycc/tests/test_035_cpnoppcc.py +++ /dev/null @@ -1,80 +0,0 @@ -""" -Test basic CPNO++-CCSD energy -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - - -def test_cpnopp_ccsd(): - """H2O CPNO++-CCSD Test""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 8}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - max_diis = 8 - - ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7, it2_opt=False) - eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) - - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) - - #Ruhee's ccsd_lpno code - esim = -0.22303320613504354 - lsim = -0.21890326836263854 - - assert (abs(esim - eccsd) < 1e-7) - assert (abs(lsim - lccsd) < 1e-7) - -def test_pnopp_ccsd_opt(): - """H2O CPNO++-CCSD with Optimized Initial T2 Amplitudes""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 8}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - max_diis = 8 - - ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7) - eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) - - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) - - #Comparing against simulation code - esim = -0.223866820104919 - lsim = -0.21966259490352782 - - assert (abs(esim - eccsd) < 1e-7) - assert (abs(lsim - lccsd) < 1e-7) diff --git a/pycc/tests/test_035_quadresp.py b/pycc/tests/test_035_quadresp.py deleted file mode 100644 index 9e49b21..0000000 --- a/pycc/tests/test_035_quadresp.py +++ /dev/null @@ -1,51 +0,0 @@ -""" -Test CCSD linear response functions. -""" - -# Import package, test suite, and other packages as needed -import psi4 - -from ccwfn import ccwfn -from cchbar import cchbar -from cclambda import cclambda -from ccdensity import ccdensity - -geom = psi4.geometry(""" -O -H 1 1.8084679 -H 1 1.8084679 2 104.5 -units bohr -symmetry c1 -no_reorient -""") - -psi4.set_memory('2 GiB') -psi4.core.set_output_file('output.dat', False) -psi4.set_options({'basis': 'STO-3G', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12 -}) -mol = psi4.geometry(geom) -rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - -e_conv = 1e-12 -r_conv = 1e-12 - -cc = pycc.ccwfn(rhf_wfn) -ecc = cc.solve_cc(e_conv, r_conv) -hbar = pycc.cchbar(cc) -cclambda = pycc.cclambda(cc, hbar) -lecc = cclambda.solve_lambda(e_conv, r_conv) -density = pycc.ccdensity(cc, cclambda) - -resp = pycc.ccresponse(density) - -omega = 0.0656 -omega = 0.14238 - -resp.pert_quadresp(omega1, omega2) -resp.hyperpolar() From 5a5f7316ae2a7f2454f6bfa7dafd90af527c9d24 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Thu, 11 Apr 2024 10:49:51 -0400 Subject: [PATCH 07/21] added back test_036 --- pycc/tests/test_036_cpnoppcc.py | 80 +++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 pycc/tests/test_036_cpnoppcc.py diff --git a/pycc/tests/test_036_cpnoppcc.py b/pycc/tests/test_036_cpnoppcc.py new file mode 100644 index 0000000..a265cb7 --- /dev/null +++ b/pycc/tests/test_036_cpnoppcc.py @@ -0,0 +1,80 @@ +""" +Test basic CPNO++-CCSD energy +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + + +def test_cpnopp_ccsd(): + """H2O CPNO++-CCSD Test""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 8}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + max_diis = 8 + + ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7, it2_opt=False) + eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) + + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) + + #Ruhee's ccsd_lpno code + esim = -0.22303320613504354 + lsim = -0.21890326836263854 + + assert (abs(esim - eccsd) < 1e-7) + assert (abs(lsim - lccsd) < 1e-7) + +def test_pnopp_ccsd_opt(): + """H2O CPNO++-CCSD with Optimized Initial T2 Amplitudes""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 8}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + max_diis = 8 + + ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7) + eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) + + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) + + #Comparing against simulation code + esim = -0.223866820104919 + lsim = -0.21966259490352782 + + assert (abs(esim - eccsd) < 1e-7) + assert (abs(lsim - lccsd) < 1e-7) From 6594d019d8e1654ca6ecb596ad7126fd8c2da7fe Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Thu, 11 Apr 2024 12:26:03 -0400 Subject: [PATCH 08/21] modified test_038 --- pycc/tests/test_038_sim_quadresp.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pycc/tests/test_038_sim_quadresp.py b/pycc/tests/test_038_sim_quadresp.py index 92fed71..56135a6 100644 --- a/pycc/tests/test_038_sim_quadresp.py +++ b/pycc/tests/test_038_sim_quadresp.py @@ -94,7 +94,7 @@ def test_PNOpp_ccsd_OR(): #can only compare to itself OR_sim = -14.631284948349 - assert(abs(OR - OR_sim) < 1e-12) + assert(abs(OR - OR_sim) < 1e-10) def test_CPNOpp_ccsd_SHG(): """ H2O Second Harmonic Generation CPNO++-CCSD Test using local filter""" @@ -112,7 +112,8 @@ def test_CPNOpp_ccsd_SHG(): e_conv = 1e-12 r_conv = 1e-12 - cc = pycc.ccwfn(rhf_wfn, local="CPNO++", local_cutoff = 1e-7, filter=True) + #Testing different localization scheme for MOS -> Foster-Boys + cc = pycc.ccwfn(rhf_wfn, local_mos = 'BOYS', local="CPNO++", local_cutoff = 1e-7, filter=True) ecc = cc.solve_cc(e_conv, r_conv) hbar = pycc.cchbar(cc) cclambda = pycc.cclambda(cc, hbar) @@ -129,5 +130,5 @@ def test_CPNOpp_ccsd_SHG(): SHG = resp.hyperpolar() #can only compare to itself - SHG_sim = -18.825960218970 - assert(abs(SHG - SHG_sim) < 1e-12) + SHG_sim = -17.874897845906 + assert(abs(SHG - SHG_sim) < 1e-10) From 1dbd58bf79d632f0b4880727a401a5106bbd6ad8 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Tue, 16 Apr 2024 13:33:36 -0400 Subject: [PATCH 09/21] added omega option to perturbation-aware density --- pycc/ccresponse.py | 4 ++-- pycc/ccwfn.py | 3 ++- pycc/local.py | 8 +++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/pycc/ccresponse.py b/pycc/ccresponse.py index 0fc0074..62ff5f0 100644 --- a/pycc/ccresponse.py +++ b/pycc/ccresponse.py @@ -331,7 +331,7 @@ def pert_quadresp(self, omega1, omega2, e_conv=1e-12, r_conv=1e-12, maxiter=200, To Do ----- - Organize to only compute the neccesary perturbed wave functions. For example, + Organize to only compute the neccesary perturbed wave functions. """ #dictionaries for perturbed waves functions @@ -1844,7 +1844,7 @@ def solve_left(self, pertbar, omega, e_conv=1e-12, r_conv=1e-12, maxiter=200, ma ''' Notes ----- - The first-order lambda equations are partition into to two expressions: inhomogeneous (in_Y1 and in_Y2) and homogeneous terms (r_Y1 and r_Y2), + The first-order lambda equations are partition into two expressions: inhomogeneous (in_Y1 and in_Y2) and homogeneous terms (r_Y1 and r_Y2), the inhomogenous terms contains only terms that are not changing over the iterative process of obtaining the solutions for these equations. Therefore, it is computed only once and is called when solving for the homogenous terms. ''' diff --git a/pycc/ccwfn.py b/pycc/ccwfn.py index f0055d0..5ab03ae 100644 --- a/pycc/ccwfn.py +++ b/pycc/ccwfn.py @@ -94,6 +94,7 @@ def __init__(self, scf_wfn, **kwargs): raise Exception("%s is not an allowed local-CC model." % (local)) self.local = local self.local_cutoff = kwargs.pop('local_cutoff', 1e-5) + self.ed_omega = kwargs.pop('omega', 0) valid_local_MOs = ['PIPEK_MEZEY', 'BOYS'] local_MOs = kwargs.pop('local_mos', 'PIPEK_MEZEY') @@ -151,7 +152,7 @@ def __init__(self, scf_wfn, **kwargs): self.H = Hamiltonian(self.ref, self.C, self.C, self.C, self.C) if local is not None: - self.Local = Local(local, self.C, self.nfzc, self.no, self.nv, self.H, self.local_cutoff,self.it2_opt) + self.Local = Local(local, self.C, self.nfzc, self.no, self.nv, self.H, self.local_cutoff,self.it2_opt, self.ed_omega) if filter is not True: self.Local.trans_integrals(self.o, self.v) self.Local.overlaps(self.Local.QL) diff --git a/pycc/local.py b/pycc/local.py index 81a2d7b..73c8905 100644 --- a/pycc/local.py +++ b/pycc/local.py @@ -59,7 +59,7 @@ class Local(object): to run local MP2, uncomment the necessary lines within the _build_"local" functions which are at the end """ - def __init__(self, local, C, nfzc, no, nv, H, cutoff, it2_opt, + def __init__(self, local, C, nfzc, no, nv, H, cutoff, it2_opt, omega, core_cut=5E-2, lindep_cut=1E-6, e_conv=1e-12, @@ -73,6 +73,7 @@ def __init__(self, local, C, nfzc, no, nv, H, cutoff, it2_opt, self.C = C.to_array() self.local = local self.it2_opt = it2_opt + self.omega = omega self.core_cut = core_cut self.lindep_cut = lindep_cut self.e_conv = e_conv @@ -378,11 +379,12 @@ def _build_PNOpp(self): Dijab = eps_occ.reshape(-1,1,1,1) + eps_occ.reshape(-1,1,1) - eps_vir.reshape(-1,1) - eps_vir # initial guess amplitudes - t2 = self.H.ERI[o,o,v,v]/Dijab + t2 = self.H.ERI[o,o,v,v]/(Dijab + self.omega) + # MP2 loop (optional) if self.it2_opt: - self._MP2_loop(t2,self.H.F,self.H.ERI,self.H.L,Dijab) + self._MP2_loop(t2,self.H.F,self.H.ERI,self.H.L,Dijab + self.omega) # Construct the perturbed pair density, Eqn. 10 D = self._pert_pairdensity(t2) From 6f62e4aac9510c87215a0e6f1912682b8af04b3c Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Wed, 17 Apr 2024 15:29:08 -0400 Subject: [PATCH 10/21] Mac OS CI only --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 59c89a1..d5ebc2d 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: true matrix: - os: [macOS-latest, ubuntu-latest] + os: [macOS-latest] python-version: ['3.11'] steps: From bbec0176b8776f978fc261cae70e50e84ecfb865 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Thu, 18 Apr 2024 12:21:06 -0400 Subject: [PATCH 11/21] testing test_038 --- pycc/tests/test_038_sim_quadresp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycc/tests/test_038_sim_quadresp.py b/pycc/tests/test_038_sim_quadresp.py index 56135a6..a6e2765 100644 --- a/pycc/tests/test_038_sim_quadresp.py +++ b/pycc/tests/test_038_sim_quadresp.py @@ -93,7 +93,7 @@ def test_PNOpp_ccsd_OR(): #HCl_OR = -19.34209144399 #HCl = -19.342091493471 #can only compare to itself - OR_sim = -14.631284948349 + OR_sim = -14.631284641281 assert(abs(OR - OR_sim) < 1e-10) def test_CPNOpp_ccsd_SHG(): From 8423540726a0b3826f3fdad9b1e55d11268c196e Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Thu, 18 Apr 2024 12:48:33 -0400 Subject: [PATCH 12/21] playing around with setup and CI --- .github/workflows/CI.yaml | 1 + setup.py | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index d5ebc2d..ce6cbca 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -57,6 +57,7 @@ jobs: export PYTHONPATH=$CONDA_PREFIX/lib:$PYTHONPATH conda env list python -c 'import psi4' + python -c 'import pytorch' - name: Install PyCC and Deps run: | diff --git a/setup.py b/setup.py index a3e9f99..6831a17 100644 --- a/setup.py +++ b/setup.py @@ -35,9 +35,9 @@ install_requires=[ "numpy", "opt_einsum", - "scipy", - "torch" - ], + "scipy"], + # "torch" + #], # Which Python importable modules should be included when your package is installed # Handled automatically by setuptools. Use 'exclude' to prevent some specific From 35b8858bfd0f51772b0b2c3d876d971a73e3dccf Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Thu, 18 Apr 2024 12:54:43 -0400 Subject: [PATCH 13/21] modifying CI --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index ce6cbca..0a0481f 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -49,6 +49,7 @@ jobs: hash -r env conda install psi4 python=${{ matrix.python-version }} -c conda-forge + conda install pytorch ls -l $CONDA - name: Test Psi4 Python Loading @@ -57,7 +58,6 @@ jobs: export PYTHONPATH=$CONDA_PREFIX/lib:$PYTHONPATH conda env list python -c 'import psi4' - python -c 'import pytorch' - name: Install PyCC and Deps run: | From 11fe7c314cdf11746c12b2a2b64422f4be35c221 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Fri, 19 Apr 2024 14:55:47 -0400 Subject: [PATCH 14/21] testing test_038 only --- pycc/tests/__init__.py | 3 - pycc/tests/test_001_pycc.py | 12 -- pycc/tests/test_002_ccsd_energy.py | 41 ------ pycc/tests/test_003_ccsd_lambda.py | 53 -------- pycc/tests/test_004_ccsd_density.py | 59 --------- pycc/tests/test_005_ccsd_t_energy.py | 52 -------- pycc/tests/test_006_rtccsd.py | 72 ----------- pycc/tests/test_007_dipole.py | 58 --------- pycc/tests/test_008_fft.py | 56 -------- pycc/tests/test_009_pade.py | 49 ------- pycc/tests/test_010_denoise.py | 42 ------ pycc/tests/test_010_denoise/ref_010.npy | Bin 8128 -> 0 bytes pycc/tests/test_011_damp.py | 42 ------ pycc/tests/test_011_damp/ref_011.npy | Bin 8128 -> 0 bytes pycc/tests/test_012_FWHM.py | 23 ---- pycc/tests/test_013_pnocc.py | 77 ----------- pycc/tests/test_014_field.py | 77 ----------- pycc/tests/test_015_ints.py | 64 --------- pycc/tests/test_016_chk.py | 108 ---------------- pycc/tests/test_016_chk/chk_5.pk | Bin 3055 -> 0 bytes pycc/tests/test_016_chk/chk_full.pk | Bin 3055 -> 0 bytes pycc/tests/test_016_chk/output.pk | Bin 11261 -> 0 bytes pycc/tests/test_016_chk/output_full.pk | Bin 21963 -> 0 bytes pycc/tests/test_016_chk/ref_016_chk.py | 68 ---------- pycc/tests/test_016_chk/ref_wfn.npy | Bin 11662 -> 0 bytes pycc/tests/test_016_chk/t_out.pk | Bin 158388 -> 0 bytes pycc/tests/test_016_chk/t_out_full.pk | Bin 310558 -> 0 bytes pycc/tests/test_017_ccd.py | 42 ------ pycc/tests/test_018_paocc.py | 108 ---------------- pycc/tests/test_019_localrt.py | 144 --------------------- pycc/tests/test_019_localrt/wfn.npy | Bin 50027 -> 0 bytes pycc/tests/test_020_cc2.py | 75 ----------- pycc/tests/test_021_rk4.py | 99 -------------- pycc/tests/test_022_adap_int.py | 102 --------------- pycc/tests/test_023_ms_int.py | 114 ---------------- pycc/tests/test_024_contract_cpu.py | 102 --------------- pycc/tests/test_025_contract_gpu.py | 103 --------------- pycc/tests/test_026_autocorrelation.py | 78 ----------- pycc/tests/test_027_linresp.py | 82 ------------ pycc/tests/test_028_pnoppcc.py | 78 ----------- pycc/tests/test_029_delta.py | 27 ---- pycc/tests/test_030_sp.py | 92 ------------- pycc/tests/test_031_cc3.py | 89 ------------- pycc/tests/test_032_localccd.py | 124 ------------------ pycc/tests/test_033_localccsd.py | 124 ------------------ pycc/tests/test_034_ccsd_t_density.py | 85 ------------ pycc/tests/test_035_eomccsd.py | 164 ------------------------ pycc/tests/test_036_cpnoppcc.py | 80 ------------ pycc/tests/test_037_quadresp.py | 93 -------------- pycc/tests/test_038_sim_quadresp.py | 83 +----------- 50 files changed, 2 insertions(+), 3042 deletions(-) delete mode 100644 pycc/tests/__init__.py delete mode 100644 pycc/tests/test_001_pycc.py delete mode 100644 pycc/tests/test_002_ccsd_energy.py delete mode 100644 pycc/tests/test_003_ccsd_lambda.py delete mode 100644 pycc/tests/test_004_ccsd_density.py delete mode 100644 pycc/tests/test_005_ccsd_t_energy.py delete mode 100644 pycc/tests/test_006_rtccsd.py delete mode 100644 pycc/tests/test_007_dipole.py delete mode 100644 pycc/tests/test_008_fft.py delete mode 100644 pycc/tests/test_009_pade.py delete mode 100644 pycc/tests/test_010_denoise.py delete mode 100644 pycc/tests/test_010_denoise/ref_010.npy delete mode 100644 pycc/tests/test_011_damp.py delete mode 100644 pycc/tests/test_011_damp/ref_011.npy delete mode 100644 pycc/tests/test_012_FWHM.py delete mode 100644 pycc/tests/test_013_pnocc.py delete mode 100644 pycc/tests/test_014_field.py delete mode 100644 pycc/tests/test_015_ints.py delete mode 100644 pycc/tests/test_016_chk.py delete mode 100644 pycc/tests/test_016_chk/chk_5.pk delete mode 100644 pycc/tests/test_016_chk/chk_full.pk delete mode 100644 pycc/tests/test_016_chk/output.pk delete mode 100644 pycc/tests/test_016_chk/output_full.pk delete mode 100644 pycc/tests/test_016_chk/ref_016_chk.py delete mode 100644 pycc/tests/test_016_chk/ref_wfn.npy delete mode 100644 pycc/tests/test_016_chk/t_out.pk delete mode 100644 pycc/tests/test_016_chk/t_out_full.pk delete mode 100644 pycc/tests/test_017_ccd.py delete mode 100644 pycc/tests/test_018_paocc.py delete mode 100644 pycc/tests/test_019_localrt.py delete mode 100644 pycc/tests/test_019_localrt/wfn.npy delete mode 100644 pycc/tests/test_020_cc2.py delete mode 100644 pycc/tests/test_021_rk4.py delete mode 100644 pycc/tests/test_022_adap_int.py delete mode 100644 pycc/tests/test_023_ms_int.py delete mode 100644 pycc/tests/test_024_contract_cpu.py delete mode 100644 pycc/tests/test_025_contract_gpu.py delete mode 100644 pycc/tests/test_026_autocorrelation.py delete mode 100644 pycc/tests/test_027_linresp.py delete mode 100644 pycc/tests/test_028_pnoppcc.py delete mode 100644 pycc/tests/test_029_delta.py delete mode 100644 pycc/tests/test_030_sp.py delete mode 100644 pycc/tests/test_031_cc3.py delete mode 100644 pycc/tests/test_032_localccd.py delete mode 100644 pycc/tests/test_033_localccsd.py delete mode 100644 pycc/tests/test_034_ccsd_t_density.py delete mode 100644 pycc/tests/test_035_eomccsd.py delete mode 100644 pycc/tests/test_036_cpnoppcc.py delete mode 100644 pycc/tests/test_037_quadresp.py diff --git a/pycc/tests/__init__.py b/pycc/tests/__init__.py deleted file mode 100644 index 325e75d..0000000 --- a/pycc/tests/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" -Empty init file in case you choose a package besides PyTest such as Nose which may look for such a file -""" diff --git a/pycc/tests/test_001_pycc.py b/pycc/tests/test_001_pycc.py deleted file mode 100644 index 4ce6440..0000000 --- a/pycc/tests/test_001_pycc.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -Import test for the pycc package. -""" - -# Import package, test suite, and other packages as needed -import pycc -import pytest -import sys - -def test_pycc_imported(): - """Sample test, will always pass so long as import statement worked""" - assert "pycc" in sys.modules diff --git a/pycc/tests/test_002_ccsd_energy.py b/pycc/tests/test_002_ccsd_energy.py deleted file mode 100644 index 93e6052..0000000 --- a/pycc/tests/test_002_ccsd_energy.py +++ /dev/null @@ -1,41 +0,0 @@ -""" -Test CCSD equation solution using various molecule test cases. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - -def test_ccsd_h2o(): - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'STO-3G', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'true', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - - ccsd = pycc.ccwfn(rhf_wfn) - eccsd = ccsd.solve_cc(e_conv,r_conv,maxiter) - epsi4 = -0.070616830152761 - assert (abs(epsi4 - eccsd) < 1e-11) - - # cc-pVDZ basis set - psi4.set_options({'basis': 'cc-pVDZ'}) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - ccsd = pycc.ccwfn(rhf_wfn) - eccsd = ccsd.solve_cc(e_conv,r_conv,maxiter) - epsi4 = -0.222029814166783 - assert (abs(epsi4 - eccsd) < 1e-11) diff --git a/pycc/tests/test_003_ccsd_lambda.py b/pycc/tests/test_003_ccsd_lambda.py deleted file mode 100644 index f3ee6d8..0000000 --- a/pycc/tests/test_003_ccsd_lambda.py +++ /dev/null @@ -1,53 +0,0 @@ -""" -Test CCSD Lambda equation solution using various molecule test cases. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - - -def test_lambda_ccsd_h2o(): - """H2O STO-3G""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'STO-3G', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'true', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - - ccsd = pycc.ccwfn(rhf_wfn) - eccsd = ccsd.solve_cc(e_conv, r_conv) - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv) - epsi4 = -0.070616830152761 - lpsi4 = -0.068826452648939 - assert (abs(epsi4 - eccsd) < 1e-11) - assert (abs(lpsi4 - lccsd) < 1e-11) - - # cc-pVDZ basis set - psi4.set_options({'basis': 'cc-pVDZ'}) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - ccsd = pycc.ccwfn(rhf_wfn) - eccsd = ccsd.solve_cc(e_conv,r_conv,maxiter) - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv) - epsi4 = -0.222029814166783 - lpsi4 = -0.217838951550509 - assert (abs(epsi4 - eccsd) < 1e-11) - assert (abs(lpsi4 - lccsd) < 1e-11) diff --git a/pycc/tests/test_004_ccsd_density.py b/pycc/tests/test_004_ccsd_density.py deleted file mode 100644 index cd1c23c..0000000 --- a/pycc/tests/test_004_ccsd_density.py +++ /dev/null @@ -1,59 +0,0 @@ - -""" -Test CCSD density equations using various molecule test cases. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - - -def test_density_ccsd_h2o(): - """H2O""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'STO-3G', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'true', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - - ccsd = pycc.ccwfn(rhf_wfn) - eccsd = ccsd.solve_cc(e_conv, r_conv) - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv) - epsi4 = -0.070616830152761 - lpsi4 = -0.068826452648939 - ccdensity = pycc.ccdensity(ccsd, cclambda) - ecc_density = ccdensity.compute_energy() - assert (abs(epsi4 - eccsd) < 1e-11) - assert (abs(lpsi4 - lccsd) < 1e-11) - assert (abs(epsi4 - ecc_density) < 1e-11) - - psi4.set_options({'basis': 'cc-pVDZ'}) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - ccsd = pycc.ccwfn(rhf_wfn) - eccsd = ccsd.solve_cc(e_conv, r_conv) - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv) - epsi4 = -0.222029814166783 - lpsi4 = -0.217838951550509 - ccdensity = pycc.ccdensity(ccsd, cclambda) - ecc_density = ccdensity.compute_energy() - assert (abs(epsi4 - eccsd) < 1e-11) - assert (abs(lpsi4 - lccsd) < 1e-11) - assert (abs(epsi4 - ecc_density) < 1e-11) diff --git a/pycc/tests/test_005_ccsd_t_energy.py b/pycc/tests/test_005_ccsd_t_energy.py deleted file mode 100644 index f14a8af..0000000 --- a/pycc/tests/test_005_ccsd_t_energy.py +++ /dev/null @@ -1,52 +0,0 @@ -""" -Test CCSD equation solution using various molecule test cases. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * -from ..cctriples import t_vikings, t_vikings_inverted, t_tjl - -def test_ccsd_t_h2o(): - """H2O cc-pVDZ""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'STO-3G', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'true', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - - cc = pycc.ccwfn(rhf_wfn, model='ccsd(t)') - eccsd = cc.solve_cc(e_conv,r_conv,maxiter) - et_vik_ijk = t_vikings(cc) - et_vik_abc = t_vikings_inverted(cc) - et_tjl = t_tjl(cc) - epsi4 = -0.000099957499645 - assert (abs(epsi4 - et_vik_ijk) < 1e-11) - assert (abs(epsi4 - et_vik_abc) < 1e-11) - assert (abs(epsi4 - et_tjl) < 1e-11) - - psi4.set_options({'basis': 'cc-pVDZ'}) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - cc = pycc.ccwfn(rhf_wfn, model='ccsd(t)') - eccsd = cc.solve_cc(e_conv,r_conv,maxiter) - et_vik_ijk = t_vikings(cc) - et_vik_abc = t_vikings_inverted(cc) - et_tjl = t_tjl(cc) - epsi4 = -0.003861236558801 - assert (abs(epsi4 - et_vik_ijk) < 1e-11) - assert (abs(epsi4 - et_vik_abc) < 1e-11) - assert (abs(epsi4 - et_tjl) < 1e-11) diff --git a/pycc/tests/test_006_rtccsd.py b/pycc/tests/test_006_rtccsd.py deleted file mode 100644 index 98cda54..0000000 --- a/pycc/tests/test_006_rtccsd.py +++ /dev/null @@ -1,72 +0,0 @@ -""" -Test RT-CCSD propagation on He atom. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from scipy.integrate import complex_ode as ode -from pycc.rt.lasers import sine_square_laser -from ..data.molecules import * - -def test_rtcc_he_cc_pvdz(): - """He cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["He"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-13 - r_conv = 1e-13 - - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - - hbar = pycc.cchbar(cc) - - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - - ccdensity = pycc.ccdensity(cc, cclambda) - - # Sine squared pulse (a.u.) - F_str = 1.0 - omega = 2.87 - tprime = 5.0 - V = sine_square_laser(F_str, omega, tprime) - - # RT-CC Setup - phase = 0 - t0 = 0 - tf = 1.0 - h = 0.01 - rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) - y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') - ODE = ode(rtcc.f).set_integrator('vode',atol=1e-13,rtol=1e-13) - ODE.set_initial_value(y0, t0) - - t1, t2, l1, l2, phase = rtcc.extract_amps(y0) - mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) - ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) - - mu_z_ref = 0.008400738202694 # a.u. - - while ODE.successful() and ODE.t < tf: - y = ODE.integrate(ODE.t+h) - t = ODE.t - t1, t2, l1, l2, phase = rtcc.extract_amps(y) - mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) - ecc = rtcc.lagrangian(t, t1, t2, l1, l2) - - print(mu_z) - assert (abs(mu_z_ref - mu_z.real) < 1e-10) - diff --git a/pycc/tests/test_007_dipole.py b/pycc/tests/test_007_dipole.py deleted file mode 100644 index e805667..0000000 --- a/pycc/tests/test_007_dipole.py +++ /dev/null @@ -1,58 +0,0 @@ -""" -Test CCSD electric and magnetic dipole on H2 dimer. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -import numpy as np -from ..data.molecules import * - -def test_dipole_h2_2_cc_pvdz(): - """H4 cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["(H2)_2"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-13 - r_conv = 1e-13 - - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - - hbar = pycc.cchbar(cc) - - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - - ccdensity = pycc.ccdensity(cc, cclambda) - - # no laser - rtcc = pycc.rtcc(cc, cclambda, ccdensity, None, magnetic = True) - y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, ecc).astype('complex128') - t1, t2, l1, l2, phase = rtcc.extract_amps(y0) - - ref = np.array([0, 0, -0.0007395036977002]) # computed by removing SCF from original ref - - mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) - - assert (abs(ref[0] - mu_x) < 1E-10) - assert (abs(ref[1] - mu_y) < 1E-10) - assert (abs(ref[2] - mu_z) < 1E-10) - - ref = [0, 0, -2.3037968376087573E-5] - m_x, m_y, m_z = rtcc.dipole(t1, t2, l1, l2, magnetic = True) - - assert (abs(ref[0]*1.0j - m_x) < 1E-10) - assert (abs(ref[1]*1.0j - m_y) < 1E-10) - assert (abs(ref[2]*1.0j - m_z) < 1E-10) diff --git a/pycc/tests/test_008_fft.py b/pycc/tests/test_008_fft.py deleted file mode 100644 index b78c516..0000000 --- a/pycc/tests/test_008_fft.py +++ /dev/null @@ -1,56 +0,0 @@ -""" -FFT test for the real-time submodule. -""" - -# Import package, test suite, and other packages as needed -from pycc.rt.utils import FT -from scipy.fft import fft,fftfreq -import pytest -import numpy as np - -def test_ft(): - np.random.seed(7) - y = np.random.rand(500) - - w,i = FT(y) - - # rt.FT returns only the symmetric part - i_ref = fft(y)[1:500//2] - w_ref = fftfreq(500)[1:500//2] * 2*np.pi - - assert np.allclose(w, w_ref) - assert np.allclose(i, i_ref) - -def test_ft_norm(): - np.random.seed(10) - y = np.random.rand(500) - - w,i = FT(y,norm=True) - - w_ref = fftfreq(500)[1:500//2] * 2*np.pi - i_ref = fft(y)[1:500//2] - - # norm handles real and imaginary normalization separately - re = np.real(i_ref) / np.abs(np.real(i_ref)).max() - im = np.imag(i_ref) / np.abs(np.imag(i_ref)).max() - i_ref = (re + im*1j) - - assert np.abs((np.abs(np.real(i)).max() - 1)) < 1E-8 - assert np.abs((np.abs(np.imag(i)).max() - 1)) < 1E-8 - assert np.allclose(w, w_ref) - assert np.allclose(i, i_ref) - -def test_ft_sanity(): - '''given enough points, FFT[sin(t) + cos(3t)] should have one real and imaginary - peak at 1 and 3, respectively, but numerically there will be slight errors''' - t = np.linspace(0,2*np.pi*100,10000) - y = np.sin(t) + np.cos(3*t) - dt = t[-1] - t[-2] - - w, i = FT(y,dt=dt,norm=True) - - re_max = np.argmax(np.abs(np.real(i))) - im_max = np.argmax(np.abs(np.imag(i))) - - assert (w[re_max] - 3) < 1E-4 - assert (w[im_max] - 1) < 1E-4 diff --git a/pycc/tests/test_009_pade.py b/pycc/tests/test_009_pade.py deleted file mode 100644 index 8a42618..0000000 --- a/pycc/tests/test_009_pade.py +++ /dev/null @@ -1,49 +0,0 @@ -""" -Test real-time module Padé approximant to a Fourier series. -""" - -# Import package, test suite, and other packages as needed -from pycc.rt.utils import Pade,damp -import pytest -import numpy as np - -def test_pade_sanity(): - """Padé should find correct peaks for sin(2t) + cos(4t) - iff damped""" - t = np.linspace(0,2*np.pi*20,1000) - y = np.sin(2*t) + np.cos(4*t) - dt = t[-1] - t[-2] - - p = Pade(damp(y,dt,50),dt=dt) - p.build() - - w = np.linspace(0,10,101) - i = p.approx(w,norm=True) - - re_max = np.argmax(np.abs(np.real(i))) - im_max = np.argmax(np.abs(np.imag(i))) - - assert np.real(i)[re_max] == 1 - assert np.imag(i)[im_max] == -1 - assert (w[re_max] - 4) < 1E-4 - assert (w[im_max] - 2) < 1E-4 - -@pytest.mark.xfail -def test_pade_sanity_xfail(): - """Padé should find correct peaks for sin(2t) + cos(4t) - iff damped""" - t = np.linspace(0,2*np.pi*20,1000) - y = np.sin(2*t) + np.cos(4*t) - dt = t[-1] - t[-2] - - p = Pade(y,dt=dt) - p.build() - - w = np.linspace(0,10,101) - i = p.approx(w,norm=True) - - re_max = np.argmax(np.abs(np.real(i))) - im_max = np.argmax(np.abs(np.imag(i))) - - assert (w[re_max] - 4) < 1E-4 - assert (w[im_max] - 2) < 1E-4 diff --git a/pycc/tests/test_010_denoise.py b/pycc/tests/test_010_denoise.py deleted file mode 100644 index 747ea7a..0000000 --- a/pycc/tests/test_010_denoise.py +++ /dev/null @@ -1,42 +0,0 @@ -# Import required packages -import numpy as np -import pytest -import os -from pycc.rt.utils import denoise -from pytest import fixture -from distutils import dir_util - -@fixture -def datadir(tmpdir, request): - ''' - from: https://stackoverflow.com/a/29631801 - Fixture responsible for searching a folder with the same name of test - module and, if available, moving all contents to a temporary directory so - tests can use them freely. - ''' - filename = request.module.__file__ - test_dir, _ = os.path.splitext(filename) - - if os.path.isdir(test_dir): - dir_util.copy_tree(test_dir, str(tmpdir)) - else: - raise FileNotFoundError("Test folder not found.") - - return tmpdir - -def test_denoise(datadir): - # Define function - np.random.seed(10) - timestep = 0.001 - t = np.arange(0, 1, timestep) - f = np.cos(2*np.pi*12*t) + np.sin(2*np.pi*50*t) - f = f + np.random.randn(len(t)) - - ref_file = datadir.join(f"ref_010.npy") - ref_array = np.load(str(ref_file)) - - test_array = denoise(f, 100, timestep) - - assert len(test_array) != 0, "The test array is empty" - assert len(test_array) == len(ref_array), "The test array is of a different length than the valid array" - assert np.allclose(ref_array, test_array), "The test and valid array are not equal" diff --git a/pycc/tests/test_010_denoise/ref_010.npy b/pycc/tests/test_010_denoise/ref_010.npy deleted file mode 100644 index acd55b93d22c3ba79f289ccfbfffa99062208c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8128 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 Z|EJGalh2#T=Mm)dV)A()`Mi{T{vRcgDCz(J diff --git a/pycc/tests/test_011_damp.py b/pycc/tests/test_011_damp.py deleted file mode 100644 index 27cb648..0000000 --- a/pycc/tests/test_011_damp.py +++ /dev/null @@ -1,42 +0,0 @@ -#Import required packages -import numpy as np -import pytest -import os -from pycc.rt.utils import damp -from pytest import fixture -from distutils import dir_util - -@fixture -def datadir(tmpdir, request): - ''' - from: https://stackoverflow.com/a/29631801 - Fixture responsible for searching a folder with the same name of test - module and, if available, moving all contents to a temporary directory so - tests can use them freely. - ''' - filename = request.module.__file__ - test_dir, _ = os.path.splitext(filename) - - if os.path.isdir(test_dir): - dir_util.copy_tree(test_dir, str(tmpdir)) - else: - raise FileNotFoundError("Test folder not found.") - - return tmpdir - -def test_damp(datadir): - #Define function - np.random.seed(10) - timestep = 0.001 - t = np.arange(0, 1, timestep) - f = np.cos(2*np.pi*12*t) + np.sin(2*np.pi*50*t) - f = f + np.random.randn(len(t)) - - ref_file = datadir.join(f"ref_011.npy") - ref_array = np.load(str(ref_file)) - - test_array = damp(f, timestep, 150) - - assert len(test_array) != 0, "The test array was empty" - assert len(test_array) == len(ref_array), "The length of the test and the valid array are not equal" - assert np.allclose(ref_array, test_array), "The test and valid array are not equal" diff --git a/pycc/tests/test_011_damp/ref_011.npy b/pycc/tests/test_011_damp/ref_011.npy deleted file mode 100644 index 80e794e20fcb560f225841cc05d1b6ff5eff08cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8128 zcmbVQ_dnL(|GsUqN>-)l9ifRRBc3l5Nu(l#P)3RDmIf7yqR>*Pgp`bAWIb;qJ9}ks zZu7qFeSduah41<8JkKxZoagnpp4WAS>Ko}9m@<%Vkh~;qY~3%rNh*s;9<@`H+$Sb! z=j`U;W_{h#+0DlG|LR)Sj_$VWb@waQF1G7?DOnjAnSIjx#O{gxf7b>Qp;#{%$4KyX zGTo%?B@sX6H>fU^L_yX3?YUvQ6$lq(mQOmuOc?m@d6RWv8U|0wZ!{h!5ovEWSw?%W zz_M#PnKgC}Y$yWf+Z4t@$mDD6;Wtxod5fRJyKRe5d0394X=EG)%U>MyZyW~tl*`r4 zc7L(6jq|XjFB!cPMUP+qxs2DvRx2!fTTqZY$Z;Zv2K8qC&qA4I@cI|qO#z?Ru>8=$ zcLfsjc-F-$`QXE0*w(^-41k>&;QKDEd1VzuAJrSR4KWf9{iEFn+y|iG@&4P~|E+-S zPVv;(b7g2;ZNdJDy9w@*JdC8K#_){Wp~W}#3ut!wn&{cX)A-9EP*?gBiLAfZPS7H= z6I-oLzFX*DLRq?z$j6KG=pUf>yZQ%-%o83-bQjg(yNrdW@1;p(Cfn`bMUOV3tf!C5 zmKZ8Jq!y0&M9iYGL7m^x@Bv(DW4e}7J%U&0@0^_EO7NG}2_33yBi?Y(({D^KgT`nj zza6w1Xj*EBP30a$+h$QO`?L{szG-x5mX(5seU_e(9ab^wwXju*@-Xhd??v@~KZvRQ z4ctBYv-nv%=#Z7@B*>I0n*iKu6}OPLeO8ah zL=2c(|1Ck&ZK^&KcOmTg+Us9(`J}ji>lm;o9l%7 zA#p-Y*kr>1T!JiDn+v00eqxWg_3{wBi0+O#T2+9J^@BF%kH;X8k_`|0o z&q#1MhinedT*Q%H7%JV#nuwec}S8oIx!FwrMPfK^bpOj&} zynD6iKf)bmVZI3GSx+jS637 z-*ZI8FeZk>i`d_E*d@~+!}@y|{&G60oboJy#ZksqPq7g+yky^8%+~>-PoGMd{po=| zCA%p*^HIG0X}-Bou^f-{Hx`Jj4#3+XgF4)?hR(|3$#ktYSnax^m0vuICkEvfEP3!DaEQWE43czw*dr2JLvfjB|F)K)U7bzO82%$VchXStJHJ{t>1r?f*a`r%)Nx z(TIU;*gW`1u4NvZ%MNp_HBX@pTac*GJ67`YHCLt))&)Fzj&#o5nU2lO?+@&j9)+ts z9}3iuGZLl0U6ReLW32n~SCbgYeuLYdEM}0%|9#sPo5Vkh^S4y)OGmMhZ9Z7m?>tCH-u6yG zsWWx>P~yum1>-q%%=_in+dTroOV`V7KKDc8p*scTRfG6B`s+{kyK}ffT?jpOY9KMq zB-8tME{J5(MzcAlVZy7gCEkXaU~`EQsQatx3A+C zowxhTkHDTU`{;^HU2yn)NzMt)X(-A+Xtmp=49*xFvs`)9hn49sWiubwW9#+s`-Ke? zm}(ed(KylxJ$X5Faq}s7dz#bA=QR_#^i-r`R}P5?z0l2037dki$`>6!7t$eTGt(<& zHztC(*HdJBq8URjDQ`L8PJvVD^?5N(i;y%efA*LL6)vZL&Ajwu6+$=F-%sfqh6_v< zfg#yLC_3~&He-1jKCAyZv29=ugc!5=;AKBVe^@P0U8Z1VN;Ju=w;fexGaI!@%|Kjs zQ<{J3gJ*(+0csAUE?cZZ7zQfA;f*8|o$n*nH>yuugbQ2<|d+xE8$kE6$r0Q>0KZo%{m$;2MQO7Ok@FJq!1U;n z6^%~ACa=9mlaCu5WF+4Twcoh=*c@`N z_@SoychLKNiKo|a3dQ!(gJP&8a=X>XXD^R3lReCCZwl5~L4ID-i+r&g$SQkg9KpK= ztpmSn^gJCw-VPS-+6SfZyI;?}^58TIH!ueO$nJ&P2cvtaXNMu>4NJ9D_7t{U_%(2e zX$UA4tJG3HDx@cAx;M1sgXQ^>h21CXU}jdgasy=?LN0X+oA}lMi&@uZXW_- zrnMD*wkhZL4i{jZ@3${8!L=AeZVI00?n2NX=GsCcqr%-^QHv!*nCa(ibFG?&*^-@i z9C8QoN3xFTu}AYzuXll>{dxvB>Oa}@jbRBqCe01)5~465Jy7V1buw%i?r5Bx9Rah} zSGsRoVe#W2$AgbLvz2G2rIs(1kvmReH zZ(o3oQrl&(3lG8D%oMj&!DXm_U{LB(JPj3_mpDS48*zZgy-??T4HOncig@WXps_SV zp-0^aPDmVlRXaf6E-UM#W$6hM30a=Tcrn?2z91tEq=2FJWbj*7O>8r zM~n_wy^)>8ffkX!gZ_CCblvE#(Q#WCwpN`CTCD^^G!MNz!40v!J(!Ryj41t~ZG?uMdh-+Qc=U=qDA@fg~?Dy>?;<)lt z>vsa<@Ud^@;;P&@oYe6Avhyo5k@liQ@|Yn7O8tek+1z`uzbjYa_w9UW)i_mZw9c!& zUjttH9O^;kw_C)YNzT9xR)e35)JbS2{oBH|ISV*^8pp*C%)*8^_saI~3<`B3!)B#yn+P*PHEbb)17#Xx6k8FiB@1L@t&DozNu_<(W2tVl*lUY0~nK z@v{?}ThyCxTg*fJ=VD!%d}Zmb>Q+Gx?ccn0xHLQH+Qx z+Zps_0bg|MhDtoBh6lg4>2Ay%!>yfe7w?L+ph|lElUW>x(l2!qzQ?P8dOLE{fst&u z+-LJf;%W!I`I$e?F$>P3Dn}1huf~H-YdgembhE>lf$TO_w2t2mk#WW8{PiL zZU~bt~{=`&=8I=3ZV2Yb(L`GAW^(*e8KGkawc!KpWJaju;It|AimIE(mXW(+lSg@B|6d z=b_v($KyrA3P>rP7&*)^3qwK&qp00Xg#Y>DiN4Xygk7F^Rx1B29M19o^B`;xwDsIp zuHIdRkHH(ax(ThqAEU4*34ZOMA3)=J?*ALU^z(AS@j)1f*!0%W{R93D35zh59s~LK zus@+^igAC3bHsGrC^u)R#ns~;1VbPEd1^1+C?CS}K_ zA>1UF#Oc|XgRS0;J|W4oc$B|RFENjS+_!eD*m`ZlOxD4kB)PLsY3TJ%%R+u z!TB8BakO77b%?c_g1mx3F_i-6hm#I5>T6{ zJUE?HBe0i~>^c5A>wyv#lX5TLxczDw^`E@;#^^dY^2pgcdh;|^we$a+wxNNX@dCG1 zMiWj{(CepuHpAw!79P>?Mo@2fXng770*F4(k&EvB2I+2wd12p41dsl9zC?jR@EYP^ z54p!lTyICvW^!z`7grDZIekM`Ko|N%cI4SU-2C}*FD0NJqxPN` zHD?+_;e+RN^|e<}GPF4D^vwb6;u+$#lkP)qE zbZQiW#;3h036kybch63<;F@MUZEWV@?K2GJS7kpMt4;&Q!?NpQcB8y2btlP^NLrzFDUi zx68#5J4C41lE%S8W*UWUldNKWiQYi#^0l=uVkLM;_0f9StFTtBAz0hYKm=zJm44e6 zASL=p3CX4c_Wbi0KeL|#l8OD@QANE#ZgtOLc|4DCTYh{CA@xCFmi|dlRN1$xez)i)tDl~O)yl?-y0nJou&2AlJAiBKocXo?)V(NE)iHd#-_%`5( zg(Vx|%}71P;J``&K`N*D&V+viV6rg9MzUP;bFw z{+5zT${H?}GKAQk?}uB)_j6rUn}FZ9dy^Dt6uIS}z4#}z7Z#i5UR*ml0X*JAH?Fxa zBd4ig3zI@Qy{t~TSj<6s7SOjj*+EcT{I?y7P&cByB1T{x*=-f9bgq`xnH$P>zr~+> zFzWtXkSYHM)pC0yycA}z-O}GIN_Gi*Gu|Bvc+X8nMSAeRZbq`fl{JYwlw%`GD;_s7N$|&)+<-}C>4U+%Cf?I(xFJo!ZCcY7A>wO;8oiCT+jX$@iJin9^16O zatrB&&=V#Vx6E0I@B@+JdL1+nEWe*)_=1u674T(lb=rk^zR5NhcNe&cd6oVdXm%m zxQ;+(l*lS7Ka`43 zms!Qr-x#j(pO`^yL&gO`bvmA4U)(a^QjKxkeRtnljDQK(WO~}}0W@Gv^6%d}1=-)i z7AdJS5ben1JMpmqtk}nYxSKBl&yxx3k4yci>VCc})O85xo3gju4EcrIU4!;Lk*Y!a zo|q$&f&rjr^n)=!zaFe}BgU&RuWZDOyz7qEWFl=*~E7d|;xF)&#{ zftz;!mg17k`BA?%n!V_&ro`j-q>@wV!{LrWiq;?H3S|`?nW#(Up!h}9h z-y$OGCN>OuF1{>Eb~DhGgLdQm-Qe`Wzh3TH4ct@9+YsM6fUcCDpnCOYP|%tSduTX; zhnPFIXDLwOtlDY1=?fBBx+mE|>E0}!vnxGwe^(S5Y_)$eF2+Rec@Y>PVN4ojjSO$ec*ZtBS)nqSU9!#jD?H(2HA? zs9|e|PwH#`nweS1?>hFxZuv2Wf4>#;J5A8g`^#v0^R-1ZiGD`))urO+!LtD`j&$L| zP<71FFO1|T(Pxxr*WY3D!c!w(orTQ5qwwt8eRR~aPR@7OxPXOz(z{H1*vOKO)f9Qt zLA)VdHITRyB$z58ZP- z+Fl7m?5`s!*Oy>pKPRNg7lUD=jMkO-DLg;CYk!c{EME2DzQ$BEg-g_bUa?JUsHrl- zD)X`ycV`{YxV(v*e5>oj>?_g|eqeUzzaK;*FRvDVmb$)*vLHT^$T*DmN~J&Y^V5*+ zai)ry7!}TWCbwn|=EApy$&;(=IFsV#_LnGRB$RFlWG;r&q4Ba&yKTi9_&;>tY^1pY zCGJL7zbp4b+Ic-C?TQsRCz4RA|8E1qcG4r_vBx0Px$<26*3p2(xyZ7m?=-A@SWQ!V zwv4Y@gB1;G>oAp~s%GfcgWcxuRr~~Lkj7+h=NP`88%^)L;JJ+o?7QPQ?|Mx`zQvu? zL?05dSX#jJ_Uj1f9RBE1o5o12-o9NKI6?oCN`3i!k9)6yBNP_~S_KYLz`I)Jd zgGYJNx*m)Vouz5D;n1}PNu!K$d{ASexb9+5%;!hw*VIZhzVY!%!_{uI`%D(76P(0v zt+K^8GOE$J#1TE>vS6>8ld>Bv*LQQ~-R4!90qQ1f}jOy<|}*v8d0gUnt{Nf~`y zWQvP{{f2B3+1e&!KCnN&?vVW6v^@H$Q)y@`uuaaW4l~77m73D&W`M_CoV(plj}y|Mg-KYO^cs z8t$n>^XxRki%~;(T`>4QwKoUNxhbVT4|JnKGqr1Mn2|iIG#0_2*Mp>)*^-G{-6)^Z z`R3Da3cmcXAl3&%tsewuOr{U&G@8iG14iU!)CQXx*&)ou+={fKyU z+nt$sV|ClZFm?%2yLcr6DT1bR5cMhNP4n~6Y%$4b4f`Jgo%BD%|OT!bl z^xsSEXCib9*aNd_8gb#{*FA@=rm=nK?w)T}ZNO8o`%n9p5j65O*{^b|7Zp_#xftoa zc*D$P=P36WJPXQ59x3j_i=D>9eKm#HGjyz|QhpfS`1BptEXOdY!AveH3ny6wY#?)TtSM+tt)gQs zlLAx13T7An<}^7ziUI-(&L;@Z=1z3D{^@Mp*23}HZ;qZupQ~Beb^Zn!ealYU4dOv>7>l?3;HL8vIzRvNC zx!4#UcXe2FXhe*8U^pYlJTy9l8GMYvIJWQ}ca#wn7#EQe z!utMj$1r&T9DBP3M(w%-r_#oUA?r(_GgU+-1Wl>biq7hP@I~#W<1F4T;}J=nEJ(!(}-iBS`~E%_P!o+@j5MS6rB$;NA4(Qzf>_yF_Ja+N@TlpoE651s0 z84Iq0@91%4vUyEtg>^tsm}VEW&GNM4^Z199kw4l*kg)(hPN&1c%2|1eS7)-Fmkrvcoi&|Y7NqW^GO*SR{C7ApK0&7^9vbhH&&m7|_(qM1!n)Z?m`=CRE}5Jm zo9>vlOm#1X3?;@-r1e)R9y`oLHE}@zJ~_QO`;}C@qu!-T-I*l|aIVvy>+m8)m%B1C zD=*us=I3Lf@izG{e>E0W(3ukKpZ#CI7{KB)eGj~qyvwqVnUL4G(R7llnl1jrX9kpd zR5#)Gdwx(mO8-1*5`n*Yopc=ysDdM#Jl2dB&X5hYxpvz*m4N$7=5n3r$Helrb@zie z2Z8RgO{T3cN~G&?(iabI#zXz_+iH6c9;`PC!QTyJAUmZjKz3v`TF0F@^#4#&;H!`onPW2zic+kYV%+;sDkwdwO*W(+DGam`iIUR zSNI6w|5KEH7Zm=|>Jsox{}tF0k9XZaKSZVO}oI{b#5zj##tmmNd)Zx)sR zwHBoR87Tb#3cqZTAB}#p^BX@-rH=S|p97d{mGx++(OHrQYW|OTgNXV23)O$+4P^gH zQTg{R_e1#KkJ4{1MB=NS?5*%~It#D5C+v07=p`pj?z}*K{{b>uJ9)yO<13U@6|l8p zONuQPQzYw@&&o{`i?`ev>7|hOseh%u8>UpGFtrJ*MkEh>%2y4?^b#kBXm3B5oR^)Q z$}I$5Kag&=DsVI!jJFM^8@}$_byrSzUCtV_9F)LU9XIKZjSx3panD^_DF79H>>7`e zVkxfc>V{<>ymA{~bK>5{lIB8|{}pg^n<5 z8a@6khC3As?ed{9xmAU5U(Zkz!1c3u*w$SwzNlm*N8By|vws;Mru7S?@ros9x(ga9 zEjh+od#wc&H?Sx?`?CnpH4l1fYy5<$tg+j(E%OL?!hc_%pjjsUee9*?+w@d;M4^al zNUoI|Je)${XBEEN@$h03oX=l38Oa;Z;HS(%Mc9-qEITF4}DeJgKCy_K2 zQJv75FFW3UeSBGcvDDmmYo?fR0ji4|)qmm}LRo{-kJU&-;2+xYlG51Hyzu|SJl0`P zlZWpaA1hV4vBl*aS0*doXfzj<#u_}Y1}i~;D#(XgU>g)>)$L_l_UM%wi~H` z4uxN$`r3pA8elvg|FZSTJ$ZME#frR6zG%DAmHRDU?hy>eqZ;SUvLz=qsq!ulp;*=X zQ_H*KB@_)KUCo(&36wMv_0rze@!L;oCf*zRt&HH<*5v6>eF3nfd&Zcp3=>65W@iL|FsH1DIPJWRb!@B`L- z=l8+z2S2@z!S`ixN#Gp20`H?1N6L}@is&CY|A3zixc~Iu1f}019EtC_TU>KQTf~Z;8OnSzo#6j tpY4mp&!tW^usScnxqNj)TewMcHJHJnK|B{b-33?abXv6e{{d4a0#pD1 diff --git a/pycc/tests/test_016_chk/chk_full.pk b/pycc/tests/test_016_chk/chk_full.pk deleted file mode 100644 index 0ea75330bc4dd0a1f768552455508359d2d1b101..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3055 zcmZ8jdpwi-A9qPAR4$41E4mz)9ITBk+a5}!NJY9?Dr}ki-IP;KO>W~yM&^ge3fm#K zwavC?C`IOywA38x@RLjBe(gB@bou@9Jl{W_Kc4URdA+Zn@9T+Ml{Kg$_kI0FH=@bM z&}o~3A_GHW%)Eoch-QJ20TJX&VPTh6-m6{+BYFo1g-3)%dPmSR=`^M92kA8BAfF#c zGU-lo@pLZgiXg7#6y|ru$_eW~lb*U<$=1hoL*`vT*>PqV>?BRL}tg zqt}q%c{hOV@`M5d!N8*;db`CVNXnZZKrGuGf7KUcuk_jJ!z3$@8(B&m}x zFW`gJJILuDT6w1%@iM)_CNB5+M(q?&1`ahHHzv$2!j5OI^FJR}2z)qBy`nK)2y`-> zB*SF3cdY`T|Ot0D6-VNPp~kE zoouTCvv=Gg^Xg;^^uKX?5y7wS{&pXG6?uL`&m$J-Xe`oEKUWO+X{9bJdOX0ie~cS* z3o1st$QD4=9Y=Ba=xWZZ`aFRH9VeMtrik+x48EQhPxOyc83cc>=@(YjLYbJ!SQMaJ z-r)J4%Z~s~eDGmN{;fxu=CUEY;Gs z?IPlq`#MWE?)gK|*!oM9hkZI&?AoNfI_WmhOU;Nzr<7vIB>L!vdll%vD*fkMmI=6p zY3sT0oAFrXnb-vGm3Xlk5_!l76yZfM|HI><`paSX`i;ptW9dvW3OOAs{byQ4=BC=a z7SK3(F-T9{HxFwKeHYud%Tsw0=2kzX8lAh^;R{BSatBl-_Qv%0qyn3k1v`2P36`q* zDkjCJ!fU_YWM%a%hhYlT6MJ%-7-%Xi|00@X|Mh+H7nKZ7Zqo7Hz#rMQo#r#&`PKRS;77i4zki)95@(7OJad?E6SNMv zL;45L-+Ge;#D8O$ejE(n&Hpg!gEURtCfPc{pOlI$bW(Wg!SJF*1tEf{P(slLHu8Y>DPqeYn}BA zlskAsj6~W**PR^}%~jbcFO~hy$t(A~fBmrj z_f|pshlS<8WiQnK&&Q$qzrgVS&yP%caQz!UBEY9jys*Qe#+F>0r&6&5*!)i+p!2sK z*8e70|Ds^|J2Zqq{2zen-(~~F*P3oi^R&MzzG*s4?5EF&(DNpGyGNFRs`^%~fc%fZ z&BxlNCA$-B5Xf-AIcyn!yL)KV=)!B@ipL8AA-Wr&lC<8Q(fo_&r=fhW>@J8NeCm$c zWqeIIc0Ob`6T`&nx<%U?%HnJ~Bse|u4I_B+s=&(<3mI?L;O*0)r7kpDIVfnnv=oO* zRWJ+gtP&*4W*w8PN`PEvvHBruImq>!koip4iE|kH=(7rwqIFH!nFlrv;IM9AFg}t2 zOgwJkI@fc>*$jrrcl0fu?Ztkn(9g#VGY@z+wtPU3CraL18aDH% z40zyUZ6EzfgKF>~vohlIA_rr);D2mWL??GN$1ud9gn&D0IZQ@`)?gJCdRC2OB#LoJ zl|w(w%})C`~}#!mu^`~qxsZhdNE3A5zDAV&D@%NtMC$EQm5L}Z|F`)- z^-sd^r0 zBEIuu|KxYVEc{7oY&>pG%s%>O2N7Gk(-_h}c>cDu6o~)9F#UK66dyD7>qDkv!OH!I z)M|6=7CFWiKdZ5$Vr++$O~#|BTvOrUUZ0#~+!G0&l`Xo271kj7m?rlCqa5S&$6T)g z`(XW_hxP9hEdNdaMML}_hUuTW3dKJ#Sgg8sHe-cfjoiJFKGB~x@$=F6JWiHw#e>cy zE=v1U&V+$?2IdSYRC53bLFXkw=Pwi1|JEbW{)vpB`L9}l`u{=z)&CKOZ~K#9o5Y#+ zjo)xh?%{K>Za9U=)qG|By8;K;{D*0;gUp{^Cba+8>Y@F+3d?_BH5TH(A56dcBPf1? o?*fa`kt|-hA3nOf4T|V1f6}y75#&H3{gCahmDG_)qe!#=0ljwuzyJUM diff --git a/pycc/tests/test_016_chk/output.pk b/pycc/tests/test_016_chk/output.pk deleted file mode 100644 index eeedca3844c97039a220603ec60852bc5693a59c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11261 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�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

jHqv^HDi#uTd3Sw^+!jTka8{dY07A{AMdcwS2Q0 z+kav~Kvmi-%GzsG#d?do;nP`Bw}>uARVv!|dk;g^e9sRVHE18G*A{kz@tt(+$$Lu6 zP?Z$@tCXV9C^zwTh#xTL<0WXEIpgrQ+C^{OCV*+spV`#GnGL z7f*>_InfB_Dl5n8b1|BW{QM>8z;a%-_3sm*S`b#5tOWB*BnZ|P9d@fNnU_FVxs{yQ zLi_bg28%;yz+;adEqdL|umB5PxtPylQ9jB@qAUlsNX}l!Vt3y7mbsEjT(RDLS$_m} zf)w2&Yd#mDEdA`yeD2#}f7|l;7q%~FsOxO0bm0qNxk#PCJ~6yxF Yu1M4E`Ewqd-veo7i5zC`ia5&t4_Ey%i2wiq diff --git a/pycc/tests/test_016_chk/ref_016_chk.py b/pycc/tests/test_016_chk/ref_016_chk.py deleted file mode 100644 index 5387f4c..0000000 --- a/pycc/tests/test_016_chk/ref_016_chk.py +++ /dev/null @@ -1,68 +0,0 @@ -""" -Test checkpointing for rt propagation -Script to generate the 0-5.1au checkpoint and -the "full" propagation reference data - -To re-generate reference data, first run full = True, then full = False -""" -full = False - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pickle as pk -import numpy as np -from pycc.rt.integrators import rk2 -from pycc.rt.lasers import gaussian_laser -from pycc.data.molecules import * - -# run cc -psi4.set_memory('600MB') -psi4.core.set_output_file('output.dat', False) -psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-8, - 'd_convergence': 1e-8, - 'r_convergence': 1e-8, - 'diis': 8}) -mol = psi4.geometry(moldict["H2"]) -if full: - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) -else: - rhf_wfn = psi4.core.Wavefunction.from_file('ref_wfn') -e_conv = 1e-8 -r_conv = 1e-8 -cc = pycc.ccwfn(rhf_wfn) -ecc = cc.solve_cc(e_conv, r_conv) -hbar = pycc.cchbar(cc) -cclambda = pycc.cclambda(cc, hbar) -lecc = cclambda.solve_lambda(e_conv, r_conv) -ccdensity = pycc.ccdensity(cc, cclambda) - -# narrow Gaussian pulse -F_str = 0.001 -sigma = 0.01 -center = 0.05 -V = gaussian_laser(F_str, 0, sigma, center=center) - -# RTCC -# use tf = 5 to generate checkpoint file -h = 0.1 -ti = 0 -if full: - tf = 10 -else: - tf = 5 -rtcc = pycc.rtcc(cc,cclambda,ccdensity,V,magnetic=True,kick='z') -y0 = rtcc.collect_amps(cc.t1,cc.t2,cclambda.l1,cclambda.l2).astype('complex128') -ODE = rk2(h) - -# if full: run entire propagation, save amps / props / rhf wfn -if full: - ret, ret_t = rtcc.propagate(ODE, y0, tf, ti=ti, ref=False, chk=True, tchk=1, - cfile="chk_full.pk", ofile="output_full.pk",tfile="t_out_full.pk",k=2) -else: - ret, ret_t = rtcc.propagate(ODE, y0, tf, ti=ti, ref=False, chk=True, tchk=1, - cfile="chk_5.pk",k=2) diff --git a/pycc/tests/test_016_chk/ref_wfn.npy b/pycc/tests/test_016_chk/ref_wfn.npy deleted file mode 100644 index fee12277d860b9ec8d4e026a4a552d098f7f0821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11662 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 Hp8Wp@5K!M( diff --git a/pycc/tests/test_016_chk/t_out.pk b/pycc/tests/test_016_chk/t_out.pk deleted file mode 100644 index 90958395f5be805ffd6b71cee0b1ee78068f25e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158388 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

A_NK8v4GdTAVqyt4lpn3$$^NQ@P?{GZ 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
+a$0X)IApXj8F)YOQ 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 fvp=kVC=TZ@+zsoC*`xm*>Xh-WsNW<0A&-9nA diff --git a/pycc/tests/test_016_chk/t_out_full.pk b/pycc/tests/test_016_chk/t_out_full.pk deleted file mode 100644 index be97ab2ce887660bdefd0c6a2794dde1ec2d6d05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310558 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 z 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 F{y#r=TonKS diff --git a/pycc/tests/test_020_cc2.py b/pycc/tests/test_020_cc2.py deleted file mode 100644 index 741f1a0..0000000 --- a/pycc/tests/test_020_cc2.py +++ /dev/null @@ -1,75 +0,0 @@ -""" -Test CC2 equation solution using various molecule test cases. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - -def test_cc2_h2o(): - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - cc = pycc.ccwfn(rhf_wfn, model='CC2') - ecc = cc.solve_cc(e_conv,r_conv,maxiter) - epsi4 = -0.215857544656 - assert (abs(epsi4 - ecc) < 1e-11) - - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lcc = cclambda.solve_lambda(e_conv, r_conv) - lcc_psi4 = -0.215765740373555 - assert(abs(lcc - lcc_psi4) < 1e-11) - - ccdensity = pycc.ccdensity(cc, cclambda) - ecc = ccdensity.compute_energy() - assert (abs(epsi4 - ecc) < 1e-11) - -def test_cc2_h2(): - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - cc = pycc.ccwfn(rhf_wfn, model='CC2') - ecc = cc.solve_cc(e_conv,r_conv,maxiter) - epsi4 = -0.026445902512140185 - assert (abs(epsi4 - ecc) < 1e-11) - - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lcc = cclambda.solve_lambda(e_conv, r_conv) - lcc_psi4 = -0.026443139737993 - assert(abs(lcc - lcc_psi4) < 1e-11) - - ccdensity = pycc.ccdensity(cc, cclambda) - ecc = ccdensity.compute_energy() - assert (abs(epsi4 - ecc) < 1e-11) \ No newline at end of file diff --git a/pycc/tests/test_021_rk4.py b/pycc/tests/test_021_rk4.py deleted file mode 100644 index 1e297fe..0000000 --- a/pycc/tests/test_021_rk4.py +++ /dev/null @@ -1,99 +0,0 @@ -""" -Test RT-CCSD propagation with RK4 integrator on water molecule. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import numpy as np -import pycc -import pytest -from pycc.rt.integrators import rk4 -from pycc.rt.lasers import gaussian_laser -from ..data.molecules import * - - -def test_rtcc_water_cc_pvdz(): - """H2O cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-13 - r_conv = 1e-13 - - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - - hbar = pycc.cchbar(cc) - - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - - ccdensity = pycc.ccdensity(cc, cclambda) - - # Gaussian pulse (a.u.) - F_str = 0.01 - omega = 0 - sigma = 0.01 - center = 0.05 - V = gaussian_laser(F_str, omega, sigma, center) - - # RT-CC Setup - phase = 0 - t0 = 0 - tf = 0.1 - h = 0.01 - t = t0 - rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) - y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') - y = y0 - ODE = rk4(h) - t1, t2, l1, l2, phase = rtcc.extract_amps(y0) - mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) - ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) - - # For saving data at each time step. - """ - dip_x = [] - dip_y = [] - dip_z = [] - time_points = [] - dip_x.append(mu0_x) - dip_y.append(mu0_y) - dip_z.append(mu0_z) - time_points.append(t) - """ - - while t < tf: - y = ODE(rtcc.f, t, y) - t += h - t1, t2, l1, l2, phase = rtcc.extract_amps(y) - mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) - ecc = rtcc.lagrangian(t, t1, t2, l1, l2) - """ - dip_x.append(mu_x) - dip_y.append(mu_y) - dip_z.append(mu_z) - time_points.append(t) - """ - - print(mu_z) - mu_z_ref = -0.0780067603267549 # computed by removing SCF from original ref - assert (abs(mu_z_ref - mu_z.real) < 1e-4) - - #return (dip_x, dip_y, dip_z, time_points) - -#dip = test_rtcc_water_cc_pvdz() -#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) - - - diff --git a/pycc/tests/test_022_adap_int.py b/pycc/tests/test_022_adap_int.py deleted file mode 100644 index 4cf520a..0000000 --- a/pycc/tests/test_022_adap_int.py +++ /dev/null @@ -1,102 +0,0 @@ -""" -Test RT-CCSD propagation with Cash-Karp integrator (adaptive) on water molecule. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import numpy as np -import pycc -import pytest -from pycc.rt.integrators import ck -from pycc.rt.lasers import gaussian_laser -from ..data.molecules import * - - -def test_rtcc_water_cc_pvdz(): - """H2O cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-13 - r_conv = 1e-13 - - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - - hbar = pycc.cchbar(cc) - - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - - ccdensity = pycc.ccdensity(cc, cclambda) - - # Gaussian pulse (a.u.) - F_str = 0.01 - omega = 0 - sigma = 0.01 - center = 0.05 - V = gaussian_laser(F_str, omega, sigma, center) - - # RT-CC Setup - phase = 0 - t0 = 0 - tf = 1 - h = 0.01 - t = t0 - rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) - y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') - y = y0 - # Setting for the adaptive integrator - maxiter = 10 - yconv = 1e-7 - ODE = ck(maxiter, yconv) - t1, t2, l1, l2, phase = rtcc.extract_amps(y0) - mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) - ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) - - # For saving data at each time step. - """ - dip_x = [] - dip_y = [] - dip_z = [] - time_points = [] - dip_x.append(mu0_x) - dip_y.append(mu0_y) - dip_z.append(mu0_z) - time_points.append(t) - """ - - while t < tf: - (y, h_old, h) = ODE(rtcc.f, t, y, h) - t += h_old - t1, t2, l1, l2, phase = rtcc.extract_amps(y) - mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) - ecc = rtcc.lagrangian(t, t1, t2, l1, l2) - """ - dip_x.append(mu_x) - dip_y.append(mu_y) - dip_z.append(mu_z) - time_points.append(t) - """ - - print(mu_z) - mu_z_ref = -0.0780067603267549 # computed by removing SCF from original ref - assert (abs(mu_z_ref - mu_z.real) < 1e-3) - - #return (dip_x, dip_y, dip_z, time_points) - -#dip = test_rtcc_water_cc_pvdz() -#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) - - - diff --git a/pycc/tests/test_023_ms_int.py b/pycc/tests/test_023_ms_int.py deleted file mode 100644 index b48f477..0000000 --- a/pycc/tests/test_023_ms_int.py +++ /dev/null @@ -1,114 +0,0 @@ -""" -Test RT-CCSD propagation with mixed-step-size integrator on water molecule. -This method is designed for a strong external field. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import numpy as np -import pycc -import pytest -from pycc.rt.integrators import rk4 -from pycc.rt.lasers import gaussian_laser -from ..data.molecules import * - - -def test_rtcc_water_cc_pvdz(): - """H2O cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-13 - r_conv = 1e-13 - - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - - hbar = pycc.cchbar(cc) - - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - - ccdensity = pycc.ccdensity(cc, cclambda) - - # Gaussian pulse (a.u.) - F_str = 100 - omega = 0 - # The pulse is chosen to be thinner for less time steps with h_small(see below). - sigma = 0.0001 - center = 0.0005 - V = gaussian_laser(F_str, omega, sigma, center) - # Cutoff for the field to decide which step size is used - e_field = 1e-7 - - # RT-CC Setup - phase = 0 - t0 = 0 - tf = 0.1 - h_small = 1e-5 - h = 0.01 - t = t0 - rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) - y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') - y = y0 - ODE1 = rk4(h_small) - ODE2 = rk4(h) - t1, t2, l1, l2, phase = rtcc.extract_amps(y0) - mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) - ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) - - #mu_z_ref = 0.008400738202694 # a.u. - - # For saving data at each time step. - """ - dip_x = [] - dip_y = [] - dip_z = [] - time_points = [] - dip_x.append(mu0_x) - dip_y.append(mu0_y) - dip_z.append(mu0_z) - time_points.append(t) - """ - - while t < tf: - # When the field is on - if V(t) > e_field: - y = ODE1(rtcc.f, t, y) - h_i = h_small - # When the field is off - else: - y = ODE2(rtcc.f, t, y) - h_i = h - t += h_i - t1, t2, l1, l2, phase = rtcc.extract_amps(y) - mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) - ecc = rtcc.lagrangian(t, t1, t2, l1, l2) - """ - dip_x.append(mu_x) - dip_y.append(mu_y) - dip_z.append(mu_z) - time_points.append(t) - """ - - print(mu_z) - mu_z_ref = -0.0780067603267549 # computed by removing SCF from original ref - assert (abs(mu_z_ref - mu_z.real) < 1e-1) - - #return (dip_x, dip_y, dip_z, time_points) - -#dip = test_rtcc_water_cc_pvdz() -#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) - - - diff --git a/pycc/tests/test_024_contract_cpu.py b/pycc/tests/test_024_contract_cpu.py deleted file mode 100644 index 94922cd..0000000 --- a/pycc/tests/test_024_contract_cpu.py +++ /dev/null @@ -1,102 +0,0 @@ -""" -Test RT-CCSD propagation with RK4 integrator on water molecule. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import numpy as np -import pycc -import pytest -from pycc.rt.integrators import rk4 -from pycc.rt.lasers import gaussian_laser -from ..data.molecules import * - - -def test_rtcc_water_cc_pvdz(): - """H2O cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-13 - r_conv = 1e-13 - - # The device for the calculation (CPU/GPU) can be specified. - # Option: 'CPU', 'GPU' - # Default: 'CPU' - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - - hbar = pycc.cchbar(cc) - - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - - ccdensity = pycc.ccdensity(cc, cclambda) - - # Gaussian pulse (a.u.) - F_str = 0.01 - omega = 0 - sigma = 0.01 - center = 0.05 - V = gaussian_laser(F_str, omega, sigma, center) - - # RT-CC Setup - phase = 0 - t0 = 0 - tf = 0.1 - h = 0.01 - t = t0 - rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) - y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') - y = y0 - ODE = rk4(h) - t1, t2, l1, l2, phase = rtcc.extract_amps(y0) - mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) - ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) - - # For saving data at each time step. - """ - dip_x = [] - dip_y = [] - dip_z = [] - time_points = [] - dip_x.append(mu0_x) - dip_y.append(mu0_y) - dip_z.append(mu0_z) - time_points.append(t) - """ - - while t < tf: - y = ODE(rtcc.f, t, y) - t += h - t1, t2, l1, l2, phase = rtcc.extract_amps(y) - mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) - ecc = rtcc.lagrangian(t, t1, t2, l1, l2) - """ - dip_x.append(mu_x) - dip_y.append(mu_y) - dip_z.append(mu_z) - time_points.append(t) - """ - - print(mu_z) - mu_z_ref = -0.0780067603267549 # computed by removing SCF from original ref - assert (abs(mu_z_ref - mu_z.real) < 1e-4) - - #return (dip_x, dip_y, dip_z, time_points) - -#dip = test_rtcc_water_cc_pvdz() -#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) - - - diff --git a/pycc/tests/test_025_contract_gpu.py b/pycc/tests/test_025_contract_gpu.py deleted file mode 100644 index 59de5ca..0000000 --- a/pycc/tests/test_025_contract_gpu.py +++ /dev/null @@ -1,103 +0,0 @@ -""" -Test RT-CCSD propagation with RK4 integrator on water molecule on GPU. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import numpy as np -import pycc -import pytest -from pycc.rt.integrators import rk4 -from pycc.rt.lasers import gaussian_laser -from ..data.molecules import * -import torch - -pytestmark = pytest.mark.skipif(not torch.cuda.is_available(), reason="tests for GPU only") -def test_rtcc_water_cc_pvdz(): - """H2O cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-13 - r_conv = 1e-13 - - # The device for the calculation (CPU/GPU) can be specified. - # Option: 'CPU', 'GPU' - # Default: 'CPU' - cc = pycc.ccwfn(rhf_wfn, device='GPU') - ecc = cc.solve_cc(e_conv, r_conv) - - hbar = pycc.cchbar(cc) - - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - - ccdensity = pycc.ccdensity(cc, cclambda) - - # Gaussian pulse (a.u.) - F_str = 0.01 - omega = 0 - sigma = 0.01 - center = 0.05 - V = gaussian_laser(F_str, omega, sigma, center) - - # RT-CC Setup - phase = 0 - t0 = 0 - tf = 0.1 - h = 0.01 - t = t0 - rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) - y0 = rtcc.collect_amps(phase, cc.t1, cc.t2, cclambda.l1, cclambda.l2).type(torch.complex128) - y = y0 - ODE = rk4(h) - phase, t1, t2, l1, l2 = rtcc.extract_amps(y0) - mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) - ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) - - # For saving data at each time step. - """ - dip_x = [] - dip_y = [] - dip_z = [] - time_points = [] - dip_x.append(mu0_x) - dip_y.append(mu0_y) - dip_z.append(mu0_z) - time_points.append(t) - """ - - while t < tf: - y = ODE(rtcc.f, t, y) - t += h - phase, t1, t2, l1, l2 = rtcc.extract_amps(y) - mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) - ecc = rtcc.lagrangian(t, t1, t2, l1, l2) - """ - dip_x.append(mu_x) - dip_y.append(mu_y) - dip_z.append(mu_z) - time_points.append(t) - """ - - print(mu_z) - mu_z_ref = -0.34894577 - assert (abs(mu_z_ref - mu_z.real) < 1e-4) - - #return (dip_x, dip_y, dip_z, time_points) - -#dip = test_rtcc_water_cc_pvdz() -#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) - - - diff --git a/pycc/tests/test_026_autocorrelation.py b/pycc/tests/test_026_autocorrelation.py deleted file mode 100644 index a2790fa..0000000 --- a/pycc/tests/test_026_autocorrelation.py +++ /dev/null @@ -1,78 +0,0 @@ -""" -Test RT-CCSD propagation on He atom. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from scipy.integrate import complex_ode as ode -from pycc.rt.lasers import sine_square_laser -from ..data.molecules import * - -def test_rtcc_he_cc_pvdz_auto(): - """He cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["He"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-13 - r_conv = 1e-13 - - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - - hbar = pycc.cchbar(cc) - - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - - ccdensity = pycc.ccdensity(cc, cclambda) - - # Sine squared pulse (a.u.) - F_str = 1.0 - omega = 2.87 - tprime = 5.0 - V = sine_square_laser(F_str, omega, tprime) - - # RT-CC Setup - phase = 0 - t0 = 0 - tf = 1.0 - h = 0.01 - rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) - y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') - ODE = ode(rtcc.f).set_integrator('vode',atol=1e-13,rtol=1e-13) - ODE.set_initial_value(y0, t0) - - t1, t2, l1, l2, phase = rtcc.extract_amps(y0) - mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) - ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) - auto = rtcc.autocorrelation(y0, y0) - - # From Håkon's He test case - A_t_t0_ref = -0.967109840555436 + 0.250976568630115j - - while ODE.successful() and ODE.t < tf: - y = ODE.integrate(ODE.t+h) - t = ODE.t - t1, t2, l1, l2, phase = rtcc.extract_amps(y) - mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) - ecc = rtcc.lagrangian(t, t1, t2, l1, l2) - auto = rtcc.autocorrelation(y0, y) - - print(f"{auto:.15f}") - print(f"{A_t_t0_ref:.15f}") - - assert (abs(A_t_t0_ref.real - auto.real) < 1e-10) - assert (abs(A_t_t0_ref.imag - auto.imag) < 1e-10) - diff --git a/pycc/tests/test_027_linresp.py b/pycc/tests/test_027_linresp.py deleted file mode 100644 index 3b77387..0000000 --- a/pycc/tests/test_027_linresp.py +++ /dev/null @@ -1,82 +0,0 @@ -""" -Test CCSD linear response functions. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - - -def test_polar_h2o_cc_pvdz(): - """H2O cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'STO-3G', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-14, - 'd_convergence': 1e-14, - 'r_convergence': 1e-14, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-13 - r_conv = 1e-13 - - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - density = pycc.ccdensity(cc, cclambda) - - resp = pycc.ccresponse(density) - omega = 0.01 - check = resp.pertcheck(omega) # checks perturbed wave functions for all available operators - - # From Psi4: Electric- and magnetic-dipole pseudo-responses at +/-omega - ref = { -"MU_X_0.010000": 0.059711553704, -"MU_X_-0.010000": 0.056273457658, -"MU_Y_0.010000": 7.341419446523, -"MU_Y_-0.010000": 7.129244769943, -"MU_Z_0.010000": 3.071438076138, -"MU_Z_-0.010000": 2.989674229480, -"M_X_0.010000": 0.607770924164, -"M_Y_0.010000": 0.710225214533, -"M_Z_0.010000": 0.775111802368, -"M*_X_-0.010000": 0.586575382108, -"M*_Y_-0.010000": 0.667622954134, -"M*_Z_-0.010000": 0.736881617713, -"P_X_-0.010000": 0.097163221394, -"P_Y_-0.010000": 2.169072875250, -"P_Z_-0.010000": 1.497365713340, -"P*_X_0.010000": 0.103276788499, -"P*_Y_0.010000": 2.228622130154, -"P*_Z_0.010000": 1.536627133369, -"Q_XX_0.010000": 5.942498696750, -"Q_XY_0.010000": 0.202389983457, -"Q_XZ_0.010000": 0.186067317836, -"Q_YX_0.010000": 0.202389983457, -"Q_YY_0.010000": 7.147772196224, -"Q_YZ_0.010000": 19.240803761856, -"Q_ZX_0.010000": 0.186067317836, -"Q_ZY_0.010000": 19.240803761856, -"Q_ZZ_0.010000": 0.250165812115, -"Q_XX_-0.010000": 5.811357442660, -"Q_XY_-0.010000": 0.192591582644, -"Q_XZ_-0.010000": 0.175163473590, -"Q_YX_-0.010000": 0.192591582644, -"Q_YY_-0.010000": 6.971750667839, -"Q_YZ_-0.010000": 18.721795464544, -"Q_ZX_-0.010000": 0.175163473590, -"Q_ZY_-0.010000": 18.721795464544, -"Q_ZZ_-0.010000": 0.241096711760} - - for key in ref: - print(f"key = {key}; ref = {ref[key]}; check = {check[key]}") - assert(abs(check[key] - ref[key]) < 1e-11) diff --git a/pycc/tests/test_028_pnoppcc.py b/pycc/tests/test_028_pnoppcc.py deleted file mode 100644 index c909673..0000000 --- a/pycc/tests/test_028_pnoppcc.py +++ /dev/null @@ -1,78 +0,0 @@ -""" -Test basic PNO++-CCSD energy -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - - -def test_pnopp_ccsd(): - """H2O PNO++-CCSD Test""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 8}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - max_diis = 8 - - ccsd = pycc.ccwfn(rhf_wfn, local='PNO++', local_cutoff=1e-7, it2_opt=False) - eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) - - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) - - esim = -0.216064367834782 - lsim = -0.211938482158711 - - assert (abs(esim - eccsd) < 1e-7) - assert (abs(lsim - lccsd) < 1e-7) - -def test_pnopp_ccsd_opt(): - """H2O PNO++-CCSD with Optimized Initial T2 Amplitudes""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 8}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - max_diis = 8 - - ccsd = pycc.ccwfn(rhf_wfn, local='PNO++', local_cutoff=1e-9) - eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) - - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) - - esim = -0.223695614177277 - lsim = -0.219502543226770 - - assert (abs(esim - eccsd) < 1e-7) - assert (abs(lsim - lccsd) < 1e-7) diff --git a/pycc/tests/test_029_delta.py b/pycc/tests/test_029_delta.py deleted file mode 100644 index 74d1763..0000000 --- a/pycc/tests/test_029_delta.py +++ /dev/null @@ -1,27 +0,0 @@ -""" -Test delta_pulse_laser function. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import numpy as np -import pycc -import pytest -from pycc.rt.lasers import delta_pulse_laser - -def test_delta_pulse(): - F_str = 1 - center = 5 - V = delta_pulse_laser(F_str, center) - V_test = np.zeros(20) - V_ref = np.zeros(20) - V_ref[center - 1] = 1 - for i in range(20): - V_test[i] = V(i) - - assert V_test.all() == V_ref.all() - - - - - diff --git a/pycc/tests/test_030_sp.py b/pycc/tests/test_030_sp.py deleted file mode 100644 index 1d52141..0000000 --- a/pycc/tests/test_030_sp.py +++ /dev/null @@ -1,92 +0,0 @@ -""" -Test RT-CCSD propagation with RK4 integrator on water molecule. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import numpy as np -import pycc -import pytest -from pycc.rt.integrators import rk4 -from pycc.rt.lasers import gaussian_laser -from ..data.molecules import * - -def test_rtcc_water_cc_pvdz(): - """H2O cc-pVDZ""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pvdz', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-7 - r_conv = 1e-7 - - # The precision for the calculation (single-precision (sp) - # /double-precision (dp)) can be specified. - # Option: 'SP', 'DP' - # Default: 'DP' - #cc = pycc.ccwfn(rhf_wfn) - cc = pycc.ccwfn(rhf_wfn, precision='SP') - ecc = cc.solve_cc(e_conv, r_conv) - - # Check CCSD energy - epsi4 = -0.223910018703551 - assert (abs(epsi4 - ecc) < 1e-7) - - hbar = pycc.cchbar(cc) - - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - - # Check CCSD pseudo energy - lepsi4 = -0.219688229733875 - assert (abs(lepsi4 - lecc) < 1e-7) - - ccdensity = pycc.ccdensity(cc, cclambda) - - # Gaussian pulse (a.u.) - F_str = 0.01 - omega = 0 - sigma = 0.01 - center = 0.05 - V = gaussian_laser(F_str, omega, sigma, center) - - # RT-CC Setup - phase = 0 - t0 = 0 - tf = 0.01 - h = 0.01 - t = t0 - rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) - y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase) - y = y0 - ODE = rk4(h) - t1, t2, l1, l2, phase = rtcc.extract_amps(y0) - mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) - ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) - - # Check dipole moment - mu0_z_ref = -0.0780069121607703 # computed by removing SCF from original ref - assert(abs(mu0_z_ref - mu0_z) < 1e-6) - - while t < tf: - y = ODE(rtcc.f, t, y) - t += h - t1, t2, l1, l2, phase = rtcc.extract_amps(y) - mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) - ecc = rtcc.lagrangian(t, t1, t2, l1, l2) - - print(mu_z) - - # Check the dipole value at time step 1 - mu_z_ref = -0.0780069121607703 # computed by removing SCF from original ref - assert (abs(mu_z_ref - mu_z.real) < 1e-6) - diff --git a/pycc/tests/test_031_cc3.py b/pycc/tests/test_031_cc3.py deleted file mode 100644 index cb0f0a3..0000000 --- a/pycc/tests/test_031_cc3.py +++ /dev/null @@ -1,89 +0,0 @@ -""" -Test CC3 equation solution using various molecule test cases. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * -import numpy as np - -# H2O/cc-pVDZ -def test_cc3_h2o(): - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O_Teach"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - cc = pycc.ccwfn(rhf_wfn, model='CC3') - ecc = cc.solve_cc(e_conv,r_conv,maxiter) - epsi4 = -0.227888246840310 - ecfour = -0.2278882468404231 - assert (abs(epsi4 - ecc) < 1e-11) - - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lcc = cclambda.solve_lambda(e_conv, r_conv) - print("lcc: ", lcc) - lcc_cfour = -0.2233231845185215 - assert(abs(lcc - lcc_cfour) < 1e-11) - - ccdensity = pycc.ccdensity(cc, cclambda) - # no laser - rtcc = pycc.rtcc(cc, cclambda, ccdensity, None, magnetic = False) - - CFOUR = [0, 0, 0.7703875967] # CFOUR total dipole (CC3 + SCF + nuclear) - scf = rhf_wfn.variable('SCF DIPOLE') # PSI4 reference dipole (SCF + nuclear) - ref = CFOUR - scf # Final reference: CC3 only - - mu_x, mu_y, mu_z = rtcc.dipole(cc.t1, cc.t2, cclambda.l1, cclambda.l2) - - assert (abs(ref[1] - np.real(mu_y)) < 1E-10) - assert (abs(ref[2] - np.real(mu_z)) < 1E-10) - -# H2/cc-pVDZ -""" -def test_cc3_h2(): - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - cc = pycc.ccwfn(rhf_wfn, model='CC3') - ecc = cc.solve_cc(e_conv,r_conv,maxiter) - epsi4 = -0.034689283017250 - ecfour = -0.0346892830172550 - assert (abs(epsi4 - ecc) < 1e-11) - - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lcc = cclambda.solve_lambda(e_conv, r_conv) - lcc_cfour = -0.0341034656430758 - assert(abs(lcc - lcc_cfour) < 1e-11) -""" - diff --git a/pycc/tests/test_032_localccd.py b/pycc/tests/test_032_localccd.py deleted file mode 100644 index ee5888b..0000000 --- a/pycc/tests/test_032_localccd.py +++ /dev/null @@ -1,124 +0,0 @@ -""" -Test basic PNO-CCD, PNO++-CCD, PAO-CCD energies -""" -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - -def test_pno_ccd(): - """H2O PNO-CCD Test""" - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 100 - e_conv = 1e-12 - r_conv = 1e-12 - - #simulation code of pno-ccd - ccd_sim = pycc.ccwfn(rhf_wfn, model='CCD',local='PNO', local_cutoff=1e-5,it2_opt=False,filter=True) - eccd_sim = ccd_sim.solve_cc(e_conv, r_conv, maxiter) - - #pno-ccd - lccd = pycc.ccwfn(rhf_wfn,model='CCD', local='PNO', local_cutoff=1e-5,it2_opt=False) - elccd = lccd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) - - assert(abs(eccd_sim - elccd) < 1e-12) - -def test_pnopp_ccd(): - """H2O PNO++ CCD Test""" - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': '6-31G', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 100 - e_conv = 1e-12 - r_conv = 1e-12 - - #simulation code of pno++-ccd - ccd_sim = pycc.ccwfn(rhf_wfn, model='CCD',local='PNO++', local_cutoff=1e-7,it2_opt=False,filter=True) - eccd_sim = ccd_sim.solve_cc(e_conv, r_conv, maxiter) - - #pno++-ccd - lccd = pycc.ccwfn(rhf_wfn,model='CCD', local='PNO++', local_cutoff=1e-7,it2_opt=False) - elccd = lccd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) - - assert(abs(eccd_sim - elccd) < 1e-12) - -def test_pno_ccd_opt(): - """H2O PNO-CCD with Optimized Initial T2 Amplitudes""" - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 100 - e_conv = 1e-12 - r_conv = 1e-12 - - #simulation code of pno-ccd - ccd_sim = pycc.ccwfn(rhf_wfn, model='CCD',local='PNO', local_cutoff=1e-7,filter=True) - eccd_sim = ccd_sim.solve_cc(e_conv, r_conv, maxiter) - - #pno-ccd - lccd = pycc.ccwfn(rhf_wfn,model='CCD', local='PNO', local_cutoff=1e-7) - elccd = lccd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) - - assert(abs(eccd_sim - elccd) < 1e-12) - -def test_pao_ccd_opt(): - """H2O PAO-CCD with Optimized Initial T2 Amplitudes""" - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 100 - e_conv = 1e-12 - r_conv = 1e-12 - - #simulation code of pao-ccd - ccd_sim = pycc.ccwfn(rhf_wfn, model='CCD',local='PAO', local_cutoff=2e-2,filter=True) - eccd_sim = ccd_sim.solve_cc(e_conv, r_conv, maxiter) - - #pao-ccd - lccd = pycc.ccwfn(rhf_wfn,model='CCD', local='PAO', local_cutoff=2e-2) - elccd = lccd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) - - assert(abs(eccd_sim - elccd) < 1e-12) diff --git a/pycc/tests/test_033_localccsd.py b/pycc/tests/test_033_localccsd.py deleted file mode 100644 index 764ffbe..0000000 --- a/pycc/tests/test_033_localccsd.py +++ /dev/null @@ -1,124 +0,0 @@ -""" -Test basic PNO-CCSD, PNO++-CCSD, PAO-CCSD energies -""" -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - -def test_pno_ccsd(): - """H2O PNO-CCSD Test""" - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 100 - e_conv = 1e-12 - r_conv = 1e-12 - - #simulation code of pno-ccsd - ccsd_sim = pycc.ccwfn(rhf_wfn, model='CCSD',local='PNO', local_cutoff=1e-5,it2_opt=False,filter=True) - eccsd_sim = ccsd_sim.solve_cc(e_conv, r_conv, maxiter) - - #pno-ccsd - lccsd = pycc.ccwfn(rhf_wfn,model='CCSD', local='PNO', local_cutoff=1e-5,it2_opt=False) - elccsd = lccsd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) - - assert(abs(eccsd_sim - elccsd) < 1e-12) - -def test_pnopp_ccsd(): - """H2O PNO++ CCSD Test""" - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': '6-31G', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 100 - e_conv = 1e-12 - r_conv = 1e-12 - - #simulation code of pno++-ccsd - ccsd_sim = pycc.ccwfn(rhf_wfn, model='CCSD',local='PNO++', local_cutoff=1e-7,it2_opt=False,filter=True) - eccsd_sim = ccsd_sim.solve_cc(e_conv, r_conv, maxiter) - - #pno++-ccsd - lccsd = pycc.ccwfn(rhf_wfn,model='CCSD', local='PNO++', local_cutoff=1e-7,it2_opt=False) - elccsd = lccsd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) - - assert(abs(eccsd_sim - elccsd) < 1e-12) - -def test_pno_ccsd_opt(): - """H2O PNO-CCSD with Optimized Initial T2 Amplitudes""" - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 100 - e_conv = 1e-12 - r_conv = 1e-12 - - #simulation code of pno-ccsd - ccsd_sim = pycc.ccwfn(rhf_wfn, model='CCSD',local='PNO', local_cutoff=1e-5,filter=True) - eccsd_sim = ccsd_sim.solve_cc(e_conv, r_conv, maxiter) - - #pno-ccsd - lccsd = pycc.ccwfn(rhf_wfn,model='CCSD', local='PNO', local_cutoff=1e-5) - elccsd = lccsd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) - - assert(abs(eccsd_sim - elccsd) < 1e-12) - -def test_pao_ccsd_opt(): - """H2O PAO-CCSD with Optimized Initial T2 Amplitudes""" - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 100 - e_conv = 1e-12 - r_conv = 1e-12 - - #simulation code of pao-ccsd - ccsd_sim = pycc.ccwfn(rhf_wfn, model='CCSD',local='PAO', local_cutoff=2e-2,filter=True) - eccsd_sim = ccsd_sim.solve_cc(e_conv, r_conv, maxiter) - - #pao-ccsd - lccsd = pycc.ccwfn(rhf_wfn,model='CCSD', local='PAO', local_cutoff=2e-2) - elccsd = lccsd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) - - assert(abs(eccsd_sim - elccsd) < 1e-12) diff --git a/pycc/tests/test_034_ccsd_t_density.py b/pycc/tests/test_034_ccsd_t_density.py deleted file mode 100644 index e924b7b..0000000 --- a/pycc/tests/test_034_ccsd_t_density.py +++ /dev/null @@ -1,85 +0,0 @@ -""" -Test CCSD equation solution using various molecule test cases. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * -from ..cctriples import t_vikings, t_vikings_inverted, t_tjl - -def test_ccsd_t_h2o(): - """H2O cc-pVDZ""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'STO-3G', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry( -""" -O 0.000000000000000 0.000000000000000 0.143225857166674 -H 0.000000000000000 -1.638037301628121 -1.136549142277225 -H 0.000000000000000 1.638037301628121 -1.136549142277225 -symmetry c1 -units bohr -""" -) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - - etot = psi4.energy('CCSD(T)') - ecc_psi4 = psi4.variable('CCSD(T) CORRELATION ENERGY') - - cc = pycc.ccwfn(rhf_wfn, model='ccsd(t)', make_t3_density=True) - ecc = cc.solve_cc(e_conv, r_conv, maxiter, max_diis=0) - assert (abs(ecc_psi4 - ecc) < 1e-11) - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lcc = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis=0) - ccdensity = pycc.ccdensity(cc, cclambda) - ecc_density = ccdensity.compute_energy() - eone = ccdensity.eone - etwo = ccdensity.etwo - - lambda_psi4 = -0.069084521221746 - eone_psi4 = 0.104463374777302 - etwo_psi4 = -0.175243393781829 - assert (abs(lambda_psi4 - lcc) < 1e-11) - assert (abs(eone_psi4 - eone) < 1e-11) - assert (abs(etwo_psi4 - etwo) < 1e-11) - - psi4.core.clean() - - psi4.set_options({'basis': 'cc-pVDZ'}) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - etot = psi4.energy('CCSD(T)') - ecc_psi4 = psi4.variable('CCSD(T) CORRELATION ENERGY') - - cc = pycc.ccwfn(rhf_wfn, model='ccsd(t)', make_t3_density=True) - ecc = cc.solve_cc(e_conv, r_conv, maxiter) - assert (abs(ecc_psi4 - ecc) < 1e-11) - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lcc = cclambda.solve_lambda(e_conv, r_conv) - ccdensity = pycc.ccdensity(cc, cclambda) - ecc_density = ccdensity.compute_energy() - eone = ccdensity.eone - etwo = ccdensity.etwo - - lambda_psi4 = -0.227199866607450 - eone_psi4 = 0.251210862963227 - etwo_psi4 = -0.479006477929931 - assert (abs(lambda_psi4 - lcc) < 1e-11) - assert (abs(eone_psi4 - eone) < 1e-11) - assert (abs(etwo_psi4 - etwo) < 1e-11) diff --git a/pycc/tests/test_035_eomccsd.py b/pycc/tests/test_035_eomccsd.py deleted file mode 100644 index 8d757ae..0000000 --- a/pycc/tests/test_035_eomccsd.py +++ /dev/null @@ -1,164 +0,0 @@ -""" -Test EOM-CCSD solver. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * -import numpy as np -import sys - -np.set_printoptions(precision=10, linewidth=300, threshold=sys.maxsize, suppress=True) - -# H2O/cc-pVDZ -def test_eomccsd_h2o(): - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O_Teach"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv,r_conv,maxiter) - hbar = pycc.cchbar(cc) - eom = pycc.cceom(hbar) - - N = 3 - maxiter = 75 - e_conv = 1e-7 - r_conv = 1e-7 - - guess = 'hbar_ss' - eom_E_guess_1, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) - - guess = 'cis' - eom_E_guess_2, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) - - guess = 'unit' - eom_E_guess_3, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) - - psi4.set_options({'cceom__e_convergence': e_conv, - 'cceom__r_convergence': r_conv, - 'roots_per_irrep': [N]}) - psi4.energy('eom-ccsd') - for i in range(N): - var_str = "CCSD ROOT {} CORRELATION ENERGY".format(i + 1) - psi_E = psi4.core.variable(var_str) - assert(abs(eom_E_guess_1[i] - psi_E) < 1e-5) - assert(abs(eom_E_guess_2[i] - psi_E) < 1e-5) - assert(abs(eom_E_guess_3[i] - psi_E) < 1e-5) - -# Test frozen core -def test_eomccsd_h2o_fc(): - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'true', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry(moldict["H2O_Teach"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv,r_conv,maxiter) - hbar = pycc.cchbar(cc) - eom = pycc.cceom(hbar) - - N = 3 - maxiter = 75 - e_conv = 1e-7 - r_conv = 1e-7 - - guess = 'hbar_ss' - eom_E_guess_1, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) - - guess = 'cis' - eom_E_guess_2, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) - - guess = 'unit' - eom_E_guess_3, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) - - psi4.set_options({'cceom__e_convergence': e_conv, - 'cceom__r_convergence': r_conv, - 'roots_per_irrep': [N], - 'restart': 'false'}) - psi4.energy('eom-ccsd') - for i in range(N): - var_str = "CCSD ROOT {} CORRELATION ENERGY".format(i + 1) - psi_E = psi4.core.variable(var_str) - assert(abs(eom_E_guess_1[i] - psi_E) < 1e-5) - assert(abs(eom_E_guess_2[i] - psi_E) < 1e-5) - assert(abs(eom_E_guess_3[i] - psi_E) < 1e-5) - -def test_eomccsd_c2h4_fc(): - # Psi4 Setup - psi4.core.clean() - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'true', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12, - 'diis': 1}) - mol = psi4.geometry("pubchem:ethylene") - mol.reset_point_group("c1") - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv,r_conv,maxiter) - hbar = pycc.cchbar(cc) - eom = pycc.cceom(hbar) - - N = 3 - maxiter = 75 - e_conv = 1e-7 - r_conv = 1e-7 - - guess = 'hbar_ss' - eom_E_guess_1, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) - - guess = 'cis' - eom_E_guess_2, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) - - guess = 'unit' - eom_E_guess_3, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) - - psi4.set_options({'cceom__e_convergence': e_conv, - 'cceom__r_convergence': r_conv, - 'roots_per_irrep': [N], - 'restart': 'false'}) - psi4.energy('eom-ccsd') - for i in range(N): - var_str = "CCSD ROOT {} CORRELATION ENERGY".format(i + 1) - psi_E = psi4.core.variable(var_str) - assert(abs(eom_E_guess_1[i] - psi_E) < 1e-5) - assert(abs(eom_E_guess_2[i] - psi_E) < 1e-5) - assert(abs(eom_E_guess_3[i] - psi_E) < 1e-5) - diff --git a/pycc/tests/test_036_cpnoppcc.py b/pycc/tests/test_036_cpnoppcc.py deleted file mode 100644 index a265cb7..0000000 --- a/pycc/tests/test_036_cpnoppcc.py +++ /dev/null @@ -1,80 +0,0 @@ -""" -Test basic CPNO++-CCSD energy -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - - -def test_cpnopp_ccsd(): - """H2O CPNO++-CCSD Test""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 8}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - max_diis = 8 - - ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7, it2_opt=False) - eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) - - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) - - #Ruhee's ccsd_lpno code - esim = -0.22303320613504354 - lsim = -0.21890326836263854 - - assert (abs(esim - eccsd) < 1e-7) - assert (abs(lsim - lccsd) < 1e-7) - -def test_pnopp_ccsd_opt(): - """H2O CPNO++-CCSD with Optimized Initial T2 Amplitudes""" - # Psi4 Setup - psi4.set_memory('2 GB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pVDZ', - 'scf_type': 'pk', - 'mp2_type': 'conv', - 'freeze_core': 'false', - 'e_convergence': 1e-13, - 'd_convergence': 1e-13, - 'r_convergence': 1e-13, - 'diis': 8}) - mol = psi4.geometry(moldict["H2O"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - maxiter = 75 - e_conv = 1e-12 - r_conv = 1e-12 - max_diis = 8 - - ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7) - eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) - - hbar = pycc.cchbar(ccsd) - cclambda = pycc.cclambda(ccsd, hbar) - lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) - - #Comparing against simulation code - esim = -0.223866820104919 - lsim = -0.21966259490352782 - - assert (abs(esim - eccsd) < 1e-7) - assert (abs(lsim - lccsd) < 1e-7) diff --git a/pycc/tests/test_037_quadresp.py b/pycc/tests/test_037_quadresp.py deleted file mode 100644 index be198b2..0000000 --- a/pycc/tests/test_037_quadresp.py +++ /dev/null @@ -1,93 +0,0 @@ -""" -Test CCSD quadratic response function. -""" - -# Import package, test suite, and other packages as needed -import psi4 -import pycc -import pytest -from ..data.molecules import * - -def test_ccsd_SHG(): - """ H2O Second Harmonic Generation CCSD Test """ - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'aug-cc-pvdz', - 'scf_type': 'pk', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12}) - mol = psi4.geometry(moldict["H2O_D"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-12 - r_conv = 1e-12 - - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - density = pycc.ccdensity(cc, cclambda) - - resp = pycc.ccresponse(density) - - # SHG frequencies - omega1 = 0.0656 - omega2 = 0.0656 - - resp.pert_quadresp(omega1, omega2) - SHG = resp.hyperpolar() - - #Dalton - H2O_SHG = -19.7591180824 - - # Other system's Dalton SHG value, all validated #PyCC SHG values - #CO_SHG = -32.4314012752 #CO = -32.431401275449 - #HF_SHG = 10.23985062319 #HF = 10.239850624779 - #HCl_SHG = -21.348258444480 #HCl = -21.348258543702 - - assert(abs(SHG - H2O_SHG) < 1e-7) - -def test_ccsd_OR(): - """ CO Optical Refractivity CCSD Test """ - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'aug-cc-pvdz', - 'scf_type': 'pk', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12}) - mol = psi4.geometry(moldict["CO"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-12 - r_conv = 1e-12 - - cc = pycc.ccwfn(rhf_wfn) - ecc = cc.solve_cc(e_conv, r_conv) - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - density = pycc.ccdensity(cc, cclambda) - - resp = pycc.ccresponse(density) - - #OR frequencies - omega1 = -0.0656 - omega2 = 0.0656 - - resp.pert_quadresp(omega1, omega2) - OR = resp.hyperpolar() - - #Dalton - CO_OR = -29.3364710172 - - # Other system's Dalton OR value, all validated #PyCC OR values - #H2O_OR = -17.257079066 #H2O = 17.257079081719 - #HF_OR = 9.6113353644 #HF = 9.611335367514 - #HCl_OR = -19.34209144399 #HCl = -19.342091493471 - - assert(abs(OR - CO_OR) < 1e-7) diff --git a/pycc/tests/test_038_sim_quadresp.py b/pycc/tests/test_038_sim_quadresp.py index a6e2765..37576f4 100644 --- a/pycc/tests/test_038_sim_quadresp.py +++ b/pycc/tests/test_038_sim_quadresp.py @@ -7,55 +7,12 @@ import pycc import pytest from ..data.molecules import * - -def test_PNO_ccsd_SHG(): - """ H2O Second Harmonic Generation PNO-CCSD Test using local filter""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'aug-cc-pvdz', - 'scf_type': 'pk', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12}) - mol = psi4.geometry(moldict["H2O_D"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-12 - r_conv = 1e-12 - - cc = pycc.ccwfn(rhf_wfn, local="PNO", local_cutoff=0, filter=True) - ecc = cc.solve_cc(e_conv, r_conv) - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - density = pycc.ccdensity(cc, cclambda) - - resp = pycc.ccresponse(density) - - # SHG frequencies - omega1 = 0.0656 - omega2 = 0.0656 - - resp.pert_quadresp(omega1, omega2) - SHG = resp.hyperpolar() - - #Dalton - H2O_SHG = -19.7591180824 - - ### Untruncated ### - # Other system's Dalton SHG value, all validated #PyCC SHG values - #CO_SHG = -32.4314012752 #CO = -32.431401275449 - #HF_SHG = 10.23985062319 #HF = 10.239850624779 - #HCl_SHG = -21.348258444480 #HCl = -21.348258543702 - - assert(abs(SHG - H2O_SHG) < 1e-7) def test_PNOpp_ccsd_OR(): """ CO Optical Refractivity PNO++-CCSD Test using local filter""" psi4.set_memory('2 GiB') psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'aug-cc-pvdz', + psi4.set_options({'basis': 'cc-pvdz', 'scf_type': 'pk', 'freeze_core': 'false', 'e_convergence': 1e-12, @@ -95,40 +52,4 @@ def test_PNOpp_ccsd_OR(): #can only compare to itself OR_sim = -14.631284641281 assert(abs(OR - OR_sim) < 1e-10) - -def test_CPNOpp_ccsd_SHG(): - """ H2O Second Harmonic Generation CPNO++-CCSD Test using local filter""" - psi4.set_memory('2 GiB') - psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'aug-cc-pvdz', - 'scf_type': 'pk', - 'freeze_core': 'false', - 'e_convergence': 1e-12, - 'd_convergence': 1e-12, - 'r_convergence': 1e-12}) - mol = psi4.geometry(moldict["H2O_D"]) - rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) - - e_conv = 1e-12 - r_conv = 1e-12 - - #Testing different localization scheme for MOS -> Foster-Boys - cc = pycc.ccwfn(rhf_wfn, local_mos = 'BOYS', local="CPNO++", local_cutoff = 1e-7, filter=True) - ecc = cc.solve_cc(e_conv, r_conv) - hbar = pycc.cchbar(cc) - cclambda = pycc.cclambda(cc, hbar) - lecc = cclambda.solve_lambda(e_conv, r_conv) - density = pycc.ccdensity(cc, cclambda) - - resp = pycc.ccresponse(density) - - #SHG frequencies - omega1 = 0.0656 - omega2 = 0.0656 - - resp.pert_quadresp(omega1, omega2) - SHG = resp.hyperpolar() - - #can only compare to itself - SHG_sim = -17.874897845906 - assert(abs(SHG - SHG_sim) < 1e-10) + From f1763b9c36b87ab3b6e01dc2c9605c7996ef9144 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Fri, 19 Apr 2024 15:45:06 -0400 Subject: [PATCH 15/21] testing test_038 --- pycc/tests/__init__.py | 3 + pycc/tests/test_001_pycc.py | 12 ++ pycc/tests/test_002_ccsd_energy.py | 41 ++++++ pycc/tests/test_003_ccsd_lambda.py | 53 ++++++++ pycc/tests/test_004_ccsd_density.py | 59 +++++++++ pycc/tests/test_005_ccsd_t_energy.py | 52 ++++++++ pycc/tests/test_006_rtccsd.py | 72 +++++++++++ pycc/tests/test_007_dipole.py | 58 +++++++++ pycc/tests/test_008_fft.py | 56 ++++++++ pycc/tests/test_009_pade.py | 49 +++++++ pycc/tests/test_010_denoise.py | 42 ++++++ pycc/tests/test_010_denoise/ref_010.npy | Bin 0 -> 8128 bytes pycc/tests/test_011_damp.py | 42 ++++++ pycc/tests/test_011_damp/ref_011.npy | Bin 0 -> 8128 bytes pycc/tests/test_012_FWHM.py | 23 ++++ pycc/tests/test_013_pnocc.py | 77 +++++++++++ pycc/tests/test_014_field.py | 77 +++++++++++ pycc/tests/test_015_ints.py | 64 +++++++++ pycc/tests/test_016_chk.py | 108 ++++++++++++++++ pycc/tests/test_016_chk/chk_5.pk | Bin 0 -> 3055 bytes pycc/tests/test_016_chk/chk_full.pk | Bin 0 -> 3055 bytes pycc/tests/test_016_chk/output.pk | Bin 0 -> 11261 bytes pycc/tests/test_016_chk/output_full.pk | Bin 0 -> 21963 bytes pycc/tests/test_016_chk/ref_016_chk.py | 68 ++++++++++ pycc/tests/test_016_chk/t_out.pk | Bin 0 -> 158388 bytes pycc/tests/test_016_chk/t_out_full.pk | Bin 0 -> 310558 bytes pycc/tests/test_017_ccd.py | 42 ++++++ pycc/tests/test_018_paocc.py | 108 ++++++++++++++++ pycc/tests/test_019_localrt.py | 144 +++++++++++++++++++++ pycc/tests/test_019_localrt/wfn.npy | Bin 0 -> 50027 bytes pycc/tests/test_020_cc2.py | 75 +++++++++++ pycc/tests/test_021_rk4.py | 99 ++++++++++++++ pycc/tests/test_022_adap_int.py | 102 +++++++++++++++ pycc/tests/test_023_ms_int.py | 114 ++++++++++++++++ pycc/tests/test_024_contract_cpu.py | 102 +++++++++++++++ pycc/tests/test_025_contract_gpu.py | 103 +++++++++++++++ pycc/tests/test_026_autocorrelation.py | 78 +++++++++++ pycc/tests/test_027_linresp.py | 82 ++++++++++++ pycc/tests/test_028_pnoppcc.py | 78 +++++++++++ pycc/tests/test_029_delta.py | 27 ++++ pycc/tests/test_030_sp.py | 92 +++++++++++++ pycc/tests/test_031_cc3.py | 89 +++++++++++++ pycc/tests/test_032_localccd.py | 124 ++++++++++++++++++ pycc/tests/test_033_localccsd.py | 124 ++++++++++++++++++ pycc/tests/test_034_ccsd_t_density.py | 85 ++++++++++++ pycc/tests/test_035_eomccsd.py | 164 ++++++++++++++++++++++++ pycc/tests/test_036_cpnoppcc.py | 80 ++++++++++++ pycc/tests/test_037_quadresp.py | 93 ++++++++++++++ pycc/tests/test_038_sim_quadresp.py | 83 +++++++++++- 49 files changed, 3042 insertions(+), 2 deletions(-) create mode 100644 pycc/tests/__init__.py create mode 100644 pycc/tests/test_001_pycc.py create mode 100644 pycc/tests/test_002_ccsd_energy.py create mode 100644 pycc/tests/test_003_ccsd_lambda.py create mode 100644 pycc/tests/test_004_ccsd_density.py create mode 100644 pycc/tests/test_005_ccsd_t_energy.py create mode 100644 pycc/tests/test_006_rtccsd.py create mode 100644 pycc/tests/test_007_dipole.py create mode 100644 pycc/tests/test_008_fft.py create mode 100644 pycc/tests/test_009_pade.py create mode 100644 pycc/tests/test_010_denoise.py create mode 100644 pycc/tests/test_010_denoise/ref_010.npy create mode 100644 pycc/tests/test_011_damp.py create mode 100644 pycc/tests/test_011_damp/ref_011.npy create mode 100644 pycc/tests/test_012_FWHM.py create mode 100644 pycc/tests/test_013_pnocc.py create mode 100644 pycc/tests/test_014_field.py create mode 100644 pycc/tests/test_015_ints.py create mode 100644 pycc/tests/test_016_chk.py create mode 100644 pycc/tests/test_016_chk/chk_5.pk create mode 100644 pycc/tests/test_016_chk/chk_full.pk create mode 100644 pycc/tests/test_016_chk/output.pk create mode 100644 pycc/tests/test_016_chk/output_full.pk create mode 100644 pycc/tests/test_016_chk/ref_016_chk.py create mode 100644 pycc/tests/test_016_chk/t_out.pk create mode 100644 pycc/tests/test_016_chk/t_out_full.pk create mode 100644 pycc/tests/test_017_ccd.py create mode 100644 pycc/tests/test_018_paocc.py create mode 100644 pycc/tests/test_019_localrt.py create mode 100644 pycc/tests/test_019_localrt/wfn.npy create mode 100644 pycc/tests/test_020_cc2.py create mode 100644 pycc/tests/test_021_rk4.py create mode 100644 pycc/tests/test_022_adap_int.py create mode 100644 pycc/tests/test_023_ms_int.py create mode 100644 pycc/tests/test_024_contract_cpu.py create mode 100644 pycc/tests/test_025_contract_gpu.py create mode 100644 pycc/tests/test_026_autocorrelation.py create mode 100644 pycc/tests/test_027_linresp.py create mode 100644 pycc/tests/test_028_pnoppcc.py create mode 100644 pycc/tests/test_029_delta.py create mode 100644 pycc/tests/test_030_sp.py create mode 100644 pycc/tests/test_031_cc3.py create mode 100644 pycc/tests/test_032_localccd.py create mode 100644 pycc/tests/test_033_localccsd.py create mode 100644 pycc/tests/test_034_ccsd_t_density.py create mode 100644 pycc/tests/test_035_eomccsd.py create mode 100644 pycc/tests/test_036_cpnoppcc.py create mode 100644 pycc/tests/test_037_quadresp.py diff --git a/pycc/tests/__init__.py b/pycc/tests/__init__.py new file mode 100644 index 0000000..325e75d --- /dev/null +++ b/pycc/tests/__init__.py @@ -0,0 +1,3 @@ +""" +Empty init file in case you choose a package besides PyTest such as Nose which may look for such a file +""" diff --git a/pycc/tests/test_001_pycc.py b/pycc/tests/test_001_pycc.py new file mode 100644 index 0000000..4ce6440 --- /dev/null +++ b/pycc/tests/test_001_pycc.py @@ -0,0 +1,12 @@ +""" +Import test for the pycc package. +""" + +# Import package, test suite, and other packages as needed +import pycc +import pytest +import sys + +def test_pycc_imported(): + """Sample test, will always pass so long as import statement worked""" + assert "pycc" in sys.modules diff --git a/pycc/tests/test_002_ccsd_energy.py b/pycc/tests/test_002_ccsd_energy.py new file mode 100644 index 0000000..93e6052 --- /dev/null +++ b/pycc/tests/test_002_ccsd_energy.py @@ -0,0 +1,41 @@ +""" +Test CCSD equation solution using various molecule test cases. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + +def test_ccsd_h2o(): + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'STO-3G', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'true', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + + ccsd = pycc.ccwfn(rhf_wfn) + eccsd = ccsd.solve_cc(e_conv,r_conv,maxiter) + epsi4 = -0.070616830152761 + assert (abs(epsi4 - eccsd) < 1e-11) + + # cc-pVDZ basis set + psi4.set_options({'basis': 'cc-pVDZ'}) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + ccsd = pycc.ccwfn(rhf_wfn) + eccsd = ccsd.solve_cc(e_conv,r_conv,maxiter) + epsi4 = -0.222029814166783 + assert (abs(epsi4 - eccsd) < 1e-11) diff --git a/pycc/tests/test_003_ccsd_lambda.py b/pycc/tests/test_003_ccsd_lambda.py new file mode 100644 index 0000000..f3ee6d8 --- /dev/null +++ b/pycc/tests/test_003_ccsd_lambda.py @@ -0,0 +1,53 @@ +""" +Test CCSD Lambda equation solution using various molecule test cases. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + + +def test_lambda_ccsd_h2o(): + """H2O STO-3G""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'STO-3G', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'true', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + + ccsd = pycc.ccwfn(rhf_wfn) + eccsd = ccsd.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv) + epsi4 = -0.070616830152761 + lpsi4 = -0.068826452648939 + assert (abs(epsi4 - eccsd) < 1e-11) + assert (abs(lpsi4 - lccsd) < 1e-11) + + # cc-pVDZ basis set + psi4.set_options({'basis': 'cc-pVDZ'}) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + ccsd = pycc.ccwfn(rhf_wfn) + eccsd = ccsd.solve_cc(e_conv,r_conv,maxiter) + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv) + epsi4 = -0.222029814166783 + lpsi4 = -0.217838951550509 + assert (abs(epsi4 - eccsd) < 1e-11) + assert (abs(lpsi4 - lccsd) < 1e-11) diff --git a/pycc/tests/test_004_ccsd_density.py b/pycc/tests/test_004_ccsd_density.py new file mode 100644 index 0000000..cd1c23c --- /dev/null +++ b/pycc/tests/test_004_ccsd_density.py @@ -0,0 +1,59 @@ + +""" +Test CCSD density equations using various molecule test cases. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + + +def test_density_ccsd_h2o(): + """H2O""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'STO-3G', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'true', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + + ccsd = pycc.ccwfn(rhf_wfn) + eccsd = ccsd.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv) + epsi4 = -0.070616830152761 + lpsi4 = -0.068826452648939 + ccdensity = pycc.ccdensity(ccsd, cclambda) + ecc_density = ccdensity.compute_energy() + assert (abs(epsi4 - eccsd) < 1e-11) + assert (abs(lpsi4 - lccsd) < 1e-11) + assert (abs(epsi4 - ecc_density) < 1e-11) + + psi4.set_options({'basis': 'cc-pVDZ'}) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + ccsd = pycc.ccwfn(rhf_wfn) + eccsd = ccsd.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv) + epsi4 = -0.222029814166783 + lpsi4 = -0.217838951550509 + ccdensity = pycc.ccdensity(ccsd, cclambda) + ecc_density = ccdensity.compute_energy() + assert (abs(epsi4 - eccsd) < 1e-11) + assert (abs(lpsi4 - lccsd) < 1e-11) + assert (abs(epsi4 - ecc_density) < 1e-11) diff --git a/pycc/tests/test_005_ccsd_t_energy.py b/pycc/tests/test_005_ccsd_t_energy.py new file mode 100644 index 0000000..f14a8af --- /dev/null +++ b/pycc/tests/test_005_ccsd_t_energy.py @@ -0,0 +1,52 @@ +""" +Test CCSD equation solution using various molecule test cases. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * +from ..cctriples import t_vikings, t_vikings_inverted, t_tjl + +def test_ccsd_t_h2o(): + """H2O cc-pVDZ""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'STO-3G', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'true', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + + cc = pycc.ccwfn(rhf_wfn, model='ccsd(t)') + eccsd = cc.solve_cc(e_conv,r_conv,maxiter) + et_vik_ijk = t_vikings(cc) + et_vik_abc = t_vikings_inverted(cc) + et_tjl = t_tjl(cc) + epsi4 = -0.000099957499645 + assert (abs(epsi4 - et_vik_ijk) < 1e-11) + assert (abs(epsi4 - et_vik_abc) < 1e-11) + assert (abs(epsi4 - et_tjl) < 1e-11) + + psi4.set_options({'basis': 'cc-pVDZ'}) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + cc = pycc.ccwfn(rhf_wfn, model='ccsd(t)') + eccsd = cc.solve_cc(e_conv,r_conv,maxiter) + et_vik_ijk = t_vikings(cc) + et_vik_abc = t_vikings_inverted(cc) + et_tjl = t_tjl(cc) + epsi4 = -0.003861236558801 + assert (abs(epsi4 - et_vik_ijk) < 1e-11) + assert (abs(epsi4 - et_vik_abc) < 1e-11) + assert (abs(epsi4 - et_tjl) < 1e-11) diff --git a/pycc/tests/test_006_rtccsd.py b/pycc/tests/test_006_rtccsd.py new file mode 100644 index 0000000..98cda54 --- /dev/null +++ b/pycc/tests/test_006_rtccsd.py @@ -0,0 +1,72 @@ +""" +Test RT-CCSD propagation on He atom. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from scipy.integrate import complex_ode as ode +from pycc.rt.lasers import sine_square_laser +from ..data.molecules import * + +def test_rtcc_he_cc_pvdz(): + """He cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["He"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-13 + r_conv = 1e-13 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + + hbar = pycc.cchbar(cc) + + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + + ccdensity = pycc.ccdensity(cc, cclambda) + + # Sine squared pulse (a.u.) + F_str = 1.0 + omega = 2.87 + tprime = 5.0 + V = sine_square_laser(F_str, omega, tprime) + + # RT-CC Setup + phase = 0 + t0 = 0 + tf = 1.0 + h = 0.01 + rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) + y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') + ODE = ode(rtcc.f).set_integrator('vode',atol=1e-13,rtol=1e-13) + ODE.set_initial_value(y0, t0) + + t1, t2, l1, l2, phase = rtcc.extract_amps(y0) + mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) + ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) + + mu_z_ref = 0.008400738202694 # a.u. + + while ODE.successful() and ODE.t < tf: + y = ODE.integrate(ODE.t+h) + t = ODE.t + t1, t2, l1, l2, phase = rtcc.extract_amps(y) + mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) + ecc = rtcc.lagrangian(t, t1, t2, l1, l2) + + print(mu_z) + assert (abs(mu_z_ref - mu_z.real) < 1e-10) + diff --git a/pycc/tests/test_007_dipole.py b/pycc/tests/test_007_dipole.py new file mode 100644 index 0000000..e805667 --- /dev/null +++ b/pycc/tests/test_007_dipole.py @@ -0,0 +1,58 @@ +""" +Test CCSD electric and magnetic dipole on H2 dimer. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +import numpy as np +from ..data.molecules import * + +def test_dipole_h2_2_cc_pvdz(): + """H4 cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["(H2)_2"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-13 + r_conv = 1e-13 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + + hbar = pycc.cchbar(cc) + + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + + ccdensity = pycc.ccdensity(cc, cclambda) + + # no laser + rtcc = pycc.rtcc(cc, cclambda, ccdensity, None, magnetic = True) + y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, ecc).astype('complex128') + t1, t2, l1, l2, phase = rtcc.extract_amps(y0) + + ref = np.array([0, 0, -0.0007395036977002]) # computed by removing SCF from original ref + + mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) + + assert (abs(ref[0] - mu_x) < 1E-10) + assert (abs(ref[1] - mu_y) < 1E-10) + assert (abs(ref[2] - mu_z) < 1E-10) + + ref = [0, 0, -2.3037968376087573E-5] + m_x, m_y, m_z = rtcc.dipole(t1, t2, l1, l2, magnetic = True) + + assert (abs(ref[0]*1.0j - m_x) < 1E-10) + assert (abs(ref[1]*1.0j - m_y) < 1E-10) + assert (abs(ref[2]*1.0j - m_z) < 1E-10) diff --git a/pycc/tests/test_008_fft.py b/pycc/tests/test_008_fft.py new file mode 100644 index 0000000..b78c516 --- /dev/null +++ b/pycc/tests/test_008_fft.py @@ -0,0 +1,56 @@ +""" +FFT test for the real-time submodule. +""" + +# Import package, test suite, and other packages as needed +from pycc.rt.utils import FT +from scipy.fft import fft,fftfreq +import pytest +import numpy as np + +def test_ft(): + np.random.seed(7) + y = np.random.rand(500) + + w,i = FT(y) + + # rt.FT returns only the symmetric part + i_ref = fft(y)[1:500//2] + w_ref = fftfreq(500)[1:500//2] * 2*np.pi + + assert np.allclose(w, w_ref) + assert np.allclose(i, i_ref) + +def test_ft_norm(): + np.random.seed(10) + y = np.random.rand(500) + + w,i = FT(y,norm=True) + + w_ref = fftfreq(500)[1:500//2] * 2*np.pi + i_ref = fft(y)[1:500//2] + + # norm handles real and imaginary normalization separately + re = np.real(i_ref) / np.abs(np.real(i_ref)).max() + im = np.imag(i_ref) / np.abs(np.imag(i_ref)).max() + i_ref = (re + im*1j) + + assert np.abs((np.abs(np.real(i)).max() - 1)) < 1E-8 + assert np.abs((np.abs(np.imag(i)).max() - 1)) < 1E-8 + assert np.allclose(w, w_ref) + assert np.allclose(i, i_ref) + +def test_ft_sanity(): + '''given enough points, FFT[sin(t) + cos(3t)] should have one real and imaginary + peak at 1 and 3, respectively, but numerically there will be slight errors''' + t = np.linspace(0,2*np.pi*100,10000) + y = np.sin(t) + np.cos(3*t) + dt = t[-1] - t[-2] + + w, i = FT(y,dt=dt,norm=True) + + re_max = np.argmax(np.abs(np.real(i))) + im_max = np.argmax(np.abs(np.imag(i))) + + assert (w[re_max] - 3) < 1E-4 + assert (w[im_max] - 1) < 1E-4 diff --git a/pycc/tests/test_009_pade.py b/pycc/tests/test_009_pade.py new file mode 100644 index 0000000..8a42618 --- /dev/null +++ b/pycc/tests/test_009_pade.py @@ -0,0 +1,49 @@ +""" +Test real-time module Padé approximant to a Fourier series. +""" + +# Import package, test suite, and other packages as needed +from pycc.rt.utils import Pade,damp +import pytest +import numpy as np + +def test_pade_sanity(): + """Padé should find correct peaks for sin(2t) + cos(4t) + iff damped""" + t = np.linspace(0,2*np.pi*20,1000) + y = np.sin(2*t) + np.cos(4*t) + dt = t[-1] - t[-2] + + p = Pade(damp(y,dt,50),dt=dt) + p.build() + + w = np.linspace(0,10,101) + i = p.approx(w,norm=True) + + re_max = np.argmax(np.abs(np.real(i))) + im_max = np.argmax(np.abs(np.imag(i))) + + assert np.real(i)[re_max] == 1 + assert np.imag(i)[im_max] == -1 + assert (w[re_max] - 4) < 1E-4 + assert (w[im_max] - 2) < 1E-4 + +@pytest.mark.xfail +def test_pade_sanity_xfail(): + """Padé should find correct peaks for sin(2t) + cos(4t) + iff damped""" + t = np.linspace(0,2*np.pi*20,1000) + y = np.sin(2*t) + np.cos(4*t) + dt = t[-1] - t[-2] + + p = Pade(y,dt=dt) + p.build() + + w = np.linspace(0,10,101) + i = p.approx(w,norm=True) + + re_max = np.argmax(np.abs(np.real(i))) + im_max = np.argmax(np.abs(np.imag(i))) + + assert (w[re_max] - 4) < 1E-4 + assert (w[im_max] - 2) < 1E-4 diff --git a/pycc/tests/test_010_denoise.py b/pycc/tests/test_010_denoise.py new file mode 100644 index 0000000..747ea7a --- /dev/null +++ b/pycc/tests/test_010_denoise.py @@ -0,0 +1,42 @@ +# Import required packages +import numpy as np +import pytest +import os +from pycc.rt.utils import denoise +from pytest import fixture +from distutils import dir_util + +@fixture +def datadir(tmpdir, request): + ''' + from: https://stackoverflow.com/a/29631801 + Fixture responsible for searching a folder with the same name of test + module and, if available, moving all contents to a temporary directory so + tests can use them freely. + ''' + filename = request.module.__file__ + test_dir, _ = os.path.splitext(filename) + + if os.path.isdir(test_dir): + dir_util.copy_tree(test_dir, str(tmpdir)) + else: + raise FileNotFoundError("Test folder not found.") + + return tmpdir + +def test_denoise(datadir): + # Define function + np.random.seed(10) + timestep = 0.001 + t = np.arange(0, 1, timestep) + f = np.cos(2*np.pi*12*t) + np.sin(2*np.pi*50*t) + f = f + np.random.randn(len(t)) + + ref_file = datadir.join(f"ref_010.npy") + ref_array = np.load(str(ref_file)) + + test_array = denoise(f, 100, timestep) + + assert len(test_array) != 0, "The test array is empty" + assert len(test_array) == len(ref_array), "The test array is of a different length than the valid array" + assert np.allclose(ref_array, test_array), "The test and valid array are not equal" diff --git a/pycc/tests/test_010_denoise/ref_010.npy b/pycc/tests/test_010_denoise/ref_010.npy new file mode 100644 index 0000000000000000000000000000000000000000..acd55b93d22c3ba79f289ccfbfffa99062208c3c GIT binary patch literal 8128 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 Z|EJGalh2#T=Mm)dV)A()`Mi{T{vRcgDCz(J literal 0 HcmV?d00001 diff --git a/pycc/tests/test_011_damp.py b/pycc/tests/test_011_damp.py new file mode 100644 index 0000000..27cb648 --- /dev/null +++ b/pycc/tests/test_011_damp.py @@ -0,0 +1,42 @@ +#Import required packages +import numpy as np +import pytest +import os +from pycc.rt.utils import damp +from pytest import fixture +from distutils import dir_util + +@fixture +def datadir(tmpdir, request): + ''' + from: https://stackoverflow.com/a/29631801 + Fixture responsible for searching a folder with the same name of test + module and, if available, moving all contents to a temporary directory so + tests can use them freely. + ''' + filename = request.module.__file__ + test_dir, _ = os.path.splitext(filename) + + if os.path.isdir(test_dir): + dir_util.copy_tree(test_dir, str(tmpdir)) + else: + raise FileNotFoundError("Test folder not found.") + + return tmpdir + +def test_damp(datadir): + #Define function + np.random.seed(10) + timestep = 0.001 + t = np.arange(0, 1, timestep) + f = np.cos(2*np.pi*12*t) + np.sin(2*np.pi*50*t) + f = f + np.random.randn(len(t)) + + ref_file = datadir.join(f"ref_011.npy") + ref_array = np.load(str(ref_file)) + + test_array = damp(f, timestep, 150) + + assert len(test_array) != 0, "The test array was empty" + assert len(test_array) == len(ref_array), "The length of the test and the valid array are not equal" + assert np.allclose(ref_array, test_array), "The test and valid array are not equal" diff --git a/pycc/tests/test_011_damp/ref_011.npy b/pycc/tests/test_011_damp/ref_011.npy new file mode 100644 index 0000000000000000000000000000000000000000..80e794e20fcb560f225841cc05d1b6ff5eff08cd GIT binary patch literal 8128 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 literal 0 HcmV?d00001 diff --git a/pycc/tests/test_016_chk/chk_full.pk b/pycc/tests/test_016_chk/chk_full.pk new file mode 100644 index 0000000000000000000000000000000000000000..0ea75330bc4dd0a1f768552455508359d2d1b101 GIT binary patch literal 3055 zcmZ8jdpwi-A9qPAR4$41E4mz)9ITBk+a5}!NJY9?Dr}ki-IP;KO>W~yM&^ge3fm#K zwavC?C`IOywA38x@RLjBe(gB@bou@9Jl{W_Kc4URdA+Zn@9T+Ml{Kg$_kI0FH=@bM z&}o~3A_GHW%)Eoch-QJ20TJX&VPTh6-m6{+BYFo1g-3)%dPmSR=`^M92kA8BAfF#c zGU-lo@pLZgiXg7#6y|ru$_eW~lb*U<$=1hoL*`vT*>PqV>?BRL}tg zqt}q%c{hOV@`M5d!N8*;db`CVNXnZZKrGuGf7KUcuk_jJ!z3$@8(B&m}x zFW`gJJILuDT6w1%@iM)_CNB5+M(q?&1`ahHHzv$2!j5OI^FJR}2z)qBy`nK)2y`-> zB*SF3cdY`T|Ot0D6-VNPp~kE zoouTCvv=Gg^Xg;^^uKX?5y7wS{&pXG6?uL`&m$J-Xe`oEKUWO+X{9bJdOX0ie~cS* z3o1st$QD4=9Y=Ba=xWZZ`aFRH9VeMtrik+x48EQhPxOyc83cc>=@(YjLYbJ!SQMaJ z-r)J4%Z~s~eDGmN{;fxu=CUEY;Gs z?IPlq`#MWE?)gK|*!oM9hkZI&?AoNfI_WmhOU;Nzr<7vIB>L!vdll%vD*fkMmI=6p zY3sT0oAFrXnb-vGm3Xlk5_!l76yZfM|HI><`paSX`i;ptW9dvW3OOAs{byQ4=BC=a z7SK3(F-T9{HxFwKeHYud%Tsw0=2kzX8lAh^;R{BSatBl-_Qv%0qyn3k1v`2P36`q* zDkjCJ!fU_YWM%a%hhYlT6MJ%-7-%Xi|00@X|Mh+H7nKZ7Zqo7Hz#rMQo#r#&`PKRS;77i4zki)95@(7OJad?E6SNMv zL;45L-+Ge;#D8O$ejE(n&Hpg!gEURtCfPc{pOlI$bW(Wg!SJF*1tEf{P(slLHu8Y>DPqeYn}BA zlskAsj6~W**PR^}%~jbcFO~hy$t(A~fBmrj z_f|pshlS<8WiQnK&&Q$qzrgVS&yP%caQz!UBEY9jys*Qe#+F>0r&6&5*!)i+p!2sK z*8e70|Ds^|J2Zqq{2zen-(~~F*P3oi^R&MzzG*s4?5EF&(DNpGyGNFRs`^%~fc%fZ z&BxlNCA$-B5Xf-AIcyn!yL)KV=)!B@ipL8AA-Wr&lC<8Q(fo_&r=fhW>@J8NeCm$c zWqeIIc0Ob`6T`&nx<%U?%HnJ~Bse|u4I_B+s=&(<3mI?L;O*0)r7kpDIVfnnv=oO* zRWJ+gtP&*4W*w8PN`PEvvHBruImq>!koip4iE|kH=(7rwqIFH!nFlrv;IM9AFg}t2 zOgwJkI@fc>*$jrrcl0fu?Ztkn(9g#VGY@z+wtPU3CraL18aDH% z40zyUZ6EzfgKF>~vohlIA_rr);D2mWL??GN$1ud9gn&D0IZQ@`)?gJCdRC2OB#LoJ zl|w(w%})C`~}#!mu^`~qxsZhdNE3A5zDAV&D@%NtMC$EQm5L}Z|F`)- z^-sd^r0 zBEIuu|KxYVEc{7oY&>pG%s%>O2N7Gk(-_h}c>cDu6o~)9F#UK66dyD7>qDkv!OH!I z)M|6=7CFWiKdZ5$Vr++$O~#|BTvOrUUZ0#~+!G0&l`Xo271kj7m?rlCqa5S&$6T)g z`(XW_hxP9hEdNdaMML}_hUuTW3dKJ#Sgg8sHe-cfjoiJFKGB~x@$=F6JWiHw#e>cy zE=v1U&V+$?2IdSYRC53bLFXkw=Pwi1|JEbW{)vpB`L9}l`u{=z)&CKOZ~K#9o5Y#+ zjo)xh?%{K>Za9U=)qG|By8;K;{D*0;gUp{^Cba+8>Y@F+3d?_BH5TH(A56dcBPf1? o?*fa`kt|-hA3nOf4T|V1f6}y75#&H3{gCahmDG_)qe!#=0ljwuzyJUM literal 0 HcmV?d00001 diff --git a/pycc/tests/test_016_chk/output.pk b/pycc/tests/test_016_chk/output.pk new file mode 100644 index 0000000000000000000000000000000000000000..eeedca3844c97039a220603ec60852bc5693a59c GIT binary patch literal 11261 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�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

A_NK8v4GdTAVqyt4lpn3$$^NQ@P?{GZ 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
+a$0X)IApXj8F)YOQ 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 fvp=kVC=TZ@+zsoC*`xm*>Xh-WsNW<0A&-9nA literal 0 HcmV?d00001 diff --git a/pycc/tests/test_016_chk/t_out_full.pk b/pycc/tests/test_016_chk/t_out_full.pk new file mode 100644 index 0000000000000000000000000000000000000000..be97ab2ce887660bdefd0c6a2794dde1ec2d6d05 GIT binary patch literal 310558 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 z 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 F{y#r=TonKS literal 0 HcmV?d00001 diff --git a/pycc/tests/test_020_cc2.py b/pycc/tests/test_020_cc2.py new file mode 100644 index 0000000..741f1a0 --- /dev/null +++ b/pycc/tests/test_020_cc2.py @@ -0,0 +1,75 @@ +""" +Test CC2 equation solution using various molecule test cases. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + +def test_cc2_h2o(): + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + cc = pycc.ccwfn(rhf_wfn, model='CC2') + ecc = cc.solve_cc(e_conv,r_conv,maxiter) + epsi4 = -0.215857544656 + assert (abs(epsi4 - ecc) < 1e-11) + + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lcc = cclambda.solve_lambda(e_conv, r_conv) + lcc_psi4 = -0.215765740373555 + assert(abs(lcc - lcc_psi4) < 1e-11) + + ccdensity = pycc.ccdensity(cc, cclambda) + ecc = ccdensity.compute_energy() + assert (abs(epsi4 - ecc) < 1e-11) + +def test_cc2_h2(): + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + cc = pycc.ccwfn(rhf_wfn, model='CC2') + ecc = cc.solve_cc(e_conv,r_conv,maxiter) + epsi4 = -0.026445902512140185 + assert (abs(epsi4 - ecc) < 1e-11) + + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lcc = cclambda.solve_lambda(e_conv, r_conv) + lcc_psi4 = -0.026443139737993 + assert(abs(lcc - lcc_psi4) < 1e-11) + + ccdensity = pycc.ccdensity(cc, cclambda) + ecc = ccdensity.compute_energy() + assert (abs(epsi4 - ecc) < 1e-11) \ No newline at end of file diff --git a/pycc/tests/test_021_rk4.py b/pycc/tests/test_021_rk4.py new file mode 100644 index 0000000..1e297fe --- /dev/null +++ b/pycc/tests/test_021_rk4.py @@ -0,0 +1,99 @@ +""" +Test RT-CCSD propagation with RK4 integrator on water molecule. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import numpy as np +import pycc +import pytest +from pycc.rt.integrators import rk4 +from pycc.rt.lasers import gaussian_laser +from ..data.molecules import * + + +def test_rtcc_water_cc_pvdz(): + """H2O cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-13 + r_conv = 1e-13 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + + hbar = pycc.cchbar(cc) + + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + + ccdensity = pycc.ccdensity(cc, cclambda) + + # Gaussian pulse (a.u.) + F_str = 0.01 + omega = 0 + sigma = 0.01 + center = 0.05 + V = gaussian_laser(F_str, omega, sigma, center) + + # RT-CC Setup + phase = 0 + t0 = 0 + tf = 0.1 + h = 0.01 + t = t0 + rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) + y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') + y = y0 + ODE = rk4(h) + t1, t2, l1, l2, phase = rtcc.extract_amps(y0) + mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) + ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) + + # For saving data at each time step. + """ + dip_x = [] + dip_y = [] + dip_z = [] + time_points = [] + dip_x.append(mu0_x) + dip_y.append(mu0_y) + dip_z.append(mu0_z) + time_points.append(t) + """ + + while t < tf: + y = ODE(rtcc.f, t, y) + t += h + t1, t2, l1, l2, phase = rtcc.extract_amps(y) + mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) + ecc = rtcc.lagrangian(t, t1, t2, l1, l2) + """ + dip_x.append(mu_x) + dip_y.append(mu_y) + dip_z.append(mu_z) + time_points.append(t) + """ + + print(mu_z) + mu_z_ref = -0.0780067603267549 # computed by removing SCF from original ref + assert (abs(mu_z_ref - mu_z.real) < 1e-4) + + #return (dip_x, dip_y, dip_z, time_points) + +#dip = test_rtcc_water_cc_pvdz() +#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) + + + diff --git a/pycc/tests/test_022_adap_int.py b/pycc/tests/test_022_adap_int.py new file mode 100644 index 0000000..4cf520a --- /dev/null +++ b/pycc/tests/test_022_adap_int.py @@ -0,0 +1,102 @@ +""" +Test RT-CCSD propagation with Cash-Karp integrator (adaptive) on water molecule. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import numpy as np +import pycc +import pytest +from pycc.rt.integrators import ck +from pycc.rt.lasers import gaussian_laser +from ..data.molecules import * + + +def test_rtcc_water_cc_pvdz(): + """H2O cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-13 + r_conv = 1e-13 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + + hbar = pycc.cchbar(cc) + + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + + ccdensity = pycc.ccdensity(cc, cclambda) + + # Gaussian pulse (a.u.) + F_str = 0.01 + omega = 0 + sigma = 0.01 + center = 0.05 + V = gaussian_laser(F_str, omega, sigma, center) + + # RT-CC Setup + phase = 0 + t0 = 0 + tf = 1 + h = 0.01 + t = t0 + rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) + y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') + y = y0 + # Setting for the adaptive integrator + maxiter = 10 + yconv = 1e-7 + ODE = ck(maxiter, yconv) + t1, t2, l1, l2, phase = rtcc.extract_amps(y0) + mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) + ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) + + # For saving data at each time step. + """ + dip_x = [] + dip_y = [] + dip_z = [] + time_points = [] + dip_x.append(mu0_x) + dip_y.append(mu0_y) + dip_z.append(mu0_z) + time_points.append(t) + """ + + while t < tf: + (y, h_old, h) = ODE(rtcc.f, t, y, h) + t += h_old + t1, t2, l1, l2, phase = rtcc.extract_amps(y) + mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) + ecc = rtcc.lagrangian(t, t1, t2, l1, l2) + """ + dip_x.append(mu_x) + dip_y.append(mu_y) + dip_z.append(mu_z) + time_points.append(t) + """ + + print(mu_z) + mu_z_ref = -0.0780067603267549 # computed by removing SCF from original ref + assert (abs(mu_z_ref - mu_z.real) < 1e-3) + + #return (dip_x, dip_y, dip_z, time_points) + +#dip = test_rtcc_water_cc_pvdz() +#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) + + + diff --git a/pycc/tests/test_023_ms_int.py b/pycc/tests/test_023_ms_int.py new file mode 100644 index 0000000..b48f477 --- /dev/null +++ b/pycc/tests/test_023_ms_int.py @@ -0,0 +1,114 @@ +""" +Test RT-CCSD propagation with mixed-step-size integrator on water molecule. +This method is designed for a strong external field. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import numpy as np +import pycc +import pytest +from pycc.rt.integrators import rk4 +from pycc.rt.lasers import gaussian_laser +from ..data.molecules import * + + +def test_rtcc_water_cc_pvdz(): + """H2O cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-13 + r_conv = 1e-13 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + + hbar = pycc.cchbar(cc) + + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + + ccdensity = pycc.ccdensity(cc, cclambda) + + # Gaussian pulse (a.u.) + F_str = 100 + omega = 0 + # The pulse is chosen to be thinner for less time steps with h_small(see below). + sigma = 0.0001 + center = 0.0005 + V = gaussian_laser(F_str, omega, sigma, center) + # Cutoff for the field to decide which step size is used + e_field = 1e-7 + + # RT-CC Setup + phase = 0 + t0 = 0 + tf = 0.1 + h_small = 1e-5 + h = 0.01 + t = t0 + rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) + y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') + y = y0 + ODE1 = rk4(h_small) + ODE2 = rk4(h) + t1, t2, l1, l2, phase = rtcc.extract_amps(y0) + mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) + ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) + + #mu_z_ref = 0.008400738202694 # a.u. + + # For saving data at each time step. + """ + dip_x = [] + dip_y = [] + dip_z = [] + time_points = [] + dip_x.append(mu0_x) + dip_y.append(mu0_y) + dip_z.append(mu0_z) + time_points.append(t) + """ + + while t < tf: + # When the field is on + if V(t) > e_field: + y = ODE1(rtcc.f, t, y) + h_i = h_small + # When the field is off + else: + y = ODE2(rtcc.f, t, y) + h_i = h + t += h_i + t1, t2, l1, l2, phase = rtcc.extract_amps(y) + mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) + ecc = rtcc.lagrangian(t, t1, t2, l1, l2) + """ + dip_x.append(mu_x) + dip_y.append(mu_y) + dip_z.append(mu_z) + time_points.append(t) + """ + + print(mu_z) + mu_z_ref = -0.0780067603267549 # computed by removing SCF from original ref + assert (abs(mu_z_ref - mu_z.real) < 1e-1) + + #return (dip_x, dip_y, dip_z, time_points) + +#dip = test_rtcc_water_cc_pvdz() +#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) + + + diff --git a/pycc/tests/test_024_contract_cpu.py b/pycc/tests/test_024_contract_cpu.py new file mode 100644 index 0000000..94922cd --- /dev/null +++ b/pycc/tests/test_024_contract_cpu.py @@ -0,0 +1,102 @@ +""" +Test RT-CCSD propagation with RK4 integrator on water molecule. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import numpy as np +import pycc +import pytest +from pycc.rt.integrators import rk4 +from pycc.rt.lasers import gaussian_laser +from ..data.molecules import * + + +def test_rtcc_water_cc_pvdz(): + """H2O cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-13 + r_conv = 1e-13 + + # The device for the calculation (CPU/GPU) can be specified. + # Option: 'CPU', 'GPU' + # Default: 'CPU' + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + + hbar = pycc.cchbar(cc) + + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + + ccdensity = pycc.ccdensity(cc, cclambda) + + # Gaussian pulse (a.u.) + F_str = 0.01 + omega = 0 + sigma = 0.01 + center = 0.05 + V = gaussian_laser(F_str, omega, sigma, center) + + # RT-CC Setup + phase = 0 + t0 = 0 + tf = 0.1 + h = 0.01 + t = t0 + rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) + y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') + y = y0 + ODE = rk4(h) + t1, t2, l1, l2, phase = rtcc.extract_amps(y0) + mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) + ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) + + # For saving data at each time step. + """ + dip_x = [] + dip_y = [] + dip_z = [] + time_points = [] + dip_x.append(mu0_x) + dip_y.append(mu0_y) + dip_z.append(mu0_z) + time_points.append(t) + """ + + while t < tf: + y = ODE(rtcc.f, t, y) + t += h + t1, t2, l1, l2, phase = rtcc.extract_amps(y) + mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) + ecc = rtcc.lagrangian(t, t1, t2, l1, l2) + """ + dip_x.append(mu_x) + dip_y.append(mu_y) + dip_z.append(mu_z) + time_points.append(t) + """ + + print(mu_z) + mu_z_ref = -0.0780067603267549 # computed by removing SCF from original ref + assert (abs(mu_z_ref - mu_z.real) < 1e-4) + + #return (dip_x, dip_y, dip_z, time_points) + +#dip = test_rtcc_water_cc_pvdz() +#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) + + + diff --git a/pycc/tests/test_025_contract_gpu.py b/pycc/tests/test_025_contract_gpu.py new file mode 100644 index 0000000..59de5ca --- /dev/null +++ b/pycc/tests/test_025_contract_gpu.py @@ -0,0 +1,103 @@ +""" +Test RT-CCSD propagation with RK4 integrator on water molecule on GPU. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import numpy as np +import pycc +import pytest +from pycc.rt.integrators import rk4 +from pycc.rt.lasers import gaussian_laser +from ..data.molecules import * +import torch + +pytestmark = pytest.mark.skipif(not torch.cuda.is_available(), reason="tests for GPU only") +def test_rtcc_water_cc_pvdz(): + """H2O cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-13 + r_conv = 1e-13 + + # The device for the calculation (CPU/GPU) can be specified. + # Option: 'CPU', 'GPU' + # Default: 'CPU' + cc = pycc.ccwfn(rhf_wfn, device='GPU') + ecc = cc.solve_cc(e_conv, r_conv) + + hbar = pycc.cchbar(cc) + + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + + ccdensity = pycc.ccdensity(cc, cclambda) + + # Gaussian pulse (a.u.) + F_str = 0.01 + omega = 0 + sigma = 0.01 + center = 0.05 + V = gaussian_laser(F_str, omega, sigma, center) + + # RT-CC Setup + phase = 0 + t0 = 0 + tf = 0.1 + h = 0.01 + t = t0 + rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) + y0 = rtcc.collect_amps(phase, cc.t1, cc.t2, cclambda.l1, cclambda.l2).type(torch.complex128) + y = y0 + ODE = rk4(h) + phase, t1, t2, l1, l2 = rtcc.extract_amps(y0) + mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) + ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) + + # For saving data at each time step. + """ + dip_x = [] + dip_y = [] + dip_z = [] + time_points = [] + dip_x.append(mu0_x) + dip_y.append(mu0_y) + dip_z.append(mu0_z) + time_points.append(t) + """ + + while t < tf: + y = ODE(rtcc.f, t, y) + t += h + phase, t1, t2, l1, l2 = rtcc.extract_amps(y) + mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) + ecc = rtcc.lagrangian(t, t1, t2, l1, l2) + """ + dip_x.append(mu_x) + dip_y.append(mu_y) + dip_z.append(mu_z) + time_points.append(t) + """ + + print(mu_z) + mu_z_ref = -0.34894577 + assert (abs(mu_z_ref - mu_z.real) < 1e-4) + + #return (dip_x, dip_y, dip_z, time_points) + +#dip = test_rtcc_water_cc_pvdz() +#np.savez('h2o_F_0.01_h_0.01_t_1_rk4', dip_x=dip[0], dip_y=dip[1], dip_z=dip[2], time_points=dip[3]) + + + diff --git a/pycc/tests/test_026_autocorrelation.py b/pycc/tests/test_026_autocorrelation.py new file mode 100644 index 0000000..a2790fa --- /dev/null +++ b/pycc/tests/test_026_autocorrelation.py @@ -0,0 +1,78 @@ +""" +Test RT-CCSD propagation on He atom. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from scipy.integrate import complex_ode as ode +from pycc.rt.lasers import sine_square_laser +from ..data.molecules import * + +def test_rtcc_he_cc_pvdz_auto(): + """He cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["He"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-13 + r_conv = 1e-13 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + + hbar = pycc.cchbar(cc) + + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + + ccdensity = pycc.ccdensity(cc, cclambda) + + # Sine squared pulse (a.u.) + F_str = 1.0 + omega = 2.87 + tprime = 5.0 + V = sine_square_laser(F_str, omega, tprime) + + # RT-CC Setup + phase = 0 + t0 = 0 + tf = 1.0 + h = 0.01 + rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) + y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase).astype('complex128') + ODE = ode(rtcc.f).set_integrator('vode',atol=1e-13,rtol=1e-13) + ODE.set_initial_value(y0, t0) + + t1, t2, l1, l2, phase = rtcc.extract_amps(y0) + mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) + ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) + auto = rtcc.autocorrelation(y0, y0) + + # From HÃ¥kon's He test case + A_t_t0_ref = -0.967109840555436 + 0.250976568630115j + + while ODE.successful() and ODE.t < tf: + y = ODE.integrate(ODE.t+h) + t = ODE.t + t1, t2, l1, l2, phase = rtcc.extract_amps(y) + mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) + ecc = rtcc.lagrangian(t, t1, t2, l1, l2) + auto = rtcc.autocorrelation(y0, y) + + print(f"{auto:.15f}") + print(f"{A_t_t0_ref:.15f}") + + assert (abs(A_t_t0_ref.real - auto.real) < 1e-10) + assert (abs(A_t_t0_ref.imag - auto.imag) < 1e-10) + diff --git a/pycc/tests/test_027_linresp.py b/pycc/tests/test_027_linresp.py new file mode 100644 index 0000000..3b77387 --- /dev/null +++ b/pycc/tests/test_027_linresp.py @@ -0,0 +1,82 @@ +""" +Test CCSD linear response functions. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + + +def test_polar_h2o_cc_pvdz(): + """H2O cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'STO-3G', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-14, + 'd_convergence': 1e-14, + 'r_convergence': 1e-14, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-13 + r_conv = 1e-13 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + omega = 0.01 + check = resp.pertcheck(omega) # checks perturbed wave functions for all available operators + + # From Psi4: Electric- and magnetic-dipole pseudo-responses at +/-omega + ref = { +"MU_X_0.010000": 0.059711553704, +"MU_X_-0.010000": 0.056273457658, +"MU_Y_0.010000": 7.341419446523, +"MU_Y_-0.010000": 7.129244769943, +"MU_Z_0.010000": 3.071438076138, +"MU_Z_-0.010000": 2.989674229480, +"M_X_0.010000": 0.607770924164, +"M_Y_0.010000": 0.710225214533, +"M_Z_0.010000": 0.775111802368, +"M*_X_-0.010000": 0.586575382108, +"M*_Y_-0.010000": 0.667622954134, +"M*_Z_-0.010000": 0.736881617713, +"P_X_-0.010000": 0.097163221394, +"P_Y_-0.010000": 2.169072875250, +"P_Z_-0.010000": 1.497365713340, +"P*_X_0.010000": 0.103276788499, +"P*_Y_0.010000": 2.228622130154, +"P*_Z_0.010000": 1.536627133369, +"Q_XX_0.010000": 5.942498696750, +"Q_XY_0.010000": 0.202389983457, +"Q_XZ_0.010000": 0.186067317836, +"Q_YX_0.010000": 0.202389983457, +"Q_YY_0.010000": 7.147772196224, +"Q_YZ_0.010000": 19.240803761856, +"Q_ZX_0.010000": 0.186067317836, +"Q_ZY_0.010000": 19.240803761856, +"Q_ZZ_0.010000": 0.250165812115, +"Q_XX_-0.010000": 5.811357442660, +"Q_XY_-0.010000": 0.192591582644, +"Q_XZ_-0.010000": 0.175163473590, +"Q_YX_-0.010000": 0.192591582644, +"Q_YY_-0.010000": 6.971750667839, +"Q_YZ_-0.010000": 18.721795464544, +"Q_ZX_-0.010000": 0.175163473590, +"Q_ZY_-0.010000": 18.721795464544, +"Q_ZZ_-0.010000": 0.241096711760} + + for key in ref: + print(f"key = {key}; ref = {ref[key]}; check = {check[key]}") + assert(abs(check[key] - ref[key]) < 1e-11) diff --git a/pycc/tests/test_028_pnoppcc.py b/pycc/tests/test_028_pnoppcc.py new file mode 100644 index 0000000..c909673 --- /dev/null +++ b/pycc/tests/test_028_pnoppcc.py @@ -0,0 +1,78 @@ +""" +Test basic PNO++-CCSD energy +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + + +def test_pnopp_ccsd(): + """H2O PNO++-CCSD Test""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 8}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + max_diis = 8 + + ccsd = pycc.ccwfn(rhf_wfn, local='PNO++', local_cutoff=1e-7, it2_opt=False) + eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) + + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) + + esim = -0.216064367834782 + lsim = -0.211938482158711 + + assert (abs(esim - eccsd) < 1e-7) + assert (abs(lsim - lccsd) < 1e-7) + +def test_pnopp_ccsd_opt(): + """H2O PNO++-CCSD with Optimized Initial T2 Amplitudes""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 8}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + max_diis = 8 + + ccsd = pycc.ccwfn(rhf_wfn, local='PNO++', local_cutoff=1e-9) + eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) + + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) + + esim = -0.223695614177277 + lsim = -0.219502543226770 + + assert (abs(esim - eccsd) < 1e-7) + assert (abs(lsim - lccsd) < 1e-7) diff --git a/pycc/tests/test_029_delta.py b/pycc/tests/test_029_delta.py new file mode 100644 index 0000000..74d1763 --- /dev/null +++ b/pycc/tests/test_029_delta.py @@ -0,0 +1,27 @@ +""" +Test delta_pulse_laser function. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import numpy as np +import pycc +import pytest +from pycc.rt.lasers import delta_pulse_laser + +def test_delta_pulse(): + F_str = 1 + center = 5 + V = delta_pulse_laser(F_str, center) + V_test = np.zeros(20) + V_ref = np.zeros(20) + V_ref[center - 1] = 1 + for i in range(20): + V_test[i] = V(i) + + assert V_test.all() == V_ref.all() + + + + + diff --git a/pycc/tests/test_030_sp.py b/pycc/tests/test_030_sp.py new file mode 100644 index 0000000..1d52141 --- /dev/null +++ b/pycc/tests/test_030_sp.py @@ -0,0 +1,92 @@ +""" +Test RT-CCSD propagation with RK4 integrator on water molecule. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import numpy as np +import pycc +import pytest +from pycc.rt.integrators import rk4 +from pycc.rt.lasers import gaussian_laser +from ..data.molecules import * + +def test_rtcc_water_cc_pvdz(): + """H2O cc-pVDZ""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pvdz', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-7 + r_conv = 1e-7 + + # The precision for the calculation (single-precision (sp) + # /double-precision (dp)) can be specified. + # Option: 'SP', 'DP' + # Default: 'DP' + #cc = pycc.ccwfn(rhf_wfn) + cc = pycc.ccwfn(rhf_wfn, precision='SP') + ecc = cc.solve_cc(e_conv, r_conv) + + # Check CCSD energy + epsi4 = -0.223910018703551 + assert (abs(epsi4 - ecc) < 1e-7) + + hbar = pycc.cchbar(cc) + + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + + # Check CCSD pseudo energy + lepsi4 = -0.219688229733875 + assert (abs(lepsi4 - lecc) < 1e-7) + + ccdensity = pycc.ccdensity(cc, cclambda) + + # Gaussian pulse (a.u.) + F_str = 0.01 + omega = 0 + sigma = 0.01 + center = 0.05 + V = gaussian_laser(F_str, omega, sigma, center) + + # RT-CC Setup + phase = 0 + t0 = 0 + tf = 0.01 + h = 0.01 + t = t0 + rtcc = pycc.rtcc(cc, cclambda, ccdensity, V) + y0 = rtcc.collect_amps(cc.t1, cc.t2, cclambda.l1, cclambda.l2, phase) + y = y0 + ODE = rk4(h) + t1, t2, l1, l2, phase = rtcc.extract_amps(y0) + mu0_x, mu0_y, mu0_z = rtcc.dipole(t1, t2, l1, l2) + ecc0 = rtcc.lagrangian(t0, t1, t2, l1, l2) + + # Check dipole moment + mu0_z_ref = -0.0780069121607703 # computed by removing SCF from original ref + assert(abs(mu0_z_ref - mu0_z) < 1e-6) + + while t < tf: + y = ODE(rtcc.f, t, y) + t += h + t1, t2, l1, l2, phase = rtcc.extract_amps(y) + mu_x, mu_y, mu_z = rtcc.dipole(t1, t2, l1, l2) + ecc = rtcc.lagrangian(t, t1, t2, l1, l2) + + print(mu_z) + + # Check the dipole value at time step 1 + mu_z_ref = -0.0780069121607703 # computed by removing SCF from original ref + assert (abs(mu_z_ref - mu_z.real) < 1e-6) + diff --git a/pycc/tests/test_031_cc3.py b/pycc/tests/test_031_cc3.py new file mode 100644 index 0000000..cb0f0a3 --- /dev/null +++ b/pycc/tests/test_031_cc3.py @@ -0,0 +1,89 @@ +""" +Test CC3 equation solution using various molecule test cases. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * +import numpy as np + +# H2O/cc-pVDZ +def test_cc3_h2o(): + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O_Teach"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + cc = pycc.ccwfn(rhf_wfn, model='CC3') + ecc = cc.solve_cc(e_conv,r_conv,maxiter) + epsi4 = -0.227888246840310 + ecfour = -0.2278882468404231 + assert (abs(epsi4 - ecc) < 1e-11) + + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lcc = cclambda.solve_lambda(e_conv, r_conv) + print("lcc: ", lcc) + lcc_cfour = -0.2233231845185215 + assert(abs(lcc - lcc_cfour) < 1e-11) + + ccdensity = pycc.ccdensity(cc, cclambda) + # no laser + rtcc = pycc.rtcc(cc, cclambda, ccdensity, None, magnetic = False) + + CFOUR = [0, 0, 0.7703875967] # CFOUR total dipole (CC3 + SCF + nuclear) + scf = rhf_wfn.variable('SCF DIPOLE') # PSI4 reference dipole (SCF + nuclear) + ref = CFOUR - scf # Final reference: CC3 only + + mu_x, mu_y, mu_z = rtcc.dipole(cc.t1, cc.t2, cclambda.l1, cclambda.l2) + + assert (abs(ref[1] - np.real(mu_y)) < 1E-10) + assert (abs(ref[2] - np.real(mu_z)) < 1E-10) + +# H2/cc-pVDZ +""" +def test_cc3_h2(): + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + cc = pycc.ccwfn(rhf_wfn, model='CC3') + ecc = cc.solve_cc(e_conv,r_conv,maxiter) + epsi4 = -0.034689283017250 + ecfour = -0.0346892830172550 + assert (abs(epsi4 - ecc) < 1e-11) + + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lcc = cclambda.solve_lambda(e_conv, r_conv) + lcc_cfour = -0.0341034656430758 + assert(abs(lcc - lcc_cfour) < 1e-11) +""" + diff --git a/pycc/tests/test_032_localccd.py b/pycc/tests/test_032_localccd.py new file mode 100644 index 0000000..ee5888b --- /dev/null +++ b/pycc/tests/test_032_localccd.py @@ -0,0 +1,124 @@ +""" +Test basic PNO-CCD, PNO++-CCD, PAO-CCD energies +""" +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + +def test_pno_ccd(): + """H2O PNO-CCD Test""" + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 100 + e_conv = 1e-12 + r_conv = 1e-12 + + #simulation code of pno-ccd + ccd_sim = pycc.ccwfn(rhf_wfn, model='CCD',local='PNO', local_cutoff=1e-5,it2_opt=False,filter=True) + eccd_sim = ccd_sim.solve_cc(e_conv, r_conv, maxiter) + + #pno-ccd + lccd = pycc.ccwfn(rhf_wfn,model='CCD', local='PNO', local_cutoff=1e-5,it2_opt=False) + elccd = lccd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) + + assert(abs(eccd_sim - elccd) < 1e-12) + +def test_pnopp_ccd(): + """H2O PNO++ CCD Test""" + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': '6-31G', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 100 + e_conv = 1e-12 + r_conv = 1e-12 + + #simulation code of pno++-ccd + ccd_sim = pycc.ccwfn(rhf_wfn, model='CCD',local='PNO++', local_cutoff=1e-7,it2_opt=False,filter=True) + eccd_sim = ccd_sim.solve_cc(e_conv, r_conv, maxiter) + + #pno++-ccd + lccd = pycc.ccwfn(rhf_wfn,model='CCD', local='PNO++', local_cutoff=1e-7,it2_opt=False) + elccd = lccd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) + + assert(abs(eccd_sim - elccd) < 1e-12) + +def test_pno_ccd_opt(): + """H2O PNO-CCD with Optimized Initial T2 Amplitudes""" + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 100 + e_conv = 1e-12 + r_conv = 1e-12 + + #simulation code of pno-ccd + ccd_sim = pycc.ccwfn(rhf_wfn, model='CCD',local='PNO', local_cutoff=1e-7,filter=True) + eccd_sim = ccd_sim.solve_cc(e_conv, r_conv, maxiter) + + #pno-ccd + lccd = pycc.ccwfn(rhf_wfn,model='CCD', local='PNO', local_cutoff=1e-7) + elccd = lccd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) + + assert(abs(eccd_sim - elccd) < 1e-12) + +def test_pao_ccd_opt(): + """H2O PAO-CCD with Optimized Initial T2 Amplitudes""" + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 100 + e_conv = 1e-12 + r_conv = 1e-12 + + #simulation code of pao-ccd + ccd_sim = pycc.ccwfn(rhf_wfn, model='CCD',local='PAO', local_cutoff=2e-2,filter=True) + eccd_sim = ccd_sim.solve_cc(e_conv, r_conv, maxiter) + + #pao-ccd + lccd = pycc.ccwfn(rhf_wfn,model='CCD', local='PAO', local_cutoff=2e-2) + elccd = lccd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) + + assert(abs(eccd_sim - elccd) < 1e-12) diff --git a/pycc/tests/test_033_localccsd.py b/pycc/tests/test_033_localccsd.py new file mode 100644 index 0000000..764ffbe --- /dev/null +++ b/pycc/tests/test_033_localccsd.py @@ -0,0 +1,124 @@ +""" +Test basic PNO-CCSD, PNO++-CCSD, PAO-CCSD energies +""" +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + +def test_pno_ccsd(): + """H2O PNO-CCSD Test""" + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 100 + e_conv = 1e-12 + r_conv = 1e-12 + + #simulation code of pno-ccsd + ccsd_sim = pycc.ccwfn(rhf_wfn, model='CCSD',local='PNO', local_cutoff=1e-5,it2_opt=False,filter=True) + eccsd_sim = ccsd_sim.solve_cc(e_conv, r_conv, maxiter) + + #pno-ccsd + lccsd = pycc.ccwfn(rhf_wfn,model='CCSD', local='PNO', local_cutoff=1e-5,it2_opt=False) + elccsd = lccsd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) + + assert(abs(eccsd_sim - elccsd) < 1e-12) + +def test_pnopp_ccsd(): + """H2O PNO++ CCSD Test""" + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': '6-31G', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 100 + e_conv = 1e-12 + r_conv = 1e-12 + + #simulation code of pno++-ccsd + ccsd_sim = pycc.ccwfn(rhf_wfn, model='CCSD',local='PNO++', local_cutoff=1e-7,it2_opt=False,filter=True) + eccsd_sim = ccsd_sim.solve_cc(e_conv, r_conv, maxiter) + + #pno++-ccsd + lccsd = pycc.ccwfn(rhf_wfn,model='CCSD', local='PNO++', local_cutoff=1e-7,it2_opt=False) + elccsd = lccsd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) + + assert(abs(eccsd_sim - elccsd) < 1e-12) + +def test_pno_ccsd_opt(): + """H2O PNO-CCSD with Optimized Initial T2 Amplitudes""" + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 100 + e_conv = 1e-12 + r_conv = 1e-12 + + #simulation code of pno-ccsd + ccsd_sim = pycc.ccwfn(rhf_wfn, model='CCSD',local='PNO', local_cutoff=1e-5,filter=True) + eccsd_sim = ccsd_sim.solve_cc(e_conv, r_conv, maxiter) + + #pno-ccsd + lccsd = pycc.ccwfn(rhf_wfn,model='CCSD', local='PNO', local_cutoff=1e-5) + elccsd = lccsd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) + + assert(abs(eccsd_sim - elccsd) < 1e-12) + +def test_pao_ccsd_opt(): + """H2O PAO-CCSD with Optimized Initial T2 Amplitudes""" + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 100 + e_conv = 1e-12 + r_conv = 1e-12 + + #simulation code of pao-ccsd + ccsd_sim = pycc.ccwfn(rhf_wfn, model='CCSD',local='PAO', local_cutoff=2e-2,filter=True) + eccsd_sim = ccsd_sim.solve_cc(e_conv, r_conv, maxiter) + + #pao-ccsd + lccsd = pycc.ccwfn(rhf_wfn,model='CCSD', local='PAO', local_cutoff=2e-2) + elccsd = lccsd.lccwfn.solve_lcc(e_conv, r_conv, maxiter) + + assert(abs(eccsd_sim - elccsd) < 1e-12) diff --git a/pycc/tests/test_034_ccsd_t_density.py b/pycc/tests/test_034_ccsd_t_density.py new file mode 100644 index 0000000..e924b7b --- /dev/null +++ b/pycc/tests/test_034_ccsd_t_density.py @@ -0,0 +1,85 @@ +""" +Test CCSD equation solution using various molecule test cases. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * +from ..cctriples import t_vikings, t_vikings_inverted, t_tjl + +def test_ccsd_t_h2o(): + """H2O cc-pVDZ""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'STO-3G', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry( +""" +O 0.000000000000000 0.000000000000000 0.143225857166674 +H 0.000000000000000 -1.638037301628121 -1.136549142277225 +H 0.000000000000000 1.638037301628121 -1.136549142277225 +symmetry c1 +units bohr +""" +) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + + etot = psi4.energy('CCSD(T)') + ecc_psi4 = psi4.variable('CCSD(T) CORRELATION ENERGY') + + cc = pycc.ccwfn(rhf_wfn, model='ccsd(t)', make_t3_density=True) + ecc = cc.solve_cc(e_conv, r_conv, maxiter, max_diis=0) + assert (abs(ecc_psi4 - ecc) < 1e-11) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lcc = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis=0) + ccdensity = pycc.ccdensity(cc, cclambda) + ecc_density = ccdensity.compute_energy() + eone = ccdensity.eone + etwo = ccdensity.etwo + + lambda_psi4 = -0.069084521221746 + eone_psi4 = 0.104463374777302 + etwo_psi4 = -0.175243393781829 + assert (abs(lambda_psi4 - lcc) < 1e-11) + assert (abs(eone_psi4 - eone) < 1e-11) + assert (abs(etwo_psi4 - etwo) < 1e-11) + + psi4.core.clean() + + psi4.set_options({'basis': 'cc-pVDZ'}) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + etot = psi4.energy('CCSD(T)') + ecc_psi4 = psi4.variable('CCSD(T) CORRELATION ENERGY') + + cc = pycc.ccwfn(rhf_wfn, model='ccsd(t)', make_t3_density=True) + ecc = cc.solve_cc(e_conv, r_conv, maxiter) + assert (abs(ecc_psi4 - ecc) < 1e-11) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lcc = cclambda.solve_lambda(e_conv, r_conv) + ccdensity = pycc.ccdensity(cc, cclambda) + ecc_density = ccdensity.compute_energy() + eone = ccdensity.eone + etwo = ccdensity.etwo + + lambda_psi4 = -0.227199866607450 + eone_psi4 = 0.251210862963227 + etwo_psi4 = -0.479006477929931 + assert (abs(lambda_psi4 - lcc) < 1e-11) + assert (abs(eone_psi4 - eone) < 1e-11) + assert (abs(etwo_psi4 - etwo) < 1e-11) diff --git a/pycc/tests/test_035_eomccsd.py b/pycc/tests/test_035_eomccsd.py new file mode 100644 index 0000000..8d757ae --- /dev/null +++ b/pycc/tests/test_035_eomccsd.py @@ -0,0 +1,164 @@ +""" +Test EOM-CCSD solver. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * +import numpy as np +import sys + +np.set_printoptions(precision=10, linewidth=300, threshold=sys.maxsize, suppress=True) + +# H2O/cc-pVDZ +def test_eomccsd_h2o(): + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O_Teach"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv,r_conv,maxiter) + hbar = pycc.cchbar(cc) + eom = pycc.cceom(hbar) + + N = 3 + maxiter = 75 + e_conv = 1e-7 + r_conv = 1e-7 + + guess = 'hbar_ss' + eom_E_guess_1, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) + + guess = 'cis' + eom_E_guess_2, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) + + guess = 'unit' + eom_E_guess_3, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) + + psi4.set_options({'cceom__e_convergence': e_conv, + 'cceom__r_convergence': r_conv, + 'roots_per_irrep': [N]}) + psi4.energy('eom-ccsd') + for i in range(N): + var_str = "CCSD ROOT {} CORRELATION ENERGY".format(i + 1) + psi_E = psi4.core.variable(var_str) + assert(abs(eom_E_guess_1[i] - psi_E) < 1e-5) + assert(abs(eom_E_guess_2[i] - psi_E) < 1e-5) + assert(abs(eom_E_guess_3[i] - psi_E) < 1e-5) + +# Test frozen core +def test_eomccsd_h2o_fc(): + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'true', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry(moldict["H2O_Teach"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv,r_conv,maxiter) + hbar = pycc.cchbar(cc) + eom = pycc.cceom(hbar) + + N = 3 + maxiter = 75 + e_conv = 1e-7 + r_conv = 1e-7 + + guess = 'hbar_ss' + eom_E_guess_1, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) + + guess = 'cis' + eom_E_guess_2, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) + + guess = 'unit' + eom_E_guess_3, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) + + psi4.set_options({'cceom__e_convergence': e_conv, + 'cceom__r_convergence': r_conv, + 'roots_per_irrep': [N], + 'restart': 'false'}) + psi4.energy('eom-ccsd') + for i in range(N): + var_str = "CCSD ROOT {} CORRELATION ENERGY".format(i + 1) + psi_E = psi4.core.variable(var_str) + assert(abs(eom_E_guess_1[i] - psi_E) < 1e-5) + assert(abs(eom_E_guess_2[i] - psi_E) < 1e-5) + assert(abs(eom_E_guess_3[i] - psi_E) < 1e-5) + +def test_eomccsd_c2h4_fc(): + # Psi4 Setup + psi4.core.clean() + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'true', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12, + 'diis': 1}) + mol = psi4.geometry("pubchem:ethylene") + mol.reset_point_group("c1") + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv,r_conv,maxiter) + hbar = pycc.cchbar(cc) + eom = pycc.cceom(hbar) + + N = 3 + maxiter = 75 + e_conv = 1e-7 + r_conv = 1e-7 + + guess = 'hbar_ss' + eom_E_guess_1, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) + + guess = 'cis' + eom_E_guess_2, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) + + guess = 'unit' + eom_E_guess_3, _ = eom.solve_eom(N, e_conv, r_conv, maxiter, guess) + + psi4.set_options({'cceom__e_convergence': e_conv, + 'cceom__r_convergence': r_conv, + 'roots_per_irrep': [N], + 'restart': 'false'}) + psi4.energy('eom-ccsd') + for i in range(N): + var_str = "CCSD ROOT {} CORRELATION ENERGY".format(i + 1) + psi_E = psi4.core.variable(var_str) + assert(abs(eom_E_guess_1[i] - psi_E) < 1e-5) + assert(abs(eom_E_guess_2[i] - psi_E) < 1e-5) + assert(abs(eom_E_guess_3[i] - psi_E) < 1e-5) + diff --git a/pycc/tests/test_036_cpnoppcc.py b/pycc/tests/test_036_cpnoppcc.py new file mode 100644 index 0000000..a265cb7 --- /dev/null +++ b/pycc/tests/test_036_cpnoppcc.py @@ -0,0 +1,80 @@ +""" +Test basic CPNO++-CCSD energy +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + + +def test_cpnopp_ccsd(): + """H2O CPNO++-CCSD Test""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 8}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + max_diis = 8 + + ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7, it2_opt=False) + eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) + + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) + + #Ruhee's ccsd_lpno code + esim = -0.22303320613504354 + lsim = -0.21890326836263854 + + assert (abs(esim - eccsd) < 1e-7) + assert (abs(lsim - lccsd) < 1e-7) + +def test_pnopp_ccsd_opt(): + """H2O CPNO++-CCSD with Optimized Initial T2 Amplitudes""" + # Psi4 Setup + psi4.set_memory('2 GB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-13, + 'd_convergence': 1e-13, + 'r_convergence': 1e-13, + 'diis': 8}) + mol = psi4.geometry(moldict["H2O"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + maxiter = 75 + e_conv = 1e-12 + r_conv = 1e-12 + max_diis = 8 + + ccsd = pycc.ccwfn(rhf_wfn, local='CPNO++', local_cutoff=1e-7) + eccsd = ccsd.solve_cc(e_conv, r_conv, maxiter) + + hbar = pycc.cchbar(ccsd) + cclambda = pycc.cclambda(ccsd, hbar) + lccsd = cclambda.solve_lambda(e_conv, r_conv, maxiter, max_diis) + + #Comparing against simulation code + esim = -0.223866820104919 + lsim = -0.21966259490352782 + + assert (abs(esim - eccsd) < 1e-7) + assert (abs(lsim - lccsd) < 1e-7) diff --git a/pycc/tests/test_037_quadresp.py b/pycc/tests/test_037_quadresp.py new file mode 100644 index 0000000..be198b2 --- /dev/null +++ b/pycc/tests/test_037_quadresp.py @@ -0,0 +1,93 @@ +""" +Test CCSD quadratic response function. +""" + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pytest +from ..data.molecules import * + +def test_ccsd_SHG(): + """ H2O Second Harmonic Generation CCSD Test """ + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12}) + mol = psi4.geometry(moldict["H2O_D"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-12 + r_conv = 1e-12 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + + # SHG frequencies + omega1 = 0.0656 + omega2 = 0.0656 + + resp.pert_quadresp(omega1, omega2) + SHG = resp.hyperpolar() + + #Dalton + H2O_SHG = -19.7591180824 + + # Other system's Dalton SHG value, all validated #PyCC SHG values + #CO_SHG = -32.4314012752 #CO = -32.431401275449 + #HF_SHG = 10.23985062319 #HF = 10.239850624779 + #HCl_SHG = -21.348258444480 #HCl = -21.348258543702 + + assert(abs(SHG - H2O_SHG) < 1e-7) + +def test_ccsd_OR(): + """ CO Optical Refractivity CCSD Test """ + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12}) + mol = psi4.geometry(moldict["CO"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-12 + r_conv = 1e-12 + + cc = pycc.ccwfn(rhf_wfn) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + + #OR frequencies + omega1 = -0.0656 + omega2 = 0.0656 + + resp.pert_quadresp(omega1, omega2) + OR = resp.hyperpolar() + + #Dalton + CO_OR = -29.3364710172 + + # Other system's Dalton OR value, all validated #PyCC OR values + #H2O_OR = -17.257079066 #H2O = 17.257079081719 + #HF_OR = 9.6113353644 #HF = 9.611335367514 + #HCl_OR = -19.34209144399 #HCl = -19.342091493471 + + assert(abs(OR - CO_OR) < 1e-7) diff --git a/pycc/tests/test_038_sim_quadresp.py b/pycc/tests/test_038_sim_quadresp.py index 37576f4..a6e2765 100644 --- a/pycc/tests/test_038_sim_quadresp.py +++ b/pycc/tests/test_038_sim_quadresp.py @@ -7,12 +7,55 @@ import pycc import pytest from ..data.molecules import * + +def test_PNO_ccsd_SHG(): + """ H2O Second Harmonic Generation PNO-CCSD Test using local filter""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12}) + mol = psi4.geometry(moldict["H2O_D"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-12 + r_conv = 1e-12 + + cc = pycc.ccwfn(rhf_wfn, local="PNO", local_cutoff=0, filter=True) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + + # SHG frequencies + omega1 = 0.0656 + omega2 = 0.0656 + + resp.pert_quadresp(omega1, omega2) + SHG = resp.hyperpolar() + + #Dalton + H2O_SHG = -19.7591180824 + + ### Untruncated ### + # Other system's Dalton SHG value, all validated #PyCC SHG values + #CO_SHG = -32.4314012752 #CO = -32.431401275449 + #HF_SHG = 10.23985062319 #HF = 10.239850624779 + #HCl_SHG = -21.348258444480 #HCl = -21.348258543702 + + assert(abs(SHG - H2O_SHG) < 1e-7) def test_PNOpp_ccsd_OR(): """ CO Optical Refractivity PNO++-CCSD Test using local filter""" psi4.set_memory('2 GiB') psi4.core.set_output_file('output.dat', False) - psi4.set_options({'basis': 'cc-pvdz', + psi4.set_options({'basis': 'aug-cc-pvdz', 'scf_type': 'pk', 'freeze_core': 'false', 'e_convergence': 1e-12, @@ -52,4 +95,40 @@ def test_PNOpp_ccsd_OR(): #can only compare to itself OR_sim = -14.631284641281 assert(abs(OR - OR_sim) < 1e-10) - + +def test_CPNOpp_ccsd_SHG(): + """ H2O Second Harmonic Generation CPNO++-CCSD Test using local filter""" + psi4.set_memory('2 GiB') + psi4.core.set_output_file('output.dat', False) + psi4.set_options({'basis': 'aug-cc-pvdz', + 'scf_type': 'pk', + 'freeze_core': 'false', + 'e_convergence': 1e-12, + 'd_convergence': 1e-12, + 'r_convergence': 1e-12}) + mol = psi4.geometry(moldict["H2O_D"]) + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) + + e_conv = 1e-12 + r_conv = 1e-12 + + #Testing different localization scheme for MOS -> Foster-Boys + cc = pycc.ccwfn(rhf_wfn, local_mos = 'BOYS', local="CPNO++", local_cutoff = 1e-7, filter=True) + ecc = cc.solve_cc(e_conv, r_conv) + hbar = pycc.cchbar(cc) + cclambda = pycc.cclambda(cc, hbar) + lecc = cclambda.solve_lambda(e_conv, r_conv) + density = pycc.ccdensity(cc, cclambda) + + resp = pycc.ccresponse(density) + + #SHG frequencies + omega1 = 0.0656 + omega2 = 0.0656 + + resp.pert_quadresp(omega1, omega2) + SHG = resp.hyperpolar() + + #can only compare to itself + SHG_sim = -17.874897845906 + assert(abs(SHG - SHG_sim) < 1e-10) From e2f8194fa3d8d23217989ce4fa8c0fc16da5f497 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Fri, 19 Apr 2024 16:22:02 -0400 Subject: [PATCH 16/21] including python 3.8 --- .github/workflows/CI.yaml | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 0a0481f..9edcb3d 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -22,7 +22,7 @@ jobs: fail-fast: true matrix: os: [macOS-latest] - python-version: ['3.11'] + python-version: ['3.8','3.11'] steps: - uses: actions/checkout@v2 diff --git a/setup.py b/setup.py index 6831a17..71fd45e 100644 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ 'Mac OS-X', 'Unix'], # 'Windows'], # Valid platforms your code works on, adjust to your flavor - python_requires=">=3.11" # Python version restrictions + python_requires=">=3.7" # Python version restrictions # Manual control if final package is compressible or not, set False to prevent the .egg from being made # zip_safe=False, From 52ba168fbaac7e3e18de6d562aa6bd46f41e7caf Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Sat, 20 Apr 2024 09:14:04 -0400 Subject: [PATCH 17/21] testing test_038 --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 9edcb3d..f7dba1b 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -68,7 +68,7 @@ jobs: run: | export KMP_DUPLICATE_LIB_OK=TRUE pip install coverage - coverage run -m pytest + coverage run -m pytest -s test_038_sim_quadresp.py::test_PNOpp_ccsd_OR() coverage xml ls -l From 6f9a51058e52c0b518c21e6c3fe5b97babd90541 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Sat, 20 Apr 2024 09:21:40 -0400 Subject: [PATCH 18/21] testing test_038 --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index f7dba1b..402f359 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -68,7 +68,7 @@ jobs: run: | export KMP_DUPLICATE_LIB_OK=TRUE pip install coverage - coverage run -m pytest -s test_038_sim_quadresp.py::test_PNOpp_ccsd_OR() + coverage run -m pytest -s test_038_sim_quadresp.py::test_PNOpp_ccsd_OR coverage xml ls -l From 02498886cd8b5154b3fbb25f80d096a82aa9dee6 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Sat, 20 Apr 2024 09:29:05 -0400 Subject: [PATCH 19/21] testing test_038 --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 402f359..81d9e45 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -68,7 +68,7 @@ jobs: run: | export KMP_DUPLICATE_LIB_OK=TRUE pip install coverage - coverage run -m pytest -s test_038_sim_quadresp.py::test_PNOpp_ccsd_OR + coverage run -m pytest -s tests/test_038_sim_quadresp.py::test_PNOpp_ccsd_OR coverage xml ls -l From dc010e78335e2b3fd2ef8ea825555853ad775032 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Sat, 20 Apr 2024 09:37:59 -0400 Subject: [PATCH 20/21] testing test_038 --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 81d9e45..bd46102 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -68,7 +68,7 @@ jobs: run: | export KMP_DUPLICATE_LIB_OK=TRUE pip install coverage - coverage run -m pytest -s tests/test_038_sim_quadresp.py::test_PNOpp_ccsd_OR + coverage run -m pytest -s test_038_sim_quadresp.py coverage xml ls -l From ba0cf3afa575dde4491142b064d7530c37ee5446 Mon Sep 17 00:00:00 2001 From: Jose Marc Madriaga Date: Sat, 20 Apr 2024 09:45:33 -0400 Subject: [PATCH 21/21] testing test_038 --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index bd46102..9ef3ec3 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -68,7 +68,7 @@ jobs: run: | export KMP_DUPLICATE_LIB_OK=TRUE pip install coverage - coverage run -m pytest -s test_038_sim_quadresp.py + coverage run -m pytest -s pycc/tests/test_038_sim_quadresp.py::test_PNOpp_ccsd_OR coverage xml ls -l

jHqv^HDi#uTd3Sw^+!jTka8{dY07A{AMdcwS2Q0 z+kav~Kvmi-%GzsG#d?do;nP`Bw}>uARVv!|dk;g^e9sRVHE18G*A{kz@tt(+$$Lu6 zP?Z$@tCXV9C^zwTh#xTL<0WXEIpgrQ+C^{OCV*+spV`#GnGL z7f*>_InfB_Dl5n8b1|BW{QM>8z;a%-_3sm*S`b#5tOWB*BnZ|P9d@fNnU_FVxs{yQ zLi_bg28%;yz+;adEqdL|umB5PxtPylQ9jB@qAUlsNX}l!Vt3y7mbsEjT(RDLS$_m} zf)w2&Yd#mDEdA`yeD2#}f7|l;7q%~FsOxO0bm0qNxk#PCJ~6yxF Yu1M4E`Ewqd-veo7i5zC`ia5&t4_Ey%i2wiq literal 0 HcmV?d00001 diff --git a/pycc/tests/test_016_chk/ref_016_chk.py b/pycc/tests/test_016_chk/ref_016_chk.py new file mode 100644 index 0000000..5387f4c --- /dev/null +++ b/pycc/tests/test_016_chk/ref_016_chk.py @@ -0,0 +1,68 @@ +""" +Test checkpointing for rt propagation +Script to generate the 0-5.1au checkpoint and +the "full" propagation reference data + +To re-generate reference data, first run full = True, then full = False +""" +full = False + +# Import package, test suite, and other packages as needed +import psi4 +import pycc +import pickle as pk +import numpy as np +from pycc.rt.integrators import rk2 +from pycc.rt.lasers import gaussian_laser +from pycc.data.molecules import * + +# run cc +psi4.set_memory('600MB') +psi4.core.set_output_file('output.dat', False) +psi4.set_options({'basis': 'cc-pVDZ', + 'scf_type': 'pk', + 'mp2_type': 'conv', + 'freeze_core': 'false', + 'e_convergence': 1e-8, + 'd_convergence': 1e-8, + 'r_convergence': 1e-8, + 'diis': 8}) +mol = psi4.geometry(moldict["H2"]) +if full: + rhf_e, rhf_wfn = psi4.energy('SCF', return_wfn=True) +else: + rhf_wfn = psi4.core.Wavefunction.from_file('ref_wfn') +e_conv = 1e-8 +r_conv = 1e-8 +cc = pycc.ccwfn(rhf_wfn) +ecc = cc.solve_cc(e_conv, r_conv) +hbar = pycc.cchbar(cc) +cclambda = pycc.cclambda(cc, hbar) +lecc = cclambda.solve_lambda(e_conv, r_conv) +ccdensity = pycc.ccdensity(cc, cclambda) + +# narrow Gaussian pulse +F_str = 0.001 +sigma = 0.01 +center = 0.05 +V = gaussian_laser(F_str, 0, sigma, center=center) + +# RTCC +# use tf = 5 to generate checkpoint file +h = 0.1 +ti = 0 +if full: + tf = 10 +else: + tf = 5 +rtcc = pycc.rtcc(cc,cclambda,ccdensity,V,magnetic=True,kick='z') +y0 = rtcc.collect_amps(cc.t1,cc.t2,cclambda.l1,cclambda.l2).astype('complex128') +ODE = rk2(h) + +# if full: run entire propagation, save amps / props / rhf wfn +if full: + ret, ret_t = rtcc.propagate(ODE, y0, tf, ti=ti, ref=False, chk=True, tchk=1, + cfile="chk_full.pk", ofile="output_full.pk",tfile="t_out_full.pk",k=2) +else: + ret, ret_t = rtcc.propagate(ODE, y0, tf, ti=ti, ref=False, chk=True, tchk=1, + cfile="chk_5.pk",k=2) diff --git a/pycc/tests/test_016_chk/t_out.pk b/pycc/tests/test_016_chk/t_out.pk new file mode 100644 index 0000000000000000000000000000000000000000..90958395f5be805ffd6b71cee0b1ee78068f25e5 GIT binary patch literal 158388 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