Fukushima Candu Reactor compared k_eff values with Serpent

  • Thread starter Thread starter emilmammadzada
  • Start date Start date
AI Thread Summary
The user is experiencing a discrepancy in k_eff values between Serpent and OpenMC simulations for a CANDU reactor, with Serpent reporting approximately 0.9 and OpenMC showing 0.42. The discussion focuses on identifying potential errors in the input files and settings used for the OpenMC simulation. Key aspects include material definitions, densities, and geometric configurations, which may contribute to the differing results. The user is seeking guidance on troubleshooting these discrepancies to achieve consistent k_eff values across both simulation tools. Addressing these issues is crucial for accurate reactor modeling and analysis.
emilmammadzada
Messages
129
Reaction score
19
TL;DR Summary
Candu Reactor compared k_eff values with Serpent
Dear experts, I am trying to set the Serpent input file for the candu reactor in Openmc accordingly. But in the output section, Serpent k_eff values are around 0.9, while Openmc shows 0.42. How can I solve this problem or what are the errors in the files I added below that cause this difference?
[from math import pi, sin, cos
import numpy as np
import openmc
import json
import numpy as np
from pathlib import Path
import openmc.deplete
# Fuel and clad
temperature_fuel = 960 #Fuel at 960 K with a density of 10.52 g/cc
temperature_structure = 345.15 #Moderator at 345.15 K with a density of 1.086 g/cc
r_fuel = 0.6122
r_clad = 0.6540
pressure_tube_ir = 5.16890
pressure_tube_or = 5.60320
calendria_ir = 6.44780
calendria_or = 6.58750
# Fuel
fuel = openmc.Material(name='fuel', temperature=temperature_fuel)
fuel.add_nuclide('U235', 6.27118E-1 , 'wo')
fuel.add_nuclide('U238', 8.75256E+1 , 'wo')
fuel.add_nuclide('O16', 1.18473E+1 , 'wo')
fuel.volume = 37*pi*r_fuel**2
fuel.set_density('g/cm3', 10.4375010)
# Coolant Water
heavy_water_coolant = openmc.Material(name='heavy water coolant')
heavy_water_coolant.add_nuclide('H2', 1.99768E-1 , 'wo' )
heavy_water_coolant.add_nuclide('O16', 7.99449E-1 , 'wo' )
heavy_water_coolant.add_nuclide('H1', 7.83774E-4 , 'wo' )
heavy_water_coolant.set_density('g/cm3', 0.812120)
# Calandria tube
clad_calandria = openmc.Material(name='Calandria')
clad_calandria.add_nuclide('Mn55', 1.60000E-1 , 'wo' )
clad_calandria.add_element('Ni', 6.00000E-2 , 'wo' )
clad_calandria.add_element('Cr', 1.10000E-1 , 'wo' )
clad_calandria.add_element('Zr', 9.97100E+1 , 'wo' )
clad_calandria.add_nuclide('B10', 5.7409e-05 , 'wo' )
clad_calandria.add_nuclide('B11', 2.5259E-04 , 'wo' )
clad_calandria.set_density('g/cm3', 6.44)
# Clad
clad = openmc.Material(name='Clad')
clad.add_nuclide('Mn55', 1.60000E-1 , 'wo' )
clad.add_element('Ni', 6.00000E-2 , 'wo' )
clad.add_element('Cr', 1.10000E-1 , 'wo' )
clad.add_element('Zr', 9.97100E+1 , 'wo' )
clad.add_nuclide('B10', 5.7409e-05 , 'wo' )
clad.add_nuclide('B11', 2.5259E-04 , 'wo' )
clad.set_density('g/cm3', 6.44)
# Moder
heavy_water = openmc.Material(name='heavy water')
heavy_water.add_nuclide('H2', 2.01016E-1, 'wo' )
heavy_water.add_nuclide('O16', 7.98895E-1, 'wo' )
heavy_water.add_nuclide('H1', 8.96000E-5, 'wo' )
heavy_water.set_density('g/cm3', 1.082885 )
heavy_water.add_s_alpha_beta('c_D_in_D2O')
# Pressure Tube
tube = openmc.Material(name='PressTube')
tube.add_element('Zr', 9.75000E+1 , 'wo' )
tube.add_nuclide('B10', 3.8889E-05 , 'wo' )
tube.add_nuclide('B11', 1.7111E-04 , 'wo' )
tube.set_density('g/cm3', 6.57)
mats = openmc.Materials([fuel, heavy_water_coolant, clad_calandria, clad, heavy_water, tube ])
mats.export_to_xml()

# Radius to center of each ring of fuel pins
ring_radii = np.array([0.0, 1.4885, 2.8755, 4.3305])
# These are the surfaces that will divide each of the rings
radial_surf = [openmc.ZCylinder(R=r) for r in
(ring_radii[:-1] + ring_radii[1:])/2]

water_cells = []
for i in range(ring_radii.size):
# Create annular region
if i == 0:
water_region = -radial_surf
elif i == ring_radii.size - 1:
water_region = +radial_surf[i-1]
else:
water_region = +radial_surf[i-1] & -radial_surf

water_cells.append(openmc.Cell(fill=heavy_water, region=water_region))
bundle_universe = openmc.Universe(cells=water_cells)
surf_fuel = openmc.ZCylinder(R=r_fuel)
surf_clad = openmc.ZCylinder(R=r_clad)

fuel_cell = openmc.Cell(fill=fuel, region=-surf_fuel)
clad_cell = openmc.Cell(fill=clad, region=+surf_fuel & -surf_clad)
cool_cell = openmc.Cell(fill=heavy_water_coolant, region=+surf_clad & -surf_clad)

pin_universe = openmc.Universe(cells=(fuel_cell, clad_cell, cool_cell))
num_pins = [1, 6, 12, 18]
angles = [0, 0, 15, 0]

for i, (r, n, a) in enumerate(zip(ring_radii, num_pins, angles)):
for j in range(n):
# Determine location of center of pin
theta = (a + j/n*360.) * pi/180.
x = r*cos(theta)
y = r*sin(theta)

pin_boundary = openmc.ZCylinder(x0=x, y0=y, R=r_clad)
water_cells.region &= +pin_boundary


# That we can identify the pin later when looking at tallies
pin = openmc.Cell(fill=pin_universe, region=-pin_boundary)
pin.translation = (x, y, 0)
pin.id = (i + 1)*100 + j
bundle_universe.add_cell(pin)

pt_inner = openmc.ZCylinder(R=pressure_tube_ir)
pt_outer = openmc.ZCylinder(R=pressure_tube_or)
calendria_inner = openmc.ZCylinder(R=calendria_ir)
calendria_outer = openmc.ZCylinder(R=calendria_or,boundary_type='reflective')

bundle = openmc.Cell(fill=bundle_universe, region=-pt_inner)
pressure_tube = openmc.Cell(fill=tube, region=+pt_inner & -pt_outer)
v1 = openmc.Cell(region=+pt_outer & -calendria_inner)
calendria = openmc.Cell(fill=clad_calandria, region=+calendria_inner & -calendria_outer)

root_universe = openmc.Universe(cells=[bundle, pressure_tube, v1, calendria])

geom = openmc.Geometry(root_universe)
geom.export_to_xml()
settings = openmc.Settings()
settings = openmc.Settings()
settings.particles = 500
settings.batches = 50
settings.inactive = 5
settings.source = openmc.Source(space=openmc.stats.Point())
settings.temperature = {
'default': temperature_structure,
'method': 'interpolation',
}
settings.export_to_xml()
openmc.run()]
 
Hello everyone, I am currently working on a burnup calculation for a fuel assembly with repeated geometric structures using MCNP6. I have defined two materials (Material 1 and Material 2) which are actually the same material but located in different positions. However, after running the calculation with the BURN card, I am encountering an issue where all burnup information(power fraction(Initial input is 1,but output file is 0), burnup, mass, etc.) for Material 2 is zero, while Material 1...
Hi everyone, I'm a complete beginner with MCNP and trying to learn how to perform burnup calculations. Right now, I'm feeling a bit lost and not sure where to start. I found the OECD-NEA Burnup Credit Calculational Criticality Benchmark (Phase I-B) and was wondering if anyone has worked through this specific benchmark using MCNP6? If so, would you be willing to share your MCNP input file for it? Seeing an actual working example would be incredibly helpful for my learning. I'd be really...
Back
Top