コード例 #1
0
        public void Calc_Extrap_Recovery_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);
            Met thisMet = thisInst.metList.metItem[0];

            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            thisMet.metData.startDate = Convert.ToDateTime("8/1/2008 0:00");
            thisMet.metData.endDate   = Convert.ToDateTime("1/28/2009 0:00");
            string[] filtsToApply = new string[1];
            filtsToApply[0] = "All";
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.EstimateAlpha();
            thisMet.metData.ExtrapolateData(80);

            double thisRec = thisMet.metData.CalcExtrapRecovery(thisMet.metData.simData[0]);

            Assert.AreEqual(thisRec, 0.823225309, 0.001, "Wrong extrapolated data recovery");

            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            thisMet.metData.startDate = Convert.ToDateTime("6/24/2008 0:00");
            thisMet.metData.endDate   = Convert.ToDateTime("12/2/2008 0:00");
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.EstimateAlpha();
            thisMet.metData.ExtrapolateData(80);
            thisRec = thisMet.metData.CalcExtrapRecovery(thisMet.metData.simData[0]);
            Assert.AreEqual(thisRec, 0.84269323, 0.001, "Wrong extrapolated data recovery");
        }
コード例 #2
0
        public void CalcOverallTurbulenceIntensity()
        {
            Continuum thisInst = new Continuum("");

            string fileName = testingFolder + "\\Met testing.cfm";

            thisInst.Open(fileName);

            Met thisMet = thisInst.metList.metItem[0];

            thisMet.CalcTurbulenceIntensity(thisMet.metData.startDate, thisMet.metData.endDate, 80, thisInst);
            Met.TIandCount[] thisTI = thisMet.CalcOverallTurbulenceIntensity("Average", thisInst);

            Assert.AreEqual(thisTI[3].overallTI, 0.1498, 0.001, "Wrong Avg TI Test 1");
            Assert.AreEqual(thisTI[6].overallTI, 0.0987, 0.001, "Wrong Avg TI Test 2");
            Assert.AreEqual(thisTI[9].overallTI, 0.0894, 0.001, "Wrong Avg TI Test 3");
            Assert.AreEqual(thisTI[12].overallTI, 0.1002, 0.001, "Wrong Avg TI Test 4");

            thisTI = thisMet.CalcOverallTurbulenceIntensity("Representative", thisInst);
            Assert.AreEqual(thisTI[3].overallTI, 0.2417, 0.001, "Wrong Avg TI Test 1");
            Assert.AreEqual(thisTI[6].overallTI, 0.1585, 0.001, "Wrong Avg TI Test 2");
            Assert.AreEqual(thisTI[9].overallTI, 0.1321, 0.001, "Wrong Avg TI Test 3");
            Assert.AreEqual(thisTI[12].overallTI, 0.1332, 0.001, "Wrong Avg TI Test 4");
            Assert.AreEqual(thisTI[15].overallTI, 0.1330, 0.001, "Wrong Avg TI Test 4");

            thisInst.Close();
        }
コード例 #3
0
        public void Calc_Perc_Diff_from_LT_Monthly_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MERRA_Testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            UTM_conversion.Lat_Long theseLL = thisInst.UTM_conversions.UTMtoLL(thisInst.metList.metItem[0].UTMX, thisInst.metList.metItem[0].UTMY);
            MERRA merra = thisInst.merraList.GetMERRA(theseLL.latitude, theseLL.longitude);

            double thisDiff = merra.Calc_Perc_Diff_from_LT_Monthly(merra.interpData.Monthly_Prod[0], 2008);

            Assert.AreEqual(0.390928274, thisDiff, 0.001, "Wrong Perc Diff Jan 2008");

            thisDiff = merra.Calc_Perc_Diff_from_LT_Monthly(merra.interpData.Monthly_Prod[4], 2009);
            Assert.AreEqual(-0.186664345, thisDiff, 0.001, "Wrong Perc Diff May 2009");

            thisDiff = merra.Calc_Perc_Diff_from_LT_Monthly(merra.interpData.Monthly_Prod[11], 2010);
            Assert.AreEqual(-0.2157710, thisDiff, 0.001, "Wrong Perc Diff Dec 2010");

            thisInst.Close();
        }
コード例 #4
0
        public void Calc_Perc_Diff_from_LT_Yearly_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MERRA_Testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            UTM_conversion.Lat_Long theseLL = thisInst.UTM_conversions.UTMtoLL(thisInst.metList.metItem[0].UTMX, thisInst.metList.metItem[0].UTMY);
            MERRA merra = thisInst.merraList.GetMERRA(theseLL.latitude, theseLL.longitude);

            double This_Diff = merra.Calc_Perc_Diff_from_LT_Yearly(merra.interpData.Annual_Prod, 2008);

            Assert.AreEqual(0.09389, This_Diff, 0.001, "Wrong Perc Diff 2008");

            This_Diff = merra.Calc_Perc_Diff_from_LT_Yearly(merra.interpData.Annual_Prod, 2009);
            Assert.AreEqual(-0.0113, This_Diff, 0.001, "Wrong Perc Diff 2009");

            This_Diff = merra.Calc_Perc_Diff_from_LT_Yearly(merra.interpData.Annual_Prod, 2010);
            Assert.AreEqual(-0.08254, This_Diff, 0.001, "Wrong Perc Diff 2010");

            thisInst.Close();
        }
コード例 #5
0
        public void Do_MCP_Uncertainty_test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MCP testing.cfm";

            thisInst.Open(Filename);
            Met thisMet = thisInst.metList.metItem[0];
            MCP thisMCP = thisMet.mcp;

            UTM_conversion.Lat_Long theseLL = thisInst.UTM_conversions.UTMtoLL(thisMet.UTMX, thisMet.UTMY);
            MERRA merra = thisInst.merraList.GetMERRA(theseLL.latitude, theseLL.longitude);

            thisMCP.numWD = 16;

            thisMCP.Do_MCP_Uncertainty(thisInst, merra, thisMet);

            Assert.AreEqual(thisMCP.uncertOrtho.Length, 12, 0, "Wrong number of uncertainty objects");
            Assert.AreEqual(thisMCP.uncertOrtho[0].NWindows, 12, 0, "Wrong number of monthly intervals");
            Assert.AreEqual(thisMCP.uncertOrtho[7].NWindows, 5, 0, "Wrong number ofintervals");
            Assert.AreEqual(thisMCP.uncertOrtho[5].WSize, 6, 0, "Wrong wrong window size");
            Assert.AreEqual(thisMCP.uncertOrtho[0].avg, 6.411818, 0.001, "Wrong average LT Estimate in uncertainty calculation");

            thisInst.Close();
        }
