Пример #1
0
        private void ShowCalculatedValues()
        {
            DadosEntrada dados = DataEntry();

            if (dados != null)
            {
                Calculos calc = new Calculos();


                DataSet   dsDln       = new DataSet();
                DataTable tabCalculos = new DataTable();
                tabCalculos.Columns.Add("Hora", typeof(double));
                tabCalculos.Columns.Add("IluminanciaCC_H", typeof(double));
                tabCalculos.Columns.Add("IluminanciaPE_H", typeof(double));
                tabCalculos.Columns.Add("IluminanciaCE_H", typeof(double));
                tabCalculos.Columns.Add("IluminanciaCC_V", typeof(double));
                tabCalculos.Columns.Add("IluminanciaPE_V", typeof(double));
                tabCalculos.Columns.Add("IluminanciaCE_V", typeof(double));
                tabCalculos.Columns.Add("LuminanciaCC", typeof(double));
                tabCalculos.Columns.Add("LuminanciaPE", typeof(double));
                tabCalculos.Columns.Add("LuminanciaCE", typeof(double));


                for (int hora = 6; hora < 19; hora++)
                {
                    calc.Calcula(dados, hora);
                    DataRow linha = tabCalculos.NewRow();
                    linha["Hora"] = hora;

                    linha["IluminanciaCC_H"] = calc.Resultados.IluminanciaCC_H;
                    linha["IluminanciaPE_H"] = calc.Resultados.IluminanciaPE_H;
                    linha["IluminanciaCE_H"] = calc.Resultados.IluminanciaCE_H;

                    linha["IluminanciaCC_V"] = calc.Resultados.IluminanciaCC_V;
                    linha["IluminanciaPE_V"] = calc.Resultados.IluminanciaPE_V;
                    linha["IluminanciaCE_V"] = calc.Resultados.IluminanciaCE_V;

                    linha["LuminanciaCC"] = calc.Resultados.LuminanciaCC;
                    linha["LuminanciaPE"] = calc.Resultados.LuminanciaPE;
                    linha["LuminanciaCE"] = calc.Resultados.LuminanciaCE;
                    tabCalculos.Rows.Add(linha);
                }
                dataGridViewDln.DataSource = tabCalculos;
            }
        }
Пример #2
0
 // Seta valores
 public void SetaValores(DadosEntrada dados, double hora)
 {
     LAT  = dados.CoordenadasLocal.Latitude.ToRadians();
     LONG = dados.CoordenadasLocal.Longitude.ToRadians();
     //LAT = (dados.CoordenadasLocal.Latitude.Degrees +
     //          dados.CoordenadasLocal.Latitude.Minutes / 60.0 +
     //            dados.CoordenadasLocal.Latitude.Seconds / 3600.0) * PI180;
     //LONG = (dados.CoordenadasLocal.Longitude.Degrees +
     //          dados.CoordenadasLocal.Longitude.Minutes / 60.0 +
     //            dados.CoordenadasLocal.Longitude.Seconds / 3600.0) * PI180;
     AE = dados.Azimuth;
     MP = dados.Meridian;
     PZ = dados.PointPAngle;
     PA = dados.PointPAzimuth;
     J  = (double)_julianCalendar.GetDayOfYear(dados.Data);
     // Hora padrao em decimal (minutos e segundos ignorados)
     HP         = hora;
     Resultados = new Resultados();
 }
Пример #3
0
        // Executa os calculos basicos
        public void Calcula(DadosEntrada dados, double hora)
        {
            SetaValores(dados, hora);

            // (07) Equacao do tempo
            ET = 0.170 * Math.Sin(4.0 * Math.PI / 373.0 * (J - 80.0)) - 0.129 * Math.Sin(2.0 * Math.PI / 355.0 * (J - 8.0));

            // (08) Tempo Solar
            T = HP + ET + ((12.0 * (MP - LONG)) / Math.PI);

            // (09) declinacao solar
            D = 0.4093 * Math.Sin((2.0 * Math.PI / 368.0) * (J - 81.0));

            // (10) altitude solar
            AT = Math.Asin(Math.Sin(LAT) * Math.Sin(D) - Math.Cos(LAT) * Math.Cos(D) * Math.Cos(Math.PI * T / 12.0));

            // Correcao feita 12/5/93 Rogerio
            // AT nao pode estar fora do intervalo acima, pois indica
            // sol abaixo da linha do horizonte
            //if ((AT > Math.PI) || (AT < 0.0))
            //    AT = 0.0;

            // (11) Azimute solar ???????????????????????????
            AS = Math.Atan2(-(Math.Cos(D) * Math.Sin(Math.PI * T / 12.0)), -((Math.Cos(LAT) * Math.Sin(D) + Math.Sin(LAT) * Math.Cos(D) * Math.Cos(Math.PI * T / 12.0))));

            // (12) Azimute de elevacao solar
            AZ = AS - AE;

            // (13) Angulo de incidencia
            AI = Math.Acos(Math.Cos(AT) * Math.Cos(AZ));

            // (14) Angulo de perfil
            // Correcao feita 27/7/91 Paulo e Rogerio
            if ((AI > Math.PI / 2.0))
            {
                AI = Math.PI / 2.0;
                AP = 0.0;
            }
            else
            {
                AP = Math.Atan(Math.Sin(AS) / Math.Cos(AI));
            }

            // (15) Iluminancia solar extraterrestre
            ISE = CIS * (1.0 + 0.034 * Math.Cos(2 * Math.PI * (J - 2) / 365.0));

            // (16) Massa de ar otico
            // Coreccao feita em 12/5/93 por Rogerio
            if (AT == 0.0)
            {
                M = 1.0;
            }
            else
            {
                M = 1.0 / Math.Sin(AT);
            }

            // (17) Angulo entre o sol e o zenite
            Z = Math.PI / 2.0 - AT;

            // (18) Angulo entre o sol e ponto P no ceu
            PS = Math.Acos(Math.Cos(Z) * Math.Cos(PZ));

            // (19) Iluminancia solar direta normal (ISDN)
            ISDNCC = ISE * Math.Exp(-0.21 * M);
            ISDNPE = ISE * Math.Exp(-0.80 * M);

            // (20) Iluminancia solar direta horizontal (ISDH)
            ISDHCC = ISDNCC * Math.Sin(AT);
            ISDHPE = ISDNPE * Math.Sin(AT);

            // (21) Iluminancia solar direta vertical (ISDV)
            ISDVCC = ISDNCC * Math.Cos(AI);
            ISDVPE = ISDNPE * Math.Cos(AI);

            Iluminancias();

            Luminancias();
        }
