Exemple #1
0
        //DateTime t must be in UTC
        public static double GetSolarAltitudeInDegrees(double LatitudeInDegrees, double LongitudeInDegress, DateTime t)
        {
            double lonrad = LongitudeInDegress / 360 * 2 * Math.PI;
            double latrad = LatitudeInDegrees / 360 * 2 * Math.PI;

            int julian_date;

            SolarCalculator.make_julian_day(t.Day, t.Month, t.Year, out julian_date);

            double day_angle;//annual day angle

            SolarCalculator.Day_Angle(julian_date, out day_angle);

            double LAT; // sun local time

            SolarCalculator.UT_to_LAT(t.TimeOfDay.TotalHours, day_angle, lonrad, out LAT);

            double delta;//sun declination

            SolarCalculator.declination_sun(t.Year, julian_date, lonrad, out delta);

            double omega;//solar hour angle

            SolarCalculator.solar_hour_angle(LAT, out omega);

            double gamma, theta;//altitude angle and zenithal angle (complementary)

            SolarCalculator.elevation_zenith_sun(latrad, delta, omega, out gamma, out theta);

            return(gamma * 360 / 2 / Math.PI);
        }
Exemple #2
0
        public void GetMOETest2()
        {
            SolarCalculator solCalc       = new SolarCalculator();
            double          julianCentury = 0.10470682;
            double          moe           = solCalc.GetMeanObliqEcliptic(julianCentury);

            Assert.AreEqual(23.43792948, Math.Round(moe, 8));
        }
Exemple #3
0
        public void GetMOETest1()
        {
            SolarCalculator solCalc       = new SolarCalculator();
            double          julianCentury = 0.10119895;
            double          moe           = solCalc.GetMeanObliqEcliptic(julianCentury);

            Assert.AreEqual(23.4379751, Math.Round(moe, 7));
        }
Exemple #4
0
        public void GetVaryTest1()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          oc      = 23.43882153;
            double          vary    = solCalc.GetVary(oc);

            Assert.AreEqual(0.04303276, Math.Round(vary, 8));
        }
Exemple #5
0
        public void GetSunlightDurationTest2()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          has     = 112.6098153;
            double          sd      = solCalc.GetSunlightDuration(has);

            Assert.AreEqual(900.87852, Math.Round(sd, 5));
        }
Exemple #6
0
        public void GetHourAngleTest2()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          tst     = 898.1497498;
            double          ha      = solCalc.GetHourAngle(tst);

            Assert.AreEqual(44.53743745, Math.Round(ha, 8));
        }
Exemple #7
0
        public void GetEEOTest1()
        {
            SolarCalculator solCalc       = new SolarCalculator();
            double          julianCentury = 0.10119895049052735;
            double          eeo           = solCalc.GetEccentEarthOrbit(julianCentury);

            Assert.AreEqual(0.016704379, Math.Round(eeo, 9));
        }
Exemple #8
0
        public void GetVaryTest2()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          oc      = 23.43848456;
            double          vary    = solCalc.GetVary(oc);

            Assert.AreEqual(0.04303148, Math.Round(vary, 8));
        }
Exemple #9
0
        public void GetGMASTest1()
        {
            SolarCalculator solCalc       = new SolarCalculator();
            double          julianCentury = 0.10119895049052735;
            double          gmas          = solCalc.GetGeomMeanAnomSun(julianCentury);

            Assert.AreEqual(4000.595216, Math.Round(gmas, 6));
        }
Exemple #10
0
        public void GetGMASTest2()
        {
            SolarCalculator solCalc       = new SolarCalculator();
            double          julianCentury = 0.10470682181154035;
            double          gmas          = solCalc.GetGeomMeanAnomSun(julianCentury);

            Assert.AreEqual(4126.875252, Math.Round(gmas, 6));
        }
Exemple #11
0
        public void GetGMLSTest1()
        {
            SolarCalculator solCalc       = new SolarCalculator();
            double          julianCentury = 0.10119895049052735;
            double          gmls          = solCalc.GetGeomMeanLongSun(julianCentury);

            Assert.AreEqual(323.7065868, Math.Round(gmls, 7));
        }
Exemple #12
0
        public void GetApproxAtmRefractionTest2()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          sea     = 49.16974994;
            double          aar     = solCalc.GetApproxAtmRefraction(sea);

            Assert.AreEqual(0.013933057, Math.Round(aar, 9));
        }
Exemple #13
0
        public void GetJulianCentury2()
        {
            Solar.SolarCalculator solCalc = new SolarCalculator();
            double julianDay = solCalc.GetJulianDay(new DateTime(2010, 06, 21, 16, 0, 0).ToOADate(), -6);
            double jc        = solCalc.GetJulianCentury(julianDay);

            Assert.AreEqual(0.10470682, Math.Round(jc, 8));
        }
Exemple #14
0
        public void GetSolarElevationAngleTest2()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          sza     = 40.83025006;
            double          sea     = solCalc.GetSolarElevationAngle(sza);

            Assert.AreEqual(49.16974994, Math.Round(sea, 8));
        }