コード例 #6
0
        public void Calc_LT_Avg_Prod_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MERRA_Testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            UTM_conversion.Lat_Long theseLL = thisInst.UTM_conversions.UTMtoLL(thisInst.metList.metItem[0].UTMX, thisInst.metList.metItem[0].UTMY);
            MERRA merra = thisInst.merraList.GetMERRA(theseLL.latitude, theseLL.longitude);

            merra.Calc_LT_Avg_Prod(ref merra.interpData.Annual_Prod);

            // Test 1
            double thisProd = merra.interpData.Annual_Prod.LT_Avg;

            Assert.AreEqual(3302607.8, thisProd, 50, "Wrong LT Avg Prod");

            // Test 2
            thisProd = merra.interpData.Annual_Prod.Yearly_Prod[0].prod;
            Assert.AreEqual(3612674.8, thisProd, 50, "Wrong 2008 Prod");

            // Test 3
            Assert.AreEqual(3, merra.interpData.Annual_Prod.Yearly_Prod.Length, "Wrong number of years");

            thisInst.Close();
        }
コード例 #7
0
        public void GenerateMatrixCDFs_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MCP testing.cfm";

            thisInst.Open(Filename);
            Met thisMet = thisInst.metList.metItem[0];
            MCP thisMCP = thisMet.mcp;

            // Test 1
            thisMCP.numWD       = 4;
            thisMCP.numTODs     = 1;
            thisMCP.numSeasons  = 1;
            thisMCP.WS_BinWidth = 1;

            MCP.CDF_Obj[] ThisCDF_Obj = thisMCP.GenerateMatrixCDFs();

            // check counts of each CDF
            Assert.AreEqual(ThisCDF_Obj[6].count, 266);
            Assert.AreEqual(ThisCDF_Obj[32].count, 155);
            Assert.AreEqual(ThisCDF_Obj[70].count, 147);
            Assert.AreEqual(ThisCDF_Obj[100].count, 208);

            // check CDF in three locations
            Assert.AreEqual(ThisCDF_Obj[5].CDF[25], 0.02381, 0.01, "Wrong CDF[25] for WS_ind = 0");
            Assert.AreEqual(ThisCDF_Obj[5].CDF[40], 0.178571, 0.01, "Wrong CDF[40] for WS_ind = 0");
            Assert.AreEqual(ThisCDF_Obj[5].CDF[82], 0.940476, 0.01, "Wrong CDF[82] for WS_ind = 0");

            thisInst.Close();
        }
コード例 #8
0
        public void GetSubsetConcData_test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MCP testing.cfm";

            thisInst.Open(Filename);
            Met thisMet = thisInst.metList.metItem[0];
            MCP thisMCP = thisMet.mcp;

            thisMCP.numWD      = 8;
            thisMCP.numTODs    = 2;
            thisMCP.numSeasons = 1;

            DateTime thisStart = new DateTime(2008, 12, 1);
            DateTime thisEnd   = new DateTime(2009, 7, 1);

            thisMCP.GetSubsetConcData(thisStart, thisEnd);
            Assert.AreEqual(thisMCP.concData[0].thisDate, thisStart, "Wrong start date");
            int Last_ind = thisMCP.concData.Length - 1;

            Assert.AreEqual(thisMCP.concData[Last_ind].thisDate, thisEnd, "Wrong end date");

            thisStart = new DateTime(2009, 8, 31);
            thisEnd   = new DateTime(2009, 9, 2);

            thisMCP.GetSubsetConcData(thisStart, thisEnd);
            Assert.AreEqual(thisMCP.concData[0].thisDate, thisStart, "Wrong start date");
            Last_ind = thisMCP.concData.Length - 1;
            Assert.AreEqual(thisMCP.concData[Last_ind].thisDate, thisEnd, "Wrong end date");

            thisInst.Close();
        }
コード例 #9
0
        public void GetAlphaPValue_Test()
        {
            Continuum thisInst = new Continuum("");

            string fileName = testingFolder + "\\Met testing.cfm";

            thisInst.Open(fileName);

            Met thisMet = thisInst.metList.metItem[0];

            double thisAlphaVal = thisMet.GetAlphaPValue(5, 10, 10, thisInst, thisMet.metData.allStartDate, thisMet.metData.allEndDate);

            Assert.AreEqual(thisAlphaVal, 0.6537, 0.001, "Wrong Alpha P Value Test 1");

            thisAlphaVal = thisMet.GetAlphaPValue(5, 10, 50, thisInst, thisMet.metData.allStartDate, thisMet.metData.allEndDate);
            Assert.AreEqual(thisAlphaVal, 0.276, 0.001, "Wrong Alpha P Value Test 2");

            thisAlphaVal = thisMet.GetAlphaPValue(5, 10, 90, thisInst, thisMet.metData.allStartDate, thisMet.metData.allEndDate);
            Assert.AreEqual(thisAlphaVal, 0.0791, 0.001, "Wrong Alpha P Value Test 3");

            thisAlphaVal = thisMet.GetAlphaPValue(5, 10, 99, thisInst, thisMet.metData.allStartDate, thisMet.metData.allEndDate);
            Assert.AreEqual(thisAlphaVal, -0.0082, 0.001, "Wrong Alpha P Value Test 4");

            thisInst.Close();
        }
コード例 #10
0
        public void ExtrapolateData_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);
            Met thisMet = thisInst.metList.metItem[0];

            string[] filtsToApply = new string[1];
            filtsToApply[0] = "All";
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.EstimateAlpha();

            thisMet.metData.ExtrapolateData(80);
            thisMet.metData.ExtrapolateData(45);
            thisMet.metData.ExtrapolateData(20);

            Assert.AreEqual(thisMet.metData.simData[2].WS_WD_data[253].WS, 3.797445309, 0.001, "Wrong extrapolated wind speed Test 1");
            Assert.AreEqual(thisMet.metData.simData[1].WS_WD_data[12679].WS, 3.847447028, 0.001, "Wrong extrapolated wind speed Test 2");
            Assert.AreEqual(thisMet.metData.simData[0].WS_WD_data[5559].WS, 4.201222192, 0.001, "Wrong extrapolated wind speed Test 3");
            Assert.AreEqual(thisMet.metData.simData[2].WS_WD_data[44444].WS, 5.077628706, 0.001, "Wrong extrapolated wind speed Test 4");

            thisInst.Close();
        }
