Antes de MCP Server
This commit is contained in:
parent
04565d21d0
commit
af839f4201
|
@ -56,18 +56,6 @@ namespace CtrEditor
|
|||
|
||||
_objectManager = new ObjectManipulationManager(this, ImagenEnTrabajoCanvas);
|
||||
|
||||
#if DEBUG
|
||||
// Ejecutar prueba NPSH al iniciar en modo debug
|
||||
try
|
||||
{
|
||||
TestNPSHOnStartup();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine($"Error al inicializar prueba NPSH: {ex.Message}");
|
||||
}
|
||||
#endif
|
||||
|
||||
_panningArea = new Rectangle
|
||||
{
|
||||
Fill = Brushes.Transparent,
|
||||
|
@ -1264,97 +1252,5 @@ namespace CtrEditor
|
|||
return new ValidationResult(false, "Ingrese un número válido.");
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
private void TestNPSHOnStartup()
|
||||
{
|
||||
System.Threading.Tasks.Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Threading.Thread.Sleep(2000); // Esperar a que se cargue la aplicación
|
||||
|
||||
// Crear una bomba con curva característica
|
||||
var pumpModel = new HydraulicSimulator.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;
|
||||
|
||||
string resultado = "=== PRUEBA NPSH INICIADA ===\n";
|
||||
resultado += $"Bomba configurada:\n";
|
||||
resultado += $" H0: {pumpModel.H0} m\n";
|
||||
resultado += $" Q0: {pumpModel.Q0} L/min\n";
|
||||
resultado += $" NPSH Requerido: {pumpModel.NPSHRequerido} m\n\n";
|
||||
|
||||
// CASO 1: Condición problemática del usuario
|
||||
resultado += "=== CASO 1: Condición problemática ===\n";
|
||||
double presionOrigen = 1.01; // bar
|
||||
double presionDestino = 34.0; // bar
|
||||
|
||||
// Calcular NPSH disponible
|
||||
double npshDisponible = pumpModel.CalculateNPSHAvailable(presionOrigen);
|
||||
resultado += $"Presión origen: {presionOrigen} bar\n";
|
||||
resultado += $"Presión destino: {presionDestino} bar\n";
|
||||
resultado += $"NPSH Disponible: {npshDisponible:F2} m\n";
|
||||
resultado += $"NPSH Requerido: {pumpModel.NPSHRequerido} m\n";
|
||||
|
||||
bool puedeOperar = pumpModel.CanOperateWithoutCavitation(presionOrigen);
|
||||
resultado += $"¿Puede operar sin cavitación?: {(puedeOperar ? "SÍ" : "NO")}\n";
|
||||
|
||||
if (!puedeOperar)
|
||||
{
|
||||
double factorCavitacion = pumpModel.GetCavitationFactor(presionOrigen);
|
||||
resultado += $"Factor de cavitación: {factorCavitacion:F3}\n";
|
||||
resultado += "RESULTADO: La bomba NO debería operar en estas condiciones\n";
|
||||
}
|
||||
|
||||
// CASO 2: Condición normal
|
||||
resultado += "\n=== CASO 2: Condición normal ===\n";
|
||||
presionOrigen = 2.5; // bar (presión adecuada)
|
||||
presionDestino = 5.0; // bar (presión razonable)
|
||||
|
||||
npshDisponible = pumpModel.CalculateNPSHAvailable(presionOrigen);
|
||||
resultado += $"Presión origen: {presionOrigen} bar\n";
|
||||
resultado += $"Presión destino: {presionDestino} bar\n";
|
||||
resultado += $"NPSH Disponible: {npshDisponible:F2} m\n";
|
||||
|
||||
puedeOperar = pumpModel.CanOperateWithoutCavitation(presionOrigen);
|
||||
resultado += $"¿Puede operar sin cavitación?: {(puedeOperar ? "SÍ" : "NO")}\n";
|
||||
|
||||
if (puedeOperar)
|
||||
{
|
||||
double deltaP = pumpModel.Dp(50.0); // 50 L/min
|
||||
resultado += $"Presión diferencial a 50 L/min: {deltaP:F2} bar\n";
|
||||
resultado += "RESULTADO: La bomba puede operar normalmente\n";
|
||||
}
|
||||
|
||||
resultado += "\n=== RESUMEN ===\n";
|
||||
resultado += "La implementación NPSH previene que la bomba opere\n";
|
||||
resultado += "cuando la presión de succión es insuficiente,\n";
|
||||
resultado += "solucionando el problema físicamente imposible\n";
|
||||
resultado += "reportado por el usuario.\n";
|
||||
|
||||
// Mostrar resultado en UI thread
|
||||
Dispatcher.Invoke(() =>
|
||||
{
|
||||
System.Windows.MessageBox.Show(resultado, "Prueba NPSH Completada",
|
||||
System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Information);
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Mostrar error en UI thread
|
||||
Dispatcher.Invoke(() =>
|
||||
{
|
||||
System.Windows.MessageBox.Show($"Error en prueba NPSH: {ex.Message}\n\n{ex.StackTrace}",
|
||||
"Error", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
|
@ -1,74 +0,0 @@
|
|||
using System;
|
||||
using CtrEditor.HydraulicSimulator;
|
||||
|
||||
// Programa simple para probar las funcionalidades NPSH
|
||||
class Program
|
||||
{
|
||||
static void Main()
|
||||
{
|
||||
Console.WriteLine("=== TEST NPSH VERIFICATION SYSTEM ===");
|
||||
Console.WriteLine();
|
||||
|
||||
// Test 1: Condiciones problemáticas del usuario original
|
||||
Console.WriteLine("1. TEST: Condiciones problemáticas originales");
|
||||
Console.WriteLine(" Tanque origen: VACÍO (1.01 bar)");
|
||||
Console.WriteLine(" Tanque destino: 34 bar presión");
|
||||
|
||||
var pump = new PumpHQWithSuctionCheck();
|
||||
double suctionPressure = 101325.0; // 1.01 bar
|
||||
double dischargePressure = 3400000.0; // 34 bar
|
||||
double flowRate = 10.0; // L/min
|
||||
|
||||
pump.UpdatePressures(suctionPressure, dischargePressure);
|
||||
|
||||
double npshAvailable = pump.CalculateNPSHAvailable(
|
||||
suctionPressure, 0.5, 2337.0, 0.5);
|
||||
bool canOperate = pump.CanOperateWithoutCavitation(flowRate);
|
||||
double cavitationFactor = pump.GetCavitationFactor(flowRate);
|
||||
|
||||
Console.WriteLine($" NPSH Disponible: {npshAvailable:F2} m");
|
||||
Console.WriteLine($" Puede operar sin cavitación: {canOperate}");
|
||||
Console.WriteLine($" Factor cavitación: {cavitationFactor:F2}");
|
||||
Console.WriteLine();
|
||||
|
||||
// Test 2: Condiciones normales de operación
|
||||
Console.WriteLine("2. TEST: Condiciones normales de operación");
|
||||
Console.WriteLine(" Tanque origen: 5 bar presión");
|
||||
Console.WriteLine(" Tanque destino: 2 bar presión");
|
||||
|
||||
suctionPressure = 500000.0; // 5 bar
|
||||
dischargePressure = 200000.0; // 2 bar
|
||||
|
||||
pump.UpdatePressures(suctionPressure, dischargePressure);
|
||||
|
||||
npshAvailable = pump.CalculateNPSHAvailable(
|
||||
suctionPressure, 2.0, 2337.0, 0.3);
|
||||
canOperate = pump.CanOperateWithoutCavitation(flowRate);
|
||||
cavitationFactor = pump.GetCavitationFactor(flowRate);
|
||||
|
||||
Console.WriteLine($" NPSH Disponible: {npshAvailable:F2} m");
|
||||
Console.WriteLine($" Puede operar sin cavitación: {canOperate}");
|
||||
Console.WriteLine($" Factor cavitación: {cavitationFactor:F2}");
|
||||
Console.WriteLine();
|
||||
|
||||
// Test 3: Configuración dinámica
|
||||
Console.WriteLine("3. TEST: Configuración dinámica NPSH");
|
||||
var manager = new HydraulicSimulationManager();
|
||||
|
||||
Console.WriteLine($" Estado inicial - NPSH: {manager.EnableNPSHVerification}");
|
||||
|
||||
manager.ConfigureNPSHSettings(true, 2.5, 2500.0, 0.8);
|
||||
Console.WriteLine($" Después configuración - NPSH: {manager.EnableNPSHVerification}");
|
||||
Console.WriteLine();
|
||||
|
||||
// Resumen
|
||||
Console.WriteLine("=== RESUMEN DE RESULTADOS ===");
|
||||
Console.WriteLine("✅ Sistema NPSH implementado exitosamente");
|
||||
Console.WriteLine("✅ Verificación de cavitación funcionando");
|
||||
Console.WriteLine("✅ Configuración dinámica operativa");
|
||||
Console.WriteLine("✅ Problema original resuelto");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("PRESIONA CUALQUIER TECLA PARA SALIR...");
|
||||
Console.ReadKey();
|
||||
}
|
||||
}
|
|
@ -1,206 +0,0 @@
|
|||
using System;
|
||||
using CtrEditor.HydraulicSimulator;
|
||||
|
||||
namespace CtrEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Ejemplo para probar las nuevas funcionalidades de NPSH
|
||||
/// Reproduce el problema original del usuario donde una bomba
|
||||
/// seguía funcionando con tanque vacío y alta presión de descarga
|
||||
/// </summary>
|
||||
public class NPSHTestExample
|
||||
{
|
||||
public static void TestNPSHConfiguration()
|
||||
{
|
||||
Console.WriteLine("=== TESTING NPSH VERIFICATION SYSTEM ===");
|
||||
Console.WriteLine();
|
||||
|
||||
// Configuración original problemática del usuario
|
||||
Console.WriteLine("1. TESTING ORIGINAL PROBLEM SCENARIO:");
|
||||
Console.WriteLine(" - Tanque origen: VACÍO (1.01 bar)");
|
||||
Console.WriteLine(" - Tanque destino: 34 bar presión");
|
||||
Console.WriteLine(" - Sin verificación NPSH");
|
||||
|
||||
var problematicTest = TestProblematicScenario();
|
||||
Console.WriteLine($" Resultado SIN NPSH: Bomba funciona = {problematicTest.canOperate}");
|
||||
Console.WriteLine($" Presión diferencial: {problematicTest.pressureDiff:F2} bar");
|
||||
Console.WriteLine();
|
||||
|
||||
// Test con verificación NPSH habilitada
|
||||
Console.WriteLine("2. TESTING WITH NPSH VERIFICATION ENABLED:");
|
||||
Console.WriteLine(" - Misma configuración pero con NPSH verificado");
|
||||
|
||||
var npshTest = TestWithNPSHVerification();
|
||||
Console.WriteLine($" Resultado CON NPSH: Bomba puede operar = {npshTest.canOperate}");
|
||||
Console.WriteLine($" NPSH Disponible: {npshTest.npshAvailable:F2} m");
|
||||
Console.WriteLine($" NPSH Requerido: {npshTest.npshRequired:F2} m");
|
||||
Console.WriteLine($" Factor cavitación: {npshTest.cavitationFactor:F2}");
|
||||
Console.WriteLine();
|
||||
|
||||
// Test con condiciones normales de operación
|
||||
Console.WriteLine("3. TESTING NORMAL OPERATING CONDITIONS:");
|
||||
Console.WriteLine(" - Tanque origen: 5 bar presión");
|
||||
Console.WriteLine(" - Tanque destino: 2 bar presión");
|
||||
|
||||
var normalTest = TestNormalConditions();
|
||||
Console.WriteLine($" Resultado NORMAL: Bomba puede operar = {normalTest.canOperate}");
|
||||
Console.WriteLine($" NPSH Disponible: {normalTest.npshAvailable:F2} m");
|
||||
Console.WriteLine($" Factor cavitación: {normalTest.cavitationFactor:F2}");
|
||||
Console.WriteLine();
|
||||
|
||||
// Test de configuración dinámica
|
||||
Console.WriteLine("4. TESTING DYNAMIC NPSH CONFIGURATION:");
|
||||
TestDynamicConfiguration();
|
||||
Console.WriteLine();
|
||||
|
||||
Console.WriteLine("=== TEST COMPLETED ===");
|
||||
}
|
||||
|
||||
private static (bool canOperate, double pressureDiff) TestProblematicScenario()
|
||||
{
|
||||
// Crear bomba con modelo original (sin NPSH)
|
||||
var pump = new PumpHQ();
|
||||
|
||||
// Configurar presiones problemáticas
|
||||
double suctionPressure = 101325.0; // 1.01 bar (atmosférica)
|
||||
double dischargePressure = 3400000.0; // 34 bar
|
||||
double flowRate = 10.0; // L/min
|
||||
|
||||
// Calcular con modelo original
|
||||
double pressureDiff = pump.Dp(flowRate, suctionPressure, dischargePressure);
|
||||
|
||||
// Sin NPSH, la bomba siempre "funciona"
|
||||
bool canOperate = pressureDiff > 0;
|
||||
|
||||
return (canOperate, pressureDiff / 100000.0); // convertir a bar
|
||||
}
|
||||
|
||||
private static (bool canOperate, double npshAvailable, double npshRequired, double cavitationFactor) TestWithNPSHVerification()
|
||||
{
|
||||
// Crear bomba con verificación NPSH
|
||||
var pump = new PumpHQWithSuctionCheck();
|
||||
|
||||
// Configurar presiones problemáticas
|
||||
double suctionPressure = 101325.0; // 1.01 bar (atmosférica)
|
||||
double dischargePressure = 3400000.0; // 34 bar
|
||||
double flowRate = 10.0; // L/min
|
||||
double tankLevel = 0.5; // 50 cm de altura
|
||||
double vaporPressure = 2337.0; // Presión vapor agua a 20°C
|
||||
double suctionLosses = 0.5; // Pérdidas de succión estimadas
|
||||
|
||||
// Actualizar presiones en la bomba
|
||||
pump.UpdatePressures(suctionPressure, dischargePressure);
|
||||
|
||||
// Calcular NPSH disponible
|
||||
double npshAvailable = pump.CalculateNPSHAvailable(
|
||||
suctionPressure, tankLevel, vaporPressure, suctionLosses);
|
||||
|
||||
// Verificar si puede operar sin cavitación
|
||||
bool canOperate = pump.CanOperateWithoutCavitation(flowRate);
|
||||
|
||||
// Obtener factor de cavitación
|
||||
double cavitationFactor = pump.GetCavitationFactor(flowRate);
|
||||
|
||||
return (canOperate, npshAvailable, 3.0, cavitationFactor);
|
||||
}
|
||||
|
||||
private static (bool canOperate, double npshAvailable, double cavitationFactor) TestNormalConditions()
|
||||
{
|
||||
var pump = new PumpHQWithSuctionCheck();
|
||||
|
||||
// Condiciones normales de operación
|
||||
double suctionPressure = 500000.0; // 5 bar
|
||||
double dischargePressure = 200000.0; // 2 bar
|
||||
double flowRate = 15.0; // L/min
|
||||
double tankLevel = 2.0; // 2 metros de altura
|
||||
double vaporPressure = 2337.0;
|
||||
double suctionLosses = 0.3;
|
||||
|
||||
pump.UpdatePressures(suctionPressure, dischargePressure);
|
||||
|
||||
double npshAvailable = pump.CalculateNPSHAvailable(
|
||||
suctionPressure, tankLevel, vaporPressure, suctionLosses);
|
||||
|
||||
bool canOperate = pump.CanOperateWithoutCavitation(flowRate);
|
||||
double cavitationFactor = pump.GetCavitationFactor(flowRate);
|
||||
|
||||
return (canOperate, npshAvailable, cavitationFactor);
|
||||
}
|
||||
|
||||
private static void TestDynamicConfiguration()
|
||||
{
|
||||
// Crear manager de simulación hidráulica
|
||||
var manager = new HydraulicSimulationManager();
|
||||
|
||||
Console.WriteLine(" Configuración inicial - NPSH deshabilitado:");
|
||||
manager.EnableNPSHVerification = false;
|
||||
Console.WriteLine($" NPSH habilitado: {manager.EnableNPSHVerification}");
|
||||
|
||||
Console.WriteLine(" Habilitando NPSH con parámetros personalizados:");
|
||||
manager.ConfigureNPSHSettings(
|
||||
enableNPSH: true,
|
||||
npshRequired: 2.5, // metros
|
||||
vaporPressure: 2500.0, // Pa
|
||||
suctionLosses: 0.8 // metros
|
||||
);
|
||||
|
||||
Console.WriteLine($" NPSH habilitado: {manager.EnableNPSHVerification}");
|
||||
Console.WriteLine(" Configuración aplicada correctamente");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Método para integrar en el UI y probar con bombas reales
|
||||
/// </summary>
|
||||
public static void TestWithRealPumpComponent()
|
||||
{
|
||||
Console.WriteLine("=== TESTING REAL PUMP COMPONENT ===");
|
||||
Console.WriteLine("Para integrar con componentes UI reales, usar el método:");
|
||||
Console.WriteLine("NPSHTestExample.TestWithRealPumpComponent() desde el UI");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Método para verificar el problema original específico del usuario
|
||||
/// </summary>
|
||||
public static void VerifyOriginalProblemFixed()
|
||||
{
|
||||
Console.WriteLine("=== VERIFICANDO SOLUCIÓN AL PROBLEMA ORIGINAL ===");
|
||||
Console.WriteLine("Problema: 'con el tanque de origen vacío y el de destino");
|
||||
Console.WriteLine("con una presión de 34 bar la bomba continúa a llenar el tanque de destino'");
|
||||
Console.WriteLine();
|
||||
|
||||
var pump = new PumpHQWithSuctionCheck();
|
||||
|
||||
// Exactamente las condiciones del problema
|
||||
double suctionPressure = 101325.0; // Tanque vacío (presión atmosférica)
|
||||
double dischargePressure = 3400000.0; // 34 bar como reportó el usuario
|
||||
double flowRate = 5.0; // Flujo típico
|
||||
|
||||
pump.UpdatePressures(suctionPressure, dischargePressure);
|
||||
|
||||
// Verificar NPSH
|
||||
double npshAvailable = pump.CalculateNPSHAvailable(
|
||||
suctionPressure, 0.1, 2337.0, 0.5); // Tanque casi vacío
|
||||
|
||||
bool canOperate = pump.CanOperateWithoutCavitation(flowRate);
|
||||
double cavitationFactor = pump.GetCavitationFactor(flowRate);
|
||||
|
||||
Console.WriteLine($"Presión succión: {suctionPressure/100000:F2} bar");
|
||||
Console.WriteLine($"Presión descarga: {dischargePressure/100000:F2} bar");
|
||||
Console.WriteLine($"NPSH disponible: {npshAvailable:F2} m");
|
||||
Console.WriteLine($"Factor cavitación: {cavitationFactor:F2}");
|
||||
Console.WriteLine($"Bomba puede operar: {canOperate}");
|
||||
Console.WriteLine();
|
||||
|
||||
if (!canOperate)
|
||||
{
|
||||
Console.WriteLine("✅ PROBLEMA SOLUCIONADO: La bomba ya no puede operar");
|
||||
Console.WriteLine(" en condiciones físicamente imposibles!");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("❌ PROBLEMA PERSISTE: La bomba aún puede operar");
|
||||
Console.WriteLine(" en condiciones incorrectas.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
using System;
|
||||
using System.Windows;
|
||||
using CtrEditor;
|
||||
|
||||
namespace CtrEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Programa de consola simple para probar NPSH sin necesidad del UI completo
|
||||
/// </summary>
|
||||
public class NPSHTestProgram
|
||||
{
|
||||
[STAThread]
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("NPSH VERIFICATION SYSTEM - TEST PROGRAM");
|
||||
Console.WriteLine("========================================");
|
||||
Console.WriteLine();
|
||||
|
||||
// Ejecutar todas las pruebas
|
||||
NPSHTestExample.TestNPSHConfiguration();
|
||||
Console.WriteLine();
|
||||
|
||||
// Verificar específicamente el problema original
|
||||
NPSHTestExample.VerifyOriginalProblemFixed();
|
||||
Console.WriteLine();
|
||||
|
||||
Console.WriteLine("Presiona cualquier tecla para continuar...");
|
||||
Console.ReadKey();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"ERROR durante las pruebas: {ex.Message}");
|
||||
Console.WriteLine($"Stack trace: {ex.StackTrace}");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("Presiona cualquier tecla para salir...");
|
||||
Console.ReadKey();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
92
TestNPSH.cs
92
TestNPSH.cs
|
@ -1,92 +0,0 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue