[Need help] Keff results significantly different from SCALE6.1


I’m doing criticality calculations for a hexagonal single assembly. The fuel channel is a cylinder containing LiF-BeF2-ThF4-UF4 molten salt with a graphite hexagonal moderator surrounded.

However, there is a mismatch between keff results:

OpenMC → keff = 0.99339 +/- 0.00070
SCALE6.1 → keff = 1.00670 + - 0.00044

Both OpenMC and SCALE6.1 use the ENDF/B7.1.
Both OpenMC and SCALE6.1 use the same geometry、nuclide atom density and MC settings.

I don’t know how this happens. Please excuse my lack of knowledge on OpenMC as I am practically new to it and still on a learning curve.
I’d be grateful if somebody could point me in the right direction!


1.OpenMC code:

fuel_svf = openmc.Material(name=“fuel_svf”, temperature=900.0,material_id=1)

graphite_moderator = openmc.Material(name=“graphite_moderator”,temperature=900.0,material_id=2)
graphite_moderator.set_density(“g/cm3”, density=1.86)
graphite_moderator.add_element(element=“C”, percent=1.0, percent_type=“ao”)

materials = openmc.Materials([fuel_svf, graphite_moderator])

fuel_svf_cylinder = openmc.ZCylinder(r=16.27,surface_id=1)
hex_zplane_up = openmc.ZPlane(z0=147,boundary_type=‘reflective’,surface_id=2)
hex_zplane_down = openmc.ZPlane(z0=-147,boundary_type=‘reflective’,surface_id=3)
fuel_svf_cell = openmc.Cell(name=“fuel_svf_cell”,cell_id=2)
fuel_svf_cell.fill = fuel_svf
fuel_svf_cell.region = -fuel_svf_cylinder & -hex_zplane_up & +hex_zplane_down

hex = openmc.hexagonal_prism(edge_length=40,orientation=‘x’,boundary_type=‘reflective’)
hex_cell = openmc.Cell(name=“hex_cell”,cell_id=3)
hex_cell.fill = graphite_moderator
hex_cell.region = +fuel_svf_cylinder & hex & -hex_zplane_up & +hex_zplane_down

assembly_universe = openmc.Universe(name=“whole_assembly_universe”)
geom = openmc.Geometry(assembly_universe)

batches = 200
inactive = 30
particles = 10000
settings = openmc.Settings()
settings.batches = batches
settings.inactive = inactive
settings.particles = particles
settings.seed = 43
settings.run_mode = ‘eigenvalue’
settings.temperature = {“method”:“interpolation”}

model = openmc.Model()
model.materials = materials
model.geometry = geom
model.settings = settings

statepoint_filename = model.run()

2.SCALE input file:

'Input generated by GeeWiz SCALE 6.1 Compiled on Tue Sep 6 15:23:32 2011
read composition
li-6 1 0 1.07126e-06 900 end
li-7 1 0 0.0214242 900 end
th-232 1 0 0.00375799 900 end
f-19 1 0 0.0474416 900 end
u-233 1 0 6.79487e-05 900 end
be-9 1 0 0.00535632 900 end
c-graphite 2 den=1.86 1 900 end
end composition
read celldata
latticecell triangpitch fuelr=16.27 1 hpitch=34.64 2 end
end celldata
read parameter
end parameter
read geometry
global unit 2
cylinder 1 16.27 147 -147
hexprism 2 34.64 147 -147
media 1 1 1
media 2 1 2 -1
boundary 2
end geometry
read bnds
end bnds
read volume
end volume
end data
read initial
keno3d 40 SCALE6.1_CSAS.kmt
end initial
read activity
92233 18
92233 27
90232 27
90232 102
end activity

Thank you so much!


I have ran your model on my own machine with endf7.1 CE cross sections in OpenMC. Only now I have commented out the seed in the settings (I am unsure what OpenMC is doing behind the scenes with the random number generation but best practices usually say to use as long a seed as possible when possible). See: 4. Random Number Generation — OpenMC Documentation

I have also used 100 batches of 100,000 particles to generate my results.

I am the getting the following:

 k-effective (Collision)     = 1.00203 +/- 0.00040
 k-effective (Track-length)  = 1.00204 +/- 0.00044
 k-effective (Absorption)    = 1.00128 +/- 0.00037
 Combined k-effective        = 1.00161 +/- 0.00032
 Leakage Fraction            = 0.00000 +/- 0.00000

I have also tried to run essentially your exact input file but I have not been able to get the same eigenvalue you have gotten for OpenMC. Is it possible we are using different versions or possibly different cross section libraries as well?

I have also ran your scale model in endf7.1 continuous energy cross sections on scale 6.2.4. SCALE on my laptop is only serial so I used 100 generations of 10,000 particles to get results faster. I have also used the “graphite” material in place of c-graphite (not sure if there is a difference in SCALE 6.1 and 6.2 between these…) I get the following eigenvalue:

k-eff 1.00159 w/ 1sigma = 0.00076

Obviously, the calculations should be converged further for a very good comparison but the results are now much more hopeful.

Also important to note is that SCALE 6.1 is using 252g multigroup cross sections that are corrected when we use the celldata card so its expected that the eigenvalue might be off by a bit.


Thank you so much for your reply!

The version for OpenMC I use is 0.13.4 and the nuclear data is endfb7.1 HDF5 files downloaded in Data Libraries | OpenMC

For SCALE6.1 (my laptop is only serial, too :joy:), I use 238g multigroup cross sections.

SCALE6.1 also have compositions of ‘graphite’ and ‘c-graphite’. and the reason why I choose ‘c-graphite’ is that, I saw a description of ‘c-graphite’ in the Scale6.1_Manual.pdf: ‘Not all SCALE standard composition alphanumeric names (see Sect. M8) are currently recognized by STARBUCS. The use of special materials (e.g., C-GRAPHITE, NIINCONEL, H-POLY), particularly as fuel materials, that have nuclide identifiers that are not readily translated to ORIGEN-S ZA numbers should be avoided since these materials cannot be depleted.’ I guess that the graphite moderator in the single assembly would not be burned, so I choose ‘c-graphite’. Maybe ‘graphite’ could be used when the carbon is loaded in the fuel like poison…

Thank you so much!