output='h2co_sa2_casscf66_631g_grad.log') mf_conv = scf.RHF(mol).run() mc_conv = mcscf.CASSCF(mf_conv, 6, 6) mc_conv.fcisolver = csf_solver(mol, smult=1) mc_conv = mc_conv.state_average_([0.5, 0.5]) mc_conv.conv_tol = 1e-10 mc_conv.kernel() mf = scf.RHF(mol).density_fit(auxbasis=df.aug_etb(mol)).run() mc = mcscf.CASSCF(mf, 6, 6) mc.fcisolver = csf_solver(mol, smult=1) mc = mc.state_average_([0.5, 0.5]) mc.conv_tol = 1e-10 mc.kernel() numgrad_conv = numeric_grad.Gradients(mc_conv).run() print("First state") de_conv = mc_conv.nuc_grad_method().kernel(state=0) print("Conventional ERI analytic:\n", de_conv) de_conv_num = numgrad_conv.de_states[0] #de_conv_num = np.array ([[-6.29268207e-02, 1.76592986e-04, -7.39246008e-06], # [ 6.86265793e-02, -1.74918975e-04, -1.91981128e-06], # [-2.70814282e-03, -1.13363633e-05, -5.35862378e-04], # [-2.70418672e-03, -5.80733661e-06, 5.42638644e-04]]) print("Conventional ERI numeric:\n", de_conv_num) print("Conventional ERI a-n:\n", de_conv - de_conv_num) print("Error norm =", linalg.norm(de_conv - de_conv_num)) de_df = casscf_grad.Gradients(mc).kernel(state=0) print("DF-ERI analytic:\n", de_df) numgrad_df = numeric_grad.Gradients(mc).run() de_df_num = numgrad_df.de_states[0]
output='h2co_casscf66_631g_grad.log') mf_conv = scf.RHF(mol).run() mc_conv = mcscf.CASSCF(mf_conv, 6, 6) mc_conv.conv_tol = 1e-10 mc_conv.kernel() mf = scf.RHF(mol).density_fit(auxbasis=df.aug_etb(mol)).run() mc_df = mcscf.CASSCF(mf, 6, 6) mc_df.conv_tol = 1e-10 mc_df.kernel() try: de_num = np.load('h2co_casscf66_631g_grad_num.npy') de_conv_num, de_df_num = list(de_num) except OSError as e: de_conv_num = numeric_grad.Gradients(mc_conv).kernel() de_df_num = numeric_grad.Gradients(mc_df).kernel() np.save('h2co_casscf66_631g_grad_num.npy', np.stack((de_conv_num, de_df_num), axis=0)) def my_call(env): carts = env['mol'].atom_coords() * lib.param.BOHR h2co_geom_analysis(carts) conv_params = { 'convergence_energy': 1e-6, # Eh 'convergence_grms': 5.0e-5, # Eh/Bohr 'convergence_gmax': 7.5e-5, # Eh/Bohr 'convergence_drms': 1.0e-4, # Angstrom
mc_conv = mc_conv.state_average_([0.5, 0.5]) mc_conv.conv_tol = 1e-10 mc_conv.kernel() mf = scf.RHF(mol).density_fit(auxbasis=df.aug_etb(mol)).run() mc_df = mcpdft.CASSCF(mf, 'tPBE', 6, 6, grids_level=6) mc_df.fcisolver = csf_solver(mol, smult=1) mc_df = mc_df.state_average_([0.5, 0.5]) mc_df.conv_tol = 1e-10 mc_df.kernel() try: de_num = np.load('h2co_sa2_tpbe66_631g_grad_num.npy') de_conv_0_num, de_conv_1_num, de_df_0_num, de_df_1_num = list(de_num) except OSError as e: conv_num = numeric_grad.Gradients(mc_conv).run() de_conv_0_num, de_conv_1_num = list(conv_num.de_states) df_num = numeric_grad.Gradients(mc_df).run() de_df_0_num, de_df_1_num = list(df_num.de_states) np.save('h2co_sa2_tpbe66_631g_grad_num.npy', np.append(conv_num.de_states, df_num.de_states, axis=0)) de_conv_0 = mc_conv.nuc_grad_method().kernel(state=0) de_df_0 = mcpdft_grad.Gradients(mc_df).kernel(state=0) de_conv_1 = mc_conv.nuc_grad_method().kernel(state=1) de_df_1 = mcpdft_grad.Gradients(mc_df).kernel(state=1) def printable_grad(arr): arr[np.abs(arr) < 1e-10] = 0.0 line_fmt = ' '.join(('{:13.9f}', ) * 3)
from pyscf import gto from pyscf import scf from pyscf import mcscf from pyscf import df from mrh.my_pyscf.grad import numeric mol = gto.Mole() mol.atom = 'N 0 0 0; N 0 0 1.2; H 1 1 0; H 1 1 1.2' mol.basis = '631g' mol.build() aux = df.aug_etb(mol) mf = scf.RHF(mol).density_fit(auxbasis=aux).run() mc = mcscf.CASSCF(mf, 4, 4).run() mc.conv_tol = 1e-10 de = Gradients(mc).kernel() de_num = numeric.Gradients(mc).kernel() #print(lib.finger(de) - 0.019602220578635747) print(lib.finger(de) - lib.finger(de_num)) mol = gto.Mole() mol.verbose = 0 mol.atom = 'N 0 0 0; N 0 0 1.2' mol.basis = 'sto3g' mol.build() mf = scf.RHF(mol).density_fit(auxbasis=aux).run() mc = mcscf.CASSCF(mf, 4, 4) mc.conv_tol = 1e-10 mc.kernel() de = Gradients(mc).kernel() mcs = mc.as_scanner()