Beispiel #1
0
 def test_atomic_rotate(self):
     """Test random rotation for atomic grid."""
     rad_pts = np.array([0.1, 0.5, 1])
     rad_wts = np.array([0.3, 0.4, 0.3])
     rad_grid = OneDGrid(rad_pts, rad_wts)
     degs = [3, 5, 7]
     atgrid = AtomGrid(rad_grid, degrees=degs)
     # make sure True and 1 is not the same result
     atgrid1 = AtomGrid(rad_grid, degrees=degs, rotate=True)
     atgrid2 = AtomGrid(rad_grid, degrees=degs, rotate=1)
     # test diff points, same weights
     assert not np.allclose(atgrid.points, atgrid1.points)
     assert not np.allclose(atgrid.points, atgrid2.points)
     assert not np.allclose(atgrid1.points, atgrid2.points)
     assert_allclose(atgrid.weights, atgrid1.weights)
     assert_allclose(atgrid.weights, atgrid2.weights)
     assert_allclose(atgrid1.weights, atgrid2.weights)
     # test same integral
     value = np.prod(atgrid.points**2, axis=-1)
     value1 = np.prod(atgrid.points**2, axis=-1)
     value2 = np.prod(atgrid.points**2, axis=-1)
     res = atgrid.integrate(value)
     res1 = atgrid1.integrate(value1)
     res2 = atgrid2.integrate(value2)
     assert_almost_equal(res, res1)
     assert_almost_equal(res1, res2)
     # test rotated shells
     for i in range(len(degs)):
         non_rot_shell = atgrid.get_shell_grid(i).points
         rot_shell = atgrid2.get_shell_grid(i).points
         rot_mt = R.random(random_state=1 + i).as_matrix()
         assert_allclose(rot_shell, non_rot_shell @ rot_mt)
Beispiel #2
0
 def test_get_shell_grid(self):
     """Test angular grid get from get_shell_grid function."""
     rad_pts = np.array([0.1, 0.5, 1])
     rad_wts = np.array([0.3, 0.4, 0.3])
     rad_grid = OneDGrid(rad_pts, rad_wts)
     degs = [3, 5, 7]
     atgrid = AtomGrid(rad_grid, degrees=degs)
     assert atgrid.n_shells == 3
     # grep shell with r^2
     for i in range(atgrid.n_shells):
         sh_grid = atgrid.get_shell_grid(i)
         assert isinstance(sh_grid, AngularGrid)
         ref_grid = AngularGrid(degree=degs[i])
         assert np.allclose(sh_grid.points, ref_grid.points * rad_pts[i])
         assert np.allclose(sh_grid.weights,
                            ref_grid.weights * rad_wts[i] * rad_pts[i]**2)
     # grep shell without r^2
     for i in range(atgrid.n_shells):
         sh_grid = atgrid.get_shell_grid(i, r_sq=False)
         assert isinstance(sh_grid, AngularGrid)
         ref_grid = AngularGrid(degree=degs[i])
         assert np.allclose(sh_grid.points, ref_grid.points * rad_pts[i])
         assert np.allclose(sh_grid.weights, ref_grid.weights * rad_wts[i])