Esempio n. 1
0
def test_cmfd_physical_adjoint():
    """Test physical adjoint functionality of CMFD

    This test runs CMFD with a physical adjoint calculation and asserts that
    the adjoint k-effective and flux vector are equal to the non-adjoint
    k-effective and flux vector at the last batch (equivalent for 1 group
    problems).

    """
    # 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.feedback_begin = 5
    cmfd_run.feedback = True
    cmfd_run.gauss_seidel_tolerance = [1.e-15, 1.e-20]
    cmfd_run.run_adjoint = True
    cmfd_run.adjoint_type = 'physical'
    cmfd_run.run()
    assert(np.all(cmfd_run._phi == cmfd_run._adj_phi))
    assert(cmfd_run._adj_keff == cmfd_run._keff)
Esempio n. 2
0
def test_cmfd_feed_ng():
    """Test n group CMFD solver with CMFD feedback"""
    # Initialize and set CMFD mesh
    cmfd_mesh = cmfd.CMFDMesh()
    cmfd_mesh.lower_left = (-1.25984, -1.25984, -1.0)
    cmfd_mesh.upper_right = (1.25984, 1.25984, 1.0)
    cmfd_mesh.dimension = (2, 2, 1)
    cmfd_mesh.energy = (0.0, 0.625, 5.53080, 20000000)
    cmfd_mesh.albedo = (1.0, 1.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.reset = [5]
    cmfd_run.tally_begin = 10
    cmfd_run.solver_begin = 10
    cmfd_run.display = {'dominance': True}
    cmfd_run.feedback = True
    cmfd_run.downscatter = 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()
Esempio n. 3
0
def test_cmfd_restart():
    """Test 1 group CMFD solver with restart run"""
    # Initialize and set CMFD mesh, create a copy for second run
    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)
    cmfd_mesh2 = copy.deepcopy(cmfd_mesh)

    # Initialize and run first CMFDRun object
    cmfd_run = cmfd.CMFDRun()
    cmfd_run.mesh = cmfd_mesh
    cmfd_run.tally_begin = 5
    cmfd_run.solver_begin = 5
    cmfd_run.feedback = True
    cmfd_run.gauss_seidel_tolerance = [1.e-15, 1.e-20]
    cmfd_run.run()

    # Initialize second CMFDRun object which will be run from restart file
    cmfd_run2 = cmfd.CMFDRun()
    cmfd_run2.mesh = cmfd_mesh2
    cmfd_run2.tally_begin = 5
    cmfd_run2.solver_begin = 5
    cmfd_run2.feedback = True
    cmfd_run2.gauss_seidel_tolerance = [1.e-15, 1.e-20]

    # Initialize and run CMFD restart test harness
    harness = CMFDRestartTestHarness('statepoint.20.h5', 'statepoint.15.h5',
                                     cmfd_run, cmfd_run2)
    harness.main()
Esempio n. 4
0
def test_cmfd_write_matrices():
    """Test write matrices functionality of CMFD

    This test runs CMFD with feedback and loads the loss/production matrices
    and flux vector that are saved to disk, and checks to make sure these
    values are consistent with each other and simulation results.

    """
    # 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.feedback_begin = 5
    cmfd_run.display = {'dominance': True}
    cmfd_run.feedback = True
    cmfd_run.gauss_seidel_tolerance = [1.e-15, 1.e-20]
    cmfd_run.write_matrices = True
    cmfd_run.run()

    # Load loss matrix from numpy output file
    loss_np = scipy.sparse.load_npz('loss.npz').todense()
    # Load loss matrix from data file
    loss_dat = np.loadtxt("loss.dat", delimiter=',')

    # Go through each element of loss_dat and compare to loss_np
    for elem in loss_dat:
        assert(np.isclose(loss_np[int(elem[0]), int(elem[1])], elem[2]))

    # Load production matrix from numpy output file
    prod_np = scipy.sparse.load_npz('prod.npz').todense()
    # Load production matrix from data file
    prod_dat = np.loadtxt("prod.dat", delimiter=',')

    # Go through each element of prod_dat and compare to prod_np
    for elem in prod_dat:
        assert(np.isclose(prod_np[int(elem[0]), int(elem[1])], elem[2]))

    # Load flux vector from numpy output file
    flux_np = np.load('fluxvec.npy')
    # Load flux from data file
    flux_dat = np.loadtxt("fluxvec.dat", delimiter='\n')

    # Compare flux from numpy file, .dat file, and from simulation
    assert(np.all(np.isclose(flux_np, cmfd_run._phi)))
    assert(np.all(np.isclose(flux_np, flux_dat)))
Esempio n. 5
0
def test_cmfd_nofeed():
    """Test 1 group CMFD solver without 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.solver_begin = 5
    cmfd_run.display = {'dominance': True}
    cmfd_run.feedback = False
    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()
Esempio n. 6
0
def test_cmfd_feed_rolling_window():
    """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 = 10
    cmfd_run.feedback = True
    cmfd_run.gauss_seidel_tolerance = [1.e-15, 1.e-20]
    cmfd_run.window_type = 'expanding'
    cmfd_run.run()

    # Initialize and run CMFD test harness
    harness = CMFDTestHarness('statepoint.20.h5', cmfd_run)
    harness.main()
Esempio n. 7
0
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()