Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenMC MSBR model and data #165

Merged
merged 55 commits into from
Dec 6, 2022
Merged
Show file tree
Hide file tree
Changes from 47 commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
a9038a6
add notebook and script to generate msbr openmc model
yardasol Sep 25, 2022
88c3d8d
typo fixes in process_j312.bash
yardasol Sep 26, 2022
a7c208f
remove redundant surfacs in openmc_model.py
yardasol Sep 26, 2022
ebcacc7
add missing python files
yardasol Sep 29, 2022
b6bf524
fix plot and settings generation
yardasol Sep 29, 2022
dd2a0e1
use only 900K in process_j312.bash
yardasol Oct 4, 2022
46c0d25
add additional xsdata scripts; update xsdata readme
yardasol Oct 4, 2022
670538f
add endfb71 library compatible msbr example
yardasol Oct 4, 2022
3ede9a2
add endfb71 library compatible msbr example
yardasol Oct 4, 2022
7cec6fb
fix divergent openmc and serpent model
yardasol Oct 5, 2022
452f06d
Merge remote-tracking branch 'origin/openmc-msbr-model' into openmc-m…
yardasol Oct 5, 2022
aaae55f
reduce region complexities in openmc model
yardasol Oct 18, 2022
90f3142
fix merge conflict
yardasol Oct 18, 2022
af46265
fix merge conflict
yardasol Oct 18, 2022
493fe06
Merge remote-tracking branch 'origin/openmc-msbr-model' into openmc-m…
yardasol Oct 19, 2022
b198664
optimize model (notebook only for now)
yardasol Oct 19, 2022
375a100
Revert "reduce region complexities in openmc model"
yardasol Oct 20, 2022
4cf717e
add optimized model alongside serpent-idential model
yardasol Oct 20, 2022
d40074b
add optimized model alongside serpent-idential model
yardasol Oct 20, 2022
2c4ab77
Merge remote-tracking branch 'origin/openmc-msbr-model' into openmc-m…
yardasol Oct 24, 2022
95b58c5
fix missing control rods, smallest octader
yardasol Oct 24, 2022
c76c993
remove unneeded outside cells and add missing cell descriptors in
yardasol Oct 24, 2022
ca32120
change plotting colors of Serpent model geometry
yardasol Oct 24, 2022
29731c0
remove unneeded files
yardasol Oct 24, 2022
3375a0c
remove redundant surfaces Always
yardasol Oct 24, 2022
525aecc
remove unneeded element bounding surfaces
yardasol Oct 26, 2022
f3af270
add docstrings, comments; clean up some variable names
yardasol Oct 26, 2022
134648c
remove notebooks
yardasol Oct 26, 2022
c458c90
add changes to release notes
yardasol Oct 26, 2022
82683c1
openmc_model.py -> openmc_msbr_model.py
yardasol Oct 26, 2022
0e59520
formatting fixes
yardasol Oct 26, 2022
ed0b346
fix metastable flag in conversion script
yardasol Oct 28, 2022
95317d5
fix scripts README
yardasol Oct 28, 2022
804f8f8
add diluted material to get correct initial tallys in serpent
yardasol Oct 28, 2022
4e2b602
Revert "fix metastable flag in conversion script"
yardasol Oct 29, 2022
1ca5b79
fix overlapping cells in optimized model
yardasol Oct 29, 2022
b868612
syntax fixes in model generation file
yardasol Oct 30, 2022
481f07e
add @samgdotson suggestions
yardasol Nov 1, 2022
f2a22c6
remove optimized geometry code
yardasol Nov 1, 2022
bfeee00
add diluted material serpent file; consistency changes
yardasol Nov 1, 2022
f09907b
Added README
yardasol Nov 1, 2022
b7056f8
add saltproc input file for endfb71 msbr example
yardasol Nov 2, 2022
f3af3d8
remove duplicate material files
yardasol Nov 2, 2022
ea049a9
remove cruft lines from core_elements.py
yardasol Nov 2, 2022
d4ba81b
add lines in endfb71 script to fix Am242 spec
yardasol Nov 9, 2022
82df38e
fix incorrect script name in scripts README
yardasol Nov 9, 2022
0694808
fix openmc model material compositons
yardasol Nov 14, 2022
4f8ffd6
IA elements are actually IB elements
yardasol Nov 16, 2022
70fdb62
Revert "fix openmc model material compositons"
yardasol Nov 17, 2022
a9ae969
add default values to shared_elem_geometry
yardasol Nov 17, 2022
896f5ad
Add stochastic volume calculation to openmc model
yardasol Nov 18, 2022
4021cf5
fix zone names in serpent model
yardasol Nov 18, 2022
6ee2f36
fix control rod specs
yardasol Nov 18, 2022
2aac957
fix READMEs
yardasol Dec 1, 2022
c1a2dd2
add machinery to obtain fission-q and depletion chain data files from…
yardasol Dec 5, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion doc/releasenotes/v0.5.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ New Features
Describe any new features to the code.

