///|
pub fn debye_length(
electron_temperature_k : Double,
electron_density_m3 : Double,
) -> Double {
let top = vacuum_permittivity * boltzmann_constant * electron_temperature_k
let bottom = electron_density_m3 * elementary_charge * elementary_charge
(top / bottom).sqrt()
}
///|
pub fn plasma_frequency(
density_m3 : Double,
charge_c? : Double = elementary_charge,
mass_kg? : Double = electron_mass,
) -> Double {
(density_m3 * charge_c * charge_c / (vacuum_permittivity * mass_kg)).sqrt()
}
///|
pub fn electron_plasma_frequency(electron_density_m3 : Double) -> Double {
plasma_frequency(electron_density_m3)
}
///|
pub fn gyro_frequency(
charge_c : Double,
magnetic_field_t : Double,
mass_kg : Double,
) -> Double {
charge_c * magnetic_field_t / mass_kg
}
///|
pub fn plasma_parameter(
electron_density_m3 : Double,
debye_length_m : Double,
) -> Double {
4.0 *
pi *
electron_density_m3 *
debye_length_m *
debye_length_m *
debye_length_m /
3.0
}
///|
pub fn landau_damping_rate(
wave_number_m : Double,
electron_temperature_k : Double,
electron_density_m3 : Double,
) -> Double {
let lambda_d = debye_length(electron_temperature_k, electron_density_m3)
let k_lambda = wave_number_m * lambda_d
if k_lambda <= 0.0 {
0.0
} else {
let omega_p = electron_plasma_frequency(electron_density_m3)
let exponent = -1.0 / (2.0 * k_lambda * k_lambda) - 1.5
-(pi / 8.0).sqrt() *
omega_p /
(k_lambda * k_lambda * k_lambda) *
@math.exp(exponent)
}
}