bluemira.fuel_cycle.cycle ========================= .. py:module:: bluemira.fuel_cycle.cycle .. autoapi-nested-parse:: Full fuel cycle model object Classes ------- .. autoapisummary:: bluemira.fuel_cycle.cycle.EUDEMOFuelCycleModel bluemira.fuel_cycle.cycle.EDFCMParams Module Contents --------------- .. py:class:: EUDEMOFuelCycleModel(params: EDFCMParams | dict[str, float] | None = None, build_config: dict[str, Any] | None = None) Tritium fuel cycle object. Takes a lifecycle timeline and interprets it to reach tritium start-up inventory and inventory doubling time estimates. :param params: The parameters for the model. See :class:`~bluemira.fuel_cycle.cycle.EDFCMParams` for list of available parameters. :param build_config: Configuration options for the model. Options are: * verbose: bool (False) Print debugging information. * timestep: float (1200.0) The time step in the cycle [s]. * conv_thresh: float (2e-4) The convergence threshold in the cycle. * n: int (length of timeline['time']) The no. of time steps to use from the the timeline. .. py:attribute:: verbose .. py:attribute:: timestep .. py:attribute:: conv_thresh .. py:attribute:: n .. py:method:: _constructors() .. py:method:: run(timeline: bluemira.fuel_cycle.timeline.Timeline) Run the fuel cycle model. :param timeline: Timeline with which to run the model .. py:method:: finalise() Perform clean-up fudge to ensure all tritium returns to stores after the end of the reactor life. .. py:method:: initialise_arrays(timeline: bluemira.fuel_cycle.timeline.Timeline, n: int) Initialise timeline arrays for TFV model. .. rubric:: Notes Gas puff timeline mapped to burn signal. .. py:method:: seed_t() Seed an initial value to the model. .. py:method:: tbreed(TBR: float, m_T_0: float) -> numpy.ndarray Ideal system without T sequestration. Used for plotting and sanity. :returns: Tritium breeding .. py:method:: plasma(eta_iv: float, max_inventory: float, flows: list[numpy.ndarray] | None = None) -> numpy.ndarray In-vessel environment :param eta_iv: In-vessel accumulation efficiency 0 <= float <= 1 :param max_inventory: T inventory limit of in-vessel environment [kg] (e.g. 0.7 kg in ITER in-vessel) :param flows: Additional flows to add into plasma :returns: Flow-rate out of the system [kg/s] .. py:method:: blanket(eta_b: float, max_inventory: float) -> numpy.ndarray The tritium breeding system. Dumps stored inventory at blanket change. :param eta_b: The retention efficiency parameter for the blanket :param max_inventory: The maximum inventory in the blanket :rtype: Flow-rate out of the system [kg/s] .. py:method:: tfv(eta_tfv: float, flows: list[numpy.ndarray]) -> numpy.ndarray The TFV system where the tritium flows from the BB and plasma are combined. :param eta_tfv: Detritiation factor of the system :param flows: The flows to be added to the TFV block :rtype: Flow-rate out of the system [kg/s] .. py:method:: stack(flows: list[numpy.ndarray]) Exhaust to environment .. py:method:: injector(flows: list[numpy.ndarray]) -> numpy.ndarray Pellet injection system assumed :returns: injector mass out .. py:method:: recycle() The main loop of the fuel cycle, which is called recursively until the convergence criterion is met. .. py:method:: plot() Plot the results of the fuel cycle model. .. py:method:: plot_m_T(**kwargs) Plot the evolution of the tritium masses over time. :returns: The plot axis .. py:method:: plot_inventory(**kwargs) Plot the evolution of the tritium inventories (including sequestered) over time. .. py:method:: _adjust_inv_plot(t, inventory, thresh=0.2) :staticmethod: Plot correction for compressed time inventories :returns: inventory .. py:method:: calc_t_d() -> float Calculate the doubling time of a fuel cycle timeline, assuming that a future tokamak requires the same start-up inventory as the present one. :returns: * *arg_t_d* -- index of doubling time in time array * Doubling time of the tritium fuel cycle [y] :math:`t_{d} = t[\text{max}(\text{argmin}\lvert m_{T_{store}}-I_{TFV_{min}}-m_{T_{start}}\rvert))]` .. py:method:: calc_t_infl() -> tuple[int, float] Calculate the inflection time of the reactor tritium inventory :returns: * *arg_t_infl* -- index of inflection time in time array * inflection time .. py:method:: _plot_t_d(**kwargs) .. py:method:: _plot_t_infl(arg, **kwargs) .. py:method:: calc_m_release() -> float Calculate the tritium release rate from the entire system to the environment. :returns: Tritium release rate [kg/yr] .. py:method:: sanity() Check that no tritium is lost (graphically). .. py:class:: EDFCMParams Parameters required to run :class:`~bluemira.fuel_cycle.cycle.EUDEMOFuelCycleModel`. .. py:attribute:: TBR :type: float :value: 1.05 Tritium breeding ratio [dimensionless]. .. py:attribute:: f_b :type: float :value: 0.015 Burn-up fraction [dimensionless]. .. py:attribute:: m_gas :type: float :value: 50 Gas puff flow rate [Pa m^3/s]. To maintain detachment - no chance of fusion from gas injection. .. py:attribute:: A_global :type: float :value: 0.3 Load factor [dimensionless]. .. py:attribute:: r_learn :type: float :value: 1 Learning rate [dimensionless]. .. py:attribute:: t_pump :type: float :value: 100 Time in DIR loop [s]. Time between exit from plasma and entry into plasma through DIR loop. .. py:attribute:: t_exh :type: float :value: 3600 Time in INDIR loop [s]. Time between exit from plasma and entry into TFV systems INDIR. .. py:attribute:: t_ters :type: float :value: 18000 Time from BB exit to TFV system [s]. .. py:attribute:: t_freeze :type: float :value: 1800 Time taken to freeze pellets [s]. .. py:attribute:: f_dir :type: float :value: 0.9 Fraction of flow through DIR loop [dimensionless]. .. py:attribute:: t_detrit :type: float :value: 36000 Time in detritiation system [s]. .. py:attribute:: f_detrit_split :type: float :value: 0.9999 Fraction of detritiation line tritium extracted [dimensionless]. .. py:attribute:: f_exh_split :type: float :value: 0.99 Fraction of exhaust tritium extracted [dimensionless]. .. py:attribute:: eta_fuel_pump :type: float :value: 0.9 Efficiency of fuel line pump [dimensionless]. Pump which pumps down the fuelling lines. .. py:attribute:: eta_f :type: float :value: 0.5 Fuelling efficiency [dimensionless]. Efficiency of the fuelling lines prior to entry into the VV chamber. .. py:attribute:: I_miv :type: float :value: 0.3 Maximum in-vessel T inventory [kg]. .. py:attribute:: I_tfv_min :type: float :value: 2 Minimum TFV inventory [kg]. Without which e.g. cryodistillation columns are not effective. .. py:attribute:: I_tfv_max :type: float :value: 2.2 Maximum TFV inventory [kg]. Account for T sequestration inside the T plant. .. py:attribute:: I_mbb :type: float :value: 0.055 Maximum BB T inventory [kg]. .. py:attribute:: eta_iv :type: float :value: 0.9995 In-vessel bathtub parameter [dimensionless]. .. py:attribute:: eta_bb :type: float :value: 0.995 BB bathtub parameter [dimensionless]. .. py:attribute:: eta_tfv :type: float :value: 0.998 TFV bathtub parameter [dimensionless]. .. py:attribute:: f_terscwps :type: float :value: 0.9999 TERS and CWPS cumulated factor [dimensionless].