ERROR: No fission sites banked on MPI rank 0 for SMR PWR

Good day to all. I just began learning OpenMC for a week. I was able to build my geometry but I was getting this error when I tried to run the simulation. I read about some similar problems and tried increasing the number of particles for my simulation but i still can’t figure it out.

I would really appreciate it if you could tell me where the problem is

import os
import math
import openmc
import numpy as np
from IPython.display import Image

# enrichment
light = 13
heavy = 15

#UO2 in fuel
fuel_wo = 0.89

#temperatures Kelvin
temp1 = 643.887
temp2 = 615.915
temp3 = 568.15

uo2_l = openmc.Material(name="uo2_l")
# Add nuclides to uo2
uo2_l.add_nuclide('U235', light/100)
uo2_l.add_nuclide('U238', (100-light)/100)
uo2_l.add_nuclide('O16', 2.0)
uo2_l.set_density('g/cm3', 11)

uo2_h = openmc.Material(name="uo2_h")
# Add nuclides to uo2
uo2_h.add_nuclide('U235', heavy/100)
uo2_h.add_nuclide('U238', (100-heavy)/100)
uo2_h.add_nuclide('O16', 2.0)
uo2_h.set_density('g/cm3', 11)

#silumin - Al 87%, Si 11%, Ni 2%
silumin = openmc.Material(name="silumin",temperature=temp1)
silumin.add_element('Al', 0.87, 'wo')
silumin.add_element('Si', 0.11, 'wo')
silumin.add_element('Ni', 0.02, 'wo')
silumin.set_density('g/cm3', 2.7293233)

#burnable absorber Gd2O3
bar1_or = 0.61/2
bar1=openmc.Material(name='Gd2O3big')
bar1.add_element('Gd', 2.0)
bar1.add_element('O', 3.0)
bar1.set_density('g/cm3', 4)
bar1.temperature = temp3

#burnable absorber Gd2O3
bar2_or = 0.39/2
bar2=openmc.Material(name='Gd2O3small')
bar2.add_element('Gd', 2.0)
bar2.add_element('O', 3.0)
bar2.set_density('g/cm3', 4)
bar2.temperature = temp3


#absorbing element B4C
ae=openmc.Material(name='B4C',temperature=temp3)
ae.add_element('B', 4.0)
ae.add_element('C', 1.0)
ae.set_density('g/cm3', 1.7)

al=openmc.Material(name='Aluminum', temperature=temp3)
al.add_element('Al', 1.0)
al.set_density('g/cm3', 2.6)

#air
air=openmc.Material(name='air',temperature=temp3)
air.add_element('N', 0.75)
air.add_element('O', 0.25)
air.set_density('g/cm3', 0.02)

# fuel element cladding 42HNM - 43.5% Cr, 54.5% Ni, 0.30% Si, 1.3% Mo, 0.3% Al, 0.10% Ti
alloy = openmc.Material(name="alloy",temperature=temp2)
alloy.add_element('Cr', 0.435,'wo')
alloy.add_element('Ni', 0.545,'wo')
alloy.add_element('Si', 0.003,'wo')
alloy.add_element('Mo', 0.013,'wo')
alloy.add_element('Al', 0.003,'wo')
alloy.add_element('Ti', 0.001,'wo')
alloy.set_density('g/cm3', 7.19)

# fuel assembly cladding
zircaloy = openmc.Material(name='zircaloy',temperature=temp3)
zircaloy.add_element('Zr', 0.99)
zircaloy.add_element('Nb', 0.01)
zircaloy.remove_nuclide('Zr96')
zircaloy.set_density('g/cm3', 6.5)

#coolant
water = openmc.Material(name="water", temperature=temp3)
water.add_nuclide('H1', 2.0)
water.add_nuclide('O16', 1.0)
water.set_density('g/cm3', 0.72)
water.add_s_alpha_beta('c_H_in_H2O')


# Material mixtures

