Skip to main content

WindField

Trait WindField 

Source
pub trait WindField {
    // Required method
    fn wind(
        &self,
        time_s: f64,
        position_m: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>,
    ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>;
}
Expand description

A deterministic, stateless wind field: same time and position always give the same wind, so integrator substeps, snapshots and seeded reproduction are exact.

Required Methods§

Source

fn wind( &self, time_s: f64, position_m: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>, ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>

World-frame air velocity (m/s) at a time and position.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<F> WindField for &F
where F: WindField + ?Sized,

Source§

fn wind( &self, time_s: f64, position_m: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>, ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>

Source§

impl<F> WindField for Box<F>
where F: WindField + ?Sized,

Source§

fn wind( &self, time_s: f64, position_m: Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>, ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>

Implementors§

Source§

impl WindField for ConstantField

Source§

impl WindField for EkmanProfile

Source§

impl WindField for LogProfile

Source§

impl WindField for ProfileField

Source§

impl WindField for TerrainFlowField

Source§

impl WindField for WindSock

The existing segmented wind as a field: the wind at downrange position x, exactly WindSock::vector_for_range_stateless. Time, height and cross-range position are ignored.

Source§

impl<F> WindField for HeightOffset<F>
where F: WindField,