def test_n_react(self): """ Test number of reactions property. """ mat_to_ind = {"10000": 0, "10001": 1} nuc_to_ind = {"U238": 0, "U235": 1, "Gd157": 2} react_to_ind = {"fission": 0, "(n,gamma)": 1, "(n,2n)": 2, "(n,3n)": 3} rates = reaction_rates.ReactionRates(mat_to_ind, nuc_to_ind, react_to_ind) self.assertEqual(rates.n_react, 4)
def test_form_matrix(self): """ Using chain_test, and a dummy reaction rate, compute the matrix. """ # Relies on test_xml_read passing. dep = depletion_chain.DepletionChain.xml_read("chains/chain_test.xml") cell_ind = {"10000": 0, "10001": 1} nuc_ind = {"A": 0, "B": 1, "C": 2} react_ind = dep.react_to_ind react = reaction_rates.ReactionRates(cell_ind, nuc_ind, react_ind) dep.nuc_to_react_ind = nuc_ind react["10000", "C", "fission"] = 1.0 react["10000", "A", "(n,gamma)"] = 2.0 react["10000", "B", "(n,gamma)"] = 3.0 react["10000", "C", "(n,gamma)"] = 4.0 mat = dep.form_matrix(react[0, :, :]) # Loss A, decay, (n, gamma) mat00 = -np.log(2) / 2.36520E+04 - 2 # A -> B, decay, 0.6 branching ratio mat10 = np.log(2) / 2.36520E+04 * 0.6 # A -> C, decay, 0.4 branching ratio + (n,gamma) mat20 = np.log(2) / 2.36520E+04 * 0.4 + 2 # B -> A, decay, 1.0 branching ratio mat01 = np.log(2) / 3.29040E+04 # Loss B, decay, (n, gamma) mat11 = -np.log(2) / 3.29040E+04 - 3 # B -> C, (n, gamma) mat21 = 3 # C -> A fission, (n, gamma) mat02 = 0.0292737 * 1.0 + 4.0 * 0.7 # C -> B fission, (n, gamma) mat12 = 0.002566345 * 1.0 + 4.0 * 0.3 # Loss C, fission, (n, gamma) mat22 = -1.0 - 4.0 self.assertEqual(mat[0, 0], mat00) self.assertEqual(mat[1, 0], mat10) self.assertEqual(mat[2, 0], mat20) self.assertEqual(mat[0, 1], mat01) self.assertEqual(mat[1, 1], mat11) self.assertEqual(mat[2, 1], mat21) self.assertEqual(mat[0, 2], mat02) self.assertEqual(mat[1, 2], mat12) self.assertEqual(mat[2, 2], mat22)
def test_indexing(self): """Tests the __getitem__ and __setitem__ routines simultaneously.""" mat_to_ind = {"10000": 0, "10001": 1} nuc_to_ind = {"U238": 0, "U235": 1} react_to_ind = {"fission": 0, "(n,gamma)": 1} rates = reaction_rates.ReactionRates(mat_to_ind, nuc_to_ind, react_to_ind) rates["10000", "U238", "fission"] = 1.0 rates["10001", "U238", "fission"] = 2.0 rates["10000", "U235", "fission"] = 3.0 rates["10001", "U235", "fission"] = 4.0 rates["10000", "U238", "(n,gamma)"] = 5.0 rates["10001", "U238", "(n,gamma)"] = 6.0 rates["10000", "U235", "(n,gamma)"] = 7.0 rates["10001", "U235", "(n,gamma)"] = 8.0 # String indexing self.assertEqual(rates["10000", "U238", "fission"], 1.0) self.assertEqual(rates["10001", "U238", "fission"], 2.0) self.assertEqual(rates["10000", "U235", "fission"], 3.0) self.assertEqual(rates["10001", "U235", "fission"], 4.0) self.assertEqual(rates["10000", "U238", "(n,gamma)"], 5.0) self.assertEqual(rates["10001", "U238", "(n,gamma)"], 6.0) self.assertEqual(rates["10000", "U235", "(n,gamma)"], 7.0) self.assertEqual(rates["10001", "U235", "(n,gamma)"], 8.0) # Int indexing self.assertEqual(rates[0, 0, 0], 1.0) self.assertEqual(rates[1, 0, 0], 2.0) self.assertEqual(rates[0, 1, 0], 3.0) self.assertEqual(rates[1, 1, 0], 4.0) self.assertEqual(rates[0, 0, 1], 5.0) self.assertEqual(rates[1, 0, 1], 6.0) self.assertEqual(rates[0, 1, 1], 7.0) self.assertEqual(rates[1, 1, 1], 8.0) rates[0, 0, 0] = 5.0 self.assertEqual(rates[0, 0, 0], 5.0) self.assertEqual(rates["10000", "U238", "fission"], 5.0)