/// <summary> /// The CultivoSueloSave. /// </summary> /// <param name="db">The db<see cref="Database"/>.</param> /// <param name="idUnidadCultivo">The idUnidadCultivo<see cref="string"/>.</param> /// <param name="idTemporada">The idTemporada<see cref="string"/>.</param> /// <param name="idSueloTipo">The idSueloTipo<see cref="string"/>.</param> private static void CultivoSueloSave(Database db, string idUnidadCultivo, string idTemporada, string idSueloTipo) { try { List <SueloTipo> lSt = db.Fetch <SueloTipo>("Select * from suelotipo where idSueloTipo=@0", idSueloTipo); if (lSt.Count == 0) { throw new Exception($"El suelo tipo indicado ({idSueloTipo}) no existe"); } foreach (SueloTipo st in lSt) { UnidadCultivoSuelo ucs = new UnidadCultivoSuelo { Arcilla = st.Arcilla, Arena = st.Arena, ElementosGruesos = st.ElementosGruesos, IdHorizonte = st.IdHorizonte, IdUnidadCultivo = idUnidadCultivo, Limo = st.Limo, MateriaOrganica = st.MateriaOrganica, ProfundidadHorizonte = st.Profundidad, IdTemporada = idTemporada }; db.Save(ucs); } } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// Calcula de la capacidad de campo /// Abreviaturas /// suelo.Arena/Arcilla/ElementosGruesos: % arena, % arcilla, % Elementos Gruesos (%w) /// mo100: materia Orgánica, (%w) /// O33t: humedad a 33 kPa, primera solución (%v) /// O33: humedad 33 kPa, densidad normal (%v) /// PAW33: cantidad de agua disponible a 33 kPa. /// </summary> /// <param name="suelo">The suelo<see cref="UnidadCultivoSuelo"/>.</param> /// <returns>The <see cref="double"/>.</returns> public static double CapacidadCampo(this UnidadCultivoSuelo suelo) { double mo100 = suelo.MateriaOrganica * 100; //Nota: esta conversión es porque en BBDD no se apunta %M.O. como valor porcentual double o33t = -0.251 * suelo.Arena + 0.195 * suelo.Arcilla + 0.011 * mo100 + 0.006 * (suelo.Arena * mo100) - 0.027 * (suelo.Arcilla * mo100) + 0.452 * (suelo.Arena * suelo.Arcilla) + 0.299; double o33 = o33t + (1.283 * (o33t * o33t) - 0.374 * (o33t) - 0.015); double paw33 = o33 * (1 - suelo.ElementosGruesos); return(paw33); }
/// <summary> /// Calculo del punto de marchitez /// Segun formula Saxton-Rawls (2006) /// Abreviaturas /// suelo.Arena/Arcilla/ElementosGruesos: % arena, % arcilla, % Elementos Gruesos (%w) /// mo100: materia Orgánica, (%w) /// O1500t: humedad a 1500 kPa, primera solución (%v) /// O1500: humedad a 1500 kPa, (%v) /// PAW1500: cantidad de agua disponible a 1500 kPa. /// </summary> /// <param name="suelo">The suelo<see cref="UnidadCultivoSuelo"/>.</param> /// <returns>The <see cref="double"/>.</returns> public static double PuntoDeMarchitez(this UnidadCultivoSuelo suelo) { double mo100 = suelo.MateriaOrganica * 100; //Nota: esta conversión es porque en BBDD no se apunta %M.O. como valor porcentual double o1500t = -0.024 * suelo.Arena + 0.487 * suelo.Arcilla + 0.006 * mo100 + 0.005 * (suelo.Arena * mo100) - 0.013 * (suelo.Arcilla * mo100) + 0.068 * (suelo.Arena * suelo.Arcilla) + 0.031; double o1500 = o1500t + (0.14 * o1500t - 0.02); double paw1500 = o1500 * (1 - suelo.ElementosGruesos); return(paw1500); }