first files

This commit is contained in:
Stafie Alex PSI
2025-12-02 11:57:33 +01:00
commit 850de66b07
175 changed files with 312879 additions and 0 deletions

212
.gitignore vendored Normal file
View File

@@ -0,0 +1,212 @@
# OpenMC
*.h5
*.out
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[codz]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py.cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# UV
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
#uv.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
#poetry.toml
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
#pdm.lock
#pdm.toml
.pdm-python
.pdm-build/
# pixi
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
#pixi.lock
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
# in the .venv directory. It is recommended not to include this directory in version control.
.pixi
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.envrc
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# Abstra
# Abstra is an AI-powered process automation framework.
# Ignore directories containing user credentials, local state, and settings.
# Learn more at https://abstra.io/docs
.abstra/
# Visual Studio Code
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/
# Ruff stuff:
.ruff_cache/
# PyPI configuration file
.pypirc
# Cursor
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
# refer to https://docs.cursor.com/context/ignore-files
.cursorignore
.cursorindexingignore
# Marimo
marimo/_static/
marimo/_lsp/
__marimo__/

91
README.md Normal file
View File

@@ -0,0 +1,91 @@
# OpenMC November 2025 NEA Workshop
<!-- TOC -->
## Table of Contents
- [Live notebooks](#live-notebooks-by-teachers)
- [Student notebooks](#student-notebooks-for-students)
- [Take at home exercises](#take-at-home-exercises-notebooks-for-students)
- [Presentations](#presentations)
<!-- /TOC -->
---
## Live notebooks (by teachers)
These notebooks are the ones that the teachers used to demo the capabilities of OpenMC. They are already compiled and all the cells we're run. The are bassicaly plug and play as long as you have the OpenMC and python API installed/configured on your system.
NOTE: Some exercises require more features, like NJOY2016, C++ API, DAGMC to demostrate de capabilities of OpenMC. A script that configures the requiered environment is located in the home folder, [setup.sh](setup.sh).
A list of available Jupyter notebooks with the following topics:
Day 1
- [1st Tutorial: Pincell](course/live_notebooks/Pincell.ipynb)
- [Advanced Geometry](course/live_notebooks/AdvancedGeometry.ipynb)
Day 2
- [Universes and lattices](course/live_notebooks/Lattices.ipynb)
- [Sources definitions / fixed source](course/live_notebooks/Sources.ipynb)
- [Tallies](course/live_notebooks/Tallies.ipynb)
- [Advanced Tallies](course/live_notebooks/Tallies-ii.ipynb)
Day 3
- [Nuclear Data](course/live_notebooks/NuclearData.ipynb)
- [Multigroup Cross Section Generation](course/live_notebooks/MGXS.ipynb)
- [Variance Reduction](course/live_notebooks/Variance-Reduction.ipynb)
- [Depletion](course/live_notebooks/Depletion.ipynb)
- [Decay sources and dose calculations](course/live_notebooks/dose-rate.ipynb)
Day 4
- [Geometry visualization](course/live_notebooks/Visualization.ipynb)
- [MCNP Model Conversion](course/live_notebooks/mcnp-conversion.ipynb)
- [C/C++ API and Multiphysics](course/live_notebooks/multiphysics.ipynb)
- [Volume Calculations](course/live_notebooks/Volume-Calcs.ipynb)
Day 5
- [Source Convergence](course/live_notebooks/Convergence.ipynb)
- [Criticality Searches](course/live_notebooks/CriticalitySearch.ipynb)
## Student notebooks (for students)
These notebooks are for the student to play in and contain the same content as the [live notebooks](course/live_notebooks) and maybe some additional play with the code. Each [student notebook](course/student_notebooks) folder contains the exercise and the precompiled solution notebook.
As a bonus there are some extra exercises not covered in the lecture or not made as live notebooks:
- [Photon Transport](course/student_notebooks/photon-transport/photon-transport.ipynb)
- [Particle Tracks](course/student_notebooks/particle-tracks/Particle-Tracks.ipynb)
- [CAD Geometry](course/student_notebooks/cad-geom/CAD.ipynb)
- [OpenMC Plotter](course/student_notebooks/plotter/Plotter.ipynb)
## Take at home exercises notebooks (for students)
A collection of exercises ideas for students to develop further. Typically the notebooks contain a description of the challenge, some starting geometry and hints on how to complete the task. The [README.md](course/take_home_exercises/README.md) found here is not related but left there from a past course, I guess.
Day 1
- [Exercise 1 — Critical box length](course/take_home_exercises/session1/Exercise_1_critical_box_length.ipynb)
- [Exercise 2 — Smallest critical radius](course/take_home_exercises/session1/Exercise_2_smallest_critical_radius.ipynb)
- [Exercise 3 — Ziggurat](course/take_home_exercises/session1/Exercise_3_ziggurat.ipynb)
Day 2
- [Exercise 1 — 3D pincell](course/take_home_exercises/session2/Exercise_1_3d_pincell.ipynb)
- [Exercise 2 — Functional expansion tallies](course/take_home_exercises/session2/Exercise_2_functional_expansion_tallies.ipynb)
Day 3
- [Exercise 1 — Highest cross section](course/take_home_exercises/session3/Exercise_1_highest_cross_section.ipynb)
- [Exercise 2 — MGXS](course/take_home_exercises/session3/Exercise_2_mgxs.ipynb)
- [Exercise 3 — Variance reduction](course/take_home_exercises/session3/Exercise_3_variance_reduction.ipynb)
Day 4
- [Exercise 1 — Visualization](course/take_home_exercises/session4/Exercise_1_visualization.ipynb)
## Presentations
The PDFs contain the various subject that were introduced during the course.
- [Introduction](pdf/OpenMC_Course_Introduction_2025-11.pdf)
- [Compiling and Installing](pdf/OpenMC_Course_Compiling_and_Installing_2025-11.pdf)
- [CAD Geometry](pdf/OpenMC_Course_CAD_Geometry_2025-11.pdf)
- [Depletion](pdf/OpenMC_Course_Depletion_2025-11.pdf)
- [Parallelization and Best Practices](pdf/OpenMC_Course_Parallelization_and_Best_Practices_2025-11.pdf)
- [Research Highlights](pdf/OpenMC_Course_Research_Highlights_2025-11.pdf)
- [Contributing to OpenMC](pdf/OpenMC_Course_Contributing_to_OpenMC_2025-11.pdf)

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,372 @@
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"id": "d63623a6",
"metadata": {},
"source": [
"# Source Convergence\n",
"\n",
"Monte Carlo \"run strategy\" generally consists of four choices:\n",
"\n",
"- Number of batches (`model.settings.batches`)\n",
"- Number of inactive batches (`model.settings.inactive`)\n",
"- Number of particles per batch (`model.settings.particles`)\n",
"- Number of generations per batch (`model.settings.generations_per_batch`), which defaults to 1\n",
"\n",
"In addition, for k-eigenvalue calculations you elect the initial source distribution. \n",
"\n",
"### What is a generation?\n",
"\n",
"During each generation in OpenMC:\n",
"\n",
"- `model.settings.particles` sites are sampled from a bank of fission sites\n",
"- Those particles are transported from birth until \"death\" (leakage or absorption)\n",
"- Any new neutrons which are produced during their lifetime (e.g., from fission) have their birth position, energy, and angle stored in a new fission bank.\n",
"\n",
"Therefore, each time a new generation begins, the sites used to sample the neutron positions are those which were \"banked\" from the previous generation.\n",
"\n",
"### What is a batch?\n",
"\n",
"A batch is a group of generations as one statistical realization. By default, `model.settings.generations_per_batch` is unity, in which case a batch is synonymous with a generation.\n",
"\n",
"### What is an inactive batch?\n",
"\n",
"An inactive batch involves the transport of neutrons, but not accumulation of any tallies.\n",
"\n",
"### What is an active batch?\n",
"\n",
"An active batch involves the transport of neutrons AND accumulation of tallies."
]
},
{
"cell_type": "markdown",
"id": "09ac1456",
"metadata": {},
"source": [
"## Inactive batches and initial source\n",
"\n",
"For the very first generation run in OpenMC (the first generation of the first batch), we don't yet have a bank of sites to sample neutrons from. Therefore, the user has to provide a \"guess\" for the starting source, using `model.settings.source`. By default, this source distribution is taken to be a point source at the origin, isotropic in angle and with the Watt fission spectrum. In all k-eigenvalue cases, you don't know the source distribution, so whatever choice you make is a GUESS. However, we don't want to start accumulating tally statistics until our guessed source distribution undergoes enough generations so that it has statistically converged. Otherwise, even if you run a high number of particles/batch, your answers will be WRONG (but PRECISE!).\n",
"\n",
"The factors you choose are:\n",
"\n",
"- The starting source distribution. Ideally, you'd like this to be as close as possible to the true source distribution.\n",
"- The number of inactive batches. The higher this number is, the more likely you are to have evolved from your (WRONG) initial source to the true initial source."
]
},
{
"cell_type": "markdown",
"id": "37c348fd",
"metadata": {},
"source": [
"To explore these effects, let's choose an initial source distribution which is clearly not the correct, converged source distribution. When choosing a source distribution, we will use the [`openmc.stats` module](https://docs.openmc.org/en/stable/pythonapi/stats.html), which contains probability distributions to sample from which we can use for energy, angle, and space."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d8cc2d8b-dcc5-4edd-a028-3db368658768",
"metadata": {},
"outputs": [],
"source": [
"import openmc\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "64693c53",
"metadata": {},
"outputs": [],
"source": [
"model = openmc.examples.pwr_pin_cell()\n",
"model.geometry.root_universe.plot()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c9a90a0d",
"metadata": {},
"outputs": [],
"source": [
"model.geometry.bounding_box"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a73fe3c6",
"metadata": {},
"outputs": [],
"source": [
"bottom = openmc.ZPlane(z0=-150, boundary_type='vacuum')\n",
"top = openmc.ZPlane(z0=150, boundary_type='vacuum')\n",
"box = openmc.model.RectangularPrism(0.63*2, 0.63*2, boundary_type='reflective')\n",
"outer_cell = openmc.Cell(region=-box & +bottom & -top, fill=model.geometry.root_universe)\n",
"root_universe = openmc.Universe(cells=[outer_cell])\n",
"model.geometry.root_universe = root_universe"
]
},
{
"cell_type": "markdown",
"id": "95a8984d",
"metadata": {},
"source": [
"Let's make a source distribution which only exists over the lower half of the pincell -- as if the entire upper half had no fission at all. Clearly this is a very bad guess!"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2d9db573",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "8075e4b8",
"metadata": {},
"source": [
"In order to \"see\" the effect of having a wrong initial source distribution, we will need to add a tally to visualize a quantity affected by a wrong source distribution. Let's take a look at the heating distribution, with a mesh filter with 50 layers in the $z$ direction."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "18429b99",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "9d1b6e86",
"metadata": {},
"source": [
"Now, we will run this model with different choices for numbers of inactive batches. As long as we run enough inactive batches, we can evolve away from this very wrong source distribution to the true, cosine distribution we expect. We know that the source distribution should be symmetric about the midplane of the fuel, so we can monitor a quantity like the axial offset,\n",
"\n",
"$\\text{axial offset}\\equiv \\int_\\text{top half} \\dot{q}\\ dV-\\int_\\text{bottom half} \\dot{q}\\ dV$"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f1e03b6a",
"metadata": {},
"outputs": [],
"source": [
"model.settings.particles = 5000 \n",
"\n",
"fig, ax = plt.subplots()\n",
"axial_offset = []\n",
"inactive_batches = [1, 10, 50, 100, 200, 300]\n",
"\n",
"for i in inactive_batches:\n",
" \n",
" \n",
"plt.legend(ncol=3)\n",
"plt.grid()\n",
"plt.xlabel('Axial Position')\n",
"plt.ylabel('Kappa-Fission (unnormalized)')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1d7d5bc0-fd6b-499f-b3b5-149cee89ed8b",
"metadata": {},
"outputs": [],
"source": [
"data = {'Inactive Batches' : inactive_batches, 'Axial Offset' : axial_offset}\n",
"df = pd.DataFrame(data=data)\n",
"df"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "04a11a94",
"metadata": {},
"source": [
"We can see that we need more and more inactive batches if we want our fission source distribution to approach the true distribution. Based on monitoring the axial offset, we might conclude that somewhere around 100 inactive batches are required (other variations in axial offset arise from statistical noise).\n",
"The number of required inactive batches will depend on:\n",
"\n",
"- How big the problem is, and how far a neutron typically travels from birth to death. If the problem dimensions are large compared to the mean free path, it will take more generations for information to \"travel\" across the system.\n",
"- How realistic the initial source distribution is.\n",
"\n",
"If you increase the number of particles, the statistical noisiness will decrease, but it won't help us to get closer to the true distribution for the sampled source. As a rule of thumb on selecting the inactive batches:\n",
"\n",
"- Small problems (critical assemblies, pin cell): O(10) batches\n",
"- Medium problems (assemblies, fast reactor): O(10)O(100) batches\n",
"- Large problems (PWR core, spent fuel pool): O(100)O(1000) batches?\n",
"\n",
"The dominance ratio, or the ratio of the second-largest eigenvalue to the largest eigenvalue, dictates the convergence rate of power iteration (each generation in a Monte Carlo simulation is a power iteration).\n",
"\n",
"If we change our initial guess for the source distribution to something more realistic, we'll be able to use fewer inactive batches before we start collecting tally statistics."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9aed66fb",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "873d004c",
"metadata": {},
"outputs": [],
"source": [
"fig, ax = plt.subplots()\n",
"axial_offset = []\n",
"inactive_batches = [1, 10, 50, 100, 200, 300]\n",
"\n",
"for i in inactive_batches:\n",
" model.settings.inactive = i\n",
" model.settings.batches = model.settings.inactive + 200\n",
" statepoint = model.run(output=False)\n",
" \n",
" with openmc.StatePoint(statepoint) as sp:\n",
" t = sp.get_tally(id=heat.id).get_values().squeeze()\n",
"\n",
" axial_offset.append(sum(t[25:]) - sum(t[:25]))\n",
" ax.plot(t, label='{} inactive'.format(i))\n",
" \n",
"plt.legend(ncol=3)\n",
"plt.grid()\n",
"plt.xlabel('Axial Position')\n",
"plt.ylabel('Kappa-Fission (unnormalized)')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b63bd071-7719-47da-9cb1-85693182d3da",
"metadata": {},
"outputs": [],
"source": [
"data = {'Inactive Batches' : inactive_batches, 'Axial Offset' : axial_offset}\n",
"df = pd.DataFrame(data=data)\n",
"df"
]
},
{
"cell_type": "markdown",
"id": "b599b775",
"metadata": {},
"source": [
"## Shannon Entropy\n",
"\n",
"Of course, we know that using just 1 inactive batch is most likely inadequate - but our inspection of axial offset would fail to illuminate this. Instead, we should use a metric which considers the more detailed spatial variation (not just lumping the pincell into two halves).\n",
"\n",
"Shannon entropy is a concept from information theory that characterizes how much \"information\" a bit stream stores. In the context of eigenvalue calculations, it has been shown that when a source distibution is discretized over a mesh, the entropy of the source probability converges as the distribution itself reaches stationarity. Shannon entropy is defined as:\n",
"\n",
"$$ H = - \\sum_i p_i \\log_2 p_i $$\n",
"\n",
"where $p_i$ is the fraction of source particles in mesh cell $i$. In essence, we superimpose a mesh onto our geometry, and assess stationarity of the fission source by looking for stationarity in the Shannon entropy. Note that you will not want to run with Shannon entropy enabled all the time, because the simulation will be quite a bit slower.\n",
"\n",
"We'll need to create a `RegularMesh` object that will be used to count source particles over and calculate Shannon entropy. We can use the same mesh used for talling the fission source earlier (though this is not a requirement)."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fd761c97",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "22e61eb2",
"metadata": {},
"outputs": [],
"source": [
"statepoint = model.run()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fe53107b",
"metadata": {},
"outputs": [],
"source": [
"\n",
"\n",
"plt.plot(entropy)\n",
"plt.xlabel('Batch')\n",
"plt.ylabel('Shannon entropy')"
]
},
{
"cell_type": "markdown",
"id": "9ac5d111",
"metadata": {},
"source": [
"You should choose your number of inactive batches once the Shannon entropy plateaus to a constant value. It's important to use enough particles so that you can see the plateau. In the above, choosing 100 or higher looks to be a good choice, but we can re-run with higher particles to confirm. Based on this second run, 200 looks like a slightly better choice."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bf37b32e",
"metadata": {},
"outputs": [],
"source": [
"\n",
" \n",
"plt.plot(entropy)\n",
"plt.xlabel('Batch')\n",
"plt.ylabel('Shannon entropy')"
]
},
{
"cell_type": "markdown",
"id": "2dd21030",
"metadata": {},
"source": [
"From the above, it looks like we can justify using about 200 inactive batches. It is common to use a moving window average in order to make this determination more quantitatively."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f4dfea7b-4e86-4b9d-a1ca-e8e67849a833",
"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
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

View File

@@ -0,0 +1,153 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="11" name="pf_coil_1">
<density value="8.96" units="g/cm3"/>
<nuclide name="Cu63" ao="0.6915"/>
<nuclide name="Cu65" ao="0.3085"/>
</material>
<material id="12" name="pf_coil_2">
<density value="8.96" units="g/cm3"/>
<nuclide name="Cu63" ao="0.6915"/>
<nuclide name="Cu65" ao="0.3085"/>
</material>
<material id="13" name="pf_coil_3">
<density value="8.96" units="g/cm3"/>
<nuclide name="Cu63" ao="0.6915"/>
<nuclide name="Cu65" ao="0.3085"/>
</material>
<material id="14" name="pf_coil_4">
<density value="8.96" units="g/cm3"/>
<nuclide name="Cu63" ao="0.6915"/>
<nuclide name="Cu65" ao="0.3085"/>
</material>
<material id="15" name="plasma">
<density value="1e-05" units="g/cm3"/>
<nuclide name="H1" ao="0.99984426"/>
<nuclide name="H2" ao="0.00015574"/>
</material>
<material id="16" name="inboard_tf_coils">
<density value="8.96" units="g/cm3"/>
<nuclide name="Cu63" ao="0.6915"/>
<nuclide name="Cu65" ao="0.3085"/>
</material>
<material id="17" name="center_column_shield">
<density value="19.3" units="g/cm3"/>
<nuclide name="W180" ao="0.0012"/>
<nuclide name="W182" ao="0.265"/>
<nuclide name="W183" ao="0.1431"/>
<nuclide name="W184" ao="0.3064"/>
<nuclide name="W186" ao="0.2843"/>
</material>
<material id="18" name="firstwall">
<density value="7.7" units="g/cm3"/>
<nuclide name="Fe54" ao="0.05845"/>
<nuclide name="Fe56" ao="0.91754"/>
<nuclide name="Fe57" ao="0.02119"/>
<nuclide name="Fe58" ao="0.00282"/>
</material>
<material id="19" name="blanket">
<density value="19.0" units="g/cm3"/>
<nuclide name="Pb204" ao="0.011788"/>
<nuclide name="Pb206" ao="0.202922"/>
<nuclide name="Pb207" ao="0.186082"/>
<nuclide name="Pb208" ao="0.441208"/>
<nuclide name="Li6" ao="0.01199062"/>
<nuclide name="Li7" ao="0.14600938"/>
</material>
<material id="20" name="blanket_rear_wall">
<density value="7.7" units="g/cm3"/>
<nuclide name="Fe54" ao="0.05845"/>
<nuclide name="Fe56" ao="0.91754"/>
<nuclide name="Fe57" ao="0.02119"/>
<nuclide name="Fe58" ao="0.00282"/>
</material>
<material id="21" name="divertor_upper">
<density value="19.3" units="g/cm3"/>
<nuclide name="W180" ao="0.0012"/>
<nuclide name="W182" ao="0.265"/>
<nuclide name="W183" ao="0.1431"/>
<nuclide name="W184" ao="0.3064"/>
<nuclide name="W186" ao="0.2843"/>
</material>
<material id="22" name="divertor_lower">
<density value="19.3" units="g/cm3"/>
<nuclide name="W180" ao="0.0012"/>
<nuclide name="W182" ao="0.265"/>
<nuclide name="W183" ao="0.1431"/>
<nuclide name="W184" ao="0.3064"/>
<nuclide name="W186" ao="0.2843"/>
</material>
<material id="23" name="pf_coil_case_1">
<density value="8.96" units="g/cm3"/>
<nuclide name="Fe54" ao="0.05845"/>
<nuclide name="Fe56" ao="0.91754"/>
<nuclide name="Fe57" ao="0.02119"/>
<nuclide name="Fe58" ao="0.00282"/>
</material>
<material id="24" name="pf_coil_case_2">
<density value="8.96" units="g/cm3"/>
<nuclide name="Fe54" ao="0.05845"/>
<nuclide name="Fe56" ao="0.91754"/>
<nuclide name="Fe57" ao="0.02119"/>
<nuclide name="Fe58" ao="0.00282"/>
</material>
<material id="25" name="pf_coil_case_3">
<density value="8.96" units="g/cm3"/>
<nuclide name="Fe54" ao="0.05845"/>
<nuclide name="Fe56" ao="0.91754"/>
<nuclide name="Fe57" ao="0.02119"/>
<nuclide name="Fe58" ao="0.00282"/>
</material>
<material id="26" name="pf_coil_case_4">
<density value="8.96" units="g/cm3"/>
<nuclide name="Fe54" ao="0.05845"/>
<nuclide name="Fe56" ao="0.91754"/>
<nuclide name="Fe57" ao="0.02119"/>
<nuclide name="Fe58" ao="0.00282"/>
</material>
</materials>
<geometry>
<cell id="1" fill="9" region="1 -2 3 -4 5" universe="10"/>
<dagmc_universe id="9" auto_geom_ids="true" filename="/home/ubuntu/openmc-nea-course/notebooks/cad-geom/paramak_with_graveyard.h5m"/>
<surface id="1" type="x-plane" boundary="reflective" coeffs="0.0"/>
<surface id="2" type="x-plane" boundary="vacuum" coeffs="600.0"/>
<surface id="3" type="y-plane" boundary="reflective" coeffs="0.0"/>
<surface id="4" type="y-plane" boundary="vacuum" coeffs="600.0"/>
<surface id="5" type="z-plane" boundary="reflective" coeffs="-0.1"/>
</geometry>
<settings>
<run_mode>fixed source</run_mode>
<particles>10000</particles>
<batches>10</batches>
<source type="independent" strength="1.0" particle="neutron">
<space type="cylindrical" origin="0.0 0.0 0.0">
<r type="discrete">
<parameters>250.0 1.0</parameters>
</r>
<phi type="uniform" parameters="0.0 3.141592653589793"/>
<z type="discrete">
<parameters>0.0 1.0</parameters>
</z>
</space>
<energy type="normal" parameters="14080000.0 335618.8314144485"/>
</source>
</settings>
<tallies>
<mesh id="6">
<dimension>200 200 200</dimension>
<lower_left>0.0 0.0 0.0</lower_left>
<upper_right>500.0 500.0 500.0</upper_right>
</mesh>
<filter id="15" type="mesh">
<bins>6</bins>
</filter>
<filter id="16" type="material">
<bins>19</bins>
</filter>
<tally id="10" name="blanket flux">
<filters>15 16</filters>
<scores>flux</scores>
</tally>
</tallies>
</model>

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,742 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"jp-MarkdownHeadingCollapsed": true,
"tags": []
},
"source": [
"# The OpenMC C-API\n",
"\n",
"Welcome to the multiphysics part of the OpenMC workshop. This section will show the basics of using OpenMC's C-API for performing multiphysics coupling. OpenMC's C-API allows you to interact with an OpenMC simulation in-memory by changing cell temperatures and densities, adding/removing tallies, and much more - all without re-initializing OpenMC between multiphysics feedback steps."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Problem Description\n",
"\n",
"This example will couple OpenMC to a basic thermal-fluids solver for a UO2 pincell in water. OpenMC will send a volumetric heat source to the thermal-fluids solver, which will use this heat source to compute temperatures and densities that will be sent back to OpenMC. The two physics (OpenMC, thermal-fluids) will then be iterated several times in-memory.\n",
"We will divide the problem into $N$ axial cells in both OpenMC and the T/H app, with coupling between layer $i$ in OpenMC and layer $i$ in the T/H app. We will not couple solid _density_ to this problem because to properly conserve the fissile mass, this would require re-generation of the geometry (i.e. larger or smaller pin radii) with each coupled physics iteration. \n",
"\n",
"<img src=\"../setup.png\" alt=\"drawing\" width=\"500\"/>\n",
"\n",
"To keep our main focus on OpenMC, all of the T/H physics is located in a separate Python module, `th_backend`. This module contains functions that compute the fluid temperature, fluid density, and solid temperature based on steady state energy conservation. \n",
"\n",
"<div class=\"alert alert-block alert-info\">\n",
"Do NOT use the th_backend.py for any real simulations -- the physical models are extremely simplified.\n",
"</div>\n",
"\n",
"We will couple OpenMC and our thermal-fluids application with Picard iteration. Our simulation will be a steady-state simulation, so we will iterate between OpenMC and our thermal-fluids application until the solution (power, temperatures, densities) has stopped changing with iteration.\n",
"\n",
"<img src=\"../picard.png\" alt=\"drawing\" width=\"500\"/>\n",
"\n",
"### Changing Temperatures and Densities in OpenMC\n",
"\n",
"We require separate cells so that OpenMC can apply a histogram-type resolution for temperature and density feedback. Changes to temperature and density are easiest to apply by changing these quantities on the cell objects; as long as a cell has a unique ID/instance pair, it's temperature/density/tally can be distinguished from other cells with different ID/instance pairs.\n",
"\n",
"## Model"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import openmc\n",
"import th_backend\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"model = openmc.Model()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will use the existing pincell model in OpenMC. The thermal-hydraulic solver also needs to know some quantities about the dimensions, so we fetch those parameters and assign them to local variables for convenience."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"model = openmc.examples.pwr_pin_cell()\n",
"u = model.geometry.root_universe\n",
"model.plot(width=(2, 2))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# find the cylinder radii and pitch\n",
"cylinder_radii = []\n",
"xplane_x0 = []\n",
"surfaces = model.geometry.get_all_surfaces()\n",
"for s in surfaces:\n",
" if type(surfaces[s]) is openmc.ZCylinder:\n",
" cylinder_radii.append(surfaces[s].r)\n",
" if type(surfaces[s]) is openmc.XPlane:\n",
" xplane_x0.append(surfaces[s].x0)\n",
"\n",
"cylinder_radii.sort()\n",
"xplane_x0.sort()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"R = cylinder_radii[1] # outer radius of the pincell (cm)\n",
"Rf = cylinder_radii[0] # outer radius of the pellet (cm)\n",
"pitch = xplane_x0[1] - xplane_x0[0] # pitch between pincells (cm)\n",
"height = 381.0 # height of the pincell (cm)\n",
"\n",
"power = 80.0e3 # total power produced by pincell (W)\n",
"T_inlet = 573.0 # inlet water temperature (K)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, specify the number of layers we want to build in our model. Note that the more layers you add, the better the resolution will be for the temperature, density, and tally feedback - but the more particles which will be needed as you make each tally region smaller and smaller."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"N = 20 # number of coupling layers \n",
"H = height / N # height of each coupling layer"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Geometry\n",
"\n",
"Next, let's define the geometry. As our geometry currently stands, it is infinite in the $z$-direction and also has no \"cell resoluion\" in the vertical direction. In other words, because temperatures and densities will be applied to our cells, we want to make sure that there are more unique cells in the vertical direction so that the cells can be set to a spatially-varying temperature and density.\n",
"\n",
"The most efficient way to do this is to simply put our universe, `model.geometry.root_universe`, that we pulled from the pre-built examples into a lattice. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"lattice = openmc.RectLattice()\n",
"\n",
"lattice.lower_left = (-pitch/2, -pitch/2, 0)\n",
"lattice.pitch = (pitch, pitch, H)\n",
"\n",
"univs = []\n",
"for n in range(N):\n",
" univs.append([[u]])\n",
"lattice.universes = univs\n",
"\n",
"prism = openmc.model.RectangularPrism(width = pitch, height = pitch, boundary_type = 'reflective')\n",
"bottom = openmc.ZPlane(z0=0, boundary_type='vacuum')\n",
"top = openmc.ZPlane(z0=height, boundary_type='vacuum')\n",
"\n",
"top_level_cell = openmc.Cell(region=-prism & +bottom & -top, fill=lattice)\n",
"root = openmc.Universe(cells=[top_level_cell])\n",
"model.geometry = openmc.Geometry(root)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"root.plot(width=(pitch*2, pitch*2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have repeated the same cells (fuel, clad, water box) in each layer of the lattice. OpenMC differentiates between these cells, once they are placed into the lattice, through the notion of cell *instances*. Because we loaded this model from a pre-built example, we need to have OpenMC re-load/compute the instancing information."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"cells = model.geometry.get_all_cells()\n",
"print(cells)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"model.geometry.determine_paths()\n",
"\n",
"for c in cells:\n",
" if cells[c].name == 'Fuel':\n",
" fuel_cell = cells[c]\n",
"fuel_cell.num_instances"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tallies\n",
"\n",
"In order to provide a power to our T/H app, we need to extract the fission power from OpenMC. We therefore need to add tallies for the recoverable fission energy that is deposited in each layer. In order to normalize these heat tallies into units of W/cm$^3$, we will also need to tally the total fission energy deposited. In other words, a global heating tally allows us to compute $\\textcolor{red}{S}$.\n",
"\n",
"Heating tally: $r_g \\left\\lbrack\\frac{\\text{eV}}{\\text{src}}\\right\\rbrack * \\textcolor{red}{S} \\left\\lbrack\\frac{\\text{src}}{\\text{s}}\\right\\rbrack = p \\left\\lbrack\\frac{J}{\\text{s}}\\right\\rbrack * \\frac{1}{1.602\\times10^{-19}} \\left\\lbrack\\frac{\\text{eV}}{\\text{J}}\\right\\rbrack $\n",
"\n",
"We then normalize our local heating tally as\n",
"\n",
"Local heating tally: $r_l \\left\\lbrack\\frac{\\text{eV}}{\\text{src}}\\right\\rbrack * \\textcolor{red}{S} \\left\\lbrack\\frac{\\text{src}}{\\text{s}}\\right\\rbrack * \\frac{1}{V} \\left\\lbrack\\frac{1}{\\text{cm$^3$}}\\right\\rbrack * 1.602\\times10^{-19} \\left\\lbrack\\frac{\\text{J}}{\\text{eV}}\\right\\rbrack \\rightarrow \\dot{q} \\left\\lbrack\\frac{W}{\\text{cm$^3$}}\\right\\rbrack $\n",
"\n",
"$\\frac{r_l \\left\\lbrack\\frac{\\text{eV}}{\\text{src}}\\right\\rbrack}{r_g \\left\\lbrack\\frac{\\text{eV}}{\\text{src}}\\right\\rbrack} * p \\left\\lbrack\\frac{J}{\\text{s}}\\right\\rbrack * \\cancel{\\frac{1}{1.602\\times10^{-19}} \\left\\lbrack\\frac{\\text{eV}}{\\text{J}}\\right\\rbrack} * \\frac{1}{V} \\left\\lbrack\\frac{1}{\\text{cm$^3$}}\\right\\rbrack * \\cancel{1.602\\times10^{-19} \\left\\lbrack\\frac{\\text{J}}{\\text{eV}}\\right\\rbrack} \\rightarrow \\dot{q} \\left\\lbrack\\frac{W}{\\text{cm$^3$}}\\right\\rbrack $"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"cell_filter = openmc.DistribcellFilter(fuel_cell)\n",
"fission_tally = openmc.Tally()\n",
"fission_tally.filters.append(cell_filter)\n",
"fission_tally.scores = ['kappa-fission']\n",
"model.tallies = [fission_tally]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now come the settings. First, we will specify the initial source. Here we will just use a uniform source over all of the fissionable regions in the problem - i.e. the cylinder fuel pellet. We also specify some batch and particle settings."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"uniform_dist = openmc.stats.Box(root.bounding_box.lower_left, root.bounding_box.upper_right)\n",
"model.settings.source = openmc.source.IndependentSource(space=uniform_dist, constraints={'fissionable' : True})\n",
"\n",
"model.settings.particles = 1000\n",
"model.settings.inactive = 200\n",
"model.settings.batches = 500"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### How OpenMC Uses Temperature\n",
"\n",
"There are three ways to define temperature in OpenMC, and a fourth option is coming soon:\n",
"\n",
"1. Set a default temperature, using `settings.temperature['default']`\n",
"2. Set the temperature of an `openmc.Material`\n",
"3. Set the temperature of an `openmc.Cell`\n",
"4. Read temperature from a superimposed mesh (coming soon)\n",
"\n",
"In order of precedence, OpenMC attempts to find temperatures from the bottom of the list, going to the top. For example, in our multiphysics calculation we can use `settings.temperature['default']` to easily set a uniform initial temperature for the entire domain. But when we want to set a spatially-dependent temperature, we'll set those temperatures using the cell objects. We could have used the material approach, but this would require us to create copies of the materials for each location they appear in the model, which for large problems can be memory intensive.\n",
"\n",
"### Temperatures Not in the LIbrary\n",
"\n",
"We need to set the method by which OpenMC determines which cross sections to read if a corresponding library is not available on your machine. For example, you may want to change the fuel to 725 K, but only have libraries at 600 K and 900 K. There are two available methods:\n",
"\n",
"- `interpolation`, which means that if a cell is at temperature $T$, that the microscopic cross section is evaluated based on a stochastic interpolation between the cross sections at $T_i$ and $T_{i+1}$, where $T_i$ and $T_{i+1}$ are the temperatures that bound $T$ for which cross section data is loaded.\n",
"- `nearest`, which will select the closest available library.\n",
"\n",
"We want to be sure to load cross section data over a fairly wide range in temperatures - we're not sure exactly how hot the fuel is going to be for the coupled case until we run it! So we can set a `range` from 294 K to something high - say, 3000 K. This should hopefully cover all the temperatures we encounter in our coupled run. This is necessary because OpenMC will load all the cross sections into memory at the start of the run (for performance reasons, we don't check each time a collision occurs that the library contains the relevant data needed at that temperature - we simply move straight to evaluating).\n",
"\n",
"### How OpenMC Uses Density\n",
"\n",
"There are two ways to define density in OpenMC:\n",
"\n",
"1. Set the density of an `openmc.Material`\n",
"2. Set a multiplier on the density of an `openmc.Cell` filled by a material\n",
"\n",
"In this notebook, we will use the second option because this allows us to have just one definition for the fuel material, but scale its density to the value desired in each cell."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"model.settings.temperature = {'default': T_inlet,\n",
" 'method': 'interpolation',\n",
" 'multipole': True,\n",
" 'range': (294.0, 3000.0)}"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Running OpenMC: All-at-Once\n",
"\n",
"In the earlier parts of this workshop, we ran OpenMC with the command `model.run()`, like this:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"statepoint = model.run()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Running OpenMC : Step-by-Step\n",
"\n",
"OpenMC's C-API contains python bindings to C++ functions that allow you to individually control modular pieces of an overall OpenMC calculation, so that you no longer need to run an entire OpenMC calculation all at once.\n",
"Running OpenMC with the C-API includes the following major steps:\n",
"\n",
"1. Initializing OpenMC (loading cross section data, building the geometry, etc.)\n",
"2. Clearing any tally data\n",
"3. Running OpenMC (stochastic transport for the batches, accumulating tallies, etc.)\n",
"4. Finalizing OpenMC (freeing dynamically-allocated memory, closing the parallel communicator, etc.)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"openmc.lib.init()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This function reads all of the XML files associated with this run and loads cross section data. Next, clear any tally data:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"openmc.lib.reset()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, let's run OpenMC for the batches we have specified."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"openmc.lib.run()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To wrap up the simulation, finalize OpenMC:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"openmc.lib.finalize()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Running OpenMC: Multiphysics iteration\n",
"\n",
"As you can see from the example above, the C-API lets us separate the overall OpenMC calculation into separate steps, where we can insert other behavior between steps, while also skipping the same initialization and finalization steps we don't need for in-memory coupling. In this section, we build a simple multiphysics example with temperature, density, and heat source iteration with the thermal-fluids solver. First, let's specify the number of iterations we'd like to perform."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"n_iterations = 5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we iterate between Monte Carlo transport and thermal-fluids, we can improve the stability by _relaxing_ the heat source computed by OpenMC - all that means is that in iteration $j$, we compute the heat source as an average of the heat source _just_ computed by OpenMC and that of the previous iterate:\n",
"\n",
"$q_j=(1-\\alpha)q_{j-1}+\\alpha \\Phi_j$\n",
"\n",
"where $\\Phi$ indicates the Monte Carlo \"operation.\" All we need to do here is define $\\alpha$, which we'll just take as 0.5:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"alpha = 0.5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A classic difficulty with multiphysics calculations is mapping data between the Monte Carlo code and the thermal-fluids code - what cell in OpenMC corresponds to the node/element/quadrature point in my thermal-fluids application? OpenMC's C-API provides several convenient functions to find the cell and material at a given position in space. Although in this example we built the thermal-fluids mesh to exactly match OpenMC's cell division, we'll highlight how the C-API could be used to determine the mapping in an automated fashion. \n",
"\n",
"To do this, we'll define coordinates in each of the coupling regions - the fluid, the clad, and the fuel. Under the hood, OpenMC uses its cell lookup routines to find which cell the point is in - because our thermal-fluids data computes volume-averaged quantities, we just need to identify _one_ point in each layer."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# z-coordinates of each layer, H is the layer height\n",
"cell_centers = np.linspace(H / 2.0, height - H / 2.0, N)\n",
"\n",
"# an x-coordinate in each of the various regions\n",
"x_fuel = 0.0\n",
"x_clad = Rf + 0.001 # just a little bit outside the pellet surface\n",
"x_fluid = R + 0.001 # just a little bit outside the pincell surface"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Multiphysics Loop\n",
"\n",
"For our multiphysics calculation, we want to exchange data with our thermal-fluids application in-memory. The alternative approach - sometimes referred to as \"external coupling,\" would instead faciltate multiphysics by \n",
"\n",
"1. Initializing, running, and finalizing OpenMC\n",
"2. Writing an OpenMC output file\n",
"3. Using a script to parse OpenMC's output file and write a new thermal-fluids app input file\n",
"4. Initializing, running, and finalizing the thermal-fluids app\n",
"5. Using a script to parse the thermal-fluids app's output file and write a new OpenMC input file\n",
"\n",
"A downside of this approach is that many steps are repeated for each iteration even though they're not required - such as reading cross section data. A second downside of the external coupling approach is that you need to write scripts to handle I/O.\n",
"\n",
"### A Convenient Context Manager\n",
"\n",
"Previously, we ran the four steps of an OpenMC simulation separately - `init()`, `reset()`, `run()`, and `finalize()`. The C-API offers a convenient context manager that actually handles the initialization and finalization for you, such that all you need to do to run OpenMC multiple times in memory is:\n",
"\n",
" with openmc.lib.run_in_memory():\n",
" for i in range(n_iterations):\n",
" openmc.lib.reset()\n",
" openmc.lib.run()\n",
" \n",
" # DO STUFF - such as multiphysics!\n",
"\n",
"Below is our code for multiphysics feedback in OpenMC. Let's walk through it step-by-step.\n",
"\n",
"1. First, we reset the tallies (because now we are running OpenMC in a loop, and for this problem we want the tallies to be separate for each run) and then run OpenMC (based on whatever temperatures and densities are set in OpenMC's model).\n",
"\n",
"2. Second, we normalize the kappa fission tally computed by OpenMC, and store the normalized power (with units of Watts) in `q`.\n",
"\n",
"3. Third, we solve our thermal-fluids app by calling the `fluid_temperature`, `fluid_density`, and `solid_temperature` functions we defined at the very beginning of this notebook.\n",
"\n",
"4. Fourth, use the results of the thermal-fluid app to update the temperatures and densities used in OpenMC. For this, we use the C-API functions to first (a) find the cell/material we need to modify based on a coordinate in the cell-of-interest and (b) write the cell/material temperature or density.\n",
"\n",
"### Setting Temperatures and Densities\n",
"\n",
"To find the cell that corresponds to the point `(x_fuel, 0, z)`, we use the function `openmc.lib.find_cell`, which returns a reference to the cell and the instance of that cell. Once we've found the cell, then we can call `set_temperature` for that cell to apply the temperature from our thermal-fluids app. Likewise, once we have the cell ID and instance, we set its density with the `set_density` method."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"model.settings.particles = 1000\n",
"\n",
"q_iterations = []\n",
"fluid_temp_iterations = []\n",
"solid_temp_iterations = []\n",
"fluid_density_iterations = []\n",
"\n",
"with openmc.lib.run_in_memory():\n",
" for i in range(n_iterations):\n",
" openmc.lib.reset()\n",
"\n",
" openmc.lib.run(output=False)\n",
"\n",
" # ---- Multiphysics feedback part ---- #\n",
" \n",
" # get the total kappa fission computed by OpenMC over the entire domain\n",
" total_kappa_fission = openmc.lib.tallies[1].mean.sum()\n",
"\n",
" # power (W) in each layer of the solid\n",
" q = openmc.lib.tallies[1].mean / total_kappa_fission * power\n",
"\n",
" # for greater than the first iteration, relax\n",
" if (i > 0):\n",
" q = (1.0 - alpha) * q_iterations[i - 1] + alpha * q\n",
"\n",
" # compute the fluid temps, fluid densities, and solid temps\n",
" fluid_temps = th_backend.fluid_temperature(q, T_inlet, N)\n",
" fluid_densities = th_backend.fluid_density(fluid_temps, N)\n",
" solid_temps = th_backend.solid_temperature(q, fluid_temps, N, R, Rf, H)\n",
" \n",
" for j in range(N):\n",
" #print(\"Layer {:3n}: Percent power: {:5.1f} Fluid T: {:7.1f} Solid T: {:7.1f} Fluid density: {:5.2f}\".format(j, q[j] / power * 100, fluid_temps[j], solid_temps[j], fluid_densities[j]))\n",
"\n",
" z = cell_centers[j]\n",
"\n",
" # solid temperature\n",
" cell_s, instance_s = openmc.lib.find_cell((x_fuel, 0, z))\n",
" cell_s.set_temperature(solid_temps[j], instance_s)\n",
"\n",
" # clad temperature (just set to fluid temperature)\n",
" cell_c, instance_c = openmc.lib.find_cell((x_clad, 0, z))\n",
" cell_c.set_temperature(fluid_temps[j], instance_c)\n",
"\n",
" # get a point in the fluid phase to find the fluid cell\n",
" cell_f, instance_f = openmc.lib.find_cell((x_fluid, 0, z))\n",
" cell_f.set_temperature(fluid_temps[j], instance_f)\n",
"\n",
" # set the fluid density\n",
" cell_f.set_density(fluid_densities[j], instance_f)\n",
" \n",
" print(\"Finished Iteration {:3n}\".format(i))\n",
" openmc.lib.export_properties('props' + str(i) + '.h5')\n",
" \n",
" # save all of the fields computed from this iteration for plotting later\n",
" q_iterations.append(q)\n",
" fluid_temp_iterations.append(fluid_temps)\n",
" fluid_density_iterations.append(fluid_densities)\n",
" solid_temp_iterations.append(solid_temps)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The above runs OpenMC $N$ times, with the initialization step (where the big OpenMC logo prints and cross-sections are loaded) only performed once at the beginning. Because we use the `openmc.lib.run_in_memory()` context manager, we don't need to worry about initializing and finalizing OpenMC, and instead can focus just on what we want to simulate for each iteration.\n",
"\n",
"Finally, let's plot our multiphysics simulation for all of the iterations."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"normalized_cell_centers = np.array([c / height for c in cell_centers])\n",
"\n",
"fig, axs = plt.subplots(2, 2, figsize=(8,8))\n",
"\n",
"for i in range(n_iterations):\n",
" axs[0, 0].plot(normalized_cell_centers, q_iterations[i], label = 'iteration {:2n}'.format(i))\n",
" axs[0, 0].set_ylabel('$q$ (W)')\n",
"\n",
" axs[0, 1].plot(normalized_cell_centers, solid_temp_iterations[i], label = 'iteration {:2n}'.format(i))\n",
" axs[0, 1].set_ylabel('$T_s$ (K)')\n",
"\n",
" axs[1, 0].plot(normalized_cell_centers, fluid_temp_iterations[i], label = 'iteration {:2n}'.format(i))\n",
" axs[1, 0].set_ylabel('$T_f$ (K)')\n",
"\n",
" axs[1, 1].plot(normalized_cell_centers, fluid_density_iterations[i], label = 'iteration {:2n}'.format(i))\n",
" axs[1, 1].set_ylabel('$\\\\rho_f$ (g/cm$^3$)')\n",
"\n",
"for ax in axs.flat:\n",
" ax.set(xlabel = 'Normalized Axial Coordinate')\n",
" ticks = np.arange(H / height / 2.0, 1.0, H / height)\n",
" ax.set_xticks([0.0, 0.25, 0.5, 0.75, 1.0])\n",
" ax.set_xticks(ticks, minor = True)\n",
" ax.legend()\n",
" ax.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Running Batch by Batch\n",
"\n",
"We can also run OpenMC one batch at a time, doing anything between batches - including running a multiphysics calculation. The way we have this configured below will include tallies which are effectively relaxed across the average of the temperature/density profiles applied.\n",
"\n",
"```\n",
"with openmc.lib.run_in_memory():\n",
" openmc.lib.reset()\n",
" openmc.lib.simulation_init()\n",
" \n",
" for b_id in range(model.settings.batches):\n",
" openmc.lib.next_batch()\n",
"\n",
" # do something!\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"q_iterations = []\n",
"fluid_temp_iterations = []\n",
"fluid_density_iterations = []\n",
"solid_temp_iterations = []\n",
"\n",
"with openmc.lib.run_in_memory():\n",
" openmc.lib.reset()\n",
" openmc.lib.simulation_init()\n",
" \n",
" #for b_id, _ in enumerate(openmc.lib.iter_batches()):\n",
" \n",
" for b_id in range(model.settings.batches):\n",
" openmc.lib.next_batch()\n",
" mean, std_dev = openmc.lib.keff()\n",
" \n",
" if (b_id >= model.settings.inactive):\n",
" \n",
" # get the total kappa fission computed by OpenMC over the entire domain\n",
" total_kappa_fission = openmc.lib.tallies[1].mean.sum()\n",
"\n",
" # power (W) in each layer of the solid\n",
" q = openmc.lib.tallies[1].mean / total_kappa_fission * power\n",
"\n",
" # for greater than the first iteration, relax\n",
" if (i > 0):\n",
" q = (1.0 - alpha) * q_iterations[i - 1] + alpha * q\n",
"\n",
" # compute the fluid temps, fluid densities, and solid temps\n",
" fluid_temps = th_backend.fluid_temperature(q, T_inlet, N)\n",
" fluid_densities = th_backend.fluid_density(fluid_temps, N)\n",
" solid_temps = th_backend.solid_temperature(q, fluid_temps, N, R, Rf, H)\n",
" \n",
" for j in range(N):\n",
" z = cell_centers[j]\n",
"\n",
" # solid temperature\n",
" cell_s, instance_s = openmc.lib.find_cell((x_fuel, 0, z))\n",
" cell_s.set_temperature(solid_temps[j], instance_s)\n",
"\n",
" # clad temperature (just set to fluid temperature)\n",
" cell_c, instance_c = openmc.lib.find_cell((x_clad, 0, z))\n",
" cell_c.set_temperature(fluid_temps[j], instance_c)\n",
"\n",
" # get a point in the fluid phase to find the fluid cell\n",
" cell_f, instance_f = openmc.lib.find_cell((x_fluid, 0, z))\n",
" cell_f.set_temperature(fluid_temps[j], instance_f)\n",
"\n",
" # set the fluid density\n",
" cell_f.set_density(fluid_densities[j], instance_f)\n",
" \n",
" print(\"Finished Batchwise Iteration {:3n}\".format(b_id))\n",
" \n",
" # save all of the fields computed from this iteration for plotting later\n",
" q_iterations.append(q)\n",
" fluid_temp_iterations.append(fluid_temps)\n",
" fluid_density_iterations.append(fluid_densities)\n",
" solid_temp_iterations.append(solid_temps)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for i in range(0,len(q_iterations),50):\n",
" plt.plot(normalized_cell_centers, q_iterations[i], label = 'iteration {:2n}'.format(i))\n",
"\n",
"plt.xlabel('Normalized Axial Coordinate')\n",
"plt.ylabel('Power (W)')\n",
"ticks = np.arange(H / height / 2.0, 1.0, H / height)\n",
"ax.set_xticks([0.0, 0.25, 0.5, 0.75, 1.0])\n",
"ax.set_xticks(ticks, minor = True)\n",
"plt.legend()\n",
"plt.grid()"
]
},
{
"cell_type": "code",
"execution_count": null,
"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": 4
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1,86 @@
import math
import numpy as np
UO2_k = 0.035 # UO2 thermal conductivity (W/cm/K)
water_cp = 4.184 # UO2 specific heat capacity (J/g/K)
htc = 0.5 # fluid-solid heat transfer coefficient (W/cm2/K)
mdot = 300.0 # mass flowrate (g/s)
# Fluid temperature model
# The fluid temperature in layer i is determined from steady-state convection
# from the solid pincell; axial conduction in the solid phase is neglected so that
# the heat deposited into the fluid layer i is the same as the heat deposited
# into the i-th solid layer. An energy balance over layer i gives:
#
# q_i=m * C_p * (T_{f,i+1/2}-T_{f,i-1/2})
#
# where 1/2 indicates temperatures on the faces of the fluid cell, m is the mass
# flowrate, and C_p is the fluid isobaric specific heat capacity. After computing
# the fluid temperatures, the fluid density is then computed as a function of this temperature.
# Solid temperature model
# The solid temperature in layer i is determined from the analytical solution
# to the heat conduction equation with constant thermal conductivity and constant heat source,
#
# -1 / r * d/dr (rk dT_{s,i}/dr )=q_i
#
# where k is the thermal conductivity. We apply boundary conditions of
# dT_{s,i}(0)/dr=0, i.e. symmetry at the pincell centerline, and
#
# q_i / (2\pi RH) = h (T_{s,i}(R)-T_{f,i})
#
# where h is a heat transfer coefficient, R is the outer radius of the pincell,
# and H is the height of the i-th layer. After solving for the solid temperature
# distribution in each layer, we simply average to obtain a single value per layer.
def water_density(T):
"""
Returns water density at a temperature T (K) in units of g/cm3
"""
rho = 0.001 * (0.14395 / math.pow(0.0112, 1.0 + math.pow(1.0 - T / 649.727, 0.05107)))
return rho
def fluid_temperature(q, T_inlet, N):
"""
Returns the fluid temperature for each layer for given solid heat source q,
fluid inlet temperature T_inlet and number of layers N.
"""
fluid_face_temps = np.zeros(N + 1)
fluid_face_temps[0] = T_inlet
for j in range(1, N + 1):
fluid_face_temps[j] = q[j - 1] / mdot / water_cp + fluid_face_temps[j - 1]
fluid_cell_temps = np.zeros(N)
for j in range(N):
fluid_cell_temps[j] = (fluid_face_temps[j] + fluid_face_temps[j + 1]) / 2.0
return fluid_cell_temps
def fluid_density(T, N):
"""
Returns the fluid density for each layer given a fluid temperature T and
number of layers N.
"""
fluid_cell_densities = np.array([water_density(i) for i in T])
return fluid_cell_densities
def solid_temperature(q, T, N, R, Rf, H):
"""
Returns the solid temperature for each layer given a heat source q,
a fluid temperature T, number of layers N, pincell outer radius R,
fuel pellet outer radius Rf, and height H.
"""
solid_cell_temps = np.zeros(N)
for i in range(N):
heat_flux = q[i] / (2.0 * math.pi * R * H)
T_solid_surface = heat_flux / htc + T[i]
volumetric_q = q[i] / (math.pi * Rf * Rf * H)
solid_cell_temps[i] = T_solid_surface + volumetric_q * Rf * Rf / (8 * UO2_k)
return solid_cell_temps

View File

@@ -0,0 +1,125 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="13" name="UO2 (2.4%)" depletable="true">
<density value="10.29769" units="g/cm3"/>
<nuclide name="U234" ao="4.4843e-06"/>
<nuclide name="U235" ao="0.00055815"/>
<nuclide name="U238" ao="0.022408"/>
<nuclide name="O16" ao="0.045829"/>
</material>
<material id="14" name="Zircaloy">
<density value="6.55" units="g/cm3"/>
<nuclide name="Zr90" ao="0.021827"/>
<nuclide name="Zr91" ao="0.00476"/>
<nuclide name="Zr92" ao="0.0072758"/>
<nuclide name="Zr94" ao="0.0073734"/>
<nuclide name="Zr96" ao="0.0011879"/>
</material>
<material id="15" name="Hot borated water">
<density value="0.740582" units="g/cm3"/>
<nuclide name="H1" ao="0.049457"/>
<nuclide name="O16" ao="0.024672"/>
<nuclide name="B10" ao="8.0042e-06"/>
<nuclide name="B11" ao="3.2218e-05"/>
<sab name="c_H_in_H2O"/>
</material>
</materials>
<geometry>
<cell id="13" name="Fuel" material="13" region="-25" universe="0"/>
<cell id="14" name="Cladding" material="14" region="25 -26" universe="0"/>
<cell id="15" name="Water" material="15" region="26 27 -28 29 -30" universe="0"/>
<cell id="16" fill="5" region="31 -32 33 -34 35 -36" universe="6"/>
<lattice id="5">
<pitch>1.26 1.26 19.05</pitch>
<dimension>1 1 20</dimension>
<lower_left>-0.63 -0.63 0</lower_left>
<universes>
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 </universes>
</lattice>
<surface id="25" name="Fuel OR" type="z-cylinder" coeffs="0 0 0.39218"/>
<surface id="26" name="Clad OR" type="z-cylinder" coeffs="0 0 0.4572"/>
<surface id="27" name="left" type="x-plane" boundary="reflective" coeffs="-0.63"/>
<surface id="28" name="right" type="x-plane" boundary="reflective" coeffs="0.63"/>
<surface id="29" name="bottom" type="y-plane" boundary="reflective" coeffs="-0.63"/>
<surface id="30" name="top" type="y-plane" boundary="reflective" coeffs="0.63"/>
<surface id="31" name="minimum x" type="x-plane" boundary="reflective" coeffs="-0.63"/>
<surface id="32" name="maximum x" type="x-plane" boundary="reflective" coeffs="0.63"/>
<surface id="33" name="minimum y" type="y-plane" boundary="reflective" coeffs="-0.63"/>
<surface id="34" name="maximum y" type="y-plane" boundary="reflective" coeffs="0.63"/>
<surface id="35" type="z-plane" boundary="vacuum" coeffs="0"/>
<surface id="36" type="z-plane" boundary="vacuum" coeffs="381.0"/>
</geometry>
<settings>
<run_mode>eigenvalue</run_mode>
<particles>1000</particles>
<batches>500</batches>
<inactive>200</inactive>
<source type="independent" strength="1.0" particle="neutron">
<space type="box">
<parameters>-0.63 -0.63 0.0 0.63 0.63 381.0</parameters>
</space>
<constraints>
<fissionable>true</fissionable>
</constraints>
</source>
<temperature_default>573.0</temperature_default>
<temperature_method>interpolation</temperature_method>
<temperature_multipole>true</temperature_multipole>
<temperature_range>294.0 3000.0</temperature_range>
</settings>
<tallies>
<filter id="1" type="distribcell">
<bins>13</bins>
</filter>
<tally id="1">
<filters>1</filters>
<scores>kappa-fission</scores>
</tally>
</tallies>
<plots>
<plot id="7" color_by="material" type="slice" basis="xy">
<pixels>300 300</pixels>
<origin>0.0 0.0 0.0</origin>
<width>1.26 1.26</width>
</plot>
</plots>
</model>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1,86 @@
import math
import numpy as np
UO2_k = 0.035 # UO2 thermal conductivity (W/cm/K)
water_cp = 4.184 # UO2 specific heat capacity (J/g/K)
htc = 0.5 # fluid-solid heat transfer coefficient (W/cm2/K)
mdot = 300.0 # mass flowrate (g/s)
# Fluid temperature model
# The fluid temperature in layer i is determined from steady-state convection
# from the solid pincell; axial conduction in the solid phase is neglected so that
# the heat deposited into the fluid layer i is the same as the heat deposited
# into the i-th solid layer. An energy balance over layer i gives:
#
# q_i=m * C_p * (T_{f,i+1/2}-T_{f,i-1/2})
#
# where 1/2 indicates temperatures on the faces of the fluid cell, m is the mass
# flowrate, and C_p is the fluid isobaric specific heat capacity. After computing
# the fluid temperatures, the fluid density is then computed as a function of this temperature.
# Solid temperature model
# The solid temperature in layer i is determined from the analytical solution
# to the heat conduction equation with constant thermal conductivity and constant heat source,
#
# -1 / r * d/dr (rk dT_{s,i}/dr )=q_i
#
# where k is the thermal conductivity. We apply boundary conditions of
# dT_{s,i}(0)/dr=0, i.e. symmetry at the pincell centerline, and
#
# q_i / (2\pi RH) = h (T_{s,i}(R)-T_{f,i})
#
# where h is a heat transfer coefficient, R is the outer radius of the pincell,
# and H is the height of the i-th layer. After solving for the solid temperature
# distribution in each layer, we simply average to obtain a single value per layer.
def water_density(T):
"""
Returns water density at a temperature T (K) in units of g/cm3
"""
rho = 0.001 * (0.14395 / math.pow(0.0112, 1.0 + math.pow(1.0 - T / 649.727, 0.05107)))
return rho
def fluid_temperature(q, T_inlet, N):
"""
Returns the fluid temperature for each layer for given solid heat source q,
fluid inlet temperature T_inlet and number of layers N.
"""
fluid_face_temps = np.zeros(N + 1)
fluid_face_temps[0] = T_inlet
for j in range(1, N + 1):
fluid_face_temps[j] = q[j - 1] / mdot / water_cp + fluid_face_temps[j - 1]
fluid_cell_temps = np.zeros(N)
for j in range(N):
fluid_cell_temps[j] = (fluid_face_temps[j] + fluid_face_temps[j + 1]) / 2.0
return fluid_cell_temps
def fluid_density(T, N):
"""
Returns the fluid density for each layer given a fluid temperature T and
number of layers N.
"""
fluid_cell_densities = np.array([water_density(i) for i in T])
return fluid_cell_densities
def solid_temperature(q, T, N, R, Rf, H):
"""
Returns the solid temperature for each layer given a heat source q,
a fluid temperature T, number of layers N, pincell outer radius R,
fuel pellet outer radius Rf, and height H.
"""
solid_cell_temps = np.zeros(N)
for i in range(N):
heat_flux = q[i] / (2.0 * math.pi * R * H)
T_solid_surface = heat_flux / htc + T[i]
volumetric_q = q[i] / (math.pi * Rf * Rf * H)
solid_cell_temps[i] = T_solid_surface + volumetric_q * Rf * Rf / (8 * UO2_k)
return solid_cell_temps

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,202 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "237392ad-3011-416d-9d6f-5f1da349c7ac",
"metadata": {},
"source": [
"# Criticality Searches\n",
"\n",
"Criticality searches, or the adjustment of some free parameter of your problem (e.g. boron concentation, control rod insertion point), is a routine part of neutronics. In this example, we'll perform a critical search based on fuel enrichment. OpenMC performs this criticality search using the methodology from Price and Roskoff (https://linkinghub.elsevier.com/retrieve/pii/S014919702300166X), a GRsecant (generalized regressive secant) method. This method takes into account the statistical uncertainty in $k$ and also dynamically adjusts the number of batches run (using more batches as one gets closer to criticality)."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dccc5eea-6753-4de2-933d-df86cb3ede37",
"metadata": {},
"outputs": [],
"source": [
"import openmc\n",
"\n",
"model = openmc.Model()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3a733c71-dff3-4d7e-b1fd-6ea9ba2ed904",
"metadata": {},
"outputs": [],
"source": [
"uo2 = openmc.Material()\n",
"uo2.add_element('U', 1.0, enrichment=3.5)\n",
"uo2.add_element('O', 2.0)\n",
"uo2.set_density('g/cm3', 10.97)\n",
"\n",
"zirconium = openmc.Material()\n",
"zirconium.add_element('Zr', 1.0)\n",
"zirconium.set_density('g/cm3', 6.55)\n",
"\n",
"water = openmc.model.borated_water(1500, temperature=600, temp_unit='K', pressure=15, press_unit='MPa')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d1500d4e-b872-4b80-9ea4-231a1848e93e",
"metadata": {},
"outputs": [],
"source": [
"box = openmc.model.RectangularPrism(1.2, 1.2, boundary_type='reflective')\n",
"top = openmc.ZPlane(z0=300.0, boundary_type='vacuum')\n",
"bottom = openmc.ZPlane(z0=0.0, boundary_type='vacuum')\n",
"\n",
"fuel_surf = openmc.ZCylinder(r=0.39)\n",
"clad_surf = openmc.ZCylinder(r=0.45)\n",
"\n",
"fuel = openmc.Cell(region=-fuel_surf & -box, fill=uo2)\n",
"clad = openmc.Cell(region=+fuel_surf & -clad_surf & -box, fill=zirconium)\n",
"h2o = openmc.Cell(region=+clad_surf & -box, fill=water)\n",
"\n",
"model.geometry = openmc.Geometry(openmc.Universe(cells=[fuel, clad, h2o]))\n",
"\n",
"model.geometry.root_universe.plot(width=(2, 2))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "61952a0e-4f29-42ec-afdc-689a4f715c36",
"metadata": {},
"outputs": [],
"source": [
"model.settings.particles = 10000\n",
"model.settings.inactive = 10\n",
"model.settings.batches = 50"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0780ae81-3a39-4bc3-9ae5-71895c6f858b",
"metadata": {},
"outputs": [],
"source": [
"def change_enrichment(wo):\n",
" uo2.remove_element('U')\n",
" uo2.add_element('U', 1.0, enrichment=wo)"
]
},
{
"cell_type": "markdown",
"id": "f4d61e7d-c71b-4bff-8b7f-89d9afe680f1",
"metadata": {},
"source": [
"When running a criticality search, we can specify the desired maximum uncertainty in $k$ with `sigma_final` and the tolerance to which we want $k$ to match unity with `k_tol`."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8bbd54dc-8e3c-42e9-be32-6d76be788656",
"metadata": {},
"outputs": [],
"source": [
"result = model.keff_search(change_enrichment, x0=1.0, x1=5.0, output=True, k_tol=1e-3, sigma_final=1e-3)"
]
},
{
"cell_type": "markdown",
"id": "27c3f865-81c5-42b1-8456-406a730d213e",
"metadata": {},
"source": [
"## Geometry\n",
"\n",
"Criticality searches work for any change to a mutable object - in this next example, we'll take a sphere of uranium enclosed in a metal aluminum shell of 1 cm thickness, and determine the critical radius."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a237cca8-aa86-48ab-a400-8de0ed9570fa",
"metadata": {},
"outputs": [],
"source": [
"model = openmc.Model()\n",
"\n",
"fuel = openmc.Material()\n",
"fuel.add_nuclide('U235', 1.0)\n",
"fuel.set_density('g/cm3', 19.1)\n",
"\n",
"al = openmc.Material()\n",
"al.add_element('Al', 1.0)\n",
"al.set_density('g/cm3', 2.7)\n",
"dr = 1.0\n",
"\n",
"in_sphere = openmc.Sphere(r=10.0)\n",
"out_sphere = openmc.Sphere(r=in_sphere.r + dr, boundary_type='vacuum')\n",
"\n",
"fc = openmc.Cell(region=-in_sphere, fill=fuel)\n",
"oc = openmc.Cell(region=+in_sphere & -out_sphere, fill=al)\n",
"\n",
"model.geometry = openmc.Geometry(openmc.Universe(cells=[fc, oc]))"
]
},
{
"cell_type": "markdown",
"id": "689982e2-4d85-4014-9ed2-8960746b5eb9",
"metadata": {},
"source": [
"In order to change the radius of the fuel sphere, we want to modify the `in_sphere.r` parameter. Note that we have to also update the `out_sphere.r` parameter! When we use `r=in_sphere.r + dr`, that only applies a value (not a reference to `in_sphere.r`), so it also needs to be updated by us."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "40c467d1-d431-4edb-8f8b-098bccaa2945",
"metadata": {},
"outputs": [],
"source": [
"def change_r(r):\n",
" in_sphere.r = r\n",
" out_sphere.r = in_sphere.r + dr"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c765ce8c-eac4-4300-b1b3-6a907f7f777b",
"metadata": {},
"outputs": [],
"source": [
"model.settings.particles = 10000\n",
"model.settings.inactive = 10\n",
"model.settings.batches = 50\n",
"\n",
"result = model.keff_search(change_r, x0=1, x1=20, output=True, k_tol=1e-3, sigma_final=1e-3)"
]
}
],
"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
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,49 @@
<?xml version="1.0"?>
<depletion_chain>
<nuclide name="I135" decay_modes="1" reactions="1" half_life="2.36520E+04">
<decay type="beta" target="Xe135" branching_ratio="1.0" />
<reaction type="(n,gamma)" Q="0.0" target="Xe136" /> <!-- Not precisely true, but whatever -->
</nuclide>
<nuclide name="Xe135" decay_modes="1" reactions="1" half_life="3.29040E+04">
<decay type=" beta" target="Cs135" branching_ratio="1.0" />
<reaction type="(n,gamma)" Q="0.0" target="Xe136" />
</nuclide>
<nuclide name="Xe136" decay_modes="0" reactions="0" />
<nuclide name="Cs135" decay_modes="0" reactions="0" />
<nuclide name="Gd157" decay_modes="0" reactions="1" >
<reaction type="(n,gamma)" Q="0.0" target="Nothing" />
</nuclide>
<nuclide name="Gd156" decay_modes="0" reactions="1">
<reaction type="(n,gamma)" Q="0.0" target="Gd157" />
</nuclide>
<nuclide name="U234" decay_modes="0" reactions="1">
<reaction type="fission" Q="191840000."/>
<neutron_fission_yields>
<energies>2.53000e-02</energies>
<fission_yields energy="2.53000e-02">
<products>Gd157 Gd156 I135 Xe135 Xe136 Cs135</products>
<data>1.093250e-04 2.087260e-04 2.780820e-02 6.759540e-03 2.392300e-02 4.356330e-05</data>
</fission_yields>
</neutron_fission_yields>
</nuclide>
<nuclide name="U235" decay_modes="0" reactions="1">
<reaction type="fission" Q="193410000."/>
<neutron_fission_yields>
<energies>2.53000e-02</energies>
<fission_yields energy="2.53000e-02">
<products>Gd157 Gd156 I135 Xe135 Xe136 Cs135</products>
<data>6.142710e-5 1.483250e-04 0.0292737 0.002566345 0.0219242 4.9097e-6</data>
</fission_yields>
</neutron_fission_yields>
</nuclide>
<nuclide name="U238" decay_modes="0" reactions="1">
<reaction type="fission" Q="197790000."/>
<neutron_fission_yields>
<energies>2.53000e-02</energies>
<fission_yields energy="2.53000e-02">
<products>Gd157 Gd156 I135 Xe135 Xe136 Cs135</products>
<data>4.141120e-04 7.605360e-04 0.0135457 0.00026864 0.0024432 3.7100E-07</data>
</fission_yields>
</neutron_fission_yields>
</nuclide>
</depletion_chain>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,49 @@
<?xml version="1.0"?>
<depletion_chain>
<nuclide name="I135" decay_modes="1" reactions="1" half_life="2.36520E+04">
<decay type="beta" target="Xe135" branching_ratio="1.0" />
<reaction type="(n,gamma)" Q="0.0" target="Xe136" /> <!-- Not precisely true, but whatever -->
</nuclide>
<nuclide name="Xe135" decay_modes="1" reactions="1" half_life="3.29040E+04">
<decay type=" beta" target="Cs135" branching_ratio="1.0" />
<reaction type="(n,gamma)" Q="0.0" target="Xe136" />
</nuclide>
<nuclide name="Xe136" decay_modes="0" reactions="0" />
<nuclide name="Cs135" decay_modes="0" reactions="0" />
<nuclide name="Gd157" decay_modes="0" reactions="1" >
<reaction type="(n,gamma)" Q="0.0" target="Nothing" />
</nuclide>
<nuclide name="Gd156" decay_modes="0" reactions="1">
<reaction type="(n,gamma)" Q="0.0" target="Gd157" />
</nuclide>
<nuclide name="U234" decay_modes="0" reactions="1">
<reaction type="fission" Q="191840000."/>
<neutron_fission_yields>
<energies>2.53000e-02</energies>
<fission_yields energy="2.53000e-02">
<products>Gd157 Gd156 I135 Xe135 Xe136 Cs135</products>
<data>1.093250e-04 2.087260e-04 2.780820e-02 6.759540e-03 2.392300e-02 4.356330e-05</data>
</fission_yields>
</neutron_fission_yields>
</nuclide>
<nuclide name="U235" decay_modes="0" reactions="1">
<reaction type="fission" Q="193410000."/>
<neutron_fission_yields>
<energies>2.53000e-02</energies>
<fission_yields energy="2.53000e-02">
<products>Gd157 Gd156 I135 Xe135 Xe136 Cs135</products>
<data>6.142710e-5 1.483250e-04 0.0292737 0.002566345 0.0219242 4.9097e-6</data>
</fission_yields>
</neutron_fission_yields>
</nuclide>
<nuclide name="U238" decay_modes="0" reactions="1">
<reaction type="fission" Q="197790000."/>
<neutron_fission_yields>
<energies>2.53000e-02</energies>
<fission_yields energy="2.53000e-02">
<products>Gd157 Gd156 I135 Xe135 Xe136 Cs135</products>
<data>4.141120e-04 7.605360e-04 0.0135457 0.00026864 0.0024432 3.7100E-07</data>
</fission_yields>
</neutron_fission_yields>
</nuclide>
</depletion_chain>

View File

@@ -0,0 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<geometry>
<cell id="1" material="1" region="-1" universe="1"/>
<cell id="2" material="2" region="1 -2" universe="1"/>
<cell id="3" material="3" region="2" universe="1"/>
<cell id="4" fill="1" region="3 -4 5 -6" universe="2"/>
<surface id="1" type="z-cylinder" coeffs="0.0 0.0 0.42"/>
<surface id="2" type="z-cylinder" coeffs="0.0 0.0 0.45"/>
<surface id="3" name="minimum x" type="x-plane" boundary="reflective" coeffs="-0.62"/>
<surface id="4" name="maximum x" type="x-plane" boundary="reflective" coeffs="0.62"/>
<surface id="5" name="minimum y" type="y-plane" boundary="reflective" coeffs="-0.62"/>
<surface id="6" name="maximum y" type="y-plane" boundary="reflective" coeffs="0.62"/>
</geometry>

View File

@@ -0,0 +1,28 @@
<?xml version='1.0' encoding='utf-8'?>
<materials>
<material id="1" name="uo2" depletable="true" volume="0.5541769440932395">
<density value="10.4" units="g/cc"/>
<nuclide name="U234" ao="0.0003845183882533702"/>
<nuclide name="U235" ao="0.04301995214068153"/>
<nuclide name="U238" ao="0.9563984774270894"/>
<nuclide name="O16" ao="1.999242"/>
<nuclide name="O17" ao="0.000758"/>
<nuclide name="U236" ao="0.00019705204397577384"/>
</material>
<material id="2" name="clad">
<density value="6" units="g/cc"/>
<nuclide name="Zr90" ao="0.5145"/>
<nuclide name="Zr91" ao="0.1122"/>
<nuclide name="Zr92" ao="0.1715"/>
<nuclide name="Zr94" ao="0.1738"/>
<nuclide name="Zr96" ao="0.028"/>
</material>
<material id="3" name="water">
<density value="1.0" units="g/cc"/>
<nuclide name="H1" ao="1.99968852"/>
<nuclide name="H2" ao="0.00031148"/>
<nuclide name="O16" ao="0.999621"/>
<nuclide name="O17" ao="0.000379"/>
<sab name="c_H_in_H2O"/>
</material>
</materials>

View File

@@ -0,0 +1,49 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="1" name="uo2" depletable="true" volume="0.5541769440932395">
<density value="10.4" units="g/cc"/>
<nuclide name="U234" ao="0.0003845183882533702"/>
<nuclide name="U235" ao="0.04301995214068153"/>
<nuclide name="U238" ao="0.9563984774270894"/>
<nuclide name="U236" ao="0.00019705204397577384"/>
<nuclide name="O16" ao="1.999242"/>
<nuclide name="O17" ao="0.000758"/>
</material>
<material id="2" name="clad">
<density value="6" units="g/cc"/>
<nuclide name="Zr90" ao="0.5145"/>
<nuclide name="Zr91" ao="0.1122"/>
<nuclide name="Zr92" ao="0.1715"/>
<nuclide name="Zr94" ao="0.1738"/>
<nuclide name="Zr96" ao="0.028"/>
</material>
<material id="3" name="water">
<density value="1.0" units="g/cc"/>
<nuclide name="O16" ao="0.999621"/>
<nuclide name="O17" ao="0.000379"/>
<nuclide name="H1" ao="1.99968852"/>
<nuclide name="H2" ao="0.00031148"/>
<sab name="c_H_in_H2O"/>
</material>
</materials>
<geometry>
<cell id="1" material="1" region="-1" universe="1"/>
<cell id="2" material="2" region="1 -2" universe="1"/>
<cell id="3" material="3" region="2" universe="1"/>
<cell id="4" fill="1" region="3 -4 5 -6" universe="2"/>
<surface id="1" type="z-cylinder" coeffs="0.0 0.0 0.42"/>
<surface id="2" type="z-cylinder" coeffs="0.0 0.0 0.45"/>
<surface id="3" name="minimum x" type="x-plane" boundary="reflective" coeffs="-0.62"/>
<surface id="4" name="maximum x" type="x-plane" boundary="reflective" coeffs="0.62"/>
<surface id="5" name="minimum y" type="y-plane" boundary="reflective" coeffs="-0.62"/>
<surface id="6" name="maximum y" type="y-plane" boundary="reflective" coeffs="0.62"/>
</geometry>
<settings>
<run_mode>eigenvalue</run_mode>
<particles>1000</particles>
<batches>50</batches>
<inactive>10</inactive>
<verbosity>4</verbosity>
</settings>
</model>

View File

@@ -0,0 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<settings>
<run_mode>eigenvalue</run_mode>
<particles>1000</particles>
<batches>50</batches>
<inactive>10</inactive>
<verbosity>4</verbosity>
</settings>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,71 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="1" name="steel" depletable="true" volume="6000.0">
<density value="8.0" units="g/cm3"/>
<nuclide name="Fe54" wo="3.9462451976720923"/>
<nuclide name="Fe56" wo="64.23916861691416"/>
<nuclide name="Fe57" wo="1.510097660958571"/>
<nuclide name="Fe58" wo="0.20448852445518514"/>
<nuclide name="Ni58" wo="6.719770529658989"/>
<nuclide name="Ni60" wo="2.677596289922956"/>
<nuclide name="Ni61" wo="0.11833590852967102"/>
<nuclide name="Ni62" wo="0.383482230348717"/>
<nuclide name="Ni64" wo="0.10081504153966699"/>
<nuclide name="Cr50" wo="0.626052993407747"/>
<nuclide name="Cr52" wo="12.554904352701884"/>
<nuclide name="Cr53" wo="1.4510380228012776"/>
<nuclide name="Cr54" wo="0.3680046310890921"/>
<nuclide name="Mn55" wo="2.0"/>
<nuclide name="Mo92" wo="0.4209567414118365"/>
<nuclide name="Mo94" wo="0.2697395514189008"/>
<nuclide name="Mo95" wo="0.4710139316709145"/>
<nuclide name="Mo96" wo="0.49996009054081797"/>
<nuclide name="Mo97" wo="0.2903278652259131"/>
<nuclide name="Mo98" wo="0.743621170690422"/>
<nuclide name="Mo100" wo="0.3043806490411952"/>
<nuclide name="Co59" wo="0.1"/>
</material>
</materials>
<geometry>
<cell id="1" material="1" region="-2 1 -4 3 -6 5" volume="6000.0" universe="1"/>
<cell id="2" material="void" region="-7" volume="14.137166941154067" universe="1"/>
<cell id="3" material="void" region="(2 | -1 | 4 | -3 | 6 | -5) 7 -8" universe="1"/>
<surface id="1" type="x-plane" coeffs="-10"/>
<surface id="2" type="x-plane" coeffs="10"/>
<surface id="3" type="y-plane" coeffs="-10"/>
<surface id="4" type="y-plane" coeffs="10"/>
<surface id="5" type="z-plane" coeffs="1"/>
<surface id="6" type="z-plane" coeffs="16"/>
<surface id="7" type="sphere" coeffs="0.0 0.0 24 1.5"/>
<surface id="8" type="sphere" boundary="vacuum" coeffs="0.0 0.0 0.0 32"/>
</geometry>
<settings>
<run_mode>fixed source</run_mode>
<particles>10000</particles>
<batches>10</batches>
<source type="independent" strength="1.0" particle="neutron">
<angle type="monodirectional" reference_uvw="0.0 0.0 1.0"/>
<energy type="discrete">
<parameters>14000000.0 1.0</parameters>
</energy>
</source>
<photon_transport>true</photon_transport>
<use_decay_photons>true</use_decay_photons>
</settings>
<tallies>
<filter id="3" type="cell">
<bins>2</bins>
</filter>
<filter id="4" type="particle">
<bins>photon</bins>
</filter>
<filter id="8" type="parentnuclide">
<bins>Co60 Zr95 Fe53 Mn54 Cr55 Co62 Nb92 Co60_m1 V54 Co64 Nb98 Zr97 Ti51 Fe61 Mn56 Mo91 Nb100 Mo93_m1 Nb96 Mn52 Ni65 Fe59 V52 Ni57 Mn58 V53 Ni63 Mo93 Fe55 Mo99 Co58 Mn57 Mn53 Co61 Nb94 Cr49 Nb95 Ni59 Cr51 Zr89 Mo101 Zr93 V50 Nb97</bins>
</filter>
<tally id="3">
<filters>3 4 8</filters>
<scores>flux</scores>
</tally>
</tallies>
</model>

View File

@@ -0,0 +1,76 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="1" name="steel" depletable="true" volume="6000.0">
<density value="8.0" units="g/cm3"/>
<nuclide name="Fe54" wo="3.9462451976720923"/>
<nuclide name="Fe56" wo="64.23916861691416"/>
<nuclide name="Fe57" wo="1.510097660958571"/>
<nuclide name="Fe58" wo="0.20448852445518514"/>
<nuclide name="Ni58" wo="6.719770529658989"/>
<nuclide name="Ni60" wo="2.677596289922956"/>
<nuclide name="Ni61" wo="0.11833590852967102"/>
<nuclide name="Ni62" wo="0.383482230348717"/>
<nuclide name="Ni64" wo="0.10081504153966699"/>
<nuclide name="Cr50" wo="0.626052993407747"/>
<nuclide name="Cr52" wo="12.554904352701884"/>
<nuclide name="Cr53" wo="1.4510380228012776"/>
<nuclide name="Cr54" wo="0.3680046310890921"/>
<nuclide name="Mn55" wo="2.0"/>
<nuclide name="Mo92" wo="0.4209567414118365"/>
<nuclide name="Mo94" wo="0.2697395514189008"/>
<nuclide name="Mo95" wo="0.4710139316709145"/>
<nuclide name="Mo96" wo="0.49996009054081797"/>
<nuclide name="Mo97" wo="0.2903278652259131"/>
<nuclide name="Mo98" wo="0.743621170690422"/>
<nuclide name="Mo100" wo="0.3043806490411952"/>
<nuclide name="Co59" wo="0.1"/>
</material>
</materials>
<geometry>
<cell id="1" material="1" region="-2 1 -4 3 -6 5" volume="6000.0" universe="1"/>
<cell id="2" material="void" region="-7" volume="14.137166941154067" universe="1"/>
<cell id="3" material="void" region="(2 | -1 | 4 | -3 | 6 | -5) 7 -8" universe="1"/>
<surface id="1" type="x-plane" coeffs="-10"/>
<surface id="2" type="x-plane" coeffs="10"/>
<surface id="3" type="y-plane" coeffs="-10"/>
<surface id="4" type="y-plane" coeffs="10"/>
<surface id="5" type="z-plane" coeffs="1"/>
<surface id="6" type="z-plane" coeffs="16"/>
<surface id="7" type="sphere" coeffs="0.0 0.0 24 1.5"/>
<surface id="8" type="sphere" boundary="vacuum" coeffs="0.0 0.0 0.0 32"/>
</geometry>
<settings>
<run_mode>fixed source</run_mode>
<particles>10000</particles>
<batches>10</batches>
<source type="independent" strength="1.0" particle="neutron">
<angle type="monodirectional" reference_uvw="0.0 0.0 1.0"/>
<energy type="discrete">
<parameters>14000000.0 1.0</parameters>
</energy>
</source>
</settings>
<tallies>
<mesh id="1">
<dimension>5 5 5</dimension>
<lower_left>-10.0 -10.0 1.0</lower_left>
<upper_right>10.0 10.0 16.0</upper_right>
</mesh>
<filter id="6" type="meshmaterial" mesh="1">
<bins>0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60 1 61 1 62 1 63 1 64 1 65 1 66 1 67 1 68 1 69 1 70 1 71 1 72 1 73 1 74 1 75 1 76 1 77 1 78 1 79 1 80 1 81 1 82 1 83 1 84 1 85 1 86 1 87 1 88 1 89 1 90 1 91 1 92 1 93 1 94 1 95 1 96 1 97 1 98 1 99 1 100 1 101 1 102 1 103 1 104 1 105 1 106 1 107 1 108 1 109 1 110 1 111 1 112 1 113 1 114 1 115 1 116 1 117 1 118 1 119 1 120 1 121 1 122 1 123 1 124 1</bins>
</filter>
<filter id="7" type="energy">
<bins>0.0 100000000.0</bins>
</filter>
<tally id="5" name="MicroXS flux">
<filters>6 7</filters>
<scores>flux</scores>
</tally>
<tally id="6" name="MicroXS RR" multiply_density="false">
<filters>6 7</filters>
<nuclides>H1 H2 He4 Ca44 Ca46 Ti46 Ti47 Ti48 Ti49 Ti50 V50 V51 Cr50 Cr52 Cr53 Cr54 Mn55 Fe54 Fe56 Fe57 Fe58 Co58 Co59 Ni58 Ni59 Ni60 Ni61 Ni62 Ni64 Cu63 Cu65 Sr88 Sr89 Sr90 Y89 Y91 Zr90 Zr91 Zr92 Zr93 Zr94 Zr95 Zr96 Nb93 Nb94 Nb95 Mo92 Mo94 Mo95 Mo96 Mo97 Mo98 Mo99 Mo100 Tc99 Ru98 Ru99 Ru100 Ru101</nuclides>
<scores>(n,gamma) (n,2n) (n,3n) (n,p) (n,a) (n,4n)</scores>
</tally>
</tallies>
</model>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,71 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="4" name="steel" depletable="true" volume="6000.0">
<density value="8.0" units="g/cm3"/>
<nuclide name="Fe54" wo="3.9462451976720923"/>
<nuclide name="Fe56" wo="64.23916861691416"/>
<nuclide name="Fe57" wo="1.510097660958571"/>
<nuclide name="Fe58" wo="0.20448852445518514"/>
<nuclide name="Ni58" wo="6.719770529658989"/>
<nuclide name="Ni60" wo="2.677596289922956"/>
<nuclide name="Ni61" wo="0.11833590852967102"/>
<nuclide name="Ni62" wo="0.383482230348717"/>
<nuclide name="Ni64" wo="0.10081504153966699"/>
<nuclide name="Cr50" wo="0.626052993407747"/>
<nuclide name="Cr52" wo="12.554904352701884"/>
<nuclide name="Cr53" wo="1.4510380228012776"/>
<nuclide name="Cr54" wo="0.3680046310890921"/>
<nuclide name="Mn55" wo="2.0"/>
<nuclide name="Mo92" wo="0.4209567414118365"/>
<nuclide name="Mo94" wo="0.2697395514189008"/>
<nuclide name="Mo95" wo="0.4710139316709145"/>
<nuclide name="Mo96" wo="0.49996009054081797"/>
<nuclide name="Mo97" wo="0.2903278652259131"/>
<nuclide name="Mo98" wo="0.743621170690422"/>
<nuclide name="Mo100" wo="0.3043806490411952"/>
<nuclide name="Co59" wo="0.1"/>
</material>
</materials>
<geometry>
<cell id="4" material="4" region="-2 1 -4 3 -6 5" volume="6000.0" universe="3"/>
<cell id="5" material="void" region="-7" volume="14.137166941154067" universe="3"/>
<cell id="6" material="void" region="(2 | -1 | 4 | -3 | 6 | -5) 7 -8" universe="3"/>
<surface id="1" type="x-plane" coeffs="-10"/>
<surface id="2" type="x-plane" coeffs="10"/>
<surface id="3" type="y-plane" coeffs="-10"/>
<surface id="4" type="y-plane" coeffs="10"/>
<surface id="5" type="z-plane" coeffs="1"/>
<surface id="6" type="z-plane" coeffs="16"/>
<surface id="7" type="sphere" coeffs="0.0 0.0 24 1.5"/>
<surface id="8" type="sphere" boundary="vacuum" coeffs="0.0 0.0 0.0 32"/>
</geometry>
<settings>
<run_mode>fixed source</run_mode>
<particles>10000</particles>
<batches>50</batches>
<source type="independent" strength="1.0" particle="neutron">
<space type="box">
<parameters>-10.0 -10.0 1.0 10.0 10.0 16.0</parameters>
</space>
<energy type="discrete">
<parameters>442.4431 499.0056 515.0037 556.4368 557.6039 574.4329 612.3224 619.1666 619.9594 640.4896 678.8113 707.9362 741.741 4469.38 4475.36 4907.72 4915.06 5367.86 5376.79 5388.95 5389.81 5847.93 5858.68 5906.35 5907.4 6349.85 6362.71 6448.81 6450.12 7015.36 7016.95 14412.9 14918.5 16578.9 18214.1 18334.4 40583.23 122060.7 136473.6 140511.0 142651.0 181068.0 192343.0 204116.1 235690.0 320082.4 334800.0 339690.0 347140.0 352330.0 366421.0 382000.0 510998.9 528788.0 561880.0 570090.0 692410.0 706540.0 724192.0 739500.0 756725.0 765803.0 777921.0 810759.2 822972.0 826100.0 834848.0 863951.0 908960.0 960754.0 1099245.0 1173228.0 1204670.0 1291590.0 1332492.0 1377630.0 1481700.0 1674725.0 1713000.0 2158570.0 7979146.705527288 2142230.5621000454 729838.7743939675 1363760.4840081888 6886209.033521524 276912.81666234863 363180.4339003372 239257.8107956205 7086538.705429442 1304759.8268653243 1431337.9779705026 1842158.7790028113 1580517.5362509862 42547.57250320141 83740.70636067352 130390174.83230357 256306637.75700724 35596634.29201586 69885591.75858591 15095523.578504678 29792373.12525606 107429112.1198096 210648452.84889454 4093318.1343251397 8062988.940674618 121747187.9291973 238543453.94918555 12801693.356943814 25194726.511494175 14665669.50017218 28829395.520769518 2115433.2570350785 8203.75811414574 7081.158607103747 15729.290230216804 29909.741412515337 5355.987926301548 19768677.598493747 2466465.8499055286 455924.7300439769 65002.004275371844 30914.16994328428 196280.56192955418 1936.5324963194057 2745.0417831333643 192297117.37185296 17206.412896421956 854.4872326451737 769.5233871517222 692.8274859285192 6059.424128603823 1147.0941930947972 453173394.91559863 290.01317112462294 901.4320625279131 3648.891425890201 34410.43180111646 1154.712476547532 428095.5025574893 61704.930026515525 525860.2536497915 5998008.753119064 21658.430439306947 1512240886.627592 678.7542302916708 779.7836989804118 477887166.20718306 10434462.117730385 29931.17287973451 481.2984542068211 3600601.217214224 10244921.360946596 114.94321697862149 2753026.063427513 10258526.534431439 352.99674496003234 3759.9198551440572 7863652.610463478 225.06811618458744 123.12374194427557</parameters>
</energy>
</source>
<photon_transport>true</photon_transport>
<use_decay_photons>true</use_decay_photons>
</settings>
<tallies>
<filter id="9" type="cell">
<bins>5</bins>
</filter>
<filter id="10" type="particle">
<bins>photon</bins>
</filter>
<tally id="6">
<filters>9 10</filters>
<nuclides>total</nuclides>
<scores>flux</scores>
</tally>
</tallies>
</model>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,78 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="4" name="steel" depletable="true" volume="6000.0">
<density value="8.0" units="g/cm3"/>
<nuclide name="Fe54" wo="3.9462451976720923"/>
<nuclide name="Fe56" wo="64.23916861691416"/>
<nuclide name="Fe57" wo="1.510097660958571"/>
<nuclide name="Fe58" wo="0.20448852445518514"/>
<nuclide name="Ni58" wo="6.719770529658989"/>
<nuclide name="Ni60" wo="2.677596289922956"/>
<nuclide name="Ni61" wo="0.11833590852967102"/>
<nuclide name="Ni62" wo="0.383482230348717"/>
<nuclide name="Ni64" wo="0.10081504153966699"/>
<nuclide name="Cr50" wo="0.626052993407747"/>
<nuclide name="Cr52" wo="12.554904352701884"/>
<nuclide name="Cr53" wo="1.4510380228012776"/>
<nuclide name="Cr54" wo="0.3680046310890921"/>
<nuclide name="Mn55" wo="2.0"/>
<nuclide name="Mo92" wo="0.4209567414118365"/>
<nuclide name="Mo94" wo="0.2697395514189008"/>
<nuclide name="Mo95" wo="0.4710139316709145"/>
<nuclide name="Mo96" wo="0.49996009054081797"/>
<nuclide name="Mo97" wo="0.2903278652259131"/>
<nuclide name="Mo98" wo="0.743621170690422"/>
<nuclide name="Mo100" wo="0.3043806490411952"/>
<nuclide name="Co59" wo="0.1"/>
</material>
</materials>
<geometry>
<cell id="4" material="4" region="-2 1 -4 3 -6 5" volume="6000.0" universe="3"/>
<cell id="5" material="void" region="-7" volume="14.137166941154067" universe="3"/>
<cell id="6" material="void" region="(2 | -1 | 4 | -3 | 6 | -5) 7 -8" universe="3"/>
<surface id="1" type="x-plane" coeffs="-10"/>
<surface id="2" type="x-plane" coeffs="10"/>
<surface id="3" type="y-plane" coeffs="-10"/>
<surface id="4" type="y-plane" coeffs="10"/>
<surface id="5" type="z-plane" coeffs="1"/>
<surface id="6" type="z-plane" coeffs="16"/>
<surface id="7" type="sphere" coeffs="0.0 0.0 24 1.5"/>
<surface id="8" type="sphere" boundary="vacuum" coeffs="0.0 0.0 0.0 32"/>
</geometry>
<settings>
<run_mode>fixed source</run_mode>
<particles>1000</particles>
<batches>50</batches>
<source type="independent" strength="1.0" particle="photon">
<space type="box">
<parameters>-10.0 -10.0 1.0 10.0 10.0 16.0</parameters>
</space>
<energy type="discrete">
<parameters>442.4431 499.0056 515.0037 556.4368 557.6039 574.4329 612.3224 619.1666 619.9594 640.4896 678.8113 707.9362 741.741 4469.38 4475.36 4907.72 4915.06 5367.86 5376.79 5388.95 5389.81 5847.93 5858.68 5906.35 5907.4 6349.85 6362.71 6448.81 6450.12 7015.36 7016.95 14412.9 14918.5 16578.9 18214.1 18334.4 40583.23 122060.7 136473.6 140511.0 142651.0 181068.0 192343.0 204116.1 235690.0 320082.4 334800.0 339690.0 347140.0 352330.0 366421.0 382000.0 510998.9 528788.0 561880.0 570090.0 692410.0 706540.0 724192.0 739500.0 756725.0 765803.0 777921.0 810759.2 822972.0 826100.0 834848.0 863951.0 908960.0 960754.0 1099245.0 1173228.0 1204670.0 1291590.0 1332492.0 1377630.0 1481700.0 1674725.0 1713000.0 2158570.0 7979146.705527288 2142230.5621000454 729838.7743939675 1363760.4840081888 6886209.033521524 276912.81666234863 363180.4339003372 239257.8107956205 7086538.705429442 1304759.8268653243 1431337.9779705026 1842158.7790028113 1580517.5362509862 42547.57250320141 83740.70636067352 130390174.83230357 256306637.75700724 35596634.29201586 69885591.75858591 15095523.578504678 29792373.12525606 107429112.1198096 210648452.84889454 4093318.1343251397 8062988.940674618 121747187.9291973 238543453.94918555 12801693.356943814 25194726.511494175 14665669.50017218 28829395.520769518 2115433.2570350785 8203.75811414574 7081.158607103747 15729.290230216804 29909.741412515337 5355.987926301548 19768677.598493747 2466465.8499055286 455924.7300439769 65002.004275371844 30914.16994328428 196280.56192955418 1936.5324963194057 2745.0417831333643 192297117.37185296 17206.412896421956 854.4872326451737 769.5233871517222 692.8274859285192 6059.424128603823 1147.0941930947972 453173394.91559863 290.01317112462294 901.4320625279131 3648.891425890201 34410.43180111646 1154.712476547532 428095.5025574893 61704.930026515525 525860.2536497915 5998008.753119064 21658.430439306947 1512240886.627592 678.7542302916708 779.7836989804118 477887166.20718306 10434462.117730385 29931.17287973451 481.2984542068211 3600601.217214224 10244921.360946596 114.94321697862149 2753026.063427513 10258526.534431439 352.99674496003234 3759.9198551440572 7863652.610463478 225.06811618458744 123.12374194427557</parameters>
</energy>
</source>
</settings>
<tallies>
<mesh id="2">
<dimension>5 5 5</dimension>
<lower_left>-10.0 -10.0 1.0</lower_left>
<upper_right>10.0 10.0 16.0</upper_right>
</mesh>
<filter id="12" type="meshmaterial" mesh="2">
<bins>0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13 4 14 4 15 4 16 4 17 4 18 4 19 4 20 4 21 4 22 4 23 4 24 4 25 4 26 4 27 4 28 4 29 4 30 4 31 4 32 4 33 4 34 4 35 4 36 4 37 4 38 4 39 4 40 4 41 4 42 4 43 4 44 4 45 4 46 4 47 4 48 4 49 4 50 4 51 4 52 4 53 4 54 4 55 4 56 4 57 4 58 4 59 4 60 4 61 4 62 4 63 4 64 4 65 4 66 4 67 4 68 4 69 4 70 4 71 4 72 4 73 4 74 4 75 4 76 4 77 4 78 4 79 4 80 4 81 4 82 4 83 4 84 4 85 4 86 4 87 4 88 4 89 4 90 4 91 4 92 4 93 4 94 4 95 4 96 4 97 4 98 4 99 4 100 4 101 4 102 4 103 4 104 4 105 4 106 4 107 4 108 4 109 4 110 4 111 4 112 4 113 4 114 4 115 4 116 4 117 4 118 4 119 4 120 4 121 4 122 4 123 4 124 4</bins>
</filter>
<filter id="13" type="energy">
<bins>0.0 100000000.0</bins>
</filter>
<tally id="8" name="MicroXS flux">
<filters>12 13</filters>
<scores>flux</scores>
</tally>
<tally id="9" name="MicroXS RR" multiply_density="false">
<filters>12 13</filters>
<nuclides>H1 H2 He4 Ca44 Ca46 Ti46 Ti47 Ti48 Ti49 Ti50 V50 V51 Cr50 Cr52 Cr53 Cr54 Mn55 Fe54 Fe56 Fe57 Fe58 Co58 Co59 Ni58 Ni59 Ni60 Ni61 Ni62 Ni64 Cu63 Cu65 Sr88 Sr89 Sr90 Y89 Y91 Zr90 Zr91 Zr92 Zr93 Zr94 Zr95 Zr96 Nb93 Nb94 Nb95 Mo92 Mo94 Mo95 Mo96 Mo97 Mo98 Mo99 Mo100 Tc99 Ru98 Ru99 Ru100 Ru101</nuclides>
<scores>(n,gamma) (n,2n) (n,3n) (n,p) (n,a) (n,4n)</scores>
</tally>
</tallies>
</model>

View File

@@ -0,0 +1,193 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="4" name="steel" depletable="true" volume="6000.0">
<density value="8.0" units="g/cm3"/>
<nuclide name="Fe54" wo="3.9462451976720923"/>
<nuclide name="Fe56" wo="64.23916861691416"/>
<nuclide name="Fe57" wo="1.510097660958571"/>
<nuclide name="Fe58" wo="0.20448852445518514"/>
<nuclide name="Ni58" wo="6.719770529658989"/>
<nuclide name="Ni60" wo="2.677596289922956"/>
<nuclide name="Ni61" wo="0.11833590852967102"/>
<nuclide name="Ni62" wo="0.383482230348717"/>
<nuclide name="Ni64" wo="0.10081504153966699"/>
<nuclide name="Cr50" wo="0.626052993407747"/>
<nuclide name="Cr52" wo="12.554904352701884"/>
<nuclide name="Cr53" wo="1.4510380228012776"/>
<nuclide name="Cr54" wo="0.3680046310890921"/>
<nuclide name="Mn55" wo="2.0"/>
<nuclide name="Mo92" wo="0.4209567414118365"/>
<nuclide name="Mo94" wo="0.2697395514189008"/>
<nuclide name="Mo95" wo="0.4710139316709145"/>
<nuclide name="Mo96" wo="0.49996009054081797"/>
<nuclide name="Mo97" wo="0.2903278652259131"/>
<nuclide name="Mo98" wo="0.743621170690422"/>
<nuclide name="Mo100" wo="0.3043806490411952"/>
<nuclide name="Co59" wo="0.1"/>
</material>
</materials>
<geometry>
<cell id="4" material="4" region="-2 1 -4 3 -6 5" volume="6000.0" universe="3"/>
<cell id="5" material="void" region="-7" volume="14.137166941154067" universe="3"/>
<cell id="6" material="void" region="(2 | -1 | 4 | -3 | 6 | -5) 7 -8" universe="3"/>
<surface id="1" type="x-plane" coeffs="-10"/>
<surface id="2" type="x-plane" coeffs="10"/>
<surface id="3" type="y-plane" coeffs="-10"/>
<surface id="4" type="y-plane" coeffs="10"/>
<surface id="5" type="z-plane" coeffs="1"/>
<surface id="6" type="z-plane" coeffs="16"/>
<surface id="7" type="sphere" coeffs="0.0 0.0 24 1.5"/>
<surface id="8" type="sphere" boundary="vacuum" coeffs="0.0 0.0 0.0 32"/>
</geometry>
<settings>
<run_mode>fixed source</run_mode>
<particles>1000</particles>
<batches>50</batches>
<source type="mesh" strength="0.0" mesh="2">
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
</source>
<mesh id="2">
<dimension>5 5 5</dimension>
<lower_left>-10.0 -10.0 1.0</lower_left>
<upper_right>10.0 10.0 16.0</upper_right>
</mesh>
</settings>
<tallies>
<filter id="9" type="cell">
<bins>5</bins>
</filter>
<filter id="10" type="particle">
<bins>photon</bins>
</filter>
<tally id="6">
<filters>9 10</filters>
<nuclides>total</nuclides>
<scores>flux</scores>
</tally>
</tallies>
</model>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,78 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="4" name="steel" depletable="true" volume="6000.0">
<density value="8.0" units="g/cm3"/>
<nuclide name="Fe54" wo="3.9462451976720923"/>
<nuclide name="Fe56" wo="64.23916861691416"/>
<nuclide name="Fe57" wo="1.510097660958571"/>
<nuclide name="Fe58" wo="0.20448852445518514"/>
<nuclide name="Ni58" wo="6.719770529658989"/>
<nuclide name="Ni60" wo="2.677596289922956"/>
<nuclide name="Ni61" wo="0.11833590852967102"/>
<nuclide name="Ni62" wo="0.383482230348717"/>
<nuclide name="Ni64" wo="0.10081504153966699"/>
<nuclide name="Cr50" wo="0.626052993407747"/>
<nuclide name="Cr52" wo="12.554904352701884"/>
<nuclide name="Cr53" wo="1.4510380228012776"/>
<nuclide name="Cr54" wo="0.3680046310890921"/>
<nuclide name="Mn55" wo="2.0"/>
<nuclide name="Mo92" wo="0.4209567414118365"/>
<nuclide name="Mo94" wo="0.2697395514189008"/>
<nuclide name="Mo95" wo="0.4710139316709145"/>
<nuclide name="Mo96" wo="0.49996009054081797"/>
<nuclide name="Mo97" wo="0.2903278652259131"/>
<nuclide name="Mo98" wo="0.743621170690422"/>
<nuclide name="Mo100" wo="0.3043806490411952"/>
<nuclide name="Co59" wo="0.1"/>
</material>
</materials>
<geometry>
<cell id="4" material="4" region="-2 1 -4 3 -6 5" volume="6000.0" universe="3"/>
<cell id="5" material="void" region="-7" volume="14.137166941154067" universe="3"/>
<cell id="6" material="void" region="(2 | -1 | 4 | -3 | 6 | -5) 7 -8" universe="3"/>
<surface id="1" type="x-plane" coeffs="-10"/>
<surface id="2" type="x-plane" coeffs="10"/>
<surface id="3" type="y-plane" coeffs="-10"/>
<surface id="4" type="y-plane" coeffs="10"/>
<surface id="5" type="z-plane" coeffs="1"/>
<surface id="6" type="z-plane" coeffs="16"/>
<surface id="7" type="sphere" coeffs="0.0 0.0 24 1.5"/>
<surface id="8" type="sphere" boundary="vacuum" coeffs="0.0 0.0 0.0 32"/>
</geometry>
<settings>
<run_mode>fixed source</run_mode>
<particles>1000</particles>
<batches>50</batches>
<source type="independent" strength="1.0" particle="photon">
<space type="box">
<parameters>-10.0 -10.0 1.0 10.0 10.0 16.0</parameters>
</space>
<energy type="discrete">
<parameters>442.4431 499.0056 515.0037 556.4368 557.6039 574.4329 612.3224 619.1666 619.9594 640.4896 678.8113 707.9362 741.741 4469.38 4475.36 4907.72 4915.06 5367.86 5376.79 5388.95 5389.81 5847.93 5858.68 5906.35 5907.4 6349.85 6362.71 6448.81 6450.12 7015.36 7016.95 14412.9 14918.5 16578.9 18214.1 18334.4 40583.23 122060.7 136473.6 140511.0 142651.0 181068.0 192343.0 204116.1 235690.0 320082.4 334800.0 339690.0 347140.0 352330.0 366421.0 382000.0 510998.9 528788.0 561880.0 570090.0 692410.0 706540.0 724192.0 739500.0 756725.0 765803.0 777921.0 810759.2 822972.0 826100.0 834848.0 863951.0 908960.0 960754.0 1099245.0 1173228.0 1204670.0 1291590.0 1332492.0 1377630.0 1481700.0 1674725.0 1713000.0 2158570.0 7979146.705527288 2142230.5621000454 729838.7743939675 1363760.4840081888 6886209.033521524 276912.81666234863 363180.4339003372 239257.8107956205 7086538.705429442 1304759.8268653243 1431337.9779705026 1842158.7790028113 1580517.5362509862 42547.57250320141 83740.70636067352 130390174.83230357 256306637.75700724 35596634.29201586 69885591.75858591 15095523.578504678 29792373.12525606 107429112.1198096 210648452.84889454 4093318.1343251397 8062988.940674618 121747187.9291973 238543453.94918555 12801693.356943814 25194726.511494175 14665669.50017218 28829395.520769518 2115433.2570350785 8203.75811414574 7081.158607103747 15729.290230216804 29909.741412515337 5355.987926301548 19768677.598493747 2466465.8499055286 455924.7300439769 65002.004275371844 30914.16994328428 196280.56192955418 1936.5324963194057 2745.0417831333643 192297117.37185296 17206.412896421956 854.4872326451737 769.5233871517222 692.8274859285192 6059.424128603823 1147.0941930947972 453173394.91559863 290.01317112462294 901.4320625279131 3648.891425890201 34410.43180111646 1154.712476547532 428095.5025574893 61704.930026515525 525860.2536497915 5998008.753119064 21658.430439306947 1512240886.627592 678.7542302916708 779.7836989804118 477887166.20718306 10434462.117730385 29931.17287973451 481.2984542068211 3600601.217214224 10244921.360946596 114.94321697862149 2753026.063427513 10258526.534431439 352.99674496003234 3759.9198551440572 7863652.610463478 225.06811618458744 123.12374194427557</parameters>
</energy>
</source>
</settings>
<tallies>
<mesh id="2">
<dimension>5 5 5</dimension>
<lower_left>-10.0 -10.0 1.0</lower_left>
<upper_right>10.0 10.0 16.0</upper_right>
</mesh>
<filter id="15" type="meshmaterial" mesh="2">
<bins>0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13 4 14 4 15 4 16 4 17 4 18 4 19 4 20 4 21 4 22 4 23 4 24 4 25 4 26 4 27 4 28 4 29 4 30 4 31 4 32 4 33 4 34 4 35 4 36 4 37 4 38 4 39 4 40 4 41 4 42 4 43 4 44 4 45 4 46 4 47 4 48 4 49 4 50 4 51 4 52 4 53 4 54 4 55 4 56 4 57 4 58 4 59 4 60 4 61 4 62 4 63 4 64 4 65 4 66 4 67 4 68 4 69 4 70 4 71 4 72 4 73 4 74 4 75 4 76 4 77 4 78 4 79 4 80 4 81 4 82 4 83 4 84 4 85 4 86 4 87 4 88 4 89 4 90 4 91 4 92 4 93 4 94 4 95 4 96 4 97 4 98 4 99 4 100 4 101 4 102 4 103 4 104 4 105 4 106 4 107 4 108 4 109 4 110 4 111 4 112 4 113 4 114 4 115 4 116 4 117 4 118 4 119 4 120 4 121 4 122 4 123 4 124 4</bins>
</filter>
<filter id="16" type="energy">
<bins>0.0 100000000.0</bins>
</filter>
<tally id="11" name="MicroXS flux">
<filters>15 16</filters>
<scores>flux</scores>
</tally>
<tally id="12" name="MicroXS RR" multiply_density="false">
<filters>15 16</filters>
<nuclides>H1 H2 He4 Ca44 Ca46 Ti46 Ti47 Ti48 Ti49 Ti50 V50 V51 Cr50 Cr52 Cr53 Cr54 Mn55 Fe54 Fe56 Fe57 Fe58 Co58 Co59 Ni58 Ni59 Ni60 Ni61 Ni62 Ni64 Cu63 Cu65 Sr88 Sr89 Sr90 Y89 Y91 Zr90 Zr91 Zr92 Zr93 Zr94 Zr95 Zr96 Nb93 Nb94 Nb95 Mo92 Mo94 Mo95 Mo96 Mo97 Mo98 Mo99 Mo100 Tc99 Ru98 Ru99 Ru100 Ru101</nuclides>
<scores>(n,gamma) (n,2n) (n,3n) (n,p) (n,a) (n,4n)</scores>
</tally>
</tallies>
</model>

View File

@@ -0,0 +1,193 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="4" name="steel" depletable="true" volume="6000.0">
<density value="8.0" units="g/cm3"/>
<nuclide name="Fe54" wo="3.9462451976720923"/>
<nuclide name="Fe56" wo="64.23916861691416"/>
<nuclide name="Fe57" wo="1.510097660958571"/>
<nuclide name="Fe58" wo="0.20448852445518514"/>
<nuclide name="Ni58" wo="6.719770529658989"/>
<nuclide name="Ni60" wo="2.677596289922956"/>
<nuclide name="Ni61" wo="0.11833590852967102"/>
<nuclide name="Ni62" wo="0.383482230348717"/>
<nuclide name="Ni64" wo="0.10081504153966699"/>
<nuclide name="Cr50" wo="0.626052993407747"/>
<nuclide name="Cr52" wo="12.554904352701884"/>
<nuclide name="Cr53" wo="1.4510380228012776"/>
<nuclide name="Cr54" wo="0.3680046310890921"/>
<nuclide name="Mn55" wo="2.0"/>
<nuclide name="Mo92" wo="0.4209567414118365"/>
<nuclide name="Mo94" wo="0.2697395514189008"/>
<nuclide name="Mo95" wo="0.4710139316709145"/>
<nuclide name="Mo96" wo="0.49996009054081797"/>
<nuclide name="Mo97" wo="0.2903278652259131"/>
<nuclide name="Mo98" wo="0.743621170690422"/>
<nuclide name="Mo100" wo="0.3043806490411952"/>
<nuclide name="Co59" wo="0.1"/>
</material>
</materials>
<geometry>
<cell id="4" material="4" region="-2 1 -4 3 -6 5" volume="6000.0" universe="3"/>
<cell id="5" material="void" region="-7" volume="14.137166941154067" universe="3"/>
<cell id="6" material="void" region="(2 | -1 | 4 | -3 | 6 | -5) 7 -8" universe="3"/>
<surface id="1" type="x-plane" coeffs="-10"/>
<surface id="2" type="x-plane" coeffs="10"/>
<surface id="3" type="y-plane" coeffs="-10"/>
<surface id="4" type="y-plane" coeffs="10"/>
<surface id="5" type="z-plane" coeffs="1"/>
<surface id="6" type="z-plane" coeffs="16"/>
<surface id="7" type="sphere" coeffs="0.0 0.0 24 1.5"/>
<surface id="8" type="sphere" boundary="vacuum" coeffs="0.0 0.0 0.0 32"/>
</geometry>
<settings>
<run_mode>fixed source</run_mode>
<particles>1000</particles>
<batches>50</batches>
<source type="mesh" strength="0.0" mesh="2">
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
<source type="independent" strength="0.0" particle="photon"/>
</source>
<mesh id="2">
<dimension>5 5 5</dimension>
<lower_left>-10.0 -10.0 1.0</lower_left>
<upper_right>10.0 10.0 16.0</upper_right>
</mesh>
</settings>
<tallies>
<filter id="9" type="cell">
<bins>5</bins>
</filter>
<filter id="10" type="particle">
<bins>photon</bins>
</filter>
<tally id="6">
<filters>9 10</filters>
<nuclides>total</nuclides>
<scores>flux</scores>
</tally>
</tallies>
</model>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1,105 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="10" name="uo2" depletable="true">
<density value="10.0" units="g/cm3"/>
<nuclide name="U234" ao="0.0002714687807976247"/>
<nuclide name="U235" ao="0.030371951808732825"/>
<nuclide name="U238" ao="0.9692174612830511"/>
<nuclide name="U236" ao="0.00013911812741848606"/>
<nuclide name="O16" ao="2.0"/>
</material>
<material id="11" name="zirconium">
<density value="6.6" units="g/cm3"/>
<nuclide name="Zr90" ao="0.5145"/>
<nuclide name="Zr91" ao="0.1122"/>
<nuclide name="Zr92" ao="0.1715"/>
<nuclide name="Zr94" ao="0.1738"/>
<nuclide name="Zr96" ao="0.028"/>
</material>
<material id="12" name="water">
<density value="0.7" units="g/cm3"/>
<nuclide name="H1" ao="2"/>
<nuclide name="O16" ao="1"/>
<sab name="c_H_in_H2O"/>
</material>
<material id="13" name="pyrex">
<density value="2.26" units="g/cm3"/>
<nuclide name="B10" ao="0.097118"/>
<nuclide name="B11" ao="0.39288199999999995"/>
<nuclide name="O16" ao="4.6982187"/>
<nuclide name="O17" ao="0.0017813"/>
<nuclide name="Al27" ao="0.17"/>
<nuclide name="Si28" ao="1.66013424"/>
<nuclide name="Si29" ao="0.08429688"/>
<nuclide name="Si30" ao="0.05556888"/>
</material>
</materials>
<geometry>
<cell id="7" material="10" region="-8" universe="4"/>
<cell id="8" material="void" region="8 -9" universe="4"/>
<cell id="9" material="11" region="9 -10" universe="4"/>
<cell id="10" material="12" region="10" universe="4"/>
<cell id="14" material="12" region="-13" universe="6"/>
<cell id="15" material="11" region="13 -14" universe="6"/>
<cell id="16" material="12" region="14" universe="6"/>
<cell id="17" material="void" region="-15" universe="7"/>
<cell id="18" material="11" region="15 -16" universe="7"/>
<cell id="19" material="void" region="16 -17" universe="7"/>
<cell id="20" material="13" region="17 -18" universe="7"/>
<cell id="21" material="void" region="18 -19" universe="7"/>
<cell id="22" material="11" region="19 -20" universe="7"/>
<cell id="23" material="12" region="20 -21" universe="7"/>
<cell id="24" material="11" region="21 -22" universe="7"/>
<cell id="25" material="12" region="22" universe="7"/>
<cell id="31" material="12" universe="20"/>
<cell id="37" fill="24" region="31 -32 33 -34" universe="28"/>
<lattice id="24">
<pitch>1.26 1.26</pitch>
<outer>20</outer>
<dimension>17 17</dimension>
<lower_left>-10.71 -10.71</lower_left>
<universes>
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 6 4 4 6 4 4 6 4 4 4 4 4
4 4 4 7 4 4 4 4 4 4 4 4 4 7 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 6 4 4 6 4 4 6 4 4 6 4 4 6 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 6 4 4 6 4 4 6 4 4 6 4 4 6 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 6 4 4 6 4 4 6 4 4 6 4 4 6 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 7 4 4 4 4 4 4 4 4 4 7 4 4 4
4 4 4 4 4 6 4 4 6 4 4 6 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 </universes>
</lattice>
<surface id="8" type="z-cylinder" coeffs="0.0 0.0 0.39"/>
<surface id="9" type="z-cylinder" coeffs="0.0 0.0 0.4"/>
<surface id="10" type="z-cylinder" coeffs="0.0 0.0 0.46"/>
<surface id="13" type="z-cylinder" coeffs="0.0 0.0 0.56"/>
<surface id="14" type="z-cylinder" coeffs="0.0 0.0 0.6"/>
<surface id="15" type="z-cylinder" coeffs="0.0 0.0 0.21"/>
<surface id="16" type="z-cylinder" coeffs="0.0 0.0 0.23"/>
<surface id="17" type="z-cylinder" coeffs="0.0 0.0 0.24"/>
<surface id="18" type="z-cylinder" coeffs="0.0 0.0 0.43"/>
<surface id="19" type="z-cylinder" coeffs="0.0 0.0 0.44"/>
<surface id="20" type="z-cylinder" coeffs="0.0 0.0 0.48"/>
<surface id="21" type="z-cylinder" coeffs="0.0 0.0 0.56"/>
<surface id="22" type="z-cylinder" coeffs="0.0 0.0 0.6"/>
<surface id="31" name="minimum x" type="x-plane" boundary="reflective" coeffs="-10.71"/>
<surface id="32" name="maximum x" type="x-plane" boundary="reflective" coeffs="10.71"/>
<surface id="33" name="minimum y" type="y-plane" boundary="reflective" coeffs="-10.71"/>
<surface id="34" name="maximum y" type="y-plane" boundary="reflective" coeffs="10.71"/>
</geometry>
<settings>
<run_mode>eigenvalue</run_mode>
<particles>1000</particles>
<batches>50</batches>
<inactive>10</inactive>
</settings>
</model>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,325 @@
{
"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": null,
"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": [
"!cat mcnp.i"
]
},
{
"cell_type": "markdown",
"id": "5b5e16ca-7bd1-47e5-a7f2-71ca120c8ea7",
"metadata": {},
"source": [
"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": null,
"id": "d8a2959f-2710-489b-8399-257353f11eac",
"metadata": {},
"outputs": [],
"source": [
"mcnp_model = openmc.Model.from_model_xml(\"mcnp.xml\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ca7913fa-3e9b-4f0c-869a-7737215cf735",
"metadata": {},
"outputs": [],
"source": [
"type(mcnp_model)"
]
},
{
"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": null,
"id": "77414e1d-4834-4308-9213-f56136555d2c",
"metadata": {},
"outputs": [],
"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": "code",
"execution_count": null,
"id": "f8d6f2f8-298a-4ebb-9dbe-048d5b9c0251",
"metadata": {},
"outputs": [],
"source": [
"mcnp_model.plot(width=(50, 90), pixels=100000, basis='xz', origin = (0, 0, 140), color_by='material')"
]
},
{
"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": null,
"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": null,
"id": "00849121-f3ef-46a0-9a7a-5e971b906449",
"metadata": {},
"outputs": [],
"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": null,
"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": null,
"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",
"\n",
"model.settings.source = source\n",
"model.settings.photon_transport = True"
]
},
{
"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": null,
"id": "8bf54f9f-0581-43d7-9501-ffa22be7b5a7",
"metadata": {},
"outputs": [],
"source": [
"type(mcnp_model.geometry.get_all_cells())"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2099392a-4aa8-4c41-9ece-1387077d014a",
"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": null,
"id": "8085ab5e-e3f5-4640-9a6c-01a77581484c",
"metadata": {},
"outputs": [],
"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": null,
"id": "e3c1be2c-c0bb-47d0-8fcc-432ecfe7a75d",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"statepoint = model.run()"
]
},
{
"cell_type": "code",
"execution_count": null,
"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": null,
"id": "54df5aab-ef1d-4c94-96a8-cf5032f33b69",
"metadata": {},
"outputs": [],
"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()"
]
}
],
"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
}

View File

@@ -0,0 +1,249 @@
c simulation for gamma ray experiment
c *** CELLS *** --------------------------------------------------------------
c ----------------------------------------------------------------------------
c detector
300 10 -5.323 (-9201: -9301: -9401) #305 #301 #307 imp:p=1 $ detector
301 0 (-9501: -9601) #307 imp:p=1 $ cold channel
305 10 -5.323 (-95: -96) #301 #307 imp:p=1 $ cold channel contact
306 10 -5.323 (-92: -93: -94) #300 #301 #305 #307 imp:p=1 $detector contact
307 13 -8.07 -9602: -9603 imp:p=1 $ cold pin
c aluminum cap
302 12 -2.6989 -98 97 imp:p=1 $
c mount cap
303 11 -1.38 -9001 imp:p=1 $ mount cup shield Mylar
304 12 -2.6989 -9002 9003 #307 9602 imp:p=1 $ mount cup wall&base Al
c Part B after aluminum End cap
308 12 -2.6989 -9701 9801 98 #3081 imp:p=1 $
c Parts after part B
3081 7 -8.00 -9702 imp:p=1 $
3082 7 -8.00 -9703 imp:p=1 $
3083 7 -8.00 -9704 9705 imp:p=1 $
3084 12 -2.698900 -9705 imp:p=1 $ added density inside cooler
c --- Added Steel Cart Cells (supporting the detector) ---
c Detector (center of main cylinder) is at 114.3 cm (vertical, i.e. y),
c and it sits 12.5 cm above the top of the cart.
c Cart horizontal dimensions (in x and z): width = 45.72 cm
c (x from -22.86 to +22.86), length = 60.96 cm.
c In z: front edge of cart = 83.615 cm, back edge = 22.655 cm.
c In y:
c Bottom level: from 101.6 to 101.8 cm (thickness 0.2 cm)
c Middle level: from 60.4 to 60.6 cm (thickness 0.2 cm)
c Top level: from 19.2 to 19.4 cm (thickness 0.2 cm)
1000 7 -8.00 -10000 imp:p=1 $ Steel Cart Bottom Level
1001 7 -8.00 -10001 imp:p=1 $ Steel Cart Middle Level
1002 7 -8.00 -10002 imp:p=1 $ Steel Cart Top Level
c --- Added Floor Cells ---
1003 14 -2.35 -10003 imp:p=1 $ Concrete Floor
c ~~~~~~~~~
c Environment
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9 0 -70 #300 #301 #302 #303 #304 #305 #306 #307
#308 #3081 #3082 #3083 #3084 #1000 #1001
#1002 #1003 imp:p=1
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Graveyard
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
999 0 70 imp:p=0
c -----------------------------------------------------
c *** END CELLS *** ------------------------------------
c Au foil
c 0.25in radius, 0.004in thickness
c 100 RCC 0 0 103.3 0 0 0.01016 0.635
c ------------------------------------------------------
c end cap window
97 RCC 0 0 103.94 0 0 13.4 3.37 $ inner cylinder
98 RCC 0 0 103.79 0 0 13.4 3.8 $ outer cylinder
c mount cap
9001 RCC 0 0 104.24 0 0 0.003 2.521 $shield:Mylar
9002 RCC 0 0 104.243001 0 0 9.4 2.921001 $ mount cap and base outer
9003 RCC 0 0 104.243001 0 0 9.08 2.445001
c $ mount cap and base inner L=9.4-0.32=9.08 r=crystal r=2.445
c HPGe (92-94) for contact layer; (9201-9401) for crystal
92 TZ 0 0 105.043002 1.645 0.8 0.8
93 RCC 0 0 104.243002 0 0 0.8 1.645
94 RCC 0 0 105.043002 0 0 2.68 2.445 $
9201 TZ 0 0 105.043002 1.645 0.73 0.73 $inner rounded corner
9301 RCC 0 0 104.313002 0 0 0.73 1.645 $inner top cylinder
9401 RCC 0 0 105.043002 0 0 3.68001 2.375 $bottom cylinder
c cold channel (95 96) for contact layer; (9501 9601) for hole; (9602 9603) cold pin
c
c top position=104.243+(L_crystal-L_hole+r_hole)=104.243+3.48-2.86+0.55=105.413
95 RCC 0 0 105.413 0 0 2.31001 0.55003 $outer cylinder
96 S 0 0 105.413 0.55003 $bottom corner outer
9501 RCC 0 0 105.413 0 0 2.31 0.55 $hole
9601 S 0 0 105.413 0.55 $bottom corner inner
c cold pin
9602 RCC 0 0 105.1805001 0 0 13.9994998 0.3175
9603 S 0 0 105.1805001 0.3175 $ cold pin top
c Part B after end cap:
9701 RCC 0 0 117.08 0 0 11.6 3.75 $outer cylinder
9801 RCC 0 0 117.21 0 0 11.34 3.62 $inner cylinder
c Parts after part B
9702 RCC 0 0 119.18 0 0 22.9 1.59 $long connector
9703 RCC 0 0 142.080001 0 0 9.9 4.6 $flange
9704 RPP -9.0 13.0 -13.8 9.1 151.980002 179.480002 $outer box x= y= z=27.5
9705 RPP -8.0 12.0 -12.8 8.1 152.980002 178.480002 $inner box thickness=1
c *** STEEL CART SURFACES (added) ***
10000 RPP -22.86 22.86 101.6 101.8 122.985 183.945 $ Bottom level
10001 RPP -22.86 22.86 60.4 60.6 122.985 183.945 $ Middle level
10002 RPP -22.86 22.86 19.2 19.4 122.985 183.945 $ Top level
c *** FLOOR (added) ***
10003 RCC 0 114.3 150 0 20 0 66.8 $ r=66.8, L=20, y from 114.3 to 134.3
c
70 SZ 150 150
c
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c *** END SURFACES *** -----------------------------------------------------
c *** DATA *** ------------------------------------------
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c TRANSFORMATIONS
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Physics
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode p e
c PHYS:N J 20
c PHYS:P 10 j j j j
PHYS:P 10 1 1 j 1
c cut:p j 0.005
c MPHYS
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Materials
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Gold
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
m1
79000 -1.000000
c steel -7.86g/cc ss316 for foils
m2
c m2
24052 -0.180000 $Chromium Cr24
28058 -0.140000 $Nickel Ni28
42098 -0.030000 $Molybdenum Mo42
6000 -0.000800 $Carbon C6
25055 -0.020000 $Manganese Mn25
15031 -0.000450 $Phosphorous P15
16032 -0.000300 $Sulfur S16
14028 -0.000300 $Silicon Si14
7014 -0.001000 $Nitrogen N7
26056 -0.619950 $Iron Fe26
m4
c m4
1001 -0.142857
6000 -0.857143
c Al -2.698900 g/cm3 for rail support
m5
c m5
24052 -0.00800
29063 -0.00400
26056 -0.00700
12024 -0.01200
25055 -0.00150
28058 -0.00050
14028 -0.00800
22048 -0.00150
30064 -0.00250
40090 -0.00250
13027 -0.95250
c Al -2.698900 g/cm3 for detector 6061 Al
m12
12024 -0.00900
14028 -0.00700
26056 -0.00600
29063 -0.00300
24052 -0.00250
30064 -0.00200
22048 -0.00100
25055 -0.00050
13027 -0.96900
c Wood -0.640 g/cm3
m6
c m6
1001 -0.059642
6000 -0.497018
7014 -0.004970
8016 -0.427435
12024 -0.001988
16032 -0.004970
19039 -0.001988
20040 -0.001988
c steel -8.00g/cc ss304
m7
c m7
6000 -0.000400
14028 -0.005000
15031 -0.000230
16032 -0.000150
24052 -0.190000
25055 -0.010000
26056 -0.701730
28058 -0.092500
m8$ -11.35 g/cm3
c 82000.50c -1.000000 $ Lead
82204 -0.0140000
82206 -0.2410000
82207 -0.2210000
82208 -0.5240000
m10 $ -5.323 g/cm3 Ge
32070 0.2051
32072 0.2745
32073 0.0776
32074 0.367
32076 0.0757
m11 $Mylar -1.38g/cm3
1001 -0.041960
6000 -0.625016
8016 -0.333024
m13 $Brass -8.07g/cm3
26056 -0.000868
29063 -0.665381
30064 -0.325697
50120 -0.002672
82208 -0.005382
m14 $Concrete Ordinary NBS03 -2.35g/cm3
1001 -0.008483
1002 -0.000002
6000 -0.050064
8016 -0.472200
8017 -0.000191
12000 -0.024183
13027 -0.036063
14000 -0.145100
16000 -0.002970
19000 -0.001697
20000 -0.246924
26000 -0.011031
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Source
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c sdef PAR=P ERG=0.356 CEL=100 AXS=0 0 1 POS=0 0 103.3 RAD=d1 EXT=d2
c SI1 0 0.635 $ radial sampling range: 0 to Rmax
c SP1 -21 1 $ radial sampling weighting: r^1 for cylinder
c SI2 0 0.01016 $ axial sampling range: 0 to hmax
c SP2 -21 0 $ weighting for axial sampling: here constant
c Cs-137 Source
sdef PAR=P ERG=0.6617 POS=0 0 90.71
c Co-60 Source
c sdef PAR=P ERG=D1 POS=0 0 90.71
SI1 L 1.1732 1.3325
SP1 0.5 0.5
NPS 1E8
FILES 21 DUMN1
print
c DBCN
prdmp 4J -1
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Tallies
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c F4:p 300
c E4 0.05 8546i 2
c FT4 GEB 0.4156 0.0393 0 $FWHM=a+b*sqrt(E+cE^2) 0.85-122 1.85-1330
F8:p 300
c E8 0.05 999i 1
E8 0.0 5000i 5.0
FT8 GEB 0.00041555 0.0012438 0
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c *** END DATA *** ----------------------------------------------------------
c ********** END OF FILE **********

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,249 @@
c simulation for gamma ray experiment
c *** CELLS *** --------------------------------------------------------------
c ----------------------------------------------------------------------------
c detector
300 10 -5.323 (-9201: -9301: -9401) #305 #301 #307 imp:p=1 $ detector
301 0 (-9501: -9601) #307 imp:p=1 $ cold channel
305 10 -5.323 (-95: -96) #301 #307 imp:p=1 $ cold channel contact
306 10 -5.323 (-92: -93: -94) #300 #301 #305 #307 imp:p=1 $detector contact
307 13 -8.07 -9602: -9603 imp:p=1 $ cold pin
c aluminum cap
302 12 -2.6989 -98 97 imp:p=1 $
c mount cap
303 11 -1.38 -9001 imp:p=1 $ mount cup shield Mylar
304 12 -2.6989 -9002 9003 #307 9602 imp:p=1 $ mount cup wall&base Al
c Part B after aluminum End cap
308 12 -2.6989 -9701 9801 98 #3081 imp:p=1 $
c Parts after part B
3081 7 -8.00 -9702 imp:p=1 $
3082 7 -8.00 -9703 imp:p=1 $
3083 7 -8.00 -9704 9705 imp:p=1 $
3084 12 -2.698900 -9705 imp:p=1 $ added density inside cooler
c --- Added Steel Cart Cells (supporting the detector) ---
c Detector (center of main cylinder) is at 114.3 cm (vertical, i.e. y),
c and it sits 12.5 cm above the top of the cart.
c Cart horizontal dimensions (in x and z): width = 45.72 cm
c (x from -22.86 to +22.86), length = 60.96 cm.
c In z: front edge of cart = 83.615 cm, back edge = 22.655 cm.
c In y:
c Bottom level: from 101.6 to 101.8 cm (thickness 0.2 cm)
c Middle level: from 60.4 to 60.6 cm (thickness 0.2 cm)
c Top level: from 19.2 to 19.4 cm (thickness 0.2 cm)
1000 7 -8.00 -10000 imp:p=1 $ Steel Cart Bottom Level
1001 7 -8.00 -10001 imp:p=1 $ Steel Cart Middle Level
1002 7 -8.00 -10002 imp:p=1 $ Steel Cart Top Level
c --- Added Floor Cells ---
1003 14 -2.35 -10003 imp:p=1 $ Concrete Floor
c ~~~~~~~~~
c Environment
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9 0 -70 #300 #301 #302 #303 #304 #305 #306 #307
#308 #3081 #3082 #3083 #3084 #1000 #1001
#1002 #1003 imp:p=1
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Graveyard
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
999 0 70 imp:p=0
c -----------------------------------------------------
c *** END CELLS *** ------------------------------------
c Au foil
c 0.25in radius, 0.004in thickness
c 100 RCC 0 0 103.3 0 0 0.01016 0.635
c ------------------------------------------------------
c end cap window
97 RCC 0 0 103.94 0 0 13.4 3.37 $ inner cylinder
98 RCC 0 0 103.79 0 0 13.4 3.8 $ outer cylinder
c mount cap
9001 RCC 0 0 104.24 0 0 0.003 2.521 $shield:Mylar
9002 RCC 0 0 104.243001 0 0 9.4 2.921001 $ mount cap and base outer
9003 RCC 0 0 104.243001 0 0 9.08 2.445001
c $ mount cap and base inner L=9.4-0.32=9.08 r=crystal r=2.445
c HPGe (92-94) for contact layer; (9201-9401) for crystal
92 TZ 0 0 105.043002 1.645 0.8 0.8
93 RCC 0 0 104.243002 0 0 0.8 1.645
94 RCC 0 0 105.043002 0 0 2.68 2.445 $
9201 TZ 0 0 105.043002 1.645 0.73 0.73 $inner rounded corner
9301 RCC 0 0 104.313002 0 0 0.73 1.645 $inner top cylinder
9401 RCC 0 0 105.043002 0 0 3.68001 2.375 $bottom cylinder
c cold channel (95 96) for contact layer; (9501 9601) for hole; (9602 9603) cold pin
c
c top position=104.243+(L_crystal-L_hole+r_hole)=104.243+3.48-2.86+0.55=105.413
95 RCC 0 0 105.413 0 0 2.31001 0.55003 $outer cylinder
96 S 0 0 105.413 0.55003 $bottom corner outer
9501 RCC 0 0 105.413 0 0 2.31 0.55 $hole
9601 S 0 0 105.413 0.55 $bottom corner inner
c cold pin
9602 RCC 0 0 105.1805001 0 0 13.9994998 0.3175
9603 S 0 0 105.1805001 0.3175 $ cold pin top
c Part B after end cap:
9701 RCC 0 0 117.08 0 0 11.6 3.75 $outer cylinder
9801 RCC 0 0 117.21 0 0 11.34 3.62 $inner cylinder
c Parts after part B
9702 RCC 0 0 119.18 0 0 22.9 1.59 $long connector
9703 RCC 0 0 142.080001 0 0 9.9 4.6 $flange
9704 RPP -9.0 13.0 -13.8 9.1 151.980002 179.480002 $outer box x= y= z=27.5
9705 RPP -8.0 12.0 -12.8 8.1 152.980002 178.480002 $inner box thickness=1
c *** STEEL CART SURFACES (added) ***
10000 RPP -22.86 22.86 101.6 101.8 122.985 183.945 $ Bottom level
10001 RPP -22.86 22.86 60.4 60.6 122.985 183.945 $ Middle level
10002 RPP -22.86 22.86 19.2 19.4 122.985 183.945 $ Top level
c *** FLOOR (added) ***
10003 RCC 0 114.3 150 0 20 0 66.8 $ r=66.8, L=20, y from 114.3 to 134.3
c
70 SZ 150 150
c
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c *** END SURFACES *** -----------------------------------------------------
c *** DATA *** ------------------------------------------
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c TRANSFORMATIONS
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Physics
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode p e
c PHYS:N J 20
c PHYS:P 10 j j j j
PHYS:P 10 1 1 j 1
c cut:p j 0.005
c MPHYS
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Materials
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Gold
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
m1
79000 -1.000000
c steel -7.86g/cc ss316 for foils
m2
c m2
24052 -0.180000 $Chromium Cr24
28058 -0.140000 $Nickel Ni28
42098 -0.030000 $Molybdenum Mo42
6000 -0.000800 $Carbon C6
25055 -0.020000 $Manganese Mn25
15031 -0.000450 $Phosphorous P15
16032 -0.000300 $Sulfur S16
14028 -0.000300 $Silicon Si14
7014 -0.001000 $Nitrogen N7
26056 -0.619950 $Iron Fe26
m4
c m4
1001 -0.142857
6000 -0.857143
c Al -2.698900 g/cm3 for rail support
m5
c m5
24052 -0.00800
29063 -0.00400
26056 -0.00700
12024 -0.01200
25055 -0.00150
28058 -0.00050
14028 -0.00800
22048 -0.00150
30064 -0.00250
40090 -0.00250
13027 -0.95250
c Al -2.698900 g/cm3 for detector 6061 Al
m12
12024 -0.00900
14028 -0.00700
26056 -0.00600
29063 -0.00300
24052 -0.00250
30064 -0.00200
22048 -0.00100
25055 -0.00050
13027 -0.96900
c Wood -0.640 g/cm3
m6
c m6
1001 -0.059642
6000 -0.497018
7014 -0.004970
8016 -0.427435
12024 -0.001988
16032 -0.004970
19039 -0.001988
20040 -0.001988
c steel -8.00g/cc ss304
m7
c m7
6000 -0.000400
14028 -0.005000
15031 -0.000230
16032 -0.000150
24052 -0.190000
25055 -0.010000
26056 -0.701730
28058 -0.092500
m8$ -11.35 g/cm3
c 82000.50c -1.000000 $ Lead
82204 -0.0140000
82206 -0.2410000
82207 -0.2210000
82208 -0.5240000
m10 $ -5.323 g/cm3 Ge
32070 0.2051
32072 0.2745
32073 0.0776
32074 0.367
32076 0.0757
m11 $Mylar -1.38g/cm3
1001 -0.041960
6000 -0.625016
8016 -0.333024
m13 $Brass -8.07g/cm3
26056 -0.000868
29063 -0.665381
30064 -0.325697
50120 -0.002672
82208 -0.005382
m14 $Concrete Ordinary NBS03 -2.35g/cm3
1001 -0.008483
1002 -0.000002
6000 -0.050064
8016 -0.472200
8017 -0.000191
12000 -0.024183
13027 -0.036063
14000 -0.145100
16000 -0.002970
19000 -0.001697
20000 -0.246924
26000 -0.011031
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Source
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c sdef PAR=P ERG=0.356 CEL=100 AXS=0 0 1 POS=0 0 103.3 RAD=d1 EXT=d2
c SI1 0 0.635 $ radial sampling range: 0 to Rmax
c SP1 -21 1 $ radial sampling weighting: r^1 for cylinder
c SI2 0 0.01016 $ axial sampling range: 0 to hmax
c SP2 -21 0 $ weighting for axial sampling: here constant
c Cs-137 Source
sdef PAR=P ERG=0.6617 POS=0 0 90.71
c Co-60 Source
c sdef PAR=P ERG=D1 POS=0 0 90.71
SI1 L 1.1732 1.3325
SP1 0.5 0.5
NPS 1E8
FILES 21 DUMN1
print
c DBCN
prdmp 4J -1
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c Tallies
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c F4:p 300
c E4 0.05 8546i 2
c FT4 GEB 0.4156 0.0393 0 $FWHM=a+b*sqrt(E+cE^2) 0.85-122 1.85-1330
F8:p 300
c E8 0.05 999i 1
E8 0.0 5000i 5.0
FT8 GEB 0.00041555 0.0012438 0
c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c *** END DATA *** ----------------------------------------------------------
c ********** END OF FILE **********

View File

@@ -0,0 +1,190 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="7">
<density value="8.0" units="g/cm3"/>
<nuclide name="C0" wo="0.0004"/>
<nuclide name="Si28" wo="0.005"/>
<nuclide name="P31" wo="0.00023"/>
<nuclide name="S32" wo="0.00015"/>
<nuclide name="Cr52" wo="0.19"/>
<nuclide name="Mn55" wo="0.01"/>
<nuclide name="Fe56" wo="0.70173"/>
<nuclide name="Ni58" wo="0.0925"/>
</material>
<material id="10">
<density value="5.323" units="g/cm3"/>
<nuclide name="Ge70" ao="0.2051"/>
<nuclide name="Ge72" ao="0.2745"/>
<nuclide name="Ge73" ao="0.0776"/>
<nuclide name="Ge74" ao="0.367"/>
<nuclide name="Ge76" ao="0.0757"/>
</material>
<material id="11">
<density value="1.38" units="g/cm3"/>
<nuclide name="H1" wo="0.04196"/>
<nuclide name="C0" wo="0.625016"/>
<nuclide name="O16" wo="0.333024"/>
</material>
<material id="12">
<density value="2.6989" units="g/cm3"/>
<nuclide name="Mg24" wo="0.009"/>
<nuclide name="Si28" wo="0.007"/>
<nuclide name="Fe56" wo="0.006"/>
<nuclide name="Cu63" wo="0.003"/>
<nuclide name="Cr52" wo="0.0025"/>
<nuclide name="Zn64" wo="0.002"/>
<nuclide name="Ti48" wo="0.001"/>
<nuclide name="Mn55" wo="0.0005"/>
<nuclide name="Al27" wo="0.969"/>
</material>
<material id="13">
<density value="8.07" units="g/cm3"/>
<nuclide name="Fe56" wo="0.000868"/>
<nuclide name="Cu63" wo="0.665381"/>
<nuclide name="Zn64" wo="0.325697"/>
<nuclide name="Sn120" wo="0.002672"/>
<nuclide name="Pb208" wo="0.005382"/>
</material>
<material id="14">
<density value="2.35" units="g/cm3"/>
<nuclide name="H1" wo="0.008483"/>
<nuclide name="H2" wo="2e-06"/>
<nuclide name="C0" wo="0.050064"/>
<nuclide name="O16" wo="0.4722"/>
<nuclide name="O17" wo="0.000191"/>
<nuclide name="Mg24" wo="0.0188408886521763"/>
<nuclide name="Mg25" wo="0.0024909493306234363"/>
<nuclide name="Mg26" wo="0.0028511620172002633"/>
<nuclide name="Al27" wo="0.036063"/>
<nuclide name="Si28" wo="0.13330847357739614"/>
<nuclide name="Si29" wo="0.00701086967483306"/>
<nuclide name="Si30" wo="0.004780656747770798"/>
<nuclide name="S32" wo="0.002814627741005793"/>
<nuclide name="S33" wo="2.2865493551294847e-05"/>
<nuclide name="S34" wo="0.00013202102630601787"/>
<nuclide name="S36" wo="4.857391368943849e-07"/>
<nuclide name="K39" wo="0.0015771419508661794"/>
<nuclide name="K40" wo="2.029451839923608e-07"/>
<nuclide name="K41" wo="0.00011965510394982793"/>
<nuclide name="Ca40" wo="0.2386811660679979"/>
<nuclide name="Ca42" wo="0.0016725629514960224"/>
<nuclide name="Ca43" wo="0.000357307875697765"/>
<nuclide name="Ca44" wo="0.005649166365242286"/>
<nuclide name="Ca46" wo="1.1324978311100535e-05"/>
<nuclide name="Ca48" wo="0.0005524717612549511"/>
<nuclide name="Fe54" wo="0.0006227615275467931"/>
<nuclide name="Fe56" wo="0.010137657639673534"/>
<nuclide name="Fe57" wo="0.00023831026177444914"/>
<nuclide name="Fe58" wo="3.2270571005223845e-05"/>
</material>
</materials>
<geometry>
<cell id="9" material="void" region="-70 ((9201 (10025 | -10026 | 10027) (10028 | -10027 | 10030)) | (((-10031 10032 -10033) | -96) (((10034 | -10032 | 10036) 9601) | ((-10037 10038 -10039) | -9603)) (10037 | -10038 | 10039) 9603) | (((-10034 10032 -10036) | -9601) ((10037 | -10038 | 10039) 9603)) | (-10037 10038 -10039) | -9603) (((10034 | -10032 | 10036) 9601) | ((-10037 10038 -10039) | -9603)) (10007 | -10008 | 10009 | (-10004 10005 -10006)) (10010 | -10011 | 10012) (10013 | -10014 | 10015 | (-10016 10014 -10018) | (-10037 10038 -10039) | -9603 | (-10037 10038 -10039)) (((10031 | -10032 | 10033) 96) | (((-10034 10032 -10036) | -9601) ((10037 | -10038 | 10039) 9603)) | (-10037 10038 -10039) | -9603) ((92 (10025 | -10020 | 10027) (10022 | -10027 | 10024)) | ((-9201 | (-10025 10026 -10027) | (-10028 10027 -10030)) (((10031 | -10032 | 10033) 96) | (((-10034 10032 -10036) | -9601) ((10037 | -10038 | 10039) 9603)) | (-10037 10038 -10039) | -9603) (((10034 | -10032 | 10036) 9601) | ((-10037 10038 -10039) | -9603)) (10037 | -10038 | 10039) 9603) | (((-10034 10032 -10036) | -9601) ((10037 | -10038 | 10039) 9603)) | (((-10031 10032 -10033) | -96) (((10034 | -10032 | 10036) 9601) | ((-10037 10038 -10039) | -9603)) (10037 | -10038 | 10039) 9603) | (-10037 10038 -10039) | -9603) (10037 | -10038 | 10039) 9603 (10040 | -10041 | 10042 | (-10043 10044 -10045) | (-10007 10008 -10009) | (-10046 10047 -10048)) (10046 | -10047 | 10048) (10049 | -10050 | 10051) (10053 | -10052 | 10055 | -10054 | 10057 | -10056 | (-10059 10058 -10061 10060 -10063 10062)) (10059 | -10058 | 10061 | -10060 | 10063 | -10062) (10065 | -10064 | 10067 | -10066 | 10069 | -10068) (10065 | -10064 | 10073 | -10072 | 10069 | -10068) (10065 | -10064 | 10079 | -10078 | 10069 | -10068) (10082 | -10083 | 10084)" universe="0"/>
<cell id="300" material="10" region="(-9201 | (-10025 10026 -10027) | (-10028 10027 -10030)) (((10031 | -10032 | 10033) 96) | (((-10034 10032 -10036) | -9601) ((10037 | -10038 | 10039) 9603)) | (-10037 10038 -10039) | -9603) (((10034 | -10032 | 10036) 9601) | ((-10037 10038 -10039) | -9603)) (10037 | -10038 | 10039) 9603" universe="0"/>
<cell id="301" material="void" region="((-10034 10032 -10036) | -9601) ((10037 | -10038 | 10039) 9603)" universe="0"/>
<cell id="302" material="12" region="-10007 10008 -10009 (10004 | -10005 | 10006)" universe="0"/>
<cell id="303" material="11" region="-10010 10011 -10012" universe="0"/>
<cell id="304" material="12" region="-10013 10014 -10015 (10016 | -10014 | 10018) (10037 | -10038 | 10039) 9603 (10037 | -10038 | 10039)" universe="0"/>
<cell id="305" material="10" region="((-10031 10032 -10033) | -96) (((10034 | -10032 | 10036) 9601) | ((-10037 10038 -10039) | -9603)) (10037 | -10038 | 10039) 9603" universe="0"/>
<cell id="306" material="10" region="(-92 | (-10025 10020 -10027) | (-10022 10027 -10024)) ((9201 (10025 | -10026 | 10027) (10028 | -10027 | 10030)) | (((-10031 10032 -10033) | -96) (((10034 | -10032 | 10036) 9601) | ((-10037 10038 -10039) | -9603)) (10037 | -10038 | 10039) 9603) | (((-10034 10032 -10036) | -9601) ((10037 | -10038 | 10039) 9603)) | (-10037 10038 -10039) | -9603) (((10034 | -10032 | 10036) 9601) | ((-10037 10038 -10039) | -9603)) (((10031 | -10032 | 10033) 96) | (((-10034 10032 -10036) | -9601) ((10037 | -10038 | 10039) 9603)) | (-10037 10038 -10039) | -9603) (10037 | -10038 | 10039) 9603" universe="0"/>
<cell id="307" material="13" region="(-10037 10038 -10039) | -9603" universe="0"/>
<cell id="308" material="12" region="-10040 10041 -10042 (10043 | -10044 | 10045) (10007 | -10008 | 10009) (10046 | -10047 | 10048)" universe="0"/>
<cell id="999" material="void" region="70" universe="0"/>
<cell id="1000" material="7" region="-10065 10064 -10067 10066 -10069 10068" universe="0"/>
<cell id="1001" material="7" region="-10065 10064 -10073 10072 -10069 10068" universe="0"/>
<cell id="1002" material="7" region="-10065 10064 -10079 10078 -10069 10068" universe="0"/>
<cell id="1003" material="14" region="-10082 10083 -10084" universe="0"/>
<cell id="3081" material="7" region="-10046 10047 -10048" universe="0"/>
<cell id="3082" material="7" region="-10049 10050 -10051" universe="0"/>
<cell id="3083" material="7" region="-10053 10052 -10055 10054 -10057 10056 (10059 | -10058 | 10061 | -10060 | 10063 | -10062)" universe="0"/>
<cell id="3084" material="12" region="-10059 10058 -10061 10060 -10063 10062" universe="0"/>
<surface id="70" type="sphere" coeffs="0.0 0.0 150.0 150.0"/>
<surface id="92" type="z-torus" coeffs="0.0 0.0 105.043002 1.645 0.8 0.8"/>
<surface id="96" type="sphere" coeffs="0.0 0.0 105.413 0.55003"/>
<surface id="9201" type="z-torus" coeffs="0.0 0.0 105.043002 1.645 0.73 0.73"/>
<surface id="9601" type="sphere" coeffs="0.0 0.0 105.413 0.55"/>
<surface id="9603" type="sphere" coeffs="0.0 0.0 105.1805001 0.3175"/>
<surface id="10004" type="z-cylinder" coeffs="0.0 0.0 3.37"/>
<surface id="10005" type="z-plane" coeffs="103.94"/>
<surface id="10006" type="z-plane" coeffs="117.34"/>
<surface id="10007" type="z-cylinder" coeffs="0.0 0.0 3.8"/>
<surface id="10008" type="z-plane" coeffs="103.79"/>
<surface id="10009" type="z-plane" coeffs="117.19000000000001"/>
<surface id="10010" type="z-cylinder" coeffs="0.0 0.0 2.521"/>
<surface id="10011" type="z-plane" coeffs="104.24"/>
<surface id="10012" type="z-plane" coeffs="104.243"/>
<surface id="10013" type="z-cylinder" coeffs="0.0 0.0 2.921001"/>
<surface id="10014" type="z-plane" coeffs="104.243001"/>
<surface id="10015" type="z-plane" coeffs="113.64300100000001"/>
<surface id="10016" type="z-cylinder" coeffs="0.0 0.0 2.445001"/>
<surface id="10018" type="z-plane" coeffs="113.323001"/>
<surface id="10020" type="z-plane" coeffs="104.243002"/>
<surface id="10022" type="z-cylinder" coeffs="0.0 0.0 2.445"/>
<surface id="10024" type="z-plane" coeffs="107.72300200000001"/>
<surface id="10025" type="z-cylinder" coeffs="0.0 0.0 1.645"/>
<surface id="10026" type="z-plane" coeffs="104.313002"/>
<surface id="10027" type="z-plane" coeffs="105.043002"/>
<surface id="10028" type="z-cylinder" coeffs="0.0 0.0 2.375"/>
<surface id="10030" type="z-plane" coeffs="108.723012"/>
<surface id="10031" type="z-cylinder" coeffs="0.0 0.0 0.55003"/>
<surface id="10032" type="z-plane" coeffs="105.413"/>
<surface id="10033" type="z-plane" coeffs="107.72301"/>
<surface id="10034" type="z-cylinder" coeffs="0.0 0.0 0.55"/>
<surface id="10036" type="z-plane" coeffs="107.723"/>
<surface id="10037" type="z-cylinder" coeffs="0.0 0.0 0.3175"/>
<surface id="10038" type="z-plane" coeffs="105.1805001"/>
<surface id="10039" type="z-plane" coeffs="119.1799999"/>
<surface id="10040" type="z-cylinder" coeffs="0.0 0.0 3.75"/>
<surface id="10041" type="z-plane" coeffs="117.08"/>
<surface id="10042" type="z-plane" coeffs="128.68"/>
<surface id="10043" type="z-cylinder" coeffs="0.0 0.0 3.62"/>
<surface id="10044" type="z-plane" coeffs="117.21"/>
<surface id="10045" type="z-plane" coeffs="128.54999999999998"/>
<surface id="10046" type="z-cylinder" coeffs="0.0 0.0 1.59"/>
<surface id="10047" type="z-plane" coeffs="119.18"/>
<surface id="10048" type="z-plane" coeffs="142.08"/>
<surface id="10049" type="z-cylinder" coeffs="0.0 0.0 4.6"/>
<surface id="10050" type="z-plane" coeffs="142.080001"/>
<surface id="10051" type="z-plane" coeffs="151.98000100000002"/>
<surface id="10052" type="x-plane" coeffs="-9.0"/>
<surface id="10053" type="x-plane" coeffs="13.0"/>
<surface id="10054" type="y-plane" coeffs="-13.8"/>
<surface id="10055" type="y-plane" coeffs="9.1"/>
<surface id="10056" type="z-plane" coeffs="151.980002"/>
<surface id="10057" type="z-plane" coeffs="179.480002"/>
<surface id="10058" type="x-plane" coeffs="-8.0"/>
<surface id="10059" type="x-plane" coeffs="12.0"/>
<surface id="10060" type="y-plane" coeffs="-12.8"/>
<surface id="10061" type="y-plane" coeffs="8.1"/>
<surface id="10062" type="z-plane" coeffs="152.980002"/>
<surface id="10063" type="z-plane" coeffs="178.480002"/>
<surface id="10064" type="x-plane" coeffs="-22.86"/>
<surface id="10065" type="x-plane" coeffs="22.86"/>
<surface id="10066" type="y-plane" coeffs="101.6"/>
<surface id="10067" type="y-plane" coeffs="101.8"/>
<surface id="10068" type="z-plane" coeffs="122.985"/>
<surface id="10069" type="z-plane" coeffs="183.945"/>
<surface id="10072" type="y-plane" coeffs="60.4"/>
<surface id="10073" type="y-plane" coeffs="60.6"/>
<surface id="10078" type="y-plane" coeffs="19.2"/>
<surface id="10079" type="y-plane" coeffs="19.4"/>
<surface id="10082" type="y-cylinder" coeffs="0.0 150.0 66.8"/>
<surface id="10083" type="y-plane" coeffs="114.3"/>
<surface id="10084" type="y-plane" coeffs="134.3"/>
</geometry>
<settings>
<run_mode>eigenvalue</run_mode>
<particles>100</particles>
<batches>40</batches>
<inactive>20</inactive>
<source type="independent" strength="1.0" particle="neutron">
<space type="point">
<parameters>0.0 0.0 0.0</parameters>
</space>
</source>
<output>
<summary>true</summary>
</output>
</settings>
</model>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,87 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="1" name="UO2" depletable="true">
<density value="10.0" units="g/cc"/>
<nuclide name="O16" ao="1.999242"/>
<nuclide name="O17" ao="0.000758"/>
<nuclide name="U234" ao="0.0002714687807976247"/>
<nuclide name="U235" ao="0.030371951808732825"/>
<nuclide name="U238" ao="0.9692174612830511"/>
<nuclide name="U236" ao="0.00013911812741848606"/>
</material>
<material id="2" name="Zr">
<density value="6.2" units="g/cc"/>
<nuclide name="Zr90" ao="0.5145"/>
<nuclide name="Zr91" ao="0.1122"/>
<nuclide name="Zr92" ao="0.1715"/>
<nuclide name="Zr94" ao="0.1738"/>
<nuclide name="Zr96" ao="0.028"/>
</material>
<material id="3" name="Water">
<density value="1.0" units="g/cc"/>
<nuclide name="O16" ao="0.999621"/>
<nuclide name="O17" ao="0.000379"/>
<nuclide name="H1" ao="1.99968852"/>
<nuclide name="H2" ao="0.00031148"/>
<sab name="c_H_in_H2O"/>
</material>
</materials>
<geometry>
<cell id="1" material="1" region="-1" universe="1"/>
<cell id="2" material="2" region="1 -2" universe="1"/>
<cell id="3" material="3" region="2 3 -4 5 -6" universe="1"/>
<surface id="1" type="z-cylinder" coeffs="0.0 0.0 0.39"/>
<surface id="2" type="z-cylinder" coeffs="0.0 0.0 0.46"/>
<surface id="3" name="minimum x" type="x-plane" boundary="reflective" coeffs="-0.63"/>
<surface id="4" name="maximum x" type="x-plane" boundary="reflective" coeffs="0.63"/>
<surface id="5" name="minimum y" type="y-plane" boundary="reflective" coeffs="-0.63"/>
<surface id="6" name="maximum y" type="y-plane" boundary="reflective" coeffs="0.63"/>
</geometry>
<settings>
<run_mode>eigenvalue</run_mode>
<particles>1000</particles>
<batches>100</batches>
<inactive>10</inactive>
<source type="independent" strength="1.0" particle="neutron">
<space type="box">
<parameters>-0.63 -0.63 0.0 0.63 0.63 0.0</parameters>
</space>
<constraints>
<fissionable>true</fissionable>
</constraints>
</source>
</settings>
<tallies>
<filter id="5" type="material">
<bins>1</bins>
</filter>
<filter id="6" type="energy">
<bins>1.0 10.0 100.0 1000.0</bins>
</filter>
<filter id="25" type="material">
<bins>1 3</bins>
</filter>
<filter id="9" type="energy">
<bins>0.0 0.625 5530.0 821000.0 20000000.0</bins>
</filter>
<tally id="13">
<filters>5 6</filters>
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="14">
<filters>5 6</filters>
<nuclides>O16 O17 U234 U235 U238 U236</nuclides>
<scores>total</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="40">
<filters>25 9</filters>
<nuclides>total</nuclides>
<scores>flux total scatter fission</scores>
<estimator>tracklength</estimator>
</tally>
</tallies>
</model>

View File

@@ -0,0 +1,96 @@
<?xml version='1.0' encoding='utf-8'?>
<model>
<materials>
<material id="1" name="UO2" depletable="true">
<density value="10.0" units="g/cc"/>
<nuclide name="O16" ao="1.999242"/>
<nuclide name="O17" ao="0.000758"/>
<nuclide name="U234" ao="0.0002714687807976247"/>
<nuclide name="U235" ao="0.030371951808732825"/>
<nuclide name="U238" ao="0.9692174612830511"/>
<nuclide name="U236" ao="0.00013911812741848606"/>
</material>
<material id="2" name="Zr">
<density value="6.2" units="g/cc"/>
<nuclide name="Zr90" ao="0.5145"/>
<nuclide name="Zr91" ao="0.1122"/>
<nuclide name="Zr92" ao="0.1715"/>
<nuclide name="Zr94" ao="0.1738"/>
<nuclide name="Zr96" ao="0.028"/>
</material>
<material id="3" name="Water">
<density value="1.0" units="g/cc"/>
<nuclide name="O16" ao="0.999621"/>
<nuclide name="O17" ao="0.000379"/>
<nuclide name="H1" ao="1.99968852"/>
<nuclide name="H2" ao="0.00031148"/>
<sab name="c_H_in_H2O"/>
</material>
</materials>
<geometry>
<cell id="1" material="1" region="-1" universe="1"/>
<cell id="2" material="2" region="1 -2" universe="1"/>
<cell id="3" material="3" region="2 3 -4 5 -6" universe="1"/>
<surface id="1" type="z-cylinder" coeffs="0.0 0.0 0.39"/>
<surface id="2" type="z-cylinder" coeffs="0.0 0.0 0.46"/>
<surface id="3" name="minimum x" type="x-plane" boundary="reflective" coeffs="-0.63"/>
<surface id="4" name="maximum x" type="x-plane" boundary="reflective" coeffs="0.63"/>
<surface id="5" name="minimum y" type="y-plane" boundary="reflective" coeffs="-0.63"/>
<surface id="6" name="maximum y" type="y-plane" boundary="reflective" coeffs="0.63"/>
</geometry>
<settings>
<run_mode>eigenvalue</run_mode>
<particles>1000</particles>
<batches>100</batches>
<inactive>10</inactive>
<source type="independent" strength="1.0" particle="neutron">
<space type="box">
<parameters>-0.63 -0.63 0.0 0.63 0.63 0.0</parameters>
</space>
<constraints>
<fissionable>true</fissionable>
</constraints>
</source>
</settings>
<tallies>
<filter id="38" type="material">
<bins>1 2 3</bins>
</filter>
<filter id="14" type="energy">
<bins>0.0 0.625 5530.0 821000.0 20000000.0</bins>
</filter>
<filter id="22" type="material">
<bins>1 2</bins>
</filter>
<filter id="32" type="material">
<bins>2 3</bins>
</filter>
<filter id="33" type="material">
<bins>3</bins>
</filter>
<tally id="56">
<filters>38 14</filters>
<nuclides>total</nuclides>
<scores>flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="39">
<filters>22 14</filters>
<nuclides>O16 O17 U234 U235 U238 U236 Zr90 Zr91 Zr92 Zr94 Zr96</nuclides>
<scores>total scatter fission</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="50">
<filters>32 14</filters>
<nuclides>Zr90 Zr91 Zr92 Zr94 Zr96 O16 O17 H1 H2</nuclides>
<scores>scatter fission total</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="57">
<filters>33 14</filters>
<nuclides>O16 O17 H1 H2</nuclides>
<scores>scatter fission</scores>
<estimator>tracklength</estimator>
</tally>
</tallies>
</model>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,170 @@
$Rev:: 1450 $ $Date:: 2018-01-17#$ 1 0 0
3.107000+4 6.932532+1 -1 0 0 0 695 1451
0.000000+0 1.000000+0 0 0 0 6 695 1451
0.000000+0 0.000000+0 0 0 4 8 695 1451
0.000000+0 0.000000+0 0 0 35 2 695 1451
31-Ga- 70 BNL EVAL-NOV05 Conversion from ENSDF 695 1451
/ENSDF/ DIST-FEB18 20111222 695 1451
----ENDF/B-VIII.0 Material 695 695 1451
-----RADIOACTIVE DECAY DATA 695 1451
------ENDF-6 FORMAT 695 1451
*********************** Begin Description *********************** 695 1451
** ENDF/B-VII.1 RADIOACTIVE DECAY DATA FILE ** 695 1451
** Produced at the NNDC from the ENSDF database ** 695 1451
** Authors: NSDD ** 695 1451
** Translated into ENDF format by: ** 695 1451
** T.D. Johnson, E.A. McCutchan and A.A. Sonzogni, 2011 ** 695 1451
***************************************************************** 695 1451
ENSDF evaluation authors: J. K. TULI 695 1451
Parent Excitation Energy: 0.0 695 1451
Parent Spin & Parity: 1+ 695 1451
Parent half-life: 21.14 M 3 695 1451
Decay Mode: %B-=99.59 6,%EC=0.41 6 695 1451
ENSDF Authors: J. K. Tuli 695 1451
Publication: NDS 103, 389 (2004) 695 1451
************************ Energy Balance ************************ 695 1451
Mean Gamma Energy: 7.272281 keV 695 1451
Mean X-Ray+511 Energy: 0.015943164 keV 695 1451
Mean CE+Auger Energy: 0.06734777 keV 695 1451
Mean B- Energy: 643.981 keV 695 1451
Mean B+ Energy: 0.0 keV 695 1451
Mean Neutrino Energy: 997.2323 keV 695 1451
Mean Neutron Energy: 0.0 keV 695 1451
Mean Proton Energy: 0.0 keV 695 1451
Mean Alpha Energy: 0.0 keV 695 1451
Mean Recoil Energy: 0.0 keV 695 1451
Sum Mean Energies: 1648.5688 keV 695 1451
Q effective: 1648.9066 keV 695 1451
Missing Energy: 0.33776855 keV 695 1451
Deviation: 0.020484395 % 695 1451
************************ End Description ************************ 695 1451
1 451 41 0 695 1451
8 457 122 0 695 1451
0.000000+0 0.000000+0 0 0 0 0 695 1 0
695 0 0
3.107000+4 6.932532+1 0 0 0 5 695 8457
1.268400+3 1.800000+0 0 0 6 0 695 8457
6.440483+5 1.490423+3 7.288224+3 5.198623+2 0.000000+0 0.000000+0 695 8457
1.000000+0 1.000000+0 0 0 12 2 695 8457
1.000000+0 0.000000+0 1.653000+6 1.600000+3 9.959000-1 6.000000-4 695 8457
2.000000+0 0.000000+0 6.546000+5 1.600000+3 4.100000-3 6.000000-4 695 8457
0.000000+0 0.000000+0 0 0 6 2 695 8457
1.000000+0 0.000000+0 7.272281+3 5.198595+2 0.000000+0 0.000000+0 695 8457
1.761700+5 2.000000+1 0 0 12 0 695 8457
1.000000+0 0.000000+0 2.938043-3 9.187973-5 0.000000+0 0.000000+0 695 8457
8.914211-2 1.110331-3 7.874000-2 1.103000-3 8.992000-3 1.260000-4 695 8457
1.039200+6 8.000000+1 0 0 12 0 695 8457
1.000000+0 0.000000+0 6.499891-3 5.000069-4 0.000000+0 0.000000+0 695 8457
3.231935-4 4.066633-6 2.889000-4 4.045000-6 2.959000-5 4.143000-7 695 8457
0.000000+0 1.000000+0 0 0 6 3 695 8457
1.000000+0 0.000000+0 6.439810+5 1.490421+3 0.000000+0 0.000000+0 695 8457
4.376300+5 1.601999+3 0 0 6 0 695 8457
1.000000+0 1.000000+0 3.199946-3 1.000169-4 0.000000+0 0.000000+0 695 8457
6.138001+5 1.601999+3 0 0 6 0 695 8457
1.000000+0 1.000000+0 3.599939-3 2.000084-4 0.000000+0 0.000000+0 695 8457
1.653000+6 1.600000+3 0 0 6 0 695 8457
1.000000+0 1.000000+0 9.890834-1 8.456220-4 0.000000+0 0.000000+0 695 8457
0.000000+0 2.000000+0 0 0 6 1 695 8457
1.000000+0 0.000000+0 0.000000+0 0.000000+0 0.000000+0 0.000000+0 695 8457
6.546000+5 1.600000+3 0 0 6 0 695 8457
2.000000+0 1.000000+0 4.100000-3 6.000000-4 0.000000+0 0.000000+0 695 8457
0.000000+0 8.000000+0 0 0 6 24 695 8457
1.000000+0 0.000000+0 6.734777+1 2.226931+0 0.000000+0 0.000000+0 695 8457
1.419100+1 8.441064-1 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.047513-3 7.100109-5 0.000000+0 0.000000+0 695 8457
5.285122+1 3.270849+0 0 0 6 0 695 8457
1.000000+0 0.000000+0 3.805057-4 2.491098-5 0.000000+0 0.000000+0 695 8457
5.677748+1 4.148207+0 0 0 6 0 695 8457
2.000000+0 0.000000+0 6.972324-3 4.974660-4 0.000000+0 0.000000+0 695 8457
8.987146+1 6.259023+0 0 0 6 0 695 8457
2.000000+0 0.000000+0 9.837073-4 5.574113-5 0.000000+0 0.000000+0 695 8457
9.131294+1 6.547354+0 0 0 6 0 695 8457
1.000000+0 0.000000+0 5.801636-5 3.290940-6 0.000000+0 0.000000+0 695 8457
1.183433+2 1.848661+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 6.684721-7 1.026403-7 0.000000+0 0.000000+0 695 8457
9.295584+2 4.329832+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 5.234907-3 2.401398-4 0.000000+0 0.000000+0 695 8457
9.767172+2 7.413009+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 4.144612-5 3.260346-6 0.000000+0 0.000000+0 695 8457
1.078035+3 1.085928+2 0 0 6 0 695 8457
2.000000+0 0.000000+0 1.382701-7 1.382426-8 0.000000+0 0.000000+0 695 8457
1.078475+3 4.859322+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 3.159434-4 1.395590-5 0.000000+0 0.000000+0 695 8457
1.135123+3 4.663129+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 7.827058-6 3.279310-7 0.000000+0 0.000000+0 695 8457
1.240120+3 7.803214+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 6.585141-8 4.206517-9 0.000000+0 0.000000+0 695 8457
7.486979+3 8.039171+2 0 0 6 0 695 8457
2.000000+0 0.000000+0 1.518306-3 1.621002-4 0.000000+0 0.000000+0 695 8457
8.455534+3 6.441800+2 0 0 6 0 695 8457
2.000000+0 0.000000+0 3.875963-4 2.944285-5 0.000000+0 0.000000+0 695 8457
8.523279+3 6.702481+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 8.512230-5 6.649805-6 0.000000+0 0.000000+0 695 8457
9.428050+3 8.500340+2 0 0 6 0 695 8457
2.000000+0 0.000000+0 2.728785-5 2.457679-6 0.000000+0 0.000000+0 695 8457
9.663881+3 5.246994+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 2.330059-5 1.260686-6 0.000000+0 0.000000+0 695 8457
1.080807+4 6.801128+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.694652-6 1.064840-7 0.000000+0 0.000000+0 695 8457
1.650670+5 2.118962+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 2.313415-4 7.927261-6 0.000000+0 0.000000+0 695 8457
1.747557+5 2.001225+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 2.641888-5 9.053291-7 0.000000+0 0.000000+0 695 8457
1.761700+5 2.000000+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 4.142964-6 1.344226-7 0.000000+0 0.000000+0 695 8457
1.028097+6 8.030566+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.877818-6 1.468252-7 0.000000+0 0.000000+0 695 8457
1.037786+6 8.000306+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.923318-7 1.503828-8 0.000000+0 0.000000+0 695 8457
1.039200+6 8.000000+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 3.057224-8 2.248577-9 0.000000+0 0.000000+0 695 8457
0.000000+0 9.000000+0 0 0 6 22 695 8457
1.000000+0 0.000000+0 1.594316+1 1.717449+0 0.000000+0 0.000000+0 695 8457
8.933180+2 8.389285+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 2.299821-5 2.149379-6 0.000000+0 0.000000+0 695 8457
1.009506+3 1.153364+2 0 0 6 0 695 8457
2.000000+0 0.000000+0 1.977473-5 2.251900-6 0.000000+0 0.000000+0 695 8457
1.041890+3 1.442507+2 0 0 6 0 695 8457
2.000000+0 0.000000+0 2.227722-7 3.076247-8 0.000000+0 0.000000+0 695 8457
1.043483+3 1.142704+2 0 0 6 0 695 8457
2.000000+0 0.000000+0 1.270781-5 1.399605-6 0.000000+0 0.000000+0 695 8457
1.050559+3 8.845322+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.362449-6 1.142428-7 0.000000+0 0.000000+0 695 8457
1.184554+3 1.221556+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.944496-6 1.997225-7 0.000000+0 0.000000+0 695 8457
1.223789+3 1.236488+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.180502-6 1.194963-7 0.000000+0 0.000000+0 695 8457
1.263857+3 1.268012+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.822705-8 1.852793-9 0.000000+0 0.000000+0 695 8457
8.571900+3 8.571899+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 5.089932-4 9.021782-5 0.000000+0 0.000000+0 695 8457
8.596400+3 8.596400+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 9.910901-4 1.756683-4 0.000000+0 0.000000+0 695 8457
9.528660+3 9.528660+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 6.294193-5 1.115631-5 0.000000+0 0.000000+0 695 8457
9.531810+3 9.531810+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 1.230566-4 2.181148-5 0.000000+0 0.000000+0 695 8457
9.605550+3 9.605550+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 8.509015-8 1.508202-8 0.000000+0 0.000000+0 695 8457
9.605939+3 9.605939+1 0 0 6 0 695 8457
2.000000+0 0.000000+0 1.230276-7 2.180635-8 0.000000+0 0.000000+0 695 8457
9.811600+3 9.811600+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 3.697443-5 3.905280-6 0.000000+0 0.000000+0 695 8457
9.844200+3 9.844200+1 0 0 6 0 695 8457
1.000000+0 0.000000+0 7.176153-5 7.579531-6 0.000000+0 0.000000+0 695 8457
1.093760+4 1.093760+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 4.779354-6 5.048007-7 0.000000+0 0.000000+0 695 8457
1.094200+4 1.094200+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 9.337615-6 9.862492-7 0.000000+0 0.000000+0 695 8457
1.102820+4 1.102820+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 8.775789-9 9.26908-10 0.000000+0 0.000000+0 695 8457
1.102880+4 1.102880+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.265867-8 1.337023-9 0.000000+0 0.000000+0 695 8457
1.106050+4 1.106050+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 7.794889-8 8.233047-9 0.000000+0 0.000000+0 695 8457
1.106070+4 1.106070+2 0 0 6 0 695 8457
1.000000+0 0.000000+0 1.494700-7 1.578719-8 0.000000+0 0.000000+0 695 8457
695 8 0
695 0 0
0.000000+0 0.000000+0 0 0 0 0 0 0 0
-1 0 0

Some files were not shown because too many files have changed in this diff Show More