fuel_l = openmc.Material.mix_materials([uo2_l, silumin], [fuel_wo, (1-fuel_wo)], 'wo')
fuel_h = openmc.Material.mix_materials([uo2_h, silumin], [fuel_wo, (1-fuel_wo)], 'wo')

fuel_l.temperature = temp1
fuel_h.temperature = temp1

control_rod = openmc.Material.mix_materials([ae, al], [0.89, 0.11])

#creating Materials() and exporting to xml
mats = openmc.Materials([fuel_l, fuel_h, bar1, bar2, control_rod, air, alloy, zircaloy, water])
mats.export_to_xml()

#!cat materials.xml

#fuel_l, fuel_h, bar, control_rod, air, alloy, zircaloy, water]
colors = {}
colors[fuel_l] = 'orange'
colors[fuel_h] = 'red'
colors[water] = 'blue'
colors[air] = 'pink'
colors[bar1] = 'green'
colors[bar2] = 'green'
colors[alloy] = 'gray'
colors[zircaloy] = 'white'
colors[control_rod] = 'black'

r_pin = openmc.ZCylinder(r=0.315)    #Радиус твэла
r_clad = openmc.ZCylinder(r=0.345)   #Радиус оболочки

#Defining the water universe
water_empty_cell = openmc.Cell(fill=water)  #Топливная ячейка
water_u = openmc.Universe(cells=(water_empty_cell,))

#Geometry of light fuel rod
fuel_l_cell = openmc.Cell(fill=fuel_l , region=-r_pin)  #Топливная ячейка
clad_cell = openmc.Cell(fill=alloy, region=+r_pin & -r_clad)    #Ячейка с оболочкой
water_cell = openmc.Cell(fill=water, region=+r_clad)   #Ячейка с теплоносителем
fuel_l_u = openmc.Universe(cells=(fuel_l_cell, clad_cell, water_cell))

#Geometry of heavy fuel rod
fuel_h_cell = openmc.Cell(fill=fuel_h , region=-r_pin)  #Топливная ячейка
clad_cell = openmc.Cell(fill=alloy, region=+r_pin & -r_clad)    #Ячейка с оболочкой
water_cell = openmc.Cell(fill=water, region=+r_clad)   #Ячейка с теплоносителем
fuel_h_u = openmc.Universe(cells=(fuel_h_cell, clad_cell, water_cell))

#Geometry of burnable absorber-1
r_absorber1_in = openmc.ZCylinder(r=0.305)
r_absorber1_out = openmc.ZCylinder(r=0.35)

absorber1_cell = openmc.Cell(fill=bar1, region=-r_absorber1_in)
absorber1_clad_cell = openmc.Cell(fill=alloy, region=-r_absorber1_out & +r_absorber1_in)
water_absorber1_cell = openmc.Cell(fill=water, region=+r_absorber1_out)
absorber1_u = openmc.Universe(cells=(absorber1_cell, absorber1_clad_cell, water_absorber1_cell))

#Geometry of burnable absorber-2
r_absorber2_in = openmc.ZCylinder(r=0.195)
r_absorber2_out = openmc.ZCylinder(r=0.225)

absorber2_cell = openmc.Cell(fill=bar2, region=-r_absorber2_in)
absorber2_clad_cell = openmc.Cell(fill=alloy, region=-r_absorber2_out & +r_absorber2_in)
water_absorber2_cell = openmc.Cell(fill=water, region=+r_absorber2_out)
absorber2_u = openmc.Universe(cells=(absorber2_cell, absorber2_clad_cell, water_absorber2_cell))

#Geomtery of control rod
# r_pel_in = openmc.ZCylinder(r=0.355)
# r_pel_out = openmc.ZCylinder(r=0.41)

pel_cell = openmc.Cell(fill=control_rod, region=-r_pin)
pel_clad_cell = openmc.Cell(fill=alloy, region= +r_pin & -r_clad)
water_pel_cell = openmc.Cell(fill=water, region= +r_clad)
pel_universe = openmc.Universe(cells=(pel_cell, pel_clad_cell, water_pel_cell))

