|
@@ -0,0 +1,40 @@
|
|
|
|
|
+use std::f64::consts::PI;
|
|
|
|
|
+
|
|
|
|
|
+const ALPHA : f64 = 8.1e-3;
|
|
|
|
|
+
|
|
|
|
|
+const BETA : f64 = 0.74;
|
|
|
|
|
+
|
|
|
|
|
+//Wind Speed at 19 m above sea level
|
|
|
|
|
+const U19_5 : f64 = 19.5;
|
|
|
|
|
+
|
|
|
|
|
+const G : f64 = 9.81;
|
|
|
|
|
+
|
|
|
|
|
+const OMEGA_0 : f64 = G / U19_5;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+fn model_wiki_waves(f:f64)->f64{
|
|
|
|
|
+ let omega = 2.0 * PI * f;
|
|
|
|
|
+ let a : f64 = ALPHA * G.powi(2) / omega.powi(5);
|
|
|
|
|
+ let b = (-1. * BETA*(omega/OMEGA_0).powi(4)).exp();
|
|
|
|
|
+
|
|
|
|
|
+ return a * b;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const LAMBDA: f64 = 0.1;
|
|
|
|
|
+
|
|
|
|
|
+const K : f64 = 2.0 * PI / LAMBDA;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+fn X_wave(a:f64,b:f64,t:f64)->f64{
|
|
|
|
|
+ let C : f64 = (G / K).sqrt();
|
|
|
|
|
+ let result = a + (((K*b).exp()) / K) * (K*(a+C*t)).sin();
|
|
|
|
|
+
|
|
|
|
|
+ return result
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+fn Y_wave(a:f64,b:f64,t:f64)->f64{
|
|
|
|
|
+ let C : f64 = (G / K).sqrt();
|
|
|
|
|
+ let result = b - (((K*b).exp()) / K) * (K*(a+C*t)).cos();
|
|
|
|
|
+
|
|
|
|
|
+ return result
|
|
|
|
|
+}
|