bluemira.balance_of_plant.steady_state

Crude 0-D steady-state balance of plant model. Mostly for visualisation purposes.

Attributes

CoolantPumpingT

PowerCycleEfficiencyCalcT

FractionSplitStrategyT

Classes

CoolantPumping

Pumping power strategy abstract base class

HePumping

He-cooling pumping power calculation strategy

H2OPumping

H20-cooling pumping power calculation strategy

PowerCycleEfficiencyCalc

Power cycle efficiency calculation abstract base class

PredeterminedEfficiency

Predetermined efficiency 'calculation'

SuperheatedRankine

Superheated Rankine power cycle for use with gas coolants

FractionSplitStrategy

Strategy ABC for splitting flows according to fractions.

RadChargedPowerStrategy

Strategy for distributing radiation and charged particle power from the plasma

ParasiticLoadStrategy

Strategy for calculating the parasitic loads

BoPModelParams

Parameters required to run

BalanceOfPlantModel

Balance of plant calculator for a fusion power reactor.

Module Contents

bluemira.balance_of_plant.steady_state.CoolantPumpingT
class bluemira.balance_of_plant.steady_state.CoolantPumping

Bases: abc.ABC

Inheritance diagram of bluemira.balance_of_plant.steady_state.CoolantPumping

Pumping power strategy abstract base class

abstract pump(power: float) tuple[float, float]

Calculate the pump work and electrical pumping power required for a given power.

Parameters:

power (float)

Return type:

tuple[float, float]

class bluemira.balance_of_plant.steady_state.HePumping(pressure_in: float, pressure_out: float, temp_in: float, temp_out: float, eta_isentropic: float, eta_electric: float)

Bases: CoolantPumping

Inheritance diagram of bluemira.balance_of_plant.steady_state.HePumping

He-cooling pumping power calculation strategy

Parameters:
  • pressure_in (float) – Inlet pressure [Pa]

  • pressure_out (float) – Pressure drop [Pa]

  • temp_in (float) – Inlet temperature [K]

  • temp_out (float) – Outlet temperature [K]

  • eta_isen – Isentropic efficiency of the He compressors

  • eta_el – Electrical efficiency of the He compressors

  • eta_isentropic (float)

  • eta_electric (float)

p_in
p_out
t_in
t_out
eta_isen
eta_el
pump(power: float) tuple[float, float]

Calculate the pump work and electrical pumping power required for a given power.

Parameters:

power (float) – Total blanket power excluding pumping power [W]

Returns:

  • P_pump_is – The isentropic pumping power (added to the working fluid)

  • P_pump_el – The electrical pumping power (parasitic load)

Return type:

tuple[float, float]

class bluemira.balance_of_plant.steady_state.H2OPumping(f_pump: float, eta_isentropic: float, eta_electric: float)

Bases: CoolantPumping

Inheritance diagram of bluemira.balance_of_plant.steady_state.H2OPumping

H20-cooling pumping power calculation strategy

Parameters:
  • f_pump (float) – Fraction of thermal power required to pump

  • eta_isen – Isentropic efficiency of the water pumps

  • eta_el – Electrical efficiency of the water pumps

  • eta_isentropic (float)

  • eta_electric (float)

f_pump
eta_isen
eta_el
pump(power: float) tuple[float, float]

Calculate the pump work and electrical pumping power required for a given power.

Parameters:

power (float) – Total blanket power excluding pumping power [W]

Returns:

  • P_pump_is – The isentropic pumping power (added to the working fluid)

  • P_pump_el – The eletrical pumping power (parasitic load)

Return type:

tuple[float, float]

bluemira.balance_of_plant.steady_state.PowerCycleEfficiencyCalcT
class bluemira.balance_of_plant.steady_state.PowerCycleEfficiencyCalc

Bases: abc.ABC

Inheritance diagram of bluemira.balance_of_plant.steady_state.PowerCycleEfficiencyCalc

Power cycle efficiency calculation abstract base class

abstract calculate(*args) float

Calculate the efficiency of the power cycle

Return type:

float

