Пример #1
0
            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]
Пример #2
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
Пример #3
0
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)
Пример #4
0
    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()