Fixed failing test: not enough neutrons simulated so many cross sections were zero. Made OpenMC properly deal with that case and then added more neutrons to the test to make it a bit more useful

This commit is contained in:
Adam Nelson 2016-05-29 13:18:32 -04:00
parent 9ead31396e
commit 2a786f090d
5 changed files with 29 additions and 12 deletions

View file

@ -1485,8 +1485,13 @@ module mgxs_header
nuc % scatter % energy(gin) % data(gout)
mult_num(gout, gin) = mult_num(gout, gin) + atom_density * &
nuscatt
mult_denom(gout, gin) = mult_denom(gout,gin) + atom_density * &
nuscatt / nuc % scatter % mult(gin) % data(gout)
if (nuc % scatter % mult(gin) % data(gout) > ZERO) then
mult_denom(gout, gin) = mult_denom(gout,gin) + atom_density * &
nuscatt / nuc % scatter % mult(gin) % data(gout)
else
! Avoid division by zero
mult_denom(gout, gin) = mult_denom(gout,gin) + atom_density
end if
end do
end do
@ -1722,10 +1727,16 @@ module mgxs_header
nuc % scatter(iazi, ipol) % obj % energy(gin) % data(gout)
mult_num(gout, gin, iazi, ipol) = mult_num(gout, gin, iazi, ipol) + &
atom_density * nuscatt
mult_denom(gout, gin, iazi, ipol) = &
mult_denom(gout, gin, iazi, ipol) + &
atom_density * nuscatt / &
nuc % scatter(iazi, ipol) % obj % mult(gin) % data(gout)
if (nuc % scatter(iazi, ipol) % obj % mult(gin) % data(gout) > ZERO) then
mult_denom(gout, gin, iazi, ipol) = &
mult_denom(gout, gin, iazi, ipol) + &
atom_density * nuscatt / &
nuc % scatter(iazi, ipol) % obj % mult(gin) % data(gout)
else
! Avoid division by zero
mult_denom(gout, gin, iazi, ipol) = &
mult_denom(gout,gin, iazi, ipol) + atom_density
end if
end do
end do
end do

View file

@ -474,7 +474,6 @@ for key in iter(tests):
logfilename = os.path.splitext(logfilename)[0]
logfilename = logfilename + '_{0}.log'.format(test.name)
shutil.copy(logfile[0], logfilename)
with open(logfilename) as fh: print(fh.read())
# For coverage builds, use lcov to generate HTML output
if test.coverage:

View file

@ -1 +1 @@
15355a90181bc3a8ba70bcc9a89beff2c240dc75abbf26c3e3b6a940c4ec2028b238422ac26af08863c24ce6fc16d48d249f17cd0bce53df0141138deccfc81a
f6442195628d3e6acd714d1ac123310a8c463ce6e76de2149783e4d9f2485752b53155f78bd9ae5e886b5f4717ef7c66b71959344051ea7f53b79148d59fe609

View file

@ -1,2 +1,2 @@
k-combined:
1.017325E+00 3.827758E-02
1.006931E+00 3.262911E-03

View file

@ -13,12 +13,19 @@ import openmc.mgxs
class MGXSTestHarness(PyAPITestHarness):
def _build_inputs(self):
# The openmc.mgxs module needs a summary.h5 file
self._input_set.settings.output = {'summary': True}
# Generate inputs using parent class routine
super(MGXSTestHarness, self)._build_inputs()
# The openmc.mgxs module needs a summary.h5 file
self._input_set.settings.output = {'summary': True}
# Use a larger history count to get some scores in every material
self._input_set.settings.batches = 50
self._input_set.settings.inactive = 10
self._input_set.settings.particles = 1000
self._sp_name = './statepoint.50.h5'
# Rewrite file
self._input_set.settings.export_to_xml()
# Initialize a two-group structure
energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.])