CtrEditor/HydraulicSimulator/TSNet/Components/TSNetResults.cs

171 lines
6.4 KiB
C#

using System;
using System.Collections.Generic;
namespace CtrEditor.HydraulicSimulator.TSNet.Components
{
/// <summary>
/// Resultados de simulación TSNet para tanques
/// Almacena SOLO valores calculados por TSNet, separados de la configuración del usuario
/// </summary>
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";
}
}
/// <summary>
/// Resultados de simulación TSNet para bombas
/// </summary>
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";
}
}
/// <summary>
/// Resultados de simulación TSNet para tuberías
/// </summary>
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";
}
}
/// <summary>
/// Contenedor para todos los resultados de simulación TSNet
/// </summary>
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<string, TSNetTankResults> TankResults { get; set; }
public Dictionary<string, TSNetPumpResults> PumpResults { get; set; }
public Dictionary<string, TSNetPipeResults> 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<string> Warnings { get; set; }
public List<string> Errors { get; set; }
public TSNetSimulationResults()
{
SimulationTimestamp = DateTime.Now;
TankResults = new Dictionary<string, TSNetTankResults>();
PumpResults = new Dictionary<string, TSNetPumpResults>();
PipeResults = new Dictionary<string, TSNetPipeResults>();
Warnings = new List<string>();
Errors = new List<string>();
SimulationStatus = "Not Started";
}
/// <summary>
/// Obtiene un resumen en texto de los resultados
/// </summary>
public string GetSummary()
{
return $"TSNet Results [{SimulationTimestamp:HH:mm:ss}]: " +
$"{TankResults.Count} tanks, {PumpResults.Count} pumps, {PipeResults.Count} pipes. " +
$"Status: {SimulationStatus}";
}
}
}