diff --git a/tests/regression_tests/cmfd_feed/test.py b/tests/regression_tests/cmfd_feed/test.py index 7723a47b1f..fa22b0fe36 100644 --- a/tests/regression_tests/cmfd_feed/test.py +++ b/tests/regression_tests/cmfd_feed/test.py @@ -141,6 +141,31 @@ def test_cmfd_feed(): harness = CMFDTestHarness('statepoint.20.h5', cmfd_run) harness.main() +def test_cmfd_feed_rectlin(): + """Test 1 group CMFD solver with CMFD feedback""" + # Initialize and set CMFD mesh + cmfd_mesh = cmfd.CMFDMesh() + cmfd_mesh.mesh_type = 'rectilinear' + x_grid = np.linspace(-10, 10, 11) + y_grid = [-1., 1.] + z_grid = [-1., 1.] + cmfd_mesh.grid = [x_grid, y_grid, z_grid] + cmfd_mesh.albedo = (0.0, 0.0, 1.0, 1.0, 1.0, 1.0) + + # Initialize and run CMFDRun object + cmfd_run = cmfd.CMFDRun() + cmfd_run.mesh = cmfd_mesh + cmfd_run.tally_begin = 5 + cmfd_run.solver_begin = 5 + cmfd_run.display = {'dominance': True} + cmfd_run.feedback = True + cmfd_run.gauss_seidel_tolerance = [1.e-15, 1.e-20] + cmfd_run.run() + + # Initialize and run CMFD test harness + harness = CMFDTestHarness('statepoint.20.h5', cmfd_run) + harness.main() + def test_cmfd_multithread(): """Test 1 group CMFD solver with all available threads""" # Initialize and set CMFD mesh diff --git a/tests/regression_tests/cmfd_feed_rectlin/__init__.py b/tests/regression_tests/cmfd_feed_rectlin/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regression_tests/cmfd_feed_rectlin/geometry.xml b/tests/regression_tests/cmfd_feed_rectlin/geometry.xml new file mode 100644 index 0000000000..73ea679c4c --- /dev/null +++ b/tests/regression_tests/cmfd_feed_rectlin/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/regression_tests/cmfd_feed_rectlin/materials.xml b/tests/regression_tests/cmfd_feed_rectlin/materials.xml new file mode 100644 index 0000000000..70580e3a8d --- /dev/null +++ b/tests/regression_tests/cmfd_feed_rectlin/materials.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/regression_tests/cmfd_feed_rectlin/results_true.dat b/tests/regression_tests/cmfd_feed_rectlin/results_true.dat new file mode 100644 index 0000000000..596e0880a5 --- /dev/null +++ b/tests/regression_tests/cmfd_feed_rectlin/results_true.dat @@ -0,0 +1,636 @@ +k-combined: +1.157187E+00 1.636299E-02 +tally 1: +1.105119E+01 +1.225764E+01 +2.005562E+01 +4.044077E+01 +2.763651E+01 +7.659204E+01 +3.350385E+01 +1.124748E+02 +3.708973E+01 +1.378980E+02 +3.819687E+01 +1.461904E+02 +3.563815E+01 +1.272689E+02 +2.951618E+01 +8.720253E+01 +2.110567E+01 +4.462562E+01 +1.177125E+01 +1.391704E+01 +tally 2: +8.413458E+00 +3.600701E+00 +5.811221E+00 +1.720423E+00 +3.152237E+01 +4.997128E+01 +2.209153E+01 +2.455911E+01 +2.181469E+01 +2.395139E+01 +1.541498E+01 +1.196916E+01 +5.445894E+01 +1.490652E+02 +3.866629E+01 +7.523403E+01 +3.282600E+01 +5.400949E+01 +2.342806E+01 +2.753117E+01 +7.081101E+01 +2.514150E+02 +5.036626E+01 +1.272409E+02 +3.737870E+01 +7.016018E+01 +2.659096E+01 +3.553255E+01 +3.782640E+01 +7.182993E+01 +2.699064E+01 +3.660686E+01 +7.361578E+01 +2.717788E+02 +5.234377E+01 +1.374393E+02 +3.428621E+01 +5.895928E+01 +2.449124E+01 +3.009739E+01 +5.922017E+01 +1.756748E+02 +4.200257E+01 +8.838800E+01 +2.336382E+01 +2.740967E+01 +1.658498E+01 +1.382335E+01 +3.297049E+01 +5.456989E+01 +2.339783E+01 +2.749345E+01 +8.828373E+00 +3.943974E+00 +6.102413E+00 +1.883966E+00 +tally 3: +5.596852E+00 +1.598537E+00 +3.522058E-01 +6.713731E-03 +2.126148E+01 +2.274990E+01 +1.422059E+00 +1.023184E-01 +1.486366E+01 +1.113118E+01 +9.672994E-01 +4.841756E-02 +3.718151E+01 +6.959813E+01 +2.434965E+00 +2.992672E-01 +2.255899E+01 +2.552453E+01 +1.400193E+00 +9.974367E-02 +4.850275E+01 +1.180150E+02 +3.030061E+00 +4.650085E-01 +2.561202E+01 +3.297554E+01 +1.660808E+00 +1.399354E-01 +2.603551E+01 +3.406292E+01 +1.644980E+00 +1.378019E-01 +5.041383E+01 +1.274936E+02 +3.230209E+00 +5.274516E-01 +2.357275E+01 +2.788910E+01 +1.519553E+00 +1.172908E-01 +4.043162E+01 +8.190810E+01 +2.584619E+00 +3.376865E-01 +1.598070E+01 +1.283439E+01 +1.032328E+00 +5.432257E-02 +2.254607E+01 +2.553039E+01 +1.449211E+00 +1.061279E-01 +5.871759E+00 +1.744573E+00 +3.943129E-01 +8.103936E-03 +tally 4: +3.066217E+00 +4.730450E-01 +0.000000E+00 +0.000000E+00 +1.360953E+00 +9.533513E-02 +4.308283E+00 +9.334136E-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 +4.308283E+00 +9.334136E-01 +1.360953E+00 +9.533513E-02 +3.783652E+00 +7.238359E-01 +6.291955E+00 +1.990579E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.291955E+00 +1.990579E+00 +3.783652E+00 +7.238359E-01 +4.885573E+00 +1.200082E+00 +7.106830E+00 +2.535661E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.106830E+00 +2.535661E+00 +4.885573E+00 +1.200082E+00 +6.866283E+00 +2.371554E+00 +8.503237E+00 +3.630917E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.503237E+00 +3.630917E+00 +6.866283E+00 +2.371554E+00 +7.768902E+00 +3.027583E+00 +9.082457E+00 +4.135990E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.082457E+00 +4.135990E+00 +7.768902E+00 +3.027583E+00 +8.769969E+00 +3.865147E+00 +9.319943E+00 +4.358847E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.319943E+00 +4.358847E+00 +8.769969E+00 +3.865147E+00 +9.325939E+00 +4.366610E+00 +9.435739E+00 +4.466600E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.435739E+00 +4.466600E+00 +9.325939E+00 +4.366610E+00 +9.542810E+00 +4.573627E+00 +9.199847E+00 +4.247714E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.199847E+00 +4.247714E+00 +9.542810E+00 +4.573627E+00 +9.374166E+00 +4.404055E+00 +8.192575E+00 +3.370018E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.192575E+00 +3.370018E+00 +9.374166E+00 +4.404055E+00 +8.889272E+00 +3.956143E+00 +7.298067E+00 +2.671190E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.298067E+00 +2.671190E+00 +8.889272E+00 +3.956143E+00 +7.459052E+00 +2.787818E+00 +5.208762E+00 +1.362339E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.208762E+00 +1.362339E+00 +7.459052E+00 +2.787818E+00 +6.514105E+00 +2.127726E+00 +3.935834E+00 +7.791845E-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 +3.935834E+00 +7.791845E-01 +6.514105E+00 +2.127726E+00 +4.382888E+00 +9.637493E-01 +1.398986E+00 +9.904821E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.398986E+00 +9.904821E-02 +4.382888E+00 +9.637493E-01 +3.080536E+00 +4.769864E-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 +tally 5: +5.593947E+00 +1.596885E+00 +8.106566E-01 +3.664721E-02 +2.125531E+01 +2.273647E+01 +3.065490E+00 +4.787394E-01 +1.486069E+01 +1.112690E+01 +1.949973E+00 +1.949146E-01 +3.717221E+01 +6.956205E+01 +5.001200E+00 +1.267587E+00 +2.255049E+01 +2.550506E+01 +2.899016E+00 +4.325940E-01 +4.849423E+01 +1.179738E+02 +6.528348E+00 +2.152826E+00 +2.561091E+01 +3.297274E+01 +3.488550E+00 +6.229290E-01 +2.603063E+01 +3.405034E+01 +3.601295E+00 +6.558219E-01 +5.040479E+01 +1.274480E+02 +6.786233E+00 +2.323774E+00 +2.357068E+01 +2.788373E+01 +2.889115E+00 +4.258034E-01 +4.042343E+01 +8.187501E+01 +5.332998E+00 +1.439867E+00 +1.597773E+01 +1.282957E+01 +1.942949E+00 +1.954364E-01 +2.254116E+01 +2.551921E+01 +3.104316E+00 +4.901972E-01 +5.869140E+00 +1.742897E+00 +9.010904E-01 +4.316080E-02 +cmfd indices +1.400000E+01 +1.000000E+00 +1.000000E+00 +1.000000E+00 +k cmfd +1.175888E+00 +1.173169E+00 +1.178686E+00 +1.169259E+00 +1.159624E+00 +1.161905E+00 +1.150366E+00 +1.156936E+00 +1.152230E+00 +1.158120E+00 +1.151832E+00 +1.156090E+00 +1.156076E+00 +1.159749E+00 +1.159483E+00 +1.159617E+00 +cmfd entropy +3.585755E+00 +3.588829E+00 +3.591601E+00 +3.596486E+00 +3.598552E+00 +3.600536E+00 +3.606024E+00 +3.602025E+00 +3.603625E+00 +3.601073E+00 +3.602144E+00 +3.601031E+00 +3.603146E+00 +3.603878E+00 +3.602530E+00 +3.603442E+00 +cmfd balance +5.69096E-03 +5.82028E-03 +5.54245E-03 +3.56776E-03 +2.86949E-03 +2.55946E-03 +2.27787E-03 +2.58567E-03 +1.98573E-03 +2.01270E-03 +2.15386E-03 +1.88029E-03 +1.65172E-03 +1.50711E-03 +1.28653E-03 +1.19687E-03 +cmfd dominance ratio +6.039E-01 +6.045E-01 +6.026E-01 +6.050E-01 +6.067E-01 +6.071E-01 +6.097E-01 +6.060E-01 +6.067E-01 +6.060E-01 +6.069E-01 +6.056E-01 +6.064E-01 +6.066E-01 +6.050E-01 +6.052E-01 +cmfd openmc source comparison +6.220816E-03 +6.181852E-03 +4.920765E-03 +5.006176E-03 +4.717371E-03 +5.049855E-03 +2.182449E-03 +3.301480E-03 +3.408666E-03 +2.012317E-03 +1.751563E-03 +1.934989E-03 +1.827288E-03 +1.055350E-03 +1.321006E-03 +1.220975E-03 +cmfd source +1.501950E-02 +6.088975E-02 +4.178034E-02 +1.057740E-01 +6.080482E-02 +1.314338E-01 +7.208400E-02 +7.138769E-02 +1.400772E-01 +6.569802E-02 +1.114779E-01 +4.436863E-02 +6.224041E-02 +1.696388E-02 diff --git a/tests/regression_tests/cmfd_feed_rectlin/settings.xml b/tests/regression_tests/cmfd_feed_rectlin/settings.xml new file mode 100644 index 0000000000..24b0b6ab50 --- /dev/null +++ b/tests/regression_tests/cmfd_feed_rectlin/settings.xml @@ -0,0 +1,26 @@ + + + + + eigenvalue + 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 + + 10 + + diff --git a/tests/regression_tests/cmfd_feed_rectlin/tallies.xml b/tests/regression_tests/cmfd_feed_rectlin/tallies.xml new file mode 100644 index 0000000000..c869711147 --- /dev/null +++ b/tests/regression_tests/cmfd_feed_rectlin/tallies.xml @@ -0,0 +1,21 @@ + + + + + regular + -10 -1 -1 + 10 1 1 + 10 1 1 + + + + mesh + 1 + + + + 1 + flux + + + diff --git a/tests/regression_tests/cmfd_feed_rectlin/test.py b/tests/regression_tests/cmfd_feed_rectlin/test.py new file mode 100644 index 0000000000..8739e800d2 --- /dev/null +++ b/tests/regression_tests/cmfd_feed_rectlin/test.py @@ -0,0 +1,30 @@ +from tests.testing_harness import CMFDTestHarness +from openmc import cmfd +import numpy as np +import scipy.sparse + + +def test_cmfd_feed_rectlin(): + """Test 1 group CMFD solver with CMFD feedback""" + # Initialize and set CMFD mesh + cmfd_mesh = cmfd.CMFDMesh() + cmfd_mesh.mesh_type = 'rectilinear' + x_grid = [-10., -9., -7., -6., -4., -3., -1., 0., 1., 3., 4., 6., 7., 9., 10.] + y_grid = [-1., 1.] + z_grid = [-1., 1.] + cmfd_mesh.grid = [x_grid, y_grid, z_grid] + cmfd_mesh.albedo = (0.0, 0.0, 1.0, 1.0, 1.0, 1.0) + + # Initialize and run CMFDRun object + cmfd_run = cmfd.CMFDRun() + cmfd_run.mesh = cmfd_mesh + cmfd_run.tally_begin = 5 + cmfd_run.solver_begin = 5 + cmfd_run.display = {'dominance': True} + cmfd_run.feedback = True + cmfd_run.gauss_seidel_tolerance = [1.e-15, 1.e-20] + cmfd_run.run() + + # Initialize and run CMFD test harness + harness = CMFDTestHarness('statepoint.20.h5', cmfd_run) + harness.main() diff --git a/tests/unit_tests/test_lib.py b/tests/unit_tests/test_lib.py index 5553f91e9f..4a6d692555 100644 --- a/tests/unit_tests/test_lib.py +++ b/tests/unit_tests/test_lib.py @@ -442,7 +442,7 @@ def test_find_material(lib_init): assert mat is openmc.lib.materials[2] -def test_mesh(lib_init): +def test_regular_mesh(lib_init): mesh = openmc.lib.RegularMesh() mesh.dimension = (2, 3, 4) assert mesh.dimension == (2, 3, 4) @@ -477,6 +477,37 @@ def test_mesh(lib_init): assert msf.mesh == mesh +def test_rectilinear_mesh(lib_init): + mesh = openmc.lib.RectilinearMesh() + x_grid = [-10., 0., 10.] + y_grid = [0., 10., 20.] + z_grid = [10., 20., 30.] + mesh.set_grid(x_grid, y_grid, z_grid) + assert np.all(mesh.lower_left == (-10., 0., 10.)) + assert np.all(mesh.upper_right == (10., 20., 30.)) + assert np.all(mesh.dimension == (2, 2, 2)) + for i, diff_x in enumerate(np.diff(x_grid)): + for j, diff_y in enumerate(np.diff(y_grid)): + for k, diff_z in enumerate(np.diff(z_grid)): + assert np.all(mesh.width[i, j, k, :] == (10, 10, 10)) + + with pytest.raises(exc.AllocationError): + mesh2 = openmc.lib.RectilinearMesh(mesh.id) + + meshes = openmc.lib.meshes + assert isinstance(meshes, Mapping) + assert len(meshes) == 2 + + mesh = meshes[mesh.id] + assert isinstance(mesh, openmc.lib.RectilinearMesh) + + mf = openmc.lib.MeshFilter(mesh) + assert mf.mesh == mesh + + msf = openmc.lib.MeshSurfaceFilter(mesh) + assert msf.mesh == mesh + + def test_restart(lib_init, mpi_intracomm): # Finalize and re-init to make internal state consistent with XML. openmc.lib.hard_reset()