예제 #1
0
def test_orbital_based_raises():
    # check file name
    assert_raises(ValueError, DFTBasedTool.from_file, "gibberish",
                  np.array([0.0, 1.0]))
    with path("chemtools.data", "h2o_dimer_pbe_sto3g.wfn") as fname:
        assert_raises(ValueError, DFTBasedTool.from_file, fname,
                      np.array([0.0, 1.0]))
        assert_raises(ValueError, DFTBasedTool.from_file, fname,
                      np.array([0.0, 1.0]))
    with path("chemtools.data", "h2o_dimer_pbe_sto3g.wfn") as fname:
        assert_raises(ValueError, DFTBasedTool.from_file, fname,
                      np.array([0.0, 1.0]))
        assert_raises(ValueError, DFTBasedTool.from_file, fname,
                      np.array([0.0, 1.0, 0.0]))
        assert_raises(ValueError, DFTBasedTool.from_file, fname,
                      np.array([[0, 1], [1, 0.]]))
        # check spin argument
        tool = DFTBasedTool.from_file(fname, np.array([[0., 0., 0.]]))
    assert_raises(KeyError,
                  tool._compute_orbital_expression,
                  np.array([9]),
                  spin="error")
    assert_raises(KeyError,
                  tool._compute_orbital_expression,
                  np.array([9]),
                  spin="alph")
    assert_raises(KeyError,
                  tool._compute_orbital_expression,
                  np.array([9]),
                  spin="bet")
예제 #2
0
def test_orbital_based_h2o_b3lyp_sto3g():
    # points array
    points = np.array([[-3., -3., -3.], [-3., -3., 0.], [-3., -3., 3.],
                       [-3., 0., -3.], [-3., 0., 0.], [-3., 0., 3.],
                       [-3., 3., -3.], [-3., 3., 0.], [-3., 3., 3.],
                       [0., -3., -3.], [0., -3., 0.], [0., -3., 3.],
                       [0., 0., -3.], [0., 0., 0.],
                       [0., 0., 3.], [0., 3., -3.], [0., 3., 0.], [0., 3., 3.],
                       [3., -3., -3.], [3., -3., 0.], [3., -3., 3.],
                       [3., 0., -3.], [3., 0., 0.], [3., 0.,
                                                     3.], [3., 3., -3.],
                       [3., 3., 0.], [3., 3., 3.]])
    # initialize OrbitalLocalTool from_file
    with path("chemtools.data", "water_b3lyp_sto3g.fchk") as fname:
        tool = DFTBasedTool.from_file(fname, points)
    # check mep against Fortran code
    expected = np.array([
        -0.01239766, -0.02982537, -0.02201149, -0.01787292, -0.05682143,
        -0.02503563, -0.00405942, -0.00818772, -0.00502268, 0.00321181,
        -0.03320573, -0.02788605, 0.02741914, 1290.21135500, -0.03319778,
        0.01428660, 0.10127092, 0.01518299, 0.01530548, 0.00197975,
        -0.00894206, 0.04330806, 0.03441681, -0.00203017, 0.02272626,
        0.03730846, 0.01463959
    ])
    assert_array_almost_equal(tool.electrostatic_potential,
                              expected,
                              decimal=6)
    # check spin chemical potential against manual calculation
    result = tool.compute_spin_chemical_potential(25000.0)
    assert_array_almost_equal(result, [0.10821228040, 0.10821228040],
                              decimal=6)
예제 #3
0
def test_orbital_based_from_file_ch4_uhf_ccpvdz():
    # load data computed with Fortran code
    with path("chemtools.data", "data_fortran_ch4_uhf_ccpvdz.npz") as fname:
        data = np.load(str(fname))
    # test from_file initialization & check against Fortran code
    with path("chemtools.data", "ch4_uhf_ccpvdz.fchk") as fname:
        tool = DFTBasedTool.from_file(fname, data["points"])
    check_orbital_based_properties(tool, data)