From b08286aded6583a9280f815ada442b323b8509c2 Mon Sep 17 00:00:00 2001
From: "Mads M. Pedersen" <mmpe@dtu.dk>
Date: Fri, 28 Jul 2017 08:50:44 +0200
Subject: [PATCH] fit ae2var in mann_parameters.py

---
 wetb/wind/turbulence/mann_parameters.py | 29 +++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/wetb/wind/turbulence/mann_parameters.py b/wetb/wind/turbulence/mann_parameters.py
index f4e5f29b..cf33153e 100644
--- a/wetb/wind/turbulence/mann_parameters.py
+++ b/wetb/wind/turbulence/mann_parameters.py
@@ -197,6 +197,35 @@ def residual(ae, L, G, k1, uu, vv=None, ww=None, uw=None, log10_bin_size=.2):
 
     return np.sqrt(((bk1 * sp_meas - bk1 * sp_fit) ** 2).mean())
 
+
+def fit_ae2var(variance, L, G):
+    """Fit alpha-epsilon to match variance of time series
+
+    Parameters
+    ----------
+    variance : array-like
+        variance of u vind component
+    L : int or float
+        Length scale of Mann model
+    G : int or float
+        Gamma of Mann model
+
+    Returns
+    -------
+    ae : float
+        Alpha epsilon^(2/3) of Mann model that makes the energy of the model equal to the varians of u
+    """
+    
+    k1 = np.logspace(1,10,1000)/100000000
+    def get_var(uu):
+        return np.trapz(2 * uu[:], k1[:])
+
+    v1 = get_var(get_mann_model_spectra(0.1, L, G, k1)[0])
+    v2 = get_var(get_mann_model_spectra(0.2, L, G, k1)[0])
+    ae = (variance - v1) / (v2 - v1) * .1 + .1
+    return ae
+
+
 def fit_ae(sf, u, L, G, min_bin_count=None, plt=False):
     """Fit alpha-epsilon to match variance of time series
 
-- 
GitLab