211 lines
5.7 KiB
Markdown
211 lines
5.7 KiB
Markdown
# TSNet Integration Roadmap - CtrEditor
|
|
|
|
## 📋 HOJA DE RUTA COMPLETA
|
|
|
|
### ✅ **FASE 1 COMPLETADA: Integración CPython**
|
|
- [x] **PythonInterop.cs** - Wrapper para ejecutar Python desde C#
|
|
- [x] **TSNetSimulationManager.cs** - Manager principal para TSNet
|
|
- [x] **TSNetINPGenerator.cs** - Generador de archivos INP
|
|
- [x] **TSNetTankAdapter.cs** - Adaptador específico para tanques
|
|
- [x] **test_tsnet_integration.py** - Script de prueba Python
|
|
- [x] **TSNetIntegrationTest.cs** - Tests de integración C#
|
|
- [x] **Comandos en MainViewModel** - Integración con la UI
|
|
|
|
### 🔄 **FASE 2 EN PROGRESO: Adaptadores TSNet**
|
|
- [x] Estructura base de TSNetSimulationManager
|
|
- [x] Generador INP básico
|
|
- [x] Adaptador para tanques (TSNetTankAdapter)
|
|
- [ ] Adaptador para bombas (TSNetPumpAdapter)
|
|
- [ ] Adaptador para tuberías (TSNetPipeAdapter)
|
|
- [ ] Sistema de comunicación Python ↔ C#
|
|
|
|
### 🏗️ **FASE 3 PENDIENTE: Modelos Básicos**
|
|
- [ ] Extender Node.cs para TSNet
|
|
- [ ] Adaptar Pipe.cs para TSNet
|
|
- [ ] Crear TSNetPump específico
|
|
- [ ] Validación de modelos
|
|
|
|
### ⚡ **FASE 4 PENDIENTE: Simulación en Tiempo Real**
|
|
- [ ] Sistema de comunicación continua
|
|
- [ ] Actualización de resultados en tiempo real
|
|
- [ ] Sincronización con interfaz gráfica
|
|
- [ ] Gestión de estados transitorios
|
|
|
|
---
|
|
|
|
## 🚀 ESTADO ACTUAL - LISTO PARA PRUEBAS
|
|
|
|
### Archivos Creados:
|
|
```
|
|
CtrEditor/HydraulicSimulator/
|
|
├── Python/
|
|
│ └── PythonInterop.cs ✅ Integración CPython
|
|
├── TSNet/
|
|
│ ├── TSNetSimulationManager.cs ✅ Manager principal
|
|
│ ├── TSNetINPGenerator.cs ✅ Generador INP
|
|
│ ├── TSNetTestProgram.cs ✅ Programa de pruebas
|
|
│ ├── test_tsnet_integration.py ✅ Script Python de prueba
|
|
│ └── Components/
|
|
│ └── TSNetTankAdapter.cs ✅ Adaptador tanques
|
|
└── Tests/
|
|
└── TSNetIntegrationTest.cs ✅ Tests C#
|
|
```
|
|
|
|
### Integración con MainViewModel:
|
|
- ✅ TSNetSimulationManager instanciado
|
|
- ✅ Comandos agregados (TBTestTSNetCommand, TBRunTSNetSimulationCommand, TBGenerateINPCommand)
|
|
- ✅ Métodos implementados (TestTSNetIntegration, RunTSNetSimulation, GenerateINPFile)
|
|
|
|
---
|
|
|
|
## 🔧 PRÓXIMOS PASOS INMEDIATOS
|
|
|
|
### 1. **Compilar y Probar Integración Básica**
|
|
```bash
|
|
# En Visual Studio, compilar proyecto
|
|
# Ejecutar desde MainViewModel: TBTestTSNetCommand
|
|
```
|
|
|
|
### 2. **Crear Adaptadores para Bomba y Tubería**
|
|
- TSNetPumpAdapter.cs
|
|
- TSNetPipeAdapter.cs
|
|
|
|
### 3. **Mejorar Generador INP**
|
|
- Soporte completo para bombas
|
|
- Curvas características
|
|
- Propiedades de fluidos
|
|
|
|
### 4. **Implementar Lectura de Resultados**
|
|
- Parser para archivos de salida TSNet
|
|
- Aplicación de resultados a objetos CtrEditor
|
|
|
|
---
|
|
|
|
## 🎯 OBJETIVOS DE CADA COMPONENTE
|
|
|
|
### **PythonInterop.cs**
|
|
- ✅ Inicializar Python embebido
|
|
- ✅ Ejecutar scripts Python
|
|
- ✅ Verificar disponibilidad de TSNet
|
|
- ✅ Comunicación bidireccional básica
|
|
|
|
### **TSNetSimulationManager.cs**
|
|
- ✅ Gestionar objetos hidráulicos
|
|
- ✅ Generar archivos INP
|
|
- ✅ Ejecutar simulaciones TSNet
|
|
- ⏳ Procesar resultados
|
|
- ⏳ Simulación continua
|
|
|
|
### **TSNetINPGenerator.cs**
|
|
- ✅ Generar estructura INP básica
|
|
- ✅ Soporte para tanques
|
|
- ⏳ Soporte completo para bombas
|
|
- ⏳ Soporte completo para tuberías
|
|
- ⏳ Propiedades avanzadas de fluidos
|
|
|
|
### **TSNetTankAdapter.cs**
|
|
- ✅ Conversión osHydTank → TSNet
|
|
- ✅ Generación líneas INP
|
|
- ✅ Aplicación de resultados
|
|
- ⏳ Propiedades avanzadas de fluidos
|
|
|
|
---
|
|
|
|
## ⚙️ CONFIGURACIÓN REQUERIDA
|
|
|
|
### **Archivos Python TSNet** (Ubicación requerida):
|
|
```
|
|
D:\Proyectos\VisualStudio\CtrEditor\bin\Debug\net8.0-windows8.0\tsnet\
|
|
├── python312.dll
|
|
├── python.exe
|
|
├── Lib/
|
|
└── site-packages/
|
|
└── tsnet/
|
|
```
|
|
|
|
### **Dependencias C#**:
|
|
- System.Diagnostics.Process
|
|
- System.Runtime.InteropServices
|
|
- Newtonsoft.Json
|
|
|
|
---
|
|
|
|
## 🧪 PRUEBAS DISPONIBLES
|
|
|
|
### **Test Rápido desde UI**:
|
|
1. Compilar proyecto
|
|
2. Ejecutar CtrEditor
|
|
3. Usar comando TBTestTSNetCommand
|
|
4. Verificar output en Debug console
|
|
|
|
### **Test Completo**:
|
|
```csharp
|
|
await TSNetIntegrationTest.RunAllTestsAsync();
|
|
```
|
|
|
|
### **Test Generación INP**:
|
|
```csharp
|
|
await TSNetIntegrationTest.TestINPGeneration();
|
|
```
|
|
|
|
---
|
|
|
|
## 🎨 INTEGRACIÓN CON osHydTank
|
|
|
|
El sistema está diseñado para trabajar con el `osHydTank` existente:
|
|
|
|
### **Flujo de Datos**:
|
|
1. osHydTank → TSNetTankAdapter → INP File
|
|
2. TSNet Simulation → Results → TSNetTankAdapter → osHydTank
|
|
3. osHydTank → UI Update
|
|
|
|
### **Propiedades Mapeadas**:
|
|
- CurrentLevelM ↔ Tank Level
|
|
- TankPressure ↔ Tank Pressure
|
|
- CurrentVolumeL ↔ Tank Volume
|
|
- FluidProperties ↔ TSNet Fluid Properties
|
|
|
|
---
|
|
|
|
## 🔍 DIAGNÓSTICO Y DEBUGGING
|
|
|
|
### **Verificar Integración**:
|
|
```csharp
|
|
// Desde MainViewModel
|
|
await TestTSNetIntegration();
|
|
```
|
|
|
|
### **Debug Output**:
|
|
- PythonInterop: Logs de inicialización Python
|
|
- TSNetSimulationManager: Logs de simulación
|
|
- TSNetINPGenerator: Logs de generación INP
|
|
|
|
### **Archivos de Salida**:
|
|
- INP files: `{WorkingDirectory}/network_*.inp`
|
|
- Results: `{WorkingDirectory}/results/`
|
|
- Logs: Debug console
|
|
|
|
---
|
|
|
|
## 🚧 LIMITACIONES ACTUALES
|
|
|
|
1. **Solo tanques implementados completamente**
|
|
2. **Bombas y tuberías en desarrollo**
|
|
3. **Simulación continua pendiente**
|
|
4. **Lectura de resultados básica**
|
|
5. **Propiedades de fluido simplificadas**
|
|
|
|
---
|
|
|
|
## 🎉 READY TO TEST!
|
|
|
|
El sistema está listo para pruebas básicas. La integración fundamental está completa y se puede:
|
|
|
|
1. ✅ Inicializar Python desde C#
|
|
2. ✅ Verificar disponibilidad de TSNet
|
|
3. ✅ Generar archivos INP básicos
|
|
4. ✅ Ejecutar simulaciones TSNet
|
|
5. ✅ Gestionar tanques hidráulicos
|
|
|
|
**¡Siguiente paso: Compilar y probar la integración!** 🚀
|