# Inconsistent Flux Results in Multi-group Mode

**URL:** <https://openmc.discourse.group/t/inconsistent-flux-results-in-multi-group-mode/4122>\
**Category:** User Support\
**Created:** [April 2, 2024, 12:25pm UTC](https://openmc.discourse.group/t/inconsistent-flux-results-in-multi-group-mode/4122 "2024-04-02T12:25:59Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Visionary](https://avatars.discourse-cdn.com/v4/letter/v/13edae/32.png) [@Visionary](https://openmc.discourse.group/u/Visionary)\
**Post date:** [April 2, 2024, 12:25pm UTC](https://openmc.discourse.group/t/inconsistent-flux-results-in-multi-group-mode/4122/1 "2024-04-02T12:25:59Z")

</div>

When using multi-group mode in OpenMC, where I provided a set of cross sections and obtained flux distribution results. However, I encountered an unexpected inconsistency in the flux results when using two different enrichment levels of fuel.

When simulating with a single fuel enrichment, the flux distribution appeared reasonable. However, when I simulated with two different enrichments, the flux results did not exhibit the expected variation between the two fuel types. This discrepancy is contrary to both fine modeling expectations and deterministic results.

Could anyone provide insights or suggestions on what might be causing this issue?

Thanks very much！

* * *

## Here are my codes

import numpy as np  
import openmc  
%matplotlib inline  
from IPython.display import Image  
import numpy as np  
import matplotlib.pyplot as plt  
import openmc

# Create a 2-group structure with arbitrary boundaries (the specific boundaries are unimportant)

groups = openmc.mgxs.EnergyGroups([1e-5, 1e6, 20.0e6])

#lowEnrichmentAssembly\_xsdata  
lowEnrichmentAssembly\_xsdata = openmc.XSdata(‘lowEnrichmentAssembly’, groups)  
lowEnrichmentAssembly\_xsdata.order = 0  
lowEnrichmentAssembly\_xsdata.set\_total([0.170114542, 0.377481276], temperature=294.)  
lowEnrichmentAssembly\_xsdata.set\_absorption([0.007605099,0.007113863], temperature=294.)  
lowEnrichmentAssembly\_xsdata.set\_fission([0.006416398, 0.002631272], temperature=294.)  
lowEnrichmentAssembly\_xsdata.set\_nu\_fission([0.016645917, 0.007355224], temperature=294.)  
lowEnrichmentAssembly\_xsdata.set\_chi([0.6981436,0.3018564], temperature=294.)  
scatter\_matrix1 =   
[[[0.117544123, 0.0451495759],  
[0.0, 0.370351157]]]  
scatter\_matrix1 = np.array(scatter\_matrix1)  
scatter\_matrix1 = np.rollaxis(scatter\_matrix1, 0, 3)  
lowEnrichmentAssembly\_xsdata.set\_scatter\_matrix(scatter\_matrix1, temperature=294.)

#up\_xsdata  
upAssembly\_xsdata = openmc.XSdata(‘upAssembly’, groups)  
upAssembly\_xsdata.order = 0  
upAssembly\_xsdata.set\_total([0.170259603, 0.370522199], temperature=294.)  
upAssembly\_xsdata.set\_absorption([0.008095127, 0.007957804], temperature=294.)  
upAssembly\_xsdata.set\_fission([0.006900317, 0.003546659], temperature=294.)  
upAssembly\_xsdata.set\_nu\_fission([0.019165554, 0.008389694], temperature=294.)  
upAssembly\_xsdata.set\_chi([0.6990006,0.3009994], temperature=294.)  
scatter\_matrix3 =   
[[[0.117426756,0.0449167458],  
[0.0, 0.363264991]]]  
scatter\_matrix3 = np.array(scatter\_matrix3)  
scatter\_matrix3 = np.rollaxis(scatter\_matrix3, 0, 3)  
upAssembly\_xsdata.set\_scatter\_matrix(scatter\_matrix3, temperature=294.)

#down\_xsdata  
downAssembly\_xsdata = openmc.XSdata(‘downAssembly’, groups)  
downAssembly\_xsdata.order = 0  
downAssembly\_xsdata.set\_total([0.170259603, 0.370522199], temperature=294.)  
downAssembly\_xsdata.set\_absorption([0.008095127, 0.007957804], temperature=294.)  
downAssembly\_xsdata.set\_fission([0.006900317, 0.003546659], temperature=294.)  
downAssembly\_xsdata.set\_nu\_fission([0.019165554, 0.008389694], temperature=294.)  
downAssembly\_xsdata.set\_chi([0.6990006,0.3009994], temperature=294.)  
scatter\_matrix4 =   
[[[0.117426756,0.0449167458],  
[0.0, 0.363264991]]]  
scatter\_matrix4 = np.array(scatter\_matrix4)  
scatter\_matrix4 = np.rollaxis(scatter\_matrix4, 0, 3)  
downAssembly\_xsdata.set\_scatter\_matrix(scatter\_matrix4, temperature=294.)

#upAxialReflector\_xsdata  
upAxialReflectorAssembly\_xsdata = openmc.XSdata(‘upAxialReflectorAssembly’, groups)  
upAxialReflectorAssembly\_xsdata.order = 0  
upAxialReflectorAssembly\_xsdata.set\_total([0.174079875, 0.424901412], temperature=294.)  
upAxialReflectorAssembly\_xsdata.set\_absorption([0.000711852, 0.001298070], temperature=294.)  
upAxialReflectorAssembly\_xsdata.set\_fission([0.0, 0.0], temperature=294.)  
upAxialReflectorAssembly\_xsdata.set\_nu\_fission([0.0, 0.0], temperature=294.)  
upAxialReflectorAssembly\_xsdata.set\_chi([0.0,0.0], temperature=294.)  
scatter\_matrix6 =   
[[[0.140148556, 0.0331868293],  
[0.0, 0.423591766]]]  
scatter\_matrix6 = np.array(scatter\_matrix6)  
scatter\_matrix6 = np.rollaxis(scatter\_matrix6, 0, 3)  
upAxialReflectorAssembly\_xsdata.set\_scatter\_matrix(scatter\_matrix6, temperature=294.)

#downAxialReflector\_xsdata  
downAxialReflectorAssembly\_xsdata = openmc.XSdata(‘downAxialReflectorAssembly’, groups)  
downAxialReflectorAssembly\_xsdata.order = 0  
downAxialReflectorAssembly\_xsdata.set\_total([0.174079875, 0.424901412], temperature=294.)  
downAxialReflectorAssembly\_xsdata.set\_absorption([0.000711852, 0.001298070], temperature=294.)  
downAxialReflectorAssembly\_xsdata.set\_fission([0.0, 0.0], temperature=294.)  
downAxialReflectorAssembly\_xsdata.set\_nu\_fission([0.0, 0.0], temperature=294.)  
downAxialReflectorAssembly\_xsdata.set\_chi([0.0,0.0], temperature=294.)  
scatter\_matrix7 =   
[[[0.140148556, 0.0331868293],  
[0.0, 0.423591766]]]  
scatter\_matrix7 = np.array(scatter\_matrix7)  
scatter\_matrix7 = np.rollaxis(scatter\_matrix7, 0, 3)  
downAxialReflectorAssembly\_xsdata.set\_scatter\_matrix(scatter\_matrix7, temperature=294.)

mg\_cross\_sections\_file = openmc.MGXSLibrary(groups)  
mg\_cross\_sections\_file.add\_xsdata(lowEnrichmentAssembly\_xsdata)  
mg\_cross\_sections\_file.add\_xsdata(upAssembly\_xsdata)  
mg\_cross\_sections\_file.add\_xsdata(downAssembly\_xsdata)  
mg\_cross\_sections\_file.add\_xsdata(upAxialReflectorAssembly\_xsdata)  
mg\_cross\_sections\_file.add\_xsdata(downAxialReflectorAssembly\_xsdata)  
mg\_cross\_sections\_file.export\_to\_hdf5(‘mgxs.h5’)

lowEnrichmentAssembly1 = openmc.Material()  
lowEnrichmentAssembly1.add\_macroscopic(‘lowEnrichmentAssembly’)

upAssembly1 = openmc.Material()  
upAssembly1.add\_macroscopic(‘upAssembly’)

downAssembly1 = openmc.Material()  
downAssembly1.add\_macroscopic(‘downAssembly’)

upAxialReflectorAssembly1 = openmc.Material()  
upAxialReflectorAssembly1.add\_macroscopic(‘upAxialReflectorAssembly’)

downAxialReflectorAssembly1 = openmc.Material()  
downAxialReflectorAssembly1.add\_macroscopic(‘downAxialReflectorAssembly’)

materials\_file = openmc.Materials([downAxialReflectorAssembly1,upAxialReflectorAssembly1,downAssembly1,upAssembly1,lowEnrichmentAssembly1])  
mg\_cross\_sections\_file.export\_to\_hdf5(‘mgxs.h5’)  
materials\_file.export\_to\_xml()

#geometry

top1 = openmc.ZPlane(z0=+52.5)  
top2 = openmc.ZPlane(z0=+52.5+25)  
top3 = openmc.ZPlane(z0=+52.5+25+20, boundary\_type=‘vacuum’)  
bottom1 = openmc.ZPlane(z0=-52.5)  
bottom2 = openmc.ZPlane(z0=-52.5-25)  
bottom3 = openmc.ZPlane(z0=-52.5-25-20, boundary\_type=‘vacuum’)

assembly = openmc.model.hexagonal\_prism(edge\_length=17.15/1.732, orientation=‘x’, boundary\_type=‘reflective’)

lowEnrichmentAssembly\_cell = openmc.Cell()  
lowEnrichmentAssembly\_cell.region = assembly & -top1 & +bottom1  
lowEnrichmentAssembly\_cell.fill = lowEnrichmentAssembly1

upAssembly\_cell = openmc.Cell()  
upAssembly\_cell.region = assembly & -top2 & +top1  
upAssembly\_cell.fill = upAssembly1

downAssembly\_cell = openmc.Cell()  
downAssembly\_cell.region = assembly & -bottom1 & +bottom2  
downAssembly\_cell.fill = downAssembly1

upAxialReflectorAssembly\_cell = openmc.Cell()  
upAxialReflectorAssembly\_cell.region = assembly & -top3 & +top2  
upAxialReflectorAssembly\_cell.fill = upAxialReflectorAssembly1

downAxialReflectorAssembly\_cell = openmc.Cell()  
downAxialReflectorAssembly\_cell.region = assembly & -bottom2 & +bottom3  
downAxialReflectorAssembly\_cell.fill = downAxialReflectorAssembly1

u\_root = openmc.Universe()  
u\_root.add\_cells([lowEnrichmentAssembly\_cell,downAxialReflectorAssembly\_cell ,upAxialReflectorAssembly\_cell,downAssembly\_cell,upAssembly\_cell])  
geom=openmc.Geometry(u\_root)  
geom.export\_to\_xml()

# Instantiate an empty Tallies object

tallies = openmc.Tallies()

# Create mesh which will be used for tally

mesh = openmc.RegularMesh()  
mesh.dimension = [1, 1, 196]  
mesh.lower\_left = [-17.15/1.732, -17.15/2,-97.5]  
mesh.upper\_right = [17.15/1.732, 17.15/2,97.5]

# Create mesh filter for tally

mesh\_filter = openmc.MeshFilter(mesh)  
tally = openmc.Tally(name=‘flux’)  
tally.filters = [mesh\_filter]  
tally.scores = [‘flux’]  
tallies.append(tally)  
tallies.export\_to\_xml()

settings = openmc.Settings()  
settings.batches = 300  
settings.inactive = 10  
settings.particles = 10000  
settings.energy\_mode = ‘multi-group’  
settings.export\_to\_xml()

openmc.run()