#Define internal displacer lattice
hex_lat = openmc.HexLattice()
hex_lat.center = (0, 0)
hex_lat.pitch = [0.995]
hex_lat.outer = water_u

middle_ring = [pel_universe]*6
inner_ring = [pel_universe]
hex_lat.universes = [middle_ring, inner_ring]
hex_lat.orientation = 'x'

#Define inner side of displacer cladding
turnkey_in = 2.5
edge_hex_in = turnkey_in / np.sqrt(3)

pin_hex = openmc.model.HexagonalPrism(edge_length=edge_hex_in, orientation='x')
controlrod_cell = openmc.Cell(fill=hex_lat, region=-pin_hex)

#Define displacer cladding
displacer_thickness = 0.04
turnkey_out = turnkey_in + 2*displacer_thickness 
edge_hex_out = turnkey_out / np.sqrt(3)

outer_hex = openmc.model.HexagonalPrism(edge_length=edge_hex_out, orientation='x', boundary_type='reflective')
disp_cell = openmc.Cell(fill=alloy, region=+pin_hex & -outer_hex)

lat = openmc.HexLattice()
lat.center = (0., 0.)
lat.pitch = (0.995,)
lat.outer = water_u

#print(openmc.HexLattice.show_indices(6))

ring6= [fuel_h_u, fuel_h_u, absorber1_u, fuel_h_u, fuel_h_u, fuel_h_u, absorber1_u, fuel_h_u, fuel_h_u, absorber1_u]*3
ring5= [fuel_h_u]*24
ring4= [fuel_h_u, fuel_l_u, fuel_l_u]*6
ring3= [fuel_l_u, absorber2_u]*6
ring2= [water_u]*6
ring1= [water_u]
lat.universes = [ring6, ring5, ring4, ring3, ring2, ring1]
lat.orientation='y'

#Define FA cladding
fa_turnkey_in = 9.85
fa_edge_hex_in = fa_turnkey_in / np.sqrt(3)
fa_thickness = 0.0165
fa_turnkey_out = fa_turnkey_in + 2*fa_thickness 
fa_edge_hex_out = fa_turnkey_out / np.sqrt(3)

fa_inner_hex = openmc.model.HexagonalPrism(edge_length=fa_edge_hex_in, orientation='y')
fa_outer_hex = openmc.model.HexagonalPrism(edge_length=fa_edge_hex_out, orientation='y', boundary_type='reflective')
fa_cell = openmc.Cell(fill=zircaloy, region=+fa_inner_hex & -fa_outer_hex)


fuel_cell = openmc.Cell(fill=lat)
fa_type_1 = openmc.Universe(cells=[fuel_cell, fa_cell, controlrod_cell, disp_cell])
geometry = openmc.Geometry(root=fa_type_1)
geometry.export_to_xml()

p = openmc.Plot()
p.basis = 'xy'
p.width = (13, 13)
p.pixels = (500, 500)
p.color_by = 'material'
p.colors = colors

openmc.plot_inline(p)

p.show_overlaps

batches = 100
inactive = 5
particles = 150000
settings = openmc.Settings()
settings.batches = batches
settings.inactive = inactive
settings.particles = particles
settings.temperature = {"method": "interpolation", "multipole": True}


settings.export_to_xml()

openmc.run()

Hey Lance,

There are a couple things I noticed about your code. The first issue, which is probably causing this error is the lack of source definition. I don’t know what openmc uses as default, but as far as I know it is either mandatory or at least highly recommended to make a source for every simulation. Mostly the source definition should cover your entire fissionable material, though there is a lot of tweaking that can be done here to improve time for source convergence, you should take a look at the documentation here for that,

I would just suggest doing a simple source in a box that is bounding your geometry. This alone should fix your issue. Another problem I noticed with your code is the repeating of cell names clad_cell, and water_cell, you are just overwriting them, and I would warn you about reusing cells, this can cause issues.