# Módulo de termoquímica y pre-dimensionamiento de quemadores de baja presión ## 1. Propósito Este documento describe el módulo de termoquímica, balances de combustión y pre-dimensionamiento hidráulico de quemadores de baja presión incorporado a la aplicación **Calculador**. El desarrollo busca proporcionar una base de cálculo reutilizable para: - análisis de cromatografías de gases combustibles; - cálculo de propiedades requeridas en hojas de datos API 537; - balances de aire y productos de combustión; - estimación de carga térmica; - dimensionamiento hidráulico preliminar de puertos de quemador; - análisis paramétrico de diámetro, número de puertos y caída de presión; - evaluación hidráulica de turndown; - evaluación preliminar de bancos o *staging* de puertos. El alcance actual es de **ingeniería conceptual y pre-dimensionamiento**. El módulo todavía no predice estabilidad de llama, *flashback*, *blowoff*, levantamiento de llama, emisiones, ruido, interacción entre chorros, radiación, recirculación interna ni integridad térmica del quemador. --- ## 2. Ubicación en la aplicación El código se encuentra en: ```text src/logic/thermo/cantera/ ``` Los ensayos automatizados se encuentran en: ```text tests/thermo/ ``` La ubicación es coherente con la arquitectura existente, donde los motores termodinámicos se concentran bajo `src/logic/thermo/`. En particular, el nuevo módulo convive con: ```text src/logic/thermo/neqsim_service.py ``` La estructura actualmente implementada es: ```text src/logic/thermo/cantera/ ├── __init__.py ├── api537_properties.py ├── burner_port_hydraulics.py ├── burner_port_sensitivity.py ├── burner_staging.py ├── cantera_service.py ├── combustion_flow_balance.py ├── engineering_properties.py ├── gas_composition.py ├── gas_properties.py ├── hydrocarbon_data.py ├── species_map.py ├── stoichiometric_data.py └── stoichiometry.py ``` Pruebas asociadas: ```text tests/thermo/ ├── test_burner_port_hydraulics.py ├── test_burner_port_sensitivity.py ├── test_burner_staging.py ├── test_cantera_service.py ├── test_combustion_flow_balance.py └── test_stoichiometry.py ``` --- ## 3. Entorno de ejecución El módulo fue validado en el entorno Conda: ```text fenicsx-cantera ``` Versiones verificadas: ```text Python 3.12.13 Cantera 3.2.0 ``` La instalación de Cantera fue comprobada con el mecanismo `gri30.yaml`: ```text 53 especies 325 reacciones ``` El entorno también importa correctamente `dolfinx`, por lo que puede utilizarse como entorno integrado de cálculo para la aplicación. Comando de activación: ```bash conda activate fenicsx-cantera cd ~/Documents/Prodisys/ProdisysApps/Calculador ``` --- ## 4. Arquitectura funcional La secuencia de cálculo implementada es: ```text Cromatografía ↓ GasComposition ↓ Propiedades de ingeniería + Cantera ↓ Stoichiometry ↓ CombustionFlowBalance ↓ BurnerPortHydraulics ↓ BurnerPortSensitivity ↓ BurnerStaging ``` El diseño separa deliberadamente: 1. representación y normalización de la composición; 2. propiedades de ingeniería independientes del mecanismo cinético; 3. propiedades termoquímicas y de transporte calculadas con Cantera; 4. estequiometría y balances de combustión; 5. hidráulica de puertos; 6. exploración paramétrica; 7. selección preliminar de bancos activos. Esta separación permite reemplazar o ampliar cada capa sin modificar las demás. --- ## 5. Descripción de los módulos ### 5.1 `species_map.py` Normaliza nombres de componentes provenientes de cromatografías y reportes de laboratorio. Ejemplos: ```text METANO → CH4 ETANO → C2H6 PROPANO → C3H8 I-BUTANO → IC4H10 N-BUTANO → C4H10 C6+ → C6H14 DIÓXIDO DE CARBONO → CO2 ``` La normalización permite aceptar nombres en español, inglés y abreviaturas. ### 5.2 `hydrocarbon_data.py` Contiene datos de ingeniería para los componentes soportados: - masa molecular; - LHV molar; - HHV molar; - volumen molar normal; - datos de productos como H2O y SO2. Estos datos se emplean cuando el mecanismo de Cantera no contiene todas las fracciones pesadas presentes en la cromatografía. ### 5.3 `gas_composition.py` Define el modelo de dominio `GasComposition`. Responsabilidades: - validar valores negativos o vacíos; - consolidar nombres equivalentes; - normalizar a fracción molar; - exportar fracción molar o porcentaje molar; - consultar fracciones por especie; - identificar fracción combustible, inerte y oxígeno. La composición se almacena internamente como fracción molar normalizada. ### 5.4 `engineering_properties.py` Calcula propiedades de ingeniería a partir de la cromatografía completa: - masa molecular de la mezcla; - densidad ideal a condiciones normales; - densidad relativa respecto al aire; - LHV en kJ/Nm³; - HHV en kJ/Nm³; - índice de Wobbe basado en LHV. Esta capa no depende de las especies disponibles en `gri30.yaml`. ### 5.5 `cantera_service.py` Encapsula el acceso a Cantera mediante: - `GasState`; - `CanteraGasService`. Calcula, para las especies reconocidas por el mecanismo: - masa molecular; - densidad; - Cp; - Cv; - relación Cp/Cv; - viscosidad; - temperatura adiabática de llama a una relación de equivalencia dada. También registra: - porcentaje molar total de entrada; - porcentaje molar usado por Cantera; - porcentaje y especies excluidas por el mecanismo. Esta trazabilidad es obligatoria porque `gri30.yaml` no contiene todas las fracciones C4, C5 y C6+ usadas en algunas cromatografías de campo. ### 5.6 `api537_properties.py` Integra las dos fuentes de propiedades: - propiedades de ingeniería con cromatografía completa; - propiedades termoquímicas y de transporte con Cantera. La interfaz devuelve un único diccionario con: - MW; - densidad relativa; - densidad normal; - LHV; - HHV; - Wobbe; - Cp; - Cv; - Cp/Cv; - viscosidad; - temperatura adiabática; - composición aceptada y excluida por Cantera. ### 5.7 `stoichiometric_data.py` Contiene la composición elemental C/H/O/S de cada especie soportada. Esta información alimenta los balances elementales de combustión completa. ### 5.8 `stoichiometry.py` Implementa el modelo `Stoichiometry` sobre una base de 1 kmol de gas combustible. Calcula: - balance elemental; - oxígeno estequiométrico neto; - aire seco estequiométrico; - nitrógeno aportado por el aire; - equivalencia entre exceso de aire y relación de equivalencia; - productos húmedos; - productos secos; - fracciones molares de productos. La expresión base es: ```text O2,neto = C + H/4 + S - O/2 ``` El oxígeno presente en el gas se acredita una sola vez mediante el balance elemental. ### 5.9 `combustion_flow_balance.py` Conecta la estequiometría con caudales reales. Entradas: - composición; - caudal de gas en kg/h o Nm³/h; - exceso de aire. Resultados: - caudal molar del gas; - caudal normal del gas; - aire estequiométrico y real; - relación aire/gas molar, másica y volumétrica; - caudales por especie en productos húmedos y secos; - carga térmica por LHV y HHV; - cierre del balance de masa. El modelo exige que se especifique exactamente una base de caudal. ### 5.10 `burner_port_hydraulics.py` Implementa el pre-dimensionamiento hidráulico de puertos circulares idénticos. Modelo principal: ```text m_dot = Cd · A · sqrt(2 · rho · deltaP) ``` Calcula: - densidad aguas arriba; - caudal volumétrico real; - área efectiva requerida; - número mínimo de puertos; - velocidad media por puerto; - caída de presión calculada; - Reynolds; - velocidad del sonido; - Mach; - advertencias de validez. La ecuación se usa únicamente como primera aproximación para flujo subsónico y baja relación de presiones. ### 5.11 `burner_port_sensitivity.py` Genera matrices paramétricas sobre: - caudal; - fracción de carga; - caída de presión asignada a puertos; - diámetro de puerto; - número de puertos; - área abierta; - velocidad; - Reynolds; - Mach; - margen de presión. Incluye dos modos: 1. dimensionar el número de puertos para cada combinación; 2. evaluar una geometría fija a diferentes caudales. Para una geometría fija se verifica: ```text velocidad ∝ caudal caída de presión ∝ caudal² Reynolds ∝ caudal ``` ### 5.12 `burner_staging.py` Evalúa un quemador dividido en bancos activables de igual número de puertos. El módulo: - construye la geometría activa para cada número de bancos; - evalúa velocidad, caída de presión, Reynolds y Mach; - filtra por límites hidráulicos preliminares; - selecciona la alternativa aceptable con mayor número de bancos activos para favorecer la distribución espacial. Los límites de velocidad utilizados hasta ahora son filtros hidráulicos de exploración y no criterios demostrados de estabilidad de llama. --- ## 6. Caso de cálculo utilizado para validación ### 6.1 Composición de prueba La cromatografía usada durante el desarrollo fue: | Componente | % molar de entrada | |---|---:| | Metano | 67.119 | | Etano | 6.710 | | Propano | 4.277 | | i-Butano | 1.000 | | n-Butano | 1.000 | | i-Pentano | 0.500 | | n-Pentano | 0.500 | | C6+ representado como C6H14 | 0.300 | | CO2 | 6.059 | | N2 | 4.373 | | O2 | 0.135 | La suma del reporte de prueba no es 100 %. `GasComposition` renormaliza la mezcla antes de cualquier cálculo. ### 6.2 Propiedades de ingeniería obtenidas | Propiedad | Resultado | |---|---:| | Masa molecular | 22.55985 kg/kmol | | Densidad normal ideal | 1.00651 kg/Nm³ | | Densidad relativa al aire | 0.77887 | | LHV | 39,740.73 kJ/Nm³ | | HHV | 43,787.45 kJ/Nm³ | | Índice de Wobbe, LHV | 45,030.27 kJ/Nm³ | ### 6.3 Resultados de Cantera con `gri30.yaml` Para la composición parcial reconocida por el mecanismo: | Propiedad | Resultado | |---|---:| | Cp | 1,837.30 J/(kg·K) | | Cv | 1,441.05 J/(kg·K) | | Cp/Cv | 1.27497 | | Viscosidad | 1.1669×10⁻⁵ Pa·s | | Viscosidad | 0.0116688 mPa·s | | Temperatura adiabática, phi = 1 | 2,216.18 K | Las especies pesadas excluidas deben reportarse junto con estos resultados. --- ## 7. Balance de combustión para 200 kg/h Condiciones: ```text Caudal de gas 200 kg/h Temperatura 300 K para hidráulica Exceso de aire 20 % Presión de descarga 101325 Pa absolutos ``` Resultados principales: | Variable | Resultado | |---|---:| | Caudal molar de gas | 8.86531 kmol/h | | Caudal normal de gas | 198.707 Nm³/h | | Aire estequiométrico | 13.4295 kg aire/kg gas | | Aire real | 16.1154 kg aire/kg gas | | Caudal real de aire | 3,223.08 kg/h | | Caudal normal de aire | 2,503.98 Nm³/h | | Carga térmica por LHV | 2.19355 MW | | Carga térmica por HHV | 2.41691 MW | | Productos húmedos | 3,423.07 kg/h | | Productos húmedos, normal | 2,731.60 Nm³/h | | Productos secos, normal | 2,322.03 Nm³/h | | Error relativo de masa | -1.17×10⁻⁶ | El residuo de masa de aproximadamente -0.004 kg/h se atribuye al redondeo de masas moleculares tabuladas. --- ## 8. Dimensionamiento hidráulico preliminar ### 8.1 Caso con 1 oz/in² asignada completamente a puertos Para 200 kg/h, 300 K, `Cd = 0.70`: | Variable | Resultado | |---|---:| | Área abierta requerida | 0.002818 m² | | Área abierta requerida | 28.18 cm² | | Velocidad media | 21.42 m/s | | Mach | aproximadamente 0.057 | Distintas combinaciones de diámetro y número de puertos producen prácticamente el mismo resultado cuando conservan la misma área abierta total. Ejemplos equivalentes: | Diámetro | Número de puertos | Área total aproximada | |---:|---:|---:| | 4 mm | 225 | 0.002827 m² | | 6 mm | 100 | 0.002827 m² | | 10 mm | 36 | 0.002827 m² | | 12 mm | 25 | 0.002827 m² | | 15 mm | 16 | 0.002827 m² | | 20 mm | 9 | 0.002827 m² | Este caso es útil como referencia, pero no debe usarse como diseño final porque la presión disponible también debe cubrir tubería, accesorios, válvulas, manifold, distribución interna y margen de operación. ### 8.2 Sensibilidad a caída de presión asignada a puertos Para 200 kg/h y puertos de 10 mm: | ΔP disponible, oz/in² | Número de puertos | Área total, cm² | Velocidad, m/s | ΔP calculada, oz/in² | Re | |---:|---:|---:|---:|---:|---:| | 0.25 | 72 | 56.55 | 10.71 | 0.249 | 8,419 | | 0.30 | 66 | 51.84 | 11.68 | 0.296 | 9,185 | | 0.40 | 57 | 44.77 | 13.52 | 0.397 | 10,635 | | 0.50 | 51 | 40.06 | 15.10 | 0.496 | 11,886 | | 0.60 | 47 | 36.91 | 16.38 | 0.584 | 12,898 | | 0.75 | 42 | 32.99 | 18.32 | 0.731 | 14,433 | | 1.00 | 36 | 28.27 | 21.35 | 0.993 | 16,839 | El candidato seleccionado para estudiar turndown fue: ```text 57 puertos × 10 mm Cd = 0.70 ΔP de diseño en puertos ≈ 0.40 oz/in² ``` --- ## 9. Turndown hidráulico de geometría fija Resultados para 57 puertos de 10 mm, todos abiertos: | Caudal, kg/h | Turndown | Velocidad, m/s | ΔP, oz/in² | Re | |---:|---:|---:|---:|---:| | 200 | 1.00 | 13.484 | 0.39624 | 10,635 | | 150 | 1.33 | 10.113 | 0.22289 | 7,976 | | 100 | 2.00 | 6.742 | 0.09906 | 5,317 | | 66 | 3.03 | 4.450 | 0.04315 | 3,510 | | 50 | 4.00 | 3.371 | 0.02477 | 2,659 | | 40 | 5.00 | 2.697 | 0.01585 | 2,127 | | 20 | 10.00 | 1.348 | 0.00396 | 1,063 | La geometría fija pierde impulso rápidamente al disminuir el caudal. A 20 kg/h el Reynolds cae por debajo de 2,000. Esto motivó la evaluación de bancos. --- ## 10. Evaluación preliminar de staging Configuración: ```text 57 puertos totales 3 bancos 19 puertos por banco Diámetro de puerto 10 mm Cd = 0.70 ΔP máxima permitida en puertos 0.40 oz/in² Ventana hidráulica preliminar de velocidad 4 a 16 m/s ``` Resultados seleccionados por el algoritmo: | Caudal, kg/h | Bancos activos | Puertos activos | Velocidad, m/s | ΔP, oz/in² | Re | Estado | |---:|---:|---:|---:|---:|---:|---| | 20 | 1 | 19 | 4.056 | 0.0358 | 3,190 | Aceptable | | 40 | 2 | 38 | 4.056 | 0.0358 | 3,190 | Aceptable | | 50 | 2 | 38 | 5.069 | 0.0559 | 3,988 | Aceptable | | 66 | 3 | 57 | 4.461 | 0.0433 | 3,510 | Aceptable | | 100 | 3 | 57 | 6.759 | 0.0993 | 5,317 | Aceptable | | 150 | 3 | 57 | 10.139 | 0.2235 | 7,976 | Aceptable | | 200 | 3 | 57 | 13.518 | 0.3973 | 10,635 | Aceptable | Interpretación: - El staging mantiene velocidades superiores a las de la geometría completa a bajo caudal. - Todos los puntos cumplen el límite hidráulico preliminar de 0.40 oz/in². - Todos los puntos seleccionados permanecen por encima de Reynolds 3,000. - La coincidencia de velocidad entre 20 kg/h con un banco y 40 kg/h con dos bancos es consecuencia directa de duplicar simultáneamente caudal y área activa. La condición “Aceptable” significa únicamente que el caso cumple los límites hidráulicos ingresados. No constituye validación de estabilidad o desempeño de combustión. --- ## 11. Caso consolidado FB-1602 ### 11.1 Base de cálculo El caso FB-1602 corresponde a un combustor cerrado con capacidad contractual de 200 kg/h. La presión manométrica disponible en la entrada de gas es 430.92 Pa y la elevación de referencia es 172 m sobre el nivel del mar. Para mantener trazabilidad entre los cálculos de ingeniería y los cálculos termoquímicos se usan dos representaciones de la corriente: - **composición real:** se conserva para peso molecular, densidad, balances, estequiometría, caudal de aire, potencia contractual e hidráulica; - **sustituto GRI30:** se usa para equilibrio, propiedades termoquímicas, transporte, temperatura adiabática y velocidad laminar de llama. ```text MW real = 31.077110 kg/kmol potencia contractual = 1.950000 MW potencia LHV calculada = 2.041778 MW ``` ### 11.2 Sustituto compatible con GRI30 Los hidrocarburos C4 a C10 se representan mediante propano y etileno: \[ \mathrm{C_nH_{2n+2}} \rightarrow \mathrm{C_3H_8} + \frac{n-3}{2}\mathrm{C_2H_4} \] | Especie | mol % | |---|---:| | CH4 | 47.683856 | | C2H6 | 6.239866 | | C2H4 | 10.166058 | | C3H8 | 21.015752 | | CO2 | 12.908239 | | N2 | 1.110348 | | O2 | 0.875881 | ```text factor de expansión molar = 1.113165 especies excluidas = 0 ``` La transformación conserva carbono, hidrógeno, oxígeno y demanda estequiométrica de oxígeno dentro de la tolerancia numérica. ### 11.3 Resultados termoquímicos Para 20 % de exceso de aire: | Temperatura | Densidad del sustituto | Viscosidad | Temperatura adiabática | |---:|---:|---:|---:| | 25 °C | 1.122882 kg/m³ | 1.082684e-5 Pa·s | 2071.90 K | | 40 °C | 1.069095 kg/m³ | 1.133922e-5 Pa·s | 2081.32 K | La hidráulica de gas frío usa la densidad obtenida con el peso molecular real. ### 11.4 Velocidad laminar de llama La velocidad laminar se calcula con `Cantera FreeFlame`, mecanismo `gri30.yaml`, transporte `mixture-averaged` y dominio de 0.03 m. | Nivel | ratio | slope | curve | |---|---:|---:|---:| | Base | 4.0 | 0.10 | 0.20 | | Media | 3.0 | 0.06 | 0.12 | | Fina | 2.5 | 0.04 | 0.08 | | Condición | SL base | SL media | SL fina | Diferencia media-fina | |---|---:|---:|---:|---:| | phi = 0.70 | 0.257347 | 0.253700 | 0.251706 m/s | 0.792 % | | phi = 0.833333 | 0.371926 | 0.366365 | 0.363259 m/s | 0.855 % | | phi = 1.00 | 0.457960 | 0.454598 | 0.451901 m/s | 0.597 % | Valor adoptado: ```text SL = 0.363259 m/s T = 25 °C phi = 0.833333 exceso de aire = 20 % ``` La relación `U/SL` es un indicador comparativo, no un criterio único de `blowoff` o `flashback`. ### 11.5 Filosofía de staging | Caudal total | Stage 1 | Stage 2 | Stage 3 | |---:|---:|---:|---:| | 20 kg/h | 20 | 0 | 0 | | 40 kg/h | 40 | 0 | 0 | | 66 kg/h | 40 | 26 | 0 | | 100 kg/h | 40 | 60 | 0 | | 150 kg/h | 40 | 60 | 50 | | 200 kg/h | 40 | 60 | 100 | El staging es acumulativo. Las capacidades máximas por stage son 40, 60 y 100 kg/h. ### 11.6 Geometría seleccionada de puertos | Stage | Toro medio | Rango | Puertos | Diámetro | Pitch | Velocidad | ΔP máxima | |---:|---:|---:|---:|---:|---:|---:|---:| | 1 | 250 mm | 20-40 kg/h | 14 | 12 mm | 56.10 mm | 2.807-5.897 m/s | 36.78 Pa | | 2 | 350 mm | 26-60 kg/h | 20 | 12 mm | 54.98 mm | 2.554-6.191 m/s | 40.55 Pa | | 3 | 470 mm | 50-100 kg/h | 34 | 12 mm | 43.43 mm | 2.890-6.070 m/s | 38.98 Pa | El Stage 3 se fija en 34 puertos para permitir división simétrica. ### 11.7 Doble alimentación por toro Cada toro dispone de dos entradas opuestas a 180°. | Stage | División | Caudal máximo por rama | ID hidráulico mínimo | |---:|---:|---:|---:| | 1 | 7 + 7 | 20 kg/h | 27.26 mm | | 2 | 10 + 10 | 30 kg/h | 33.38 mm | | 3 | 17 + 17 | 50 kg/h | 43.10 mm | Los diámetros son internos hidráulicos mínimos para una velocidad objetivo de 8 m/s. La selección constructiva debe usar el diámetro interno real de la tubería comercial. ### 11.8 Archivos y resultados ```text scripts/run_fb1602_cantera.py scripts/run_fb1602_flame_speed.py scripts/run_fb1602_flame_refinement.py scripts/run_fb1602_stage_port_design.py outputs/fb1602/ outputs/fb1602/flame_speed/ outputs/fb1602/flame_speed_refinement/ outputs/fb1602/stage_port_design/ ``` ### 11.9 Estado y pendientes El modelo actual incluye composición real, sustituto GRI30, equilibrio, velocidad laminar refinada, staging, puertos y doble alimentación. Pendientes: 1. seleccionar diámetros comerciales; 2. calcular pérdidas de líneas, válvulas y accesorios; 3. verificar uniformidad circunferencial; 4. realizar CFD frío; 5. realizar CFD reaccionante; 6. revisar estabilidad y emisiones; 7. validar experimentalmente o con información del proveedor. ## 12. Pruebas automatizadas Las pruebas se ejecutan con: ```bash python -m pytest -q \ tests/thermo/test_stoichiometry.py \ tests/thermo/test_combustion_flow_balance.py \ tests/thermo/test_burner_port_hydraulics.py \ tests/thermo/test_burner_port_sensitivity.py \ tests/thermo/test_burner_staging.py ``` Estado verificado: ```text 18 passed ``` Las pruebas cubren: - estequiometría de metano; - crédito único del oxígeno contenido en el combustible; - conversión entre exceso de aire y phi; - selección exclusiva de base másica o volumétrica; - equivalencia entre bases de caudal; - cierre del balance de masa; - ecuación de orificio; - cálculo de Reynolds; - validación de orden de presiones; - tamaño de matrices paramétricas; - escalamiento de ΔP con el cuadrado del caudal; - escalamiento de Reynolds con el caudal; - validación de bancos uniformes; - selección de etapa preferida. `test_cantera_service.py` existe en la estructura, pero debe incorporarse a la corrida consolidada cuando su contenido y cobertura se revisen. --- ## 13. Supuestos y limitaciones actuales 1. La composición se trata como gas monofásico. 2. Las fracciones pesadas se representan mediante especies sustitutas, por ejemplo C6+ como C6H14. 3. `gri30.yaml` no contiene todas las especies pesadas. 4. El LHV y HHV se calculan con datos tabulados de ingeniería. 5. La densidad normal se calcula con gas ideal a 0 °C y 1 atm. 6. El aire se representa como O2 + 3.7619 N2. 7. No se incluye humedad del aire. 8. La combustión estequiométrica se asume completa a CO2, H2O y SO2. 9. No se predicen CO, NOx, hidrocarburos no quemados ni hollín. 10. El modelo de puertos es incompresible y usa un `Cd` suministrado. 11. No se incluyen pérdidas en líneas, válvulas, manifolds o distribuidores. 12. El número de bancos del modelo inicial exige reparto uniforme de puertos. 13. Los límites de velocidad de 4 a 16 m/s son filtros de exploración. 14. No existe todavía una lógica dinámica de apertura/cierre, histéresis, ignición o confirmación de llama por banco. 15. No se ha validado el modelo contra datos experimentales ni contra un fabricante. --- ## 14. Próximos desarrollos recomendados Orden sugerido: 1. Consolidar y versionar la cromatografía real de cada combustor. 2. Revisar y ampliar `test_cantera_service.py`. 3. Implementar cálculo de velocidad laminar de llama para mezclas compatibles con mecanismos seleccionados. 4. Evaluar mecanismos cinéticos que incluyan fracciones C4–C6. 5. Incorporar límites de estabilidad como datos experimentales o correlaciones, manteniéndolos separados de los filtros hidráulicos. 6. Diseñar el manifold y verificar uniformidad de distribución entre puertos. 7. Construir presupuesto completo de caída de presión desde el tanque hasta el quemador. 8. Definir estrategia real de staging, válvulas y lógica de control. 9. Generar geometrías candidatas para CFD no reactivo. 10. Ejecutar CFD de mezcla y distribución de aire. 11. Ejecutar CFD reactivo con radiación. 12. Diseñar y ensayar prototipo de laboratorio. 13. Integrar una interfaz de usuario en la aplicación. 14. Exportar resultados a reportes y hojas de datos API 537. --- ## 15. Criterio de uso Los resultados actuales son apropiados para: - comparar alternativas geométricas; - construir presupuestos de presión; - detectar configuraciones hidráulicamente inviables; - preparar casos CFD; - establecer hipótesis de diseño; - documentar trazabilidad de cálculos preliminares. No deben utilizarse por sí solos para fabricar, certificar o poner en servicio un quemador. La selección final requiere validación de combustión, CFD, ensayos, revisión de seguridad, instrumentación, materiales y cumplimiento de los códigos aplicables.