def test33(): v1 = Vector([1, 0, 0]) v2 = Vector([0, 1, 0]) v3 = v1.cross(v2) assert_is_instance(v3, Vector) assert_true(np.allclose(v3, np.cross(np.asarray(v1), np.asarray(v2)))) assert_true(np.allclose(v3.p0, v1.p0)) assert_true(np.allclose(v3.p0, v2.p0)) v1 = Vector([1, 0, 0], p0=[1, 1, 1]) v2 = Vector([0, 1, 0], p0=[1, 1, 1]) v3 = v1.cross(v2) assert_is_instance(v3, Vector) assert_true(np.allclose(v3, np.cross(np.asarray(v1), np.asarray(v2)))) assert_true(np.allclose(v3.p0, v1.p0)) assert_true(np.allclose(v3.p0, v2.p0)) v1 = Vector([1, 0, 0], p0=[1, 0, 0]) v2 = Vector([0, 1, 0], p0=[0, 1, 0]) v3 = v1.cross(v2) assert_is_instance(v3, Vector) assert_true(np.allclose(v3, np.cross(np.asarray(v1), np.asarray(v2)))) assert_true(np.allclose(v3.p0, v1.p0)) assert_false(np.allclose(v3.p0, v2.p0)) v1 = Vector([1, 2, 3], p0=[1, 0, 0]) v2 = Vector([4, 5, 6], p0=[0, 1, 0]) v3 = v1.cross(v2) assert_is_instance(v3, Vector) assert_true(np.allclose(v3, np.cross(np.asarray(v1), np.asarray(v2)))) assert_true(np.allclose(v3.p0, v1.p0)) assert_false(np.allclose(v3.p0, v2.p0))
def b1(self): """2D reciprocal lattice vector :math:`\\mathbf{b}_1=\\mathbf{a}^{*}`. """ a2 = Vector() a2[:2] = self.a2 return a2.cross(zhat)[:2] / self.cell_area
def a1(self): """2D lattice vector :math:`\\mathbf{a}_1=\\mathbf{a}`.""" b2 = Vector() b2[:2] = self.b2 return b2.cross(zhat) / self.cell_area