コード例 #11
0
        public void Get_Conc_WS_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            Met_Data_Filter.Anem_Data anemA = new Met_Data_Filter.Anem_Data();
            Met_Data_Filter.Anem_Data anemB = new Met_Data_Filter.Anem_Data();

            thisMet.metData.startDate = Convert.ToDateTime("1/6/2009 3:00");
            thisMet.metData.endDate   = Convert.ToDateTime("4/15/2009 16:00");

            Met_Data_Filter.Conc_WS_Data thisConcData = thisMet.metData.GetConcWS(30, "Filtered", thisInst, thisMet.name, anemA, anemB);
            Assert.AreEqual(thisConcData.anemA_WS.Length, 11166, 0, "Wrong number in Test 1");

            thisMet.metData.startDate = Convert.ToDateTime("12/15/2008 18:00");
            thisMet.metData.endDate   = Convert.ToDateTime("2/16/2009 4:00");

            thisConcData = thisMet.metData.GetConcWS(40, "Filtered", thisInst, thisMet.name, anemA, anemB);
            Assert.AreEqual(thisConcData.anemA_WS.Length, 7369, 0, "Wrong number in Test 2");

            thisMet.metData.startDate = Convert.ToDateTime("3/3/2009 22:00");
            thisMet.metData.endDate   = Convert.ToDateTime("3/31/2009 1:00");

            thisConcData = thisMet.metData.GetConcWS(50, "Filtered", thisInst, thisMet.name, anemA, anemB);
            Assert.AreEqual(thisConcData.anemA_WS.Length, 2895, 0, "Wrong number in Test 3");

            thisInst.Close();
        }
コード例 #12
0
        public void Calc_Anem_Data_Recovery_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            // Test 1
            double thisRec = thisMet.metData.CalcAnemDataRecovery(thisMet.metData.anems[0], false);

            Assert.AreEqual(thisRec, 0.93586377, 0.001, "Wrong 30m unfiltered data recovery Test 1");

            for (int i = 0; i < thisMet.metData.GetNumAnems(); i++)
            {
                if (thisMet.metData.anems[i].ID == 'B' && thisMet.metData.anems[i].height == 30)
                {
                    thisRec = thisMet.metData.CalcAnemDataRecovery(thisMet.metData.anems[i], true);
                    break;
                }
            }

            Assert.AreEqual(thisRec, 0.80359589, 0.001, "Wrong 30m filtered data recovery Test 2");

            for (int i = 0; i < thisMet.metData.GetNumAnems(); i++)
            {
                if (thisMet.metData.anems[i].ID == 'B' && thisMet.metData.anems[i].height == 40)
                {
                    thisRec = thisMet.metData.CalcAnemDataRecovery(thisMet.metData.anems[i], true);
                    break;
                }
            }

            Assert.AreEqual(thisRec, 0.816799848, 0.001, "Wrong 40m filtered data recovery Test 3");

            for (int i = 0; i < thisMet.metData.GetNumAnems(); i++)
            {
                if (thisMet.metData.anems[i].ID == 'B' && thisMet.metData.anems[i].height == 50)
                {
                    thisRec = thisMet.metData.CalcAnemDataRecovery(thisMet.metData.anems[i], true);
                    break;
                }
            }

            Assert.AreEqual(thisRec, 0.818493151, 0.0001, "Wrong 50m filtered data recovery Test 4");

            thisMet.metData.startDate = Convert.ToDateTime("1/1/2009");
            thisMet.metData.endDate   = Convert.ToDateTime("6/14/2009 16:10");

            thisRec = thisMet.metData.CalcAnemDataRecovery(thisMet.metData.anems[4], true);
            Assert.AreEqual(thisRec, 0.926327331, 0.0001, "Wrong 50m filtered data recovery Test 5");

            thisRec = thisMet.metData.CalcAnemDataRecovery(thisMet.metData.anems[3], true);
            Assert.AreEqual(thisRec, 0.878294606, 0.0001, "Wrong 40m filtered data recovery Test 6");

            thisInst.Close();
        }
コード例 #13
0
    public void AddDynButton(string name, Met met, Transform holder)
    {
        GameObject   go      = Instantiate(button, holder.transform);
        ButtonHelper btnHelp = go.GetComponent <ButtonHelper>();

        btnHelp.SetText(name);
        btnHelp.btn.onClick.AddListener(met.Invoke);
    }
コード例 #14
0
        public void CalcMeas_WSWD_Dists_Test()
        {
            Continuum thisInst = new Continuum("");

            string fileName = testingFolder + "\\Met testing.cfm";

            thisInst.Open(fileName);

            Met thisMet = thisInst.metList.metItem[0];

            thisMet.metData.GetSensorDataFromDB(thisInst, thisMet.name);

            // Test 1
            Met.WSWD_Dist thisDist = thisMet.CalcMeas_WSWD_Dists(80, Met.TOD.All, Met.Season.All, thisInst, thisMet.metData.GetSimulatedTimeSeries(80));

            Assert.AreEqual(thisDist.WS, 6.617531, 0.01, "Wrong WS Test 1");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[0], 4.842588, 0.01, "Wrong WS Test 1");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[5], 5.461858, 0.01, "Wrong WS Test 1");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[15], 5.159092, 0.01, "Wrong WS Test 1");

            // Test 2
            thisInst.metList.numTOD = 2;
            thisDist = thisMet.CalcMeas_WSWD_Dists(80, Met.TOD.Day, Met.Season.All, thisInst, thisMet.metData.GetSimulatedTimeSeries(80));
            Assert.AreEqual(thisDist.WS, 6.374398, 0.01, "Wrong WS Test 2");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[0], 4.51033, 0.01, "Wrong WS Test 2");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[3], 5.039229, 0.01, "Wrong WS Test 2");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[10], 7.798786, 0.01, "Wrong WS Test 2");

            // Test 3
            thisDist = thisMet.CalcMeas_WSWD_Dists(80, Met.TOD.Night, Met.Season.All, thisInst, thisMet.metData.GetSimulatedTimeSeries(80));
            Assert.AreEqual(thisDist.WS, 6.8643, 0.01, "Wrong WS Test 3");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[1], 5.241824, 0.01, "Wrong WS Test 3");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[7], 7.063508, 0.01, "Wrong WS Test 3");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[15], 5.41911, 0.01, "Wrong WS Test 3");

            // Test 4
            thisInst.metList.numTOD    = 1;
            thisInst.metList.numSeason = 4;
            thisDist = thisMet.CalcMeas_WSWD_Dists(80, Met.TOD.All, Met.Season.Winter, thisInst, thisMet.metData.GetSimulatedTimeSeries(80));
            Assert.AreEqual(thisDist.WS, 8.033652, 0.01, "Wrong WS Test 4");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[0], 4.493193, 0.01, "Wrong WS Test 4");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[11], 9.351834, 0.01, "Wrong WS Test 4");

            thisDist = thisMet.CalcMeas_WSWD_Dists(80, Met.TOD.All, Met.Season.Summer, thisInst, thisMet.metData.GetSimulatedTimeSeries(80));
            Assert.AreEqual(thisDist.WS, 5.437018, 0.01, "Wrong WS Test 5");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[4], 4.760074, 0.01, "Wrong WS Test 5");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[15], 4.57385, 0.01, "Wrong WS Test 5");

            // Test 6
            thisInst.metList.numTOD = 2;
            thisDist = thisMet.CalcMeas_WSWD_Dists(80, Met.TOD.Day, Met.Season.Spring, thisInst, thisMet.metData.GetSimulatedTimeSeries(80));
            Assert.AreEqual(thisDist.WS, 6.733493, 0.01, "Wrong WS Test 6");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[1], 5.530139, 0.01, "Wrong WS Test 6");
            Assert.AreEqual(thisDist.WS * thisDist.sectorWS_Ratio[15], 5.760701, 0.01, "Wrong WS Test 6");

            thisInst.Close();
        }
