ndspec 0.1.1

A package for ocean waves and energy spectra
Documentation
use crate::core::constants::VelocityConversions;
use std::default::Default;

#[derive(Clone)]
pub struct Wind {
    pub speed: f64,
    pub direction: f64,
    pub interval: Option<f64>,
    pub elevation: Option<f64>,
}

impl Default for Wind {
    fn default() -> Self {
        Self {
            speed: 0.0,
            direction: 0.0,
            interval: Some(10.0 * 60.0),
            elevation: Some(10.0),
        }
    }
}

impl VelocityConversions for Wind {
    fn speed(&self) -> f64 {
        self.speed
    }
}

impl Wind {
    pub fn new(speed: f64, direction: f64) -> Self {
        Wind {
            speed,
            direction,
            ..Default::default()
        }
    }

    #[allow(dead_code)]
    fn set_elevation(&mut self, elevation: f64) {
        self.elevation = Some(elevation);
    }

    #[allow(dead_code)]
    fn set_interval(&mut self, interval: f64) {
        self.interval = Some(interval);
    }

    #[allow(dead_code)]
    fn change_interval(&mut self, _interval: f64) {}

    #[allow(dead_code)]
    fn speed_10min(&self) {}
}

#[cfg(test)]
mod test_wind {
    use super::*;

    #[test]
    fn test_wind() {
        let wind = Wind::new(10.0, 180.0);
        assert_eq!(wind.speed, 10.0);
        assert_eq!(wind.direction, 180.0);
        assert_eq!(wind.interval, Some(10.0 * 60.0));
        assert_eq!(wind.elevation, Some(10.0));
    }
}