示例#1
0
        /// <summary>
        /// CalculaBalance. Función de uso interno en la clase para calcular el balance. Se ejecuta una única vez para añadir las líneas de balance.
        /// </summary>
        /// <param name="actualizaEtapas">The actualizaEtapas<see cref="bool"/>.</param>
        /// <param name="fechaFinalEstudio">.</param>
        private void CalculaBalance(bool actualizaEtapas, DateTime fechaFinalEstudio)
        {
            LineaBalance lbAnt = new LineaBalance();
            DateTime     fecha = unidadCultivoDatosHidricos.FechaSiembra();
            //DateTime fechaFinalEstudio = unidadCultivoDatosHidricos.FechaFinalDeEstudio();
            int diasDesdeSiembra = 1;

            if (unidadCultivoDatosHidricos.nEtapas <= 0)
            {
                throw new Exception("No se han definido etapas para la unidad de cultivo: " + unidadCultivoDatosHidricos.IdUnidadCultivo);
            }
            while (fecha <= fechaFinalEstudio)
            {
                LineaBalance lineaBalance = CalculosHidricos.CalculaLineaBalance(unidadCultivoDatosHidricos, lbAnt, fecha);
                lineaBalance.DiasDesdeSiembra = diasDesdeSiembra++;
                LineasBalance.Add(lineaBalance);
                lbAnt = lineaBalance;
                fecha = fecha.AddDays(1);
                if (lineaBalance.NumeroEtapaDesarrollo < unidadCultivoDatosHidricos.UnidadCultivoCultivoEtapasList.Count)
                {
                    fechaFinalEstudio = fecha.AddDays(1);
                }
                else
                {
                    int duracionEtapa = unidadCultivoDatosHidricos.UnidadCultivoCultivoEtapasList[unidadCultivoDatosHidricos.UnidadCultivoCultivoEtapasList.Count - 1].DuracionDiasEtapa;
                    fechaFinalEstudio = unidadCultivoDatosHidricos.UnidadCultivoCultivoEtapasList[unidadCultivoDatosHidricos.UnidadCultivoCultivoEtapasList.Count - 1].FechaInicioEtapa.AddDays(duracionEtapa);
                }
            }
            if (actualizaEtapas)
            {
                DB.FechasEtapasSave(unidadCultivoDatosHidricos.UnidadCultivoCultivoEtapasList);
            }

            LineasBalance.RemoveAll(x => x.Fecha > DateTime.Today.AddDays(-1));
        }
