Merge pull request #1158 from smharper/mg_tallies_coverage

Increase MG tallies testing coverage
This commit is contained in:
Adam Nelson 2019-02-08 16:25:22 -06:00 committed by GitHub
commit fcad148c07
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 55 additions and 40 deletions

View file

@ -77,7 +77,7 @@ class XsData {
// [angle][delayed group]
xt::xtensor<double, 2> decay_rate;
// delayed_nu_fission has the following dimensions:
// [angle][incoming group][delayed group]
// [angle][delayed group][incoming group]
xt::xtensor<double, 3> delayed_nu_fission;
// chi_prompt has the following dimensions:
// [angle][incoming group][outgoing group]

View file

@ -467,7 +467,7 @@ Mgxs::get_xs(int xstype, int gin, int* gout, double* mu, int* dg)
val = xs_t->delayed_nu_fission(a, *dg, gin);
} else {
val = 0.;
for (int d = 0; d < xs_t->delayed_nu_fission.shape()[2]; d++) {
for (int d = 0; d < xs_t->delayed_nu_fission.shape()[1]; d++) {
val += xs_t->delayed_nu_fission(a, d, gin);
}
}

View file

@ -1352,11 +1352,11 @@ contains
if (i_nuclide > 0) then
score = score * flux * get_nuclide_xs_c(i_nuclide, &
MG_GET_XS_INVERSE_VELOCITY, p_g) / &
get_macro_xs_c(p % material, MG_GET_XS_ABSORPTION, p_g)
get_macro_xs_c(p % material, MG_GET_XS_TOTAL, p_g)
else
score = score * flux * get_macro_xs_c(p % material, &
MG_GET_XS_INVERSE_VELOCITY, p_g) / &
get_macro_xs_c(p % material, MG_GET_XS_ABSORPTION, p_g)
get_macro_xs_c(p % material, MG_GET_XS_TOTAL, p_g)
end if
else
@ -1846,13 +1846,13 @@ contains
if (i_nuclide > 0) then
score = score + keff * atom_density * &
fission_bank_wgt(n_bank - p % n_bank + k) * &
get_nuclide_xs_c(i_nuclide, MG_GET_XS_DECAY_RATE, p_g, DG=d) * &
get_nuclide_xs_c(i_nuclide, MG_GET_XS_DECAY_RATE, p_g, DG=g) * &
get_nuclide_xs_c(i_nuclide, MG_GET_XS_FISSION, p_g) / &
get_macro_xs_c(p % material, MG_GET_XS_FISSION, p_g) * flux
else
score = score + keff * &
fission_bank_wgt(n_bank - p % n_bank + k) * &
get_macro_xs_c(p % material, MG_GET_XS_DECAY_RATE, p_g, DG=d) * flux
get_macro_xs_c(p % material, MG_GET_XS_DECAY_RATE, p_g, DG=g) * flux
end if
! if the delayed group filter is present, tally to corresponding

View file

@ -92,7 +92,7 @@ XsData::from_hdf5(hid_t xsdata_grp, bool fissionable, int scatter_format,
fission_from_hdf5(xsdata_grp, n_ang, is_isotropic);
}
// Get the non-fission-specific data
read_nd_vector(xsdata_grp, "decay_rate", decay_rate);
read_nd_vector(xsdata_grp, "decay rate", decay_rate);
read_nd_vector(xsdata_grp, "absorption", absorption, true);
read_nd_vector(xsdata_grp, "inverse-velocity", inverse_velocity);

View file

@ -58,27 +58,27 @@
</filter>
<tally id="1">
<filters>5</filters>
<scores>total absorption flux fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate flux</scores>
<estimator>analog</estimator>
</tally>
<tally id="2">
<filters>5</filters>
<scores>total absorption flux fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="3">
<filters>6 1</filters>
<scores>total absorption flux fission nu-fission scatter nu-scatter</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate flux scatter nu-scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="4">
<filters>6 1</filters>
<scores>total absorption flux fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate flux</scores>
<estimator>collision</estimator>
</tally>
<tally id="5">
<filters>6 1</filters>
<scores>total absorption flux fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="6">
@ -87,17 +87,17 @@
</tally>
<tally id="7">
<filters>6 3</filters>
<scores>total absorption flux fission nu-fission scatter nu-scatter</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate flux scatter nu-scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="8">
<filters>6 3</filters>
<scores>total absorption flux fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate flux</scores>
<estimator>collision</estimator>
</tally>
<tally id="9">
<filters>6 3</filters>
<scores>total absorption flux fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate flux</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="10">
@ -107,31 +107,31 @@
<tally id="11">
<filters>5</filters>
<nuclides>mat_1</nuclides>
<scores>total absorption fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate</scores>
<estimator>analog</estimator>
</tally>
<tally id="12">
<filters>5</filters>
<nuclides>mat_1</nuclides>
<scores>total absorption fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="13">
<filters>6 1</filters>
<nuclides>mat_1</nuclides>
<scores>total absorption fission nu-fission scatter nu-scatter</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate scatter nu-scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="14">
<filters>6 1</filters>
<nuclides>mat_1</nuclides>
<scores>total absorption fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate</scores>
<estimator>collision</estimator>
</tally>
<tally id="15">
<filters>6 1</filters>
<nuclides>mat_1</nuclides>
<scores>total absorption fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="16">
@ -142,19 +142,19 @@
<tally id="17">
<filters>6 3</filters>
<nuclides>mat_1</nuclides>
<scores>total absorption fission nu-fission scatter nu-scatter</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate scatter nu-scatter</scores>
<estimator>analog</estimator>
</tally>
<tally id="18">
<filters>6 3</filters>
<nuclides>mat_1</nuclides>
<scores>total absorption fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate</scores>
<estimator>collision</estimator>
</tally>
<tally id="19">
<filters>6 3</filters>
<nuclides>mat_1</nuclides>
<scores>total absorption fission nu-fission</scores>
<scores>total absorption fission nu-fission inverse-velocity prompt-nu-fission delayed-nu-fission kappa-fission events decay-rate</scores>
<estimator>tracklength</estimator>
</tally>
<tally id="20">

View file

@ -1 +1 @@
41ea1f6b17c58a8141921af2f1d044eda93f3a9bca9463ee023af2e9865da613ace90fc8a25b42edde128ed827182ea9df0fe09d9b7887282d0ec092692cf717
15e00a46742e973d7c3c5defe427e6f76a4f1b661538cf54957712751410218dc64301fe12ccb8dbed3f2d51d19b3e99d2b615a3e98c46f9954894e96667dc23

View file

@ -12,26 +12,37 @@ def create_library():
# Instantiate the energy group data and file object
groups = openmc.mgxs.EnergyGroups(group_edges=[0.0, 0.625, 20.0e6])
mg_cross_sections_file = openmc.MGXSLibrary(groups)
mg_cross_sections_file = openmc.MGXSLibrary(groups, 6)
# Make the base, isotropic data
nu = [2.50, 2.50]
nu = np.array([2.50, 2.50])
fiss = np.array([0.002817, 0.097])
capture = [0.008708, 0.02518]
absorption = np.add(capture, fiss)
capture = np.array([0.008708, 0.02518])
absorption = capture + fiss
scatter = np.array(
[[[0.31980, 0.06694], [0.004555, -0.0003972]],
[[0.00000, 0.00000], [0.424100, 0.05439000]]])
total = [0.33588, 0.54628]
chi = [1., 0.]
total = np.array([0.33588, 0.54628])
chi = np.array([1., 0.])
decay_rate = np.array([0.013336, 0.032739, 0.12078, 0.30278, 0.84949,
2.853])
delayed_yield = np.array([0.00055487, 0.00286407, 0.00273429, 0.0061305,
0.00251342, 0.00105286])
inv_vel = 1.0 / np.array([1.4e9, 4.4e5])
mat_1 = openmc.XSdata('mat_1', groups)
mat_1 = openmc.XSdata('mat_1', groups, num_delayed_groups=6)
mat_1.order = 1
mat_1.set_nu_fission(np.multiply(nu, fiss))
mat_1.set_fission(fiss)
mat_1.set_kappa_fission(fiss * 200e6)
mat_1.set_nu_fission(nu * fiss)
mat_1.set_beta(delayed_yield / 2.5)
mat_1.set_decay_rate(decay_rate)
mat_1.set_absorption(absorption)
mat_1.set_scatter_matrix(scatter)
mat_1.set_total(total)
mat_1.set_chi(chi)
mat_1.set_inverse_velocity(inv_vel)
mg_cross_sections_file.add_xsdata(mat_1)
# Write the file
@ -69,14 +80,18 @@ def test_mg_tallies():
nuclides = model.xs_data
scores = {False: ['total', 'absorption', 'flux', 'fission', 'nu-fission'],
True: ['total', 'absorption', 'fission', 'nu-fission']}
scores_with_nuclides = [
'total', 'absorption', 'fission', 'nu-fission', 'inverse-velocity',
'prompt-nu-fission', 'delayed-nu-fission', 'kappa-fission', 'events',
'decay-rate']
scores_without_nuclides = scores_with_nuclides + ['flux']
for do_nuclides in [False, True]:
for do_nuclides, scores in ((False, scores_without_nuclides),
(True, scores_with_nuclides)):
t = openmc.Tally()
t.filters = [mesh_filter]
t.estimator = 'analog'
t.scores = scores[do_nuclides]
t.scores = scores
if do_nuclides:
t.nuclides = nuclides
model.tallies.append(t)
@ -84,7 +99,7 @@ def test_mg_tallies():
t = openmc.Tally()
t.filters = [mesh_filter]
t.estimator = 'tracklength'
t.scores = scores[do_nuclides]
t.scores = scores
if do_nuclides:
t.nuclides = nuclides
model.tallies.append(t)
@ -102,7 +117,7 @@ def test_mg_tallies():
t = openmc.Tally()
t.filters = [mat_filter, e_filter]
t.estimator = 'analog'
t.scores = scores[do_nuclides] + ['scatter', 'nu-scatter']
t.scores = scores + ['scatter', 'nu-scatter']
if do_nuclides:
t.nuclides = nuclides
model.tallies.append(t)
@ -110,7 +125,7 @@ def test_mg_tallies():
t = openmc.Tally()
t.filters = [mat_filter, e_filter]
t.estimator = 'collision'
t.scores = scores[do_nuclides]
t.scores = scores
if do_nuclides:
t.nuclides = nuclides
model.tallies.append(t)
@ -118,7 +133,7 @@ def test_mg_tallies():
t = openmc.Tally()
t.filters = [mat_filter, e_filter]
t.estimator = 'tracklength'
t.scores = scores[do_nuclides]
t.scores = scores
if do_nuclides:
t.nuclides = nuclides
model.tallies.append(t)