mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 05:35:49 -04:00
Merge pull request #1158 from smharper/mg_tallies_coverage
Increase MG tallies testing coverage
This commit is contained in:
commit
fcad148c07
7 changed files with 55 additions and 40 deletions
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
41ea1f6b17c58a8141921af2f1d044eda93f3a9bca9463ee023af2e9865da613ace90fc8a25b42edde128ed827182ea9df0fe09d9b7887282d0ec092692cf717
|
||||
15e00a46742e973d7c3c5defe427e6f76a4f1b661538cf54957712751410218dc64301fe12ccb8dbed3f2d51d19b3e99d2b615a3e98c46f9954894e96667dc23
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue