Decay Pathway Library#
The complete API can be found at f4enix.output.decay_pathways.PathwayLibrary
At Fusion For Energy, a number of activation studies was conducted using FISPACT in order to individuate which are the decay pathways that contribute to either 95% or 99% of the contact dose. These studies were run for different irradiation scenarios, spectra, materials and cooling times. A database of the results has been built and can be interrogated with simplified F4Enix methods to get lists of important pathways depending on the specific applications.
Available materials, spectra, and cooling times#
First of all let’s explore the available materials, spectra and cooling times for which data is available. These are constants that can be imported and printed using F4Enix
Materials are implemented as MaterialComposition objects. All the available ones can be found at f4enix.core.material_library
from f4enix.core.material_library import TITANIUM5
print(TITANIUM5.name) # extended name of the material
print(TITANIUM5.elem) # elemental composition (% in mass)
print(TITANIUM5.perc) # percentage of each element
/home/docs/checkouts/readthedocs.org/user_builds/f4enix/envs/stable/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
from .autonotebook import tqdm as notebook_tqdm
Titanium Alloy, Grade 5
['H', 'C', 'N', 'O', 'Al', 'Ti', 'V', 'Fe']
[0.011000000000000001, 0.056999999999999995, 0.021, 0.14100000000000001, 61.25000000000001, 89.363, 4.0, 0.28300000000000003]
from f4enix.core.material_library import AVAILABLE_MATERIALS
list(AVAILABLE_MATERIALS) # list of available materials
[MaterialComposition(Pure Silver),
MaterialComposition(W with impurities),
MaterialComposition(Pure Lead),
MaterialComposition(Al-6061),
MaterialComposition(Al-Brz),
MaterialComposition(Borated Heavy Concrete),
MaterialComposition(Concrete),
MaterialComposition(CuCrZr),
MaterialComposition(Eurofer-97),
MaterialComposition(Inconel-718),
MaterialComposition(Nb3Sn),
MaterialComposition(NbTi),
MaterialComposition(SS660),
MaterialComposition(SS316L(N)-IG),
MaterialComposition(Microtherm),
MaterialComposition(Titanium Alloy, Grade 5),
MaterialComposition(Beryllium)]
Available cooling times, spectra and irradiation scenarios can be found instead at f4enix.output.decay_pathways
from f4enix.output.decay_pathways import AVAILABLE_COOLING_TIMES
print(AVAILABLE_COOLING_TIMES) # list of available cooling times
['24 h', '11.6 d', '30 d', '180 d', '230 d', '1 y', '10 y']
from f4enix.output.decay_pathways import AVAIL_SPECTRUM
list(AVAIL_SPECTRUM) # list of available spectra
[<AVAIL_SPECTRUM.FirstWall500MW: '500MW_First_Wall'>,
<AVAIL_SPECTRUM.PortCell500MW: '500MW_Port_Cell'>,
<AVAIL_SPECTRUM.PortInterspace500MW: '500MW_Port_Interspace'>,
<AVAIL_SPECTRUM.N17PortCell: 'N17_Port_Cell'>,
<AVAIL_SPECTRUM.SRO_FW_Layer1: 'SRO_FW_Layer1'>,
<AVAIL_SPECTRUM.SRO_FW_SB: 'SRO_FW_SB'>,
<AVAIL_SPECTRUM.SRO_NBI_BetweenDucts: 'SRO_NBI_Between_Ducts'>,
<AVAIL_SPECTRUM.SRO_NBI_Room: 'SRO_NBI_Room'>,
<AVAIL_SPECTRUM.SRO_Port_Interspace: 'SRO_Port_Interspace'>,
<AVAIL_SPECTRUM.SRO_Runaway_Electrons: 'SRO_runaway_electrons'>]
from f4enix.output.decay_pathways import AVAIL_IRR_SCENARIO
list(AVAIL_IRR_SCENARIO) # list of available irradiation scenarios
[<AVAIL_IRR_SCENARIO.DT1: 'DT1'>,
<AVAIL_IRR_SCENARIO.DT2: 'DT2'>,
<AVAIL_IRR_SCENARIO.SRO: 'SRO'>,
<AVAIL_IRR_SCENARIO.SA2: 'SA2'>]
Filtering decay pathways#
The data regarding all decay pathways is stored in the PathwayLibrary object. The raw data is contained in the library attribute (a pandas dataframe) that can be custom filtered by the user.
from f4enix.output.decay_pathways import PathwayLibrary
plib = PathwayLibrary()
plib.library.sample(n=5)
| isotope % dose | pathway % dose | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Dose threshold | Scenario | Spectrum | element | isotope | pathway | Material | cooling time | ||
| 95 | DT1 | N17_Port_Cell | Cs | 134 | Cs133 -(n,g)-> Cs134m -(IT)-> Cs134 | Concrete | 1 y | 13.250819 | 0.090106 |
| 500MW_First_Wall | Ta | 182 | Ta181 -(n,g)-> Ta182m -(IT)-> Ta182 | W with impurities | 180 d | 71.298519 | 4.352775 | ||
| 99 | SRO | SRO_FW_SB | Ag | 108m | Ag109 -(n,2n)-> Ag108m | Pure Silver | 10 y | 66.693692 | 2.318273 |
| SA2 | 500MW_Port_Interspace | Cs | 134 | Cs133 -(n,g)-> Cs134m -(IT)-> Cs134 | Concrete | 30 d | 12.593016 | 0.087396 | |
| 95 | DT2 | 500MW_Port_Interspace | In | 113m | Sn112 -(n,g)-> Sn113m -(IT)-> Sn113 -(b+)-> In113m | Nb3Sn | 180 d | 17.991451 | 6.782057 |
Some useful methods to filter the global dataframes are shipped directly in F4Enix. The first one is a simple filter of the dataframe. Irradiation scenarios and spectra are defined as Enum.
from f4enix.core.material_library import CONCRETE, SS316LNIG
# get a subset of the global dataframe. If no subsets are
# specified in the arguments, all available ones are returned.
df = plib.filter_pathways(
materials=[CONCRETE, SS316LNIG],
cooling_times=['24 h', '11.6 d'],
irradiation_scenario=[AVAIL_IRR_SCENARIO.DT2],
spectrum=[AVAIL_SPECTRUM.FirstWall500MW],
dose=95)
df.sample(n=5)
# df.to_csv('pathways.csv') # to save it to an excel file
| isotope % dose | pathway % dose | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Dose threshold | Scenario | Spectrum | element | isotope | pathway | Material | cooling time | ||
| 95 | DT2 | 500MW_First_Wall | Ta | 182 | Ta181 -(n,g)-> Ta182m -(IT)-> Ta182 | Concrete | 11.6 d | 2.538098 | 0.931330 |
| Cs | 134 | Cs133 -(n,g)-> Cs134 | Concrete | 11.6 d | 2.472278 | 2.452945 | |||
| Sc | 46 | Ca44 -(n,g)-> Ca45 -(b-)-> Sc45 -(n,g)-> Sc46 | Concrete | 11.6 d | 7.661654 | 0.082056 | |||
| Na | 24 | Mg24 -(n,p)-> Na24 | Concrete | 24 h | 90.735662 | 27.580012 | |||
| Sc | 46 | Sc45 -(n,g)-> Sc46 | Concrete | 11.6 d | 7.661654 | 0.817498 |
The second one allows to get a unique list of decay pathways that are important for the requested scenario. Here the value of the rows will correspond to the combination of material, irradiation scenario and spectrum for which the highest pathway dose contribution was encountered.
df = plib.get_pathways(
materials=[CONCRETE, SS316LNIG],
cooling_times=['24 h', '11.6 d'],
spectrum=[AVAIL_SPECTRUM.FirstWall500MW],
irradiation_scenario=[AVAIL_IRR_SCENARIO.DT2],
dose=95)
df.head()
| cooling time | isotope % dose | pathway % dose | |||
|---|---|---|---|---|---|
| element | isotope | pathway | |||
| Na | 22 | Na23 -(n,2n)-> Na22 | 11.6 d | 13.581475 | 13.576042 |
| 24 | Al27 -(n,a)-> Na24 | 24 h | 90.735662 | 58.904684 | |
| Mg24 -(n,p)-> Na24 | 24 h | 90.735662 | 27.580012 | ||
| Na23 -(n,g)-> Na24 | 24 h | 90.735662 | 4.069494 | ||
| Ar | 37 | Ca40 -(n,a)-> Ar37 | 11.6 d | 0.810715 | 0.808599 |