Files
OpenMC_NEA_Training_nov25/course/student_notebooks/mcnp-conversion/mcnp-conversion.ipynb
Stafie Alex PSI 850de66b07 first files
2025-12-02 11:57:33 +01:00

1045 lines
102 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "5ae059fb-528e-4689-8d0f-cd98f5a69ba6",
"metadata": {},
"source": [
"# Converting MCNP Models into OpenMC Models\n",
"\n",
"MCNP is an established Monte Carlo transport code used in many organizations.\n",
"MCNP models can be converted into OpenMC models using the `openmc_mcnp_adapter`, freely available on GitHub: https://github.com/openmc-dev/openmc_mcnp_adapter. \n",
"\n",
"In this tutorial, we will use this adapter to load in an existing MCNP model of a High Purity Germanium (HPGe) detector to perform a photon transport simulation. This MCNP model was originally developed by Z. Liu and A. Di Fulvio from the University of Illinois, Urbana-Champaign. Full details on the model can be found here: https://www.sciencedirect.com/science/article/pii/S0168900224005436?via%3Dihub"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a419a9a3-82aa-44fe-9d53-73d1c4b9e1b6",
"metadata": {},
"outputs": [],
"source": [
"import openmc\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"id": "e884b186-9ff6-4325-9660-dee594ab041f",
"metadata": {},
"source": [
"First, we need to have the `openmc_mcnp_adapter` installed (follow directions here: https://github.com/openmc-dev/openmc_mcnp_adapter). Then, we need to have an MCNP model; this is contained in the `mcnp.i` file, which we can view."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "391bac57-2a21-4448-a2ad-a9fe6cfb13fe",
"metadata": {},
"outputs": [],
"source": [
"b"
]
},
{
"cell_type": "markdown",
"id": "5b5e16ca-7bd1-47e5-a7f2-71ca120c8ea7",
"metadata": {},
"source": [
"There are some other tools: MCNPy, MonthyPy\n",
"When we run the converter, we will create a file named `mcnp.xml`. We can then load this from XML to access the model data structures from Python. This will create an OpenMC model.\n",
"\n",
"```\n",
"mcnp_to_openmc mcnp.i -o mcnp.xml\n",
"```\n",
"\n",
"There are some important limitations of the MCNP model converter. At present, this converter does *not* convert:\n",
"\n",
"- Source definitions\n",
"- Tallies\n",
"- Graveyard boundary conditions\n",
"- Certain geometry structures (such as hexagonal lattices and certain macrobodies)\n",
"\n",
"Therefore, we will import this model and make some modifications to re-add source definitions, tallies, and enclose that MCNP model inside a vacuum boundary surface (if a graveyard was used).\n",
"For a full list of unsupported features, see: https://github.com/openmc-dev/openmc_mcnp_adapter"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "d8a2959f-2710-489b-8399-257353f11eac",
"metadata": {},
"outputs": [],
"source": [
"# add tallies and source\n",
"openmc.Model.from_model_xml('mcnp.xml')\n",
"mcnp_model = openmc.Model.from_model_xml(\"mcnp.xml\")"
]
},
{
"cell_type": "markdown",
"id": "52c25479-713b-4c9a-a9d9-4aba55ba07bc",
"metadata": {},
"source": [
"For example, we can inspect the materials in the MCNP model."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "77414e1d-4834-4308-9213-f56136555d2c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Material\n",
"\tID =\t7\n",
"\tName =\t\n",
"\tTemperature =\tNone\n",
"\tDensity =\t8.0 [g/cm3]\n",
"\tVolume =\tNone [cm^3]\n",
"\tDepletable =\tFalse\n",
"\tS(a,b) Tables \n",
"\tNuclides \n",
"\tC0 =\t0.0004 [wo]\n",
"\tSi28 =\t0.005 [wo]\n",
"\tP31 =\t0.00023 [wo]\n",
"\tS32 =\t0.00015 [wo]\n",
"\tCr52 =\t0.19 [wo]\n",
"\tMn55 =\t0.01 [wo]\n",
"\tFe56 =\t0.70173 [wo]\n",
"\tNi58 =\t0.0925 [wo]\n",
", Material\n",
"\tID =\t10\n",
"\tName =\t\n",
"\tTemperature =\tNone\n",
"\tDensity =\t5.323 [g/cm3]\n",
"\tVolume =\tNone [cm^3]\n",
"\tDepletable =\tFalse\n",
"\tS(a,b) Tables \n",
"\tNuclides \n",
"\tGe70 =\t0.2051 [ao]\n",
"\tGe72 =\t0.2745 [ao]\n",
"\tGe73 =\t0.0776 [ao]\n",
"\tGe74 =\t0.367 [ao]\n",
"\tGe76 =\t0.0757 [ao]\n",
", Material\n",
"\tID =\t11\n",
"\tName =\t\n",
"\tTemperature =\tNone\n",
"\tDensity =\t1.38 [g/cm3]\n",
"\tVolume =\tNone [cm^3]\n",
"\tDepletable =\tFalse\n",
"\tS(a,b) Tables \n",
"\tNuclides \n",
"\tH1 =\t0.04196 [wo]\n",
"\tC0 =\t0.625016 [wo]\n",
"\tO16 =\t0.333024 [wo]\n",
", Material\n",
"\tID =\t12\n",
"\tName =\t\n",
"\tTemperature =\tNone\n",
"\tDensity =\t2.6989 [g/cm3]\n",
"\tVolume =\tNone [cm^3]\n",
"\tDepletable =\tFalse\n",
"\tS(a,b) Tables \n",
"\tNuclides \n",
"\tMg24 =\t0.009 [wo]\n",
"\tSi28 =\t0.007 [wo]\n",
"\tFe56 =\t0.006 [wo]\n",
"\tCu63 =\t0.003 [wo]\n",
"\tCr52 =\t0.0025 [wo]\n",
"\tZn64 =\t0.002 [wo]\n",
"\tTi48 =\t0.001 [wo]\n",
"\tMn55 =\t0.0005 [wo]\n",
"\tAl27 =\t0.969 [wo]\n",
", Material\n",
"\tID =\t13\n",
"\tName =\t\n",
"\tTemperature =\tNone\n",
"\tDensity =\t8.07 [g/cm3]\n",
"\tVolume =\tNone [cm^3]\n",
"\tDepletable =\tFalse\n",
"\tS(a,b) Tables \n",
"\tNuclides \n",
"\tFe56 =\t0.000868 [wo]\n",
"\tCu63 =\t0.665381 [wo]\n",
"\tZn64 =\t0.325697 [wo]\n",
"\tSn120 =\t0.002672 [wo]\n",
"\tPb208 =\t0.005382 [wo]\n",
", Material\n",
"\tID =\t14\n",
"\tName =\t\n",
"\tTemperature =\tNone\n",
"\tDensity =\t2.35 [g/cm3]\n",
"\tVolume =\tNone [cm^3]\n",
"\tDepletable =\tFalse\n",
"\tS(a,b) Tables \n",
"\tNuclides \n",
"\tH1 =\t0.008483 [wo]\n",
"\tH2 =\t2e-06 [wo]\n",
"\tC0 =\t0.050064 [wo]\n",
"\tO16 =\t0.4722 [wo]\n",
"\tO17 =\t0.000191 [wo]\n",
"\tMg24 =\t0.0188408886521763 [wo]\n",
"\tMg25 =\t0.0024909493306234363 [wo]\n",
"\tMg26 =\t0.0028511620172002633 [wo]\n",
"\tAl27 =\t0.036063 [wo]\n",
"\tSi28 =\t0.13330847357739614 [wo]\n",
"\tSi29 =\t0.00701086967483306 [wo]\n",
"\tSi30 =\t0.004780656747770798 [wo]\n",
"\tS32 =\t0.002814627741005793 [wo]\n",
"\tS33 =\t2.2865493551294847e-05 [wo]\n",
"\tS34 =\t0.00013202102630601787 [wo]\n",
"\tS36 =\t4.857391368943849e-07 [wo]\n",
"\tK39 =\t0.0015771419508661794 [wo]\n",
"\tK40 =\t2.029451839923608e-07 [wo]\n",
"\tK41 =\t0.00011965510394982793 [wo]\n",
"\tCa40 =\t0.2386811660679979 [wo]\n",
"\tCa42 =\t0.0016725629514960224 [wo]\n",
"\tCa43 =\t0.000357307875697765 [wo]\n",
"\tCa44 =\t0.005649166365242286 [wo]\n",
"\tCa46 =\t1.1324978311100535e-05 [wo]\n",
"\tCa48 =\t0.0005524717612549511 [wo]\n",
"\tFe54 =\t0.0006227615275467931 [wo]\n",
"\tFe56 =\t0.010137657639673534 [wo]\n",
"\tFe57 =\t0.00023831026177444914 [wo]\n",
"\tFe58 =\t3.2270571005223845e-05 [wo]\n",
"]\n"
]
}
],
"source": [
"mcnp_materials = mcnp_model.materials\n",
"print(mcnp_materials)"
]
},
{
"cell_type": "markdown",
"id": "a3572a92-5efb-43f7-8414-a5fa10d577bd",
"metadata": {},
"source": [
"This HPGe consists of material cells, surrounded by a vacuum."
]
},
{
"cell_type": "markdown",
"id": "468fe39b-5d5a-4190-80f0-fd636292c66d",
"metadata": {},
"source": [
"We can get the root universe of the MCNP model, in case we want to place that geometry inside something more extensive in our OpenMC model. Let's place the MCNP universe inside a sphere with a vacuum boundary on its exterior and then create a new model whose geometry is the MCNP model inside the sphere."
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "36d3f732-941f-441e-8817-bbad04be6708",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='x [cm]', ylabel='z [cm]'>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 303.226x550.649 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mcnp_model.plot(width=(50, 90), pixels=100000, basis='xz', origin = (0, 0, 140), color_by='material')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "b1870cb9-50ee-4aa1-90a6-3dab433dbc1a",
"metadata": {},
"outputs": [],
"source": [
"mcnp_univ = mcnp_model.geometry.root_universe\n",
"sphere = openmc.Sphere(r=50, x0=0.0, y0=0.0, z0=140, boundary_type='vacuum')\n",
"sphere_cell = openmc.Cell(region=-sphere, fill=mcnp_univ)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "ddad2d02-6a8a-4e89-b9dd-55c47a38c051",
"metadata": {},
"outputs": [],
"source": [
"# made a boundary conditon\n",
"model = openmc.Model()\n",
"u = openmc.Universe(cells=[sphere_cell])\n",
"sphere_cell = openmc.Cell(region=-sphere, fill=mcnp_univ)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "00849121-f3ef-46a0-9a7a-5e971b906449",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='x [cm]', ylabel='z [cm]'>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 407.742x410.39 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model = openmc.Model()\n",
"u = openmc.Universe(cells=[sphere_cell])\n",
"model.geometry = openmc.Geometry(u)\n",
"\n",
"model.plot(width=(150, 150), pixels=100000, basis='xz', origin = (0, 0, 140), color_by='cell')"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "e73fc058-d341-48b5-ba07-8c7385f7925e",
"metadata": {},
"outputs": [],
"source": [
"model.settings = openmc.Settings()\n",
"model.settings.particles = 5000\n",
"model.settings.batches = 100\n",
"model.settings.run_mode = 'fixed source'"
]
},
{
"cell_type": "markdown",
"id": "cd34cbc9-2400-47a1-922f-b12320aec628",
"metadata": {},
"source": [
"The source definition does not get converted from the MCNP model; let's add a point source of 661.7 keV photons, located at (0, 0, 100)."
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "e9122ca0-7833-4b74-88d4-6322aac6d76e",
"metadata": {},
"outputs": [],
"source": [
"source = openmc.IndependentSource(\n",
" energy=openmc.stats.Discrete([661.7e3], [1]),\n",
" space=openmc.stats.Point((0, 0, 100.0)),\n",
" angle=openmc.stats.Isotropic(),\n",
" particle=\"photon\"\n",
")\n",
"model.settings.source = source\n",
"model.settings.photon_transport = True\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "b3c4ff94-3ecd-4732-9a0a-34b8cffaeaa9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" %%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%\n",
" ############### %%%%%%%%%%%%%%%%%%%%%%%%\n",
" ################## %%%%%%%%%%%%%%%%%%%%%%%\n",
" ################### %%%%%%%%%%%%%%%%%%%%%%%\n",
" #################### %%%%%%%%%%%%%%%%%%%%%%\n",
" ##################### %%%%%%%%%%%%%%%%%%%%%\n",
" ###################### %%%%%%%%%%%%%%%%%%%%\n",
" ####################### %%%%%%%%%%%%%%%%%%\n",
" ####################### %%%%%%%%%%%%%%%%%\n",
" ###################### %%%%%%%%%%%%%%%%%\n",
" #################### %%%%%%%%%%%%%%%%%\n",
" ################# %%%%%%%%%%%%%%%%%\n",
" ############### %%%%%%%%%%%%%%%%\n",
" ############ %%%%%%%%%%%%%%%\n",
" ######## %%%%%%%%%%%%%%\n",
" %%%%%%%%%%%\n",
"\n",
" | The OpenMC Monte Carlo Code\n",
" Copyright | 2011-2025 MIT, UChicago Argonne LLC, and contributors\n",
" License | https://docs.openmc.org/en/latest/license.html\n",
" Version | 0.15.3\n",
" Commit Hash | 27e38e894697bb32a1dac7848d2618818b6b8daf\n",
" Date/Time | 2025-11-27 12:39:17\n",
" OpenMP Threads | 2\n",
"\n",
" Reading model XML file 'model.xml' ...\n",
" Reading chain file: /home/ubuntu/data/depletion_chains/chain_endfb71_pwr.xml...\n",
" Reading cross sections XML file...\n",
" Reading C0 from /home/ubuntu/data/endfb71_hdf5/C0.h5\n",
" Reading C from /home/ubuntu/data/endfb71_hdf5/photon/C.h5 \n",
" Reading Si28 from /home/ubuntu/data/endfb71_hdf5/Si28.h5\n",
" Reading Si from /home/ubuntu/data/endfb71_hdf5/photon/Si.h5 \n",
" Reading P31 from /home/ubuntu/data/endfb71_hdf5/P31.h5\n",
" Reading P from /home/ubuntu/data/endfb71_hdf5/photon/P.h5 \n",
" Reading S32 from /home/ubuntu/data/endfb71_hdf5/S32.h5\n",
" Reading S from /home/ubuntu/data/endfb71_hdf5/photon/S.h5 \n",
" Reading Cr52 from /home/ubuntu/data/endfb71_hdf5/Cr52.h5\n",
" Reading Cr from /home/ubuntu/data/endfb71_hdf5/photon/Cr.h5 \n",
" Reading Mn55 from /home/ubuntu/data/endfb71_hdf5/Mn55.h5\n",
" Reading Mn from /home/ubuntu/data/endfb71_hdf5/photon/Mn.h5 \n",
" Reading Fe56 from /home/ubuntu/data/endfb71_hdf5/Fe56.h5\n",
" Reading Fe from /home/ubuntu/data/endfb71_hdf5/photon/Fe.h5 \n",
" Reading Ni58 from /home/ubuntu/data/endfb71_hdf5/Ni58.h5\n",
" Reading Ni from /home/ubuntu/data/endfb71_hdf5/photon/Ni.h5 \n",
" Reading Ge70 from /home/ubuntu/data/endfb71_hdf5/Ge70.h5\n",
" Reading Ge from /home/ubuntu/data/endfb71_hdf5/photon/Ge.h5 \n",
" Reading Ge72 from /home/ubuntu/data/endfb71_hdf5/Ge72.h5\n",
" Reading Ge73 from /home/ubuntu/data/endfb71_hdf5/Ge73.h5\n",
" Reading Ge74 from /home/ubuntu/data/endfb71_hdf5/Ge74.h5\n",
" Reading Ge76 from /home/ubuntu/data/endfb71_hdf5/Ge76.h5\n",
" Reading H1 from /home/ubuntu/data/endfb71_hdf5/H1.h5\n",
" Reading H from /home/ubuntu/data/endfb71_hdf5/photon/H.h5 \n",
" Reading O16 from /home/ubuntu/data/endfb71_hdf5/O16.h5\n",
" Reading O from /home/ubuntu/data/endfb71_hdf5/photon/O.h5 \n",
" Reading Mg24 from /home/ubuntu/data/endfb71_hdf5/Mg24.h5\n",
" Reading Mg from /home/ubuntu/data/endfb71_hdf5/photon/Mg.h5 \n",
" Reading Cu63 from /home/ubuntu/data/endfb71_hdf5/Cu63.h5\n",
" Reading Cu from /home/ubuntu/data/endfb71_hdf5/photon/Cu.h5 \n",
" Reading Zn64 from /home/ubuntu/data/endfb71_hdf5/Zn64.h5\n",
" Reading Zn from /home/ubuntu/data/endfb71_hdf5/photon/Zn.h5 \n",
" Reading Ti48 from /home/ubuntu/data/endfb71_hdf5/Ti48.h5\n",
" Reading Ti from /home/ubuntu/data/endfb71_hdf5/photon/Ti.h5 \n",
" Reading Al27 from /home/ubuntu/data/endfb71_hdf5/Al27.h5\n",
" Reading Al from /home/ubuntu/data/endfb71_hdf5/photon/Al.h5 \n",
" Reading Sn120 from /home/ubuntu/data/endfb71_hdf5/Sn120.h5\n",
" Reading Sn from /home/ubuntu/data/endfb71_hdf5/photon/Sn.h5 \n",
" Reading Pb208 from /home/ubuntu/data/endfb71_hdf5/Pb208.h5\n",
" Reading Pb from /home/ubuntu/data/endfb71_hdf5/photon/Pb.h5 \n",
" Reading H2 from /home/ubuntu/data/endfb71_hdf5/H2.h5\n",
" Reading O17 from /home/ubuntu/data/endfb71_hdf5/O17.h5\n",
" Reading Mg25 from /home/ubuntu/data/endfb71_hdf5/Mg25.h5\n",
" Reading Mg26 from /home/ubuntu/data/endfb71_hdf5/Mg26.h5\n",
" Reading Si29 from /home/ubuntu/data/endfb71_hdf5/Si29.h5\n",
" Reading Si30 from /home/ubuntu/data/endfb71_hdf5/Si30.h5\n",
" Reading S33 from /home/ubuntu/data/endfb71_hdf5/S33.h5\n",
" Reading S34 from /home/ubuntu/data/endfb71_hdf5/S34.h5\n",
" Reading S36 from /home/ubuntu/data/endfb71_hdf5/S36.h5\n",
" Reading K39 from /home/ubuntu/data/endfb71_hdf5/K39.h5\n",
" Reading K from /home/ubuntu/data/endfb71_hdf5/photon/K.h5 \n",
" Reading K40 from /home/ubuntu/data/endfb71_hdf5/K40.h5\n",
" Reading K41 from /home/ubuntu/data/endfb71_hdf5/K41.h5\n",
" Reading Ca40 from /home/ubuntu/data/endfb71_hdf5/Ca40.h5\n",
" Reading Ca from /home/ubuntu/data/endfb71_hdf5/photon/Ca.h5 \n",
" Reading Ca42 from /home/ubuntu/data/endfb71_hdf5/Ca42.h5\n",
" Reading Ca43 from /home/ubuntu/data/endfb71_hdf5/Ca43.h5\n",
" Reading Ca44 from /home/ubuntu/data/endfb71_hdf5/Ca44.h5\n",
" Reading Ca46 from /home/ubuntu/data/endfb71_hdf5/Ca46.h5\n",
" Reading Ca48 from /home/ubuntu/data/endfb71_hdf5/Ca48.h5\n",
" Reading Fe54 from /home/ubuntu/data/endfb71_hdf5/Fe54.h5\n",
" Reading Fe57 from /home/ubuntu/data/endfb71_hdf5/Fe57.h5\n",
" Reading Fe58 from /home/ubuntu/data/endfb71_hdf5/Fe58.h5\n",
" Minimum neutron data temperature: 294 K\n",
" Maximum neutron data temperature: 294 K\n",
" Preparing distributed cell instances...\n",
" Writing summary.h5 file...\n",
" Maximum neutron transport energy: 20000000 eV for S32\n",
"\n",
" ===============> FIXED SOURCE TRANSPORT SIMULATION <===============\n",
"\n",
" Simulating batch 1\n",
" Simulating batch 2\n",
" Simulating batch 3\n",
" Simulating batch 4\n",
" Simulating batch 5\n",
" Simulating batch 6\n",
" Simulating batch 7\n",
" Simulating batch 8\n",
" Simulating batch 9\n",
" Simulating batch 10\n",
" Simulating batch 11\n",
" Simulating batch 12\n",
" Simulating batch 13\n",
" Simulating batch 14\n",
" Simulating batch 15\n",
" Simulating batch 16\n",
" Simulating batch 17\n",
" Simulating batch 18\n",
" Simulating batch 19\n",
" Simulating batch 20\n",
" Simulating batch 21\n",
" Simulating batch 22\n",
" Simulating batch 23\n",
" Simulating batch 24\n",
" Simulating batch 25\n",
" Simulating batch 26\n",
" Simulating batch 27\n",
" Simulating batch 28\n",
" Simulating batch 29\n",
" Simulating batch 30\n",
" Simulating batch 31\n",
" Simulating batch 32\n",
" Simulating batch 33\n",
" Simulating batch 34\n",
" Simulating batch 35\n",
" Simulating batch 36\n",
" Simulating batch 37\n",
" Simulating batch 38\n",
" Simulating batch 39\n",
" Simulating batch 40\n",
" Simulating batch 41\n",
" Simulating batch 42\n",
" Simulating batch 43\n",
" Simulating batch 44\n",
" Simulating batch 45\n",
" Simulating batch 46\n",
" Simulating batch 47\n",
" Simulating batch 48\n",
" Simulating batch 49\n",
" Simulating batch 50\n",
" Simulating batch 51\n",
" Simulating batch 52\n",
" Simulating batch 53\n",
" Simulating batch 54\n",
" Simulating batch 55\n",
" Simulating batch 56\n",
" Simulating batch 57\n",
" Simulating batch 58\n",
" Simulating batch 59\n",
" Simulating batch 60\n",
" Simulating batch 61\n",
" Simulating batch 62\n",
" Simulating batch 63\n",
" Simulating batch 64\n",
" Simulating batch 65\n",
" Simulating batch 66\n",
" Simulating batch 67\n",
" Simulating batch 68\n",
" Simulating batch 69\n",
" Simulating batch 70\n",
" Simulating batch 71\n",
" Simulating batch 72\n",
" Simulating batch 73\n",
" Simulating batch 74\n",
" Simulating batch 75\n",
" Simulating batch 76\n",
" Simulating batch 77\n",
" Simulating batch 78\n",
" Simulating batch 79\n",
" Simulating batch 80\n",
" Simulating batch 81\n",
" Simulating batch 82\n",
" Simulating batch 83\n",
" Simulating batch 84\n",
" Simulating batch 85\n",
" Simulating batch 86\n",
" Simulating batch 87\n",
" Simulating batch 88\n",
" Simulating batch 89\n",
" Simulating batch 90\n",
" Simulating batch 91\n",
" Simulating batch 92\n",
" Simulating batch 93\n",
" Simulating batch 94\n",
" Simulating batch 95\n",
" Simulating batch 96\n",
" Simulating batch 97\n",
" Simulating batch 98\n",
" Simulating batch 99\n",
" Simulating batch 100\n",
" Creating state point statepoint.100.h5...\n",
"\n",
" =======================> TIMING STATISTICS <=======================\n",
"\n",
" Total time for initialization = 4.8486e+00 seconds\n",
" Reading cross sections = 4.6751e+00 seconds\n",
" Total time in simulation = 2.8837e+01 seconds\n",
" Time in transport only = 2.8817e+01 seconds\n",
" Time in active batches = 2.8837e+01 seconds\n",
" Time accumulating tallies = 5.7458e-05 seconds\n",
" Time writing statepoints = 1.6351e-03 seconds\n",
" Total time for finalization = 1.8900e-06 seconds\n",
" Total time elapsed = 3.3691e+01 seconds\n",
" Calculation Rate (active) = 17339.1 particles/second\n",
"\n",
" ============================> RESULTS <============================\n",
"\n",
" Leakage Fraction = 0.98491 +/- 0.00017\n",
"\n"
]
},
{
"data": {
"text/plain": [
"PosixPath('/home/ubuntu/openmc-nea-course/notebooks/mcnp-conversion/statepoint.100.h5')"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.run()"
]
},
{
"cell_type": "markdown",
"id": "8f87433d-c105-477d-99aa-74f33340f584",
"metadata": {},
"source": [
"We could then also add any tallies we wish to have; we can add a `pulse-height` tally to record the photon energy deposited in the germanium cells. First, we need to find which cells contain germanium."
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "a9a76e0e-ad7d-4167-a779-3f9daedb735a",
"metadata": {},
"outputs": [],
"source": [
"ge_cell_ids = []\n",
"\n",
"cells = mcnp_model.geometry.get_all_cells()\n",
"for id in cells:\n",
" cell_fill = cells[id].fill\n",
"\n",
" if cell_fill is None:\n",
" continue\n",
"\n",
" has_ge = False\n",
" if type(cell_fill) is openmc.Material:\n",
" nuclides = cell_fill.nuclides\n",
" for n in nuclides:\n",
" string = n.name\n",
" without_numbers = ''.join([i for i in string if not i.isdigit()])\n",
" if (without_numbers == 'Ge'):\n",
" ge_cell_ids.append(id)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "8bf54f9f-0581-43d7-9501-ffa22be7b5a7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[300 305 306]\n"
]
}
],
"source": [
"ge_cell_ids = np.unique(ge_cell_ids)\n",
"print(ge_cell_ids)\n",
"\n",
"cell_filter = openmc.CellFilter(ge_cell_ids)\n",
"energy_filter = openmc.EnergyFilter(np.linspace(0, 1e6, 1000))\n",
"tally = openmc.Tally()\n",
"tally.scores = ['pulse-height']\n",
"tally.filters = [cell_filter, energy_filter]\n",
"\n",
"model.tallies = openmc.Tallies([tally])"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "c17e4ebd-010b-459b-9d4d-d78969ee31c9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" %%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%\n",
" %%%%%%%%%%%%%%%%%%%%%%%%\n",
" ############### %%%%%%%%%%%%%%%%%%%%%%%%\n",
" ################## %%%%%%%%%%%%%%%%%%%%%%%\n",
" ################### %%%%%%%%%%%%%%%%%%%%%%%\n",
" #################### %%%%%%%%%%%%%%%%%%%%%%\n",
" ##################### %%%%%%%%%%%%%%%%%%%%%\n",
" ###################### %%%%%%%%%%%%%%%%%%%%\n",
" ####################### %%%%%%%%%%%%%%%%%%\n",
" ####################### %%%%%%%%%%%%%%%%%\n",
" ###################### %%%%%%%%%%%%%%%%%\n",
" #################### %%%%%%%%%%%%%%%%%\n",
" ################# %%%%%%%%%%%%%%%%%\n",
" ############### %%%%%%%%%%%%%%%%\n",
" ############ %%%%%%%%%%%%%%%\n",
" ######## %%%%%%%%%%%%%%\n",
" %%%%%%%%%%%\n",
"\n",
" | The OpenMC Monte Carlo Code\n",
" Copyright | 2011-2025 MIT, UChicago Argonne LLC, and contributors\n",
" License | https://docs.openmc.org/en/latest/license.html\n",
" Version | 0.15.3\n",
" Commit Hash | 27e38e894697bb32a1dac7848d2618818b6b8daf\n",
" Date/Time | 2025-11-27 12:45:09\n",
" OpenMP Threads | 2\n",
"\n",
" Reading model XML file 'model.xml' ...\n",
" Reading chain file: /home/ubuntu/data/depletion_chains/chain_endfb71_pwr.xml...\n",
" Reading cross sections XML file...\n",
" Reading C0 from /home/ubuntu/data/endfb71_hdf5/C0.h5\n",
" Reading C from /home/ubuntu/data/endfb71_hdf5/photon/C.h5 \n",
" Reading Si28 from /home/ubuntu/data/endfb71_hdf5/Si28.h5\n",
" Reading Si from /home/ubuntu/data/endfb71_hdf5/photon/Si.h5 \n",
" Reading P31 from /home/ubuntu/data/endfb71_hdf5/P31.h5\n",
" Reading P from /home/ubuntu/data/endfb71_hdf5/photon/P.h5 \n",
" Reading S32 from /home/ubuntu/data/endfb71_hdf5/S32.h5\n",
" Reading S from /home/ubuntu/data/endfb71_hdf5/photon/S.h5 \n",
" Reading Cr52 from /home/ubuntu/data/endfb71_hdf5/Cr52.h5\n",
" Reading Cr from /home/ubuntu/data/endfb71_hdf5/photon/Cr.h5 \n",
" Reading Mn55 from /home/ubuntu/data/endfb71_hdf5/Mn55.h5\n",
" Reading Mn from /home/ubuntu/data/endfb71_hdf5/photon/Mn.h5 \n",
" Reading Fe56 from /home/ubuntu/data/endfb71_hdf5/Fe56.h5\n",
" Reading Fe from /home/ubuntu/data/endfb71_hdf5/photon/Fe.h5 \n",
" Reading Ni58 from /home/ubuntu/data/endfb71_hdf5/Ni58.h5\n",
" Reading Ni from /home/ubuntu/data/endfb71_hdf5/photon/Ni.h5 \n",
" Reading Ge70 from /home/ubuntu/data/endfb71_hdf5/Ge70.h5\n",
" Reading Ge from /home/ubuntu/data/endfb71_hdf5/photon/Ge.h5 \n",
" Reading Ge72 from /home/ubuntu/data/endfb71_hdf5/Ge72.h5\n",
" Reading Ge73 from /home/ubuntu/data/endfb71_hdf5/Ge73.h5\n",
" Reading Ge74 from /home/ubuntu/data/endfb71_hdf5/Ge74.h5\n",
" Reading Ge76 from /home/ubuntu/data/endfb71_hdf5/Ge76.h5\n",
" Reading H1 from /home/ubuntu/data/endfb71_hdf5/H1.h5\n",
" Reading H from /home/ubuntu/data/endfb71_hdf5/photon/H.h5 \n",
" Reading O16 from /home/ubuntu/data/endfb71_hdf5/O16.h5\n",
" Reading O from /home/ubuntu/data/endfb71_hdf5/photon/O.h5 \n",
" Reading Mg24 from /home/ubuntu/data/endfb71_hdf5/Mg24.h5\n",
" Reading Mg from /home/ubuntu/data/endfb71_hdf5/photon/Mg.h5 \n",
" Reading Cu63 from /home/ubuntu/data/endfb71_hdf5/Cu63.h5\n",
" Reading Cu from /home/ubuntu/data/endfb71_hdf5/photon/Cu.h5 \n",
" Reading Zn64 from /home/ubuntu/data/endfb71_hdf5/Zn64.h5\n",
" Reading Zn from /home/ubuntu/data/endfb71_hdf5/photon/Zn.h5 \n",
" Reading Ti48 from /home/ubuntu/data/endfb71_hdf5/Ti48.h5\n",
" Reading Ti from /home/ubuntu/data/endfb71_hdf5/photon/Ti.h5 \n",
" Reading Al27 from /home/ubuntu/data/endfb71_hdf5/Al27.h5\n",
" Reading Al from /home/ubuntu/data/endfb71_hdf5/photon/Al.h5 \n",
" Reading Sn120 from /home/ubuntu/data/endfb71_hdf5/Sn120.h5\n",
" Reading Sn from /home/ubuntu/data/endfb71_hdf5/photon/Sn.h5 \n",
" Reading Pb208 from /home/ubuntu/data/endfb71_hdf5/Pb208.h5\n",
" Reading Pb from /home/ubuntu/data/endfb71_hdf5/photon/Pb.h5 \n",
" Reading H2 from /home/ubuntu/data/endfb71_hdf5/H2.h5\n",
" Reading O17 from /home/ubuntu/data/endfb71_hdf5/O17.h5\n",
" Reading Mg25 from /home/ubuntu/data/endfb71_hdf5/Mg25.h5\n",
" Reading Mg26 from /home/ubuntu/data/endfb71_hdf5/Mg26.h5\n",
" Reading Si29 from /home/ubuntu/data/endfb71_hdf5/Si29.h5\n",
" Reading Si30 from /home/ubuntu/data/endfb71_hdf5/Si30.h5\n",
" Reading S33 from /home/ubuntu/data/endfb71_hdf5/S33.h5\n",
" Reading S34 from /home/ubuntu/data/endfb71_hdf5/S34.h5\n",
" Reading S36 from /home/ubuntu/data/endfb71_hdf5/S36.h5\n",
" Reading K39 from /home/ubuntu/data/endfb71_hdf5/K39.h5\n",
" Reading K from /home/ubuntu/data/endfb71_hdf5/photon/K.h5 \n",
" Reading K40 from /home/ubuntu/data/endfb71_hdf5/K40.h5\n",
" Reading K41 from /home/ubuntu/data/endfb71_hdf5/K41.h5\n",
" Reading Ca40 from /home/ubuntu/data/endfb71_hdf5/Ca40.h5\n",
" Reading Ca from /home/ubuntu/data/endfb71_hdf5/photon/Ca.h5 \n",
" Reading Ca42 from /home/ubuntu/data/endfb71_hdf5/Ca42.h5\n",
" Reading Ca43 from /home/ubuntu/data/endfb71_hdf5/Ca43.h5\n",
" Reading Ca44 from /home/ubuntu/data/endfb71_hdf5/Ca44.h5\n",
" Reading Ca46 from /home/ubuntu/data/endfb71_hdf5/Ca46.h5\n",
" Reading Ca48 from /home/ubuntu/data/endfb71_hdf5/Ca48.h5\n",
" Reading Fe54 from /home/ubuntu/data/endfb71_hdf5/Fe54.h5\n",
" Reading Fe57 from /home/ubuntu/data/endfb71_hdf5/Fe57.h5\n",
" Reading Fe58 from /home/ubuntu/data/endfb71_hdf5/Fe58.h5\n",
" Minimum neutron data temperature: 294 K\n",
" Maximum neutron data temperature: 294 K\n",
" Preparing distributed cell instances...\n",
" Writing summary.h5 file...\n",
" Maximum neutron transport energy: 20000000 eV for S32\n",
"\n",
" ===============> FIXED SOURCE TRANSPORT SIMULATION <===============\n",
"\n",
" Simulating batch 1\n",
" Simulating batch 2\n",
" Simulating batch 3\n",
" Simulating batch 4\n",
" Simulating batch 5\n",
" Simulating batch 6\n",
" Simulating batch 7\n",
" Simulating batch 8\n",
" Simulating batch 9\n",
" Simulating batch 10\n",
" Simulating batch 11\n",
" Simulating batch 12\n",
" Simulating batch 13\n",
" Simulating batch 14\n",
" Simulating batch 15\n",
" Simulating batch 16\n",
" Simulating batch 17\n",
" Simulating batch 18\n",
" Simulating batch 19\n",
" Simulating batch 20\n",
" Simulating batch 21\n",
" Simulating batch 22\n",
" Simulating batch 23\n",
" Simulating batch 24\n",
" Simulating batch 25\n",
" Simulating batch 26\n",
" Simulating batch 27\n",
" Simulating batch 28\n",
" Simulating batch 29\n",
" Simulating batch 30\n",
" Simulating batch 31\n",
" Simulating batch 32\n",
" Simulating batch 33\n",
" Simulating batch 34\n",
" Simulating batch 35\n",
" Simulating batch 36\n",
" Simulating batch 37\n",
" Simulating batch 38\n",
" Simulating batch 39\n",
" Simulating batch 40\n",
" Simulating batch 41\n",
" Simulating batch 42\n",
" Simulating batch 43\n",
" Simulating batch 44\n",
" Simulating batch 45\n",
" Simulating batch 46\n",
" Simulating batch 47\n",
" Simulating batch 48\n",
" Simulating batch 49\n",
" Simulating batch 50\n",
" Simulating batch 51\n",
" Simulating batch 52\n",
" Simulating batch 53\n",
" Simulating batch 54\n",
" Simulating batch 55\n",
" Simulating batch 56\n",
" Simulating batch 57\n",
" Simulating batch 58\n",
" Simulating batch 59\n",
" Simulating batch 60\n",
" Simulating batch 61\n",
" Simulating batch 62\n",
" Simulating batch 63\n",
" Simulating batch 64\n",
" Simulating batch 65\n",
" Simulating batch 66\n",
" Simulating batch 67\n",
" Simulating batch 68\n",
" Simulating batch 69\n",
" Simulating batch 70\n",
" Simulating batch 71\n",
" Simulating batch 72\n",
" Simulating batch 73\n",
" Simulating batch 74\n",
" Simulating batch 75\n",
" Simulating batch 76\n",
" Simulating batch 77\n",
" Simulating batch 78\n",
" Simulating batch 79\n",
" Simulating batch 80\n",
" Simulating batch 81\n",
" Simulating batch 82\n",
" Simulating batch 83\n",
" Simulating batch 84\n",
" Simulating batch 85\n",
" Simulating batch 86\n",
" Simulating batch 87\n",
" Simulating batch 88\n",
" Simulating batch 89\n",
" Simulating batch 90\n",
" Simulating batch 91\n",
" Simulating batch 92\n",
" Simulating batch 93\n",
" Simulating batch 94\n",
" Simulating batch 95\n",
" Simulating batch 96\n",
" Simulating batch 97\n",
" Simulating batch 98\n",
" Simulating batch 99\n",
" Simulating batch 100\n",
" Creating state point statepoint.100.h5...\n",
"\n",
" =======================> TIMING STATISTICS <=======================\n",
"\n",
" Total time for initialization = 2.0260e+00 seconds\n",
" Reading cross sections = 1.8516e+00 seconds\n",
" Total time in simulation = 2.7093e+01 seconds\n",
" Time in transport only = 2.7072e+01 seconds\n",
" Time in active batches = 2.7093e+01 seconds\n",
" Time accumulating tallies = 1.4154e-03 seconds\n",
" Time writing statepoints = 2.3719e-03 seconds\n",
" Total time for finalization = 3.0957e-03 seconds\n",
" Total time elapsed = 2.9128e+01 seconds\n",
" Calculation Rate (active) = 18455.1 particles/second\n",
"\n",
" ============================> RESULTS <============================\n",
"\n",
" Leakage Fraction = 0.98491 +/- 0.00017\n",
"\n"
]
},
{
"data": {
"text/plain": [
"PosixPath('/home/ubuntu/openmc-nea-course/notebooks/mcnp-conversion/statepoint.100.h5')"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.run()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "e3c1be2c-c0bb-47d0-8fcc-432ecfe7a75d",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"statepoint = model.run(output=False)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "3cacf214-8811-4e33-925d-b5d69b30d0a6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2997, 0, 1)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tally.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0c577199-2628-4af3-b8d9-ee848b2a5591",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 38,
"id": "e2d3dbd3-993c-4a08-b888-e376ece06ec2",
"metadata": {},
"outputs": [],
"source": [
"with openmc.StatePoint(statepoint) as sp:\n",
" ph_tally = sp.get_tally(id=tally.id)\n",
"\n",
"ph_tally.get_reshaped_data().shape\n",
"ph_tally = ph_tally.get_reshaped_data().squeeze()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "54df5aab-ef1d-4c94-96a8-cf5032f33b69",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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X197h0NEREQisCgRys3Nhb+/f7PHdOrUCffddx/uu+8+XLp0ySbBEREREYnJoltjLSVBN3o8ERERkT1YPWps1apVWL9+vcn29evX49VXX7VJUERERERtwepE6L333sPAgQNNtg8ePBjr1q2zSVBEREREbcHqRKikpATdunUz2d61a1dcuHDBJkERERERtQWrE6GwsDDs2bPHZPuePXsQEhJik6AcAYfPExERdXxWTagIAAsWLMDTTz8NlUqFW265BQCQkZGBZ599Fn/7299sHqC9cPg8ERFRx2d1IrR48WJcunQJf/3rX9HQ0AAAcHd3x3PPPYelS5faPEAiIiIisViVCKnVauzZswdLlizBP/7xD/z555/o1KkT+vXrB7lcLlaMRERERKKwKhGSyWSYPHky/vzzT/Tq1Yv1M0RERNSuWV0sHRkZidOnT4sRCxEREVGbsjoRevnll7Fo0SL88MMPuHDhAhQKhdEXERERUXthdbH01KlTAQDTp0+HRCLRbxcEARKJBGq12nbREREREYnI6kRo586dYsRBRERE1OasToTGjx8vRhxEREREbc7qGqFt27Zh9+7d+sepqamIjo7G/fffj8uXL9s0OCIiIiIxWZ0ILV68WF8UffToUaSkpGDq1KkoKChASkqKzQO0Fy6xQURE1PFZfWusoKAAERERAICvvvoK06ZNwyuvvIJDhw7pC6k7Ai6xQURE1PFZ3SPk5uaG2tpaAMDPP/+MyZMnAwD8/Pw4fJ6IiIjaFat7hMaNG4eUlBSMHTsWWVlZ2LhxIwDgxIkTCA0NtXmARERERGKxukfonXfegYuLCzZt2oS1a9eie/fuAIAff/wRt912m80DJCIiIhKLxT1CO3bswPjx49GjRw/88MMPJvv//e9/2zQwIiIiIrFZ3CP0yCOPoGvXrrj//vvxxRdfoLq6Wsy4iIiIiERncSJ0+vRp/PLLL4iIiMDrr7+OwMBATJo0CW+//TbOnj0rZoxEREREorCqRmjo0KF44YUXkJWVhVOnTuGuu+7Cjz/+iAEDBiA6OhrLli3DgQMHxIqViIiIyKasLpbWCQkJwWOPPYatW7eivLwc//jHP3DmzBncdttteOWVV2wZIxEREZEoLC6Wfuedd/Dggw+ic+fOJvs8PT1x11134a677oJarUZFRYUtYyQiIiIShcU9Qs8//zxCQkJw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RGZxIvTvf//b6HFwcDA++eQTo20SiYSJEBEREbUbFidCBQUFYsbhcDizNBEROTMLpg7sEFgjZAZnliYiIur4mAgRERGR02IiRERERE6LiRARERE5LSZCRERE5LRalQidOnUKL7zwAu677z6UlZUBAH788Uf88ccfNg2OiIiISExWJ0K//vorhgwZgv379+Prr79GTU0NAODw4cMmC7MSEREROTKrE6ElS5bg5ZdfRnp6Otzc3PTbb7nlFvz22282DY6IiIjsw0mmEbI+ETp69Chmzpxpsj0wMBDl5eU2CYqIiIioLVidCHXu3BkXLlww2f7777+je/fuNgmKiIiIqC1YnQjde++9eO6551BSUgKJRAKNRoM9e/Zg0aJFeOihh8SIkYiIiEgUVidCr7zyCgYOHIiwsDDU1NQgIiICN998M8aMGYMXXnhBjBhtora2Fj179sSiRYvsHQoRERE5CIsXXdVxc3PD+++/j2XLluHo0aOoqanBsGHD0K9fPzHis5mVK1di1KhR9g6DiIiIHIjViZBOWFgYwsLCoFarcfToUVy+fBldunSxZWw2c/LkSeTl5WHatGk4duyYvcMhIiIiB2H1rbGnn34aH374IQBArVZj/PjxGD58OMLCwvDLL79YHUBmZiamTZuGkJAQSCQSbN682eSY1NRUhIeHw93dHSNHjkRWVpZV11i0aBFWrVpldWxERETUsVmdCG3atAlRUVEAgO+//x6nT59GXl4ennnmGTz//PNWB6BUKhEVFYXU1NQm92/cuBEpKSlYvnw5Dh06hKioKEyZMkU/ozUAREdHIzIy0uSruLgY3377Lfr374/+/ftbHRsRERF1bFbfGisvL0dwcDAAYOvWrZg9ezb69++P+fPn480337Q6gISEBCQkJJjdv3r1aixYsADz5s0DAKxbtw5btmzB+vXrsWTJEgBATk6O2ef/9ttv+Pzzz/Hll1+ipqYGKpUKPj4+WLZsWZPH19fXo76+Xv9YoVAAAFQqFVQqlbUvzyzduWx5TiKAbYvEwXblfARBEP3nLWa7svScVidCQUFByM3NRbdu3bBt2zasXbsWgHZUlkwms/Z0zWpoaMDBgwexdOlS/TapVIr4+Hjs27fPonOsWrVKf1ssLS0Nx44dM5sE6Y5fsWKFyfbt27fDw8PDylfQsvT0dJufkwhg2yJxsF05A21q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IiLnxUSIiIiInBYTISIiInJaTISIiIjIaTERIiIiIqfFRIiIiIicFhMhIiIiclpMhIiIiMhpMREygzNLExGRM5syOMjeIbQJJkJmcGZpIiJyZpMjgu0dQptgIkREREROi4kQEREROS0mQkREROS0mAgRERGR02IiRERERE6LiRARERE5LSZCRERE5LSYCBEREZHTYiJERERETouJEBERETktJkJERETktJgIERERkdNiIkREREROi4kQEREROS0Xewfg6ARBAAAoFAqbnlelUqG2thYKhQKurq42PTc5N7YtEgPbVfumqa+1+jm1NdU2/+y7npjtShe77nPcHInQ0hFO7ty5cwgLC7N3GERERNQKRUVFCA0NNbufiVALNBoNiouL4e3tDYlE0uQxsbGxyM7OtmqfQqFAWFgYioqK4OPjY9OYxdbc63XU67T2XNY+z9LjLTmupWM6WttypnbVmufaqm2xXTn+tdpju2rpGHu0K0EQUF1djZCQEEil5iuBeGusBVKptNlMEgBkMpnZH2Bz+wDAx8enXb2pAC2/Jke8TmvPZe3zLD3ekuNaOqajtS1naletea6t2hbbleNfqz22q5aOsVe78vX1bfEYFkvbQHJycqv2tVdt9ZpseZ3Wnsva51l6vCXHtXRMR2tbztSuWvNcW7UttivHv1Z7bFctHePI7Yq3xuxEoVDA19cXVVVV7eqvK3J8bFskBrYrEoMjtCv2CNmJXC7H8uXLIZfL7R0KdTBsWyQGtisSgyO0K/YIERERkdNijxARERE5LSZCRERE5LSYCBEREZHTYiJERERETouJEBERETktJkIOqLKyEjExMYiOjkZkZCTef/99e4dEHUhtbS169uyJRYsW2TsU6iDCw8MxdOhQREdHY+LEifYOhzqQgoICTJw4ERERERgyZAiUSqXNr8ElNhyQt7c3MjMz4eHhAaVSicjISMyaNQv+/v72Do06gJUrV2LUqFH2DoM6mL1798LLy8veYVAHk5SUhJdffhk33XQTKioqRJlviD1CDkgmk8HDwwMAUF9fD0EQwOmeyBZOnjyJvLw8JCQk2DsUIqJm/fHHH3B1dcVNN90EAPDz84OLi+37b5gIiSAzMxPTpk1DSEgIJBIJNm/ebHJMamoqwsPD4e7ujpEjRyIrK8tof2VlJaKiohAaGorFixcjICCgjaInR2WL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NTUVS5YswYYNGzBv3jxIJBKzxwcEBODy5ctG2yyN8eGHH8YTTzyB1NRUbNiwAX369MH48eNNnlNRUYE+ffq06vUQkeVYI0REDm/48OH4448/EB4ejr59+xp9NZf8DBgwAAcOHDDaphuZZejBBx9EYWEh3nrrLeTm5iIxMbHZeIYNG4bc3NxWxTh79mxIpVJ8+umn+PjjjzF//vwmk65jx45h2LBhzcZBRDeOiRARia6+vh4lJSVGX4YjvlqSnJyMiooK3HfffcjOzsapU6fw008/Yd68eVCr1Waf9+ijjyIvLw/PPfccTpw4gS+++EI/assw+ejSpQtmzZqFxYsXY/LkySbD2683ZcoU/PHHH0a9QpbG6OXlhTlz5mDp0qW4cOECkpKSTM5/5swZnD9/HvHx8Rb+DxFRazERIiLRbdu2Dd26dTP6GjdunMXPDwkJwZ49e6BWqzF58mQMGTIETz/9NDp37gyp1PzbWK9evbBp0yZ8/fXXGDp0KNauXasfNSaXy42Offjhh9HQ0ID58+e3GM+QIUMwfPhwfPHFF62K8eGHH8bly5cxZcoUhISEmJz/s88+w+TJk9GzZ88WYyGiG8MJFYnIqaxcuRLr1q1DUVGR0fZPPvkEzzzzDIqLiy2aiHHLli1YvHgxjh071mwyZq2Ghgb069cPn376KcaOHWuz8xJR01gsTUQd2rvvvovY2Fj4+/tjz549+L//+z8sXLhQv7+2thYXLlzAv/71Lzz66KMWz0Z9++234+TJkzh//jzCwsJsFu/Zs2fx97//nUkQURthjxARdWjPPPMMNm7ciIqKCvTo0QNz587F0qVL9UtXvPjii1i5ciVuvvlmfPvtt00OfyeijouJEBERETktFksTERGR02IiRERERE6LiRARERE5LSZCRERE5LSYCBEREZHTYiJERERETouJEBERETktJkJERETktJgIERERkdP6f6Y4vpTH0o0NAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(np.unique(energy_filter.bins)[:-1], ph_tally[0,:])\n",
"plt.xscale('log')\n",
"plt.yscale('log')\n",
"plt.xlabel('Energy (eV)')\n",
"plt.ylabel('Pulse Height Tally (eV/src)')\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6ef5b55a-209e-44b9-a247-51f84599385d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}