コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)