Exemplo n.º 1
0
        public void Get_Data_Count_Test()
        {
            MCP_tool ThisMCP     = new MCP_tool();
            Stats    These_Stats = new Stats();
            string   filename    = "C:\\Users\\OEE2015_12\\Dropbox (OEE)\\Software - Development\\MCP\\v1.0\\QA Backup files\\MERRA2_Lat_41.5_Long_-84.375_19850101_to_20151231_50mWS_50mWD_10mTemp.csv";

            ThisMCP.Import_Reference_data(filename);
            ThisMCP.Num_WD_Sectors  = 16;
            ThisMCP.Num_Hourly_Ints = 1;
            ThisMCP.Num_Temp_bins   = 2;
            ThisMCP.Find_Min_Max_temp();

            DateTime Start = Convert.ToDateTime("3/4/2009 4:00:00 AM");
            DateTime End   = Convert.ToDateTime("5/16/2009 4:00:00 PM");

            // Test 1
            int This_Count = These_Stats.Get_Data_Count(ThisMCP.Ref_Data, Start, End, 7, 0, 1, ThisMCP, false);

            Assert.AreEqual(This_Count, 45, 0, "Wrong data count");

            ThisMCP.Num_WD_Sectors  = 4;
            ThisMCP.Num_Hourly_Ints = 2;
            ThisMCP.Num_Temp_bins   = 2;
            ThisMCP.Find_Min_Max_temp();

            Start = Convert.ToDateTime("1/1/1985 12:00:00 AM");
            End   = Convert.ToDateTime("12/31/2015 12:00:00 AM");

            // Test 2
            This_Count = These_Stats.Get_Data_Count(ThisMCP.Ref_Data, Start, End, 0, 1, 0, ThisMCP, false);
            Assert.AreEqual(This_Count, 14114, 0, "Wrong data count");
        }
Exemplo n.º 2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>  Returns the count of Site_data for specified start/end time, WD bounds, Hourly bin
        ///             and Temp bin. </summary>
        ///
        /// <remarks>  Liz, 5/26/2017. </remarks>
        ///
        /// <param name="Site">         Target or Reference Site_data. </param>
        /// <param name="Start_time">   Start time. </param>
        /// <param name="End_time">     End time. </param>
        /// <param name="WD_index">     Wind direction index. </param>
        /// <param name="Hourly_index"> Hourly bin. </param>
        /// <param name="Temp_index">   Temperature bin. </param>
        /// <param name="This_MCP">     MCP object. </param>
        /// <param name="Get_All">      True to get count of all data. </param>
        ///
        /// <returns>   The data count. </returns>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public int Get_Data_Count(MCP_tool.Site_data[] Site, DateTime Start_time, DateTime End_time, int WD_index, int Hourly_index, int Temp_index,
                                  MCP_tool This_MCP, bool Get_All)
        {
            int Avg_count     = 0;
            int This_WD_ind   = 0;
            int This_Hour_ind = 0;
            int This_Temp_ind = 0;

            foreach (MCP_tool.Site_data This_Site in Site)
            {
                if (This_Site.This_Date >= Start_time && This_Site.This_Date <= End_time)
                {
                    if (Get_All == true)
                    {
                        Avg_count++;
                    }
                    else
                    {
                        This_WD_ind   = This_MCP.Get_WD_ind(This_Site.This_WD, This_MCP.Get_Num_WD());
                        This_Hour_ind = This_MCP.Get_Hourly_Index(This_Site.This_Date.Hour);
                        This_Temp_ind = This_MCP.Get_Temp_ind(This_WD_ind, This_Hour_ind, This_Site.This_Temp);

                        if ((This_WD_ind == WD_index) && (This_Hour_ind == Hourly_index) && (This_Temp_ind == Temp_index))
                        {
                            Avg_count++;
                        }
                    }
                }
            }

            return(Avg_count);
        }
