bluemira.codes.openmc.solver ============================ .. py:module:: bluemira.codes.openmc.solver .. autoapi-nested-parse:: OpenMC designer Attributes ---------- .. autoapisummary:: bluemira.codes.openmc.solver.OPENMC_NAME bluemira.codes.openmc.solver.NeutronSourceCreator bluemira.codes.openmc.solver.TALLY_FUNCTION_TYPE Classes ------- .. autoapisummary:: bluemira.codes.openmc.solver.OpenMCRunModes bluemira.codes.openmc.solver.OpenMCSimulationRuntimeParameters bluemira.codes.openmc.solver.PlotConfig bluemira.codes.openmc.solver.SourceInfo bluemira.codes.openmc.solver.FigureData bluemira.codes.openmc.solver.OpenMCBaseSetup bluemira.codes.openmc.solver.OpenMCCSGSetup bluemira.codes.openmc.solver.OpenMCDAGSetup bluemira.codes.openmc.solver.OpenMCRun bluemira.codes.openmc.solver.OpenMCCSGTeardown bluemira.codes.openmc.solver.OpenMCDAGTeardown bluemira.codes.openmc.solver.OpenMCNeutronicsSolver bluemira.codes.openmc.solver.OpenMCCSGNeutronicsSolver bluemira.codes.openmc.solver.OpenMCDAGMCNeutronicsSolver Module Contents --------------- .. py:class:: OpenMCRunModes(*args, **kwds) Bases: :py:obj:`bluemira.codes.interface.BaseRunMode` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCRunModes :parts: 1 :private-bases: OpenMC run modes .. py:attribute:: RUN :value: 'fixed source' .. py:attribute:: RUN_AND_PLOT .. py:attribute:: PLOT :value: 'plot' .. py:attribute:: VOLUME :value: 'volume' .. py:data:: OPENMC_NAME :value: 'OpenMC' .. py:class:: OpenMCSimulationRuntimeParameters Parameters used in the actual simulation :param particles: Number of neutrons emitted by the plasma source per batch. :param cross_section_xml: Where the xml file for cross-section is stored locally. :param batches: How many batches to simulate. :param photon_transport: Whether to simulate the transport of photons (i.e. gamma-rays created) or not. :param electron_treatment: The way in which OpenMC handles secondary charged particles. 'thick-target bremsstrahlung' or 'local energy deposition' 'thick-target bremsstrahlung' accounts for the energy carried away by bremsstrahlung photons and deposited elsewhere, whereas 'local energy deposition' assumes electrons deposit all energies locally. (the latter is expected to be computationally faster.) :param run_mode: see below for details: https://docs.openmc.org/en/stable/usersguide/settings.html#run-modes :param openmc_write_summary: whether openmc should write a 'summary.h5' file or not. :param plot_axis: axis to use for openmc plotter :param plot_pixel_per_metre: number of pixels to plot in openmc plotter :param rel_max_lost_particles: relative max number of particles to lose before error :param max_lost_particles: max number of particles to lose before error .. py:attribute:: particles :type: int .. py:attribute:: cross_section_xml :type: str | pathlib.Path .. py:attribute:: batches :type: int :value: 2 .. py:attribute:: photon_transport :type: bool :value: True .. py:attribute:: electron_treatment :type: Literal['ttb', 'led'] :value: 'led' .. py:attribute:: run_mode :type: str :value: 'fixed source' .. py:attribute:: openmc_write_summary :type: bool :value: False .. py:attribute:: plot_axis :type: str :value: 'xz' .. py:attribute:: plot_pixel_per_metre :type: int :value: 100 .. py:attribute:: rel_max_lost_particles :type: float :value: 1e-06 .. py:attribute:: max_lost_particles :type: int :value: 10 .. py:attribute:: tally_mesh_size :type: collections.abc.Sequence[float] :value: (100, 100, 100) .. py:type:: NeutronSourceCreator :canonical: Callable[[Equilibrium, PlasmaSourceParameters], tuple[openmc.Source, float, float]] .. py:class:: PlotConfig Plot configuration helper .. py:attribute:: width :type: list[float] .. py:attribute:: pixels :type: list[int] .. py:attribute:: basis :type: str :value: 'xz' .. py:attribute:: colour_by :type: str :value: 'cell' .. py:attribute:: show_overlaps :type: bool :value: True .. py:class:: SourceInfo Source info storage .. py:attribute:: rate :type: float .. py:attribute:: triton_rate :type: float .. py:class:: FigureData Figure data storage .. py:attribute:: axis :type: matplotlib.axes.Axes .. py:attribute:: path :type: pathlib.Path .. py:class:: OpenMCBaseSetup(codes_name: str, cross_section_xml: str, eq: bluemira.equilibria.equilibrium.Equilibrium, source, materials) Bases: :py:obj:`bluemira.codes.interface.CodesSetup`, :py:obj:`abc.ABC` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCBaseSetup :parts: 1 :private-bases: Setup task for OpenMC solver .. py:attribute:: tally_mats :type: openmc.Materials .. py:attribute:: tally_geom :type: openmc.Geometry | bluemira.codes.openmc.make_csg.CellStage .. py:attribute:: cross_section_xml .. py:attribute:: eq .. py:attribute:: source .. py:attribute:: _source_rate :value: 1.0 .. py:attribute:: _source_triton_rate :value: 1.0 .. py:attribute:: materials .. py:method:: _base_setup(run_mode, rel_max_lost_particles, max_lost_particles, *, debug: bool = False) .. py:method:: _create_model(settings: openmc.Settings, tallies: openmc.Tallies | None = None) -> openmc.Model .. py:method:: _create_geometry() -> tuple[openmc.Universe, openmc.geometry] :abstractmethod: .. py:method:: _create_tallies(tally_function: TALLY_FUNCTION_TYPE) -> openmc.Tallies .. py:method:: plot(run_mode, runtime_params, eq, source_params, tally_function, *, debug: bool = False) :abstractmethod: Plot an openmc run .. py:method:: volume(run_mode, runtime_params, eq, source_params, tally_function, *, debug: bool = False) :abstractmethod: Volume calculation on openmc run .. py:method:: run(run_mode, runtime_params, eq, source_params, tally_function, *, debug: bool = False) -> tuple[openmc.Model, SourceInfo] Run stage for setup openmc .. py:method:: _plot(run_mode, runtime_params, bounding_box: collections.abc.Sequence[float] | None = None, *, debug: bool = False) -> tuple[openmc.Model, PlotConfig] Plot stage for setup openmc .. py:method:: _volume(run_mode, runtime_params, domain, bounding_box, *, debug: bool = False) -> tuple[openmc.Model, None] Stochastic volume stage for setup openmc .. py:class:: OpenMCCSGSetup(codes_name: str, cross_section_xml: str, eq: bluemira.equilibria.equilibrium.Equilibrium, source, materials, cell_arrays, pre_cell_model) Bases: :py:obj:`OpenMCBaseSetup` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCCSGSetup :parts: 1 :private-bases: Setup for openmc CSG run .. py:attribute:: cell_arrays .. py:attribute:: pre_cell_model .. py:attribute:: mat_list .. py:property:: tally_mats :type: list[openmc.Material] Tally materials .. py:property:: tally_geom :type: bluemira.codes.openmc.make_csg.CellStage Tally geometry .. py:method:: _create_geometry() .. py:method:: plot(run_mode, runtime_params, *_args, debug: bool = False) -> tuple[openmc.Model, PlotConfig] Plot an openmc run .. py:method:: volume(run_mode, runtime_params, *_args, debug: bool = False) -> tuple[openmc.Model, None] Volume calculation on openmc run .. py:class:: OpenMCDAGSetup(codes_name: str, cross_section_xml: str, eq: bluemira.equilibria.equilibrium.Equilibrium, source, materials, dag_model_path: pathlib.Path) Bases: :py:obj:`OpenMCBaseSetup` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCDAGSetup :parts: 1 :private-bases: Setup for openmc DAGMC run .. py:attribute:: dag_model_path .. py:method:: _create_geometry() .. py:property:: tally_mats :type: list[openmc.Material] Tally materials .. py:property:: tally_geom :type: openmc.Geometry Tally geometry .. py:method:: plot(run_mode, runtime_params, *_args, debug: bool = False) -> tuple[openmc.Model, PlotConfig] Plot an openmc run .. py:method:: volume(run_mode, runtime_params, *_args, debug: bool = False) -> tuple[openmc.Model, None] Volume calculation on openmc run .. py:class:: OpenMCRun(out_path: pathlib.Path, codes_name: str) Bases: :py:obj:`bluemira.codes.interface.CodesTask` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCRun :parts: 1 :private-bases: Run task for OpenMC solver .. py:attribute:: out_path .. py:method:: _run(run_mode, function, **kwargs) :staticmethod: Run openmc .. py:method:: run(run_mode, model: openmc.Model, _config: SourceInfo, *, debug: bool = False) Run stage for run task .. py:method:: plot(run_mode, model: openmc.Model, config: PlotConfig, **_kwargs) Plot stage for run task .. py:method:: volume(run_mode, model: openmc.Model, _config: None, *, debug: bool = False) Stochastic volume stage for run task .. py:class:: OpenMCCSGTeardown(cell_arrays: bluemira.codes.openmc.make_csg.CellStage, pre_cell_model: bluemira.radiation_transport.neutronics.neutronics_axisymmetric.NeutronicsReactor, out_path: str, codes_name: str) Bases: :py:obj:`bluemira.codes.interface.CodesTeardown` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCCSGTeardown :parts: 1 :private-bases: Teardown task for OpenMC solver .. py:attribute:: out_path .. py:attribute:: cell_arrays .. py:attribute:: pre_cell_model .. py:method:: run(universe, source_info: SourceInfo, statepoint_file) Run stage for Teardown task .. py:method:: plot(_universe, _source_info, fig: FigureData, **_kwargs) :staticmethod: Plot stage for Teardown task .. py:method:: volume(_universe, _source_params, _statepoint_file) -> dict[int, float] Stochastic volume stage for teardown task .. py:class:: OpenMCDAGTeardown(out_path: str, codes_name: str) Bases: :py:obj:`bluemira.codes.interface.CodesTeardown` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCDAGTeardown :parts: 1 :private-bases: Teardown for DAGMC run .. py:attribute:: out_path .. py:method:: run(universe, source_info: SourceInfo, statepoint_file) :staticmethod: Run stage for Teardown task .. py:method:: plot(_universe, _source_info, fig: FigureData, **_kwargs) :staticmethod: Plot stage for Teardown task .. py:method:: volume(_universe, _source_params, _statepoint_file) -> dict[int, float] :abstractmethod: Stochastic volume stage for teardown task .. py:data:: TALLY_FUNCTION_TYPE .. py:class:: OpenMCNeutronicsSolver(params: dict | bluemira.base.parameter_frame.ParameterFrame, build_config: dict, eq: bluemira.equilibria.equilibrium.Equilibrium, source: NeutronSourceCreator) Bases: :py:obj:`bluemira.codes.interface.CodesSolver`, :py:obj:`abc.ABC` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCNeutronicsSolver :parts: 1 :private-bases: OpenMC 2D neutronics solver .. py:attribute:: params :type: bluemira.codes.openmc.params.OpenMCNeutronicsSolverParams .. py:attribute:: setup_cls :type: type[OpenMCBaseSetup] Class defining the run modes for the setup stage of the solver. Typically, this class performs parameter mappings for some external code, or derives dependent parameters. But it can also define any required non-computational set up. .. py:attribute:: teardown_cls :type: type[bluemira.codes.interface.CodesTeardown] Class defining the run modes for the teardown stage of the solver. This class should perform any clean-up operations required by the solver. This may be deleting temporary files, or could involve mapping parameters from some external code to bluemira parameters. .. py:attribute:: name :type: str :value: 'OpenMC' The name of the solver. In the base class, this is used to find mappings and specialise error messages for the concrete solver. .. py:attribute:: param_cls :type: type[bluemira.codes.openmc.params.OpenMCNeutronicsSolverParams] .. py:attribute:: run_mode_cls :type: type[OpenMCRunModes] Class enumerating the run modes for this solver. Common run modes are RUN, MOCK, READ, etc,. .. py:attribute:: run_cls :type: type[OpenMCRun] Class defining the run modes for the computational stage of the solver. This class is where computations should be defined. This may be something like calling a bluemira problem, or executing some external code or process. .. py:attribute:: build_config .. py:attribute:: out_path .. py:attribute:: eq .. py:property:: source :type: NeutronSourceCreator Source term for OpenMC .. py:property:: tally_function :type: TALLY_FUNCTION_TYPE Function used to set up tallies .. py:method:: execute(run_mode, *, debug=False) -> tuple[bluemira.codes.openmc.output.OpenMCCSGResult | bluemira.codes.openmc.output.OpenMCDAGMCResult, bluemira.base.parameter_frame.ParameterFrame] | dict[int, float] Execute the setup, run, and teardown tasks, in order. .. py:method:: _single_run(run_mode: OpenMCRunModes, source_params: bluemira.codes.openmc.params.PlasmaSourceParameters, runtime_params: OpenMCSimulationRuntimeParameters, *, debug=False) -> tuple[bluemira.codes.openmc.output.OpenMCCSGResult | bluemira.codes.openmc.output.OpenMCDAGMCResult, bluemira.base.parameter_frame.ParameterFrame] | dict[int, float] .. py:class:: OpenMCCSGNeutronicsSolver(params: dict | bluemira.base.parameter_frame.ParameterFrame, build_config: dict, eq: bluemira.equilibria.equilibrium.Equilibrium, source: NeutronSourceCreator, neutronics_model: bluemira.radiation_transport.neutronics.neutronics_axisymmetric.NeutronicsReactor, op_cond: matproplib.conditions.OperationalConditions, tally_function: TALLY_FUNCTION_TYPE | None = None) Bases: :py:obj:`OpenMCNeutronicsSolver` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCCSGNeutronicsSolver :parts: 1 :private-bases: Solver for OpenMC CSG neutronics .. py:attribute:: setup_cls :type: type[OpenMCCSGSetup] Class defining the run modes for the setup stage of the solver. Typically, this class performs parameter mappings for some external code, or derives dependent parameters. But it can also define any required non-computational set up. .. py:attribute:: teardown_cls :type: type[bluemira.codes.interface.CodesTeardown] Class defining the run modes for the teardown stage of the solver. This class should perform any clean-up operations required by the solver. This may be deleting temporary files, or could involve mapping parameters from some external code to bluemira parameters. .. py:attribute:: neutronics_model .. py:attribute:: materials .. py:attribute:: cell_arrays .. py:attribute:: tally_function Function used to set up tallies .. py:method:: _single_run(run_mode: OpenMCRunModes, source_params: bluemira.codes.openmc.params.PlasmaSourceParameters, runtime_params: OpenMCSimulationRuntimeParameters, *, debug=False) -> tuple[bluemira.codes.openmc.output.OpenMCCSGResult, bluemira.base.parameter_frame.ParameterFrame] | dict[int, float] .. py:class:: OpenMCDAGMCNeutronicsSolver(params: dict | bluemira.base.parameter_frame.ParameterFrame, build_config: dict, eq: bluemira.equilibria.equilibrium.Equilibrium, source: NeutronSourceCreator, dagmc_model_path: pathlib.Path, materials, tally_function: TALLY_FUNCTION_TYPE | None = None) Bases: :py:obj:`OpenMCNeutronicsSolver` .. autoapi-inheritance-diagram:: bluemira.codes.openmc.solver.OpenMCDAGMCNeutronicsSolver :parts: 1 :private-bases: Solver for OpenMC DAGMC neutronics .. py:attribute:: setup_cls :type: type[OpenMCDAGSetup] Class defining the run modes for the setup stage of the solver. Typically, this class performs parameter mappings for some external code, or derives dependent parameters. But it can also define any required non-computational set up. .. py:attribute:: teardown_cls :type: type[bluemira.codes.interface.CodesTeardown] Class defining the run modes for the teardown stage of the solver. This class should perform any clean-up operations required by the solver. This may be deleting temporary files, or could involve mapping parameters from some external code to bluemira parameters. .. py:attribute:: dagmc_model_path .. py:attribute:: materials .. py:attribute:: tally_function Function used to set up tallies .. py:method:: _single_run(run_mode: OpenMCRunModes, source_params: bluemira.codes.openmc.params.PlasmaSourceParameters, runtime_params: OpenMCSimulationRuntimeParameters, *, debug=False) -> tuple[bluemira.codes.openmc.output.OpenMCDAGMCResult, bluemira.base.parameter_frame.ParameterFrame] | dict[int, float]