- ``openmc`` support via `DepcodeOpenMC`
- OpenMC compatible MSBR model.



Expand Down Expand Up @@ -81,7 +82,9 @@ Script Changes
- Add ``SERPENT_DATA`` and ``SERPENT_ACELIB`` variables to ``.bashrc``

- A new script, ``scripts/ci/openmc-xs.bash``, that downloads the OpenMC HDF5 cross section library.

- A new script, ``download_endfb71.bash``, that downloads the ENDF/B 7.1 cross section library -- including thermal scattering, decay, and fission yield data -- in ACE format.
- A new script, ``process_endfb71_to_openmc.bash``, that converts the library created by ``download_endfb71.bash`` into an OpenMC-usable HDF5 format. Requires OpenMC to be installed from source to use.
- A new script ``openmc_msbr_model.py``, that creates an OpenMC-usable MSBR model based on the Serpent MSBR model.


Python API Changes
Expand Down
27 changes: 27 additions & 0 deletions examples/msbr/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## MSBR Model

Based on the design paper by Robertson, 1971

Figure 3.27, pg 46
Figure 3.4, pg 17
Figure 3.5, pg 18
Figure 3.3, pg 16

Model features:
- Simplified Zone IA (graphite element is idential Zone IIA in the model, does not match original paper spec)
Copy link
Contributor

@ZoeRichter ZoeRichter Nov 16, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

small typo, "identical to Zone IIA"

Suggested change
- Simplified Zone IA (graphite element is idential Zone IIA in the model, does not match original paper spec)
- Simplified Zone IA (graphite element is identical Zone IIA in the model, does not match original paper spec)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch!

- Simplified Zone IIA (graphite element does not match the original spec)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checking to make sure I understand this correctly: Zone IA is identical to Zone IIA in the model, and neither match the specifications of Zone IIA from the paper? Could you mention how you changed Zone IIA in your model, compared to the specs?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checking to make sure I understand this correctly: Zone IA is identical to Zone IIA in the model, and neither match the specifications of Zone IIA from the paper?

I've been working on chapter 4 of my thesis which is a descriptin of the MSBR reference design, as well as the CSG model, and I've come to learn that this statement is actually incorrect. What is called "zone IA" in the model actually matches more closely in dimension to zone IB. I made a PR to adjust this, but failed to update the README.

Could you mention how you changed Zone IIA in your model, compared to the specs?

I plan to overhaul the README with a summary of Chapter 4 of my thesis once that chapter is complete. Stay tuned for this.

- Simplified Zone IIB (graphite slabs are constructed from cylindrical sectors, and so do not have a consistent width; the last gap in the ccw direction in each octant is smaller than the other gaps, which all have the same dimension)
- Control rod elements (A Guess, as no spec was provided)
- Radial reflectors.
- Simplified axial reflectors (flat and cover more than what the MSBR does)

Missing from model:
- Zone IB
- Top part of core (filled with salt?)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is in the top of the core in the model? Is it just salt?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