コード例 #15
0
        public void GetAvgAlpha_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            double[] theseAvgAlphas = thisMet.metData.GetAvgAlpha(0, 24, 1);
            Assert.AreEqual(theseAvgAlphas[0], 0.297582647, 0.001, "Wrong average alpha for Test 1");

            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            string[] filtsToApply = new string[1];
            filtsToApply[0] = "All";
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.startDate = Convert.ToDateTime("8/1/2008");
            thisMet.metData.endDate   = Convert.ToDateTime("10/31/2008");
            thisMet.metData.EstimateAlpha();
            theseAvgAlphas = thisMet.metData.GetAvgAlpha(0, 24, 1);
            Assert.AreEqual(theseAvgAlphas[0], 0.320117958, 0.001, "Wrong average alpha for Test 2");

            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.startDate = Convert.ToDateTime("6/25/2008");
            thisMet.metData.endDate   = Convert.ToDateTime("6/24/2009 23:50");
            thisMet.metData.EstimateAlpha();
            theseAvgAlphas = thisMet.metData.GetAvgAlpha(7, 9, 1);
            Assert.AreEqual(theseAvgAlphas[0], 0.33187482, 0.001, "Wrong average alpha for Test 3");

            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.startDate = Convert.ToDateTime("6/25/2008");
            thisMet.metData.endDate   = Convert.ToDateTime("6/24/2009 23:50");
            thisMet.metData.EstimateAlpha();
            theseAvgAlphas = thisMet.metData.GetAvgAlpha(12, 23, 16);
            Assert.AreEqual(theseAvgAlphas[2], 0.160170555, 0.001, "Wrong average alpha for Test 4");

            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.startDate = Convert.ToDateTime("1/1/2009");
            thisMet.metData.endDate   = Convert.ToDateTime("3/15/2009");
            thisMet.metData.EstimateAlpha();
            theseAvgAlphas = thisMet.metData.GetAvgAlpha(0, 2, 1);
            Assert.AreEqual(theseAvgAlphas[0], 0.347682384, 0.001, "Wrong average alpha for Test 5");

            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.startDate = Convert.ToDateTime("12/30/2008");
            thisMet.metData.endDate   = Convert.ToDateTime("2/1/2009");
            thisMet.metData.EstimateAlpha();
            theseAvgAlphas = thisMet.metData.GetAvgAlpha(3, 3, 16);
            Assert.AreEqual(theseAvgAlphas[15], 0.400452263, 0.001, "Wrong average alpha for Test 6");

            thisInst.Close();
        }
コード例 #16
0
        public void DoWS_EstAlongNodes_Test()
        {
            Continuum thisInst = new Continuum("");

            double thisUTMX = 823500;
            double thisUTMY = 4500400;
            int    numWD    = 16;

            string Filename = testingFolder + "\\Turbine testing.cfm";

            thisInst.Open(Filename);
            thisInst.turbineList.ClearAllTurbines();
            thisInst.turbineList.AddTurbine("Test", thisUTMX, thisUTMY, 1);
            thisInst.topo.GetElevsAndSRDH_ForCalcs(thisInst, null, false);
            thisInst.turbineList.CalcTurbineExposures(thisInst, 4000, 1.0f, 1);
            double[] windRose = thisInst.metList.GetInterpolatedWindRose(thisInst.metList.GetMetsUsed(), thisUTMX, thisUTMY, Met.TOD.All, Met.Season.All, thisInst.modeledHeight);

            thisInst.turbineList.turbineEsts[0].gridStats.GetGridArrayAndCalcStats(thisInst.turbineList.turbineEsts[0].UTMX, thisInst.turbineList.turbineEsts[0].UTMY, thisInst);
            Model[] models  = thisInst.modelList.GetModels(thisInst, thisInst.metList.GetMetsUsed(), Met.TOD.All, Met.Season.All, thisInst.modeledHeight, false);
            Met     thisMet = thisInst.metList.metItem[0];

            Turbine.WS_Ests New_WS_Est = new Turbine.WS_Ests();
            New_WS_Est.predictorMetName = thisMet.name;
            New_WS_Est.model            = models[0];

            NodeCollection nodeList = new NodeCollection();

            thisInst.turbineList.turbineEsts[0].AddWS_Estimate(New_WS_Est);
            Nodes startNode  = nodeList.GetMetNode(thisMet);
            Nodes targetNode = nodeList.GetTurbNode(thisInst.turbineList.turbineEsts[0]);

            Nodes[]         pathOfNodes = nodeList.FindPathOfNodes(startNode, targetNode, models[0], thisInst);
            Turbine.WS_Ests thisWS_Est  = thisInst.turbineList.turbineEsts[0].DoWS_EstAlongNodes(thisMet, models[0], pathOfNodes, thisInst, windRose);

            Assert.AreNotEqual(thisWS_Est.sectorWS_at_nodes[0, 0], 0, 0, "Didn't calculate WS at Node 1");
            Assert.AreNotEqual(thisWS_Est.sectorWS_at_nodes[1, 0], 0, 0, "Didn't calculate WS at Node 2");
            Assert.AreNotEqual(thisWS_Est.sectorWS_at_nodes[2, 0], 0, 0, "Didn't calculate WS at Node 3");

            Assert.AreNotEqual(thisWS_Est.sectorWS_at_nodes[0, 8], 0, 0, "Didn't calculate WS at Node 1");
            Assert.AreNotEqual(thisWS_Est.sectorWS_at_nodes[1, 8], 0, 0, "Didn't calculate WS at Node 2");
            Assert.AreNotEqual(thisWS_Est.sectorWS_at_nodes[2, 8], 0, 0, "Didn't calculate WS at Node 3");

            Assert.AreNotEqual(thisWS_Est.sectorWS_at_nodes[0, numWD - 1], 0, 0, "Didn't calculate WS at Node 1");
            Assert.AreNotEqual(thisWS_Est.sectorWS_at_nodes[1, numWD - 1], 0, 0, "Didn't calculate WS at Node 2");
            Assert.AreNotEqual(thisWS_Est.sectorWS_at_nodes[2, numWD - 1], 0, 0, "Didn't calculate WS at Node 3");

            Assert.AreNotEqual(thisWS_Est.WS_at_nodes[0], 0, 0, "Didn't calculate WS at Node 1");
            Assert.AreNotEqual(thisWS_Est.WS_at_nodes[1], 0, 0, "Didn't calculate WS at Node 1");
            Assert.AreNotEqual(thisWS_Est.WS_at_nodes[2], 0, 0, "Didn't calculate WS at Node 1");

            Assert.AreNotEqual(thisWS_Est.sectorWS[0], 0, 0, "Didn't calculate WS at Target site");
            Assert.AreNotEqual(thisWS_Est.sectorWS[numWD - 1], 0, 0, "Didn't calculate WS at Target site");
            Assert.AreNotEqual(thisWS_Est.WS, 0, 0, "Didn't calculate WS at Target site");


            thisInst.Close();
        }
