def test_axes_orthonorm(self): import opan.utils.inertia as oui from opan.utils.vector import orthonorm_check as onchk axes = oui.principals(self.xyz.geoms[0], self.hess.atom_masses)[1] on, nfail, ofail = onchk(axes, report=True) self.assertTrue(on, msg="Norm failures: " + str(nfail) + "; ortho failures: " + str(ofail))
def test_moments(self): import opan.utils.inertia as oui moments = oui.principals(self.xyz.geoms[0], self.hess.atom_masses)[0] for i in range(moments.shape[0]): if moments[i] < 1e-10: self.assertAlmostEqual(self.moments[i], moments[i], delta=1e-7, msg="Principal moment index '" + str(i) + "'") else: self.assertAlmostEqual(self.moments[i] / moments[i], 1.0, delta=1e-7, msg="Principal moment index '" + str(i) + "'")
def test_axes(self): import opan.utils.inertia as oui axes = oui.principals(self.xyz.geoms[0], self.hess.atom_masses)[1] for i in range(axes.shape[0]): for j in range(axes.shape[1]): if abs(axes[i,j]) < 1e-10: self.assertAlmostEqual(self.axes[i,j], axes[i,j], delta=1e-7, msg="Principal axis #" + str(j) + ", element " + str(i)) else: self.assertAlmostEqual(self.axes[i,j] / axes[i,j], 1.0, delta=1e-6, msg="Principal axis #" + str(j) + ", element " + str(i))
def test_toptype(self): import opan.utils.inertia as oui top = oui.principals(self.xyz.geoms[0], self.hess.atom_masses)[2] self.assertEqual(top, self.top)