diff --git a/openmc/weight_windows.py b/openmc/weight_windows.py index e3ea42fa23..4dabe2a1f0 100644 --- a/openmc/weight_windows.py +++ b/openmc/weight_windows.py @@ -480,12 +480,15 @@ def wwinp_to_wws(path): # read the number of energy groups for each particle, ne n_egroups = [int(next(wwinp)) for _ in range(n_particle_types)] - if len(n_egroups) == 1: - particles = ['neutron'] - elif len(n_egroups) == 2: - particles = ['neutron', 'photon'] + # order that supported particle types will appear in the file + particle_types = ['neutron', 'photon'] - if len(n_egroups) > 2: + # add particle to list if at least one energy group is present + particles = [p for e, p in zip(n_egroups, particle_types) if e > 0] + # truncate list of energy groups if needed + n_egroups = [e for e in n_egroups if e > 0] + + if n_particle_types > 2: msg = ('More than two particle types are present. ' 'Only neutron and photon weight windows will be read.') warnings.warn(msg) @@ -546,7 +549,7 @@ def wwinp_to_wws(path): 'the value read in block 1 of the wwinp file ({})') raise ValueError(msg.format(dim, mesh_val, header_val)) - # check totaly number of mesh elements in each direction + # check total number of mesh elements in each direction mesh_dims = mesh.dimension for dim, header_val, mesh_val in zip(dims, header_mesh_dims, mesh_dims): if header_val != mesh_val: @@ -567,13 +570,15 @@ def wwinp_to_wws(path): e_bounds *= 1E6 # create an array for weight window lower bounds - ww_lb = np.zeros((ne, *mesh.dimension)) - for e in range(ne): - # MCNP ordering for weight windows matches that of OpenMC - # ('xyz' with x changing fastest) - ww_vals = [float(next(wwinp)) for _ in range(n_elements)] - ww_lb[e, :] = np.asarray(ww_vals).reshape(mesh.dimension) - + ww_lb = np.zeros((*mesh.dimension, ne)) + for ijk in mesh.indices: + idx = tuple([v - 1 for v in ijk] + [slice(None)]) + ww_lb[idx] = [float(next(wwinp)) for _ in range(ne)] + # for e in range(ne): + # # MCNP ordering for weight windows matches that of OpenMC + # # ('xyz' with x changing fastest) + # ww_vals = [float(next(wwinp)) for _ in range(n_elements)] + # ww_lb[e, :] = np.asarray(ww_vals).reshape(mesh.dimension) settings = WeightWindows(id=None, mesh=mesh, lower_ww_bounds=ww_lb.flatten(), diff --git a/tests/unit_tests/weightwindows/test_wwinp_reader.py b/tests/unit_tests/weightwindows/test_wwinp_reader.py new file mode 100644 index 0000000000..910c0e9121 --- /dev/null +++ b/tests/unit_tests/weightwindows/test_wwinp_reader.py @@ -0,0 +1,117 @@ +import numpy as np + +import openmc +import pytest + + +# check that we can successfully read wwinp files with the following contents: +# +# - neutrons on a rectilinear mesh +# - neutrons and photons on a rectilinear mesh + +# check that the following raises the correct exceptions (for now): +# +# - wwinp file with multiple time steps +# - wwinp file with cylindrical or spherical mesh + + +# expected retults - neutron data only +n_mesh = openmc.RectilinearMesh() +n_mesh.x_grid = np.asarray([-100.0, + -99.0, + -97.0, + -79.36364, + -61.72727, + -44.09091, + -26.45455, + -8.818182, + 8.818182, + 26.45455, + 44.09091, + 61.72727, + 79.36364, + 97.0, + 99.0, + 100]) +n_mesh.y_grid = np.asarray([-100.0, + -50.0, + -13.33333, + 23.33333, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0]) +n_mesh.z_grid = np.asarray([-100.0, + -66.66667, + -33.33333, + 0.0, + 33.33333, + 66.66667, + 100.0]) +n_e_bounds = np.asarray([0.0, + 100000.0, + 146780.0]) + +# expected results - neutron and photon data +np_mesh = openmc.RectilinearMesh() +np_mesh.x_grid = np.asarray([-100.0, 100.0]) +# y grid and z grid are the same as the previous mesh +np_mesh.y_grid = n_mesh.y_grid +np_mesh.z_grid = n_mesh.z_grid + +np_n_e_bounds = np.asarray([0.0, 100000.0, 146780.0, 215440.0]) +np_p_e_bounds = np.asarray([0.0, 1.0E8]) + +# expected results - photon data only +p_mesh = openmc.RectilinearMesh() +# adopts z grid from previous meshes as its x grid +p_mesh.x_grid = np_mesh.z_grid +# uses the same y grid +p_mesh.y_grid = np_mesh.y_grid +p_mesh.z_grid = np.asarray([-50.0, 50.0]) + +p_e_bounds = np.asarray([0.0, 100000.0, 146780.0, 215440.0, 316230.0]) + +expected_results = [('wwinp_n', n_mesh, ('neutron',), (n_e_bounds,)), + ('wwinp_np', np_mesh, ('neutron', 'photon'), (np_n_e_bounds, np_p_e_bounds)), + ('wwinp_p', p_mesh, ('photon',), (p_e_bounds,))] + +def id_fn(params): + suffix = params[0].split('_')[-1] + if suffix == 'n': + return 'neutron-only' + elif suffix == 'np': + return 'neutron-photon' + elif suffix == 'p': + return 'photon-only' + + +@pytest.mark.parametrize('wwinp_data', expected_results, ids=id_fn) +def test_wwinp_reader(wwinp_data): + wwinp_file, mesh, particle_types, energy_bounds = wwinp_data + + wws = openmc.wwinp_to_wws(wwinp_file) + + for i, ww in enumerate(wws): + e_bounds = energy_bounds[i] + particle_type = particle_types[i] + + assert ww.particle_type == particle_type + + # check the mesh grid + # there will be some very small changes due to the number of digits + # provided in the wwinp format and the use of np.linspace to compute + # boundaries of the fine mesh intervals + np.testing.assert_allclose(mesh.x_grid, ww.mesh.x_grid, rtol=1e-6) + np.testing.assert_allclose(mesh.y_grid, ww.mesh.y_grid, rtol=1e-6) + np.testing.assert_allclose(mesh.z_grid, ww.mesh.z_grid, rtol=1e-6) + + # check the energy bounds + np.testing.assert_array_equal(e_bounds, ww.energy_bins) + + # check the expected weight window values mocked in the file -- + # a reversed array of the flat index into the numpy array + n_wws = np.prod((*mesh.dimension, e_bounds.size - 1)) + exp_ww_lb = np.linspace(1, n_wws, n_wws)[::-1] + np.testing.assert_array_equal(exp_ww_lb, ww.lower_ww_bounds) diff --git a/tests/unit_tests/weightwindows/wwinp_n b/tests/unit_tests/weightwindows/wwinp_n new file mode 100644 index 0000000000..b9611e945d --- /dev/null +++ b/tests/unit_tests/weightwindows/wwinp_n @@ -0,0 +1,263 @@ + 1 1 1 10 + 2 + 15.0 8.0 6.0 -1.00000E+02 -1.00000E+02 -1.00000E+02 + 15.0 8.0 6.0 1.0 + -1.00000E+02 1.00000E+00 -9.90000E+01 1.00000E+00 1.00000E+00 -9.70000E+01 + 1.00000E+00 1.00000E+00 -7.93636E+01 1.00000E+00 1.00000E+00 -6.17273E+01 + 1.00000E+00 1.00000E+00 -4.40909E+01 1.00000E+00 1.00000E+00 -2.64546E+01 + 1.00000E+00 1.00000E+00 -8.81818E+00 1.00000E+00 1.00000E+00 8.81818E+00 + 1.00000E+00 1.00000E+00 2.64546E+01 1.00000E+00 1.00000E+00 4.40909E+01 + 1.00000E+00 1.00000E+00 6.17273E+01 1.00000E+00 1.00000E+00 7.93636E+01 + 1.00000E+00 1.00000E+00 9.70000E+01 1.00000E+00 1.00000E+00 9.90000E+01 + 1.00000E+00 1.00000E+00 1.00000E+02 1.00000E+00 + -1.00000E+02 1.00000E+00 -5.00000E+01 1.00000E+00 1.00000E+00 -1.33333E+01 + 1.00000E+00 1.00000E+00 2.33333E+01 1.00000E+00 1.00000E+00 6.00000E+01 + 1.00000E+00 1.00000E+00 7.00000E+01 1.00000E+00 1.00000E+00 8.00000E+01 + 1.00000E+00 1.00000E+00 9.00000E+01 1.00000E+00 1.00000E+00 1.00000E+02 + 1.00000E+00 + -1.00000E+02 1.00000E+00 -6.66667E+01 1.00000E+00 1.00000E+00 -3.33333E+01 + 1.00000E+00 1.00000E+00 0.00000E+00 1.00000E+00 1.00000E+00 3.33333E+01 + 1.00000E+00 1.00000E+00 6.66667E+01 1.00000E+00 1.00000E+00 1.00000E+02 + 1.00000E+00 + 1.00000E-01 1.46780E-01 + 1.44000E+03 1.43900E+03 1.34400E+03 1.34300E+03 1.24800E+03 1.24700E+03 + 1.15200E+03 1.15100E+03 1.05600E+03 1.05500E+03 9.60000E+02 9.59000E+02 + 8.64000E+02 8.63000E+02 7.68000E+02 7.67000E+02 6.72000E+02 6.71000E+02 + 5.76000E+02 5.75000E+02 4.80000E+02 4.79000E+02 3.84000E+02 3.83000E+02 + 2.88000E+02 2.87000E+02 1.92000E+02 1.91000E+02 9.60000E+01 9.50000E+01 + 1.42800E+03 1.42700E+03 1.33200E+03 1.33100E+03 1.23600E+03 1.23500E+03 + 1.14000E+03 1.13900E+03 1.04400E+03 1.04300E+03 9.48000E+02 9.47000E+02 + 8.52000E+02 8.51000E+02 7.56000E+02 7.55000E+02 6.60000E+02 6.59000E+02 + 5.64000E+02 5.63000E+02 4.68000E+02 4.67000E+02 3.72000E+02 3.71000E+02 + 2.76000E+02 2.75000E+02 1.80000E+02 1.79000E+02 8.40000E+01 8.30000E+01 + 1.41600E+03 1.41500E+03 1.32000E+03 1.31900E+03 1.22400E+03 1.22300E+03 + 1.12800E+03 1.12700E+03 1.03200E+03 1.03100E+03 9.36000E+02 9.35000E+02 + 8.40000E+02 8.39000E+02 7.44000E+02 7.43000E+02 6.48000E+02 6.47000E+02 + 5.52000E+02 5.51000E+02 4.56000E+02 4.55000E+02 3.60000E+02 3.59000E+02 + 2.64000E+02 2.63000E+02 1.68000E+02 1.67000E+02 7.20000E+01 7.10000E+01 + 1.40400E+03 1.40300E+03 1.30800E+03 1.30700E+03 1.21200E+03 1.21100E+03 + 1.11600E+03 1.11500E+03 1.02000E+03 1.01900E+03 9.24000E+02 9.23000E+02 + 8.28000E+02 8.27000E+02 7.32000E+02 7.31000E+02 6.36000E+02 6.35000E+02 + 5.40000E+02 5.39000E+02 4.44000E+02 4.43000E+02 3.48000E+02 3.47000E+02 + 2.52000E+02 2.51000E+02 1.56000E+02 1.55000E+02 6.00000E+01 5.90000E+01 + 1.39200E+03 1.39100E+03 1.29600E+03 1.29500E+03 1.20000E+03 1.19900E+03 + 1.10400E+03 1.10300E+03 1.00800E+03 1.00700E+03 9.12000E+02 9.11000E+02 + 8.16000E+02 8.15000E+02 7.20000E+02 7.19000E+02 6.24000E+02 6.23000E+02 + 5.28000E+02 5.27000E+02 4.32000E+02 4.31000E+02 3.36000E+02 3.35000E+02 + 2.40000E+02 2.39000E+02 1.44000E+02 1.43000E+02 4.80000E+01 4.70000E+01 + 1.38000E+03 1.37900E+03 1.28400E+03 1.28300E+03 1.18800E+03 1.18700E+03 + 1.09200E+03 1.09100E+03 9.96000E+02 9.95000E+02 9.00000E+02 8.99000E+02 + 8.04000E+02 8.03000E+02 7.08000E+02 7.07000E+02 6.12000E+02 6.11000E+02 + 5.16000E+02 5.15000E+02 4.20000E+02 4.19000E+02 3.24000E+02 3.23000E+02 + 2.28000E+02 2.27000E+02 1.32000E+02 1.31000E+02 3.60000E+01 3.50000E+01 + 1.36800E+03 1.36700E+03 1.27200E+03 1.27100E+03 1.17600E+03 1.17500E+03 + 1.08000E+03 1.07900E+03 9.84000E+02 9.83000E+02 8.88000E+02 8.87000E+02 + 7.92000E+02 7.91000E+02 6.96000E+02 6.95000E+02 6.00000E+02 5.99000E+02 + 5.04000E+02 5.03000E+02 4.08000E+02 4.07000E+02 3.12000E+02 3.11000E+02 + 2.16000E+02 2.15000E+02 1.20000E+02 1.19000E+02 2.40000E+01 2.30000E+01 + 1.35600E+03 1.35500E+03 1.26000E+03 1.25900E+03 1.16400E+03 1.16300E+03 + 1.06800E+03 1.06700E+03 9.72000E+02 9.71000E+02 8.76000E+02 8.75000E+02 + 7.80000E+02 7.79000E+02 6.84000E+02 6.83000E+02 5.88000E+02 5.87000E+02 + 4.92000E+02 4.91000E+02 3.96000E+02 3.95000E+02 3.00000E+02 2.99000E+02 + 2.04000E+02 2.03000E+02 1.08000E+02 1.07000E+02 1.20000E+01 1.10000E+01 + 1.43800E+03 1.43700E+03 1.34200E+03 1.34100E+03 1.24600E+03 1.24500E+03 + 1.15000E+03 1.14900E+03 1.05400E+03 1.05300E+03 9.58000E+02 9.57000E+02 + 8.62000E+02 8.61000E+02 7.66000E+02 7.65000E+02 6.70000E+02 6.69000E+02 + 5.74000E+02 5.73000E+02 4.78000E+02 4.77000E+02 3.82000E+02 3.81000E+02 + 2.86000E+02 2.85000E+02 1.90000E+02 1.89000E+02 9.40000E+01 9.30000E+01 + 1.42600E+03 1.42500E+03 1.33000E+03 1.32900E+03 1.23400E+03 1.23300E+03 + 1.13800E+03 1.13700E+03 1.04200E+03 1.04100E+03 9.46000E+02 9.45000E+02 + 8.50000E+02 8.49000E+02 7.54000E+02 7.53000E+02 6.58000E+02 6.57000E+02 + 5.62000E+02 5.61000E+02 4.66000E+02 4.65000E+02 3.70000E+02 3.69000E+02 + 2.74000E+02 2.73000E+02 1.78000E+02 1.77000E+02 8.20000E+01 8.10000E+01 + 1.41400E+03 1.41300E+03 1.31800E+03 1.31700E+03 1.22200E+03 1.22100E+03 + 1.12600E+03 1.12500E+03 1.03000E+03 1.02900E+03 9.34000E+02 9.33000E+02 + 8.38000E+02 8.37000E+02 7.42000E+02 7.41000E+02 6.46000E+02 6.45000E+02 + 5.50000E+02 5.49000E+02 4.54000E+02 4.53000E+02 3.58000E+02 3.57000E+02 + 2.62000E+02 2.61000E+02 1.66000E+02 1.65000E+02 7.00000E+01 6.90000E+01 + 1.40200E+03 1.40100E+03 1.30600E+03 1.30500E+03 1.21000E+03 1.20900E+03 + 1.11400E+03 1.11300E+03 1.01800E+03 1.01700E+03 9.22000E+02 9.21000E+02 + 8.26000E+02 8.25000E+02 7.30000E+02 7.29000E+02 6.34000E+02 6.33000E+02 + 5.38000E+02 5.37000E+02 4.42000E+02 4.41000E+02 3.46000E+02 3.45000E+02 + 2.50000E+02 2.49000E+02 1.54000E+02 1.53000E+02 5.80000E+01 5.70000E+01 + 1.39000E+03 1.38900E+03 1.29400E+03 1.29300E+03 1.19800E+03 1.19700E+03 + 1.10200E+03 1.10100E+03 1.00600E+03 1.00500E+03 9.10000E+02 9.09000E+02 + 8.14000E+02 8.13000E+02 7.18000E+02 7.17000E+02 6.22000E+02 6.21000E+02 + 5.26000E+02 5.25000E+02 4.30000E+02 4.29000E+02 3.34000E+02 3.33000E+02 + 2.38000E+02 2.37000E+02 1.42000E+02 1.41000E+02 4.60000E+01 4.50000E+01 + 1.37800E+03 1.37700E+03 1.28200E+03 1.28100E+03 1.18600E+03 1.18500E+03 + 1.09000E+03 1.08900E+03 9.94000E+02 9.93000E+02 8.98000E+02 8.97000E+02 + 8.02000E+02 8.01000E+02 7.06000E+02 7.05000E+02 6.10000E+02 6.09000E+02 + 5.14000E+02 5.13000E+02 4.18000E+02 4.17000E+02 3.22000E+02 3.21000E+02 + 2.26000E+02 2.25000E+02 1.30000E+02 1.29000E+02 3.40000E+01 3.30000E+01 + 1.36600E+03 1.36500E+03 1.27000E+03 1.26900E+03 1.17400E+03 1.17300E+03 + 1.07800E+03 1.07700E+03 9.82000E+02 9.81000E+02 8.86000E+02 8.85000E+02 + 7.90000E+02 7.89000E+02 6.94000E+02 6.93000E+02 5.98000E+02 5.97000E+02 + 5.02000E+02 5.01000E+02 4.06000E+02 4.05000E+02 3.10000E+02 3.09000E+02 + 2.14000E+02 2.13000E+02 1.18000E+02 1.17000E+02 2.20000E+01 2.10000E+01 + 1.35400E+03 1.35300E+03 1.25800E+03 1.25700E+03 1.16200E+03 1.16100E+03 + 1.06600E+03 1.06500E+03 9.70000E+02 9.69000E+02 8.74000E+02 8.73000E+02 + 7.78000E+02 7.77000E+02 6.82000E+02 6.81000E+02 5.86000E+02 5.85000E+02 + 4.90000E+02 4.89000E+02 3.94000E+02 3.93000E+02 2.98000E+02 2.97000E+02 + 2.02000E+02 2.01000E+02 1.06000E+02 1.05000E+02 1.00000E+01 9.00000E+00 + 1.43600E+03 1.43500E+03 1.34000E+03 1.33900E+03 1.24400E+03 1.24300E+03 + 1.14800E+03 1.14700E+03 1.05200E+03 1.05100E+03 9.56000E+02 9.55000E+02 + 8.60000E+02 8.59000E+02 7.64000E+02 7.63000E+02 6.68000E+02 6.67000E+02 + 5.72000E+02 5.71000E+02 4.76000E+02 4.75000E+02 3.80000E+02 3.79000E+02 + 2.84000E+02 2.83000E+02 1.88000E+02 1.87000E+02 9.20000E+01 9.10000E+01 + 1.42400E+03 1.42300E+03 1.32800E+03 1.32700E+03 1.23200E+03 1.23100E+03 + 1.13600E+03 1.13500E+03 1.04000E+03 1.03900E+03 9.44000E+02 9.43000E+02 + 8.48000E+02 8.47000E+02 7.52000E+02 7.51000E+02 6.56000E+02 6.55000E+02 + 5.60000E+02 5.59000E+02 4.64000E+02 4.63000E+02 3.68000E+02 3.67000E+02 + 2.72000E+02 2.71000E+02 1.76000E+02 1.75000E+02 8.00000E+01 7.90000E+01 + 1.41200E+03 1.41100E+03 1.31600E+03 1.31500E+03 1.22000E+03 1.21900E+03 + 1.12400E+03 1.12300E+03 1.02800E+03 1.02700E+03 9.32000E+02 9.31000E+02 + 8.36000E+02 8.35000E+02 7.40000E+02 7.39000E+02 6.44000E+02 6.43000E+02 + 5.48000E+02 5.47000E+02 4.52000E+02 4.51000E+02 3.56000E+02 3.55000E+02 + 2.60000E+02 2.59000E+02 1.64000E+02 1.63000E+02 6.80000E+01 6.70000E+01 + 1.40000E+03 1.39900E+03 1.30400E+03 1.30300E+03 1.20800E+03 1.20700E+03 + 1.11200E+03 1.11100E+03 1.01600E+03 1.01500E+03 9.20000E+02 9.19000E+02 + 8.24000E+02 8.23000E+02 7.28000E+02 7.27000E+02 6.32000E+02 6.31000E+02 + 5.36000E+02 5.35000E+02 4.40000E+02 4.39000E+02 3.44000E+02 3.43000E+02 + 2.48000E+02 2.47000E+02 1.52000E+02 1.51000E+02 5.60000E+01 5.50000E+01 + 1.38800E+03 1.38700E+03 1.29200E+03 1.29100E+03 1.19600E+03 1.19500E+03 + 1.10000E+03 1.09900E+03 1.00400E+03 1.00300E+03 9.08000E+02 9.07000E+02 + 8.12000E+02 8.11000E+02 7.16000E+02 7.15000E+02 6.20000E+02 6.19000E+02 + 5.24000E+02 5.23000E+02 4.28000E+02 4.27000E+02 3.32000E+02 3.31000E+02 + 2.36000E+02 2.35000E+02 1.40000E+02 1.39000E+02 4.40000E+01 4.30000E+01 + 1.37600E+03 1.37500E+03 1.28000E+03 1.27900E+03 1.18400E+03 1.18300E+03 + 1.08800E+03 1.08700E+03 9.92000E+02 9.91000E+02 8.96000E+02 8.95000E+02 + 8.00000E+02 7.99000E+02 7.04000E+02 7.03000E+02 6.08000E+02 6.07000E+02 + 5.12000E+02 5.11000E+02 4.16000E+02 4.15000E+02 3.20000E+02 3.19000E+02 + 2.24000E+02 2.23000E+02 1.28000E+02 1.27000E+02 3.20000E+01 3.10000E+01 + 1.36400E+03 1.36300E+03 1.26800E+03 1.26700E+03 1.17200E+03 1.17100E+03 + 1.07600E+03 1.07500E+03 9.80000E+02 9.79000E+02 8.84000E+02 8.83000E+02 + 7.88000E+02 7.87000E+02 6.92000E+02 6.91000E+02 5.96000E+02 5.95000E+02 + 5.00000E+02 4.99000E+02 4.04000E+02 4.03000E+02 3.08000E+02 3.07000E+02 + 2.12000E+02 2.11000E+02 1.16000E+02 1.15000E+02 2.00000E+01 1.90000E+01 + 1.35200E+03 1.35100E+03 1.25600E+03 1.25500E+03 1.16000E+03 1.15900E+03 + 1.06400E+03 1.06300E+03 9.68000E+02 9.67000E+02 8.72000E+02 8.71000E+02 + 7.76000E+02 7.75000E+02 6.80000E+02 6.79000E+02 5.84000E+02 5.83000E+02 + 4.88000E+02 4.87000E+02 3.92000E+02 3.91000E+02 2.96000E+02 2.95000E+02 + 2.00000E+02 1.99000E+02 1.04000E+02 1.03000E+02 8.00000E+00 7.00000E+00 + 1.43400E+03 1.43300E+03 1.33800E+03 1.33700E+03 1.24200E+03 1.24100E+03 + 1.14600E+03 1.14500E+03 1.05000E+03 1.04900E+03 9.54000E+02 9.53000E+02 + 8.58000E+02 8.57000E+02 7.62000E+02 7.61000E+02 6.66000E+02 6.65000E+02 + 5.70000E+02 5.69000E+02 4.74000E+02 4.73000E+02 3.78000E+02 3.77000E+02 + 2.82000E+02 2.81000E+02 1.86000E+02 1.85000E+02 9.00000E+01 8.90000E+01 + 1.42200E+03 1.42100E+03 1.32600E+03 1.32500E+03 1.23000E+03 1.22900E+03 + 1.13400E+03 1.13300E+03 1.03800E+03 1.03700E+03 9.42000E+02 9.41000E+02 + 8.46000E+02 8.45000E+02 7.50000E+02 7.49000E+02 6.54000E+02 6.53000E+02 + 5.58000E+02 5.57000E+02 4.62000E+02 4.61000E+02 3.66000E+02 3.65000E+02 + 2.70000E+02 2.69000E+02 1.74000E+02 1.73000E+02 7.80000E+01 7.70000E+01 + 1.41000E+03 1.40900E+03 1.31400E+03 1.31300E+03 1.21800E+03 1.21700E+03 + 1.12200E+03 1.12100E+03 1.02600E+03 1.02500E+03 9.30000E+02 9.29000E+02 + 8.34000E+02 8.33000E+02 7.38000E+02 7.37000E+02 6.42000E+02 6.41000E+02 + 5.46000E+02 5.45000E+02 4.50000E+02 4.49000E+02 3.54000E+02 3.53000E+02 + 2.58000E+02 2.57000E+02 1.62000E+02 1.61000E+02 6.60000E+01 6.50000E+01 + 1.39800E+03 1.39700E+03 1.30200E+03 1.30100E+03 1.20600E+03 1.20500E+03 + 1.11000E+03 1.10900E+03 1.01400E+03 1.01300E+03 9.18000E+02 9.17000E+02 + 8.22000E+02 8.21000E+02 7.26000E+02 7.25000E+02 6.30000E+02 6.29000E+02 + 5.34000E+02 5.33000E+02 4.38000E+02 4.37000E+02 3.42000E+02 3.41000E+02 + 2.46000E+02 2.45000E+02 1.50000E+02 1.49000E+02 5.40000E+01 5.30000E+01 + 1.38600E+03 1.38500E+03 1.29000E+03 1.28900E+03 1.19400E+03 1.19300E+03 + 1.09800E+03 1.09700E+03 1.00200E+03 1.00100E+03 9.06000E+02 9.05000E+02 + 8.10000E+02 8.09000E+02 7.14000E+02 7.13000E+02 6.18000E+02 6.17000E+02 + 5.22000E+02 5.21000E+02 4.26000E+02 4.25000E+02 3.30000E+02 3.29000E+02 + 2.34000E+02 2.33000E+02 1.38000E+02 1.37000E+02 4.20000E+01 4.10000E+01 + 1.37400E+03 1.37300E+03 1.27800E+03 1.27700E+03 1.18200E+03 1.18100E+03 + 1.08600E+03 1.08500E+03 9.90000E+02 9.89000E+02 8.94000E+02 8.93000E+02 + 7.98000E+02 7.97000E+02 7.02000E+02 7.01000E+02 6.06000E+02 6.05000E+02 + 5.10000E+02 5.09000E+02 4.14000E+02 4.13000E+02 3.18000E+02 3.17000E+02 + 2.22000E+02 2.21000E+02 1.26000E+02 1.25000E+02 3.00000E+01 2.90000E+01 + 1.36200E+03 1.36100E+03 1.26600E+03 1.26500E+03 1.17000E+03 1.16900E+03 + 1.07400E+03 1.07300E+03 9.78000E+02 9.77000E+02 8.82000E+02 8.81000E+02 + 7.86000E+02 7.85000E+02 6.90000E+02 6.89000E+02 5.94000E+02 5.93000E+02 + 4.98000E+02 4.97000E+02 4.02000E+02 4.01000E+02 3.06000E+02 3.05000E+02 + 2.10000E+02 2.09000E+02 1.14000E+02 1.13000E+02 1.80000E+01 1.70000E+01 + 1.35000E+03 1.34900E+03 1.25400E+03 1.25300E+03 1.15800E+03 1.15700E+03 + 1.06200E+03 1.06100E+03 9.66000E+02 9.65000E+02 8.70000E+02 8.69000E+02 + 7.74000E+02 7.73000E+02 6.78000E+02 6.77000E+02 5.82000E+02 5.81000E+02 + 4.86000E+02 4.85000E+02 3.90000E+02 3.89000E+02 2.94000E+02 2.93000E+02 + 1.98000E+02 1.97000E+02 1.02000E+02 1.01000E+02 6.00000E+00 5.00000E+00 + 1.43200E+03 1.43100E+03 1.33600E+03 1.33500E+03 1.24000E+03 1.23900E+03 + 1.14400E+03 1.14300E+03 1.04800E+03 1.04700E+03 9.52000E+02 9.51000E+02 + 8.56000E+02 8.55000E+02 7.60000E+02 7.59000E+02 6.64000E+02 6.63000E+02 + 5.68000E+02 5.67000E+02 4.72000E+02 4.71000E+02 3.76000E+02 3.75000E+02 + 2.80000E+02 2.79000E+02 1.84000E+02 1.83000E+02 8.80000E+01 8.70000E+01 + 1.42000E+03 1.41900E+03 1.32400E+03 1.32300E+03 1.22800E+03 1.22700E+03 + 1.13200E+03 1.13100E+03 1.03600E+03 1.03500E+03 9.40000E+02 9.39000E+02 + 8.44000E+02 8.43000E+02 7.48000E+02 7.47000E+02 6.52000E+02 6.51000E+02 + 5.56000E+02 5.55000E+02 4.60000E+02 4.59000E+02 3.64000E+02 3.63000E+02 + 2.68000E+02 2.67000E+02 1.72000E+02 1.71000E+02 7.60000E+01 7.50000E+01 + 1.40800E+03 1.40700E+03 1.31200E+03 1.31100E+03 1.21600E+03 1.21500E+03 + 1.12000E+03 1.11900E+03 1.02400E+03 1.02300E+03 9.28000E+02 9.27000E+02 + 8.32000E+02 8.31000E+02 7.36000E+02 7.35000E+02 6.40000E+02 6.39000E+02 + 5.44000E+02 5.43000E+02 4.48000E+02 4.47000E+02 3.52000E+02 3.51000E+02 + 2.56000E+02 2.55000E+02 1.60000E+02 1.59000E+02 6.40000E+01 6.30000E+01 + 1.39600E+03 1.39500E+03 1.30000E+03 1.29900E+03 1.20400E+03 1.20300E+03 + 1.10800E+03 1.10700E+03 1.01200E+03 1.01100E+03 9.16000E+02 9.15000E+02 + 8.20000E+02 8.19000E+02 7.24000E+02 7.23000E+02 6.28000E+02 6.27000E+02 + 5.32000E+02 5.31000E+02 4.36000E+02 4.35000E+02 3.40000E+02 3.39000E+02 + 2.44000E+02 2.43000E+02 1.48000E+02 1.47000E+02 5.20000E+01 5.10000E+01 + 1.38400E+03 1.38300E+03 1.28800E+03 1.28700E+03 1.19200E+03 1.19100E+03 + 1.09600E+03 1.09500E+03 1.00000E+03 9.99000E+02 9.04000E+02 9.03000E+02 + 8.08000E+02 8.07000E+02 7.12000E+02 7.11000E+02 6.16000E+02 6.15000E+02 + 5.20000E+02 5.19000E+02 4.24000E+02 4.23000E+02 3.28000E+02 3.27000E+02 + 2.32000E+02 2.31000E+02 1.36000E+02 1.35000E+02 4.00000E+01 3.90000E+01 + 1.37200E+03 1.37100E+03 1.27600E+03 1.27500E+03 1.18000E+03 1.17900E+03 + 1.08400E+03 1.08300E+03 9.88000E+02 9.87000E+02 8.92000E+02 8.91000E+02 + 7.96000E+02 7.95000E+02 7.00000E+02 6.99000E+02 6.04000E+02 6.03000E+02 + 5.08000E+02 5.07000E+02 4.12000E+02 4.11000E+02 3.16000E+02 3.15000E+02 + 2.20000E+02 2.19000E+02 1.24000E+02 1.23000E+02 2.80000E+01 2.70000E+01 + 1.36000E+03 1.35900E+03 1.26400E+03 1.26300E+03 1.16800E+03 1.16700E+03 + 1.07200E+03 1.07100E+03 9.76000E+02 9.75000E+02 8.80000E+02 8.79000E+02 + 7.84000E+02 7.83000E+02 6.88000E+02 6.87000E+02 5.92000E+02 5.91000E+02 + 4.96000E+02 4.95000E+02 4.00000E+02 3.99000E+02 3.04000E+02 3.03000E+02 + 2.08000E+02 2.07000E+02 1.12000E+02 1.11000E+02 1.60000E+01 1.50000E+01 + 1.34800E+03 1.34700E+03 1.25200E+03 1.25100E+03 1.15600E+03 1.15500E+03 + 1.06000E+03 1.05900E+03 9.64000E+02 9.63000E+02 8.68000E+02 8.67000E+02 + 7.72000E+02 7.71000E+02 6.76000E+02 6.75000E+02 5.80000E+02 5.79000E+02 + 4.84000E+02 4.83000E+02 3.88000E+02 3.87000E+02 2.92000E+02 2.91000E+02 + 1.96000E+02 1.95000E+02 1.00000E+02 9.90000E+01 4.00000E+00 3.00000E+00 + 1.43000E+03 1.42900E+03 1.33400E+03 1.33300E+03 1.23800E+03 1.23700E+03 + 1.14200E+03 1.14100E+03 1.04600E+03 1.04500E+03 9.50000E+02 9.49000E+02 + 8.54000E+02 8.53000E+02 7.58000E+02 7.57000E+02 6.62000E+02 6.61000E+02 + 5.66000E+02 5.65000E+02 4.70000E+02 4.69000E+02 3.74000E+02 3.73000E+02 + 2.78000E+02 2.77000E+02 1.82000E+02 1.81000E+02 8.60000E+01 8.50000E+01 + 1.41800E+03 1.41700E+03 1.32200E+03 1.32100E+03 1.22600E+03 1.22500E+03 + 1.13000E+03 1.12900E+03 1.03400E+03 1.03300E+03 9.38000E+02 9.37000E+02 + 8.42000E+02 8.41000E+02 7.46000E+02 7.45000E+02 6.50000E+02 6.49000E+02 + 5.54000E+02 5.53000E+02 4.58000E+02 4.57000E+02 3.62000E+02 3.61000E+02 + 2.66000E+02 2.65000E+02 1.70000E+02 1.69000E+02 7.40000E+01 7.30000E+01 + 1.40600E+03 1.40500E+03 1.31000E+03 1.30900E+03 1.21400E+03 1.21300E+03 + 1.11800E+03 1.11700E+03 1.02200E+03 1.02100E+03 9.26000E+02 9.25000E+02 + 8.30000E+02 8.29000E+02 7.34000E+02 7.33000E+02 6.38000E+02 6.37000E+02 + 5.42000E+02 5.41000E+02 4.46000E+02 4.45000E+02 3.50000E+02 3.49000E+02 + 2.54000E+02 2.53000E+02 1.58000E+02 1.57000E+02 6.20000E+01 6.10000E+01 + 1.39400E+03 1.39300E+03 1.29800E+03 1.29700E+03 1.20200E+03 1.20100E+03 + 1.10600E+03 1.10500E+03 1.01000E+03 1.00900E+03 9.14000E+02 9.13000E+02 + 8.18000E+02 8.17000E+02 7.22000E+02 7.21000E+02 6.26000E+02 6.25000E+02 + 5.30000E+02 5.29000E+02 4.34000E+02 4.33000E+02 3.38000E+02 3.37000E+02 + 2.42000E+02 2.41000E+02 1.46000E+02 1.45000E+02 5.00000E+01 4.90000E+01 + 1.38200E+03 1.38100E+03 1.28600E+03 1.28500E+03 1.19000E+03 1.18900E+03 + 1.09400E+03 1.09300E+03 9.98000E+02 9.97000E+02 9.02000E+02 9.01000E+02 + 8.06000E+02 8.05000E+02 7.10000E+02 7.09000E+02 6.14000E+02 6.13000E+02 + 5.18000E+02 5.17000E+02 4.22000E+02 4.21000E+02 3.26000E+02 3.25000E+02 + 2.30000E+02 2.29000E+02 1.34000E+02 1.33000E+02 3.80000E+01 3.70000E+01 + 1.37000E+03 1.36900E+03 1.27400E+03 1.27300E+03 1.17800E+03 1.17700E+03 + 1.08200E+03 1.08100E+03 9.86000E+02 9.85000E+02 8.90000E+02 8.89000E+02 + 7.94000E+02 7.93000E+02 6.98000E+02 6.97000E+02 6.02000E+02 6.01000E+02 + 5.06000E+02 5.05000E+02 4.10000E+02 4.09000E+02 3.14000E+02 3.13000E+02 + 2.18000E+02 2.17000E+02 1.22000E+02 1.21000E+02 2.60000E+01 2.50000E+01 + 1.35800E+03 1.35700E+03 1.26200E+03 1.26100E+03 1.16600E+03 1.16500E+03 + 1.07000E+03 1.06900E+03 9.74000E+02 9.73000E+02 8.78000E+02 8.77000E+02 + 7.82000E+02 7.81000E+02 6.86000E+02 6.85000E+02 5.90000E+02 5.89000E+02 + 4.94000E+02 4.93000E+02 3.98000E+02 3.97000E+02 3.02000E+02 3.01000E+02 + 2.06000E+02 2.05000E+02 1.10000E+02 1.09000E+02 1.40000E+01 1.30000E+01 + 1.34600E+03 1.34500E+03 1.25000E+03 1.24900E+03 1.15400E+03 1.15300E+03 + 1.05800E+03 1.05700E+03 9.62000E+02 9.61000E+02 8.66000E+02 8.65000E+02 + 7.70000E+02 7.69000E+02 6.74000E+02 6.73000E+02 5.78000E+02 5.77000E+02 + 4.82000E+02 4.81000E+02 3.86000E+02 3.85000E+02 2.90000E+02 2.89000E+02 + 1.94000E+02 1.93000E+02 9.80000E+01 9.70000E+01 2.00000E+00 1.00000E+00 + diff --git a/tests/unit_tests/weightwindows/wwinp_np b/tests/unit_tests/weightwindows/wwinp_np new file mode 100644 index 0000000000..6d77afc3e5 --- /dev/null +++ b/tests/unit_tests/weightwindows/wwinp_np @@ -0,0 +1,48 @@ + 1 1 2 10 + 3 1 + 1.0 8.0 6.0 -1.00000E+02 -1.00000E+02 -1.00000E+02 + 1.0 8.0 6.0 1.0 + -1.00000E+02 1.00000E+00 1.00000E+02 1.00000E+00 + -1.00000E+02 1.00000E+00 -5.00000E+01 1.00000E+00 1.00000E+00 -1.33333E+01 + 1.00000E+00 1.00000E+00 2.33333E+01 1.00000E+00 1.00000E+00 6.00000E+01 + 1.00000E+00 1.00000E+00 7.00000E+01 1.00000E+00 1.00000E+00 8.00000E+01 + 1.00000E+00 1.00000E+00 9.00000E+01 1.00000E+00 1.00000E+00 1.00000E+02 + 1.00000E+00 + -1.00000E+02 1.00000E+00 -6.66667E+01 1.00000E+00 1.00000E+00 -3.33333E+01 + 1.00000E+00 1.00000E+00 0.00000E+00 1.00000E+00 1.00000E+00 3.33333E+01 + 1.00000E+00 1.00000E+00 6.66667E+01 1.00000E+00 1.00000E+00 1.00000E+02 + 1.00000E+00 + 1.00000E-01 1.46780E-01 2.15440E-01 + 1.44000E+02 1.43000E+02 1.42000E+02 1.26000E+02 1.25000E+02 1.24000E+02 + 1.08000E+02 1.07000E+02 1.06000E+02 9.00000E+01 8.90000E+01 8.80000E+01 + 7.20000E+01 7.10000E+01 7.00000E+01 5.40000E+01 5.30000E+01 5.20000E+01 + 3.60000E+01 3.50000E+01 3.40000E+01 1.80000E+01 1.70000E+01 1.60000E+01 + 1.41000E+02 1.40000E+02 1.39000E+02 1.23000E+02 1.22000E+02 1.21000E+02 + 1.05000E+02 1.04000E+02 1.03000E+02 8.70000E+01 8.60000E+01 8.50000E+01 + 6.90000E+01 6.80000E+01 6.70000E+01 5.10000E+01 5.00000E+01 4.90000E+01 + 3.30000E+01 3.20000E+01 3.10000E+01 1.50000E+01 1.40000E+01 1.30000E+01 + 1.38000E+02 1.37000E+02 1.36000E+02 1.20000E+02 1.19000E+02 1.18000E+02 + 1.02000E+02 1.01000E+02 1.00000E+02 8.40000E+01 8.30000E+01 8.20000E+01 + 6.60000E+01 6.50000E+01 6.40000E+01 4.80000E+01 4.70000E+01 4.60000E+01 + 3.00000E+01 2.90000E+01 2.80000E+01 1.20000E+01 1.10000E+01 1.00000E+01 + 1.35000E+02 1.34000E+02 1.33000E+02 1.17000E+02 1.16000E+02 1.15000E+02 + 9.90000E+01 9.80000E+01 9.70000E+01 8.10000E+01 8.00000E+01 7.90000E+01 + 6.30000E+01 6.20000E+01 6.10000E+01 4.50000E+01 4.40000E+01 4.30000E+01 + 2.70000E+01 2.60000E+01 2.50000E+01 9.00000E+00 8.00000E+00 7.00000E+00 + 1.32000E+02 1.31000E+02 1.30000E+02 1.14000E+02 1.13000E+02 1.12000E+02 + 9.60000E+01 9.50000E+01 9.40000E+01 7.80000E+01 7.70000E+01 7.60000E+01 + 6.00000E+01 5.90000E+01 5.80000E+01 4.20000E+01 4.10000E+01 4.00000E+01 + 2.40000E+01 2.30000E+01 2.20000E+01 6.00000E+00 5.00000E+00 4.00000E+00 + 1.29000E+02 1.28000E+02 1.27000E+02 1.11000E+02 1.10000E+02 1.09000E+02 + 9.30000E+01 9.20000E+01 9.10000E+01 7.50000E+01 7.40000E+01 7.30000E+01 + 5.70000E+01 5.60000E+01 5.50000E+01 3.90000E+01 3.80000E+01 3.70000E+01 + 2.10000E+01 2.00000E+01 1.90000E+01 3.00000E+00 2.00000E+00 1.00000E+00 + 1.00000E+02 + 4.80000E+01 4.20000E+01 3.60000E+01 3.00000E+01 2.40000E+01 1.80000E+01 + 1.20000E+01 6.00000E+00 4.70000E+01 4.10000E+01 3.50000E+01 2.90000E+01 + 2.30000E+01 1.70000E+01 1.10000E+01 5.00000E+00 4.60000E+01 4.00000E+01 + 3.40000E+01 2.80000E+01 2.20000E+01 1.60000E+01 1.00000E+01 4.00000E+00 + 4.50000E+01 3.90000E+01 3.30000E+01 2.70000E+01 2.10000E+01 1.50000E+01 + 9.00000E+00 3.00000E+00 4.40000E+01 3.80000E+01 3.20000E+01 2.60000E+01 + 2.00000E+01 1.40000E+01 8.00000E+00 2.00000E+00 4.30000E+01 3.70000E+01 + 3.10000E+01 2.50000E+01 1.90000E+01 1.30000E+01 7.00000E+00 1.00000E+00 diff --git a/tests/unit_tests/weightwindows/wwinp_p b/tests/unit_tests/weightwindows/wwinp_p new file mode 100644 index 0000000000..95315692f3 --- /dev/null +++ b/tests/unit_tests/weightwindows/wwinp_p @@ -0,0 +1,48 @@ + 1 1 2 10 + 0 4 + 6.0 8.0 1.0 -1.00000E+02 -1.00000E+02 -5.00000E+01 + 6.0 8.0 1.0 1.0 + -1.00000E+02 1.00000E+00 -6.66667E+01 1.00000E+00 1.00000E+00 -3.33333E+01 + 1.00000E+00 1.00000E+00 0.00000E+00 1.00000E+00 1.00000E+00 3.33333E+01 + 1.00000E+00 1.00000E+00 6.66667E+01 1.00000E+00 1.00000E+00 1.00000E+02 + 1.00000E+00 + -1.00000E+02 1.00000E+00 -5.00000E+01 1.00000E+00 1.00000E+00 -1.33333E+01 + 1.00000E+00 1.00000E+00 2.33333E+01 1.00000E+00 1.00000E+00 6.00000E+01 + 1.00000E+00 1.00000E+00 7.00000E+01 1.00000E+00 1.00000E+00 8.00000E+01 + 1.00000E+00 1.00000E+00 9.00000E+01 1.00000E+00 1.00000E+00 1.00000E+02 + 1.00000E+00 + -5.00000E+01 1.00000E+00 5.00000E+01 1.00000E+00 + 1.00000E-01 1.46780E-01 2.15440E-01 3.16230E-01 + 1.92000E+02 1.91000E+02 1.90000E+02 1.89000E+02 1.60000E+02 1.59000E+02 + 1.58000E+02 1.57000E+02 1.28000E+02 1.27000E+02 1.26000E+02 1.25000E+02 + 9.60000E+01 9.50000E+01 9.40000E+01 9.30000E+01 6.40000E+01 6.30000E+01 + 6.20000E+01 6.10000E+01 3.20000E+01 3.10000E+01 3.00000E+01 2.90000E+01 + 1.88000E+02 1.87000E+02 1.86000E+02 1.85000E+02 1.56000E+02 1.55000E+02 + 1.54000E+02 1.53000E+02 1.24000E+02 1.23000E+02 1.22000E+02 1.21000E+02 + 9.20000E+01 9.10000E+01 9.00000E+01 8.90000E+01 6.00000E+01 5.90000E+01 + 5.80000E+01 5.70000E+01 2.80000E+01 2.70000E+01 2.60000E+01 2.50000E+01 + 1.84000E+02 1.83000E+02 1.82000E+02 1.81000E+02 1.52000E+02 1.51000E+02 + 1.50000E+02 1.49000E+02 1.20000E+02 1.19000E+02 1.18000E+02 1.17000E+02 + 8.80000E+01 8.70000E+01 8.60000E+01 8.50000E+01 5.60000E+01 5.50000E+01 + 5.40000E+01 5.30000E+01 2.40000E+01 2.30000E+01 2.20000E+01 2.10000E+01 + 1.80000E+02 1.79000E+02 1.78000E+02 1.77000E+02 1.48000E+02 1.47000E+02 + 1.46000E+02 1.45000E+02 1.16000E+02 1.15000E+02 1.14000E+02 1.13000E+02 + 8.40000E+01 8.30000E+01 8.20000E+01 8.10000E+01 5.20000E+01 5.10000E+01 + 5.00000E+01 4.90000E+01 2.00000E+01 1.90000E+01 1.80000E+01 1.70000E+01 + 1.76000E+02 1.75000E+02 1.74000E+02 1.73000E+02 1.44000E+02 1.43000E+02 + 1.42000E+02 1.41000E+02 1.12000E+02 1.11000E+02 1.10000E+02 1.09000E+02 + 8.00000E+01 7.90000E+01 7.80000E+01 7.70000E+01 4.80000E+01 4.70000E+01 + 4.60000E+01 4.50000E+01 1.60000E+01 1.50000E+01 1.40000E+01 1.30000E+01 + 1.72000E+02 1.71000E+02 1.70000E+02 1.69000E+02 1.40000E+02 1.39000E+02 + 1.38000E+02 1.37000E+02 1.08000E+02 1.07000E+02 1.06000E+02 1.05000E+02 + 7.60000E+01 7.50000E+01 7.40000E+01 7.30000E+01 4.40000E+01 4.30000E+01 + 4.20000E+01 4.10000E+01 1.20000E+01 1.10000E+01 1.00000E+01 9.00000E+00 + 1.68000E+02 1.67000E+02 1.66000E+02 1.65000E+02 1.36000E+02 1.35000E+02 + 1.34000E+02 1.33000E+02 1.04000E+02 1.03000E+02 1.02000E+02 1.01000E+02 + 7.20000E+01 7.10000E+01 7.00000E+01 6.90000E+01 4.00000E+01 3.90000E+01 + 3.80000E+01 3.70000E+01 8.00000E+00 7.00000E+00 6.00000E+00 5.00000E+00 + 1.64000E+02 1.63000E+02 1.62000E+02 1.61000E+02 1.32000E+02 1.31000E+02 + 1.30000E+02 1.29000E+02 1.00000E+02 9.90000E+01 9.80000E+01 9.70000E+01 + 6.80000E+01 6.70000E+01 6.60000E+01 6.50000E+01 3.60000E+01 3.50000E+01 + 3.40000E+01 3.30000E+01 4.00000E+00 3.00000E+00 2.00000E+00 1.00000E+00 +