コード例 #17
0
        public void CalcAvgExtrapolatedWS_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            string[] filtsToApply = new string[1];
            filtsToApply[0] = "All";

            thisMet.metData.startDate = Convert.ToDateTime("6/24/2008 15:00");
            thisMet.metData.endDate   = Convert.ToDateTime("1/22/2009 18:30");
            thisMet.metData.EstimateAlpha();

            // Test 1
            thisMet.metData.ExtrapolateData(80);
            double thisAvgWS = thisMet.metData.CalcAvgExtrapolatedWS(thisMet.metData.GetSimulatedTimeSeries(80));

            Assert.AreEqual(thisAvgWS, 5.67062, 0.001, "Wrong WS Test 1");

            // Test 2
            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.startDate = Convert.ToDateTime("10/13/2008 21:30");
            thisMet.metData.endDate   = Convert.ToDateTime("6/30/2009 23:50");
            thisMet.metData.EstimateAlpha();
            thisMet.metData.ExtrapolateData(100);
            thisAvgWS = thisMet.metData.CalcAvgExtrapolatedWS(thisMet.metData.GetSimulatedTimeSeries(100));
            Assert.AreEqual(thisAvgWS, 6.69379, 0.001, "Wrong WS Test 2");

            // Test 3
            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.startDate = Convert.ToDateTime("1/6/2009");
            thisMet.metData.endDate   = Convert.ToDateTime("6/1/2009");
            thisMet.metData.EstimateAlpha();
            thisMet.metData.ExtrapolateData(20);
            thisAvgWS = thisMet.metData.CalcAvgExtrapolatedWS(thisMet.metData.GetSimulatedTimeSeries(20));
            Assert.AreEqual(thisAvgWS, 4.6989779, 0.001, "Wrong WS Test 3");

            // Test 4
            thisMet.metData.ClearFilterFlagsAndEstimatedData();
            thisMet.metData.FilterData(filtsToApply);
            thisMet.metData.startDate = Convert.ToDateTime("1/1/2009 13:00");
            thisMet.metData.endDate   = Convert.ToDateTime("1/2/2009 12:00");
            thisMet.metData.EstimateAlpha();
            thisMet.metData.ExtrapolateData(43);
            thisAvgWS = thisMet.metData.CalcAvgExtrapolatedWS(thisMet.metData.GetSimulatedTimeSeries(43));
            Assert.AreEqual(thisAvgWS, 6.422621015, 0.001, "Wrong WS Test 4");

            thisInst.Close();
        }
コード例 #18
0
        public void Find_MERRA_Coords_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MERRA_Testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            UTM_conversion.Lat_Long theseLL = thisInst.UTM_conversions.UTMtoLL(thisInst.metList.metItem[0].UTMX, thisInst.metList.metItem[0].UTMY);
            MERRA merra = thisInst.merraList.GetMERRA(theseLL.latitude, theseLL.longitude);

            // Test 1
            bool Get_MERRA_Coords = merra.Find_MERRA_Coords(merraFolder);

            Assert.AreEqual(4, merra.MERRA_Nodes[0].XY_ind.X_ind, "Wrong x ind");
            Assert.AreEqual(2, merra.MERRA_Nodes[0].XY_ind.Y_ind, "Wrong y ind");

            // Test 2
            merra.numMERRA_Nodes = 4;
            Array.Resize(ref merra.MERRA_Nodes, merra.numMERRA_Nodes);
            merra.ClearAll();
            merra.Set_Interp_LatLon_Dates_Offset(41.2, -83.8, thisInst.UTM_conversions.GetUTC_Offset(41.2, -83.8), thisInst);

            Get_MERRA_Coords = merra.Find_MERRA_Coords(merraFolder);
            Assert.AreEqual(4, merra.MERRA_Nodes[0].XY_ind.X_ind, "Wrong x ind 0");
            Assert.AreEqual(1, merra.MERRA_Nodes[0].XY_ind.Y_ind, "Wrong y ind 0");
            Assert.AreEqual(5, merra.MERRA_Nodes[1].XY_ind.X_ind, "Wrong x ind 1");
            Assert.AreEqual(1, merra.MERRA_Nodes[1].XY_ind.Y_ind, "Wrong y ind 1");
            Assert.AreEqual(4, merra.MERRA_Nodes[2].XY_ind.X_ind, "Wrong x ind 2");
            Assert.AreEqual(2, merra.MERRA_Nodes[2].XY_ind.Y_ind, "Wrong y ind 2");
            Assert.AreEqual(5, merra.MERRA_Nodes[3].XY_ind.X_ind, "Wrong x ind 3");
            Assert.AreEqual(2, merra.MERRA_Nodes[3].XY_ind.Y_ind, "Wrong y ind 3");

            // Test 3
            merra.numMERRA_Nodes = 16;
            Array.Resize(ref merra.MERRA_Nodes, merra.numMERRA_Nodes);
            merra.ClearAll();
            merra.Set_Interp_LatLon_Dates_Offset(40.4, -82.9, thisInst.UTM_conversions.GetUTC_Offset(40.4, -82.9), thisInst);
            Get_MERRA_Coords = merra.Find_MERRA_Coords(merraFolder);
            Assert.AreEqual(1, merra.MERRA_Nodes[0].XY_ind.X_ind, "Wrong x ind 0");
            Assert.AreEqual(2, merra.MERRA_Nodes[0].XY_ind.Y_ind, "Wrong y ind 0");
            Assert.AreEqual(2, merra.MERRA_Nodes[1].XY_ind.X_ind, "Wrong x ind 1");
            Assert.AreEqual(2, merra.MERRA_Nodes[1].XY_ind.Y_ind, "Wrong y ind 1");
            Assert.AreEqual(3, merra.MERRA_Nodes[2].XY_ind.X_ind, "Wrong x ind 2");
            Assert.AreEqual(2, merra.MERRA_Nodes[2].XY_ind.Y_ind, "Wrong y ind 2");
            Assert.AreEqual(4, merra.MERRA_Nodes[3].XY_ind.X_ind, "Wrong x ind 2");
            Assert.AreEqual(2, merra.MERRA_Nodes[3].XY_ind.Y_ind, "Wrong y ind 2");

            thisInst.Close();
        }
