Source code for cfspopcon.formulas.fusion_power.fusion_gain

"""Calculate the fusion gain factor."""

from ...algorithm_class import Algorithm
from ...unit_handling import Unitfull, ureg


[docs] @Algorithm.register_algorithm(return_keys=["Q"]) def calc_fusion_gain(P_fusion: Unitfull, P_ohmic: Unitfull, P_auxiliary_launched: Unitfull) -> Unitfull: """Calculate the fusion gain, using the launched power in the denominator. This is the thermal gain using the launched power. A slightly more optimistic Q can be obtained by using the absorbed power (P_external) in the denominator, but for scientific breakeven the launched power will be used. The denominator is forced to be at least 1W, to prevent a division-by-zero error. Args: P_fusion: [MW] :term:`glossary link<P_fusion>` P_ohmic: [MW] :term:`glossary link<P_ohmic>` P_auxiliary_launched: [MW] :term:`glossary link<P_auxiliary_launched>` Returns: :term:`Q` [~] """ Q = P_fusion / (P_ohmic + P_auxiliary_launched).clip(min=1.0 * ureg.W) return Q
[docs] @Algorithm.register_algorithm(return_keys=["fusion_triple_product"]) def calc_triple_product(peak_fuel_ion_density: Unitfull, peak_ion_temp: Unitfull, energy_confinement_time: Unitfull) -> Unitfull: """Calculate the fusion triple product. Args: peak_fuel_ion_density: [1e20 m^-3] :term:`glossary link<peak_fuel_ion_density>` peak_ion_temp: [keV] :term:`glossary link<peak_fuel_ion_density>` energy_confinement_time: [s] :term:`glossary link<energy_confinement_time>` Returns: fusion_triple_product [10e20 m**-3 keV s] """ return peak_fuel_ion_density * peak_ion_temp * energy_confinement_time