use crate::atmosphere::Transmittances;
use crate::qtty::{Airmasses, OpticalDepths};
#[inline]
pub fn transmission(tau: OpticalDepths, airmass: Airmasses) -> Transmittances {
Transmittances::new((-tau.value() * airmass.value()).exp())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn zero_tau_means_unit_transmission() {
assert_eq!(
transmission(OpticalDepths::new(0.0), Airmasses::new(1.5)).value(),
1.0
);
}
#[test]
fn monotonically_decreases_in_tau() {
let t1 = transmission(OpticalDepths::new(0.1), Airmasses::new(1.0)).value();
let t2 = transmission(OpticalDepths::new(0.2), Airmasses::new(1.0)).value();
assert!(t2 < t1);
}
#[test]
fn monotonically_decreases_in_airmass() {
let t1 = transmission(OpticalDepths::new(0.1), Airmasses::new(1.0)).value();
let t2 = transmission(OpticalDepths::new(0.1), Airmasses::new(2.0)).value();
assert!(t2 < t1);
}
}