"""Calculate rho_star, which gives the radio of the device size to the Larmor radius."""
import numpy as np
from ...algorithm_class import Algorithm
from ...unit_handling import Unitfull, ureg
[docs]
def calc_larmor_radius(species_temperature: Unitfull, magnetic_field_strength: Unitfull, species_mass: Unitfull) -> Unitfull:
"""Calculate the Larmor radius.
Equation 1 from :cite:`Eich_2020`
"""
return np.sqrt(species_temperature * species_mass) / (ureg.e * magnetic_field_strength)
[docs]
@Algorithm.register_algorithm(return_keys=["rho_star"])
def calc_rho_star(
average_ion_mass: Unitfull, average_ion_temp: Unitfull, magnetic_field_on_axis: Unitfull, minor_radius: Unitfull
) -> Unitfull:
"""Calculate rho* (normalized gyroradius).
Equation 1a from :cite:`Verdoolaege_2021`
Args:
average_ion_mass: [amu] :term:`glossary link<average_ion_mass>`
average_ion_temp: [keV] :term:`glossary link<average_ion_temp>`
magnetic_field_on_axis: :term:`glossary link<magnetic_field_on_axis>`
minor_radius: [m] :term:`glossary link<minor_radius>`
Returns:
rho_star [~]
"""
rho_s = calc_larmor_radius(
species_temperature=average_ion_temp, magnetic_field_strength=magnetic_field_on_axis, species_mass=average_ion_mass
)
return rho_s / minor_radius