/// <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)); }
/// <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); }