コード例 #19
0
        public void GetClosestWS_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);
            Met thisMet = thisInst.metList.metItem[0];

            double thisWS = thisMet.metData.GetClosestWS(1, 13256);

            Assert.AreEqual(thisWS, 2.771643406, 0.0001, "Wrong closest wind speed Test 1");
        }
コード例 #20
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary> GUI form initializer. </summary>
        public GenWakeMap(Continuum continuum)
        {
            InitializeComponent();
            thisInst = continuum;

            if (thisInst.topo.useSepMod)
            {
                txt_FlowSep_Used.Text      = "Flow Sep. model used";
                txt_FlowSep_Used.BackColor = Color.LightBlue;
            }
            else
            {
                txt_FlowSep_Used.Text      = "Flow Sep. model NOT used";
                txt_FlowSep_Used.BackColor = Color.LightCoral;
            }

            if (thisInst.topo.useSR)
            {
                txtLC_Used.Text      = "Roughness model used";
                txtLC_Used.BackColor = Color.MediumSeaGreen;
            }
            else
            {
                txtLC_Used.Text      = "Roughness model NOT used";
                txtLC_Used.BackColor = Color.LightCoral;
            }

            thisInst.metList.AreAllMetsMCPd();
            if (thisInst.metList.allMCPd)
            {
                txtisMCPGenWakeMap.Text      = "MCP'd Met data used";
                txtisMCPGenWakeMap.BackColor = Color.MediumOrchid;
            }
            else
            {
                txtisMCPGenWakeMap.Text      = "Meas. Met data used";
                txtisMCPGenWakeMap.BackColor = Color.LightCoral;
            }

            chkMetsToUse.Items.Clear(); // Met list on Wake model dialog
            int metCount = thisInst.metList.ThisCount;

            if (metCount > 0)
            {
                for (int j = 0; j < metCount; j++) // Now repopulate it with met towers
                {
                    Met thisMet = thisInst.metList.metItem[j];
                    chkMetsToUse.Items.Add(thisMet.name, true);
                }
            }
        }
コード例 #21
0
        public void GetAnemsClosestToHH_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);
            Met thisMet = thisInst.metList.metItem[0];

            int    actInd = 0;
            double HH     = 30;

            for (int i = 0; i < thisMet.metData.GetNumAnems(); i++)
            {
                if (thisMet.metData.anems[i].height == 30 && thisMet.metData.anems[i].ID == 'B')
                {
                    actInd = i;
                }
            }

            int[] thisInd = thisMet.metData.GetAnemsClosestToHH(HH);
            Assert.AreEqual(thisInd[1], actInd, 0, "Wrong anem index");

            HH = 55;
            for (int i = 0; i < thisMet.metData.GetNumAnems(); i++)
            {
                if (thisMet.metData.anems[i].height == 50 && thisMet.metData.anems[i].ID == 'B')
                {
                    actInd = i;
                }
            }

            thisInd = thisMet.metData.GetAnemsClosestToHH(HH);
            Assert.AreEqual(thisInd[1], actInd, 0, "Wrong anem index");

            HH = 42;
            for (int i = 0; i < thisMet.metData.GetNumAnems(); i++)
            {
                if (thisMet.metData.anems[i].height == 40 && thisMet.metData.anems[i].ID == 'B')
                {
                    actInd = i;
                }
            }

            thisInd = thisMet.metData.GetAnemsClosestToHH(HH);
            Assert.AreEqual(thisInd[1], actInd, 0, "Wrong anem index");

            thisInst.Close();
        }
コード例 #22
0
        public void Method_Of_Bins_Test()
        {
            // Test Method of Bins method
            // Loop through WD, TOD, Season, and WS width (0.5 and 1.0 m/s)
            Continuum thisInst = new Continuum("");
            string    fileName = "C:\\Users\\liz_w\\Desktop\\Continuum 3 GUI Testing\\SaveFolder\\OneMetTSNotFiltWithMERRAAndMCP_1";

            thisInst.Open(fileName + ".cfm");
            thisInst.isTest = true;
            thisInst.cboMCP_Type.SelectedIndex = 1;

            Met thisMet = thisInst.GetSelectedMet("MCP");

            Met.WSWD_Dist thisEst = new Met.WSWD_Dist();
            Met.WSWD_Dist lastEst = new Met.WSWD_Dist();

            for (int WD_ind = 0; WD_ind <= 4; WD_ind++)
            {
                for (int TOD_ind = 0; TOD_ind <= 1; TOD_ind++)
                {
                    for (int seasonInd = 0; seasonInd <= 1; seasonInd++)
                    {
                        for (int WS_width_ind = 0; WS_width_ind <= 1; WS_width_ind++)
                        {
                            if (WS_width_ind == 0)
                            {
                                thisInst.txtWS_bin_width.Text = "0.5";
                            }
                            else
                            {
                                thisInst.txtWS_bin_width.Text = "1.0";
                            }

                            thisInst.cboMCPNumHours.SelectedIndex   = TOD_ind;
                            thisInst.cboMCPNumSeasons.SelectedIndex = seasonInd;
                            thisInst.cboMCPNumWD.SelectedIndex      = WD_ind;
                            thisInst.DoMCP();
                            thisEst = thisMet.GetWS_WD_Dist(thisInst.modeledHeight, Met.TOD.All, Met.Season.All);

                            Assert.AreNotEqual(thisEst.WS, lastEst.WS, "LT Estimate did not change with setting change");
                            lastEst = thisEst;
                        }
                    }
                }
            }

            thisInst.Close();
        }
