diff --git a/src/cmfd_solver.cpp b/src/cmfd_solver.cpp index 6c432f595..1fdbdf566 100644 --- a/src/cmfd_solver.cpp +++ b/src/cmfd_solver.cpp @@ -350,20 +350,14 @@ extern "C" int openmc_run_linsolver(const double* A_data, const double* b, double* x, double tol) { - int result; - switch (cmfd::ng) { case 1: - result = cmfd_linsolver_1g(A_data, b, x, tol); - break; + return cmfd_linsolver_1g(A_data, b, x, tol); case 2: - result = cmfd_linsolver_2g(A_data, b, x, tol); - break; + return cmfd_linsolver_2g(A_data, b, x, tol); default: - result = cmfd_linsolver_ng(A_data, b, x, tol); - break; + return cmfd_linsolver_ng(A_data, b, x, tol); } - return result; } void free_memory_cmfd() diff --git a/tests/regression_tests/cmfd_feed/test.py b/tests/regression_tests/cmfd_feed/test.py index 6b56635f4..b4dbe682b 100644 --- a/tests/regression_tests/cmfd_feed/test.py +++ b/tests/regression_tests/cmfd_feed/test.py @@ -140,3 +140,27 @@ def test_cmfd_feed(): # 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 CMFD feedback""" + # Initialize and set CMFD mesh + cmfd_mesh = cmfd.CMFDMesh() + cmfd_mesh.lower_left = (-10.0, -1.0, -1.0) + cmfd_mesh.upper_right = (10.0, 1.0, 1.0) + cmfd_mesh.dimension = (10, 1, 1) + 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.use_all_threads = True + cmfd_run.run() + + # Initialize and run CMFD test harness + harness = CMFDTestHarness('statepoint.20.h5', cmfd_run) + harness.main()