def test_binary_operator(self): a = pybamm.Symbol("a") b = pybamm.Symbol("b") bin = pybamm.BinaryOperator("binary test", a, b) self.assertEqual(bin.children[0].name, a.name) self.assertEqual(bin.children[1].name, b.name) c = pybamm.Scalar(1) d = pybamm.Scalar(2) bin2 = pybamm.BinaryOperator("binary test", c, d) with self.assertRaises(NotImplementedError): bin2.evaluate()
def test_id(self): a = pybamm.Scalar(4) b = pybamm.Scalar(5) bin1 = pybamm.BinaryOperator("test", a, b) bin2 = pybamm.BinaryOperator("test", a, b) bin3 = pybamm.BinaryOperator("new test", a, b) self.assertEqual(bin1.id, bin2.id) self.assertNotEqual(bin1.id, bin3.id) c = pybamm.Scalar(5) bin4 = pybamm.BinaryOperator("test", a, c) self.assertEqual(bin1.id, bin4.id) d = pybamm.Scalar(42) bin5 = pybamm.BinaryOperator("test", a, d) self.assertNotEqual(bin1.id, bin5.id)
def test_binary_operator_domains(self): # same domain a = pybamm.Symbol("a", domain=["negative electrode"]) b = pybamm.Symbol("b", domain=["negative electrode"]) bin1 = pybamm.BinaryOperator("binary test", a, b) self.assertEqual(bin1.domain, ["negative electrode"]) # one empty domain c = pybamm.Symbol("c", domain=[]) bin2 = pybamm.BinaryOperator("binary test", a, c) self.assertEqual(bin2.domain, ["negative electrode"]) bin3 = pybamm.BinaryOperator("binary test", c, b) self.assertEqual(bin3.domain, ["negative electrode"]) # mismatched domains d = pybamm.Symbol("d", domain=["positive electrode"]) with self.assertRaises(pybamm.DomainError): pybamm.BinaryOperator("binary test", a, d)