171 lines
6.4 KiB
C#
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}";
|
|
}
|
|
}
|
|
}
|