forked from arfc/saltproc
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request arfc#165 from yardasol/openmc-msbr-model
OpenMC MSBR model and data
- Loading branch information
Showing
14 changed files
with
2,126 additions
and
57 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
## MSBR Model | ||
|
||
This model is based on the following technical report: | ||
|
||
Robertson, R. C. (1971). Conceptual Design Study of a Single-Fluid Molten-Salt Breeder Reactor. (ORNL--4541). ORNL. | ||
|
||
For a complete discussion of the model, please see Chapter 4 in: | ||
|
||
Yardas, O. (2023). Implementation and validation of OpenMC in SaltProc [MS Thesis, University of Illinois at Urbana-Champaign]. | ||
|
||
|
||
## Key features | ||
- Zone IB | ||
- Zone IIA | ||
- 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 as opposed to dished in the reference specification) | ||
|
||
## Missing from model | ||
- Zone IA | ||
- Support structure above the main core | ||
- Radial reflector axial ribs | ||
- Radial reflector retaining rings | ||
- Zone IIB Graphite Dowel pins and Hastelloy N eliptical pins | ||
- Salt inlets and outlest | ||
- Zone I eliptical graphite sealing pins |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Oops, something went wrong.