class bluemira.balance_of_plant.steady_state.PredeterminedEfficiency(efficiency: float)

Bases: PowerCycleEfficiencyCalc

Inheritance diagram of bluemira.balance_of_plant.steady_state.PredeterminedEfficiency

Predetermined efficiency ‘calculation’

Parameters:

efficiency (float) – The efficiency to ‘calculate’

efficiency
calculate(p_blanket: float, p_divertor: float) float

Calculate the efficiency of the power cycle

Parameters:
  • p_blanket (float) – Blanket thermal power [MW]

  • p_divertor (float) – Divertor thermal power [MW]

Returns:

The efficiency

Return type:

float

class bluemira.balance_of_plant.steady_state.SuperheatedRankine(bb_t_out: float, delta_t_turbine: float)

Bases: PowerCycleEfficiencyCalc

Inheritance diagram of bluemira.balance_of_plant.steady_state.SuperheatedRankine

Superheated Rankine power cycle for use with gas coolants

Parameters:
  • bb_t_out (float) – Breeding blanket outlet temperature [K]

  • delta_t_turbine (float) – Turbine inlet delta T [K]

bb_t_out
delta_t_turbine
calculate(p_blanket: float, p_divertor: float) float

Calculate the efficiency of the power cycle

Parameters:
  • p_blanket (float) – Blanket thermal power [MW]

  • p_divertor (float) – Divertor thermal power [MW]

Returns:

The efficiency of the power cycle

Return type:

float

bluemira.balance_of_plant.steady_state.FractionSplitStrategyT
class bluemira.balance_of_plant.steady_state.FractionSplitStrategy

Bases: abc.ABC

Inheritance diagram of bluemira.balance_of_plant.steady_state.FractionSplitStrategy

Strategy ABC for splitting flows according to fractions.

abstract split(*args)

Split flows somehow.

check_fractions(fractions: collections.abc.Iterable[float])

Check that fractions sum to 1.0

Raises:

BalanceOfPlantError – If they do not

Parameters:

fractions (collections.abc.Iterable[float])

class bluemira.balance_of_plant.steady_state.RadChargedPowerStrategy(f_core_rad_fw: float, f_sol_rad: float, f_sol_rad_fw: float, f_sol_ch_fw: float, f_fw_aux: float)

Bases: FractionSplitStrategy

Inheritance diagram of bluemira.balance_of_plant.steady_state.RadChargedPowerStrategy

Strategy for distributing radiation and charged particle power from the plasma core and scrape-off layer

Parameters:
  • f_core_rad_fw (float) – Fraction of core radiation power distributed to the first wall

  • f_sol_rad (float) – Fraction of SOL power that is radiated

  • f_sol_rad_fw (float) – Fraction of radiated SOL power that is distributed to the first wall

  • f_sol_ch_fw (float) – Fraction of SOL charged particle power that is distributed to the first wall

  • f_fw_aux (float) – Fraction of first power that actually goes into auxiliary systems

f_core_rad_fw
f_sol_rad
f_sol_rad_fw
f_sol_ch_fw
f_fw_aux
split(p_radiation: float, p_separatrix: float) tuple[float, float, float]

Split the radiation and charged particle power

Parameters:
  • p_radiation (float) – Plasma core radiation power

  • p_separatrix (float) – Charged particle power crossing the separatrix

Returns:

  • p_rad_sep_blk – Radiation power from separatrix to blanket

  • p_rad_sep_div – Radiation power from separatrix to divertor

  • p_rad_sep_aux – Radiation power from separatrix to auxiliaries

Return type:

tuple[float, float, float]

class bluemira.balance_of_plant.steady_state.ParasiticLoadStrategy

Bases: abc.ABC

Inheritance diagram of bluemira.balance_of_plant.steady_state.ParasiticLoadStrategy

Strategy for calculating the parasitic loads

abstract calculate(**kwargs) tuple[float, float, float, float]

Calculate the parasitic loads somehow