Пример #4
0
 public CalculaPeriodo(DadosEntrada dados, DateTime dataInicial, DateTime dataFinal)
 {
     Dados       = dados;
     DataInicial = dataInicial;
     DataFinal   = dataFinal;
 }
Пример #5
0
        private DadosEntrada DataEntry()
        {
            if (string.IsNullOrEmpty(textBoxLocal.Text))
            {
                MessageBox.Show("Please, informe a local name");
                return(null);
            }



            //Program.objParametros.UltimaDataInicial = dateTimePickerInicial.Value;
            //Program.objParametros.UltimaDataFinal = dateTimePickerFinal.Value;

            //JulianCalendar myCal = new JulianCalendar();

            //for (double dia = Program.objParametros.UltimaDataInicial.ToOADate(); dia < Program.objParametros.UltimaDataFinal.ToOADate(); dia++)
            //{
            //    DateTime d = DateTime.FromOADate(dia);
            //    Debug.WriteLine(d.ToString("dd/MM/yyyy") + "   " + myCal.GetDayOfYear(d).ToString());
            //}



            //DateTime dataIniciaoAno = new DateTime(Program.objParametros.UltimaDataInicial.Year, 1, 1);
            //int juliano = Convert.ToInt32(Math.Floor(Program.objParametros.UltimaDataInicial.ToOADate() - dataIniciaoAno.ToOADate())) + 1;



            Coordinate c = new Coordinate();


            double       latitude, longitude;
            DadosEntrada dados = new DadosEntrada("");

            try
            {
                latitude  = Convert.ToDouble(numericUpDownLatitude.Value);
                longitude = Convert.ToDouble(numericUpDownLongitude.Value);
                dados.CoordenadasLocal = new Coordinate(latitude, longitude);
                int factor = Convert.ToInt32(Math.Abs(longitude) / 15);
                if ((double)(factor * 15) - Math.Abs(longitude) > 7.5)
                {
                    factor += 1;
                }
                dados.Meridian = Convert.ToInt32(Math.Sign(longitude) * (double)(factor * 15));
            }
            catch
            {
                MessageBox.Show("Please, informe valid latitude and longitude");
                return(null);
            }

            dados.Data = new DateTime(DateTime.Now.Year, 1, 1);
            dados.Nome = textBoxLocal.Text;


            dados.Azimuth       = Convert.ToDouble(numericUpDownAzimuth.Value);
            dados.PointPAngle   = Convert.ToDouble(numericUpDownPointPAngle.Value);
            dados.PointPAzimuth = Convert.ToDouble(numericUpDownPointPAzimuth.Value);
            dados.horas         = 8;
            dados.StartTime     = Convert.ToInt32(numericUpDownStartHour.Value);
            dados.EndTime       = Convert.ToInt32(numericUpDownEndHour.Value);

            Program.objParametros.LatitudeCenterMap  = dados.CoordenadasLocal.Latitude.ToDouble();
            Program.objParametros.LongitudeCenterMap = dados.CoordenadasLocal.Longitude.ToDouble();
            Program.objParametros.Azimuth            = dados.Azimuth;
            Program.objParametros.PointPAngle        = dados.PointPAngle;
            Program.objParametros.PointPAzimuth      = dados.PointPAzimuth;
            Program.objParametros.StartTime          = dados.StartTime;
            Program.objParametros.EndTime            = dados.EndTime;


            lblData.Text = dados.ToString();;
            return(dados);
        }