Una librería para generar gráficos de los resultados de las simulaciones de simcombustion.
Project description
Instrucciones de uso
Esta librería consta de 3 clases:
- graficar_2d: Análisis de sensibilidad simple. Se pueden pedir uno o dos resultados a la vez. Si se piden 2 se crea automáticamente un gráfico con doble eje Y. Se puede controlar la escala de cada eje Y de forma independiente ('linear' o 'log') usando el parámetro escalas_y GraficadorCombustion(nombre_combustible='YYY').graficar_2d( variable_x='rel_equivalencia', rango_x=(0.6, 1.4, 40), variables_y=['T_out_K', 'X_NOx'], # Pido dos resultados parametros_fijos={ ... }, escalas_y=['linear', 'log'] # El primer eje lineal, el segundo logarítmico )
- graficar_3d: Mapeo de superficie. Sirve para obtener una visión global de cómo un resultado se comporta en un espacio de diseño definido por dos variables de entrada. Genera una superficie 3D interactiva que puedes rotar con el ratón para explorar su forma. GraficadorCombustion(nombre_combustible='YYY').graficar_3d( variable_x='T_in_K', rango_x=(600, 1000, 25), variable_y='rel_equivalencia', rango_y=(0.7, 1.3, 25), variable_z='X_NOx', # El resultado que forma la "montaña" parametros_fijos={ ... } )
- graficar_barrido_parametrico: Análisis paramétrico. ¿Cómo se ve afectada mi curva de Y vs X si varía otro input? Define una variable para el eje X (variable_x), una para el eje Y (variable_y), y una tercera para el barrido (variable_barrido). Genera múltiples curvas en el mismo gráfico, una para cada valor del parámetro de barrido. GraficadorCombustion(nombre_combustible='YYY').graficar_barrido_parametrico( variable_x='rel_equivalencia', rango_x=(0.7, 1.3, 50), variable_y='X_NOx', variable_barrido='P_in_atm', # Barreré la presión valores_barrido=[5, 10, 15, 20], # Para estas 4 presiones parametros_fijos={ ... } )
Lista de parámetros con los que trabajar:
Entrada: nombre_combustible: El nombre del combustible que se usará en la simulación (ej. 'CH4', 'NC10H22'). Debe ser una especie que exista en el mecanismo de reacción rel_equivalencia T_in_K P_in_atm tiempo_residencia_s Salida: T_out_K efficiency_pct X_NOx X_fuel_inquemado X_CO X_CO2 X_otros_HC
script de ejemplo
from graficombustion import GraficadorCombustion
import cantera as ct
--- 1. Gráfico 2D con dos ejes: uno lineal y uno logarítmico ---
print("--- EJEMPLO 1: GRÁFICO 2D CON ESCALAS MIXTAS ---")
try:
graficador_2d = GraficadorCombustion(nombre_combustible='NC10H22')
graficador_2d.graficar_2d(
variable_x='rel_equivalencia',
rango_x=(0.5, 1.5, 30), #(min, max, discretizacion)
parametros_fijos={
'T_in_K': 750,
'P_in_atm': 20,
'P_in_atm': 20,
'tiempo_residencia_s': 0.005
},
escalas_y=['linear', 'log']
)
except (ValueError, ImportError) as e:
print(f"Error: {e}")
--- 2. Gráfico 2D con escala lineal por defecto ---
print("\n--- EJEMPLO 2: GRÁFICO 2D CON ESCALA LINEAL (POR DEFECTO) ---")
try:
graficador_lineal = GraficadorCombustion(nombre_combustible='CH4')
graficador_lineal.graficar_2d(
variable_x='rel_equivalencia',
rango_x=(0.7, 1.3, 25),
variables_y=['X_NOx', 'X_CO'],
parametros_fijos={
'T_in_K': 800,
'P_in_atm': 10,
'tiempo_residencia_s': 0.01
}
)
except (ValueError, ImportError) as e:
print(f"Error: {e}")
--- 3. Gráfico 3D (funciona como antes) ---
print("\n--- EJEMPLO 3: GRÁFICO 3D ---")
try:
graficador_3d = GraficadorCombustion(nombre_combustible='CH4')
graficador_3d.graficar_3d(
variable_x='T_in_K',
rango_x=(600, 1000, 25),
variable_y='rel_equivalencia',
rango_y=(0.7, 1.3, 25),
variable_z='X_NOx',
parametros_fijos={
'P_in_atm': 10,
'tiempo_residencia_s': 0.004
}
)
except (ValueError, ImportError) as e:
print(f"Error: {e}")
--- 4. Ejemplo Avanzado: Presión y Temperatura Acopladas ---
print("\n--- EJEMPLO 4: GRÁFICO AVANZADO CON PARÁMETRO FUNCIONAL ---")
try:
# 1. Definir la función que calcula la temperatura. Esta función recibirá la presión actual (la variable x) y devolverá la temperatura calculada.
nombre_combustible_av = 'CH4'
phi_av = 0.7
T1_K_av = 300.0
P1_atm_av = 1.0
#Aqui usamos un poquito de cantera para calcular el exponente isentropico, si sacamos los datos de unas tablas o algo nos ahorramos esto y lo declaramos directamente
gas_ref = ct.Solution('gri30.yaml')
gas_ref.TP = T1_K_av, P1_atm_av * ct.one_atm
gas_ref.set_equivalence_ratio(phi_av, nombre_combustible_av, 'O2:1.0, N2:3.76')
exponente_av = (ct.gas_constant / gas_ref.mean_molecular_weight) / gas_ref.cp_mass
def temperatura_isentropica(P2_atm):
"""Calcula la temperatura T2 para una presión P2 dada."""
return T1_K_av * (max(P2_atm / P1_atm_av, 1e-9)) ** exponente_av
# 2. Llamar al graficador
graficador_avanzado = GraficadorCombustion(nombre_combustible=nombre_combustible_av)
graficador_avanzado.graficar_2d(
variable_x='P_in_atm',
rango_x=(1, 40, 40),
variables_y=['X_NOx', 'X_CO'],
parametros_fijos={
'T_in_K': temperatura_isentropica, # ¡Pasamos la función como parámetro!
'rel_equivalencia': phi_av,
'tiempo_residencia_s': 0.025
},
escalas_y=['linear', 'linear'] # Forzamos escala lineal para ambos ejes
)
except (ValueError, ImportError) as e:
print(f"Error: {e}")
--- 5. Ejemplo Final: Gráfico de Barrido Paramétrico ---
print("\n--- EJEMPLO 5: GRÁFICO DE BARRIDO PARAMÉTRICO ---")
try:
graficador_barrido = GraficadorCombustion(nombre_combustible='NC10H22')
# Este método generará un gráfico de NOx vs. Phi para varias presiones
graficador_barrido.graficar_barrido_parametrico(
variable_x='rel_equivalencia',
rango_x=(0.7, 1.3, 50),
variable_y='X_NOx',
variable_barrido='P_in_atm',
valores_barrido=[5, 15, 20, 30], # Lista de presiones para cada curva
parametros_fijos={
'T_in_K': 600, # Temperatura de entrada fija y alta para generar NOx
'tiempo_residencia_s': 0.020
},
escala_y='linear'
)
except (ValueError, ImportError) as e:
print(f"Error: {e}")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file graficombustion-0.2.0.tar.gz.
File metadata
- Download URL: graficombustion-0.2.0.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66c16ecdc17f1160d16e720b282dafb399d016dc4d660144c97491045acf67b0
|
|
| MD5 |
d040c4155f635aa90fa6b88c55bc9551
|
|
| BLAKE2b-256 |
2400b4a8f7b4a41a22a5bc219950dff064def24b9a97d3c34528683714ecb438
|
File details
Details for the file graficombustion-0.2.0-py3-none-any.whl.
File metadata
- Download URL: graficombustion-0.2.0-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fbfb3554ae6a9d6315545c57b69f613c50a5515322105fda7f2dd40914687eb
|
|
| MD5 |
bcb8523ce601d2b45da5e7d7db6369ea
|
|
| BLAKE2b-256 |
f646969ef47a08ee83c21ddaec1885dd324ea13fcc7eabc2c35b48781b92acf5
|