SNAP 8 Experimental Reactor (S8ER) Multiphysics Model
Contact: Isaac Naupa, iaguirre6.at.gatech.edu Contact: Stefano Terlizzi, sbt5572.at.psu.edu
Model link: S8ER Model
Introduction
The SNAP8ER is a good stress test for the MOOSE-based computational tools, specifically GRIFFIN due to its small size, high leakage, sensitivity to few group parameters, and material composition.
Some aims of this model was to reduce the use of resources external to MOOSE, i.e. Cubit and to simplify the workflow from cross section generation to full griffin model. For this reason, the mesh is fully generated inside MOOSE using a variety of Mesh Generator Objects. Also for this reason, the DFEM-SN Transport Scheme, rather than the CFEM-Diffusion Scheme is used in the neutronic model. This allows us to have more a direct workflow from generation of the few group parameters and our griffin model, such as avoiding the generation of SPH correction factors, often needed for good agreement between griffin and reference solutions when using CFEM-Diffusion. DFEM-SN is also heavilyy optimized for parallel computation and comes in handy for larger problems such as this.
Generation of Few Group Parameters
For generation of the reference solution and neutronic data the monte carlo code Serpent was used. It must be noted that this model is quite sensitive to the energy structure and spatial resolution used in the generation of the few group parameters. Various sensitivity studies were conducted to find the ideal parameters that were conducive to good agreement between Griffin and Serpent.
Serpent Model
For the serpent model, only the the active core region including core barrel and internal reflectors were modeled. External reflector control drums are not included in this model, but will be included in future updates.
% --- SNAP 8 Core Model ---------
/*
General comments:
Core Modeling completed to allow for preliminary dry critical configuration
comparison with NAA-SR-9642. Work total excess reactivity is 5.7%, this was done
via implementing SS316 layering in core cylinder, Sm2O3 poisoning in fuel, and
removal of hexagonal vertices in reflector material.
*/
% --- Problem title:
set title "SNAP 8"
% --- Cross section library file path:
set acelib "/hpc-common/data/serpent/xsdata/s2v0_endfb71/s2v0_endfb71.xsdata"
% --- Materials:
include "SNAP8ER_f300c300r300.mat"
% ------------------------------------------------------------
/************************
* Geometry definitions *
************************/
% ---------------------
% Fuel Pin Definitions
% ---------------------
% --- Fuel Pin (0.56in OD, 0.01in Hastelloy N clad, 0.0022in Ceramic Coating, 0.0016 He gap)
% Ceramic thickness can be found here: SNAP and Al Fuel Summary Report, pg. 4
% Other dimensions: NAA-SR-9642, pg. 19
pin 100
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 200
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 400
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 500
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 600
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 700
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 800
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 900
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
% --- Void Pin
pin 300
nak
% ---------------------
% Surface Definitions
% ---------------------
% --- Cylindrical Surface for reactor core boundary, 9.352in OD (NAA-SR-9642, pg. 13)
surf S5 cyl 0.0 0.0 11.87704 % -18.3769 18.3769
surf SUG cyl 0.0 0.0 11.87704 % 18.3769 19.2500 % for upper grid plate
surf SLG cyl 0.0 0.0 11.87704 %-19.1707 -18.3769 % for lower grid plate
surf S12 cyl 0.0 0.0 11.718036 %-18.3769 18.3769
surf S13 cyl 0.0 0.0 11.93 %-18.3769 18.3769
surf S14 cyl 0.0 0.0 11.6926 %-18.3769 18.3769
surf SCube sqc 0.0 0.0 11.87704
% --- surfaces for drums
surf sDrum1 cyl 23.972012 0.0 11.9126% -18.3769 18.3769
surf sDrum4 cyl -23.972012 0.0 11.9126% -18.3769 18.3769
surf sDrum2 cyl 11.9860 20.7604 11.9126% -18.3769 18.3769
surf sDrum3 cyl -11.9860 20.7604 11.9126% -18.3769 18.3769
surf sDrum5 cyl -11.9860 -20.7604 11.9126% -18.3769 18.3769
surf sDrum6 cyl 11.9860 -20.7604 11.9126% -18.3769 18.3769
% --- surfaces for void near drums
surf sVDrum1 cyl 23.972012 0.0 11.95% -18.3769 18.3769
surf sVDrum4 cyl -23.972012 0.0 11.95% -18.3769 18.3769
surf sVDrum2 cyl 11.9860 20.7604 11.95% -18.3769 18.3769
surf sVDrum3 cyl -11.9860 20.7604 11.95% -18.3769 18.3769
surf sVDrum5 cyl -11.9860 -20.7604 11.95% -18.3769 18.3769
surf sVDrum6 cyl 11.9860 -20.7604 11.95% -18.3769 18.3769
% --- Cutoff at the end of hexagonal vertex for drums
surf sCut1 plane 0 20.9 0 436.81
surf sCut2 plane -18.0999 10.450 0 436.81
surf sCut3 plane -18.0999 -10.450 0 436.81
surf sCut4 plane 0 -20.9 0 436.81
surf sCut5 plane 18.0999 -10.45 0 436.81
surf sCut6 plane 18.0999 10.45 0 436.81
% --- Cutoff for stationary reflectors
surf sStatCut1 plane 0 18.9 0 357.21
surf sStatCut2 plane -16.3679 9.450 0 357.21
surf sStatCut3 plane -16.3679 -9.450 0 357.21
surf sStatCut4 plane 0 -18.9 0 357.21
surf sStatCut5 plane 16.3679 -9.45 0 357.21
surf sStatCut6 plane 16.3679 9.45 0 357.21
% --- surfaces for empty shims
surf sShimE1 plane 17.8206 0 0 317.5752
surf sShimE2 plane 8.9103 15.4331 0 317.5752
surf sShimE3 plane -8.9103 15.4331 0 317.5752
surf sShimE4 plane -17.8206 0 0 317.5752
surf sShimE5 plane -8.9103 -15.4331 0 317.5752
surf sShimE6 plane 8.9103 -15.4331 0 317.5752
% --- surfaces for B shims
surf sShimB1 plane 21.9354 0 0 481.1618
surf sShimB2 plane 10.9677 18.9966 0 481.1618
surf sShimB3 plane -10.9677 18.9966 0 481.1618
surf sShimB4 plane -21.9354 0 0 481.1618
surf sShimB5 plane -10.9677 -18.9966 0 481.1618
surf sShimB6 plane 10.9677 -18.9966 0 481.1618
%--- BEGIN CUBOID DEFINITIONS
surf sCuboid1 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid2 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid3 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid4 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid5 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid6 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
% --- surfaces for internal reflectors
surf srefl1 plane 0 11.0668 0 122.4736
surf srefl2 plane -9.5841 5.5334 0 122.4736
surf srefl3 plane -9.5841 -5.5334 0 122.4736
surf srefl4 plane 0 -11.0668 0 122.4736
surf srefl5 plane 9.5841 -5.5334 0 122.4736
surf srefl6 plane 9.5841 5.5334 0 122.4736
% --- Begin Surface Definitions for Housing --- %
surf sHouseD1 cyl 23.972012 0.0 11.75385% -18.3769 18.3769
surf sHouseD4 cyl -23.972012 0.0 11.75385% -18.3769 18.3769
surf sHouseD2 cyl 11.9860 20.7604 11.75385% -18.3769 18.3769
surf sHouseD3 cyl -11.9860 20.7604 11.75385% -18.3769 18.3769
surf sHouseD5 cyl -11.9860 -20.7604 11.75385% -18.3769 18.3769
surf sHouseD6 cyl 11.9860 -20.7604 11.75385 -18.3769 18.3769
surf sHouseE1 plane 17.6619 0 0 311.9409
surf sHouseE2 plane 8.8309 15.2956 0 311.9409
surf sHouseE3 plane -8.8309 15.2956 0 311.9409
surf sHouseE4 plane -17.6619 0 0 311.9409
surf sHouseE5 plane -8.8309 -15.2956 0 311.9409
surf sHouseE6 plane 8.8309 -15.2956 0 311.9409
surf sHCut1 plane 0 20.7413 0 430.1995
surf sHCut2 plane -17.9624 10.3706 0 430.1995
surf sHCut3 plane -17.9624 -10.3706 0 430.1995
surf sHCut4 plane 0 -20.741 0 430.1995
surf sHCut5 plane 17.9624 -10.3706 0 430.1995
surf sHCut6 plane 17.9624 10.3706 0 430.1995
surf S8House hexxc 0.0 0.0 19.54145% -18.3769 18.3769
surf sHrefl1 plane 0 11.0414 0 121.9121
surf sHrefl2 plane -9.5621 5.5207 0 121.9121
surf sHrefl3 plane -9.5621 -5.5207 0 121.9121
surf sHrefl4 plane 0 -11.0414 0 121.9121
surf sHrefl5 plane 9.5621 -5.5207 0 121.9121
surf sHrefl6 plane 9.5621 5.5207 0 121.9121
% --- Hexagonal surfrace for reflector core boundaries, 9.352in OD + 0.0818 reflector radial thickness at thinnest point
% + 4.68 drum radius =23.972012 cm radial distance flat to flat x-hexagonal (NAA-SR-9642, pg. 13)
% Note that the actual thickest portion of the drum is noted as 3 inches which makes the half distance from flat point
% to flat point 9.352 OD + 0.0818 + 3 in drum thickness = 19.704812 cm distance flat to flat x-hexagonal (AI-AEC-13070
% Table 2 Sheet 2 of 4)
surf S8 hexxc 0.0 0.0 19.7002% -18.3769 18.3769
% ---------------------
% Cell Definitions
% ---------------------
% --- Latice x-type hexagonal, pitch = 0.57in (NAA-SR-9642, pg. 19)
% Lattice universe is part of universe "core"
% lat Uni Type x_o y_o UNI
lat C3critload 2 0.0 0.0 21 21 1.4478
300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300 800 800 800 800 800 800 800 300 300 300 % top row, 7 inside, ending in position 4
300 300 300 300 300 300 300 300 300 800 700 700 700 700 700 700 700 700 800 300 300 % 10 inside, ending in position 300
300 300 300 300 300 300 300 300 800 700 600 600 600 600 600 600 600 700 800 300 300 % 11 inside, ending in position 300
300 300 300 300 300 300 300 800 700 600 500 500 500 500 500 500 600 700 800 300 300 % 12 inside, ending in position 300
300 300 300 300 300 300 800 700 600 500 400 400 400 400 400 500 600 700 800 300 300 % 1300 inside, ending in position 300
300 300 300 300 300 800 700 600 500 400 900 900 900 900 400 500 600 700 800 300 300 % 14 inside, ending in position 300
300 300 300 300 800 700 600 500 400 900 200 200 200 900 400 500 600 700 800 300 300 % 15 inside, ending in position 300
300 300 300 800 700 600 500 400 900 200 100 100 200 900 400 500 600 700 800 300 300 % 16 inside, ending in position 300
300 300 300 700 600 500 400 900 200 100 100 100 200 900 400 500 600 700 300 300 300 % middle row, 15 inside, starting in position 4
300 300 800 700 600 500 400 900 200 100 100 200 900 400 500 600 700 800 300 300 300 % 15 inside, starting in position 300
300 300 800 700 600 500 400 900 200 200 200 900 400 500 600 700 800 300 300 300 300 % 14 inside, starting in position 300
300 300 800 700 600 500 400 900 900 900 900 400 500 600 700 800 300 300 300 300 300 % 1300 inside, starting in position 300
300 300 800 700 600 500 400 400 400 400 400 500 600 700 800 300 300 300 300 300 300 % 12 inside, starting in position 300
300 300 800 700 600 500 500 500 500 500 500 600 700 800 300 300 300 300 300 300 300 % 11 inside, starting in position 300
300 300 800 700 600 600 600 600 600 600 600 700 800 300 300 300 300 300 300 300 300 % 10 inside, starting in position 300
300 300 800 700 700 700 700 700 700 700 700 800 300 300 300 300 300 300 300 300 300 % 9 inside, starting in position 300
300 300 300 800 800 800 800 800 800 800 300 300 300 300 300 300 300 300 300 300 300 % bottom row, 7 are inside, starting in position 4
300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300
% --- These cells define the reactor i.e. cutting off the "core"
% universe with cylindrical boundaries
% --- fill definitions
cell cInternRefl1 1200 reflMix srefl1 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl2 1200 reflMix srefl2 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl3 1200 reflMix srefl3 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl4 1200 reflMix srefl4 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl5 1200 reflMix srefl5 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl6 1200 reflMix srefl6 -S14% -sHouseZ1 sHouseZ2
cell cHouseRefl1 1200 reflMix (sHrefl1 -srefl1 -S12):(S14 -S12 srefl1)
cell cHouseRefl2 1200 reflMix (sHrefl2 -srefl2 -S12):(S14 -S12 srefl2)
cell cHouseRefl3 1200 reflMix (sHrefl3 -srefl3 -S12):(S14 -S12 srefl3)
cell cHouseRefl4 1200 reflMix (sHrefl4 -srefl4 -S12):(S14 -S12 srefl4)
cell cHouseRefl5 1200 reflMix (sHrefl5 -srefl5 -S12):(S14 -S12 sHrefl5)
cell cHouseRefl6 1200 reflMix (sHrefl6 -srefl6 -S12):(S14 -S12 srefl6)
cell cIntRefCore reactor fill 1200 (-S12 sHrefl1):(-S12 sHrefl2):(-S12 sHrefl3):(-S12 sHrefl4):(-S12 sHrefl5):(-S12 sHrefl6)
cell cCore reactor fill C3critload -S12 -sHrefl1 -sHrefl2 -sHrefl3 -sHrefl4 -sHrefl5 -sHrefl6
cell cCoreWall 1200 ss316 S12 -S5
cell cBarrel reactor fill 1200 S12 -S5
cell voidCell reactor void S5 -SCube
%surf cuty px 0
%surf cuthex plane 0 0 0 25.98076211350 15 0 0 0 1
% --- Cell cIN is filled with universe "core", also its important to keep in mind that
% the "0" universe is the universe for which outside needs to be defined.
% Serpent gives the warning that the '0' universe should be the only one defining outside
% although this is not strictly true based on serpent-2 documentation.
%cell cIN 0 fill reactor cuty -cuthex -SCube
cell cIN 0 fill reactor -SCube
% --- Cell cOUT is defined as everything outside the cubic cell
cell cOuT 0 outside SCube
% ------------------------------------------------------------
/******************
* Run parameters *
******************/
% --- Boundary condition (1 = black, 2 = reflective, 3 = periodic)
set bc 1 1 2
% --- Neutron population: 100000 neutrons per cycle, 60 active / 20 inactive cycles
set pop 1000000 100 40
% --- XY-plot (3)
plot 31 1000 1000 %-19.0
plot 31 1000 1000 18.2
plot 31 1000 1000 -17.8
plot 21 1000 1000
%plot 11 1000 1000
% --- XY-meshplot (3), which is 700 by 700 pixels and covers the whole geometry
mesh 3 900 900
mesh 2 900 900
%branch Fhi stp UZrH -6.0968 600
%branch dens repm UZrH UZrH_dens
%set power 1000
%dep daystep 10 20 30
set gcu 300 100 200 400 500 600 700 800 900 1200
ene sxtngroup 1 2.53E-08 1.00E-07 4.00E-07 1.00E-06 3.00E-06 1.00E-05 3.00E-05 1.00E-04 5.50E-04 3.00E-03 1.70E-02 1.00E-01 4.00E-01 9.00E-01 1.40E+00 3.00E+00 1.00E+01
set nfg sxtngroup
det ring1 de eqLet du 100
det ring2 de eqLet du 200
det ring3 de eqLet du 900
det ring4 de eqLet du 400
det ring5 de eqLet du 500
det ring6 de eqLet du 600
det ring7 de eqLet du 700
det ring8 de eqLet du 800
det ring9 de eqLet du 300
det ref de eqLet du 1200
ene eqLet 3 1500 1e-9 2e1
%det ringpowers dr -8 void dx -10.71 10.71 17 dy -10.71 10.71 17
(microreactors/s8er/serpent/SNAP8ER_C3_2D_NODRUMS_WET_1_1.i)A radial ring spatial resolution was used for generation of the few group parameters 8 ring fuel layers, 1 coolant ring layer, and 1 internal reflector and core barrel ring layer for a total of 10 radial ring layers. Serpent uses universes to define spatial domains for generation of few group parameters, below is a table defining each universe. This information will be used in the griffin model to map neutronic data to the mesh.
Table 1: Radial Ring Universe Mapping
Radial Layer | Universe ID | Universe Material/Region |
---|
1 | 100 | Fuel Channel |
2 | 200 | Fuel Channel |
3 | 900 | Fuel Channel |
4 | 400 | Fuel Channel |
5 | 500 | Fuel Channel |
6 | 600 | Fuel Channel |
7 | 700 | Fuel Channel |
8 | 800 | Fuel Channel |
9 | 300 | Coolant Channel |
10 | 1200 | Internal Reflector + Core Barrel |
A 16 energy few group structure documented in (Swenson, 1969) was used for the generation of few group parameters.
Table 2: Few Group Energy Structure
Group | Lower Limit (eV) |
---|
0 | 10E+06 |
1 | 3E+06 |
2 | 1.4E+06 |
3 | 0.9E+06 |
4 | 0.4E+06 |
5 | 0.1E+06 |
6 | 17E+03 |
7 | 3E+03 |
8 | 0.55E+03 |
9 | 100 |
10 | 30 |
11 | 10 |
12 | 3 |
13 | 1 |
14 | 0.4 |
15 | 0.1 |
16 | 0.025 |
State Points
Reference data at each state point are generated for each tabulation parameter: fuel and coolant temperature, and each tabulation point: 300K, 600K, 900K, 1200K. This leads to a total of state points. The reflector temperature and the coolant density are maintained constant for each statepoint. Future updates to the model will include these effects.
Table 3: Serpent Model State Points
Case | Grid Index | Fuel Temperature (K) | Coolant Temperature (K) |
---|
1 | 1 1 | 300 | 300 |
2 | 1 2 | 300 | 600 |
3 | 1 3 | 300 | 900 |
4 | 1 4 | 300 | 1200 |
5 | 2 1 | 600 | 300 |
6 | 2 2 | 600 | 600 |
7 | 2 3 | 600 | 900 |
8 | 2 4 | 600 | 1200 |
9 | 3 1 | 900 | 300 |
10 | 3 2 | 900 | 600 |
11 | 3 3 | 900 | 900 |
12 | 3 4 | 900 | 1200 |
13 | 4 1 | 1200 | 300 |
14 | 4 2 | 1200 | 600 |
15 | 4 3 | 1200 | 900 |
16 | 4 4 | 1200 | 1200 |
Preparation of Neutronic Data for Griffin
Now having all the reference neutronic data generated by serpent, the data must be prepared for use in our griffin model. This is done through ISOXML, a general toolkit aimed at handling large multigroup libraries. This is also comes in handy for facilitating the coupling process and handling feedback effects by using the data generated for our various state points.
<ISOXML Format="SERPENT2" Name="core_2D_nodrums_16G_WET_XS" NGroup="16" NDLGroup="6" Description="core_2D_nodrums_16G_WET">
<Controls>
<ScatMatrixTol>1E-32</ScatMatrixTol>
<ForceConsistency>false</ForceConsistency>
<Debug>false</Debug>
<EnergyUnit>MeV</EnergyUnit>
</Controls>
<Librarywise DataType="macro" L="1" LType="1">
<Tabulation>Tfuel Tcool</Tabulation>
<Tfuel>300 600 900 1200</Tfuel>
<Tcool>300 600 900 1200</Tcool>
<AddData>Total Fission Absorption NGamma</AddData>
<Directory>./</Directory>
<BaseFile>SNAP8ER_C3_2D_NODRUMS_WET</BaseFile>
<BaseExtension>i</BaseExtension>
</Librarywise>
</ISOXML>
(microreactors/s8er/serpent/core_2D_nodrums_16G_WET.xml)Full documentation on the serpent to ISOXML workflow can be found here. ISOXML will use the grid indexes for each state point and parse the serpent results files and construct the multigroup library for use in our griffin model.
Griffin Model
In serpent, the fuel, ceramic, absorber, gap, cladding, coolant, internal reflectors, and barrel are all modeled explicitly. However, the homogenized universe data is generated at the channel level, meaning in griffin the mesh will also be done at the channel level to correspond with the homogenized universe data.
Geometry
The main tools used to generate this mesh were MOOSE based meshgenerators, primarily the PolygonConcentricCircleMeshGenerator for a fuel channel, HexIDPatternMeshGenerator for a lattice of fuel channels, the PeripheralRingMeshGenerator for the internal reflector and barrel, and the PlaneDeletionGenerator for adjustments to the geometry.
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '1 1'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem2]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '2 2'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem3]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '3 3'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem4]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '4 4'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem5]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '5 5'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem6]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '6 6'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem7]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '7 7'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem8]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '8 8'
quad_center_elements = true
smoothing_max_it = 3
[]
[air_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '9 9'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 fuel_elem2 fuel_elem3 fuel_elem4 fuel_elem5 fuel_elem6 fuel_elem7 fuel_elem8 air_elem1'
# Pattern ID 0 1 2 3 4 5 6 7 8
background_intervals = 1
background_block_id = '10'
background_block_name = 'AIR'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern = '8 7 7 7 7 7 7 7 8;
7 6 6 6 6 6 6 6 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
8 6 5 4 3 2 1 0 0 0 1 2 3 4 5 6 8 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 6 6 6 6 6 6 6 7 ;
8 7 7 7 7 7 7 7 8'
external_boundary_id = '10'
external_boundary_name = 'active_outer'
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = fuel_assem
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 'active_outer'
external_boundary_name = 'core_outer'
external_boundary_id = '11'
peripheral_ring_block_id = 11
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 'core_outer'
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 'core_outer'
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 'core_outer'
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 'core_outer'
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 'core_outer'
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 'core_outer'
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 'core_outer'
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 'core_outer'
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 'core_outer'
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 'core_outer'
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 'core_outer'
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 'core_outer'
[]
[set_mat_id]
type = SubdomainExtraElementIDGenerator
input = 'scube_6'
subdomains = '1 2 3 4 5 6 7 8 9 10 11'
extra_element_id_names = 'material_id'
extra_element_ids = '100 200 900 400 500 600 700 800 300 300 1200'
[]
[]
(microreactors/s8er/core_2D_griffin_coupled.i)9 individual fuel channels are modeled, 1 for each corresponding radial ring
The fuel channels are mapped into the lattice in the appropiate arrangement from the homogenized universe data.
A peripheral ring is enclosed around the lattice to represent the internal reflector + core barrel (last radial layer)
The mesh is cut along the ring at various points to preserve the geometry and dimension of the reference serpent model.
The blocks are mapped to their appropriate material ID.
A table with corresponding mapping between the Serpent Universe ID and the Griffin Block ID is shown below.
Table 4: Homogenized Universe Mapping
Serpent Universe ID | Material ID | Block ID | Material/Region |
---|
100 | 100 | 1 | Fuel Channel |
200 | 200 | 2 | Fuel Channel |
900 | 900 | 3 | Fuel Channel |
400 | 400 | 4 | Fuel Channel |
500 | 500 | 5 | Fuel Channel |
600 | 600 | 6 | Fuel Channel |
700 | 700 | 7 | Fuel Channel |
800 | 800 | 8 | Fuel Channel |
300 | 300 | 9, 10 | Coolant Channel |
1200 | 1200 | 11 | Internal Reflector + Core Barrel |
TransportSystems
As stated previously, the Griffin model uses the newly optimized DFEM-SN transport scheme to solve for the eigenvalue. Here a 16 group energy structure is used with vacuum boundary conditions on the outer edge of the core barrel. The solver uses 9 azimuthal and 3 polar angles, typically the default for these are 6 and 2 respectively but because this system is highly anisotropic, a higher order of angles is required for solution fidelity. The benefit with using the DFEM-SN scheme rather than the stand CFEM-Diffusion scheme, is the removal of several layers of calculation for the same fidelity, however at the expense of a more expensive computation. The DFEM-SN scheme is optimized and scales well with problem size.
[TransportSystems]
# Eigenvalue Problem
particle = neutron
equation_type = eigenvalue
# Sixteen Group XS Structure
G = 16
VacuumBoundary = 'core_outer'
# DFEM-Transport
[dsn]
scheme = DFEM-SN
#n_delay_groups = 6
family = MONOMIAL
order = FIRST
AQtype = Gauss-Chebyshev
NPolar = 3 # use >=2 for final runs (4 sawtooth nodes sufficient)
NAzmthl = 9 # use >=6 for final runs (4 sawtooth nodes sufficient)
NA = 1
sweep_type = asynchronous_parallel_sweeper
using_array_variable = true
collapse_scattering = true
hide_angular_flux = true
# verbose = 3
[]
[]
(microreactors/s8er/core_2D_griffin_coupled.i)Materials
Through the use of the CoupledFeedbackMatIDNeutronicsMaterial, by the mapping of materialIDs
to the mesh done earlier, this object conveniently handles the direct mapping of neutronic data into the mesh. The object also has a feature to correct the neutronic data used in a material by adjusting the cross sections for a correction volume. This is done for the internal reflector and core barrel region to more appropriately match the reference model.
[Materials]
[core]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '1 2 3 4 5 6 7 8 9 10'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
#volume_adjuster = core_vol_adjust #to be fixed
[]
[int_ref]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '11'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
volume_adjuster = int_ref_vol_adjust
[]
[]
(microreactors/s8er/core_2D_griffin_coupled.i)Bison Model
Because bison is only taking the power distribution from the griffin model, we have the freedom to model each fuel channel component explicitly and hence we are able to capture unique heat transfer phenomena such as the gap radiative transfer and model thermal properties for each component. This model only captures heat conduction but future updates will include feedback from thermomechanical effects such as thermal expansion.
Geometry
The process for generating the Bison mesh is almost identical to the process described for the Griffin mesh, with a few extra steps. This time since we are modeling the explicit fuel element geometry, we use the PolygonConcentricCircleMeshGenerator to model concentric rings corresponding to the outer radii of each material in the fuel element.
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
ring_radii = '${fuel_radius} ${ceramic_radius_outer} ${gap_radius_outer} ${clad_radius_outer} '
ring_intervals = '1 1 1 1'
ring_block_ids = '1 2 3 4'
background_intervals = '1'
background_block_ids = '5'
quad_center_elements = true
smoothing_max_it = 3
[]
[coolant_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '1'
background_block_ids = '6'
quad_center_elements = true
smoothing_max_it = 3
external_boundary_id = '6'
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 coolant_elem1'
# Pattern ID 0 1
background_intervals = 1
background_block_id = '7'
background_block_name = 'coolant'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern = '1 0 0 0 0 0 0 0 1;
0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 1'
[]
[block_rename1]
type = RenameBlockGenerator
input = fuel_assem
old_block = '1 2 3 4 5 6 7'
new_block = 'fuel ceramic gap clad coolant coolant coolant'
[]
[bound_rename1]
type = RenameBoundaryGenerator
input = block_rename1
old_boundary = '3 5 7'
new_boundary = 'gap_inner gap_outer clad_outer'
[]
[inner_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = bound_rename1
primary_block = ceramic
paired_block = gap
new_boundary = 'gap_inner'
[]
[outer_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = inner_gap1
primary_block = clad
paired_block = gap
new_boundary = 'gap_outer'
[]
[del_gap1]
type = BlockDeletionGenerator
block = gap
input = outer_gap1
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = del_gap1
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 10000
peripheral_ring_block_id = 8
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 10000
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 10000
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 10000
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 10000
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 10000
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 10000
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 10000
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 10000
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 10000
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 10000
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 10000
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 10000
[]
[bound_rename2]
type = RenameBoundaryGenerator
input = scube_6
old_boundary = '10000'
new_boundary = 'void_outer'
[]
[]
(microreactors/s8er/core_2D_bison_coupled.i)Table 5: S8ER Bison Dimensions
Material/Region | Radius (m) |
---|
UZrH Radius | 0.0067564) |
Ceramic Outer Radius | 0.007130879 |
Gap Outer Radius | 0.006866719 |
Cladding Outer Radius | 0.007130879 |
Lattice Pitch | 0.007239 |
Kernels, AuxKernels, Functions
The Kernels used are the HeatConduction to solve the steady state heat conduction equation, as well as the CoupledForce to couple the power distribution from bison as the spatially dependent heat generation term.
[Kernels]
# Equation 0 (Heat conduction equation with heat generation).
[heat_conduction]
type = ADHeatConduction
variable = bison_temp
[]
[heat_source]
type = ADCoupledForce
variable = bison_temp
v = bison_norm_power_density
block = fuel
[]
[]
(microreactors/s8er/core_2D_bison_coupled.i)The AuxKernels used are a variety of function executors and variable normalizers for solving thermal properties that are temperature dependent, normalizing the power distribution for power conservation between Bison and Griffin, and for seperating the fuel, coolant, and reflector temperatures into individual variables to be used as the tabulation parameters.
[AuxKernels]
[aux_tk]
type = FunctionAux
function = tk_f
variable = aux_tk
block = fuel
[]
[aux_cp]
type = FunctionAux
function = cp_f
variable = aux_cp
block = fuel
[]
[aux_T_inf]
type = FunctionAux
function = T_inf_f
variable = aux_T_inf
block = clad
[]
[norm_Tfuel]
type = NormalizationAux
variable = bison_Tfuel
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tcool]
type = NormalizationAux
variable = bison_Tcool
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tintref]
type = NormalizationAux
variable = bison_Tintref
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_power_density]
type = NormalizationAux
variable = bison_norm_power_density
source_variable = bison_power_density
normal_factor = 1.26359177225 #1.265805981
execute_on = 'timestep_begin' #check
[]
[]
(microreactors/s8er/core_2D_bison_coupled.i)The Functions used include the thermal conductivity, and specific heat of the fuel as a function of temperature from (Swenson, 1969).
[Functions]
[tk_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '27.73992+bison_temp*0.027428444' #Models/SNAP10A_dimensions
[]
[cp_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '472.27104+bison_temp*0.7275728' #Models/SNAP10A_dimensions
[]
[T_inf_f]
type = ParsedFunction
expression = '${inlet_T_fluid}'
[]
[]
(microreactors/s8er/core_2D_bison_coupled.i)Materials
The thermal properties of each material are modeled through using GenericConstantMaterial. This allows you to set thermal properties such as the density, specific heat, and thermal conductivity. In the case of the fuel we have documented formulations for the specific heat and thermal conductivity as a function of temperature. This temperature dependence can implemented through the use of the HeatConductionMaterial which allows you to set material properties as a function of temperature.
[Materials]
[fuel_thermal_conduction]
# Metallic Uranium Zirc Hydride fuel conduction params.
type = ADHeatConductionMaterial
temp = bison_temp
specific_heat_temperature_function = cp_f
thermal_conductivity_temperature_function = tk_f
block = fuel
[]
# Metallic Uranium Zirc Hydride fuel density
[fuel_density]
type = ADGenericConstantMaterial
prop_names = 'density'
prop_values = '${fuel_density}'
block = fuel
[]
# Fluid ambient temperature.
# [T_infinity]
# #Models/SNAP10A_dimensions
# type = ADCoupledValueFunctionMaterial
# prop_name = 'T_infinity'
# function = 'if(x<180, 293.15+2.908240722*x, 816.48333)'
# v = 'aux_time'
# block = 2
# boundary = 'right'
# []
[clad_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${clad_density} ${clad_cp} ${ clad_tc}'
block = clad
[]
[gap_heat_transfer]
#Models/SNAP10A_dimensions
type = GenericConstantMaterial
prop_names = 'gap_conductance gap_conductance_dT'
prop_values = '${gap_tc} 0.0'
boundary = 'gap_inner gap_outer'
[]
# [gap_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${gap_dens} ${gap_cp} ${gap_tc}'
# block = gap
# []
[ceramic_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${ceramic_dens} ${ ceramic_cp} ${ ceramic_tc}'
block = ceramic
[]
[intref_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${intref_dens} ${intref_cp} ${ intref_tc}'
block = int_ref
[]
# [air_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${air_dens} ${air_cp} ${air_tc}'
# block = air
# []
[coolant_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${coolant_dens} ${coolant_cp} ${coolant_tc}'
block = coolant
[]
[]
(microreactors/s8er/core_2D_bison_coupled.i)Table 6: S8ER Thermal Parameters, from (Swenson, 1969), (AID, 1973)
Material/Region | Density (kg/m^3) | Specfic Heat (J/kg-K) | Thermal Conductivity (W/m-K) |
---|
UZrH | 5963.13 | 472.27 + T(0.72) | 27.73 + T(0.027) |
Ceramic | 2242.584 | 837.36 | 1.73 |
Gap | 0.0166 | 5193.16 | 0.34 |
Cladding | 8617.93 | 418.68 | 18.85 |
Internal Reflector | 1810.08 | 2721.42 | 131.53 |
Multiphysics Coupling
The multiphysics coupling is done through MOOSE's MultiApp system, where Griffin is the main driver and executes Bison as a subapp. In this model the power distribution is solved by Griffin, where it is then transferred to Bison to solve the temperature distribution, where then the temperature distribution is transferred back to Griffin to calculate the new power distribution with updated neutronic data from the temperature feedback. This process is iterated by the [Executioner]
until the system converges.
[MultiApps]
[bison_coupled]
type = FullSolveMultiApp
app_type = GriffinApp
input_files = 'core_2D_bison_coupled.i'
positions = '0 0 0'
[]
[]
(microreactors/s8er/core_2D_griffin_coupled.i)The data from each respective model is transfered using MOOSE's Transfers system. Since the meshes are tailored for each application, the differences in each mesh must be accounted for in the transfers. As described earlier, the Griffin mesh is generated at the channel level, while the Bison mesh is generated with explicit fuel components modeled. For this reason the MultiAppProjectionTransfer is used, which is handy when projecting field variables from one mesh to another. In this case the power generated in the Griffin fuel channel is transfered to only the fuel in Bison. For this reason, a volume normalization factor must be applied to the power density transfered so that power between models is conserved. The normalization factor is simply the ratio of the fuel channel to fuel volume.
The temperature distribution for each respective tabulation parameter i.e, fuel temperature and coolant temperature is transfered using the MultiAppInterpolationTransfer. This transfer is suitable for nodal variables such as variables in the LAGRANGE
family.
[Transfers]
[to_bison_power_density]
type = MultiAppProjectionTransfer
to_multi_app = bison_coupled
source_variable = griffin_power_density
variable = bison_power_density
[]
[from_bison_Tfuel]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tfuel
variable = griffin_Tfuel
[]
[from_bison_Tcool]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tcool
variable = griffin_Tcool
[]
[from_bison_Tintref]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tintref
variable = griffin_Tintref
[]
[]
(microreactors/s8er/core_2D_griffin_coupled.i)Referring back to the [Materials]
block, this is where the coupled feedback is taken into account. The CoupledFeedbackMatIDNeutronicsMaterial takes the tabulated neutronic data and uses temperature from bison to interpolate between statepoints. For this reason, Multiple transfers for each tabulation parameter are required so that the neutronic data can be properly interpolated between statepoints.
[Materials]
[core]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '1 2 3 4 5 6 7 8 9 10'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
#volume_adjuster = core_vol_adjust #to be fixed
[]
[int_ref]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '11'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
volume_adjuster = int_ref_vol_adjust
[]
[]
(microreactors/s8er/core_2D_griffin_coupled.i)Running the Model
The Discontinuous Finite Element Discrete Ordinate (DFEM-SN) solver in conjunction with the asynchronous parallel sweeper implemented in griffin for the inversion of the streaming operator allows to efficiently perform neutron transport calculations in a parallel fashion on unstructured mesh (Wang et al., 2021). Additionally, it allows to streamline the modeling and simulation pipeline due to the enhanced fidelity that renders the generation of equivalence parameters not essential (agreement with Serpent within few hundreds of pcm for the effective multiplication factor). The neutronic model coupled with heat conduction runs in one minute on one Sawtooth node composed of 48 processors.
[Executioner]
type = SweepUpdate
verbose = true
richardson_max_its = 50
richardson_value = eigenvalue
richardson_rel_tol = 1e-8
richardson_abs_tol = 1e-8
inner_solve_type = GMRes
max_inner_its = 2
fixed_point_max_its = 2
custom_pp = eigenvalue
custom_rel_tol = 1e-4
force_fixed_point_solve = true
[]
(microreactors/s8er/core_2D_griffin_coupled.i)The code is executed with the following lines.
mpiexec -n 48 griffin-opt -i core_2D_griffin_coupled.i
commentnote
More information about the SNAP Reactors may be found here.
References
- AID.
Snap 8 summary report.
9 1973.
URL: https://www.osti.gov/biblio/4393793, doi:10.2172/4393793.[BibTeX]
@article{SNAP8Summary,
author = "AID",
title = "SNAP 8 summary report",
institution = "Atomic Internation Division",
doi = "10.2172/4393793",
url = "https://www.osti.gov/biblio/4393793",
journal = "",
place = "United States",
year = "1973",
month = "9"
}
- Samuel Garcia, Isaac Naupa, Dan Kotlyar, and Ben Lindley.
Validation of snap8 criticality configuration experiments using serpent.
In Proceedings of ANS Winter Conference. 1 2022.[BibTeX]
@inproceedings{s8er_garcia2022,
author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
title = "Validation of SNAP8 Criticality Configuration Experiments using SERPENT.",
booktitle = "Proceedings of ANS Winter Conference",
place = "United States",
year = "2022",
month = "1"
}
- Isaac Naupa, Samuel Garcia, Stefano Terlizzi, Dan Kotlyar, and Ben Lindley.
Validation of snap8 criticality configuration experiments using neams tools.
In Submitted to Proceedings of M&C. 1 2022.[BibTeX]
@inproceedings{s8er_naupa2022,
author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley., Ben",
title = "Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools.",
booktitle = "Submitted to Proceedings of M\&C",
place = "United States",
year = "2022",
month = "1"
}
- L D Swenson.
Snap 8 development reactor nuclear analysis.
1 1969.
URL: https://www.osti.gov/biblio/4709921, doi:10.2172/4709921.[BibTeX]
@article{SNAP8Fuel,
author = "Swenson, L D",
title = "SNAP 8 DEVELOPMENT REACTOR NUCLEAR ANALYSIS.",
doi = "10.2172/4709921",
url = "https://www.osti.gov/biblio/4709921",
journal = "",
place = "United States",
year = "1969",
month = "1"
}
- Yaqi Wang, Zachary M. Prince, Joshua Thomas Hanophy, Changho Lee, Yeon Sang Jung, Hansol Park, Logan H. Harbour, and Javier Ortensi.
Performance improvements for the griffin transport solvers.
9 2021.
URL: https://www.osti.gov/biblio/1822446, doi:10.2172/1822446.[BibTeX]
@article{GriffPerf,
author = "Wang, Yaqi and Prince, Zachary M. and Hanophy, Joshua Thomas and Lee, Changho and Jung, Yeon Sang and Park, Hansol and Harbour, Logan H. and Ortensi, Javier",
title = "Performance Improvements for the Griffin Transport Solvers",
doi = "10.2172/1822446",
url = "https://www.osti.gov/biblio/1822446",
journal = "",
place = "United States",
year = "2021",
month = "9"
}
(microreactors/s8er/serpent/SNAP8ER_C3_2D_NODRUMS_WET_1_1.i)
% --- SNAP 8 Core Model ---------
/*
General comments:
Core Modeling completed to allow for preliminary dry critical configuration
comparison with NAA-SR-9642. Work total excess reactivity is 5.7%, this was done
via implementing SS316 layering in core cylinder, Sm2O3 poisoning in fuel, and
removal of hexagonal vertices in reflector material.
*/
% --- Problem title:
set title "SNAP 8"
% --- Cross section library file path:
set acelib "/hpc-common/data/serpent/xsdata/s2v0_endfb71/s2v0_endfb71.xsdata"
% --- Materials:
include "SNAP8ER_f300c300r300.mat"
% ------------------------------------------------------------
/************************
* Geometry definitions *
************************/
% ---------------------
% Fuel Pin Definitions
% ---------------------
% --- Fuel Pin (0.56in OD, 0.01in Hastelloy N clad, 0.0022in Ceramic Coating, 0.0016 He gap)
% Ceramic thickness can be found here: SNAP and Al Fuel Summary Report, pg. 4
% Other dimensions: NAA-SR-9642, pg. 19
pin 100
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 200
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 400
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 500
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 600
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 700
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 800
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
pin 900
UZrH 0.67564
ceramic 0.681228
Sm2O3 0.6812587
intatm 0.6858
hasteN 0.7112
nak
% --- Void Pin
pin 300
nak
% ---------------------
% Surface Definitions
% ---------------------
% --- Cylindrical Surface for reactor core boundary, 9.352in OD (NAA-SR-9642, pg. 13)
surf S5 cyl 0.0 0.0 11.87704 % -18.3769 18.3769
surf SUG cyl 0.0 0.0 11.87704 % 18.3769 19.2500 % for upper grid plate
surf SLG cyl 0.0 0.0 11.87704 %-19.1707 -18.3769 % for lower grid plate
surf S12 cyl 0.0 0.0 11.718036 %-18.3769 18.3769
surf S13 cyl 0.0 0.0 11.93 %-18.3769 18.3769
surf S14 cyl 0.0 0.0 11.6926 %-18.3769 18.3769
surf SCube sqc 0.0 0.0 11.87704
% --- surfaces for drums
surf sDrum1 cyl 23.972012 0.0 11.9126% -18.3769 18.3769
surf sDrum4 cyl -23.972012 0.0 11.9126% -18.3769 18.3769
surf sDrum2 cyl 11.9860 20.7604 11.9126% -18.3769 18.3769
surf sDrum3 cyl -11.9860 20.7604 11.9126% -18.3769 18.3769
surf sDrum5 cyl -11.9860 -20.7604 11.9126% -18.3769 18.3769
surf sDrum6 cyl 11.9860 -20.7604 11.9126% -18.3769 18.3769
% --- surfaces for void near drums
surf sVDrum1 cyl 23.972012 0.0 11.95% -18.3769 18.3769
surf sVDrum4 cyl -23.972012 0.0 11.95% -18.3769 18.3769
surf sVDrum2 cyl 11.9860 20.7604 11.95% -18.3769 18.3769
surf sVDrum3 cyl -11.9860 20.7604 11.95% -18.3769 18.3769
surf sVDrum5 cyl -11.9860 -20.7604 11.95% -18.3769 18.3769
surf sVDrum6 cyl 11.9860 -20.7604 11.95% -18.3769 18.3769
% --- Cutoff at the end of hexagonal vertex for drums
surf sCut1 plane 0 20.9 0 436.81
surf sCut2 plane -18.0999 10.450 0 436.81
surf sCut3 plane -18.0999 -10.450 0 436.81
surf sCut4 plane 0 -20.9 0 436.81
surf sCut5 plane 18.0999 -10.45 0 436.81
surf sCut6 plane 18.0999 10.45 0 436.81
% --- Cutoff for stationary reflectors
surf sStatCut1 plane 0 18.9 0 357.21
surf sStatCut2 plane -16.3679 9.450 0 357.21
surf sStatCut3 plane -16.3679 -9.450 0 357.21
surf sStatCut4 plane 0 -18.9 0 357.21
surf sStatCut5 plane 16.3679 -9.45 0 357.21
surf sStatCut6 plane 16.3679 9.45 0 357.21
% --- surfaces for empty shims
surf sShimE1 plane 17.8206 0 0 317.5752
surf sShimE2 plane 8.9103 15.4331 0 317.5752
surf sShimE3 plane -8.9103 15.4331 0 317.5752
surf sShimE4 plane -17.8206 0 0 317.5752
surf sShimE5 plane -8.9103 -15.4331 0 317.5752
surf sShimE6 plane 8.9103 -15.4331 0 317.5752
% --- surfaces for B shims
surf sShimB1 plane 21.9354 0 0 481.1618
surf sShimB2 plane 10.9677 18.9966 0 481.1618
surf sShimB3 plane -10.9677 18.9966 0 481.1618
surf sShimB4 plane -21.9354 0 0 481.1618
surf sShimB5 plane -10.9677 -18.9966 0 481.1618
surf sShimB6 plane 10.9677 -18.9966 0 481.1618
%--- BEGIN CUBOID DEFINITIONS
surf sCuboid1 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid2 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid3 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid4 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid5 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
surf sCuboid6 rect 19.7002 21.9354 -7.712 7.712 %-15.24 15.24
% --- surfaces for internal reflectors
surf srefl1 plane 0 11.0668 0 122.4736
surf srefl2 plane -9.5841 5.5334 0 122.4736
surf srefl3 plane -9.5841 -5.5334 0 122.4736
surf srefl4 plane 0 -11.0668 0 122.4736
surf srefl5 plane 9.5841 -5.5334 0 122.4736
surf srefl6 plane 9.5841 5.5334 0 122.4736
% --- Begin Surface Definitions for Housing --- %
surf sHouseD1 cyl 23.972012 0.0 11.75385% -18.3769 18.3769
surf sHouseD4 cyl -23.972012 0.0 11.75385% -18.3769 18.3769
surf sHouseD2 cyl 11.9860 20.7604 11.75385% -18.3769 18.3769
surf sHouseD3 cyl -11.9860 20.7604 11.75385% -18.3769 18.3769
surf sHouseD5 cyl -11.9860 -20.7604 11.75385% -18.3769 18.3769
surf sHouseD6 cyl 11.9860 -20.7604 11.75385 -18.3769 18.3769
surf sHouseE1 plane 17.6619 0 0 311.9409
surf sHouseE2 plane 8.8309 15.2956 0 311.9409
surf sHouseE3 plane -8.8309 15.2956 0 311.9409
surf sHouseE4 plane -17.6619 0 0 311.9409
surf sHouseE5 plane -8.8309 -15.2956 0 311.9409
surf sHouseE6 plane 8.8309 -15.2956 0 311.9409
surf sHCut1 plane 0 20.7413 0 430.1995
surf sHCut2 plane -17.9624 10.3706 0 430.1995
surf sHCut3 plane -17.9624 -10.3706 0 430.1995
surf sHCut4 plane 0 -20.741 0 430.1995
surf sHCut5 plane 17.9624 -10.3706 0 430.1995
surf sHCut6 plane 17.9624 10.3706 0 430.1995
surf S8House hexxc 0.0 0.0 19.54145% -18.3769 18.3769
surf sHrefl1 plane 0 11.0414 0 121.9121
surf sHrefl2 plane -9.5621 5.5207 0 121.9121
surf sHrefl3 plane -9.5621 -5.5207 0 121.9121
surf sHrefl4 plane 0 -11.0414 0 121.9121
surf sHrefl5 plane 9.5621 -5.5207 0 121.9121
surf sHrefl6 plane 9.5621 5.5207 0 121.9121
% --- Hexagonal surfrace for reflector core boundaries, 9.352in OD + 0.0818 reflector radial thickness at thinnest point
% + 4.68 drum radius =23.972012 cm radial distance flat to flat x-hexagonal (NAA-SR-9642, pg. 13)
% Note that the actual thickest portion of the drum is noted as 3 inches which makes the half distance from flat point
% to flat point 9.352 OD + 0.0818 + 3 in drum thickness = 19.704812 cm distance flat to flat x-hexagonal (AI-AEC-13070
% Table 2 Sheet 2 of 4)
surf S8 hexxc 0.0 0.0 19.7002% -18.3769 18.3769
% ---------------------
% Cell Definitions
% ---------------------
% --- Latice x-type hexagonal, pitch = 0.57in (NAA-SR-9642, pg. 19)
% Lattice universe is part of universe "core"
% lat Uni Type x_o y_o UNI
lat C3critload 2 0.0 0.0 21 21 1.4478
300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300 800 800 800 800 800 800 800 300 300 300 % top row, 7 inside, ending in position 4
300 300 300 300 300 300 300 300 300 800 700 700 700 700 700 700 700 700 800 300 300 % 10 inside, ending in position 300
300 300 300 300 300 300 300 300 800 700 600 600 600 600 600 600 600 700 800 300 300 % 11 inside, ending in position 300
300 300 300 300 300 300 300 800 700 600 500 500 500 500 500 500 600 700 800 300 300 % 12 inside, ending in position 300
300 300 300 300 300 300 800 700 600 500 400 400 400 400 400 500 600 700 800 300 300 % 1300 inside, ending in position 300
300 300 300 300 300 800 700 600 500 400 900 900 900 900 400 500 600 700 800 300 300 % 14 inside, ending in position 300
300 300 300 300 800 700 600 500 400 900 200 200 200 900 400 500 600 700 800 300 300 % 15 inside, ending in position 300
300 300 300 800 700 600 500 400 900 200 100 100 200 900 400 500 600 700 800 300 300 % 16 inside, ending in position 300
300 300 300 700 600 500 400 900 200 100 100 100 200 900 400 500 600 700 300 300 300 % middle row, 15 inside, starting in position 4
300 300 800 700 600 500 400 900 200 100 100 200 900 400 500 600 700 800 300 300 300 % 15 inside, starting in position 300
300 300 800 700 600 500 400 900 200 200 200 900 400 500 600 700 800 300 300 300 300 % 14 inside, starting in position 300
300 300 800 700 600 500 400 900 900 900 900 400 500 600 700 800 300 300 300 300 300 % 1300 inside, starting in position 300
300 300 800 700 600 500 400 400 400 400 400 500 600 700 800 300 300 300 300 300 300 % 12 inside, starting in position 300
300 300 800 700 600 500 500 500 500 500 500 600 700 800 300 300 300 300 300 300 300 % 11 inside, starting in position 300
300 300 800 700 600 600 600 600 600 600 600 700 800 300 300 300 300 300 300 300 300 % 10 inside, starting in position 300
300 300 800 700 700 700 700 700 700 700 700 800 300 300 300 300 300 300 300 300 300 % 9 inside, starting in position 300
300 300 300 800 800 800 800 800 800 800 300 300 300 300 300 300 300 300 300 300 300 % bottom row, 7 are inside, starting in position 4
300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300
% --- These cells define the reactor i.e. cutting off the "core"
% universe with cylindrical boundaries
% --- fill definitions
cell cInternRefl1 1200 reflMix srefl1 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl2 1200 reflMix srefl2 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl3 1200 reflMix srefl3 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl4 1200 reflMix srefl4 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl5 1200 reflMix srefl5 -S14% -sHouseZ1 sHouseZ2
cell cInternRefl6 1200 reflMix srefl6 -S14% -sHouseZ1 sHouseZ2
cell cHouseRefl1 1200 reflMix (sHrefl1 -srefl1 -S12):(S14 -S12 srefl1)
cell cHouseRefl2 1200 reflMix (sHrefl2 -srefl2 -S12):(S14 -S12 srefl2)
cell cHouseRefl3 1200 reflMix (sHrefl3 -srefl3 -S12):(S14 -S12 srefl3)
cell cHouseRefl4 1200 reflMix (sHrefl4 -srefl4 -S12):(S14 -S12 srefl4)
cell cHouseRefl5 1200 reflMix (sHrefl5 -srefl5 -S12):(S14 -S12 sHrefl5)
cell cHouseRefl6 1200 reflMix (sHrefl6 -srefl6 -S12):(S14 -S12 srefl6)
cell cIntRefCore reactor fill 1200 (-S12 sHrefl1):(-S12 sHrefl2):(-S12 sHrefl3):(-S12 sHrefl4):(-S12 sHrefl5):(-S12 sHrefl6)
cell cCore reactor fill C3critload -S12 -sHrefl1 -sHrefl2 -sHrefl3 -sHrefl4 -sHrefl5 -sHrefl6
cell cCoreWall 1200 ss316 S12 -S5
cell cBarrel reactor fill 1200 S12 -S5
cell voidCell reactor void S5 -SCube
%surf cuty px 0
%surf cuthex plane 0 0 0 25.98076211350 15 0 0 0 1
% --- Cell cIN is filled with universe "core", also its important to keep in mind that
% the "0" universe is the universe for which outside needs to be defined.
% Serpent gives the warning that the '0' universe should be the only one defining outside
% although this is not strictly true based on serpent-2 documentation.
%cell cIN 0 fill reactor cuty -cuthex -SCube
cell cIN 0 fill reactor -SCube
% --- Cell cOUT is defined as everything outside the cubic cell
cell cOuT 0 outside SCube
% ------------------------------------------------------------
/******************
* Run parameters *
******************/
% --- Boundary condition (1 = black, 2 = reflective, 3 = periodic)
set bc 1 1 2
% --- Neutron population: 100000 neutrons per cycle, 60 active / 20 inactive cycles
set pop 1000000 100 40
% --- XY-plot (3)
plot 31 1000 1000 %-19.0
plot 31 1000 1000 18.2
plot 31 1000 1000 -17.8
plot 21 1000 1000
%plot 11 1000 1000
% --- XY-meshplot (3), which is 700 by 700 pixels and covers the whole geometry
mesh 3 900 900
mesh 2 900 900
%branch Fhi stp UZrH -6.0968 600
%branch dens repm UZrH UZrH_dens
%set power 1000
%dep daystep 10 20 30
set gcu 300 100 200 400 500 600 700 800 900 1200
ene sxtngroup 1 2.53E-08 1.00E-07 4.00E-07 1.00E-06 3.00E-06 1.00E-05 3.00E-05 1.00E-04 5.50E-04 3.00E-03 1.70E-02 1.00E-01 4.00E-01 9.00E-01 1.40E+00 3.00E+00 1.00E+01
set nfg sxtngroup
det ring1 de eqLet du 100
det ring2 de eqLet du 200
det ring3 de eqLet du 900
det ring4 de eqLet du 400
det ring5 de eqLet du 500
det ring6 de eqLet du 600
det ring7 de eqLet du 700
det ring8 de eqLet du 800
det ring9 de eqLet du 300
det ref de eqLet du 1200
ene eqLet 3 1500 1e-9 2e1
%det ringpowers dr -8 void dx -10.71 10.71 17 dy -10.71 10.71 17
(microreactors/s8er/serpent/core_2D_nodrums_16G_WET.xml)
<ISOXML Format="SERPENT2" Name="core_2D_nodrums_16G_WET_XS" NGroup="16" NDLGroup="6" Description="core_2D_nodrums_16G_WET">
<Controls>
<ScatMatrixTol>1E-32</ScatMatrixTol>
<ForceConsistency>false</ForceConsistency>
<Debug>false</Debug>
<EnergyUnit>MeV</EnergyUnit>
</Controls>
<Librarywise DataType="macro" L="1" LType="1">
<Tabulation>Tfuel Tcool</Tabulation>
<Tfuel>300 600 900 1200</Tfuel>
<Tcool>300 600 900 1200</Tcool>
<AddData>Total Fission Absorption NGamma</AddData>
<Directory>./</Directory>
<BaseFile>SNAP8ER_C3_2D_NODRUMS_WET</BaseFile>
<BaseExtension>i</BaseExtension>
</Librarywise>
</ISOXML>
(microreactors/s8er/core_2D_griffin_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : Griffin (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
# fuel_radius = 0.0067564 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
# Geometry Cuts
cut_apothem = .115824
cut_y = .057912
cut_x = .1003065264
scube_apothem = .1181
scube_x = 0.05905
scube_y = 0.1022776
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
total_power = 600000.00 # (W). #total power
inlet_T_fluid = 949.81667 # (K)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '1 1'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem2]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '2 2'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem3]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '3 3'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem4]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '4 4'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem5]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '5 5'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem6]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '6 6'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem7]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '7 7'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem8]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '8 8'
quad_center_elements = true
smoothing_max_it = 3
[]
[air_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '9 9'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 fuel_elem2 fuel_elem3 fuel_elem4 fuel_elem5 fuel_elem6 fuel_elem7 fuel_elem8 air_elem1'
# Pattern ID 0 1 2 3 4 5 6 7 8
background_intervals = 1
background_block_id = '10'
background_block_name = 'AIR'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'8 7 7 7 7 7 7 7 8;
7 6 6 6 6 6 6 6 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
8 6 5 4 3 2 1 0 0 0 1 2 3 4 5 6 8 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 6 6 6 6 6 6 6 7 ;
8 7 7 7 7 7 7 7 8'
external_boundary_id = '10'
external_boundary_name = 'active_outer'
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = fuel_assem
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 'active_outer'
external_boundary_name = 'core_outer'
external_boundary_id = '11'
peripheral_ring_block_id = 11
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 'core_outer'
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 'core_outer'
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 'core_outer'
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 'core_outer'
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 'core_outer'
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 'core_outer'
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 'core_outer'
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 'core_outer'
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 'core_outer'
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 'core_outer'
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 'core_outer'
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 'core_outer'
[]
[set_mat_id]
type = SubdomainExtraElementIDGenerator
input = 'scube_6'
subdomains = '1 2 3 4 5 6 7 8 9 10 11'
extra_element_id_names = 'material_id'
extra_element_ids = '100 200 900 400 500 600 700 800 300 300 1200'
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[griffin_Tfuel]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tcool]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tintref]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# TRANSPORT SYSTEMS
# ==============================================================================
[TransportSystems]
# Eigenvalue Problem
particle = neutron
equation_type = eigenvalue
# Sixteen Group XS Structure
G = 16
VacuumBoundary = 'core_outer'
# DFEM-Transport
[dsn]
scheme = DFEM-SN
#n_delay_groups = 6
family = MONOMIAL
order = FIRST
AQtype = Gauss-Chebyshev
NPolar = 3 # use >=2 for final runs (4 sawtooth nodes sufficient)
NAzmthl = 9 # use >=6 for final runs (4 sawtooth nodes sufficient)
NA = 1
sweep_type = asynchronous_parallel_sweeper
using_array_variable = true
collapse_scattering = true
hide_angular_flux = true
# verbose = 3
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[core]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '1 2 3 4 5 6 7 8 9 10'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
#volume_adjuster = core_vol_adjust #to be fixed
[]
[int_ref]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '11'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
volume_adjuster = int_ref_vol_adjust
[]
[]
[PowerDensity]
power = '${total_power}'
power_density_variable = griffin_power_density
integrated_power_postprocessor = integrated_power
family = L2_LAGRANGE
order = FIRST
[]
[UserObjects]
# [core_vol_adjust] # TO BE FIXED (number of 'vol' needs to match the number of blocks)
# type = VolumeAdjuster
# block = '1 2 3 4 5 6 7 8 9 10'
# volume = 0.040999863
# execute_on = 'initial timestep_begin timestep_end'
# []
[int_ref_vol_adjust]
type = VolumeAdjuster
block = '11'
volume = 0.00331416
execute_on = 'initial timestep_begin timestep_end'
[]
# [Tcore]
# type = LayeredAverage
# variable = griff_temp
# direction = x
# num_layers = '9'
# block = 'core'
# #execute_on = 'initial linear'
# []
[]
# ==============================================================================
# MULTIAPPS AND TRANSFERS
# ==============================================================================
[MultiApps]
[bison_coupled]
type = FullSolveMultiApp
app_type = GriffinApp
input_files = 'core_2D_bison_coupled.i'
positions = '0 0 0'
[]
[]
[Transfers]
[to_bison_power_density]
type = MultiAppProjectionTransfer
to_multi_app = bison_coupled
source_variable = griffin_power_density
variable = bison_power_density
[]
[from_bison_Tfuel]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tfuel
variable = griffin_Tfuel
[]
[from_bison_Tcool]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tcool
variable = griffin_Tcool
[]
[from_bison_Tintref]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tintref
variable = griffin_Tintref
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
# DFEM-SN Executioner
[Executioner]
type = SweepUpdate
verbose = true
richardson_max_its = 50
richardson_value = eigenvalue
richardson_rel_tol = 1e-8
richardson_abs_tol = 1e-8
inner_solve_type = GMRes
max_inner_its = 2
fixed_point_max_its = 2
custom_pp = eigenvalue
custom_rel_tol = 1e-4
force_fixed_point_solve = true
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[griffin_power]
type = ElementIntegralVariablePostprocessor
variable = griffin_power_density
#use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[core_vol]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8 9 10'
execute_on = 'initial timestep_end'
[]
[intref_vol]
type = VolumePostprocessor
block = '11'
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griff_power_density_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8'
variable = griffin_power_density
execute_on = 'initial timestep_end'
[]
[norm_volume]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8'
[]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(microreactors/s8er/core_2D_griffin_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : Griffin (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
# fuel_radius = 0.0067564 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
# Geometry Cuts
cut_apothem = .115824
cut_y = .057912
cut_x = .1003065264
scube_apothem = .1181
scube_x = 0.05905
scube_y = 0.1022776
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
total_power = 600000.00 # (W). #total power
inlet_T_fluid = 949.81667 # (K)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '1 1'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem2]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '2 2'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem3]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '3 3'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem4]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '4 4'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem5]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '5 5'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem6]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '6 6'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem7]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '7 7'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem8]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '8 8'
quad_center_elements = true
smoothing_max_it = 3
[]
[air_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '9 9'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 fuel_elem2 fuel_elem3 fuel_elem4 fuel_elem5 fuel_elem6 fuel_elem7 fuel_elem8 air_elem1'
# Pattern ID 0 1 2 3 4 5 6 7 8
background_intervals = 1
background_block_id = '10'
background_block_name = 'AIR'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'8 7 7 7 7 7 7 7 8;
7 6 6 6 6 6 6 6 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
8 6 5 4 3 2 1 0 0 0 1 2 3 4 5 6 8 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 6 6 6 6 6 6 6 7 ;
8 7 7 7 7 7 7 7 8'
external_boundary_id = '10'
external_boundary_name = 'active_outer'
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = fuel_assem
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 'active_outer'
external_boundary_name = 'core_outer'
external_boundary_id = '11'
peripheral_ring_block_id = 11
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 'core_outer'
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 'core_outer'
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 'core_outer'
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 'core_outer'
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 'core_outer'
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 'core_outer'
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 'core_outer'
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 'core_outer'
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 'core_outer'
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 'core_outer'
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 'core_outer'
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 'core_outer'
[]
[set_mat_id]
type = SubdomainExtraElementIDGenerator
input = 'scube_6'
subdomains = '1 2 3 4 5 6 7 8 9 10 11'
extra_element_id_names = 'material_id'
extra_element_ids = '100 200 900 400 500 600 700 800 300 300 1200'
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[griffin_Tfuel]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tcool]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tintref]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# TRANSPORT SYSTEMS
# ==============================================================================
[TransportSystems]
# Eigenvalue Problem
particle = neutron
equation_type = eigenvalue
# Sixteen Group XS Structure
G = 16
VacuumBoundary = 'core_outer'
# DFEM-Transport
[dsn]
scheme = DFEM-SN
#n_delay_groups = 6
family = MONOMIAL
order = FIRST
AQtype = Gauss-Chebyshev
NPolar = 3 # use >=2 for final runs (4 sawtooth nodes sufficient)
NAzmthl = 9 # use >=6 for final runs (4 sawtooth nodes sufficient)
NA = 1
sweep_type = asynchronous_parallel_sweeper
using_array_variable = true
collapse_scattering = true
hide_angular_flux = true
# verbose = 3
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[core]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '1 2 3 4 5 6 7 8 9 10'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
#volume_adjuster = core_vol_adjust #to be fixed
[]
[int_ref]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '11'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
volume_adjuster = int_ref_vol_adjust
[]
[]
[PowerDensity]
power = '${total_power}'
power_density_variable = griffin_power_density
integrated_power_postprocessor = integrated_power
family = L2_LAGRANGE
order = FIRST
[]
[UserObjects]
# [core_vol_adjust] # TO BE FIXED (number of 'vol' needs to match the number of blocks)
# type = VolumeAdjuster
# block = '1 2 3 4 5 6 7 8 9 10'
# volume = 0.040999863
# execute_on = 'initial timestep_begin timestep_end'
# []
[int_ref_vol_adjust]
type = VolumeAdjuster
block = '11'
volume = 0.00331416
execute_on = 'initial timestep_begin timestep_end'
[]
# [Tcore]
# type = LayeredAverage
# variable = griff_temp
# direction = x
# num_layers = '9'
# block = 'core'
# #execute_on = 'initial linear'
# []
[]
# ==============================================================================
# MULTIAPPS AND TRANSFERS
# ==============================================================================
[MultiApps]
[bison_coupled]
type = FullSolveMultiApp
app_type = GriffinApp
input_files = 'core_2D_bison_coupled.i'
positions = '0 0 0'
[]
[]
[Transfers]
[to_bison_power_density]
type = MultiAppProjectionTransfer
to_multi_app = bison_coupled
source_variable = griffin_power_density
variable = bison_power_density
[]
[from_bison_Tfuel]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tfuel
variable = griffin_Tfuel
[]
[from_bison_Tcool]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tcool
variable = griffin_Tcool
[]
[from_bison_Tintref]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tintref
variable = griffin_Tintref
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
# DFEM-SN Executioner
[Executioner]
type = SweepUpdate
verbose = true
richardson_max_its = 50
richardson_value = eigenvalue
richardson_rel_tol = 1e-8
richardson_abs_tol = 1e-8
inner_solve_type = GMRes
max_inner_its = 2
fixed_point_max_its = 2
custom_pp = eigenvalue
custom_rel_tol = 1e-4
force_fixed_point_solve = true
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[griffin_power]
type = ElementIntegralVariablePostprocessor
variable = griffin_power_density
#use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[core_vol]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8 9 10'
execute_on = 'initial timestep_end'
[]
[intref_vol]
type = VolumePostprocessor
block = '11'
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griff_power_density_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8'
variable = griffin_power_density
execute_on = 'initial timestep_end'
[]
[norm_volume]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8'
[]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(microreactors/s8er/core_2D_griffin_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : Griffin (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
# fuel_radius = 0.0067564 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
# Geometry Cuts
cut_apothem = .115824
cut_y = .057912
cut_x = .1003065264
scube_apothem = .1181
scube_x = 0.05905
scube_y = 0.1022776
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
total_power = 600000.00 # (W). #total power
inlet_T_fluid = 949.81667 # (K)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '1 1'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem2]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '2 2'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem3]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '3 3'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem4]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '4 4'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem5]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '5 5'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem6]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '6 6'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem7]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '7 7'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem8]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '8 8'
quad_center_elements = true
smoothing_max_it = 3
[]
[air_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '9 9'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 fuel_elem2 fuel_elem3 fuel_elem4 fuel_elem5 fuel_elem6 fuel_elem7 fuel_elem8 air_elem1'
# Pattern ID 0 1 2 3 4 5 6 7 8
background_intervals = 1
background_block_id = '10'
background_block_name = 'AIR'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'8 7 7 7 7 7 7 7 8;
7 6 6 6 6 6 6 6 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
8 6 5 4 3 2 1 0 0 0 1 2 3 4 5 6 8 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 6 6 6 6 6 6 6 7 ;
8 7 7 7 7 7 7 7 8'
external_boundary_id = '10'
external_boundary_name = 'active_outer'
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = fuel_assem
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 'active_outer'
external_boundary_name = 'core_outer'
external_boundary_id = '11'
peripheral_ring_block_id = 11
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 'core_outer'
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 'core_outer'
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 'core_outer'
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 'core_outer'
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 'core_outer'
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 'core_outer'
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 'core_outer'
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 'core_outer'
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 'core_outer'
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 'core_outer'
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 'core_outer'
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 'core_outer'
[]
[set_mat_id]
type = SubdomainExtraElementIDGenerator
input = 'scube_6'
subdomains = '1 2 3 4 5 6 7 8 9 10 11'
extra_element_id_names = 'material_id'
extra_element_ids = '100 200 900 400 500 600 700 800 300 300 1200'
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[griffin_Tfuel]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tcool]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tintref]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# TRANSPORT SYSTEMS
# ==============================================================================
[TransportSystems]
# Eigenvalue Problem
particle = neutron
equation_type = eigenvalue
# Sixteen Group XS Structure
G = 16
VacuumBoundary = 'core_outer'
# DFEM-Transport
[dsn]
scheme = DFEM-SN
#n_delay_groups = 6
family = MONOMIAL
order = FIRST
AQtype = Gauss-Chebyshev
NPolar = 3 # use >=2 for final runs (4 sawtooth nodes sufficient)
NAzmthl = 9 # use >=6 for final runs (4 sawtooth nodes sufficient)
NA = 1
sweep_type = asynchronous_parallel_sweeper
using_array_variable = true
collapse_scattering = true
hide_angular_flux = true
# verbose = 3
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[core]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '1 2 3 4 5 6 7 8 9 10'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
#volume_adjuster = core_vol_adjust #to be fixed
[]
[int_ref]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '11'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
volume_adjuster = int_ref_vol_adjust
[]
[]
[PowerDensity]
power = '${total_power}'
power_density_variable = griffin_power_density
integrated_power_postprocessor = integrated_power
family = L2_LAGRANGE
order = FIRST
[]
[UserObjects]
# [core_vol_adjust] # TO BE FIXED (number of 'vol' needs to match the number of blocks)
# type = VolumeAdjuster
# block = '1 2 3 4 5 6 7 8 9 10'
# volume = 0.040999863
# execute_on = 'initial timestep_begin timestep_end'
# []
[int_ref_vol_adjust]
type = VolumeAdjuster
block = '11'
volume = 0.00331416
execute_on = 'initial timestep_begin timestep_end'
[]
# [Tcore]
# type = LayeredAverage
# variable = griff_temp
# direction = x
# num_layers = '9'
# block = 'core'
# #execute_on = 'initial linear'
# []
[]
# ==============================================================================
# MULTIAPPS AND TRANSFERS
# ==============================================================================
[MultiApps]
[bison_coupled]
type = FullSolveMultiApp
app_type = GriffinApp
input_files = 'core_2D_bison_coupled.i'
positions = '0 0 0'
[]
[]
[Transfers]
[to_bison_power_density]
type = MultiAppProjectionTransfer
to_multi_app = bison_coupled
source_variable = griffin_power_density
variable = bison_power_density
[]
[from_bison_Tfuel]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tfuel
variable = griffin_Tfuel
[]
[from_bison_Tcool]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tcool
variable = griffin_Tcool
[]
[from_bison_Tintref]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tintref
variable = griffin_Tintref
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
# DFEM-SN Executioner
[Executioner]
type = SweepUpdate
verbose = true
richardson_max_its = 50
richardson_value = eigenvalue
richardson_rel_tol = 1e-8
richardson_abs_tol = 1e-8
inner_solve_type = GMRes
max_inner_its = 2
fixed_point_max_its = 2
custom_pp = eigenvalue
custom_rel_tol = 1e-4
force_fixed_point_solve = true
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[griffin_power]
type = ElementIntegralVariablePostprocessor
variable = griffin_power_density
#use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[core_vol]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8 9 10'
execute_on = 'initial timestep_end'
[]
[intref_vol]
type = VolumePostprocessor
block = '11'
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griff_power_density_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8'
variable = griffin_power_density
execute_on = 'initial timestep_end'
[]
[norm_volume]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8'
[]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(microreactors/s8er/core_2D_bison_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : BISON (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# # ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
fuel_radius = 0.0067564 # (m)
ceramic_radius_outer = 0.006826079 # (m)
gap_radius_outer = 0.006866719 # (m)
clad_radius_outer = 0.007130879 # (m)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
#clad_thickness = 0.00026416 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
cut_apothem = 0.115924
cut_y = 0.057962
cut_x = 0.100393129
scube_apothem = .11815
scube_x = 0.059075
scube_y = 0.102320901
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
inlet_T_fluid = 949.81667 # (K)
ht_coeff = 4539.6
# Material Properties ------------------------------------------------------------
# Reference:
# @article{SNAPFuel,
# author = "Nelson, S G",
# title = "High-temperature thermal propeties of SNAP-10A fuel material",
# doi = "10.2172/4260713",
# url = "https://www.osti.gov/biblio/4260713",
# journal = "",
# place = "United States",
# year = "1965",
# month = "2"
# }
clad_density = 8617.9333 # (kg/m^3)
clad_tc = 18.85239 # (W/m K)
clad_cp = 418.68 # (J/kg-K)
fuel_density = 5963 # (kg/m^3)
gap_tc = .346146933
#gap_dens = 0.016646998
#gap_cp = 5193.163779
# fuel_dens = -0.222222222*T + 6003
# fuel_cp = -0.222222222*T + 27.73992
# fuel_tc = -0.222222222*T + 472.27104
ceramic_emiss = .80
clad_emiss = .80
ceramic_dens = 2242.584872
ceramic_cp = 837.36
ceramic_tc = 1.730734666
intref_dens = 1810.086361
intref_cp = 2721.42
intref_tc = 131.5358346
coolant_dens = 800
coolant_cp = 880
coolant_tc = 28
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
ring_radii = '${fuel_radius} ${ceramic_radius_outer} ${gap_radius_outer} ${clad_radius_outer} '
ring_intervals = '1 1 1 1'
ring_block_ids = '1 2 3 4'
background_intervals = '1'
background_block_ids = '5'
quad_center_elements = true
smoothing_max_it = 3
[]
[coolant_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '1'
background_block_ids = '6'
quad_center_elements = true
smoothing_max_it = 3
external_boundary_id = '6'
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 coolant_elem1'
# Pattern ID 0 1
background_intervals = 1
background_block_id = '7'
background_block_name = 'coolant'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'1 0 0 0 0 0 0 0 1;
0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 1'
[]
[block_rename1]
type = RenameBlockGenerator
input = fuel_assem
old_block = '1 2 3 4 5 6 7'
new_block = 'fuel ceramic gap clad coolant coolant coolant'
[]
[bound_rename1]
type = RenameBoundaryGenerator
input = block_rename1
old_boundary = '3 5 7'
new_boundary = 'gap_inner gap_outer clad_outer'
[]
[inner_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = bound_rename1
primary_block = ceramic
paired_block = gap
new_boundary = 'gap_inner'
[]
[outer_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = inner_gap1
primary_block = clad
paired_block = gap
new_boundary = 'gap_outer'
[]
[del_gap1]
type = BlockDeletionGenerator
block = gap
input = outer_gap1
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = del_gap1
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 10000
peripheral_ring_block_id = 8
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 10000
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 10000
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 10000
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 10000
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 10000
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 10000
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 10000
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 10000
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 10000
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 10000
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 10000
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 10000
[]
[bound_rename2]
type = RenameBoundaryGenerator
input = scube_6
old_boundary = '10000'
new_boundary = 'void_outer'
[]
[]
# ==============================================================================
# VARIABLES AND KERNELS
# ==============================================================================
[Variables]
[bison_temp]
#initial_condition = '${inlet_T_fluid}'
[]
[]
[Kernels]
# Equation 0 (Heat conduction equation with heat generation).
[heat_conduction]
type = ADHeatConduction
variable = bison_temp
[]
[heat_source]
type = ADCoupledForce
variable = bison_temp
v = bison_norm_power_density
block = fuel
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[aux_tk]
family = LAGRANGE
order = FIRST
block = fuel
[]
[aux_cp]
family = LAGRANGE
order = FIRST
block = fuel
[]
[bison_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[aux_T_inf]
family = LAGRANGE
order = FIRST
block = clad
[]
[bison_Tfuel]
block = 'fuel'
[]
[bison_Tcool]
block = 'coolant'
[]
[bison_Tintref]
block = 'int_ref'
[]
[bison_norm_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[]
[AuxKernels]
[aux_tk]
type = FunctionAux
function = tk_f
variable = aux_tk
block = fuel
[]
[aux_cp]
type = FunctionAux
function = cp_f
variable = aux_cp
block = fuel
[]
[aux_T_inf]
type = FunctionAux
function = T_inf_f
variable = aux_T_inf
block = clad
[]
[norm_Tfuel]
type = NormalizationAux
variable = bison_Tfuel
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tcool]
type = NormalizationAux
variable = bison_Tcool
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tintref]
type = NormalizationAux
variable = bison_Tintref
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_power_density]
type = NormalizationAux
variable = bison_norm_power_density
source_variable = bison_power_density
normal_factor = 1.26359177225#1.265805981
execute_on = 'timestep_begin' #check
[]
[]
# ==============================================================================
# INITIAL CONDITIONS AND FUNCTIONS
# ==============================================================================
[Functions]
[tk_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '27.73992+bison_temp*0.027428444'#Models/SNAP10A_dimensions
[]
[cp_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '472.27104+bison_temp*0.7275728'#Models/SNAP10A_dimensions
[]
[T_inf_f]
type = ParsedFunction
expression = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[fuel_thermal_conduction]
# Metallic Uranium Zirc Hydride fuel conduction params.
type = ADHeatConductionMaterial
temp = bison_temp
specific_heat_temperature_function = cp_f
thermal_conductivity_temperature_function = tk_f
block = fuel
[]
# Metallic Uranium Zirc Hydride fuel density
[fuel_density]
type = ADGenericConstantMaterial
prop_names = 'density'
prop_values = '${fuel_density}'
block = fuel
[]
# Fluid ambient temperature.
# [T_infinity]
# #Models/SNAP10A_dimensions
# type = ADCoupledValueFunctionMaterial
# prop_name = 'T_infinity'
# function = 'if(x<180, 293.15+2.908240722*x, 816.48333)'
# v = 'aux_time'
# block = 2
# boundary = 'right'
# []
[clad_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${clad_density} ${clad_cp} ${ clad_tc}'
block = clad
[]
[gap_heat_transfer]
#Models/SNAP10A_dimensions
type = GenericConstantMaterial
prop_names = 'gap_conductance gap_conductance_dT'
prop_values = '${gap_tc} 0.0'
boundary = 'gap_inner gap_outer'
[]
# [gap_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${gap_dens} ${gap_cp} ${gap_tc}'
# block = gap
# []
[ceramic_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${ceramic_dens} ${ ceramic_cp} ${ ceramic_tc}'
block = ceramic
[]
[intref_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${intref_dens} ${intref_cp} ${ intref_tc}'
block = int_ref
[]
# [air_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${air_dens} ${air_cp} ${air_tc}'
# block = air
# []
[coolant_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${coolant_dens} ${coolant_cp} ${coolant_tc}'
block = coolant
[]
[]
# ==============================================================================
# BOUNDARY CONDITIONS
# ==============================================================================
[BCs]
# Convective BC outer surface fuel pin
[convective_boundary]
type = CoupledConvectiveHeatFluxBC
variable = bison_temp
boundary = clad_outer
T_infinity = aux_T_inf
htc = '${ht_coeff}'
[]
[]
[ThermalContact]
# Gap Heat Transfer
[gap_ht]
type = GapHeatTransfer
variable = bison_temp
gap_geometry_type = 'PLATE'
primary = 'gap_inner'
secondary = 'gap_outer'
emissivity_primary = '${ceramic_emiss}'
emissivity_secondary = '${clad_emiss}'
gap_conductivity = '${gap_tc}' # W/mK
quadrature = true
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
nl_abs_step_tol = 1e-8
l_tol = 1e-8
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[temp_av]
# Temp average fuel
type = ElementAverageValue
variable = bison_temp
[]
[tc_av]
type = ElementAverageValue
variable = aux_tk
block = fuel
[]
# Specific Heat postprocessor
[cp_av]
type = ElementAverageValue
variable = aux_cp
block = fuel
[]
# Temp max value
[temp_max]
type = ElementExtremeValue
variable = bison_temp
[]
# Temp min value
[temp_min]
type = ElementExtremeValue
variable = bison_temp
value_type = min
[]
[power]
type = ElementIntegralVariablePostprocessor
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power]
type = ElementIntegralVariablePostprocessor
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[power_density_avg]
type = ElementAverageValue
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power_density_avg]
type = ElementAverageValue
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[coolant_vol]
type = VolumePostprocessor
block = 'coolant'
[]
[fuel_vol]
type = VolumePostprocessor
block = 'fuel'
[]
[intref_vol]
type = VolumePostprocessor
block = 'int_ref'
[]
[clad_vol]
type = VolumePostprocessor
block = 'clad'
[]
[ceramic_vol]
type = VolumePostprocessor
block = 'ceramic'
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
[]
[]
(microreactors/s8er/core_2D_bison_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : BISON (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# # ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
fuel_radius = 0.0067564 # (m)
ceramic_radius_outer = 0.006826079 # (m)
gap_radius_outer = 0.006866719 # (m)
clad_radius_outer = 0.007130879 # (m)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
#clad_thickness = 0.00026416 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
cut_apothem = 0.115924
cut_y = 0.057962
cut_x = 0.100393129
scube_apothem = .11815
scube_x = 0.059075
scube_y = 0.102320901
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
inlet_T_fluid = 949.81667 # (K)
ht_coeff = 4539.6
# Material Properties ------------------------------------------------------------
# Reference:
# @article{SNAPFuel,
# author = "Nelson, S G",
# title = "High-temperature thermal propeties of SNAP-10A fuel material",
# doi = "10.2172/4260713",
# url = "https://www.osti.gov/biblio/4260713",
# journal = "",
# place = "United States",
# year = "1965",
# month = "2"
# }
clad_density = 8617.9333 # (kg/m^3)
clad_tc = 18.85239 # (W/m K)
clad_cp = 418.68 # (J/kg-K)
fuel_density = 5963 # (kg/m^3)
gap_tc = .346146933
#gap_dens = 0.016646998
#gap_cp = 5193.163779
# fuel_dens = -0.222222222*T + 6003
# fuel_cp = -0.222222222*T + 27.73992
# fuel_tc = -0.222222222*T + 472.27104
ceramic_emiss = .80
clad_emiss = .80
ceramic_dens = 2242.584872
ceramic_cp = 837.36
ceramic_tc = 1.730734666
intref_dens = 1810.086361
intref_cp = 2721.42
intref_tc = 131.5358346
coolant_dens = 800
coolant_cp = 880
coolant_tc = 28
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
ring_radii = '${fuel_radius} ${ceramic_radius_outer} ${gap_radius_outer} ${clad_radius_outer} '
ring_intervals = '1 1 1 1'
ring_block_ids = '1 2 3 4'
background_intervals = '1'
background_block_ids = '5'
quad_center_elements = true
smoothing_max_it = 3
[]
[coolant_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '1'
background_block_ids = '6'
quad_center_elements = true
smoothing_max_it = 3
external_boundary_id = '6'
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 coolant_elem1'
# Pattern ID 0 1
background_intervals = 1
background_block_id = '7'
background_block_name = 'coolant'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'1 0 0 0 0 0 0 0 1;
0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 1'
[]
[block_rename1]
type = RenameBlockGenerator
input = fuel_assem
old_block = '1 2 3 4 5 6 7'
new_block = 'fuel ceramic gap clad coolant coolant coolant'
[]
[bound_rename1]
type = RenameBoundaryGenerator
input = block_rename1
old_boundary = '3 5 7'
new_boundary = 'gap_inner gap_outer clad_outer'
[]
[inner_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = bound_rename1
primary_block = ceramic
paired_block = gap
new_boundary = 'gap_inner'
[]
[outer_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = inner_gap1
primary_block = clad
paired_block = gap
new_boundary = 'gap_outer'
[]
[del_gap1]
type = BlockDeletionGenerator
block = gap
input = outer_gap1
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = del_gap1
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 10000
peripheral_ring_block_id = 8
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 10000
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 10000
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 10000
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 10000
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 10000
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 10000
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 10000
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 10000
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 10000
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 10000
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 10000
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 10000
[]
[bound_rename2]
type = RenameBoundaryGenerator
input = scube_6
old_boundary = '10000'
new_boundary = 'void_outer'
[]
[]
# ==============================================================================
# VARIABLES AND KERNELS
# ==============================================================================
[Variables]
[bison_temp]
#initial_condition = '${inlet_T_fluid}'
[]
[]
[Kernels]
# Equation 0 (Heat conduction equation with heat generation).
[heat_conduction]
type = ADHeatConduction
variable = bison_temp
[]
[heat_source]
type = ADCoupledForce
variable = bison_temp
v = bison_norm_power_density
block = fuel
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[aux_tk]
family = LAGRANGE
order = FIRST
block = fuel
[]
[aux_cp]
family = LAGRANGE
order = FIRST
block = fuel
[]
[bison_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[aux_T_inf]
family = LAGRANGE
order = FIRST
block = clad
[]
[bison_Tfuel]
block = 'fuel'
[]
[bison_Tcool]
block = 'coolant'
[]
[bison_Tintref]
block = 'int_ref'
[]
[bison_norm_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[]
[AuxKernels]
[aux_tk]
type = FunctionAux
function = tk_f
variable = aux_tk
block = fuel
[]
[aux_cp]
type = FunctionAux
function = cp_f
variable = aux_cp
block = fuel
[]
[aux_T_inf]
type = FunctionAux
function = T_inf_f
variable = aux_T_inf
block = clad
[]
[norm_Tfuel]
type = NormalizationAux
variable = bison_Tfuel
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tcool]
type = NormalizationAux
variable = bison_Tcool
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tintref]
type = NormalizationAux
variable = bison_Tintref
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_power_density]
type = NormalizationAux
variable = bison_norm_power_density
source_variable = bison_power_density
normal_factor = 1.26359177225#1.265805981
execute_on = 'timestep_begin' #check
[]
[]
# ==============================================================================
# INITIAL CONDITIONS AND FUNCTIONS
# ==============================================================================
[Functions]
[tk_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '27.73992+bison_temp*0.027428444'#Models/SNAP10A_dimensions
[]
[cp_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '472.27104+bison_temp*0.7275728'#Models/SNAP10A_dimensions
[]
[T_inf_f]
type = ParsedFunction
expression = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[fuel_thermal_conduction]
# Metallic Uranium Zirc Hydride fuel conduction params.
type = ADHeatConductionMaterial
temp = bison_temp
specific_heat_temperature_function = cp_f
thermal_conductivity_temperature_function = tk_f
block = fuel
[]
# Metallic Uranium Zirc Hydride fuel density
[fuel_density]
type = ADGenericConstantMaterial
prop_names = 'density'
prop_values = '${fuel_density}'
block = fuel
[]
# Fluid ambient temperature.
# [T_infinity]
# #Models/SNAP10A_dimensions
# type = ADCoupledValueFunctionMaterial
# prop_name = 'T_infinity'
# function = 'if(x<180, 293.15+2.908240722*x, 816.48333)'
# v = 'aux_time'
# block = 2
# boundary = 'right'
# []
[clad_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${clad_density} ${clad_cp} ${ clad_tc}'
block = clad
[]
[gap_heat_transfer]
#Models/SNAP10A_dimensions
type = GenericConstantMaterial
prop_names = 'gap_conductance gap_conductance_dT'
prop_values = '${gap_tc} 0.0'
boundary = 'gap_inner gap_outer'
[]
# [gap_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${gap_dens} ${gap_cp} ${gap_tc}'
# block = gap
# []
[ceramic_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${ceramic_dens} ${ ceramic_cp} ${ ceramic_tc}'
block = ceramic
[]
[intref_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${intref_dens} ${intref_cp} ${ intref_tc}'
block = int_ref
[]
# [air_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${air_dens} ${air_cp} ${air_tc}'
# block = air
# []
[coolant_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${coolant_dens} ${coolant_cp} ${coolant_tc}'
block = coolant
[]
[]
# ==============================================================================
# BOUNDARY CONDITIONS
# ==============================================================================
[BCs]
# Convective BC outer surface fuel pin
[convective_boundary]
type = CoupledConvectiveHeatFluxBC
variable = bison_temp
boundary = clad_outer
T_infinity = aux_T_inf
htc = '${ht_coeff}'
[]
[]
[ThermalContact]
# Gap Heat Transfer
[gap_ht]
type = GapHeatTransfer
variable = bison_temp
gap_geometry_type = 'PLATE'
primary = 'gap_inner'
secondary = 'gap_outer'
emissivity_primary = '${ceramic_emiss}'
emissivity_secondary = '${clad_emiss}'
gap_conductivity = '${gap_tc}' # W/mK
quadrature = true
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
nl_abs_step_tol = 1e-8
l_tol = 1e-8
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[temp_av]
# Temp average fuel
type = ElementAverageValue
variable = bison_temp
[]
[tc_av]
type = ElementAverageValue
variable = aux_tk
block = fuel
[]
# Specific Heat postprocessor
[cp_av]
type = ElementAverageValue
variable = aux_cp
block = fuel
[]
# Temp max value
[temp_max]
type = ElementExtremeValue
variable = bison_temp
[]
# Temp min value
[temp_min]
type = ElementExtremeValue
variable = bison_temp
value_type = min
[]
[power]
type = ElementIntegralVariablePostprocessor
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power]
type = ElementIntegralVariablePostprocessor
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[power_density_avg]
type = ElementAverageValue
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power_density_avg]
type = ElementAverageValue
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[coolant_vol]
type = VolumePostprocessor
block = 'coolant'
[]
[fuel_vol]
type = VolumePostprocessor
block = 'fuel'
[]
[intref_vol]
type = VolumePostprocessor
block = 'int_ref'
[]
[clad_vol]
type = VolumePostprocessor
block = 'clad'
[]
[ceramic_vol]
type = VolumePostprocessor
block = 'ceramic'
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
[]
[]
(microreactors/s8er/core_2D_bison_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : BISON (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# # ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
fuel_radius = 0.0067564 # (m)
ceramic_radius_outer = 0.006826079 # (m)
gap_radius_outer = 0.006866719 # (m)
clad_radius_outer = 0.007130879 # (m)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
#clad_thickness = 0.00026416 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
cut_apothem = 0.115924
cut_y = 0.057962
cut_x = 0.100393129
scube_apothem = .11815
scube_x = 0.059075
scube_y = 0.102320901
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
inlet_T_fluid = 949.81667 # (K)
ht_coeff = 4539.6
# Material Properties ------------------------------------------------------------
# Reference:
# @article{SNAPFuel,
# author = "Nelson, S G",
# title = "High-temperature thermal propeties of SNAP-10A fuel material",
# doi = "10.2172/4260713",
# url = "https://www.osti.gov/biblio/4260713",
# journal = "",
# place = "United States",
# year = "1965",
# month = "2"
# }
clad_density = 8617.9333 # (kg/m^3)
clad_tc = 18.85239 # (W/m K)
clad_cp = 418.68 # (J/kg-K)
fuel_density = 5963 # (kg/m^3)
gap_tc = .346146933
#gap_dens = 0.016646998
#gap_cp = 5193.163779
# fuel_dens = -0.222222222*T + 6003
# fuel_cp = -0.222222222*T + 27.73992
# fuel_tc = -0.222222222*T + 472.27104
ceramic_emiss = .80
clad_emiss = .80
ceramic_dens = 2242.584872
ceramic_cp = 837.36
ceramic_tc = 1.730734666
intref_dens = 1810.086361
intref_cp = 2721.42
intref_tc = 131.5358346
coolant_dens = 800
coolant_cp = 880
coolant_tc = 28
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
ring_radii = '${fuel_radius} ${ceramic_radius_outer} ${gap_radius_outer} ${clad_radius_outer} '
ring_intervals = '1 1 1 1'
ring_block_ids = '1 2 3 4'
background_intervals = '1'
background_block_ids = '5'
quad_center_elements = true
smoothing_max_it = 3
[]
[coolant_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '1'
background_block_ids = '6'
quad_center_elements = true
smoothing_max_it = 3
external_boundary_id = '6'
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 coolant_elem1'
# Pattern ID 0 1
background_intervals = 1
background_block_id = '7'
background_block_name = 'coolant'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'1 0 0 0 0 0 0 0 1;
0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 1'
[]
[block_rename1]
type = RenameBlockGenerator
input = fuel_assem
old_block = '1 2 3 4 5 6 7'
new_block = 'fuel ceramic gap clad coolant coolant coolant'
[]
[bound_rename1]
type = RenameBoundaryGenerator
input = block_rename1
old_boundary = '3 5 7'
new_boundary = 'gap_inner gap_outer clad_outer'
[]
[inner_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = bound_rename1
primary_block = ceramic
paired_block = gap
new_boundary = 'gap_inner'
[]
[outer_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = inner_gap1
primary_block = clad
paired_block = gap
new_boundary = 'gap_outer'
[]
[del_gap1]
type = BlockDeletionGenerator
block = gap
input = outer_gap1
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = del_gap1
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 10000
peripheral_ring_block_id = 8
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 10000
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 10000
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 10000
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 10000
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 10000
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 10000
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 10000
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 10000
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 10000
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 10000
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 10000
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 10000
[]
[bound_rename2]
type = RenameBoundaryGenerator
input = scube_6
old_boundary = '10000'
new_boundary = 'void_outer'
[]
[]
# ==============================================================================
# VARIABLES AND KERNELS
# ==============================================================================
[Variables]
[bison_temp]
#initial_condition = '${inlet_T_fluid}'
[]
[]
[Kernels]
# Equation 0 (Heat conduction equation with heat generation).
[heat_conduction]
type = ADHeatConduction
variable = bison_temp
[]
[heat_source]
type = ADCoupledForce
variable = bison_temp
v = bison_norm_power_density
block = fuel
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[aux_tk]
family = LAGRANGE
order = FIRST
block = fuel
[]
[aux_cp]
family = LAGRANGE
order = FIRST
block = fuel
[]
[bison_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[aux_T_inf]
family = LAGRANGE
order = FIRST
block = clad
[]
[bison_Tfuel]
block = 'fuel'
[]
[bison_Tcool]
block = 'coolant'
[]
[bison_Tintref]
block = 'int_ref'
[]
[bison_norm_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[]
[AuxKernels]
[aux_tk]
type = FunctionAux
function = tk_f
variable = aux_tk
block = fuel
[]
[aux_cp]
type = FunctionAux
function = cp_f
variable = aux_cp
block = fuel
[]
[aux_T_inf]
type = FunctionAux
function = T_inf_f
variable = aux_T_inf
block = clad
[]
[norm_Tfuel]
type = NormalizationAux
variable = bison_Tfuel
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tcool]
type = NormalizationAux
variable = bison_Tcool
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tintref]
type = NormalizationAux
variable = bison_Tintref
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_power_density]
type = NormalizationAux
variable = bison_norm_power_density
source_variable = bison_power_density
normal_factor = 1.26359177225#1.265805981
execute_on = 'timestep_begin' #check
[]
[]
# ==============================================================================
# INITIAL CONDITIONS AND FUNCTIONS
# ==============================================================================
[Functions]
[tk_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '27.73992+bison_temp*0.027428444'#Models/SNAP10A_dimensions
[]
[cp_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '472.27104+bison_temp*0.7275728'#Models/SNAP10A_dimensions
[]
[T_inf_f]
type = ParsedFunction
expression = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[fuel_thermal_conduction]
# Metallic Uranium Zirc Hydride fuel conduction params.
type = ADHeatConductionMaterial
temp = bison_temp
specific_heat_temperature_function = cp_f
thermal_conductivity_temperature_function = tk_f
block = fuel
[]
# Metallic Uranium Zirc Hydride fuel density
[fuel_density]
type = ADGenericConstantMaterial
prop_names = 'density'
prop_values = '${fuel_density}'
block = fuel
[]
# Fluid ambient temperature.
# [T_infinity]
# #Models/SNAP10A_dimensions
# type = ADCoupledValueFunctionMaterial
# prop_name = 'T_infinity'
# function = 'if(x<180, 293.15+2.908240722*x, 816.48333)'
# v = 'aux_time'
# block = 2
# boundary = 'right'
# []
[clad_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${clad_density} ${clad_cp} ${ clad_tc}'
block = clad
[]
[gap_heat_transfer]
#Models/SNAP10A_dimensions
type = GenericConstantMaterial
prop_names = 'gap_conductance gap_conductance_dT'
prop_values = '${gap_tc} 0.0'
boundary = 'gap_inner gap_outer'
[]
# [gap_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${gap_dens} ${gap_cp} ${gap_tc}'
# block = gap
# []
[ceramic_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${ceramic_dens} ${ ceramic_cp} ${ ceramic_tc}'
block = ceramic
[]
[intref_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${intref_dens} ${intref_cp} ${ intref_tc}'
block = int_ref
[]
# [air_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${air_dens} ${air_cp} ${air_tc}'
# block = air
# []
[coolant_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${coolant_dens} ${coolant_cp} ${coolant_tc}'
block = coolant
[]
[]
# ==============================================================================
# BOUNDARY CONDITIONS
# ==============================================================================
[BCs]
# Convective BC outer surface fuel pin
[convective_boundary]
type = CoupledConvectiveHeatFluxBC
variable = bison_temp
boundary = clad_outer
T_infinity = aux_T_inf
htc = '${ht_coeff}'
[]
[]
[ThermalContact]
# Gap Heat Transfer
[gap_ht]
type = GapHeatTransfer
variable = bison_temp
gap_geometry_type = 'PLATE'
primary = 'gap_inner'
secondary = 'gap_outer'
emissivity_primary = '${ceramic_emiss}'
emissivity_secondary = '${clad_emiss}'
gap_conductivity = '${gap_tc}' # W/mK
quadrature = true
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
nl_abs_step_tol = 1e-8
l_tol = 1e-8
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[temp_av]
# Temp average fuel
type = ElementAverageValue
variable = bison_temp
[]
[tc_av]
type = ElementAverageValue
variable = aux_tk
block = fuel
[]
# Specific Heat postprocessor
[cp_av]
type = ElementAverageValue
variable = aux_cp
block = fuel
[]
# Temp max value
[temp_max]
type = ElementExtremeValue
variable = bison_temp
[]
# Temp min value
[temp_min]
type = ElementExtremeValue
variable = bison_temp
value_type = min
[]
[power]
type = ElementIntegralVariablePostprocessor
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power]
type = ElementIntegralVariablePostprocessor
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[power_density_avg]
type = ElementAverageValue
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power_density_avg]
type = ElementAverageValue
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[coolant_vol]
type = VolumePostprocessor
block = 'coolant'
[]
[fuel_vol]
type = VolumePostprocessor
block = 'fuel'
[]
[intref_vol]
type = VolumePostprocessor
block = 'int_ref'
[]
[clad_vol]
type = VolumePostprocessor
block = 'clad'
[]
[ceramic_vol]
type = VolumePostprocessor
block = 'ceramic'
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
[]
[]
(microreactors/s8er/core_2D_bison_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : BISON (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# # ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
fuel_radius = 0.0067564 # (m)
ceramic_radius_outer = 0.006826079 # (m)
gap_radius_outer = 0.006866719 # (m)
clad_radius_outer = 0.007130879 # (m)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
#clad_thickness = 0.00026416 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
cut_apothem = 0.115924
cut_y = 0.057962
cut_x = 0.100393129
scube_apothem = .11815
scube_x = 0.059075
scube_y = 0.102320901
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
inlet_T_fluid = 949.81667 # (K)
ht_coeff = 4539.6
# Material Properties ------------------------------------------------------------
# Reference:
# @article{SNAPFuel,
# author = "Nelson, S G",
# title = "High-temperature thermal propeties of SNAP-10A fuel material",
# doi = "10.2172/4260713",
# url = "https://www.osti.gov/biblio/4260713",
# journal = "",
# place = "United States",
# year = "1965",
# month = "2"
# }
clad_density = 8617.9333 # (kg/m^3)
clad_tc = 18.85239 # (W/m K)
clad_cp = 418.68 # (J/kg-K)
fuel_density = 5963 # (kg/m^3)
gap_tc = .346146933
#gap_dens = 0.016646998
#gap_cp = 5193.163779
# fuel_dens = -0.222222222*T + 6003
# fuel_cp = -0.222222222*T + 27.73992
# fuel_tc = -0.222222222*T + 472.27104
ceramic_emiss = .80
clad_emiss = .80
ceramic_dens = 2242.584872
ceramic_cp = 837.36
ceramic_tc = 1.730734666
intref_dens = 1810.086361
intref_cp = 2721.42
intref_tc = 131.5358346
coolant_dens = 800
coolant_cp = 880
coolant_tc = 28
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
ring_radii = '${fuel_radius} ${ceramic_radius_outer} ${gap_radius_outer} ${clad_radius_outer} '
ring_intervals = '1 1 1 1'
ring_block_ids = '1 2 3 4'
background_intervals = '1'
background_block_ids = '5'
quad_center_elements = true
smoothing_max_it = 3
[]
[coolant_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '1'
background_block_ids = '6'
quad_center_elements = true
smoothing_max_it = 3
external_boundary_id = '6'
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 coolant_elem1'
# Pattern ID 0 1
background_intervals = 1
background_block_id = '7'
background_block_name = 'coolant'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'1 0 0 0 0 0 0 0 1;
0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 1'
[]
[block_rename1]
type = RenameBlockGenerator
input = fuel_assem
old_block = '1 2 3 4 5 6 7'
new_block = 'fuel ceramic gap clad coolant coolant coolant'
[]
[bound_rename1]
type = RenameBoundaryGenerator
input = block_rename1
old_boundary = '3 5 7'
new_boundary = 'gap_inner gap_outer clad_outer'
[]
[inner_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = bound_rename1
primary_block = ceramic
paired_block = gap
new_boundary = 'gap_inner'
[]
[outer_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = inner_gap1
primary_block = clad
paired_block = gap
new_boundary = 'gap_outer'
[]
[del_gap1]
type = BlockDeletionGenerator
block = gap
input = outer_gap1
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = del_gap1
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 10000
peripheral_ring_block_id = 8
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 10000
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 10000
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 10000
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 10000
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 10000
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 10000
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 10000
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 10000
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 10000
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 10000
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 10000
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 10000
[]
[bound_rename2]
type = RenameBoundaryGenerator
input = scube_6
old_boundary = '10000'
new_boundary = 'void_outer'
[]
[]
# ==============================================================================
# VARIABLES AND KERNELS
# ==============================================================================
[Variables]
[bison_temp]
#initial_condition = '${inlet_T_fluid}'
[]
[]
[Kernels]
# Equation 0 (Heat conduction equation with heat generation).
[heat_conduction]
type = ADHeatConduction
variable = bison_temp
[]
[heat_source]
type = ADCoupledForce
variable = bison_temp
v = bison_norm_power_density
block = fuel
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[aux_tk]
family = LAGRANGE
order = FIRST
block = fuel
[]
[aux_cp]
family = LAGRANGE
order = FIRST
block = fuel
[]
[bison_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[aux_T_inf]
family = LAGRANGE
order = FIRST
block = clad
[]
[bison_Tfuel]
block = 'fuel'
[]
[bison_Tcool]
block = 'coolant'
[]
[bison_Tintref]
block = 'int_ref'
[]
[bison_norm_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[]
[AuxKernels]
[aux_tk]
type = FunctionAux
function = tk_f
variable = aux_tk
block = fuel
[]
[aux_cp]
type = FunctionAux
function = cp_f
variable = aux_cp
block = fuel
[]
[aux_T_inf]
type = FunctionAux
function = T_inf_f
variable = aux_T_inf
block = clad
[]
[norm_Tfuel]
type = NormalizationAux
variable = bison_Tfuel
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tcool]
type = NormalizationAux
variable = bison_Tcool
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tintref]
type = NormalizationAux
variable = bison_Tintref
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_power_density]
type = NormalizationAux
variable = bison_norm_power_density
source_variable = bison_power_density
normal_factor = 1.26359177225#1.265805981
execute_on = 'timestep_begin' #check
[]
[]
# ==============================================================================
# INITIAL CONDITIONS AND FUNCTIONS
# ==============================================================================
[Functions]
[tk_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '27.73992+bison_temp*0.027428444'#Models/SNAP10A_dimensions
[]
[cp_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '472.27104+bison_temp*0.7275728'#Models/SNAP10A_dimensions
[]
[T_inf_f]
type = ParsedFunction
expression = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[fuel_thermal_conduction]
# Metallic Uranium Zirc Hydride fuel conduction params.
type = ADHeatConductionMaterial
temp = bison_temp
specific_heat_temperature_function = cp_f
thermal_conductivity_temperature_function = tk_f
block = fuel
[]
# Metallic Uranium Zirc Hydride fuel density
[fuel_density]
type = ADGenericConstantMaterial
prop_names = 'density'
prop_values = '${fuel_density}'
block = fuel
[]
# Fluid ambient temperature.
# [T_infinity]
# #Models/SNAP10A_dimensions
# type = ADCoupledValueFunctionMaterial
# prop_name = 'T_infinity'
# function = 'if(x<180, 293.15+2.908240722*x, 816.48333)'
# v = 'aux_time'
# block = 2
# boundary = 'right'
# []
[clad_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${clad_density} ${clad_cp} ${ clad_tc}'
block = clad
[]
[gap_heat_transfer]
#Models/SNAP10A_dimensions
type = GenericConstantMaterial
prop_names = 'gap_conductance gap_conductance_dT'
prop_values = '${gap_tc} 0.0'
boundary = 'gap_inner gap_outer'
[]
# [gap_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${gap_dens} ${gap_cp} ${gap_tc}'
# block = gap
# []
[ceramic_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${ceramic_dens} ${ ceramic_cp} ${ ceramic_tc}'
block = ceramic
[]
[intref_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${intref_dens} ${intref_cp} ${ intref_tc}'
block = int_ref
[]
# [air_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${air_dens} ${air_cp} ${air_tc}'
# block = air
# []
[coolant_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${coolant_dens} ${coolant_cp} ${coolant_tc}'
block = coolant
[]
[]
# ==============================================================================
# BOUNDARY CONDITIONS
# ==============================================================================
[BCs]
# Convective BC outer surface fuel pin
[convective_boundary]
type = CoupledConvectiveHeatFluxBC
variable = bison_temp
boundary = clad_outer
T_infinity = aux_T_inf
htc = '${ht_coeff}'
[]
[]
[ThermalContact]
# Gap Heat Transfer
[gap_ht]
type = GapHeatTransfer
variable = bison_temp
gap_geometry_type = 'PLATE'
primary = 'gap_inner'
secondary = 'gap_outer'
emissivity_primary = '${ceramic_emiss}'
emissivity_secondary = '${clad_emiss}'
gap_conductivity = '${gap_tc}' # W/mK
quadrature = true
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
nl_abs_step_tol = 1e-8
l_tol = 1e-8
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[temp_av]
# Temp average fuel
type = ElementAverageValue
variable = bison_temp
[]
[tc_av]
type = ElementAverageValue
variable = aux_tk
block = fuel
[]
# Specific Heat postprocessor
[cp_av]
type = ElementAverageValue
variable = aux_cp
block = fuel
[]
# Temp max value
[temp_max]
type = ElementExtremeValue
variable = bison_temp
[]
# Temp min value
[temp_min]
type = ElementExtremeValue
variable = bison_temp
value_type = min
[]
[power]
type = ElementIntegralVariablePostprocessor
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power]
type = ElementIntegralVariablePostprocessor
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[power_density_avg]
type = ElementAverageValue
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power_density_avg]
type = ElementAverageValue
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[coolant_vol]
type = VolumePostprocessor
block = 'coolant'
[]
[fuel_vol]
type = VolumePostprocessor
block = 'fuel'
[]
[intref_vol]
type = VolumePostprocessor
block = 'int_ref'
[]
[clad_vol]
type = VolumePostprocessor
block = 'clad'
[]
[ceramic_vol]
type = VolumePostprocessor
block = 'ceramic'
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
[]
[]
(microreactors/s8er/core_2D_bison_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : BISON (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# # ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
fuel_radius = 0.0067564 # (m)
ceramic_radius_outer = 0.006826079 # (m)
gap_radius_outer = 0.006866719 # (m)
clad_radius_outer = 0.007130879 # (m)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
#clad_thickness = 0.00026416 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
cut_apothem = 0.115924
cut_y = 0.057962
cut_x = 0.100393129
scube_apothem = .11815
scube_x = 0.059075
scube_y = 0.102320901
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
inlet_T_fluid = 949.81667 # (K)
ht_coeff = 4539.6
# Material Properties ------------------------------------------------------------
# Reference:
# @article{SNAPFuel,
# author = "Nelson, S G",
# title = "High-temperature thermal propeties of SNAP-10A fuel material",
# doi = "10.2172/4260713",
# url = "https://www.osti.gov/biblio/4260713",
# journal = "",
# place = "United States",
# year = "1965",
# month = "2"
# }
clad_density = 8617.9333 # (kg/m^3)
clad_tc = 18.85239 # (W/m K)
clad_cp = 418.68 # (J/kg-K)
fuel_density = 5963 # (kg/m^3)
gap_tc = .346146933
#gap_dens = 0.016646998
#gap_cp = 5193.163779
# fuel_dens = -0.222222222*T + 6003
# fuel_cp = -0.222222222*T + 27.73992
# fuel_tc = -0.222222222*T + 472.27104
ceramic_emiss = .80
clad_emiss = .80
ceramic_dens = 2242.584872
ceramic_cp = 837.36
ceramic_tc = 1.730734666
intref_dens = 1810.086361
intref_cp = 2721.42
intref_tc = 131.5358346
coolant_dens = 800
coolant_cp = 880
coolant_tc = 28
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
ring_radii = '${fuel_radius} ${ceramic_radius_outer} ${gap_radius_outer} ${clad_radius_outer} '
ring_intervals = '1 1 1 1'
ring_block_ids = '1 2 3 4'
background_intervals = '1'
background_block_ids = '5'
quad_center_elements = true
smoothing_max_it = 3
[]
[coolant_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '4 4 4 4 4 4'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '1'
background_block_ids = '6'
quad_center_elements = true
smoothing_max_it = 3
external_boundary_id = '6'
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 coolant_elem1'
# Pattern ID 0 1
background_intervals = 1
background_block_id = '7'
background_block_name = 'coolant'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'1 0 0 0 0 0 0 0 1;
0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 ;
1 0 0 0 0 0 0 0 1'
[]
[block_rename1]
type = RenameBlockGenerator
input = fuel_assem
old_block = '1 2 3 4 5 6 7'
new_block = 'fuel ceramic gap clad coolant coolant coolant'
[]
[bound_rename1]
type = RenameBoundaryGenerator
input = block_rename1
old_boundary = '3 5 7'
new_boundary = 'gap_inner gap_outer clad_outer'
[]
[inner_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = bound_rename1
primary_block = ceramic
paired_block = gap
new_boundary = 'gap_inner'
[]
[outer_gap1]
type = SideSetsBetweenSubdomainsGenerator
input = inner_gap1
primary_block = clad
paired_block = gap
new_boundary = 'gap_outer'
[]
[del_gap1]
type = BlockDeletionGenerator
block = gap
input = outer_gap1
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = del_gap1
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 10000
peripheral_ring_block_id = 8
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 10000
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 10000
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 10000
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 10000
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 10000
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 10000
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 10000
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 10000
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 10000
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 10000
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 10000
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 10000
[]
[bound_rename2]
type = RenameBoundaryGenerator
input = scube_6
old_boundary = '10000'
new_boundary = 'void_outer'
[]
[]
# ==============================================================================
# VARIABLES AND KERNELS
# ==============================================================================
[Variables]
[bison_temp]
#initial_condition = '${inlet_T_fluid}'
[]
[]
[Kernels]
# Equation 0 (Heat conduction equation with heat generation).
[heat_conduction]
type = ADHeatConduction
variable = bison_temp
[]
[heat_source]
type = ADCoupledForce
variable = bison_temp
v = bison_norm_power_density
block = fuel
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[aux_tk]
family = LAGRANGE
order = FIRST
block = fuel
[]
[aux_cp]
family = LAGRANGE
order = FIRST
block = fuel
[]
[bison_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[aux_T_inf]
family = LAGRANGE
order = FIRST
block = clad
[]
[bison_Tfuel]
block = 'fuel'
[]
[bison_Tcool]
block = 'coolant'
[]
[bison_Tintref]
block = 'int_ref'
[]
[bison_norm_power_density]
family = L2_LAGRANGE
order = FIRST
block = fuel
[]
[]
[AuxKernels]
[aux_tk]
type = FunctionAux
function = tk_f
variable = aux_tk
block = fuel
[]
[aux_cp]
type = FunctionAux
function = cp_f
variable = aux_cp
block = fuel
[]
[aux_T_inf]
type = FunctionAux
function = T_inf_f
variable = aux_T_inf
block = clad
[]
[norm_Tfuel]
type = NormalizationAux
variable = bison_Tfuel
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tcool]
type = NormalizationAux
variable = bison_Tcool
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_Tintref]
type = NormalizationAux
variable = bison_Tintref
source_variable = bison_temp
execute_on = 'timestep_end' #check
[]
[norm_power_density]
type = NormalizationAux
variable = bison_norm_power_density
source_variable = bison_power_density
normal_factor = 1.26359177225#1.265805981
execute_on = 'timestep_begin' #check
[]
[]
# ==============================================================================
# INITIAL CONDITIONS AND FUNCTIONS
# ==============================================================================
[Functions]
[tk_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '27.73992+bison_temp*0.027428444'#Models/SNAP10A_dimensions
[]
[cp_f]
type = ParsedFunction
symbol_names = 'bison_temp'
symbol_values = 'temp_av'
expression = '472.27104+bison_temp*0.7275728'#Models/SNAP10A_dimensions
[]
[T_inf_f]
type = ParsedFunction
expression = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[fuel_thermal_conduction]
# Metallic Uranium Zirc Hydride fuel conduction params.
type = ADHeatConductionMaterial
temp = bison_temp
specific_heat_temperature_function = cp_f
thermal_conductivity_temperature_function = tk_f
block = fuel
[]
# Metallic Uranium Zirc Hydride fuel density
[fuel_density]
type = ADGenericConstantMaterial
prop_names = 'density'
prop_values = '${fuel_density}'
block = fuel
[]
# Fluid ambient temperature.
# [T_infinity]
# #Models/SNAP10A_dimensions
# type = ADCoupledValueFunctionMaterial
# prop_name = 'T_infinity'
# function = 'if(x<180, 293.15+2.908240722*x, 816.48333)'
# v = 'aux_time'
# block = 2
# boundary = 'right'
# []
[clad_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${clad_density} ${clad_cp} ${ clad_tc}'
block = clad
[]
[gap_heat_transfer]
#Models/SNAP10A_dimensions
type = GenericConstantMaterial
prop_names = 'gap_conductance gap_conductance_dT'
prop_values = '${gap_tc} 0.0'
boundary = 'gap_inner gap_outer'
[]
# [gap_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${gap_dens} ${gap_cp} ${gap_tc}'
# block = gap
# []
[ceramic_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${ceramic_dens} ${ ceramic_cp} ${ ceramic_tc}'
block = ceramic
[]
[intref_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${intref_dens} ${intref_cp} ${ intref_tc}'
block = int_ref
[]
# [air_thermal_conduction]
# #Models/SNAP10A_dimensions
# type = ADGenericConstantMaterial
# prop_names = 'density specific_heat thermal_conductivity'
# prop_values = '${air_dens} ${air_cp} ${air_tc}'
# block = air
# []
[coolant_thermal_conduction]
#Models/SNAP10A_dimensions
type = ADGenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${coolant_dens} ${coolant_cp} ${coolant_tc}'
block = coolant
[]
[]
# ==============================================================================
# BOUNDARY CONDITIONS
# ==============================================================================
[BCs]
# Convective BC outer surface fuel pin
[convective_boundary]
type = CoupledConvectiveHeatFluxBC
variable = bison_temp
boundary = clad_outer
T_infinity = aux_T_inf
htc = '${ht_coeff}'
[]
[]
[ThermalContact]
# Gap Heat Transfer
[gap_ht]
type = GapHeatTransfer
variable = bison_temp
gap_geometry_type = 'PLATE'
primary = 'gap_inner'
secondary = 'gap_outer'
emissivity_primary = '${ceramic_emiss}'
emissivity_secondary = '${clad_emiss}'
gap_conductivity = '${gap_tc}' # W/mK
quadrature = true
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
nl_abs_step_tol = 1e-8
l_tol = 1e-8
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[temp_av]
# Temp average fuel
type = ElementAverageValue
variable = bison_temp
[]
[tc_av]
type = ElementAverageValue
variable = aux_tk
block = fuel
[]
# Specific Heat postprocessor
[cp_av]
type = ElementAverageValue
variable = aux_cp
block = fuel
[]
# Temp max value
[temp_max]
type = ElementExtremeValue
variable = bison_temp
[]
# Temp min value
[temp_min]
type = ElementExtremeValue
variable = bison_temp
value_type = min
[]
[power]
type = ElementIntegralVariablePostprocessor
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power]
type = ElementIntegralVariablePostprocessor
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[power_density_avg]
type = ElementAverageValue
variable = bison_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[norm_power_density_avg]
type = ElementAverageValue
variable = bison_norm_power_density
#use_displaced_mesh = true # check
block = fuel
execute_on = 'initial timestep_end'
[]
[coolant_vol]
type = VolumePostprocessor
block = 'coolant'
[]
[fuel_vol]
type = VolumePostprocessor
block = 'fuel'
[]
[intref_vol]
type = VolumePostprocessor
block = 'int_ref'
[]
[clad_vol]
type = VolumePostprocessor
block = 'clad'
[]
[ceramic_vol]
type = VolumePostprocessor
block = 'ceramic'
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
[]
[]
(microreactors/s8er/core_2D_griffin_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : Griffin (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
# fuel_radius = 0.0067564 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
# Geometry Cuts
cut_apothem = .115824
cut_y = .057912
cut_x = .1003065264
scube_apothem = .1181
scube_x = 0.05905
scube_y = 0.1022776
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
total_power = 600000.00 # (W). #total power
inlet_T_fluid = 949.81667 # (K)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '1 1'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem2]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '2 2'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem3]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '3 3'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem4]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '4 4'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem5]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '5 5'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem6]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '6 6'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem7]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '7 7'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem8]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '8 8'
quad_center_elements = true
smoothing_max_it = 3
[]
[air_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '9 9'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 fuel_elem2 fuel_elem3 fuel_elem4 fuel_elem5 fuel_elem6 fuel_elem7 fuel_elem8 air_elem1'
# Pattern ID 0 1 2 3 4 5 6 7 8
background_intervals = 1
background_block_id = '10'
background_block_name = 'AIR'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'8 7 7 7 7 7 7 7 8;
7 6 6 6 6 6 6 6 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
8 6 5 4 3 2 1 0 0 0 1 2 3 4 5 6 8 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 6 6 6 6 6 6 6 7 ;
8 7 7 7 7 7 7 7 8'
external_boundary_id = '10'
external_boundary_name = 'active_outer'
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = fuel_assem
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 'active_outer'
external_boundary_name = 'core_outer'
external_boundary_id = '11'
peripheral_ring_block_id = 11
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 'core_outer'
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 'core_outer'
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 'core_outer'
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 'core_outer'
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 'core_outer'
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 'core_outer'
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 'core_outer'
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 'core_outer'
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 'core_outer'
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 'core_outer'
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 'core_outer'
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 'core_outer'
[]
[set_mat_id]
type = SubdomainExtraElementIDGenerator
input = 'scube_6'
subdomains = '1 2 3 4 5 6 7 8 9 10 11'
extra_element_id_names = 'material_id'
extra_element_ids = '100 200 900 400 500 600 700 800 300 300 1200'
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[griffin_Tfuel]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tcool]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tintref]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# TRANSPORT SYSTEMS
# ==============================================================================
[TransportSystems]
# Eigenvalue Problem
particle = neutron
equation_type = eigenvalue
# Sixteen Group XS Structure
G = 16
VacuumBoundary = 'core_outer'
# DFEM-Transport
[dsn]
scheme = DFEM-SN
#n_delay_groups = 6
family = MONOMIAL
order = FIRST
AQtype = Gauss-Chebyshev
NPolar = 3 # use >=2 for final runs (4 sawtooth nodes sufficient)
NAzmthl = 9 # use >=6 for final runs (4 sawtooth nodes sufficient)
NA = 1
sweep_type = asynchronous_parallel_sweeper
using_array_variable = true
collapse_scattering = true
hide_angular_flux = true
# verbose = 3
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[core]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '1 2 3 4 5 6 7 8 9 10'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
#volume_adjuster = core_vol_adjust #to be fixed
[]
[int_ref]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '11'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
volume_adjuster = int_ref_vol_adjust
[]
[]
[PowerDensity]
power = '${total_power}'
power_density_variable = griffin_power_density
integrated_power_postprocessor = integrated_power
family = L2_LAGRANGE
order = FIRST
[]
[UserObjects]
# [core_vol_adjust] # TO BE FIXED (number of 'vol' needs to match the number of blocks)
# type = VolumeAdjuster
# block = '1 2 3 4 5 6 7 8 9 10'
# volume = 0.040999863
# execute_on = 'initial timestep_begin timestep_end'
# []
[int_ref_vol_adjust]
type = VolumeAdjuster
block = '11'
volume = 0.00331416
execute_on = 'initial timestep_begin timestep_end'
[]
# [Tcore]
# type = LayeredAverage
# variable = griff_temp
# direction = x
# num_layers = '9'
# block = 'core'
# #execute_on = 'initial linear'
# []
[]
# ==============================================================================
# MULTIAPPS AND TRANSFERS
# ==============================================================================
[MultiApps]
[bison_coupled]
type = FullSolveMultiApp
app_type = GriffinApp
input_files = 'core_2D_bison_coupled.i'
positions = '0 0 0'
[]
[]
[Transfers]
[to_bison_power_density]
type = MultiAppProjectionTransfer
to_multi_app = bison_coupled
source_variable = griffin_power_density
variable = bison_power_density
[]
[from_bison_Tfuel]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tfuel
variable = griffin_Tfuel
[]
[from_bison_Tcool]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tcool
variable = griffin_Tcool
[]
[from_bison_Tintref]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tintref
variable = griffin_Tintref
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
# DFEM-SN Executioner
[Executioner]
type = SweepUpdate
verbose = true
richardson_max_its = 50
richardson_value = eigenvalue
richardson_rel_tol = 1e-8
richardson_abs_tol = 1e-8
inner_solve_type = GMRes
max_inner_its = 2
fixed_point_max_its = 2
custom_pp = eigenvalue
custom_rel_tol = 1e-4
force_fixed_point_solve = true
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[griffin_power]
type = ElementIntegralVariablePostprocessor
variable = griffin_power_density
#use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[core_vol]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8 9 10'
execute_on = 'initial timestep_end'
[]
[intref_vol]
type = VolumePostprocessor
block = '11'
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griff_power_density_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8'
variable = griffin_power_density
execute_on = 'initial timestep_end'
[]
[norm_volume]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8'
[]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(microreactors/s8er/core_2D_griffin_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : Griffin (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
# fuel_radius = 0.0067564 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
# Geometry Cuts
cut_apothem = .115824
cut_y = .057912
cut_x = .1003065264
scube_apothem = .1181
scube_x = 0.05905
scube_y = 0.1022776
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
total_power = 600000.00 # (W). #total power
inlet_T_fluid = 949.81667 # (K)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '1 1'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem2]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '2 2'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem3]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '3 3'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem4]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '4 4'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem5]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '5 5'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem6]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '6 6'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem7]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '7 7'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem8]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '8 8'
quad_center_elements = true
smoothing_max_it = 3
[]
[air_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '9 9'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 fuel_elem2 fuel_elem3 fuel_elem4 fuel_elem5 fuel_elem6 fuel_elem7 fuel_elem8 air_elem1'
# Pattern ID 0 1 2 3 4 5 6 7 8
background_intervals = 1
background_block_id = '10'
background_block_name = 'AIR'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'8 7 7 7 7 7 7 7 8;
7 6 6 6 6 6 6 6 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
8 6 5 4 3 2 1 0 0 0 1 2 3 4 5 6 8 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 6 6 6 6 6 6 6 7 ;
8 7 7 7 7 7 7 7 8'
external_boundary_id = '10'
external_boundary_name = 'active_outer'
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = fuel_assem
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 'active_outer'
external_boundary_name = 'core_outer'
external_boundary_id = '11'
peripheral_ring_block_id = 11
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 'core_outer'
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 'core_outer'
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 'core_outer'
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 'core_outer'
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 'core_outer'
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 'core_outer'
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 'core_outer'
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 'core_outer'
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 'core_outer'
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 'core_outer'
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 'core_outer'
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 'core_outer'
[]
[set_mat_id]
type = SubdomainExtraElementIDGenerator
input = 'scube_6'
subdomains = '1 2 3 4 5 6 7 8 9 10 11'
extra_element_id_names = 'material_id'
extra_element_ids = '100 200 900 400 500 600 700 800 300 300 1200'
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[griffin_Tfuel]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tcool]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tintref]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# TRANSPORT SYSTEMS
# ==============================================================================
[TransportSystems]
# Eigenvalue Problem
particle = neutron
equation_type = eigenvalue
# Sixteen Group XS Structure
G = 16
VacuumBoundary = 'core_outer'
# DFEM-Transport
[dsn]
scheme = DFEM-SN
#n_delay_groups = 6
family = MONOMIAL
order = FIRST
AQtype = Gauss-Chebyshev
NPolar = 3 # use >=2 for final runs (4 sawtooth nodes sufficient)
NAzmthl = 9 # use >=6 for final runs (4 sawtooth nodes sufficient)
NA = 1
sweep_type = asynchronous_parallel_sweeper
using_array_variable = true
collapse_scattering = true
hide_angular_flux = true
# verbose = 3
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[core]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '1 2 3 4 5 6 7 8 9 10'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
#volume_adjuster = core_vol_adjust #to be fixed
[]
[int_ref]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '11'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
volume_adjuster = int_ref_vol_adjust
[]
[]
[PowerDensity]
power = '${total_power}'
power_density_variable = griffin_power_density
integrated_power_postprocessor = integrated_power
family = L2_LAGRANGE
order = FIRST
[]
[UserObjects]
# [core_vol_adjust] # TO BE FIXED (number of 'vol' needs to match the number of blocks)
# type = VolumeAdjuster
# block = '1 2 3 4 5 6 7 8 9 10'
# volume = 0.040999863
# execute_on = 'initial timestep_begin timestep_end'
# []
[int_ref_vol_adjust]
type = VolumeAdjuster
block = '11'
volume = 0.00331416
execute_on = 'initial timestep_begin timestep_end'
[]
# [Tcore]
# type = LayeredAverage
# variable = griff_temp
# direction = x
# num_layers = '9'
# block = 'core'
# #execute_on = 'initial linear'
# []
[]
# ==============================================================================
# MULTIAPPS AND TRANSFERS
# ==============================================================================
[MultiApps]
[bison_coupled]
type = FullSolveMultiApp
app_type = GriffinApp
input_files = 'core_2D_bison_coupled.i'
positions = '0 0 0'
[]
[]
[Transfers]
[to_bison_power_density]
type = MultiAppProjectionTransfer
to_multi_app = bison_coupled
source_variable = griffin_power_density
variable = bison_power_density
[]
[from_bison_Tfuel]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tfuel
variable = griffin_Tfuel
[]
[from_bison_Tcool]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tcool
variable = griffin_Tcool
[]
[from_bison_Tintref]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tintref
variable = griffin_Tintref
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
# DFEM-SN Executioner
[Executioner]
type = SweepUpdate
verbose = true
richardson_max_its = 50
richardson_value = eigenvalue
richardson_rel_tol = 1e-8
richardson_abs_tol = 1e-8
inner_solve_type = GMRes
max_inner_its = 2
fixed_point_max_its = 2
custom_pp = eigenvalue
custom_rel_tol = 1e-4
force_fixed_point_solve = true
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[griffin_power]
type = ElementIntegralVariablePostprocessor
variable = griffin_power_density
#use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[core_vol]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8 9 10'
execute_on = 'initial timestep_end'
[]
[intref_vol]
type = VolumePostprocessor
block = '11'
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griff_power_density_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8'
variable = griffin_power_density
execute_on = 'initial timestep_end'
[]
[norm_volume]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8'
[]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(microreactors/s8er/core_2D_griffin_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : Griffin (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
# fuel_radius = 0.0067564 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
# Geometry Cuts
cut_apothem = .115824
cut_y = .057912
cut_x = .1003065264
scube_apothem = .1181
scube_x = 0.05905
scube_y = 0.1022776
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
total_power = 600000.00 # (W). #total power
inlet_T_fluid = 949.81667 # (K)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '1 1'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem2]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '2 2'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem3]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '3 3'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem4]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '4 4'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem5]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '5 5'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem6]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '6 6'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem7]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '7 7'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem8]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '8 8'
quad_center_elements = true
smoothing_max_it = 3
[]
[air_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '9 9'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 fuel_elem2 fuel_elem3 fuel_elem4 fuel_elem5 fuel_elem6 fuel_elem7 fuel_elem8 air_elem1'
# Pattern ID 0 1 2 3 4 5 6 7 8
background_intervals = 1
background_block_id = '10'
background_block_name = 'AIR'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'8 7 7 7 7 7 7 7 8;
7 6 6 6 6 6 6 6 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
8 6 5 4 3 2 1 0 0 0 1 2 3 4 5 6 8 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 6 6 6 6 6 6 6 7 ;
8 7 7 7 7 7 7 7 8'
external_boundary_id = '10'
external_boundary_name = 'active_outer'
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = fuel_assem
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 'active_outer'
external_boundary_name = 'core_outer'
external_boundary_id = '11'
peripheral_ring_block_id = 11
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 'core_outer'
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 'core_outer'
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 'core_outer'
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 'core_outer'
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 'core_outer'
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 'core_outer'
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 'core_outer'
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 'core_outer'
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 'core_outer'
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 'core_outer'
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 'core_outer'
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 'core_outer'
[]
[set_mat_id]
type = SubdomainExtraElementIDGenerator
input = 'scube_6'
subdomains = '1 2 3 4 5 6 7 8 9 10 11'
extra_element_id_names = 'material_id'
extra_element_ids = '100 200 900 400 500 600 700 800 300 300 1200'
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[griffin_Tfuel]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tcool]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tintref]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# TRANSPORT SYSTEMS
# ==============================================================================
[TransportSystems]
# Eigenvalue Problem
particle = neutron
equation_type = eigenvalue
# Sixteen Group XS Structure
G = 16
VacuumBoundary = 'core_outer'
# DFEM-Transport
[dsn]
scheme = DFEM-SN
#n_delay_groups = 6
family = MONOMIAL
order = FIRST
AQtype = Gauss-Chebyshev
NPolar = 3 # use >=2 for final runs (4 sawtooth nodes sufficient)
NAzmthl = 9 # use >=6 for final runs (4 sawtooth nodes sufficient)
NA = 1
sweep_type = asynchronous_parallel_sweeper
using_array_variable = true
collapse_scattering = true
hide_angular_flux = true
# verbose = 3
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[core]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '1 2 3 4 5 6 7 8 9 10'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
#volume_adjuster = core_vol_adjust #to be fixed
[]
[int_ref]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '11'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
volume_adjuster = int_ref_vol_adjust
[]
[]
[PowerDensity]
power = '${total_power}'
power_density_variable = griffin_power_density
integrated_power_postprocessor = integrated_power
family = L2_LAGRANGE
order = FIRST
[]
[UserObjects]
# [core_vol_adjust] # TO BE FIXED (number of 'vol' needs to match the number of blocks)
# type = VolumeAdjuster
# block = '1 2 3 4 5 6 7 8 9 10'
# volume = 0.040999863
# execute_on = 'initial timestep_begin timestep_end'
# []
[int_ref_vol_adjust]
type = VolumeAdjuster
block = '11'
volume = 0.00331416
execute_on = 'initial timestep_begin timestep_end'
[]
# [Tcore]
# type = LayeredAverage
# variable = griff_temp
# direction = x
# num_layers = '9'
# block = 'core'
# #execute_on = 'initial linear'
# []
[]
# ==============================================================================
# MULTIAPPS AND TRANSFERS
# ==============================================================================
[MultiApps]
[bison_coupled]
type = FullSolveMultiApp
app_type = GriffinApp
input_files = 'core_2D_bison_coupled.i'
positions = '0 0 0'
[]
[]
[Transfers]
[to_bison_power_density]
type = MultiAppProjectionTransfer
to_multi_app = bison_coupled
source_variable = griffin_power_density
variable = bison_power_density
[]
[from_bison_Tfuel]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tfuel
variable = griffin_Tfuel
[]
[from_bison_Tcool]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tcool
variable = griffin_Tcool
[]
[from_bison_Tintref]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tintref
variable = griffin_Tintref
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
# DFEM-SN Executioner
[Executioner]
type = SweepUpdate
verbose = true
richardson_max_its = 50
richardson_value = eigenvalue
richardson_rel_tol = 1e-8
richardson_abs_tol = 1e-8
inner_solve_type = GMRes
max_inner_its = 2
fixed_point_max_its = 2
custom_pp = eigenvalue
custom_rel_tol = 1e-4
force_fixed_point_solve = true
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[griffin_power]
type = ElementIntegralVariablePostprocessor
variable = griffin_power_density
#use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[core_vol]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8 9 10'
execute_on = 'initial timestep_end'
[]
[intref_vol]
type = VolumePostprocessor
block = '11'
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griff_power_density_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8'
variable = griffin_power_density
execute_on = 'initial timestep_end'
[]
[norm_volume]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8'
[]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(microreactors/s8er/core_2D_griffin_coupled.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# Idaho Falls, INL, 2022-07-20 10:50:17
# Author(s): Isaac Naupa Aguirre
# Supervisor: Stefano Terlizzi
# ==============================================================================
# SNAP8ER 2D Core Wet Operational Conditions, Coupled with Bison.
# Application : Griffin (standalone), BlueCRAB (coupled)
# For use of this model please cite:
# @InProceedings{s8er_naupa2022,
# author = "Naupa, Isaac and Garcia, Samuel and Terlizzi, Stefano and Kotlyar, Dan and Lindley, Ben",
# title = "{(In Preperation) Validation of SNAP8 Criticality Configuration Experiments using NEAMS Tools}",
# booktitle = "{Proceedings of ANS M\&C}",
# year = "2022"
# }
# @InProceedings{s8er_garcia2022,
# author = "Garcia, Samuel and Naupa, Isaac and Kotlyar, Dan and Lindley, Ben",
# title = "{Validation of SNAP8 Criticality Configuration Experiments using SERPENT}",
# booktitle = "{Proceedings of ANS Winter Conference}",
# year = "2022"
# }
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Calculations for material property equations and system parameters & dimensions
# can be found under Models/SNAP8ER_dimensions_params_etc.xlsx
# Geometry ---------------------------------------------------------------------
# Reference:
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
hex_apothem = 0.007239
#fuel_volume = ${fparse pi*fuel_len*fuel_radius*fuel_radius} # (m3)
# fuel_len = 0.3556 # (m).
# fuel_len_half = ${fparse fuel_len*0.5}
# fuel_radius = 0.0067564 # (m)
active_apothem = .110414
nonactive_corner = .2550
nonactive_corner_half = ${fparse nonactive_corner*0.5}
# Geometry Cuts
cut_apothem = .115824
cut_y = .057912
cut_x = .1003065264
scube_apothem = .1181
scube_x = 0.05905
scube_y = 0.1022776
# System Properties ------------------------------------------------------------
# Reference:
# @techreport{SNAP8Summary,
# author = "Division, Atomics Internation",
# title = "{SNAP 8 summary report}",
# institution = "Atomics Internation Division",
# year = "1973",
# doi = "10.2172/4393793",
# url = "https://www.osti.gov/biblio/4393793"
# }
total_power = 600000.00 # (W). #total power
inlet_T_fluid = 949.81667 # (K)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[fuel_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '1 1'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem2]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '2 2'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem3]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '3 3'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem4]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '4 4'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem5]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '5 5'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem6]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '6 6'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem7]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '7 7'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_elem8]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '8 8'
quad_center_elements = true
smoothing_max_it = 3
[]
[air_elem1]
type = PolygonConcentricCircleMeshGenerator
num_sides = '6'
num_sectors_per_side = '2 2 2 2 2 2'
polygon_size = '${hex_apothem}'
preserve_volumes = true
background_intervals = '2'
background_block_ids = '9 9'
quad_center_elements = true
smoothing_max_it = 3
[]
[fuel_assem]
type = PatternedHexMeshGenerator
inputs = 'fuel_elem1 fuel_elem2 fuel_elem3 fuel_elem4 fuel_elem5 fuel_elem6 fuel_elem7 fuel_elem8 air_elem1'
# Pattern ID 0 1 2 3 4 5 6 7 8
background_intervals = 1
background_block_id = '10'
background_block_name = 'AIR'
hexagon_size = '${active_apothem}'
hexagon_size_style = 'apothem'
pattern_boundary = 'hexagon'
pattern =
'8 7 7 7 7 7 7 7 8;
7 6 6 6 6 6 6 6 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
8 6 5 4 3 2 1 0 0 0 1 2 3 4 5 6 8 ;
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 ;
7 6 5 4 3 2 2 2 2 3 4 5 6 7 ;
7 6 5 4 3 3 3 3 3 4 5 6 7 ;
7 6 5 4 4 4 4 4 4 5 6 7 ;
7 6 5 5 5 5 5 5 5 6 7 ;
7 6 6 6 6 6 6 6 6 7 ;
8 7 7 7 7 7 7 7 8'
external_boundary_id = '10'
external_boundary_name = 'active_outer'
[]
[int_ref]
type = PeripheralRingMeshGenerator
input = fuel_assem
peripheral_ring_radius = '${nonactive_corner_half}'
input_mesh_external_boundary = 'active_outer'
external_boundary_name = 'core_outer'
external_boundary_id = '11'
peripheral_ring_block_id = 11
peripheral_ring_block_name = int_ref
peripheral_layer_num = 10
[]
[cut_1]
type = PlaneDeletionGenerator
point = '0 ${cut_apothem} 0'
normal = '0 ${cut_apothem} 0'
input = int_ref
new_boundary = 'core_outer'
[]
[cut_2]
type = PlaneDeletionGenerator
point = '${cut_x} ${cut_y} 0'
normal = '${cut_x} ${cut_y} 0'
input = cut_1
new_boundary = 'core_outer'
[]
[cut_3]
type = PlaneDeletionGenerator
point = '${cut_x} -${cut_y} 0'
normal = '${cut_x} -${cut_y} 0'
input = cut_2
new_boundary = 'core_outer'
[]
[cut_4]
type = PlaneDeletionGenerator
point = '0 -${cut_apothem} 0'
normal = '0 -${cut_apothem} 0'
input = cut_3
new_boundary = 'core_outer'
[]
[cut_5]
type = PlaneDeletionGenerator
point = '-${cut_x} -${cut_y} 0'
normal = '-${cut_x} -${cut_y} 0'
input = cut_4
new_boundary = 'core_outer'
[]
[cut_6]
type = PlaneDeletionGenerator
point = '-${cut_x} ${cut_y} 0'
normal = '-${cut_x} ${cut_y} 0'
input = cut_5
new_boundary = 'core_outer'
[]
[scube_1]
type = PlaneDeletionGenerator
point = '${scube_apothem} 0 0'
normal = '${scube_apothem} 0 0'
input = cut_6
new_boundary = 'core_outer'
[]
[scube_2]
type = PlaneDeletionGenerator
point = '${scube_x} ${scube_y} 0'
normal = '${scube_x} ${scube_y} 0'
input = scube_1
new_boundary = 'core_outer'
[]
[scube_3]
type = PlaneDeletionGenerator
point = '${scube_x} -${scube_y} 0'
normal = '${scube_x} -${scube_y} 0'
input = scube_2
new_boundary = 'core_outer'
[]
[scube_4]
type = PlaneDeletionGenerator
point = '-${scube_apothem} 0 0'
normal = '-${scube_apothem} 0 0'
input = scube_3
new_boundary = 'core_outer'
[]
[scube_5]
type = PlaneDeletionGenerator
point = '-${scube_x} -${scube_y} 0'
normal = '-${scube_x} -${scube_y} 0'
input = scube_4
new_boundary = 'core_outer'
[]
[scube_6]
type = PlaneDeletionGenerator
point = '-${scube_x} ${scube_y} 0'
normal = '-${scube_x} ${scube_y} 0'
input = scube_5
new_boundary = 'core_outer'
[]
[set_mat_id]
type = SubdomainExtraElementIDGenerator
input = 'scube_6'
subdomains = '1 2 3 4 5 6 7 8 9 10 11'
extra_element_id_names = 'material_id'
extra_element_ids = '100 200 900 400 500 600 700 800 300 300 1200'
[]
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[AuxVariables]
[griffin_Tfuel]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tcool]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[griffin_Tintref]
family = MONOMIAL
order = constant
initial_condition = '${inlet_T_fluid}'
[]
[]
# ==============================================================================
# TRANSPORT SYSTEMS
# ==============================================================================
[TransportSystems]
# Eigenvalue Problem
particle = neutron
equation_type = eigenvalue
# Sixteen Group XS Structure
G = 16
VacuumBoundary = 'core_outer'
# DFEM-Transport
[dsn]
scheme = DFEM-SN
#n_delay_groups = 6
family = MONOMIAL
order = FIRST
AQtype = Gauss-Chebyshev
NPolar = 3 # use >=2 for final runs (4 sawtooth nodes sufficient)
NAzmthl = 9 # use >=6 for final runs (4 sawtooth nodes sufficient)
NA = 1
sweep_type = asynchronous_parallel_sweeper
using_array_variable = true
collapse_scattering = true
hide_angular_flux = true
# verbose = 3
[]
[]
# ==============================================================================
# FLUID PROPERTIES, MATERIALS, AND USER OBJECTS
# ==============================================================================
[Materials]
[core]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '1 2 3 4 5 6 7 8 9 10'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
#volume_adjuster = core_vol_adjust #to be fixed
[]
[int_ref]
type = CoupledFeedbackMatIDNeutronicsMaterial
block = '11'
library_file = './serpent/core_2D_nodrums_16G_WET_XS.xml'
library_name = 'core_2D_nodrums_16G_WET_XS'
isotopes = 'pseudo'
densities = '1.0'
plus = 1
is_meter = true
grid_names = 'Tfuel Tcool'
grid_variables = 'griffin_Tfuel griffin_Tcool'
volume_adjuster = int_ref_vol_adjust
[]
[]
[PowerDensity]
power = '${total_power}'
power_density_variable = griffin_power_density
integrated_power_postprocessor = integrated_power
family = L2_LAGRANGE
order = FIRST
[]
[UserObjects]
# [core_vol_adjust] # TO BE FIXED (number of 'vol' needs to match the number of blocks)
# type = VolumeAdjuster
# block = '1 2 3 4 5 6 7 8 9 10'
# volume = 0.040999863
# execute_on = 'initial timestep_begin timestep_end'
# []
[int_ref_vol_adjust]
type = VolumeAdjuster
block = '11'
volume = 0.00331416
execute_on = 'initial timestep_begin timestep_end'
[]
# [Tcore]
# type = LayeredAverage
# variable = griff_temp
# direction = x
# num_layers = '9'
# block = 'core'
# #execute_on = 'initial linear'
# []
[]
# ==============================================================================
# MULTIAPPS AND TRANSFERS
# ==============================================================================
[MultiApps]
[bison_coupled]
type = FullSolveMultiApp
app_type = GriffinApp
input_files = 'core_2D_bison_coupled.i'
positions = '0 0 0'
[]
[]
[Transfers]
[to_bison_power_density]
type = MultiAppProjectionTransfer
to_multi_app = bison_coupled
source_variable = griffin_power_density
variable = bison_power_density
[]
[from_bison_Tfuel]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tfuel
variable = griffin_Tfuel
[]
[from_bison_Tcool]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tcool
variable = griffin_Tcool
[]
[from_bison_Tintref]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = bison_coupled
source_variable = bison_Tintref
variable = griffin_Tintref
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
# DFEM-SN Executioner
[Executioner]
type = SweepUpdate
verbose = true
richardson_max_its = 50
richardson_value = eigenvalue
richardson_rel_tol = 1e-8
richardson_abs_tol = 1e-8
inner_solve_type = GMRes
max_inner_its = 2
fixed_point_max_its = 2
custom_pp = eigenvalue
custom_rel_tol = 1e-4
force_fixed_point_solve = true
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Postprocessors]
[griffin_power]
type = ElementIntegralVariablePostprocessor
variable = griffin_power_density
#use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[core_vol]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8 9 10'
execute_on = 'initial timestep_end'
[]
[intref_vol]
type = VolumePostprocessor
block = '11'
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tfuel_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tfuel
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_max]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8 9 10'
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griffin_Tcool_min]
type = ElementExtremeValue
block = '1 2 3 4 5 6 7 8 9 10'
value_type = min
variable = griffin_Tcool
execute_on = 'initial timestep_end'
[]
[griff_power_density_avg]
type = ElementAverageValue
block = '1 2 3 4 5 6 7 8'
variable = griffin_power_density
execute_on = 'initial timestep_end'
[]
[norm_volume]
type = VolumePostprocessor
block = '1 2 3 4 5 6 7 8'
[]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]