Exemplo n.º 3
0
        public void Calc_Avg_WS_Test()
        {
            MCP_tool ThisMCP  = new MCP_tool();
            string   filename = "C:\\Users\\OEE2015_12\\Dropbox (OEE)\\Software - Development\\MCP\\v1.0\\QA Backup files\\Paulding 10-min data_hourly.csv";

            ThisMCP.Import_Target_Data(filename);

            Stats    ThisStats = new Stats();
            DateTime Start     = Convert.ToDateTime("10/1/2008 12:00:00 AM");
            DateTime End       = Convert.ToDateTime("10/31/2008 11:00:00 PM");

            // Test 1
            float This_Avg = ThisStats.Calc_Avg_WS(ThisMCP.Target_Data, 6, 7, Start, End, 90, 270, true, 0, true, 0, ThisMCP);

            Assert.AreEqual(This_Avg, 6.49889, 0.001, "Wrong Avg WS");

            // Test 2
            Start = Convert.ToDateTime("2/1/2009 12:00:00 AM");
            End   = Convert.ToDateTime("2/13/2009 1:00:00 PM");
            ThisMCP.Num_Hourly_Ints = 2;

            This_Avg = ThisStats.Calc_Avg_WS(ThisMCP.Target_Data, 5, 10, Start, End, 210, 300, false, 0, true, 0, ThisMCP);
            Assert.AreEqual(This_Avg, 6.783322, 0.001, "Wrong Avg WS");
        }
Exemplo n.º 4
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>  Calculates and returns the average wind speed at Site for specified WS bounds,
        ///             start/end time, hourly bin and WD bounds</summary>
        ///
        /// <remarks>   Liz, 5/26/2017. </remarks>
        ///
        /// <param name="Site">         WS, WD and temperature time series data. </param>
        /// <param name="Min_WS">       Wind speed filter minimum. </param>
        /// <param name="Max_WS">       Wind speed filter maximum. </param>
        /// <param name="Start_time">   Start time. </param>
        /// <param name="End_time">     End time. </param>
        /// <param name="Min_WD">       Wind direction filter minimum. </param>
        /// <param name="Max_WD">       Wind direction filter maximum. </param>
        /// <param name="All_hours">    True if all hours are to be used in average WS calculation. </param>
        /// <param name="Hourly_index"> Zero-based index of the hour of day. </param>
        /// <param name="All_Temps">    True if all temperature bins are to be used in average WS calculation. </param>
        /// <param name="Temp_index">   Zero-based index of  hour of day. </param>
        /// <param name="This_MCP">     MCP object </param>
        ///
        /// <returns>   The calculated average wind speed. </returns>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public float Calc_Avg_WS(MCP_tool.Site_data[] Site, float Min_WS, float Max_WS, DateTime Start_time, DateTime End_time, float Min_WD, float Max_WD,
                                 bool All_hours, int Hourly_index, bool All_Temps, int Temp_index, MCP_tool This_MCP)
        {
            float Avg_WS        = 0;
            int   Avg_count     = 0;
            int   This_WD_ind   = 0;
            int   This_Hour_ind = 0;
            int   This_Temp_ind = 0;

            foreach (MCP_tool.Site_data This_Site in Site)
            {
                This_WD_ind   = This_MCP.Get_WD_ind(This_Site.This_WD, This_MCP.Get_Num_WD());
                This_Hour_ind = This_MCP.Get_Hourly_Index(This_Site.This_Date.Hour);
                This_Temp_ind = This_MCP.Get_Temp_ind(This_WD_ind, This_Hour_ind, This_Site.This_Temp);

                if (This_Site.This_Date >= Start_time && This_Site.This_Date <= End_time && This_Site.This_WS > Min_WS && This_Site.This_WS < Max_WS &&
                    (All_hours == true || This_Hour_ind == Hourly_index) && (All_Temps == true || This_Temp_ind == Temp_index))
                {
                    if (Max_WD > Min_WD)
                    {
                        if (This_Site.This_WD >= Min_WD && This_Site.This_WD <= Max_WD)
                        {
                            Avg_WS    = Avg_WS + This_Site.This_WS;
                            Avg_count = Avg_count + 1;
                        }
                    }
                    else if (This_Site.This_WD >= Min_WD || This_Site.This_WD <= Max_WD)
                    {
                        Avg_WS    = Avg_WS + This_Site.This_WS;
                        Avg_count = Avg_count + 1;
                    }
                }
            }

            if (Avg_count > 0)
            {
                Avg_WS = Avg_WS / Avg_count;
            }

            return(Avg_WS);
        }