Пример #1
0
    def test_B2PLYP_hess(self):

        from pkg_resources import resource_filename
        from pyxdh.Utilities.test_molecules import Mol_H2O2
        from pyxdh.Utilities import FormchkInterface
        from pyxdh.DerivOnce import GradMP2
        import pickle

        H2O2 = Mol_H2O2(xc="0.53*HF + 0.47*B88, 0.73*LYP")
        config = {"scf_eng": H2O2.gga_eng, "cc": 0.27}
        grad_helper = GradMP2(config)

        config = {
            "deriv_A": grad_helper,
            "deriv_B": grad_helper,
        }

        helper = HessMP2(config)
        E_2 = helper.E_2

        formchk = FormchkInterface(
            resource_filename("pyxdh",
                              "Validation/gaussian/H2O2-B2PLYP-freq.fchk"))

        assert (np.allclose(E_2, formchk.hessian(), atol=1e-5, rtol=1e-4))

        with open(
                resource_filename(
                    "pyxdh",
                    "Validation/numerical_deriv/mp2_hessian_b2plyp.dat"),
                "rb") as f:
            ref_hess = pickle.load(f)["hess"]

        assert (np.allclose(E_2, ref_hess, atol=1e-6, rtol=1e-4))
Пример #2
0
    def test_MP2_hess(self):

        from pkg_resources import resource_filename
        from pyxdh.Utilities.test_molecules import Mol_H2O2
        from pyxdh.Utilities import FormchkInterface
        from pyxdh.DerivOnce import GradMP2

        H2O2 = Mol_H2O2()
        config = {
            "scf_eng": H2O2.hf_eng,
            "rotation": True,
        }
        grad_helper = GradMP2(config)
        config = {
            "deriv_A": grad_helper,
            "deriv_B": grad_helper,
        }

        helper = HessMP2(config)
        E_2 = helper.E_2

        formchk = FormchkInterface(
            resource_filename("pyxdh",
                              "Validation/gaussian/H2O2-MP2-freq.fchk"))

        assert (np.allclose(E_2, formchk.hessian(), atol=1e-6, rtol=1e-4))
Пример #3
0
 def test_r_b2plyp_grad(self):
     scf_eng = dft.RKS(self.mol, xc="0.53*HF + 0.47*B88, 0.73*LYP"); scf_eng.grids = self.grids; scf_eng.run()
     gradh = GradMP2({"scf_eng": scf_eng, "cc": 0.27, "cphf_grids": self.grids_cphf})
     formchk = FormchkInterface(resource_filename("pyxdh", "Validation/gaussian/NH3-B2PLYP-freq.fchk"))
     # ASSERT: energy - Gaussian
     assert np.allclose(gradh.eng, formchk.total_energy())
     # ASSERT: grad - Gaussian
     assert np.allclose(gradh.E_1, formchk.grad(), atol=1e-6, rtol=1e-4)
Пример #4
0
def mol_to_grad_helper(mol):
    print("Processing...")
    H2O2 = Mol_H2O2(mol=mol, xc="0.53*HF + 0.47*B88, 0.73*LYP")
    config = {
        "scf_eng": H2O2.gga_eng,
        "cc": 0.27
    }
    helper = GradMP2(config)
    return helper
Пример #5
0
 def test_r_mp2_hess(self):
     scf_eng = scf.RHF(self.mol).run()
     gradh = GradMP2({"scf_eng": scf_eng})
     hessh = HessMP2({"deriv_A": gradh})
     formchk = FormchkInterface(
         resource_filename("pyxdh",
                           "Validation/gaussian/NH3-MP2-freq.fchk"))
     # ASSERT: hessian - Gaussian
     assert np.allclose(hessh.E_2, formchk.hessian(), atol=1e-6, rtol=1e-4)
Пример #6
0
 def test_r_mp2_dipderiv(self):
     scf_eng = scf.RHF(self.mol).run()
     gradh = GradMP2({"scf_eng": scf_eng})
     diph = DipoleMP2({"scf_eng": scf_eng})
     ddh = DipDerivMP2({"deriv_A": diph, "deriv_B": gradh})
     formchk = FormchkInterface(
         resource_filename("pyxdh",
                           "Validation/gaussian/NH3-MP2-freq.fchk"))
     # ASSERT: hessian - Gaussian
     assert np.allclose(ddh.E_2.T,
                        formchk.dipolederiv(),
                        atol=5e-6,
                        rtol=2e-4)
Пример #7
0
 def test_r_mp2_grad(self):
     scf_eng = scf.RHF(self.mol).run()
     mp2_eng = mp.MP2(scf_eng).run()
     mp2_grad = mp2_eng.Gradients().run()
     gradh = GradMP2({"scf_eng": scf_eng})
     formchk = FormchkInterface(resource_filename("pyxdh", "Validation/gaussian/NH3-MP2-freq.fchk"))
     # ASSERT: energy - Gaussian
     assert np.allclose(gradh.eng, formchk.total_energy())
     # ASSERT: energy - PySCF
     assert np.allclose(gradh.eng, mp2_eng.e_tot)
     # ASSERT: grad - Gaussian
     assert np.allclose(gradh.E_1, formchk.grad(), atol=1e-6, rtol=1e-4)
     # ASSERT: grad - PySCF
     assert np.allclose(gradh.E_1, mp2_grad.de, atol=1e-6, rtol=1e-4)
Пример #8
0
    def test_MP2_dipderiv(self):

        from pkg_resources import resource_filename
        from pyxdh.Utilities.test_molecules import Mol_H2O2
        from pyxdh.Utilities import FormchkInterface
        from pyxdh.DerivOnce import DipoleMP2, GradMP2

        H2O2 = Mol_H2O2()
        config = {"scf_eng": H2O2.hf_eng, "cphf_tol": 1e-10}
        dip_helper = DipoleMP2(config)
        grad_helper = GradMP2(config)
        config = {"deriv_A": dip_helper, "deriv_B": grad_helper}
        helper = DipDerivMP2(config)
        E_2 = helper.E_2

        formchk = FormchkInterface(resource_filename("pyxdh", "Validation/gaussian/H2O2-MP2-freq.fchk"))
        assert(np.allclose(E_2.T, formchk.dipolederiv(), atol=1e-6, rtol=1e-4))
Пример #9
0
    def test_B2PLYP_dipderiv(self):

        from pkg_resources import resource_filename
        from pyxdh.Utilities.test_molecules import Mol_H2O2
        from pyxdh.Utilities import FormchkInterface
        from pyxdh.DerivOnce import DipoleMP2, GradMP2

        H2O2 = Mol_H2O2(xc="0.53*HF + 0.47*B88, 0.73*LYP")
        grids_cphf = H2O2.gen_grids(50, 194)
        config = {"scf_eng": H2O2.gga_eng, "cc": 0.27, "cphf_grids": grids_cphf}
        dip_helper = DipoleMP2(config)
        grad_helper = GradMP2(config)
        config = {"deriv_A": dip_helper, "deriv_B": grad_helper}
        helper = DipDerivMP2(config)
        E_2 = helper.E_2

        formchk = FormchkInterface(resource_filename("pyxdh", "Validation/gaussian/H2O2-B2PLYP-freq.fchk"))
        assert(np.allclose(E_2.T, formchk.dipolederiv(), atol=1e-6, rtol=1e-4))