Returns:

  • p_mag – Parasitic loads to power the magnets

  • p_cryo – Parasitic loads to power the cryoplant

  • p_t_plant – Parasitic loads to power the tritium plant

  • p_other – Parasitic loads to power other miscellaneous things

Return type:

tuple[float, float, float, float]

class bluemira.balance_of_plant.steady_state.BoPModelParams

Bases: bluemira.base.parameter_frame.ParameterFrame

Inheritance diagram of bluemira.balance_of_plant.steady_state.BoPModelParams

Parameters required to run BalanceOfPlantModel.

P_fus_DT: bluemira.base.parameter_frame.Parameter[float]
P_fus_DD: bluemira.base.parameter_frame.Parameter[float]
P_rad: bluemira.base.parameter_frame.Parameter[float]
P_hcd_ss: bluemira.base.parameter_frame.Parameter[float]
P_hcd_ss_el: bluemira.base.parameter_frame.Parameter[float]
P_n_blanket: bluemira.base.parameter_frame.Parameter[float]
P_n_divertor: bluemira.base.parameter_frame.Parameter[float]
P_n_vessel: bluemira.base.parameter_frame.Parameter[float]
P_n_aux: bluemira.base.parameter_frame.Parameter[float]
P_n_e_mult: bluemira.base.parameter_frame.Parameter[float]
P_n_decay: bluemira.base.parameter_frame.Parameter[float]
class bluemira.balance_of_plant.steady_state.BalanceOfPlantModel(params: bluemira.base.parameter_frame.typed.ParameterFrameLike, rad_sep_strat: FractionSplitStrategyT, blanket_pump_strat: CoolantPumpingT, divertor_pump_strat: CoolantPumpingT, bop_cycle_strat: PowerCycleEfficiencyCalcT, parasitic_load_strat: ParasiticLoadStrategy)

Balance of plant calculator for a fusion power reactor.

Parameters:
  • params (bluemira.base.parameter_frame.typed.ParameterFrameLike) –

    Structure containing input parameters. If this is a dictionary, required keys are:

    • P_fus_DT: float

    • P_fus_DD: float

    • P_rad: float

    • P_hcd_ss: float

    • P_hcd_ss_el: float

    See BoPModelParams for parameter details.

  • rad_sep_strat (FractionSplitStrategyT) – Strategy to calculate the where the radiation and charged particle power in the scrape-off-layer is carried to

  • blanket_pump_strat (CoolantPumpingT) – Strategy to calculate the coolant pumping power for the blanket

  • divertor_pump_strat (CoolantPumpingT) – Strategy to calculate the coolant pumping power for the divertor

  • bop_cycle_strat (PowerCycleEfficiencyCalcT) – Strategy to calculate the balance of plant thermal efficiency

  • parasitic_load_strat (ParasiticLoadStrategy) – Strategy to calculate the parasitic loads

Notes

\[\begin{split}P_{el}={\eta}_{BOP} & \Bigg[\Bigg(\frac{4}{5}P_{fus}f_{nrgm}- P_{n_{aux}}-P_{n_{DIV}}+f_{SOL_{rad}}f_{SOL_{ch}} \Big(\frac{P_{fus}}{5}+P_{HCD}\Big)\Bigg) \Big(1+\frac{f_{p_{BB}}}{1-f_{p_{BB}}}\Big) \\ & +\Bigg(P_{n_{DIV}}+f_{SOL_{rad}}f_{SOL_{ch}}f_{fw} \Big(\frac{P_{fus}}{5}+P_{HCD}\Big)\Bigg) \Big(1+\frac{f_{p_{DIV}}}{1-f_{p_{DIV}}}\Big)\Bigg]\end{split}\]
_plotter
params: BoPModelParams
rad_sep_strat
blanket_pump_strat
divertor_pump_strat
bop_strat
parasitic_strat
build()

Carry out the balance of plant calculation

sanity()

Perform a series of sanity checks.

plot(title: str = '', **kwargs)

Plot the BalanceOfPlant object.

Parameters:
  • title (str) – Title to print on the plot

  • kwargs – see BALANCE_PLOT_DEFAULTS for details

Returns:

The plot axis