diff --git a/tests/test_score_flux_yn/geometry.xml b/tests/test_score_flux_yn/geometry.xml
new file mode 100644
index 0000000000..2407bf74b3
--- /dev/null
+++ b/tests/test_score_flux_yn/geometry.xml
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+
+
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+
+
+
+
\ No newline at end of file
diff --git a/tests/test_score_flux_yn/materials.xml b/tests/test_score_flux_yn/materials.xml
new file mode 100644
index 0000000000..9c0b74f3f1
--- /dev/null
+++ b/tests/test_score_flux_yn/materials.xml
@@ -0,0 +1,272 @@
+
+
+
+ 71c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_score_flux_yn/results.py b/tests/test_score_flux_yn/results.py
new file mode 100644
index 0000000000..f4c32a893f
--- /dev/null
+++ b/tests/test_score_flux_yn/results.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+import sys
+import numpy as np
+
+# import statepoint
+sys.path.append('../../src/utils')
+import statepoint
+
+# read in statepoint file
+if len(sys.argv) > 1:
+ sp = statepoint.StatePoint(sys.argv[1])
+else:
+ sp = statepoint.StatePoint('statepoint.10.binary')
+sp.read_results()
+
+# extract tally results and convert to vector
+results1 = sp.tallies[0].results
+shape1 = results1.shape
+size1 = (np.product(shape1))
+results1 = np.reshape(results1, size1)
+results2 = sp.tallies[1].results
+shape2 = results2.shape
+size2 = (np.product(shape2))
+results2 = np.reshape(results2, size2)
+
+# set up output string
+outstr = ''
+
+# write out k-combined
+outstr += 'k-combined:\n'
+outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1])
+
+# write out tally results
+outstr += 'tally 1:\n'
+for item in results1:
+ outstr += "{0:12.6E}\n".format(item)
+outstr += 'tally 2:\n'
+for item in results2:
+ outstr += "{0:12.6E}\n".format(item)
+
+# write results to file
+with open('results_test.dat','w') as fh:
+ fh.write(outstr)
diff --git a/tests/test_score_flux_yn/settings.xml b/tests/test_score_flux_yn/settings.xml
new file mode 100644
index 0000000000..517637a59f
--- /dev/null
+++ b/tests/test_score_flux_yn/settings.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ 10
+ 5
+ 100
+
+
+
+
+
+ -160 -160 -183
+ 160 160 183
+
+
+
+
+
diff --git a/tests/test_score_flux_yn/tallies.xml b/tests/test_score_flux_yn/tallies.xml
new file mode 100644
index 0000000000..71301d0e7f
--- /dev/null
+++ b/tests/test_score_flux_yn/tallies.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ flux
+
+
+
+
+ flux-y5
+
+
+
diff --git a/tests/test_score_flux_yn/test_score_flux_yn.py b/tests/test_score_flux_yn/test_score_flux_yn.py
new file mode 100644
index 0000000000..6e54389fc1
--- /dev/null
+++ b/tests/test_score_flux_yn/test_score_flux_yn.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import os
+from subprocess import Popen, STDOUT, PIPE, call
+import filecmp
+import glob
+from optparse import OptionParser
+
+parser = OptionParser()
+parser.add_option('--mpi_exec', dest='mpi_exec', default='')
+parser.add_option('--mpi_np', dest='mpi_np', default='3')
+parser.add_option('--exe', dest='exe')
+(opts, args) = parser.parse_args()
+cwd = os.getcwd()
+
+def test_run():
+ if opts.mpi_exec != '':
+ proc = Popen([opts.mpi_exec, '-np', opts.mpi_np, opts.exe, cwd],
+ stderr=STDOUT, stdout=PIPE)
+ else:
+ proc = Popen([opts.exe, cwd], stderr=STDOUT, stdout=PIPE)
+ print(proc.communicate()[0])
+ returncode = proc.returncode
+ assert returncode == 0, 'OpenMC did not exit successfully.'
+
+def test_created_statepoint():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ assert len(statepoint) == 1, 'Either multiple or no statepoint files exist.'
+ assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5'),\
+ 'Statepoint file is not a binary or hdf5 file.'
+
+def test_output_exists():
+ assert os.path.exists(os.path.join(cwd, 'tallies.out')), 'Tally output file does not exist.'
+
+def test_results():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ call(['python', 'results.py', statepoint[0]])
+ compare = filecmp.cmp('results_test.dat', 'results_true.dat')
+ if not compare:
+ os.rename('results_test.dat', 'results_error.dat')
+ assert compare, 'Results do not agree.'
+
+def teardown():
+ output = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ output.append(os.path.join(cwd, 'tallies.out'))
+ output.append(os.path.join(cwd, 'results_test.dat'))
+ for f in output:
+ if os.path.exists(f):
+ os.remove(f)
+
+if __name__ == '__main__':
+
+ # test for openmc executable
+ if opts.exe is None:
+ raise Exception('Must specify OpenMC executable from command line with --exe.')
+
+ # run tests
+ test_run()
+ test_created_statepoint()
+ test_output_exists()
+ test_results()
+ teardown()
diff --git a/tests/test_score_nuscatter_n/geometry.xml b/tests/test_score_nuscatter_n/geometry.xml
new file mode 100644
index 0000000000..2407bf74b3
--- /dev/null
+++ b/tests/test_score_nuscatter_n/geometry.xml
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+
+
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+
+
+
+
\ No newline at end of file
diff --git a/tests/test_score_nuscatter_n/materials.xml b/tests/test_score_nuscatter_n/materials.xml
new file mode 100644
index 0000000000..9c0b74f3f1
--- /dev/null
+++ b/tests/test_score_nuscatter_n/materials.xml
@@ -0,0 +1,272 @@
+
+
+
+ 71c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_score_nuscatter_n/results.py b/tests/test_score_nuscatter_n/results.py
new file mode 100644
index 0000000000..93371960ae
--- /dev/null
+++ b/tests/test_score_nuscatter_n/results.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+import sys
+import numpy as np
+
+# import statepoint
+sys.path.append('../../src/utils')
+import statepoint
+
+# read in statepoint file
+if len(sys.argv) > 1:
+ sp = statepoint.StatePoint(sys.argv[1])
+else:
+ sp = statepoint.StatePoint('statepoint.10.binary')
+sp.read_results()
+
+# extract tally results and convert to vector
+results = sp.tallies[0].results
+shape = results.shape
+size = (np.product(shape))
+results = np.reshape(results, size)
+
+# set up output string
+outstr = ''
+
+# write out k-combined
+outstr += 'k-combined:\n'
+outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1])
+
+# write out tally results
+outstr += 'tallies:\n'
+for item in results:
+ outstr += "{0:12.6E}\n".format(item)
+
+# write results to file
+with open('results_test.dat','w') as fh:
+ fh.write(outstr)
diff --git a/tests/test_score_nuscatter_n/settings.xml b/tests/test_score_nuscatter_n/settings.xml
new file mode 100644
index 0000000000..517637a59f
--- /dev/null
+++ b/tests/test_score_nuscatter_n/settings.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ 10
+ 5
+ 100
+
+
+
+
+
+ -160 -160 -183
+ 160 160 183
+
+
+
+
+
diff --git a/tests/test_score_nuscatter_n/tallies.xml b/tests/test_score_nuscatter_n/tallies.xml
new file mode 100644
index 0000000000..b962a81cc1
--- /dev/null
+++ b/tests/test_score_nuscatter_n/tallies.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ nuscatter nuscatter-1 nuscatter-2 nuscatter-3 nuscatter-4
+
+
+
diff --git a/tests/test_score_nuscatter_n/test_score_nuscatter_n.py b/tests/test_score_nuscatter_n/test_score_nuscatter_n.py
new file mode 100644
index 0000000000..6e54389fc1
--- /dev/null
+++ b/tests/test_score_nuscatter_n/test_score_nuscatter_n.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import os
+from subprocess import Popen, STDOUT, PIPE, call
+import filecmp
+import glob
+from optparse import OptionParser
+
+parser = OptionParser()
+parser.add_option('--mpi_exec', dest='mpi_exec', default='')
+parser.add_option('--mpi_np', dest='mpi_np', default='3')
+parser.add_option('--exe', dest='exe')
+(opts, args) = parser.parse_args()
+cwd = os.getcwd()
+
+def test_run():
+ if opts.mpi_exec != '':
+ proc = Popen([opts.mpi_exec, '-np', opts.mpi_np, opts.exe, cwd],
+ stderr=STDOUT, stdout=PIPE)
+ else:
+ proc = Popen([opts.exe, cwd], stderr=STDOUT, stdout=PIPE)
+ print(proc.communicate()[0])
+ returncode = proc.returncode
+ assert returncode == 0, 'OpenMC did not exit successfully.'
+
+def test_created_statepoint():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ assert len(statepoint) == 1, 'Either multiple or no statepoint files exist.'
+ assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5'),\
+ 'Statepoint file is not a binary or hdf5 file.'
+
+def test_output_exists():
+ assert os.path.exists(os.path.join(cwd, 'tallies.out')), 'Tally output file does not exist.'
+
+def test_results():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ call(['python', 'results.py', statepoint[0]])
+ compare = filecmp.cmp('results_test.dat', 'results_true.dat')
+ if not compare:
+ os.rename('results_test.dat', 'results_error.dat')
+ assert compare, 'Results do not agree.'
+
+def teardown():
+ output = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ output.append(os.path.join(cwd, 'tallies.out'))
+ output.append(os.path.join(cwd, 'results_test.dat'))
+ for f in output:
+ if os.path.exists(f):
+ os.remove(f)
+
+if __name__ == '__main__':
+
+ # test for openmc executable
+ if opts.exe is None:
+ raise Exception('Must specify OpenMC executable from command line with --exe.')
+
+ # run tests
+ test_run()
+ test_created_statepoint()
+ test_output_exists()
+ test_results()
+ teardown()
diff --git a/tests/test_score_nuscatter_pn/geometry.xml b/tests/test_score_nuscatter_pn/geometry.xml
new file mode 100644
index 0000000000..2407bf74b3
--- /dev/null
+++ b/tests/test_score_nuscatter_pn/geometry.xml
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+
+
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+
+
+
+
\ No newline at end of file
diff --git a/tests/test_score_nuscatter_pn/materials.xml b/tests/test_score_nuscatter_pn/materials.xml
new file mode 100644
index 0000000000..9c0b74f3f1
--- /dev/null
+++ b/tests/test_score_nuscatter_pn/materials.xml
@@ -0,0 +1,272 @@
+
+
+
+ 71c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_score_nuscatter_pn/results.py b/tests/test_score_nuscatter_pn/results.py
new file mode 100644
index 0000000000..f4c32a893f
--- /dev/null
+++ b/tests/test_score_nuscatter_pn/results.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+import sys
+import numpy as np
+
+# import statepoint
+sys.path.append('../../src/utils')
+import statepoint
+
+# read in statepoint file
+if len(sys.argv) > 1:
+ sp = statepoint.StatePoint(sys.argv[1])
+else:
+ sp = statepoint.StatePoint('statepoint.10.binary')
+sp.read_results()
+
+# extract tally results and convert to vector
+results1 = sp.tallies[0].results
+shape1 = results1.shape
+size1 = (np.product(shape1))
+results1 = np.reshape(results1, size1)
+results2 = sp.tallies[1].results
+shape2 = results2.shape
+size2 = (np.product(shape2))
+results2 = np.reshape(results2, size2)
+
+# set up output string
+outstr = ''
+
+# write out k-combined
+outstr += 'k-combined:\n'
+outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1])
+
+# write out tally results
+outstr += 'tally 1:\n'
+for item in results1:
+ outstr += "{0:12.6E}\n".format(item)
+outstr += 'tally 2:\n'
+for item in results2:
+ outstr += "{0:12.6E}\n".format(item)
+
+# write results to file
+with open('results_test.dat','w') as fh:
+ fh.write(outstr)
diff --git a/tests/test_score_nuscatter_pn/settings.xml b/tests/test_score_nuscatter_pn/settings.xml
new file mode 100644
index 0000000000..517637a59f
--- /dev/null
+++ b/tests/test_score_nuscatter_pn/settings.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ 10
+ 5
+ 100
+
+
+
+
+
+ -160 -160 -183
+ 160 160 183
+
+
+
+
+
diff --git a/tests/test_score_nuscatter_pn/tallies.xml b/tests/test_score_nuscatter_pn/tallies.xml
new file mode 100644
index 0000000000..9914c7aa4b
--- /dev/null
+++ b/tests/test_score_nuscatter_pn/tallies.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ nuscatter-0 nuscatter-1 nuscatter-2 nuscatter-3 nuscatter-4
+
+
+
+
+ nuscatter-p4
+
+
+
diff --git a/tests/test_score_nuscatter_pn/test_score_nuscatter_pn.py b/tests/test_score_nuscatter_pn/test_score_nuscatter_pn.py
new file mode 100644
index 0000000000..6e54389fc1
--- /dev/null
+++ b/tests/test_score_nuscatter_pn/test_score_nuscatter_pn.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import os
+from subprocess import Popen, STDOUT, PIPE, call
+import filecmp
+import glob
+from optparse import OptionParser
+
+parser = OptionParser()
+parser.add_option('--mpi_exec', dest='mpi_exec', default='')
+parser.add_option('--mpi_np', dest='mpi_np', default='3')
+parser.add_option('--exe', dest='exe')
+(opts, args) = parser.parse_args()
+cwd = os.getcwd()
+
+def test_run():
+ if opts.mpi_exec != '':
+ proc = Popen([opts.mpi_exec, '-np', opts.mpi_np, opts.exe, cwd],
+ stderr=STDOUT, stdout=PIPE)
+ else:
+ proc = Popen([opts.exe, cwd], stderr=STDOUT, stdout=PIPE)
+ print(proc.communicate()[0])
+ returncode = proc.returncode
+ assert returncode == 0, 'OpenMC did not exit successfully.'
+
+def test_created_statepoint():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ assert len(statepoint) == 1, 'Either multiple or no statepoint files exist.'
+ assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5'),\
+ 'Statepoint file is not a binary or hdf5 file.'
+
+def test_output_exists():
+ assert os.path.exists(os.path.join(cwd, 'tallies.out')), 'Tally output file does not exist.'
+
+def test_results():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ call(['python', 'results.py', statepoint[0]])
+ compare = filecmp.cmp('results_test.dat', 'results_true.dat')
+ if not compare:
+ os.rename('results_test.dat', 'results_error.dat')
+ assert compare, 'Results do not agree.'
+
+def teardown():
+ output = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ output.append(os.path.join(cwd, 'tallies.out'))
+ output.append(os.path.join(cwd, 'results_test.dat'))
+ for f in output:
+ if os.path.exists(f):
+ os.remove(f)
+
+if __name__ == '__main__':
+
+ # test for openmc executable
+ if opts.exe is None:
+ raise Exception('Must specify OpenMC executable from command line with --exe.')
+
+ # run tests
+ test_run()
+ test_created_statepoint()
+ test_output_exists()
+ test_results()
+ teardown()
diff --git a/tests/test_score_nuscatter_yn/geometry.xml b/tests/test_score_nuscatter_yn/geometry.xml
new file mode 100644
index 0000000000..2407bf74b3
--- /dev/null
+++ b/tests/test_score_nuscatter_yn/geometry.xml
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+
+
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+
+
+
+
\ No newline at end of file
diff --git a/tests/test_score_nuscatter_yn/materials.xml b/tests/test_score_nuscatter_yn/materials.xml
new file mode 100644
index 0000000000..9c0b74f3f1
--- /dev/null
+++ b/tests/test_score_nuscatter_yn/materials.xml
@@ -0,0 +1,272 @@
+
+
+
+ 71c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_score_nuscatter_yn/results.py b/tests/test_score_nuscatter_yn/results.py
new file mode 100644
index 0000000000..f4c32a893f
--- /dev/null
+++ b/tests/test_score_nuscatter_yn/results.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+import sys
+import numpy as np
+
+# import statepoint
+sys.path.append('../../src/utils')
+import statepoint
+
+# read in statepoint file
+if len(sys.argv) > 1:
+ sp = statepoint.StatePoint(sys.argv[1])
+else:
+ sp = statepoint.StatePoint('statepoint.10.binary')
+sp.read_results()
+
+# extract tally results and convert to vector
+results1 = sp.tallies[0].results
+shape1 = results1.shape
+size1 = (np.product(shape1))
+results1 = np.reshape(results1, size1)
+results2 = sp.tallies[1].results
+shape2 = results2.shape
+size2 = (np.product(shape2))
+results2 = np.reshape(results2, size2)
+
+# set up output string
+outstr = ''
+
+# write out k-combined
+outstr += 'k-combined:\n'
+outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1])
+
+# write out tally results
+outstr += 'tally 1:\n'
+for item in results1:
+ outstr += "{0:12.6E}\n".format(item)
+outstr += 'tally 2:\n'
+for item in results2:
+ outstr += "{0:12.6E}\n".format(item)
+
+# write results to file
+with open('results_test.dat','w') as fh:
+ fh.write(outstr)
diff --git a/tests/test_score_nuscatter_yn/settings.xml b/tests/test_score_nuscatter_yn/settings.xml
new file mode 100644
index 0000000000..517637a59f
--- /dev/null
+++ b/tests/test_score_nuscatter_yn/settings.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ 10
+ 5
+ 100
+
+
+
+
+
+ -160 -160 -183
+ 160 160 183
+
+
+
+
+
diff --git a/tests/test_score_nuscatter_yn/tallies.xml b/tests/test_score_nuscatter_yn/tallies.xml
new file mode 100644
index 0000000000..b9f977f091
--- /dev/null
+++ b/tests/test_score_nuscatter_yn/tallies.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ nuscatter-0
+
+
+
+
+ nuscatter-y4
+
+
+
diff --git a/tests/test_score_nuscatter_yn/test_score_nuscatter_yn.py b/tests/test_score_nuscatter_yn/test_score_nuscatter_yn.py
new file mode 100644
index 0000000000..6e54389fc1
--- /dev/null
+++ b/tests/test_score_nuscatter_yn/test_score_nuscatter_yn.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import os
+from subprocess import Popen, STDOUT, PIPE, call
+import filecmp
+import glob
+from optparse import OptionParser
+
+parser = OptionParser()
+parser.add_option('--mpi_exec', dest='mpi_exec', default='')
+parser.add_option('--mpi_np', dest='mpi_np', default='3')
+parser.add_option('--exe', dest='exe')
+(opts, args) = parser.parse_args()
+cwd = os.getcwd()
+
+def test_run():
+ if opts.mpi_exec != '':
+ proc = Popen([opts.mpi_exec, '-np', opts.mpi_np, opts.exe, cwd],
+ stderr=STDOUT, stdout=PIPE)
+ else:
+ proc = Popen([opts.exe, cwd], stderr=STDOUT, stdout=PIPE)
+ print(proc.communicate()[0])
+ returncode = proc.returncode
+ assert returncode == 0, 'OpenMC did not exit successfully.'
+
+def test_created_statepoint():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ assert len(statepoint) == 1, 'Either multiple or no statepoint files exist.'
+ assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5'),\
+ 'Statepoint file is not a binary or hdf5 file.'
+
+def test_output_exists():
+ assert os.path.exists(os.path.join(cwd, 'tallies.out')), 'Tally output file does not exist.'
+
+def test_results():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ call(['python', 'results.py', statepoint[0]])
+ compare = filecmp.cmp('results_test.dat', 'results_true.dat')
+ if not compare:
+ os.rename('results_test.dat', 'results_error.dat')
+ assert compare, 'Results do not agree.'
+
+def teardown():
+ output = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ output.append(os.path.join(cwd, 'tallies.out'))
+ output.append(os.path.join(cwd, 'results_test.dat'))
+ for f in output:
+ if os.path.exists(f):
+ os.remove(f)
+
+if __name__ == '__main__':
+
+ # test for openmc executable
+ if opts.exe is None:
+ raise Exception('Must specify OpenMC executable from command line with --exe.')
+
+ # run tests
+ test_run()
+ test_created_statepoint()
+ test_output_exists()
+ test_results()
+ teardown()
diff --git a/tests/test_score_scatter_yn/geometry.xml b/tests/test_score_scatter_yn/geometry.xml
new file mode 100644
index 0000000000..2407bf74b3
--- /dev/null
+++ b/tests/test_score_scatter_yn/geometry.xml
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+
+
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+
+
+
+
\ No newline at end of file
diff --git a/tests/test_score_scatter_yn/materials.xml b/tests/test_score_scatter_yn/materials.xml
new file mode 100644
index 0000000000..9c0b74f3f1
--- /dev/null
+++ b/tests/test_score_scatter_yn/materials.xml
@@ -0,0 +1,272 @@
+
+
+
+ 71c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_score_scatter_yn/results.py b/tests/test_score_scatter_yn/results.py
new file mode 100644
index 0000000000..f4c32a893f
--- /dev/null
+++ b/tests/test_score_scatter_yn/results.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+import sys
+import numpy as np
+
+# import statepoint
+sys.path.append('../../src/utils')
+import statepoint
+
+# read in statepoint file
+if len(sys.argv) > 1:
+ sp = statepoint.StatePoint(sys.argv[1])
+else:
+ sp = statepoint.StatePoint('statepoint.10.binary')
+sp.read_results()
+
+# extract tally results and convert to vector
+results1 = sp.tallies[0].results
+shape1 = results1.shape
+size1 = (np.product(shape1))
+results1 = np.reshape(results1, size1)
+results2 = sp.tallies[1].results
+shape2 = results2.shape
+size2 = (np.product(shape2))
+results2 = np.reshape(results2, size2)
+
+# set up output string
+outstr = ''
+
+# write out k-combined
+outstr += 'k-combined:\n'
+outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1])
+
+# write out tally results
+outstr += 'tally 1:\n'
+for item in results1:
+ outstr += "{0:12.6E}\n".format(item)
+outstr += 'tally 2:\n'
+for item in results2:
+ outstr += "{0:12.6E}\n".format(item)
+
+# write results to file
+with open('results_test.dat','w') as fh:
+ fh.write(outstr)
diff --git a/tests/test_score_scatter_yn/settings.xml b/tests/test_score_scatter_yn/settings.xml
new file mode 100644
index 0000000000..517637a59f
--- /dev/null
+++ b/tests/test_score_scatter_yn/settings.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ 10
+ 5
+ 100
+
+
+
+
+
+ -160 -160 -183
+ 160 160 183
+
+
+
+
+
diff --git a/tests/test_score_scatter_yn/tallies.xml b/tests/test_score_scatter_yn/tallies.xml
new file mode 100644
index 0000000000..41d61e9503
--- /dev/null
+++ b/tests/test_score_scatter_yn/tallies.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ scatter-0
+
+
+
+
+ scatter-y4
+
+
+
diff --git a/tests/test_score_scatter_yn/test_score_scatter_yn.py b/tests/test_score_scatter_yn/test_score_scatter_yn.py
new file mode 100644
index 0000000000..6e54389fc1
--- /dev/null
+++ b/tests/test_score_scatter_yn/test_score_scatter_yn.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import os
+from subprocess import Popen, STDOUT, PIPE, call
+import filecmp
+import glob
+from optparse import OptionParser
+
+parser = OptionParser()
+parser.add_option('--mpi_exec', dest='mpi_exec', default='')
+parser.add_option('--mpi_np', dest='mpi_np', default='3')
+parser.add_option('--exe', dest='exe')
+(opts, args) = parser.parse_args()
+cwd = os.getcwd()
+
+def test_run():
+ if opts.mpi_exec != '':
+ proc = Popen([opts.mpi_exec, '-np', opts.mpi_np, opts.exe, cwd],
+ stderr=STDOUT, stdout=PIPE)
+ else:
+ proc = Popen([opts.exe, cwd], stderr=STDOUT, stdout=PIPE)
+ print(proc.communicate()[0])
+ returncode = proc.returncode
+ assert returncode == 0, 'OpenMC did not exit successfully.'
+
+def test_created_statepoint():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ assert len(statepoint) == 1, 'Either multiple or no statepoint files exist.'
+ assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5'),\
+ 'Statepoint file is not a binary or hdf5 file.'
+
+def test_output_exists():
+ assert os.path.exists(os.path.join(cwd, 'tallies.out')), 'Tally output file does not exist.'
+
+def test_results():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ call(['python', 'results.py', statepoint[0]])
+ compare = filecmp.cmp('results_test.dat', 'results_true.dat')
+ if not compare:
+ os.rename('results_test.dat', 'results_error.dat')
+ assert compare, 'Results do not agree.'
+
+def teardown():
+ output = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ output.append(os.path.join(cwd, 'tallies.out'))
+ output.append(os.path.join(cwd, 'results_test.dat'))
+ for f in output:
+ if os.path.exists(f):
+ os.remove(f)
+
+if __name__ == '__main__':
+
+ # test for openmc executable
+ if opts.exe is None:
+ raise Exception('Must specify OpenMC executable from command line with --exe.')
+
+ # run tests
+ test_run()
+ test_created_statepoint()
+ test_output_exists()
+ test_results()
+ teardown()
diff --git a/tests/test_score_total_yn/geometry.xml b/tests/test_score_total_yn/geometry.xml
new file mode 100644
index 0000000000..2407bf74b3
--- /dev/null
+++ b/tests/test_score_total_yn/geometry.xml
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
+ 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+
+
+
+
+
+ rectangular
+ 17 17
+ -10.71 -10.71
+ 1.26 1.26
+
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3
+ 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5
+ 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5
+ 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5
+ 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+
+
+
+
+
+ rectangular
+ 21 21
+ -224.91 -224.91
+ 21.42 21.42
+
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7
+ 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7
+ 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7
+ 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+
+
+
+
\ No newline at end of file
diff --git a/tests/test_score_total_yn/materials.xml b/tests/test_score_total_yn/materials.xml
new file mode 100644
index 0000000000..9c0b74f3f1
--- /dev/null
+++ b/tests/test_score_total_yn/materials.xml
@@ -0,0 +1,272 @@
+
+
+
+ 71c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_score_total_yn/results.py b/tests/test_score_total_yn/results.py
new file mode 100644
index 0000000000..f4c32a893f
--- /dev/null
+++ b/tests/test_score_total_yn/results.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+import sys
+import numpy as np
+
+# import statepoint
+sys.path.append('../../src/utils')
+import statepoint
+
+# read in statepoint file
+if len(sys.argv) > 1:
+ sp = statepoint.StatePoint(sys.argv[1])
+else:
+ sp = statepoint.StatePoint('statepoint.10.binary')
+sp.read_results()
+
+# extract tally results and convert to vector
+results1 = sp.tallies[0].results
+shape1 = results1.shape
+size1 = (np.product(shape1))
+results1 = np.reshape(results1, size1)
+results2 = sp.tallies[1].results
+shape2 = results2.shape
+size2 = (np.product(shape2))
+results2 = np.reshape(results2, size2)
+
+# set up output string
+outstr = ''
+
+# write out k-combined
+outstr += 'k-combined:\n'
+outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1])
+
+# write out tally results
+outstr += 'tally 1:\n'
+for item in results1:
+ outstr += "{0:12.6E}\n".format(item)
+outstr += 'tally 2:\n'
+for item in results2:
+ outstr += "{0:12.6E}\n".format(item)
+
+# write results to file
+with open('results_test.dat','w') as fh:
+ fh.write(outstr)
diff --git a/tests/test_score_total_yn/settings.xml b/tests/test_score_total_yn/settings.xml
new file mode 100644
index 0000000000..517637a59f
--- /dev/null
+++ b/tests/test_score_total_yn/settings.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ 10
+ 5
+ 100
+
+
+
+
+
+ -160 -160 -183
+ 160 160 183
+
+
+
+
+
diff --git a/tests/test_score_total_yn/tallies.xml b/tests/test_score_total_yn/tallies.xml
new file mode 100644
index 0000000000..df6de1c134
--- /dev/null
+++ b/tests/test_score_total_yn/tallies.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ total
+
+
+
+
+ total-y4
+
+
+
diff --git a/tests/test_score_total_yn/test_score_total_yn.py b/tests/test_score_total_yn/test_score_total_yn.py
new file mode 100644
index 0000000000..6e54389fc1
--- /dev/null
+++ b/tests/test_score_total_yn/test_score_total_yn.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import os
+from subprocess import Popen, STDOUT, PIPE, call
+import filecmp
+import glob
+from optparse import OptionParser
+
+parser = OptionParser()
+parser.add_option('--mpi_exec', dest='mpi_exec', default='')
+parser.add_option('--mpi_np', dest='mpi_np', default='3')
+parser.add_option('--exe', dest='exe')
+(opts, args) = parser.parse_args()
+cwd = os.getcwd()
+
+def test_run():
+ if opts.mpi_exec != '':
+ proc = Popen([opts.mpi_exec, '-np', opts.mpi_np, opts.exe, cwd],
+ stderr=STDOUT, stdout=PIPE)
+ else:
+ proc = Popen([opts.exe, cwd], stderr=STDOUT, stdout=PIPE)
+ print(proc.communicate()[0])
+ returncode = proc.returncode
+ assert returncode == 0, 'OpenMC did not exit successfully.'
+
+def test_created_statepoint():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ assert len(statepoint) == 1, 'Either multiple or no statepoint files exist.'
+ assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5'),\
+ 'Statepoint file is not a binary or hdf5 file.'
+
+def test_output_exists():
+ assert os.path.exists(os.path.join(cwd, 'tallies.out')), 'Tally output file does not exist.'
+
+def test_results():
+ statepoint = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ call(['python', 'results.py', statepoint[0]])
+ compare = filecmp.cmp('results_test.dat', 'results_true.dat')
+ if not compare:
+ os.rename('results_test.dat', 'results_error.dat')
+ assert compare, 'Results do not agree.'
+
+def teardown():
+ output = glob.glob(os.path.join(cwd, 'statepoint.10.*'))
+ output.append(os.path.join(cwd, 'tallies.out'))
+ output.append(os.path.join(cwd, 'results_test.dat'))
+ for f in output:
+ if os.path.exists(f):
+ os.remove(f)
+
+if __name__ == '__main__':
+
+ # test for openmc executable
+ if opts.exe is None:
+ raise Exception('Must specify OpenMC executable from command line with --exe.')
+
+ # run tests
+ test_run()
+ test_created_statepoint()
+ test_output_exists()
+ test_results()
+ teardown()