using System; using CtrEditor.HydraulicSimulator; namespace CtrEditor { public class TestNPSH { public static void Main(string[] args) { Console.WriteLine("Iniciando prueba de verificación NPSH..."); try { // Crear una bomba con curva característica var pumpModel = new PumpHQ( h0: 50.0, // 50 metros de cabeza a caudal cero q0: 100.0, // 100 L/min caudal máximo teórico speed: 1750 // 1750 RPM nominal ); // Configurar NPSH requerido de 3 metros (típico para bombas centrífugas) pumpModel.NPSHRequerido = 3.0; Console.WriteLine($"Bomba configurada:"); Console.WriteLine($" H0: {pumpModel.H0} m"); Console.WriteLine($" Q0: {pumpModel.Q0} L/min"); Console.WriteLine($" NPSH Requerido: {pumpModel.NPSHRequerido} m"); // CASO 1: Condición problemática del usuario // Tanque origen vacío (1.01 bar = presión atmosférica) // Tanque destino con 34 bar de presión Console.WriteLine("\n=== CASO 1: Condición problemática ==="); double presionOrigen = 1.01; // bar double presionDestino = 34.0; // bar double caudal = 50.0; // L/min // Calcular NPSH disponible double npshDisponible = pumpModel.CalculateNPSHAvailable(presionOrigen); Console.WriteLine($"Presión origen: {presionOrigen} bar"); Console.WriteLine($"Presión destino: {presionDestino} bar"); Console.WriteLine($"NPSH Disponible: {npshDisponible:F2} m"); Console.WriteLine($"NPSH Requerido: {pumpModel.NPSHRequerido} m"); bool puedeOperar = pumpModel.CanOperateWithoutCavitation(presionOrigen); Console.WriteLine($"¿Puede operar sin cavitación?: {(puedeOperar ? "SÍ" : "NO")}"); if (!puedeOperar) { double factorCavitacion = pumpModel.GetCavitationFactor(presionOrigen); Console.WriteLine($"Factor de cavitación: {factorCavitacion:F3}"); Console.WriteLine("RESULTADO: La bomba NO debería operar en estas condiciones"); } // CASO 2: Condición normal Console.WriteLine("\n=== CASO 2: Condición normal ==="); presionOrigen = 2.5; // bar (presión adecuada) presionDestino = 5.0; // bar (presión razonable) npshDisponible = pumpModel.CalculateNPSHAvailable(presionOrigen); Console.WriteLine($"Presión origen: {presionOrigen} bar"); Console.WriteLine($"Presión destino: {presionDestino} bar"); Console.WriteLine($"NPSH Disponible: {npshDisponible:F2} m"); puedeOperar = pumpModel.CanOperateWithoutCavitation(presionOrigen); Console.WriteLine($"¿Puede operar sin cavitación?: {(puedeOperar ? "SÍ" : "NO")}"); if (puedeOperar) { // Calcular presión diferencial normal double deltaP = pumpModel.Dp(caudal); Console.WriteLine($"Presión diferencial a {caudal} L/min: {deltaP:F2} bar"); Console.WriteLine("RESULTADO: La bomba puede operar normalmente"); } Console.WriteLine("\n=== RESUMEN ==="); Console.WriteLine("La implementación NPSH previene que la bomba opere"); Console.WriteLine("cuando la presión de succión es insuficiente,"); Console.WriteLine("solucionando el problema físicamente imposible"); Console.WriteLine("reportado por el usuario."); } catch (Exception ex) { Console.WriteLine($"Error en la prueba: {ex.Message}"); Console.WriteLine($"Stack trace: {ex.StackTrace}"); } Console.WriteLine("\nPresione cualquier tecla para salir..."); Console.ReadKey(); } } }