コード例 #23
0
        public void CalcSectorWS_Ratios_Test()
        {
            Continuum thisInst = new Continuum("");

            thisInst.UTM_conversions.savedDatumIndex = 0;
            thisInst.UTM_conversions.hemisphere      = "Northern";
            thisInst.ofdMets.FileName = testingFolder + "\\Archbold.TAB";
            thisInst.ImportMetsTAB();
            Met thisMet = thisInst.metList.metItem[0];

            thisMet.CalcSectorWS_Ratios(thisInst);

            Assert.AreEqual(thisMet.WSWD_Dists[0].sectorWS_Ratio[0], 0.868457, 0.001, "Wrong Sector WS index 0");
            Assert.AreEqual(thisMet.WSWD_Dists[0].sectorWS_Ratio[4], 0.880843, 0.001, "Wrong Sector WS index 4");
            Assert.AreEqual(thisMet.WSWD_Dists[0].sectorWS_Ratio[9], 1.027484, 0.001, "Wrong Sector WS index 9");
            Assert.AreEqual(thisMet.WSWD_Dists[0].sectorWS_Ratio[15], 0.962568, 0.001, "Wrong Sector WS index 15");
        }
コード例 #24
0
        public void Method_Help()
        {
            List <double> arr      = new List <double>();
            Fac           Factrial = delegate(int n)
            {
                if (n == 0)
                {
                    return(1);
                }
                double res = 1;
                for (int i = 1; i <= n; i++)
                {
                    res *= i;
                }
                return(res);
            };
            Met P = delegate(double prev, int n)
            {
                double res = 0;
                double add = Math.Pow(Math.E, -1 * beta) * Math.Pow(beta, n) / Factrial(n);
                res = prev + add;
                return(res);
            };

            arr.Add(P(0, 0));
            for (int i = 1; true; i++)
            {
                arr.Add(P(arr[i - 1], i));
                if (arr[i] >= 1)
                {
                    arr[i] = 1;
                    break;
                }
            }
            mas.Add(-1);
            mas.Add((int)(arr[0] * int.MaxValue));
            for (int i = 1; true; i++)
            {
                if (mas.Last() == int.MaxValue)
                {
                    break;
                }
                int t = (int)(arr[i] * int.MaxValue);
                mas.Add(t);
            }
        }
コード例 #25
0
        public void Calc_Avg_or_LT_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MERRA_Testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            UTM_conversion.Lat_Long theseLL = thisInst.UTM_conversions.UTMtoLL(thisInst.metList.metItem[0].UTMX, thisInst.metList.metItem[0].UTMY);
            MERRA merra = thisInst.merraList.GetMERRA(theseLL.latitude, theseLL.longitude);

            if (merra.interpData.TS_Data.Length == 0)
            {
                merra.GetMERRADataFromDB(thisInst);
                merra.GetInterpData(thisInst.UTM_conversions);
            }

            // Test 1
            double thisAvg = merra.Calc_Avg_or_LT(merra.interpData.TS_Data, 100, 100, "50 m WS");

            Assert.AreEqual(6.670311915, thisAvg, 0.001, "Wrong 50m WS all data");

            // Test 2
            thisAvg = merra.Calc_Avg_or_LT(merra.interpData.TS_Data, 100, 100, "Surface Pressure");
            Assert.AreEqual(98.72393837, thisAvg, 0.001, "Wrong Pressure");

            // Test 3
            thisAvg = merra.Calc_Avg_or_LT(merra.interpData.TS_Data, 100, 100, "10 m Temp"); // all data
            Assert.AreEqual(10.33596373, thisAvg, 0.001, "Wrong 10m Temp");

            // Test 4
            thisAvg = merra.Calc_Avg_or_LT(merra.interpData.TS_Data, 1, 2008, "50 m WS"); // jan 2008
            Assert.AreEqual(8.938906452, thisAvg, 0.001, "Wrong 50m WS");

            // Test 5
            thisAvg = merra.Calc_Avg_or_LT(merra.interpData.TS_Data, 100, 2010, "50 m WS"); // avg 2010
            Assert.AreEqual(6.421752226, thisAvg, 0.001, "Wrong 50 m WS");

            // Test 6
            thisAvg = merra.Calc_Avg_or_LT(merra.interpData.TS_Data, 1, 100, "50 m WS"); // avg all january's
            Assert.AreEqual(7.639244713, thisAvg, 0.001, "Wrong 50m WS");

            thisInst.Close();
        }
コード例 #26
0
        public void Calc_Percent_Vane_Filtered_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            Met_Data_Filter.Vane_Data This_Vane = new Met_Data_Filter.Vane_Data();

            for (int i = 0; i < thisMet.metData.GetNumVanes(); i++)
            {
                if (thisMet.metData.vanes[i].height == 41)
                {
                    This_Vane = thisMet.metData.vanes[i];
                }
            }

            double thisPercFilt = thisMet.metData.CalcPercentVaneFiltered(This_Vane, Met_Data_Filter.Filter_Flags.Icing);

            Assert.AreEqual(thisPercFilt, 0.027302, 0.00001, "Wrong Icing Filt at 41m Test 1");

            for (int i = 0; i < thisMet.metData.GetNumVanes(); i++)
            {
                if (thisMet.metData.vanes[i].height == 49)
                {
                    This_Vane = thisMet.metData.vanes[i];
                }
            }

            thisPercFilt = thisMet.metData.CalcPercentVaneFiltered(This_Vane, Met_Data_Filter.Filter_Flags.Icing);
            Assert.AreEqual(thisPercFilt, 0.024543, 0.00001, "Wrong Icing Filt at 49m Test 2");

            thisMet.metData.startDate = Convert.ToDateTime("1/27/2009");
            thisMet.metData.endDate   = Convert.ToDateTime("4/3/2009");

            thisPercFilt = thisMet.metData.CalcPercentVaneFiltered(thisMet.metData.vanes[0], Met_Data_Filter.Filter_Flags.Icing);
            Assert.AreEqual(thisPercFilt, 0.016729798, 0.00001, "Wrong Icing Filt at 41m");

            thisPercFilt = thisMet.metData.CalcPercentVaneFiltered(thisMet.metData.vanes[1], Met_Data_Filter.Filter_Flags.Icing);
            Assert.AreEqual(thisPercFilt, 0.018097643, 0.00001, "Wrong Icing Filt at 49m");

            thisInst.Close();
        }
