class MatpowerReaderTest(ReaderTest): """ Defines a test case for the MATPOWER reader. """ def setUp(self): """ The test runner will execute this method prior to each test. """ self.reader = MATPOWERReader() def test_case6ww(self): """ Test parsing case6ww.m MATPOWER file. """ self.case = c = self.reader.read(MATPOWER_DATA_FILE) self._validate_base(base_mva=100.0) # Network structure validation. self._validate_object_numbers(n_buses=6, n_branches=11, n_gen=3) self._validate_slack_bus(slack_idx=0) self._validate_generator_connections(gbus_idxs=[0, 1, 2]) self._validate_branch_connections( from_idxs=[0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 4], to_idxs=[1, 3, 4, 2, 3, 4, 5, 4, 5, 4, 5]) # Generator costs. for g in c.generators: self.assertEqual(g.pcost_model, "poly") self.assertEqual(len(g.p_cost), 3) self.assertEqual(c.generators[0].p_cost[0], 0.00533) self.assertEqual(c.generators[1].p_cost[1], 10.333) self.assertEqual(c.generators[2].p_cost[2], 240) def test_case6ww_v1(self): """ Test parsing case6ww version 1 MATPOWER file. """ self.case = c = self.reader.read(MP_V1_DATA_FILE) self._validate_base(base_mva=100.0) # Network structure validation. self._validate_object_numbers(n_buses=6, n_branches=11, n_gen=3) self._validate_slack_bus(slack_idx=0) self._validate_generator_connections(gbus_idxs=[0, 1, 2]) self._validate_branch_connections( from_idxs=[0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 4], to_idxs=[1, 3, 4, 2, 3, 4, 5, 4, 5, 4, 5]) # Generator costs. for g in c.generators: self.assertEqual(g.pcost_model, "poly") self.assertEqual(len(g.p_cost), 3) self.assertEqual(c.generators[0].p_cost[0], 0.00533) self.assertEqual(c.generators[1].p_cost[1], 10.333) self.assertEqual(c.generators[2].p_cost[2], 240) def test_case30pwl(self): """ Test parsing case30pwl.m. """ case = self.case = self.reader.read(PWL_MP_DATA_FILE) self._validate_base(base_mva=100.0) self._validate_object_numbers(n_buses=30, n_branches=41, n_gen=6) self._validate_slack_bus(slack_idx=0) self._validate_generator_connections(gbus_idxs=[0, 1, 21, 26, 22, 12]) self._validate_branch_connections(from_idxs=[ 0, 0, 1, 2, 1, 1, 3, 4, 5, 5, 5, 5, 8, 8, 3, 11, 11, 11, 11, 13, 15, 14, 17, 18, 9, 9, 9, 9, 20, 14, 21, 22, 23, 24, 24, 27, 26, 26, 28, 7, 5 ], to_idxs=[ 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 9, 10, 9, 11, 12, 13, 14, 15, 14, 16, 17, 18, 19, 19, 16, 20, 21, 21, 22, 23, 23, 24, 25, 26, 26, 28, 29, 29, 27, 27 ]) # Generator costs. generators = case.generators for g in generators: self.assertEqual(g.pcost_model, "pwl") self.assertEqual(len(g.p_cost), 4) self.assertEqual(g.p_cost[0], (0.0, 0.0)) self.assertEqual(generators[0].p_cost[1], (12.0, 144.0)) self.assertEqual(generators[4].p_cost[2], (36.0, 1296.0)) self.assertEqual(generators[5].p_cost[3], (60.0, 2832.0))