Exemple #15
0
        public void GetApproxAtmRefractionTest1()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          sea     = 36.69936398;
            double          aar     = solCalc.GetApproxAtmRefraction(sea);

            Assert.AreEqual(0.021605629, Math.Round(aar, 9));
        }
Exemple #16
0
        public void GetHourAngleTest1()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          tst     = 705.7778003;
            double          ha      = solCalc.GetHourAngle(tst);

            Assert.AreEqual(-3.5555499, Math.Round(ha, 7));
        }
Exemple #17
0
        public void GetSolarElevationAngleTest1()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          sza     = 53.30063602;
            double          sea     = solCalc.GetSolarElevationAngle(sza);

            Assert.AreEqual(36.69936398, Math.Round(sea, 8));
        }
Exemple #18
0
        public void GetGMLSTest2()
        {
            SolarCalculator solCalc       = new SolarCalculator();
            double          julianCentury = 0.10470682181154035;
            double          gmls          = solCalc.GetGeomMeanLongSun(julianCentury);

            Assert.AreEqual(89.99265499, Math.Round(gmls, 8));
        }
Exemple #19
0
        public void GetEEOTest2()
        {
            SolarCalculator solCalc       = new SolarCalculator();
            double          julianCentury = 0.10470682181154035;
            double          eeo           = solCalc.GetEccentEarthOrbit(julianCentury);

            Assert.AreEqual(0.016704231, Math.Round(eeo, 9));
        }
Exemple #20
0
        public void GetSunlightDurationTest1()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          has     = 79.78835039;
            double          sd      = solCalc.GetSunlightDuration(has);

            Assert.AreEqual(638.3068, Math.Round(sd, 5));
        }
Exemple #21
0
        public void GetJulianCentury1()
        {
            Solar.SolarCalculator solCalc = new SolarCalculator();
            double julianDay = solCalc.GetJulianDay(new DateTime(2010, 02, 13, 12, 0, 0).ToOADate(), -7);
            double jc        = solCalc.GetJulianCentury(julianDay);

            Assert.AreEqual(0.10119895, Math.Round(jc, 8));
        }
Exemple #22
0
        public void GetSolarElevationCorrectedTest2()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          sea     = 49.16974994;
            double          aar     = 0.013933057;
            double          sec     = solCalc.GetSolarElevationCorrected(sea, aar);

            Assert.AreEqual(49.183683, Math.Round(sec, 8));
        }
Exemple #23
0
        public void GetSolarElevationCorrectedTest1()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          sea     = 36.69936398;
            double          aar     = 0.021605629;
            double          sec     = solCalc.GetSolarElevationCorrected(sea, aar);

            Assert.AreEqual(36.7209696, Math.Round(sec, 7));
        }
Exemple #24
0
        public void GetSunriseTimeTest2()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          has     = 112.6098153;
            double          sn      = 0.54295156264305555;
            double          srt     = solCalc.GetSunriseTime(has, sn);

            Assert.AreEqual(TimeSpan.FromDays(0.23014652014305553), TimeSpan.FromDays(srt));
        }
Exemple #25
0
        public void GetSunsetTimeTest2()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          has     = 112.6098153;
            double          sn      = 0.54295156264305555;
            double          sst     = solCalc.GetSunsetTime(has, sn);

            Assert.AreEqual(TimeSpan.FromDays(0.85575660514305552), TimeSpan.FromDays(sst));
        }
Exemple #26
0
        public void GetSunsetTimeTest1()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          has     = 79.78835039;
            double          sn      = 0.50987652754861112;
            double          sst     = solCalc.GetSunsetTime(has, sn);

            Assert.AreEqual(TimeSpan.FromDays(0.73151083418750007), TimeSpan.FromDays(sst));
        }
Exemple #27
0
        public void GetHASunriseTest2()
        {
            SolarCalculator solCalc  = new SolarCalculator();
            double          latitude = 40.0;
            double          sd       = 23.43782475;
            double          has      = solCalc.GetHASunrise(latitude, sd);

            Assert.AreEqual(112.609815, Math.Round(has, 6));
        }
Exemple #28
0
        public void GetSunriseTimeTest1()
        {
            SolarCalculator solCalc = new SolarCalculator();
            double          has     = 79.78835039;
            double          sn      = 0.50987652754861112;
            double          srt     = solCalc.GetSunriseTime(has, sn);

            Assert.AreEqual(TimeSpan.FromDays(0.28824222090972224), TimeSpan.FromDays(srt));
        }
Exemple #29
0
        public void GetJulianDayTest3()
        {
            Solar.SolarCalculator solCalc = new SolarCalculator();
            DateTime date = new DateTime(2010, 06, 21, 21, 54, 00);

            double jd = solCalc.GetJulianDay(date.ToOADate(), -6);

            Assert.AreEqual(2455369.66, Math.Round(jd, 2));
        }
Exemple #30
0
        public void GetHASunriseTest1()
        {
            SolarCalculator solCalc  = new SolarCalculator();
            double          latitude = 40.0;
            double          sd       = -13.19798007;
            double          has      = solCalc.GetHASunrise(latitude, sd);

            Assert.AreEqual(79.7883504, Math.Round(has, 7));
        }