diff --git a/tests/test_diff_density/build_xml.py b/tests/test_diff_density/build_xml.py deleted file mode 100644 index d5e50c7e82..0000000000 --- a/tests/test_diff_density/build_xml.py +++ /dev/null @@ -1,150 +0,0 @@ -import openmc - - -def make_mats(mod_density=0.7420582): - water = openmc.Material(name='water') - water.set_density('g/cm3', mod_density) - water.add_nuclide(openmc.Nuclide('H-1'), 2.0) - water.add_nuclide(openmc.Nuclide('O-16'), 1.0) - - fuel = openmc.Material(name='fuel 2.4%') - fuel.set_density('g/cm3', 10.29769) - fuel.add_nuclide(openmc.Nuclide('U-234'), 5.7987e-06) - fuel.add_nuclide(openmc.Nuclide('U-235'), 7.2175e-04) - fuel.add_nuclide(openmc.Nuclide('U-238'), 2.2253e-02) - fuel.add_nuclide(openmc.Nuclide('O-16'), 4.5750e-02) - fuel.add_nuclide(openmc.Nuclide('O-17'), 9.4222e-05) - - zirc4 = openmc.Material(name='zircaloy 4') - zirc4.set_density('g/cm3', 6.55) - zirc4.add_nuclide(openmc.Nuclide('O-16'), 3.0743e-04) - zirc4.add_nuclide(openmc.Nuclide('O-17'), 1.1711e-07) - # O-18 omitted - zirc4.add_nuclide(openmc.Nuclide('Cr-50'), 3.2962e-06) - zirc4.add_nuclide(openmc.Nuclide('Cr-52'), 6.3564e-05) - zirc4.add_nuclide(openmc.Nuclide('Cr-53'), 7.2076e-06) - zirc4.add_nuclide(openmc.Nuclide('Cr-54'), 1.7941e-06) - zirc4.add_nuclide(openmc.Nuclide('Fe-54'), 8.6699e-06) - zirc4.add_nuclide(openmc.Nuclide('Fe-56'), 1.3610e-04) - zirc4.add_nuclide(openmc.Nuclide('Fe-57'), 3.1431e-06) - zirc4.add_nuclide(openmc.Nuclide('Fe-58'), 4.1829e-07) - zirc4.add_nuclide(openmc.Nuclide('Zr-90'), 2.1827e-02) - zirc4.add_nuclide(openmc.Nuclide('Zr-91'), 4.7600e-03) - zirc4.add_nuclide(openmc.Nuclide('Zr-92'), 7.2758e-03) - zirc4.add_nuclide(openmc.Nuclide('Zr-94'), 7.3734e-03) - zirc4.add_nuclide(openmc.Nuclide('Zr-96'), 1.1879e-03) - zirc4.add_nuclide(openmc.Nuclide('Sn-112'), 4.6735e-06) - zirc4.add_nuclide(openmc.Nuclide('Sn-114'), 3.1799e-06) - zirc4.add_nuclide(openmc.Nuclide('Sn-115'), 1.6381e-06) - zirc4.add_nuclide(openmc.Nuclide('Sn-116'), 7.0055e-05) - zirc4.add_nuclide(openmc.Nuclide('Sn-117'), 3.7003e-05) - zirc4.add_nuclide(openmc.Nuclide('Sn-118'), 1.1669e-04) - zirc4.add_nuclide(openmc.Nuclide('Sn-119'), 4.1387e-05) - zirc4.add_nuclide(openmc.Nuclide('Sn-120'), 1.5697e-04) - zirc4.add_nuclide(openmc.Nuclide('Sn-122'), 2.2308e-05) - zirc4.add_nuclide(openmc.Nuclide('Sn-124'), 2.7897e-05) - - materials_file = openmc.MaterialsFile() - materials_file.default_xs = '71c' - materials_file.add_materials([water, fuel, zirc4]) - - return (materials_file, - {'mod':water, - 'fuel':fuel, - 'clad':zirc4}) - - -def make_geom(mats): - # Instantiate surfaces. - rfo = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.39218, name='fuel outer') - rci = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.40005, name='clad inner') - rco = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.45720, name='clad outer') - - x0 = openmc.XPlane(x0=-0.62992) - x1 = openmc.XPlane(x0=0.62992) - y0 = openmc.YPlane(y0=-0.62992) - y1 = openmc.YPlane(y0=0.62992) - z0 = openmc.ZPlane(z0=-1.0) - z1 = openmc.ZPlane(z0=1.0) - x0.boundary_type = 'reflective' - x1.boundary_type = 'reflective' - y0.boundary_type = 'reflective' - y1.boundary_type = 'reflective' - z0.boundary_type = 'reflective' - z1.boundary_type = 'reflective' - - # Instantiate cells. - fuel_c = openmc.Cell(name='fuel') - fuel_c.add_surface(rfo, halfspace=-1) - fuel_c.add_surface(z0, halfspace=+1) - fuel_c.add_surface(z1, halfspace=-1) - - gap = openmc.Cell(name='gap') - gap.add_surface(rci, halfspace=-1) - gap.add_surface(rfo, halfspace=+1) - gap.add_surface(z0, halfspace=+1) - gap.add_surface(z1, halfspace=-1) - - clad_c = openmc.Cell(name='clad') - clad_c.add_surface(rco, halfspace=-1) - clad_c.add_surface(rci, halfspace=+1) - clad_c.add_surface(z0, halfspace=+1) - clad_c.add_surface(z1, halfspace=-1) - - mod_c = openmc.Cell(name='moderator') - mod_c.add_surface(rco, halfspace=+1) - mod_c.add_surface(x0, halfspace=+1) - mod_c.add_surface(x1, halfspace=-1) - mod_c.add_surface(y0, halfspace=+1) - mod_c.add_surface(y1, halfspace=-1) - mod_c.add_surface(z0, halfspace=+1) - mod_c.add_surface(z1, halfspace=-1) - - # Add materials to cells. - fuel_c.fill = mats['fuel'] - gap.fill = 'void' - clad_c.fill = mats['clad'] - mod_c.fill = mats['mod'] - - # Instantiate universes. - u0 = openmc.Universe(universe_id=0) - u0.add_cells([fuel_c, gap, clad_c, mod_c]) - - # Write the XML file. - geometry = openmc.Geometry() - geometry.root_universe = u0 - geometry_file = openmc.GeometryFile() - geometry_file.geometry = geometry - - return geometry_file - - -def make_settings(**kwargs): - if 'batches' in kwargs: - batches = kwargs['batches'] - - settings_file = openmc.SettingsFile() - settings_file.batches = kwargs.setdefault('batches', 100) - settings_file.inactive = kwargs.setdefault('inactive', 10) - settings_file.particles = kwargs.setdefault('particles', 1000) - settings_file.set_source_space('box', (-0.6, -0.6, -0.9, - 0.6, 0.6, 0.9)) - settings_file.entropy_lower_left = (-0.7, -0.7, -1.1) - settings_file.entropy_upper_right = (0.7, 0.7, 1.1) - settings_file.entropy_dimension = (10, 10, 10) - return settings_file - - -def make_inputs(mod_density=0.7420582, **kwargs): - (mat_file, mats) = make_mats(mod_density) - mat_file.export_to_xml() - - geo_file = make_geom(mats) - geo_file.export_to_xml() - - sets_file = make_settings(**kwargs) - sets_file.export_to_xml() - - -if __name__ == '__main__': - make_inputs(inactive=5, batches=10, particles=100) diff --git a/tests/test_diff_density/geometry.xml b/tests/test_diff_density/geometry.xml deleted file mode 100644 index e7e5b097ba..0000000000 --- a/tests/test_diff_density/geometry.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/tests/test_diff_density/materials.xml b/tests/test_diff_density/materials.xml deleted file mode 100644 index 955ea92e7d..0000000000 --- a/tests/test_diff_density/materials.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - 71c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/test_diff_density/results_true.dat b/tests/test_diff_density/results_true.dat deleted file mode 100644 index 5e515c4613..0000000000 --- a/tests/test_diff_density/results_true.dat +++ /dev/null @@ -1,5 +0,0 @@ -k-combined: -1.502605E+00 2.273838E-02 -tally 1: -5.280104E+00 -1.379258E+01 diff --git a/tests/test_diff_density/settings.xml b/tests/test_diff_density/settings.xml deleted file mode 100644 index a41ba9725b..0000000000 --- a/tests/test_diff_density/settings.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - 100 - 10 - 5 - - - - -0.6 -0.6 -0.9 0.6 0.6 0.9 - - - - 10 10 10 - -0.7 -0.7 -1.1 - 0.7 0.7 1.1 - - diff --git a/tests/test_diff_density/tallies.xml b/tests/test_diff_density/tallies.xml deleted file mode 100644 index 214f33ab37..0000000000 --- a/tests/test_diff_density/tallies.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - keff - - - diff --git a/tests/test_diff_density/test_diff_density.py b/tests/test_diff_density/test_diff_density.py deleted file mode 100755 index ed6addec45..0000000000 --- a/tests/test_diff_density/test_diff_density.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness - - -if __name__ == '__main__': - harness = TestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_diff_nuclide_density/build_xml.py b/tests/test_diff_nuclide_density/build_xml.py deleted file mode 100644 index f77a337cb1..0000000000 --- a/tests/test_diff_nuclide_density/build_xml.py +++ /dev/null @@ -1,164 +0,0 @@ -import openmc - - -def make_mats(**kwargs): - water_dict = { - 'B-10': 8.0042e-06, - 'B-11': 3.2218e-05, - 'H-1': 4.9457e-02, - 'H-2': 7.4196e-06, - 'O-16': 2.4672e-02, - 'O-17': 9.3982e-06 + 5.0701e-05} - water = openmc.Material(name='water') - water.set_density('sum') - for nuclide in water_dict: - water.add_nuclide(nuclide, water_dict[nuclide]) - - U235_dens = kwargs.setdefault('U235_dens', 5.5814e-04) - fuel_dict = { - 'B-10': 8.0042e-06, - 'U-234': 4.4842e-06, - 'U-235': U235_dens, - 'U-238': 2.2407e-02, - 'O-16': 4.5828e-02, - 'O-17': 1.7457e-05 + 9.4176e-05} - fuel = openmc.Material(name='fuel 2.4%') - fuel.set_density('sum') - for nuclide in fuel_dict: - fuel.add_nuclide(nuclide, fuel_dict[nuclide]) - - zirc4_dict = { - 'O-16': 3.0743e-04, - 'O-17': 1.1711e-07 + 6.3176e-07, - 'Cr-50': 3.2962e-06, - 'Cr-52': 6.3564e-05, - 'Cr-53': 7.2076e-06, - 'Cr-54': 1.7941e-06, - 'Fe-54': 8.6699e-06, - 'Fe-56': 1.3610e-04, - 'Fe-57': 3.1431e-06, - 'Fe-58': 4.1829e-07, - 'Zr-90': 2.1827e-02, - 'Zr-91': 4.7600e-03, - 'Zr-92': 7.2758e-03, - 'Zr-94': 7.3734e-03, - 'Zr-96': 1.1879e-03, - 'Sn-112': 4.6735e-06, - 'Sn-114': 3.1799e-06, - 'Sn-115': 1.6381e-06, - 'Sn-116': 7.0055e-05, - 'Sn-117': 3.7003e-05, - 'Sn-118': 1.1669e-04, - 'Sn-119': 4.1387e-05, - 'Sn-120': 1.5697e-04, - 'Sn-122': 2.2308e-05, - 'Sn-124': 2.7897e-05} - zirc4 = openmc.Material(name='zircaloy 4') - zirc4.set_density('sum') - for nuclide in zirc4_dict: - zirc4.add_nuclide(nuclide, zirc4_dict[nuclide]) - - materials_file = openmc.MaterialsFile() - materials_file.default_xs = '71c' - materials_file.add_materials([water, fuel, zirc4]) - - return (materials_file, - {'mod':water, - 'fuel':fuel, - 'clad':zirc4}) - - -def make_geom(mats): - # Instantiate surfaces. - rfo = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.39218, name='fuel outer') - rci = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.40005, name='clad inner') - rco = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.45720, name='clad outer') - - x0 = openmc.XPlane(x0=-0.62992) - x1 = openmc.XPlane(x0=0.62992) - y0 = openmc.YPlane(y0=-0.62992) - y1 = openmc.YPlane(y0=0.62992) - z0 = openmc.ZPlane(z0=-1.0) - z1 = openmc.ZPlane(z0=1.0) - x0.boundary_type = 'reflective' - x1.boundary_type = 'reflective' - y0.boundary_type = 'reflective' - y1.boundary_type = 'reflective' - z0.boundary_type = 'reflective' - z1.boundary_type = 'reflective' - - # Instantiate cells. - fuel_c = openmc.Cell(name='fuel') - fuel_c.add_surface(rfo, halfspace=-1) - fuel_c.add_surface(z0, halfspace=+1) - fuel_c.add_surface(z1, halfspace=-1) - - gap = openmc.Cell(name='gap') - gap.add_surface(rci, halfspace=-1) - gap.add_surface(rfo, halfspace=+1) - gap.add_surface(z0, halfspace=+1) - gap.add_surface(z1, halfspace=-1) - - clad_c = openmc.Cell(name='clad') - clad_c.add_surface(rco, halfspace=-1) - clad_c.add_surface(rci, halfspace=+1) - clad_c.add_surface(z0, halfspace=+1) - clad_c.add_surface(z1, halfspace=-1) - - mod_c = openmc.Cell(name='moderator') - mod_c.add_surface(rco, halfspace=+1) - mod_c.add_surface(x0, halfspace=+1) - mod_c.add_surface(x1, halfspace=-1) - mod_c.add_surface(y0, halfspace=+1) - mod_c.add_surface(y1, halfspace=-1) - mod_c.add_surface(z0, halfspace=+1) - mod_c.add_surface(z1, halfspace=-1) - - # Add materials to cells. - fuel_c.fill = mats['fuel'] - gap.fill = 'void' - clad_c.fill = mats['clad'] - mod_c.fill = mats['mod'] - - # Instantiate universes. - u0 = openmc.Universe(universe_id=0) - u0.add_cells([fuel_c, gap, clad_c, mod_c]) - - # Write the XML file. - geometry = openmc.Geometry() - geometry.root_universe = u0 - geometry_file = openmc.GeometryFile() - geometry_file.geometry = geometry - - return geometry_file - - -def make_settings(**kwargs): - if 'batches' in kwargs: - batches = kwargs['batches'] - - settings_file = openmc.SettingsFile() - settings_file.batches = kwargs.setdefault('batches', 1610) - settings_file.inactive = kwargs.setdefault('inactive', 10) - settings_file.particles = kwargs.setdefault('particles', 1000) - settings_file.set_source_space('box', (-0.6, -0.6, -0.9, - 0.6, 0.6, 0.9)) - settings_file.entropy_lower_left = (-0.7, -0.7, -1.1) - settings_file.entropy_upper_right = (0.7, 0.7, 1.1) - settings_file.entropy_dimension = (10, 10, 10) - return settings_file - - -def make_inputs(**kwargs): - (mat_file, mats) = make_mats(**kwargs) - mat_file.export_to_xml() - - geo_file = make_geom(mats) - geo_file.export_to_xml() - - sets_file = make_settings(**kwargs) - sets_file.export_to_xml() - - -if __name__ == '__main__': - make_inputs(inactive=5, batches=10, particles=100) diff --git a/tests/test_diff_nuclide_density/geometry.xml b/tests/test_diff_nuclide_density/geometry.xml deleted file mode 100644 index e7e5b097ba..0000000000 --- a/tests/test_diff_nuclide_density/geometry.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/tests/test_diff_nuclide_density/materials.xml b/tests/test_diff_nuclide_density/materials.xml deleted file mode 100644 index 02b55f4523..0000000000 --- a/tests/test_diff_nuclide_density/materials.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - 71c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/test_diff_nuclide_density/results_true.dat b/tests/test_diff_nuclide_density/results_true.dat deleted file mode 100644 index d0c2e3ad15..0000000000 --- a/tests/test_diff_nuclide_density/results_true.dat +++ /dev/null @@ -1,5 +0,0 @@ -k-combined: -1.055198E+00 5.785829E-02 -tally 1: -2.547151E+03 -1.303757E+06 diff --git a/tests/test_diff_nuclide_density/settings.xml b/tests/test_diff_nuclide_density/settings.xml deleted file mode 100644 index a41ba9725b..0000000000 --- a/tests/test_diff_nuclide_density/settings.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - 100 - 10 - 5 - - - - -0.6 -0.6 -0.9 0.6 0.6 0.9 - - - - 10 10 10 - -0.7 -0.7 -1.1 - 0.7 0.7 1.1 - - diff --git a/tests/test_diff_nuclide_density/tallies.xml b/tests/test_diff_nuclide_density/tallies.xml deleted file mode 100644 index 321b2c9b0e..0000000000 --- a/tests/test_diff_nuclide_density/tallies.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - keff - - - - diff --git a/tests/test_diff_nuclide_density/test_diff_nuclide_density.py b/tests/test_diff_nuclide_density/test_diff_nuclide_density.py deleted file mode 100755 index ed6addec45..0000000000 --- a/tests/test_diff_nuclide_density/test_diff_nuclide_density.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness - - -if __name__ == '__main__': - harness = TestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_diff_tally/inputs_true.dat b/tests/test_diff_tally/inputs_true.dat new file mode 100644 index 0000000000..22656a4838 --- /dev/null +++ b/tests/test_diff_tally/inputs_true.dat @@ -0,0 +1 @@ +cb132b2211831bf333bc9be0b10d092ad3bbe9a188743cf4c430ae97037987763b268997757a0602c164d8c2deb3eb9843590d860ba5a4858092a9ad0b8adeba \ No newline at end of file diff --git a/tests/test_diff_tally/results_true.dat b/tests/test_diff_tally/results_true.dat new file mode 100644 index 0000000000..8b33b82935 --- /dev/null +++ b/tests/test_diff_tally/results_true.dat @@ -0,0 +1,97 @@ +d_material,d_nuclide,d_variable,score,mean,std. dev. +3,,density,flux,-5.12e+00,8.94e-01 +3,,density,flux,-1.07e+01,8.84e-01 +1,,density,flux,-3.14e-01,4.48e-02 +1,,density,flux,-2.73e-01,8.51e-02 +1,O-16.71c,nuclide_density,flux,-3.58e+00,7.77e+00 +1,O-16.71c,nuclide_density,flux,-7.64e+00,1.09e+01 +1,U-235.71c,nuclide_density,flux,-1.19e+03,1.18e+02 +1,U-235.71c,nuclide_density,flux,-1.25e+03,1.63e+02 +3,,density,total,-1.92e+00,4.49e-01 +3,,density,absorption,5.89e-02,6.68e-02 +3,,density,fission,8.55e-02,3.33e-02 +3,,density,nu-fission,2.20e-01,8.60e-02 +3,,density,total,4.49e-02,3.15e-02 +3,,density,absorption,6.66e-02,2.74e-02 +3,,density,fission,6.12e-02,2.24e-02 +3,,density,nu-fission,1.49e-01,5.45e-02 +3,,density,total,7.72e+00,9.45e-01 +3,,density,absorption,1.26e-01,2.24e-02 +3,,density,fission,0.00e+00,0.00e+00 +3,,density,nu-fission,0.00e+00,0.00e+00 +3,,density,total,0.00e+00,0.00e+00 +3,,density,absorption,0.00e+00,0.00e+00 +3,,density,fission,0.00e+00,0.00e+00 +3,,density,nu-fission,0.00e+00,0.00e+00 +1,,density,total,3.79e-01,1.14e-02 +1,,density,absorption,1.27e-02,4.48e-03 +1,,density,fission,1.88e-03,1.96e-03 +1,,density,nu-fission,5.22e-03,5.08e-03 +1,,density,total,5.43e-03,1.67e-03 +1,,density,absorption,1.29e-03,1.64e-03 +1,,density,fission,3.13e-05,1.30e-03 +1,,density,nu-fission,1.12e-04,3.17e-03 +1,,density,total,-2.91e-01,9.67e-02 +1,,density,absorption,-5.40e-03,1.29e-03 +1,,density,fission,0.00e+00,0.00e+00 +1,,density,nu-fission,0.00e+00,0.00e+00 +1,,density,total,0.00e+00,0.00e+00 +1,,density,absorption,0.00e+00,0.00e+00 +1,,density,fission,0.00e+00,0.00e+00 +1,,density,nu-fission,0.00e+00,0.00e+00 +1,O-16.71c,nuclide_density,total,4.33e+01,3.24e+00 +1,O-16.71c,nuclide_density,absorption,6.59e-01,5.83e-01 +1,O-16.71c,nuclide_density,fission,4.31e-01,1.26e-01 +1,O-16.71c,nuclide_density,nu-fission,1.08e+00,3.25e-01 +1,O-16.71c,nuclide_density,total,4.52e-01,1.50e-01 +1,O-16.71c,nuclide_density,absorption,4.58e-01,1.12e-01 +1,O-16.71c,nuclide_density,fission,3.54e-01,9.55e-02 +1,O-16.71c,nuclide_density,nu-fission,8.62e-01,2.33e-01 +1,O-16.71c,nuclide_density,total,-4.58e-01,1.17e+01 +1,O-16.71c,nuclide_density,absorption,1.23e-01,1.75e-01 +1,O-16.71c,nuclide_density,fission,0.00e+00,0.00e+00 +1,O-16.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 +1,O-16.71c,nuclide_density,total,0.00e+00,0.00e+00 +1,O-16.71c,nuclide_density,absorption,0.00e+00,0.00e+00 +1,O-16.71c,nuclide_density,fission,0.00e+00,0.00e+00 +1,O-16.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 +1,U-235.71c,nuclide_density,total,-2.41e+02,5.64e+01 +1,U-235.71c,nuclide_density,absorption,1.11e+02,1.40e+01 +1,U-235.71c,nuclide_density,fission,1.79e+02,9.60e+00 +1,U-235.71c,nuclide_density,nu-fission,3.97e+02,2.44e+01 +1,U-235.71c,nuclide_density,total,4.56e+02,1.09e+01 +1,U-235.71c,nuclide_density,absorption,3.45e+02,1.09e+01 +1,U-235.71c,nuclide_density,fission,2.70e+02,8.42e+00 +1,U-235.71c,nuclide_density,nu-fission,6.59e+02,2.05e+01 +1,U-235.71c,nuclide_density,total,-2.29e+03,2.59e+02 +1,U-235.71c,nuclide_density,absorption,-5.31e+01,5.44e+00 +1,U-235.71c,nuclide_density,fission,0.00e+00,0.00e+00 +1,U-235.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 +1,U-235.71c,nuclide_density,total,0.00e+00,0.00e+00 +1,U-235.71c,nuclide_density,absorption,0.00e+00,0.00e+00 +1,U-235.71c,nuclide_density,fission,0.00e+00,0.00e+00 +1,U-235.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 +3,,density,absorption,-3.29e-02,8.34e-02 +3,,density,absorption,1.21e-01,4.42e-02 +1,,density,absorption,1.51e-02,2.89e-03 +1,,density,absorption,-4.61e-03,2.30e-03 +1,O-16.71c,nuclide_density,absorption,2.87e-01,5.33e-01 +1,O-16.71c,nuclide_density,absorption,2.86e-01,3.59e-01 +1,U-235.71c,nuclide_density,absorption,1.14e+02,1.15e+01 +1,U-235.71c,nuclide_density,absorption,-5.10e+01,4.74e+00 +3,,density,nu-fission,4.24e-04,6.13e-02 +3,,density,nu-fission,2.40e-02,6.37e-02 +3,,density,nu-fission,0.00e+00,0.00e+00 +3,,density,nu-fission,0.00e+00,0.00e+00 +1,,density,nu-fission,-2.85e-02,2.57e-03 +1,,density,nu-fission,-6.16e-02,5.51e-03 +1,,density,nu-fission,0.00e+00,0.00e+00 +1,,density,nu-fission,0.00e+00,0.00e+00 +1,O-16.71c,nuclide_density,nu-fission,1.70e-01,2.18e-01 +1,O-16.71c,nuclide_density,nu-fission,6.30e-01,5.11e-01 +1,O-16.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 +1,O-16.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 +1,U-235.71c,nuclide_density,nu-fission,-2.00e+02,1.68e+01 +1,U-235.71c,nuclide_density,nu-fission,-4.76e+02,1.41e+01 +1,U-235.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 +1,U-235.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 diff --git a/tests/test_diff_tally/test_diff_tally.py b/tests/test_diff_tally/test_diff_tally.py new file mode 100644 index 0000000000..2bd0f704df --- /dev/null +++ b/tests/test_diff_tally/test_diff_tally.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python + +import glob +import os +import pandas as pd +try: + from StringIO import StringIO +except: + from io import StringIO +import sys +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +from openmc import Filter, Mesh, Tally, TalliesFile, Summary, StatePoint +#from openmc.statepoint import StatePoint +from openmc.source import Source +from openmc.stats import Box + +class DiffTallyTestHarness(PyAPITestHarness): + def _build_inputs(self): + # Build default materials/geometry + self._input_set.build_default_materials_and_geometry() + + # Set settings explicitly + self._input_set.settings.batches = 5 + self._input_set.settings.inactive = 0 + self._input_set.settings.particles = 400 + self._input_set.settings.source = Source(space=Box( + [-160, -160, -183], [160, 160, 183])) + self._input_set.settings.output = {'summary':True} + + self._input_set.tallies = TalliesFile() + + filt_mats = Filter(type='material', bins=(1, 3)) + filt_eout = Filter(type='energyout', bins=(0.0, 1.0, 20.0)) + + def add_derivs(tally_list): + assert len(tally_list) == 4 + # We want density derivatives for both water and fuel to get + # coverage for both fissile and non-fissile materials. + tally_list[0].diff_variable = 'density' + tally_list[0].diff_material = 3 + tally_list[1].diff_variable = 'density' + tally_list[1].diff_material = 1 + + # O-16 is a good nuclide to test against because it is present + # in both water and fuel. Some routines need to recognize that they + # have the perturbed nuclide but not the perturbed material. + tally_list[2].diff_variable = 'nuclide_density' + tally_list[2].diff_material = 1 + tally_list[2].diff_nuclide = 'O-16' + + # A fissile nuclide, just for good measure. + tally_list[3].diff_variable = 'nuclide_density' + tally_list[3].diff_material = 1 + tally_list[3].diff_nuclide = 'U-235' + + # Cover the flux score. + tallies = [Tally() for i in range(4)] + for t in tallies: t.add_score('flux') + for t in tallies: t.add_filter(filt_mats) + add_derivs(tallies) + for t in tallies: self._input_set.tallies.add_tally(t) + + # Cover supported scores with a collision estimator. + tallies = [Tally() for i in range(4)] + for t in tallies: t.add_score('total') + for t in tallies: t.add_score('absorption') + for t in tallies: t.add_score('fission') + for t in tallies: t.add_score('nu-fission') + for t in tallies: t.add_filter(filt_mats) + for t in tallies: t.add_nuclide('total') + for t in tallies: t.add_nuclide('U-235') + add_derivs(tallies) + for t in tallies: self._input_set.tallies.add_tally(t) + + # Cover an analog estimator. + tallies = [Tally() for i in range(4)] + for t in tallies: t.add_score('absorption') + for t in tallies: t.add_filter(filt_mats) + for t in tallies: t.estimator = 'analog' + add_derivs(tallies) + for t in tallies: self._input_set.tallies.add_tally(t) + + # And the special fission with energyout filter. + tallies = [Tally() for i in range(4)] + for t in tallies: t.add_score('nu-fission') + for t in tallies: t.add_filter(filt_mats) + for t in tallies: t.add_filter(filt_eout) + add_derivs(tallies) + for t in tallies: self._input_set.tallies.add_tally(t) + + self._input_set.export() + + def _get_results(self): + #return super(DiffTallyTestHarness, self)._get_results(hash_output=True) + # Read the statepoint and summary files. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = StatePoint(statepoint) + su = Summary('summary.h5') + sp.link_with_summary(su) + + # Extract the tally data as a Pandas DataFrame. + df = pd.DataFrame() + for t in sp.tallies.values(): + df = df.append(t.get_pandas_dataframe(), ignore_index=True) + + # Extract the relevant data as a CSV string. + out = StringIO() + cols = ('d_material', 'd_nuclide', 'd_variable', 'score', 'mean', + 'std. dev.') + df.to_csv(out, columns=cols, index=False, float_format='%.2e') + + return out.getvalue() + + def _cleanup(self): + super(DiffTallyTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = DiffTallyTestHarness('statepoint.5.*', True) + harness.main()