using System; using System.Collections.Generic; namespace CtrEditor.HydraulicSimulator.TSNet.Components { /// /// Resultados de simulación TSNet para tanques /// Almacena SOLO valores calculados por TSNet, separados de la configuración del usuario /// public class TSNetTankResults { public string TankId { get; set; } public DateTime Timestamp { get; set; } // Resultados hidráulicos calculados por TSNet public double CalculatedLevelM { get; set; } public double CalculatedVolumeL { get; set; } public double CalculatedPressureBar { get; set; } public double InletFlowM3s { get; set; } public double OutletFlowM3s { get; set; } public double NetFlowM3s { get; set; } // Propiedades del fluido calculadas public int CalculatedFluidType { get; set; } public string CalculatedFluidDescription { get; set; } public double CalculatedFluidTemperature { get; set; } public double CalculatedFluidDensity { get; set; } public double CalculatedFluidViscosity { get; set; } public double CalculatedFluidBrix { get; set; } public double CalculatedFluidConcentration { get; set; } // Información de estado public bool IsOverflowing { get; set; } public bool IsEmpty { get; set; } public string Status { get; set; } public TSNetTankResults() { Timestamp = DateTime.Now; Status = "Not Simulated"; } } /// /// Resultados de simulación TSNet para bombas /// public class TSNetPumpResults { public string PumpId { get; set; } public DateTime Timestamp { get; set; } // Resultados operacionales calculados por TSNet public double CalculatedFlowM3s { get; set; } public double CalculatedFlowLMin { get; set; } public double CalculatedHeadM { get; set; } public double InletPressureBar { get; set; } public double OutletPressureBar { get; set; } public double PressureDifferentialBar { get; set; } public double CalculatedEfficiency { get; set; } public double PowerConsumptionKW { get; set; } // Propiedades del fluido public int CalculatedFluidType { get; set; } public string CalculatedFluidDescription { get; set; } public double CalculatedFluidTemperature { get; set; } public double CalculatedFluidDensity { get; set; } public double CalculatedFluidViscosity { get; set; } public double ViscosityEffectFactor { get; set; } // Estado operacional public bool IsOperating { get; set; } public bool IsCavitating { get; set; } public string OperationalStatus { get; set; } public TSNetPumpResults() { Timestamp = DateTime.Now; OperationalStatus = "Not Simulated"; } } /// /// Resultados de simulación TSNet para tuberías /// public class TSNetPipeResults { public string PipeId { get; set; } public DateTime Timestamp { get; set; } // Resultados de flujo calculados por TSNet public double CalculatedFlowM3s { get; set; } public double CalculatedFlowLMin { get; set; } public double FlowVelocityMs { get; set; } public string FlowDirection { get; set; } // Propiedades hidráulicas calculadas public double PressureDropBar { get; set; } public double ReynoldsNumber { get; set; } public string FlowRegime { get; set; } public double FrictionFactor { get; set; } public double HeadLossM { get; set; } // Propiedades del fluido public int CalculatedFluidType { get; set; } public string CalculatedFluidDescription { get; set; } public double CalculatedFluidTemperature { get; set; } public double CalculatedFluidDensity { get; set; } public double CalculatedFluidViscosity { get; set; } public double CalculatedFluidBrix { get; set; } public double CalculatedFluidConcentration { get; set; } // Análisis del flujo public bool IsFlowActive { get; set; } public bool IsFlowReversed { get; set; } public string FlowStatus { get; set; } public TSNetPipeResults() { Timestamp = DateTime.Now; FlowDirection = "No Flow"; FlowRegime = "Unknown"; FlowStatus = "Not Simulated"; } } /// /// Contenedor para todos los resultados de simulación TSNet /// public class TSNetSimulationResults { public DateTime SimulationTimestamp { get; set; } public double SimulationDuration { get; set; } public bool SimulationSuccessful { get; set; } public string SimulationStatus { get; set; } public Dictionary TankResults { get; set; } public Dictionary PumpResults { get; set; } public Dictionary PipeResults { get; set; } // Estadísticas globales de la red public double TotalFlowM3s { get; set; } public double TotalPowerConsumptionKW { get; set; } public int ActivePumps { get; set; } public int ActiveFlowPaths { get; set; } public List Warnings { get; set; } public List Errors { get; set; } public TSNetSimulationResults() { SimulationTimestamp = DateTime.Now; TankResults = new Dictionary(); PumpResults = new Dictionary(); PipeResults = new Dictionary(); Warnings = new List(); Errors = new List(); SimulationStatus = "Not Started"; } /// /// Obtiene un resumen en texto de los resultados /// public string GetSummary() { return $"TSNet Results [{SimulationTimestamp:HH:mm:ss}]: " + $"{TankResults.Count} tanks, {PumpResults.Count} pumps, {PipeResults.Count} pipes. " + $"Status: {SimulationStatus}"; } } }