openmc.cmfd.CMFDRun

class openmc.cmfd.CMFDRun[source]

Class for running CMFD acceleration through the C API.

Variables:
  • tally_begin (int) – Batch number at which CMFD tallies should begin accummulating
  • solver_begin (int) – Batch number at which CMFD solver should start executing
  • ref_d (list of floats) – List of reference diffusion coefficients to fix CMFD parameters to
  • display (dict) –

    Dictionary indicating which CMFD results to output. Note that CMFD k-effective will always be outputted. Acceptable keys are:

    • ”balance” - Whether to output RMS [%] of the resdiual from the neutron balance equation on CMFD tallies (bool)
    • ”dominance” - Whether to output the estimated dominance ratio from the CMFD iterations (bool)
    • ”entropy” - Whether to output the entropy of the CMFD predicted fission source (bool)
    • ”source” - Whether to ouput the RMS [%] between the OpenMC fission source and CMFD fission source (bool)
  • downscatter (bool) – Indicate whether an effective downscatter cross section should be used when using 2-group CMFD.
  • feedback (bool) – Indicate whether or not the CMFD diffusion result is used to adjust the weight of fission source neutrons on the next OpenMC batch. Defaults to False.
  • cmfd_ktol (float) – Tolerance on the eigenvalue when performing CMFD power iteration
  • mesh (openmc.cmfd.CMFDMesh) – Structured mesh to be used for acceleration
  • norm (float) – Normalization factor applied to the CMFD fission source distribution
  • power_monitor (bool) – View convergence of power iteration during CMFD acceleration
  • run_adjoint (bool) – Perform adjoint calculation on the last batch
  • w_shift (float) – Optional Wielandt shift parameter for accelerating power iterations. By default, it is very large so there is effectively no impact.
  • stol (float) – Tolerance on the fission source when performing CMFD power iteration
  • reset (list of int) – List of batch numbers at which CMFD tallies should be reset
  • write_matrices (bool) – Write sparse matrices that are used during CMFD acceleration (loss, production) and resultant normalized flux vector phi to file
  • spectral (float) – Optional spectral radius that can be used to accelerate the convergence of Gauss-Seidel iterations during CMFD power iteration.
  • gauss_seidel_tolerance (Iterable of float) – Two parameters specifying the absolute inner tolerance and the relative inner tolerance for Gauss-Seidel iterations when performing CMFD.
  • adjoint_type ({'physical', 'math'}) –

    Stores type of adjoint calculation that should be performed. run_adjoint must be true for an adjoint calculation to be perfomed. Options are:

    • ”physical” - Create adjoint matrices from physical parameters of CMFD problem
    • ”math” - Create adjoint matrices mathematically as the transpose of loss and production CMFD matrices
  • window_type ({'expanding', 'rolling', 'none'}) –

    Specifies type of tally window scheme to use to accumulate CMFD tallies. Options are:

    • ”expanding” - Have an expanding window that doubles in size to give more weight to more recent tallies as more generations are simulated
    • ”rolling” - Have a fixed window size that aggregates tallies from the same number of previous generations tallied
    • ”none” - Don’t use a windowing scheme so that all tallies from last time they were reset are used for the CMFD algorithm.
  • window_size (int) – Size of window to use for tally window scheme. Only relevant when window_type is set to “rolling”
  • indices (numpy.ndarray) – Stores spatial and group dimensions as [nx, ny, nz, ng]
  • cmfd_src (numpy.ndarray) – CMFD source distribution calculated from solving CMFD equations
  • entropy (list of floats) – “Shannon entropy” from CMFD fission source, stored for each generation that CMFD is invoked
  • balance (list of floats) – RMS of neutron balance equations, stored for each generation that CMFD is invoked
  • src_cmp (list of floats) – RMS deviation of OpenMC and CMFD normalized source, stored for each generation that CMFD is invoked
  • dom (list of floats) – Dominance ratio from solving CMFD matrix equations, stored for each generation that CMFD is invoked
  • k_cmfd (list of floats) – List of CMFD k-effectives, stored for each generation that CMFD is invoked
  • time_cmfd (float) – Time for entire CMFD calculation, in seconds
  • time_cmfdbuild (float) – Time for building CMFD matrices, in seconds
  • time_cmfdsolve (float) – Time for solving CMFD matrix equations, in seconds
  • use_all_threads (bool) – Whether to use all threads allocated to OpenMC for CMFD solver
  • intracomm (mpi4py.MPI.Intracomm or None) – MPI intercommunicator for running MPI commands
finalize()[source]

Finalize simulation by calling openmc.lib.simulation_finalize() and print out CMFD timing information.

init()[source]

Initialize CMFDRun instance by setting up CMFD parameters and calling openmc.lib.simulation_init()

iter_batches()[source]

Iterator over batches.

This function returns a generator-iterator that allows Python code to be run between batches when running an OpenMC simulation with CMFD. It should be used in conjunction with :func`openmc.cmfd.CMFDRun.run_in_memory` to ensure proper initialization/finalization of CMFDRun instance.

next_batch()[source]

Run next batch for CMFDRun.

Returns:Status after running a batch (0=normal, 1=reached maximum number of batches, 2=tally triggers reached)
Return type:int
run(**kwargs)[source]

Run OpenMC with coarse mesh finite difference acceleration

This method is called by the user to run CMFD once instance variables of CMFDRun class are set

Parameters:**kwargs – All keyword arguments are passed to openmc.lib.run_in_memory().
run_in_memory(**kwargs)[source]

Context manager for running CMFD functions with OpenMC shared library functions.

This function can be used with a ‘with’ statement to ensure the CMFDRun class is properly initialized/finalized. For example:

from openmc import cmfd
cmfd_run = cmfd.CMFDRun()
with cmfd_run.run_in_memory():
    do_stuff_before_simulation_start()
    for _ in cmfd_run.iter_batches():
        do_stuff_between_batches()
Parameters:**kwargs – All keyword arguments passed to openmc.lib.run_in_memory().
statepoint_write(filename=None)[source]

Write all simulation parameters to statepoint

Parameters:filename (str) – Filename of statepoint