msbr_full_xz_ref

This is the xz-cross section of the core. I'm not sure what to call that rectangular bit sitting on top of the "main" vessel, but it seems to be part of the core. This is what I was referring to.

- Radial reflector axial ribs
- Radial reflector retaining rings
- Upper salt plenum
- Zone IIB Graphite Dowel pins and Hastelloy N eliptical pins
- Salt inlets and outlest
- Top and bottom dished heads
- Zone I eliptical graphite sealing pins
103 changes: 103 additions & 0 deletions examples/msbr/control_rods.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import openmc
import numpy as np

def control_rod(gr_sq_neg,
gr_extra_regions,
inter_elem_channel,
fuel_hole,
fuel,
moder):
"""Create universe for control rod element with control rod fully inserted.
Based on specification in Roberton, 1971.

Parameters
----------
gr_sq_neg : openmc.Intersection
The region bounding the outer surface of the 6 in. x 6 in. graphite
element.
gr_extra_regions : list of (openmc.Region, str)
'Add-on' regions and their names for the graphite element.
Includes ribs, rib tips, and gap-filling regions.
inter_elem_channel : openmc.Region, list of (openmc.Region, str)
Inter-element channel region(s).
fuel_hole : openmc.ZCylinder
Central fuel hole in graphite element.
fuel : openmc.Material
Fuel salt material
moder : openmc.Material
Graphite material

Returns
-------
cr : openmc.Universe
Univerese for control rod element with control rod fully insterted.
"""

s1 = openmc.ZCylinder(r=4.7625, name='control_rod')

c1 = openmc.Cell(fill=moder, region=-s1, name='control_rod')
c2 = openmc.Cell(fill=fuel, region=(+s1 & -fuel_hole), name='cr_fuel_inner')
c3 = openmc.Cell(fill=moder, region=(+fuel_hole &
gr_sq_neg &
inter_elem_channel),
name='cr_moderator')
c4 = openmc.Cell(fill=fuel, region= (~gr_sq_neg & inter_elem_channel),
name='cr_fuel_outer')
#universe_id=3
cr = openmc.Universe(name='control_rod', cells=[c1, c2, c3, c4])

for (reg, name) in gr_extra_regions:
cr.add_cell(openmc.Cell(fill=moder, region=reg,
name=f'cr_moderator_{name}'))

return cr

def control_rod_channel(gr_sq_neg,
gr_extra_regions,
inter_elem_channel,
fuel_hole,
fuel,
moder):
"""Create universe for control rod element with control rod fully withdrawn.
Based on specification in Roberton, 1971.

Parameters
----------
gr_sq_neg : openmc.Intersection
The region bounding the outer surface of the 6 in. x 6 in. graphite
element.
gr_extra_regions : list of (openmc.Region, str)
'Add-on' regions and their names for the graphite element.
Includes ribs, rib tips, and gap-filling regions.
inter_elem_channel : openmc.Region, list of (openmc.Region, str)
Inter-element channel region(s).
fuel_hole : openmc.ZCylinder
Central fuel hole in graphite element.
fuel : openmc.Material
Fuel salt material
moder : openmc.Material
Graphite material

Returns
-------
crc : openmc.Universe
Universe for control rod element with control rod fully withdrawn.
"""

c1 = openmc.Cell(fill=fuel, region=(-fuel_hole), name='crc_fuel_inner')

c2 = openmc.Cell(fill=moder, region=(+fuel_hole &
gr_sq_neg &
inter_elem_channel),
name='crc_moderator')
c3 = openmc.Cell(fill=fuel, region=(~gr_sq_neg & inter_elem_channel),
name='crc_fuel_outer')

# universe_id=4
crc = openmc.Universe(name='control_rod_channel', cells=[c1, c2, c3])

for (reg, name) in gr_extra_regions:
crc.add_cell(openmc.Cell(fill=moder, region=reg,
name=f'crc_moderator_{name}'))

return crc
Loading