diff --git a/tests/test_cmfd_jfnk/cmfd.xml b/tests/test_cmfd_jfnk/cmfd.xml new file mode 100644 index 0000000000..d97b098fd2 --- /dev/null +++ b/tests/test_cmfd_jfnk/cmfd.xml @@ -0,0 +1,16 @@ + + + + + -10 -1 -1 + 10 1 1 + 10 1 1 + 0.0 0.0 1.0 1.0 1.0 1.0 + + + 5 + balance + jfnk + true + + diff --git a/tests/test_cmfd_jfnk/geometry.xml b/tests/test_cmfd_jfnk/geometry.xml new file mode 100644 index 0000000000..57c4aa2285 --- /dev/null +++ b/tests/test_cmfd_jfnk/geometry.xml @@ -0,0 +1,43 @@ + + + + + + 0 + -1 2 -3 4 -5 6 + 1 + + + + + x-plane + 10 + vacuum + + + x-plane + -10 + vacuum + + + y-plane + 1 + reflective + + + y-plane + -1 + reflective + + + z-plane + 1 + reflective + + + z-plane + -1 + reflective + + + diff --git a/tests/test_cmfd_jfnk/materials.xml b/tests/test_cmfd_jfnk/materials.xml new file mode 100644 index 0000000000..496774661e --- /dev/null +++ b/tests/test_cmfd_jfnk/materials.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/test_cmfd_jfnk/results.py b/tests/test_cmfd_jfnk/results.py new file mode 100644 index 0000000000..f86aaa53e3 --- /dev/null +++ b/tests/test_cmfd_jfnk/results.py @@ -0,0 +1,82 @@ +#!/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.20.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) +results3 = sp.tallies[2].results +shape3 = results3.shape +size3 = (np.product(shape3)) +results3 = np.reshape(results3, size3) +results4 = sp.tallies[3].results +shape4 = results4.shape +size4 = (np.product(shape4)) +results4 = np.reshape(results4, size4) + +# 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) +outstr += 'tally 3:\n' +for item in results3: + outstr += "{0:12.6E}\n".format(item) +outstr += 'tally 4:\n' +for item in results4: + outstr += "{0:12.6E}\n".format(item) + +# write out cmfd answers +outstr += 'cmfd indices\n' +for item in sp.cmfd_indices: + outstr += "{0:12.6E}\n".format(item) +outstr += 'k cmfd\n' +for item in sp.k_cmfd: + outstr += "{0:12.6E}\n".format(item) +outstr += 'cmfd entropy\n' +for item in sp.cmfd_entropy: + outstr += "{0:12.6E}\n".format(item) +outstr += 'cmfd balance\n' +for item in sp.cmfd_balance: + outstr += "{0:12.6E}\n".format(item) +outstr += 'cmfd dominance ratio\n' +for item in sp.cmfd_dominance: + outstr += "{0:10.3E}\n".format(item) +outstr += 'cmfd openmc source comparison\n' +for item in sp.cmfd_srccmp: + outstr += "{0:12.6E}\n".format(item) +outstr += 'cmfd source\n' +cmfdsrc = np.reshape(sp.cmfd_src, np.product(sp.cmfd_indices), order='F') +for item in cmfdsrc: + 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_cmfd_jfnk/results_true.dat b/tests/test_cmfd_jfnk/results_true.dat new file mode 100644 index 0000000000..5e78660271 --- /dev/null +++ b/tests/test_cmfd_jfnk/results_true.dat @@ -0,0 +1,775 @@ +k-combined: +1.167124E+00 1.217344E-02 +tally 1: +1.126891E+01 +1.275756E+01 +2.086557E+01 +4.369504E+01 +2.853629E+01 +8.169563E+01 +3.404507E+01 +1.165020E+02 +3.723908E+01 +1.389881E+02 +3.760048E+01 +1.416691E+02 +3.455469E+01 +1.197186E+02 +2.837503E+01 +8.086287E+01 +2.151788E+01 +4.648312E+01 +1.194541E+01 +1.432330E+01 +tally 2: +2.292174E+01 +2.650794E+01 +1.598184E+01 +1.288693E+01 +2.194144E+00 +2.510560E-01 +4.217817E+01 +8.938588E+01 +2.974466E+01 +4.447040E+01 +3.939271E+00 +7.882419E-01 +5.742290E+01 +1.654599E+02 +4.067582E+01 +8.308457E+01 +5.566956E+00 +1.570073E+00 +6.810587E+01 +2.331019E+02 +4.831544E+01 +1.174673E+02 +6.245000E+00 +1.967939E+00 +7.258131E+01 +2.646756E+02 +5.185146E+01 +1.351426E+02 +6.622489E+00 +2.231695E+00 +7.246115E+01 +2.641295E+02 +5.159541E+01 +1.339441E+02 +6.702239E+00 +2.277825E+00 +6.716396E+01 +2.266815E+02 +4.765062E+01 +1.141626E+02 +6.384097E+00 +2.063760E+00 +5.549541E+01 +1.545360E+02 +3.940819E+01 +7.794877E+01 +5.183373E+00 +1.369482E+00 +4.155684E+01 +8.679434E+01 +2.926743E+01 +4.307143E+01 +3.938851E+00 +7.877944E-01 +2.335179E+01 +2.758239E+01 +1.622682E+01 +1.331995E+01 +2.248920E+00 +2.594933E-01 +tally 3: +1.537807E+01 +1.193746E+01 +1.044189E+00 +5.627797E-02 +2.861614E+01 +4.118324E+01 +1.846208E+00 +1.729007E-01 +3.921463E+01 +7.723579E+01 +2.427723E+00 +2.983153E-01 +4.653208E+01 +1.089818E+02 +3.128394E+00 +4.945409E-01 +4.989896E+01 +1.251503E+02 +3.242191E+00 +5.330743E-01 +4.967378E+01 +1.241657E+02 +3.184751E+00 +5.164524E-01 +4.592989E+01 +1.061019E+02 +2.936424E+00 +4.356307E-01 +3.783938E+01 +7.188486E+01 +2.485680E+00 +3.117618E-01 +2.819358E+01 +3.997585E+01 +1.875908E+00 +1.772000E-01 +1.562420E+01 +1.236020E+01 +1.013140E+00 +5.260420E-02 +tally 4: +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.126366E+00 +4.930686E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.456412E+00 +1.499417E+00 +2.727756E+00 +3.788869E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.453481E+00 +2.790160E+00 +5.240104E+00 +1.386896E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.741565E+00 +3.830226E+00 +7.137969E+00 +2.555043E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.221731E+00 +4.266573E+00 +8.474118E+00 +3.604648E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.054937E+00 +4.124536E+00 +9.066120E+00 +4.133834E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.362251E+00 +3.517244E+00 +9.086548E+00 +4.156118E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.871571E+00 +2.369189E+00 +8.399583E+00 +3.549783E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.998101E+00 +1.258193E+00 +7.145294E+00 +2.568114E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.716075E+00 +3.753566E-01 +5.427591E+00 +1.484153E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.056644E+00 +4.702345E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +cmfd indices +1.000000E+01 +1.000000E+00 +1.000000E+00 +1.000000E+00 +k cmfd +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.158665E+00 +1.173348E+00 +1.180514E+00 +1.168646E+00 +1.152485E+00 +1.154989E+00 +1.152285E+00 +1.152275E+00 +1.149476E+00 +1.154912E+00 +1.164393E+00 +1.170145E+00 +1.169161E+00 +1.167966E+00 +1.170153E+00 +1.170989E+00 +cmfd entropy +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.229801E+00 +3.226763E+00 +3.225011E+00 +3.230316E+00 +3.232043E+00 +3.228854E+00 +3.227439E+00 +3.228206E+00 +3.226749E+00 +3.222635E+00 +3.218882E+00 +3.219196E+00 +3.218057E+00 +3.220324E+00 +3.219099E+00 +3.219847E+00 +cmfd balance +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.244292E-03 +5.210436E-03 +4.212224E-03 +3.321578E-03 +3.067254E-03 +3.076634E-03 +2.601637E-03 +2.666441E-03 +2.490817E-03 +2.571411E-03 +3.013819E-03 +2.802836E-03 +2.725356E-03 +2.475281E-03 +2.279123E-03 +2.110816E-03 +cmfd dominance ratio + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 + 0.000E+00 +cmfd openmc source comparison +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.136193E-02 +1.059214E-02 +9.675100E-03 +7.296571E-03 +5.812485E-03 +6.138879E-03 +6.070297E-03 +5.791569E-03 +6.020032E-03 +7.287183E-03 +7.068423E-03 +6.380521E-03 +5.828010E-03 +4.741191E-03 +4.848115E-03 +4.686773E-03 +cmfd source +4.367444E-02 +7.866919E-02 +1.050799E-01 +1.366581E-01 +1.421824E-01 +1.393453E-01 +1.269612E-01 +1.060419E-01 +7.920472E-02 +4.218277E-02 diff --git a/tests/test_cmfd_jfnk/settings.xml b/tests/test_cmfd_jfnk/settings.xml new file mode 100644 index 0000000000..41de07f569 --- /dev/null +++ b/tests/test_cmfd_jfnk/settings.xml @@ -0,0 +1,32 @@ + + + + + + 20 + 10 + 1000 + + + + + + + + + box + -10 -1 -1 10 1 1 + + + + + + 10 1 1 + -10.0 -1.0 -1.0 + 10.0 1.0 1.0 + + + + true + + diff --git a/tests/test_cmfd_jfnk/tallies.xml b/tests/test_cmfd_jfnk/tallies.xml new file mode 100644 index 0000000000..b20c0ad613 --- /dev/null +++ b/tests/test_cmfd_jfnk/tallies.xml @@ -0,0 +1,16 @@ + + + + + rectangular + -10 -1 -1 + 10 1 1 + 10 1 1 + + + + + flux + + + diff --git a/tests/test_cmfd_jfnk/test_cmfd_feed.py b/tests/test_cmfd_jfnk/test_cmfd_feed.py new file mode 100644 index 0000000000..db36784888 --- /dev/null +++ b/tests/test_cmfd_jfnk/test_cmfd_feed.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python + +import os +from subprocess import Popen, STDOUT, PIPE, call +import filecmp +import glob + +from nose.plugins.skip import SkipTest + +from nose_mpi import NoseMPI + + +pwd = os.path.dirname(__file__) + +skipAll = False + +def setup(): + os.putenv('PWD', pwd) + os.chdir(pwd) + global skipAll + skipAll = False + +def test_run(): + openmc_path = pwd + '/../../src/openmc' + if int(NoseMPI.mpi_np) > 0: + proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path], + stderr=STDOUT, stdout=PIPE) + else: + proc = Popen([openmc_path], stderr=STDOUT, stdout=PIPE) + returncode = proc.wait() + output = proc.communicate()[0] + print(output) + if 'CMFD is not available' in output: + global skipAll + skipAll = True + raise SkipTest + assert returncode == 0 + +def test_created_statepoint(): + if skipAll: + raise SkipTest + statepoint = glob.glob(pwd + '/statepoint.20.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + +def test_output_exists(): + if skipAll: + raise SkipTest + assert os.path.exists(pwd + '/tallies.out') + +def test_results(): + if skipAll: + raise SkipTest + statepoint = glob.glob(pwd + '/statepoint.20.*') + 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 + +def teardown(): + output = glob.glob(pwd + '/statepoint.20.*') + output.append(pwd + '/tallies.out') + output.append(pwd + '/results_test.dat') + for f in output: + if os.path.exists(f): + os.remove(f) +