Very low value for amount of H3 atoms transmuted

Hi all. I’m trying to find the activation of a blanket configuration. But first I’m just trying to run a depletion/transmutation simulation to find the number of H3 atoms bred in the blanket over 2 hours.

I’m running the code in the fusion workshop docker container since I had trouble using Jupyter notebook on my laptop.

I’ve adapted John Shimwell’s code from task 14, which irradiates a sphere of silver, replacing the point source with a cylindrical source and the silver with my blanket configuration. Trouble is, the code tells me I’m only getting 1e-18 atoms after 2 hrs. The blanket should have a TBR of ~2 so I’d expect in the order of 1e15 atoms.

I can’t seem to work out why I’m getting such a low value. Any pointers would be very much appreciated. I’ve attached my script. Thanks :slight_smile:

Untitled.py (9.5 KB)

To simplify things, I just did a straight swap of the silver for the breeder material. I’m still getting ridiculously low results:

1_example_transmutation_isotope_build_up.py (6.2 KB)

I’m not really familiar enough with the example or model to have an intuition here, but one thing to check would be the units on the values you’re using. In particular, are your timesteps really supposed to be 24 seconds? (the default unit for time is seconds). If you want to change the timestep units, you can do so with the timestep_units argument to PredictorIntegrator or any other integrator class.

Sorry I should have replied to this sooner.

I chose 24 seconds for the time step in that depletion example because that is the half life of Ag110 which is one of the main products in that example. But I see you have changed this to 600 seconds in your first example.

I’ve rerun you Untitled.py and also get low number of tritium atoms. I’ve also tried the script with newer chain file os.system('download_nndc_chain -r b8.0')

Not sure what is going on here but it reminds me of this PR that Paul put in a while ago which improved the traacking of light particles

However if you want to know the number of tritium atoms produced you can do this without the deplete methods. You might be better of building on the TBR example. This finds the tritium atoms produced per source neutron so you would just scale the TBR answer by the number of neutrons emitted per second (e.g. 1e24n/s) to find the total number of atoms produced.

Ah yes, now I remembered an issue that is relevant here. The default depletion chains do not include (n,t) reactions, which will obviously miss tritium production. If you wanted to include production of tritium from Li6, you could make the following change in your chain file:

diff --git a/depletion/chain_endfb71_pwr.xml b/depletion/chain_endfb71_pwr.xml
index 9dbbdb9..5844f3a 100644
--- a/depletion/chain_endfb71_pwr.xml
+++ b/depletion/chain_endfb71_pwr.xml
@@ -67,6 +67,7 @@
   <nuclide name="Li6" reactions="2">
     <reaction type="(n,gamma)" Q="7250600.0" target="Li7"/>
     <reaction type="(n,p)" Q="-2727300.0" target="He6"/>
+    <reaction type="(n,t)" Q="4783800.0" target="He4" />
   </nuclide>
   <nuclide name="Li7" reactions="2">
     <reaction type="(n,2n)" Q="-7250500.0" target="Li6"/>

At some point, I’ll look into getting a better fix for how we handle this in our depletion chains.

Thanks guys, that helps. The reason I’m trying to find the number of atoms via depletion rather than just a TBR tally is that eventually I’m going to build up to finding all the radionuclides produced in the blanket after irradiation. This will be in order to find the activation so as to inform safety protocols of my design.

Also, @paulromano could I ask why the chain files are missing this data, and if they’ll be missing others which might affect my results? I’ve also noticed nuclides missing in cross section files. Is this an openmc specific problem, or something typical of neutronics codes? I’m still fairly new to MC simulations.

update: adding the (n,t) reaction to my depletion chain file fixed it! getting some reasonable values. You guys are heroes :slight_smile:

1 Like

Our depletion system really came about from fission applications, and in those applications typically people don’t care about (n,t) reactions, so they were not included by default. It’s hard to say what else might be missing as it depends on the application, what materials you have present, etc…

This is really a fundamental limitation in the nuclear data libraries themselves, so all neutronics codes would be subject to the same limitations (e.g., if you are using ENDF/B-VII.1, there is no evaluation for C13).

@srichr221 TENDL nuclear data library has quite a lot of nuclides if that helps.

1 Like

Just mention anyone producing their chain files can specify the reactions to include by making use of the reactions argument.

The Chain.from_endf file has a few reactions as the default (‘(n,2n)’, ‘(n,3n)’, ‘(n,4n)’, ‘(n,gamma)’, ‘(n,p)’, ‘(n,a)’)

However you can pass in more reactions to have them included in the chain file. This is what I do when producing chain files

chain = openmc.deplete.Chain.from_endf(
        decay_files=decay_files,
        fpy_files=fpy_files,
        neutron_files=neutron_files,
       reactions=list(openmc.deplete.chain.REACTIONS.keys())
    )
1 Like