示例#2
0
        /// <summary>
        /// ResumenDiario.
        /// </summary>
        /// <param name="fechaDeCalculo">Fecha en la que se desean presentar los datos<see cref="DateTime"/>.</param>
        /// <returns>The <see cref="ResumenDiario"/>.</returns>
        public ResumenDiario ResumenDiario(DateTime fechaDeCalculo)
        {
            if (fechaDeCalculo > unidadCultivoDatosHidricos.FechaFinalDeEstudio())
            {
                fechaDeCalculo = unidadCultivoDatosHidricos.FechaFinalDeEstudio();
            }
            if (fechaDeCalculo > DateTime.Today)
            {
                fechaDeCalculo = DateTime.Today;
            }
            if (fechaDeCalculo < unidadCultivoDatosHidricos.FechaSiembra())
            {
                fechaDeCalculo = unidadCultivoDatosHidricos.FechaSiembra();
            }
            ResumenDiario ret = new ResumenDiario();
            LineaBalance  lb  = LineaBalance(fechaDeCalculo);

            ret.IdUnidadCultivo     = unidadCultivoDatosHidricos.IdUnidadCultivo;
            ret.FechaDeCalculo      = fechaDeCalculo;
            ret.RiegoTotal          = SumaRiegosMm(fechaDeCalculo);           // !!! SIAR ELIMINAR
            ret.RiegoEfectivoTotal  = SumaRiegoEfectivo(fechaDeCalculo);      // !!! SIAR ELIMINAR  y AÑADIR A LA SALIDA DatosHidricos
            ret.LluviaTotal         = SumaLluvias(fechaDeCalculo);            // !!! SIAR ELIMINAR
            ret.LluviaEfectivaTotal = SumaLluviasEfectivas(fechaDeCalculo);   // !!! SIAR ELIMINAR  y AÑADIR A LA SALIDA DatosHidricos
            ret.AguaPerdida         = AguaPerdida(fechaDeCalculo);            // !!! SIAR ELIMINAR
            ret.ConsumoAguaCultivo  = SumaConsumoAguaCultivo(fechaDeCalculo); // !!! SIAR ELIMINAR
            ret.DiasEstres          = NDIasEstres(fechaDeCalculo);            // !!! SIAR ELIMINAR
            ret.DeficitRiego        = double.NaN;                             // Aún no definido // !!! SIAR ELIMINAR y AÑADIR A LA SALIDA DatosHidricos
            ret.CosteDeficitRiego   = double.NaN;                             // Aúno no definido. // !!! SIAR ELIMINAR y AÑADIR A LA SALIDA DatosHidricos
            ret.CosteAguaRiego      = CosteAgua(fechaDeCalculo);              // !!! SIAR ELIMINAR
            ret.CosteAguaDrenaje    = CosteDrenaje(fechaDeCalculo);           // !!! SIAR ELIMINAR y AÑADIR A LA SALIDA DatosHidricos

            ret.CapacidadCampo = lb.CapacidadCampo;

            ret.LimiteAgotamiento  = lb.LimiteAgotamiento;
            ret.PuntoMarchitez     = lb.PuntoMarchitez;
            ret.ContenidoAguaSuelo = lb.ContenidoAguaSuelo;

            ret.CapacidadCampoPorcentaje = 1;
            try {
                ret.LimiteAgotamientoPorcentaje = (ret.LimiteAgotamiento - ret.PuntoMarchitez) / (ret.CapacidadCampo - ret.PuntoMarchitez);
            } catch {
                ret.LimiteAgotamientoPorcentaje = double.NaN;
            }

            ret.PuntoMarchitezPorcentaje = 0;
            try {
                ret.ContenidoAguaSueloPorcentaje = (ret.ContenidoAguaSuelo - ret.PuntoMarchitez) / (ret.CapacidadCampo - ret.PuntoMarchitez);
            } catch {
                ret.ContenidoAguaSueloPorcentaje = double.NaN;
            }

            ret.DrenajeProfundidad = lb.DrenajeProfundidad;
            ret.AvisoDrenaje       = CalculosHidricos.AvisoDrenaje(lb.DrenajeProfundidad);

            ret.AguaHastaCapacidadCampo  = ret.CapacidadCampo - ret.ContenidoAguaSuelo; // esto no lo debería usar Daniel
            ret.RecomendacionRiegoNeto   = lb.RecomendacionRiegoNeto;
            ret.RecomendacionRiegoBruto  = lb.RecomendacionRiegoBruto;                  // añadido SIAR
            ret.RecomendacionRiegoTiempo = lb.RecomendacionRiegoTiempo;

            ret.IndiceEstres      = lb.IndiceEstres;
            ret.MensajeEstres     = lb.MensajeEstres;
            ret.DescripcionEstres = lb.DescripcionEstres;
            ret.ColorEstres       = lb.ColorEstres;

            ret.CapacidadCampoRefPM        = lb.CapacidadCampoRefPM;
            ret.PuntoMarchitezRefPM        = lb.PuntoMarchitezRefPM;
            ret.ContenidoAguaSueloRefPM    = lb.ContenidoAguaSueloRefPM;
            ret.LimiteAgotamientoRefPM     = lb.LimiteAgotamientoRefPM;
            ret.LimiteAgotamientoFijoRefPM = lb.LimiteAgotamientoFijoRefPM;

            ret.AlturaFinal   = unidadCultivoDatosHidricos.CultivoAlturaFinal ?? 0;
            ret.AlturaInicial = unidadCultivoDatosHidricos.CultivoAlturaInicial ?? 0;
            ret.Altura        = lb.AlturaCultivo;

            ret.Cobertura = lb.Cobertura;

            ret.ProfRaizInicial = unidadCultivoDatosHidricos.CultivoProfRaizInicial;
            ret.ProfRaizMaxima  = unidadCultivoDatosHidricos.CultivoProfRaizMax;
            ret.LongitudRaiz    = lb.LongitudRaiz;

            ret.NumeroEtapaDesarrollo = lb.NumeroEtapaDesarrollo;
            ret.NombreEtapaDesarrollo = lb.NombreEtapaDesarrollo;
            return(ret);
        }