コード例 #27
0
        public void CalcExtremeWindSpeeds_Test()
        {
            Continuum thisInst = new Continuum("");

            string fileName = testingFolder + "\\Extreme WS\\Extreme WS Ashta Iten.cfm";

            thisInst.Open(fileName);
            Met thisMet = thisInst.metList.metItem[0];

            Met.Extreme_WindSpeed maxWS = thisMet.CalcExtremeWindSpeeds(thisInst);

            Assert.AreEqual(maxWS.gust1yr, 27.0, 0.1, "Wrong Gust 1-year WS");
            Assert.AreEqual(maxWS.tenMin1yr, 16.87, 0.1, "Wrong Ten-Min 1yrear WS");
            Assert.AreEqual(maxWS.gust50yr, 32.0, 0.1, "Wrong Gust 50-year WS");
            Assert.AreEqual(maxWS.tenMin50yr, 20.0, 0.1, "Wrong Ten-Min 50-year WS");

            thisInst.Close();
        }
コード例 #28
0
        public void GetMaxWS_atHeight_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            double thisMax = thisMet.metData.GetMaxWS_atHeight(30, 0);

            Assert.AreEqual(thisMax, 0.581, 0.001, "Wrong max WS at ind 0");

            thisMax = thisMet.metData.GetMaxWS_atHeight(30, 10);
            Assert.AreEqual(thisMax, 1.475, 0.001, "Wrong max WS at ind 10");

            thisInst.Close();
        }
コード例 #29
0
        public void Calc_Vane_Data_Recovery_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);

            Met    thisMet = thisInst.metList.metItem[0];
            double thisRec = 0;

            for (int i = 0; i < thisMet.metData.GetNumVanes(); i++)
            {
                if (thisMet.metData.vanes[i].height == 41)
                {
                    thisRec = thisMet.metData.CalcVaneDataRecovery(thisMet.metData.vanes[i], true);
                    break;
                }
            }

            Assert.AreEqual(thisRec, 0.908561644, 0.001, "Wrong 41m filtered data recovery Test 1");

            for (int i = 0; i < thisMet.metData.GetNumVanes(); i++)
            {
                if (thisMet.metData.vanes[i].height == 49)
                {
                    thisRec = thisMet.metData.CalcVaneDataRecovery(thisMet.metData.vanes[i], true);
                    break;
                }
            }

            Assert.AreEqual(thisRec, 0.911320396, 0.001, "Wrong 49m filtered data recovery Test 2");

            thisMet.metData.startDate = Convert.ToDateTime("9/24/2008");
            thisMet.metData.endDate   = Convert.ToDateTime("5/4/2009 5:00");
            thisRec = thisMet.metData.CalcVaneDataRecovery(thisMet.metData.vanes[0], true);
            Assert.AreEqual(thisRec, 0.849803113, 0.001, "Wrong 41m filtered data recovery Test 3");

            thisRec = thisMet.metData.CalcVaneDataRecovery(thisMet.metData.vanes[1], true);
            Assert.AreEqual(thisRec, 0.854334646, 0.001, "Wrong 49m filtered data recovery Test 4");

            thisInst.Close();
        }
コード例 #30
0
        public void Get_WS_Ratio_or_Diff_and_WS_Test()
        {
            Continuum thisInst = new Continuum("");

            string Filename = testingFolder + "\\MetDataFilter Archbold testing.cfm";

            thisInst.Open(Filename);

            Met thisMet = thisInst.metList.metItem[0];

            Met_Data_Filter.WS_Ratio_WS_Data theseCalcs = new Met_Data_Filter.WS_Ratio_WS_Data();

            // 30m Anem tests
            theseCalcs = thisMet.metData.GetWS_RatioOrDiffAndWS(30, "Unfiltered", "Ratio");
            Assert.AreEqual(theseCalcs.WS_Ratio[2468], 0.96742, 0.001, "Wrong value for Test 1");

            theseCalcs = thisMet.metData.GetWS_RatioOrDiffAndWS(30, "Unfiltered", "Diff");
            Assert.AreEqual(theseCalcs.WS_Ratio[49], 0, 0.001, "Wrong value for Test 2");

            theseCalcs = thisMet.metData.GetWS_RatioOrDiffAndWS(30, "Filtered", "Ratio");
            Assert.AreEqual(theseCalcs.WS[1567], 2.816, 0.001, "Wrong value for Test 3");

            theseCalcs = thisMet.metData.GetWS_RatioOrDiffAndWS(30, "Filtered", "Diff");
            Assert.AreEqual(theseCalcs.WS_Ratio[15559], -0.582, 0.001, "Wrong value for Test 4");

            thisMet.metData.startDate = Convert.ToDateTime("1/1/2009 22:00");
            thisMet.metData.endDate   = Convert.ToDateTime("4/3/2009 8:00");

            // 50m Anem Tests
            theseCalcs = thisMet.metData.GetWS_RatioOrDiffAndWS(50, "Unfiltered", "Ratio");
            Assert.AreEqual(theseCalcs.WS[1687], 8.896, 0.001, "Wrong value for Test 5");

            theseCalcs = thisMet.metData.GetWS_RatioOrDiffAndWS(50, "Unfiltered", "Diff");
            Assert.AreEqual(theseCalcs.WS_Ratio[6874], 0.134, 0.001, "Wrong value for Test 6");

            theseCalcs = thisMet.metData.GetWS_RatioOrDiffAndWS(50, "Filtered", "Ratio");
            Assert.AreEqual(theseCalcs.WS_Ratio[2198], 0.983128, 0.001, "Wrong value for Test 7");

            theseCalcs = thisMet.metData.GetWS_RatioOrDiffAndWS(50, "Filtered", "Diff");
            Assert.AreEqual(theseCalcs.WS[357], 4.873, 0.001, "Wrong value for Test 8");

            thisInst.Close();
        }