Skip to content
cfd-lab:~/es/posts/2026-08-20-franklin-stov…● online

Traducción del original en coreano escrito por el autor. Leer el original (한국어)

NOTE #135DAY THU 유체역학DATE 2026.08.20UPDATED 2026.10.19READ 9 min read#Stack-Effect#Natural-Convection#Buoyancy#Historical#Flow-Phenomena

Bajar el humo 1 m costó 7 Pa de tiro — la estufa de Franklin y el presupuesto de flotabilidad

La flotabilidad se compra metro a metro con la densidad local: el descenso pagado con gas caliente no se recupera con un metro añadido en el extremo frío.

1741: una estufa que manda el humo hacia abajo a propósito#

Benjamin Franklin rediseñó la chimenea en 1741. El objetivo era simple: atrapar dentro de la sala el calor que de otro modo se escapa directamente por el tiro. Europa crecía en población, la leña escaseaba y la eficiencia de calefacción rozaba el problema de supervivencia.

Su método consistió en plegar el recorrido. El humo que sube del fuego pasa por encima de un deflector (baffle, una placa cruzada en el conducto que obliga al flujo a girar), baja hacia abajo siguiendo una pared de hierro fundido y solo después entra en la chimenea. Durante el descenso el hierro se calienta y radia hacia la sala. Los textos de la época llamaban a esto "fenómeno de sifón".

La boca de la chimenea no cambia de altura. El desnivel neto que gana el humo tampoco. Y sin embargo esa estufa se hizo célebre por devolver humo a la habitación. Este artículo anota en un libro contable dónde y cuánto se pierde exactamente. La respuesta cabe en una línea: la flotabilidad solo se gana en la altura donde el gas todavía está caliente.

Llevar down-leg de 0 hacia 1 m deja la boca clavada en 7 m y baja solo el tiro neto.

The chimney top stays at 7 m however you drag down-leg, so the elevation gained never changes — but the red bar grows and the net draft falls, because the descent is paid for with the hottest, lightest gas. Now drag fire tempdown: the mouth gauge crosses the amber spill limit far earlier with a deep down-leg than with none.

Conviene mirar si crece la barra roja del libro. Al bajar fire temp, el indicador de la boca cruza la línea ámbar de reflujo antes cuanto más profundo es el descenso.

El tiro es una diferencia de densidad multiplicada por una altura#

La fuerza con que una chimenea arrastra el humo se llama tiro (draft). No es una bomba, es un desequilibrio hidrostático. La columna de aire exterior y la columna de humo interior simplemente no pesan lo mismo.

Para un conducto de altura HH, el tiro se escribe

Δpdraft=∫0H(ρ∞−ρ(z))g dz\Delta p_{\text{draft}} = \int_0^{H} \left( \rho_\infty - \rho(z) \right) g \, \mathrm{d}z

donde ρ∞\rho_\infty es la densidad del aire ambiente, ρ(z)\rho(z) la densidad del humo a la altura zz y gg la gravedad. La presión absoluta es casi idéntica dentro y fuera, así que el gas ideal da ρ=p0/(RT)\rho = p_0 / (R T); con una temperatura de humo uniforme TgT_g la integral se cierra de inmediato.

Δpdraft=ρ∞gH(1−T∞Tg)\Delta p_{\text{draft}} = \rho_\infty g H \left( 1 - \frac{T_\infty}{T_g} \right)

Con aire exterior a 10 °C (ρ∞=1,247\rho_\infty = 1{,}247 kg/m³), humo a 500 K y 7 m de chimenea salen 37 Pa. El tiro real de una chimenea está entre 10 y 30 Pa, de modo que el orden de magnitud encaja.

Lo decisivo es que dz\mathrm{d}z está dentro de la integral. La flotabilidad no es un número que se multiplica una vez por la altura total: se compra metro a metro, con la densidad que haya allí. Ahí es donde Franklin pagó.

La flotabilidad solo se gana donde el gas está caliente#

Conviene cortar el recorrido en tres tramos: la subida hasta el deflector (+0,8+0{,}8 m), el descenso (−hd-h_d) y la chimenea (+6,2+hd+6{,}2 + h_d m). Sus desniveles suman siempre 7 m, valga lo que valga hdh_d. Pero la contribución de flotabilidad de cada tramo se calcula con la densidad que el humo lleva al pasar por él.

El humo se enfría cediendo calor a las paredes. A lo largo de la coordenada ss eso es una sola ecuación diferencial de primer orden.

dTds=−UPm˙cp(T−T∞)\frac{\mathrm{d}T}{\mathrm{d}s} = -\frac{U P}{\dot{m} c_p} \left( T - T_\infty \right)

UU es el coeficiente global de transferencia de calor, PP el perímetro del conducto, m˙\dot{m} el caudal másico y cpc_p el calor específico. La solución es una caída exponencial cuya longitud característica es m˙cp/(UP)\dot{m} c_p / (U P), dato que importará enseguida.

Ahora la pérdida se ve. El tramo descendente es el segundo más caliente del recorrido. Su densidad es casi la mínima, así que (ρ∞−ρ)(\rho_\infty - \rho) es casi el máximo, y eso queda multiplicado por un dz\mathrm{d}z negativo. En cambio el tramo de chimenea que recupera ese metro trabaja con gas que ya entregó su calor al hierro. En vez de vender caro y comprar barato, la estufa compra caro y vende barato.

Peor aún: en el diseño de Franklin el tramo descendente está dentro de la sala, es decir, es por construcción el tramo que más calor pierde. La misma característica pensada para subir la eficiencia de calefacción gasta antes el presupuesto que la chimenea tenía previsto.

Cerrar el balance de cantidad de movimiento en un lazo#

El caudal m˙\dot{m} se fija donde la flotabilidad iguala a las pérdidas. Es un balance de cantidad de movimiento tomado una vez alrededor del conducto.

∑i∫Li(ρ∞−ρ)g dz=∫0LfDm˙22ρA2 ds+Km˙22ρeA2\sum_{i} \int_{L_i} (\rho_\infty - \rho) g \, \mathrm{d}z = \int_0^{L} \frac{f}{D} \frac{\dot{m}^2}{2 \rho A^2} \, \mathrm{d}s + K \frac{\dot{m}^2}{2 \rho_e A^2}

El lado izquierdo es la altura de flotabilidad; el derecho, la fricción más las pérdidas locales (codos y salida). ff es el factor de fricción de Darcy, DD el diámetro del conducto, AA la sección, KK el coeficiente de pérdida local y ρe\rho_e la densidad de salida. El término de fricción es la forma estándar de Darcy. La parte del lazo que la diferencia de densidad pone en movimiento es la misma flotabilidad que un fluido que empieza a rodar al calentarse desde abajo.

La ecuación es menos inocente de lo que parece. Subir m˙\dot{m} hace crecer el lado derecho como m˙2\dot{m}^2, pero también hace crecer el izquierdo: más caudal significa menos tiempo de residencia, y el gas llega más caliente a la chimenea. Por esa realimentación el residuo Δp−Δploss\Delta p - \Delta p_{\text{loss}} es cóncavo en m˙\dot{m} y tiene dos raíces. La raíz inferior es inestable; el punto de operación físico es la superior.

El libro contable de la flotabilidad, escrito en Python#

Se marcha la temperatura por un recorrido finamente dividido, se recoge por separado la altura de flotabilidad de cada tramo y se busca la raíz superior por bisección. El barrido va de 0 a 1,2 m de descenso.

import math
 
G, R_AIR, CP = 9.81, 287.0, 1100.0
T_AMB, P_ATM = 283.0, 101325.0
D_FLUE = 0.15
A_FLUE = math.pi * D_FLUE ** 2 / 4.0
PERIM = math.pi * D_FLUE
F_DARCY, K_MINOR = 0.030, 3.0
U_ROOM, U_STACK = 40.0, 5.0        # canal de fundicion en la sala / fabrica de la chimenea [W/m2K]
Z_TOP, Z_BAFFLE = 7.0, 0.80        # salida de la chimenea / borde del deflector [m]
A_MOUTH, V_SPILL = 0.12, 0.25      # area de la boca [m2] / velocidad de cara limite de reflujo [m/s]
 
 
def gas_density(T):
    return P_ATM / (R_AIR * T)
 
 
def march_flue(mdot, h_down, T_fire, n=120):
    # recorre subida / descenso / chimenea acumulando la altura por tramo y la perdida total
    legs = [(Z_BAFFLE, +1.0, U_ROOM),
            (h_down, -1.0, U_ROOM),
            (Z_TOP - Z_BAFFLE + h_down, +1.0, U_STACK)]
    T, loss, heads = T_fire, 0.0, []
    rho_a = gas_density(T_AMB)
    for L, sgn, U in legs:
        head = 0.0
        if L > 0.0:
            ds = L / n
            for _ in range(n):
                T_new = T_AMB + (T - T_AMB) * math.exp(-U * PERIM * ds / (mdot * CP))
                rho = gas_density(0.5 * (T + T_new))
                head += (rho_a - rho) * G * sgn * ds
                loss += F_DARCY / D_FLUE * 0.5 * mdot ** 2 / (rho * A_FLUE ** 2) * ds
                T = T_new
        heads.append(head)
    loss += K_MINOR * 0.5 * mdot ** 2 / (gas_density(T) * A_FLUE ** 2)
    return heads, loss, T
 
 
def solve_mdot(h_down, T_fire, lo=1e-3, hi=0.4, n=100):
    # raiz superior (estable) de flotabilidad = perdida; 0.0 si no existe raiz
    grid = [lo * (hi / lo) ** (i / (n - 1.0)) for i in range(n)]
    res = []
    for m in grid:
        heads, loss, _ = march_flue(m, h_down, T_fire)
        res.append(sum(heads) - loss)
    k = max(range(n), key=lambda i: res[i])
    if res[k] <= 0.0:
        return 0.0
    a, b = grid[k], grid[-1]
    for _ in range(40):
        m = 0.5 * (a + b)
        heads, loss, _ = march_flue(m, h_down, T_fire)
        a, b = (m, b) if sum(heads) - loss > 0.0 else (a, m)
    return 0.5 * (a + b)
 
 
print("h_down[m]  mdot[kg/s]  V_exit[m/s]  draft[Pa]  T_exit[K]")
for i in range(0, 7):
    h = 0.2 * i
    m = solve_mdot(h, 700.0)
    heads, loss, T_e = march_flue(m, h, 700.0)
    print(f"  {h:4.2f}     {m:8.4f}     {m / (gas_density(T_e) * A_FLUE):6.2f}"
          f"     {sum(heads):7.2f}    {T_e:7.1f}")
 
for h in (0.0, 1.0):
    m = solve_mdot(h, 700.0)
    heads, loss, T_e = march_flue(m, h, 700.0)
    print(f"\nbuoyancy ledger  h_down = {h:.1f} m, mdot = {m:.4f} kg/s")
    for name, val in zip(["rise to baffle", "descent      ", "chimney      "], heads):
        print(f"  {name}  {val:+7.2f} Pa")
    print(f"  net             {sum(heads):+7.2f} Pa   (loss {loss:.2f} Pa)")
 
mdot_spill = gas_density(T_AMB) * A_MOUTH * V_SPILL
print(f"\nspillage threshold: mdot < {mdot_spill:.4f} kg/s")
for h in (0.0, 1.0):
    lo, hi = 290.0, 700.0
    for _ in range(30):
        mid = 0.5 * (lo + hi)
        lo, hi = (mid, hi) if solve_mdot(h, mid) < mdot_spill else (lo, mid)
    print(f"  h_down = {h:.1f} m -> spills below T_fire = {0.5 * (lo + hi):6.1f} K")
h_down[m]  mdot[kg/s]  V_exit[m/s]  draft[Pa]  T_exit[K]
  0.00       0.0629       5.59       44.72      554.5
  0.20       0.0623       5.37       43.48      537.2
  0.40       0.0617       5.15       42.16      520.6
  0.60       0.0610       4.93       40.76      504.6
  0.80       0.0602       4.72       39.29      489.2
  1.00       0.0593       4.51       37.72      474.2
  1.20       0.0583       4.30       36.05      459.6
 
buoyancy ledger  h_down = 0.0 m, mdot = 0.0629 kg/s
  rise to baffle    +5.57 Pa
  descent          +0.00 Pa
  chimney         +39.15 Pa
  net              +44.72 Pa   (loss 44.72 Pa)
 
buoyancy ledger  h_down = 1.0 m, mdot = 0.0593 kg/s
  rise to baffle    +5.56 Pa
  descent          -6.16 Pa
  chimney         +38.32 Pa
  net              +37.72 Pa   (loss 37.72 Pa)
 
spillage threshold: mdot < 0.0374 kg/s
  h_down = 0.0 m -> spills below T_fire =  335.2 K
  h_down = 1.0 m -> spills below T_fire =  377.0 K

Basta comparar dos líneas del libro contable. Un metro de descenso se lleva −6,16-6{,}16 Pa de forma directa. Y la chimenea, ahora un metro más larga, aporta menos que antes: +38,32+38{,}32 Pa en vez de +39,15+39{,}15 Pa, porque el gas que entra en ella ya se ha enfriado más. Las dos pérdidas suman 6,99 Pa, exactamente la caída de 7,00 Pa en el tiro neto.

La resta del libro es de donde sale el 7,00. Un metro de descenso vale −6,16-6{,}16 Pa. La chimenea baja de +39,15+39{,}15 a +38,32+38{,}32, una pérdida de 0,830{,}83 Pa. 6,16+0,83=6,996{,}16+0{,}83=6{,}99, y el tiro neto cae 44,72−37,72=7,0044{,}72-37{,}72=7{,}00. La diferencia de 0,01 Pa es un dígito impreso. La subida al deflector apenas se mueve, de +5,57+5{,}57 a +5,56+5{,}56. Casi todo el daño está en la columna de descenso. El resto es una chimenea más larga que gana menos.

El caudal se mueve con eso. Con hd=0h_d=0 hay 0,0629 kg/s, 5,59 m/s a la salida y 554,5 K. Con hd=1,0h_d=1{,}0 m quedan 0,0593 kg/s, 4,51 m/s y 474,2 K. La temperatura baja 80,3 K y el caudal baja 0,0036 kg/s. Cada 0,2 m el tiro lee 44,72, 43,48, 42,16, 40,76, 39,29, 37,72, 36,05: pasos de unos 1,2 a 1,7 Pa que se van abriendo. El descenso está en hierro fundido con U=40U=40, ocho veces la fábrica de la chimenea con U=5U=5, así que un descenso más hondo pasa más tiempo enfriándose dentro de la sala.

El umbral de reflujo 0,0374 kg/s es ρ∞×0,12×0,25\rho_\infty \times 0{,}12 \times 0{,}25. A 10 °C, ρ∞=1,247\rho_\infty=1{,}247, de modo que 1,247×0,12=0,149641{,}247\times 0{,}12=0{,}14964 y por 0,25 da 0,03741, el 0,0374 impreso. La temperatura del fuego que cae por debajo de ese caudal sube de 335,2 K a 377,0 K. La diferencia es 41,8 K, el margen de 42 K del texto. A 700 K, con el fuego fuerte, ambos diseños quedan por encima del umbral. Solo mientras el fuego se apaga el metro extra llena la sala de humo.

La boca cede primero: 42 K de margen desaparecidos#

Que el tiro baje de 44,7 a 37,7 Pa no mete humo en la sala por sí solo. El límite real vive en la boca del fuego. Cuando la velocidad de cara a través de esa abertura cae por debajo de unos 0,25 m/s, el gas caliente empieza a escapar por su borde superior. Traducido a caudal másico, ese umbral es 0,0374 kg/s.

Las dos últimas líneas de la salida convierten el umbral en una temperatura. Sin descenso, la estufa aguanta hasta que el humo baja a 335 K. Con un metro de descenso cede ya en 377 K. Han desaparecido cuarenta y dos kelvin de margen.

Mientras el fuego arde con fuerza, ambas versiones tiran bien. El problema está en el momento de encender y en el momento en que el fuego se apaga. Por eso la estufa de Franklin quedó en la memoria como la que echaba humo. En la década de 1780 David Rittenhouse eliminó el tramo descendente y llevó el conducto directo hacia arriba en forma de L, y esa disposición se convirtió en el estándar.

El plano neutro: la misma cuenta dentro de una sola sala#

El mismo argumento hidrostático funciona en una sala sin chimenea alguna. Densidades distintas dentro y fuera implican pendientes distintas para las dos rectas hidrostáticas, y dos rectas de pendiente distinta se cortan en exactamente una altura. Esa altura es el plano neutro znz_n.

Δp(z)=pout−pin=(ρ∞−ρi)g(zn−z)\Delta p(z) = p_{\text{out}} - p_{\text{in}} = (\rho_\infty - \rho_i) g \left( z_n - z \right)

Con dos aberturas de áreas A1,A2A_1, A_2 a las alturas z1,z2z_1, z_2, exigir el mismo caudal másico por ambas da znz_n en forma cerrada.

zn=ρ∞A12z1+ρiA22z2ρ∞A12+ρiA22z_n = \frac{\rho_\infty A_1^2 z_1 + \rho_i A_2^2 z_2}{\rho_\infty A_1^2 + \rho_i A_2^2}

Por debajo del plano neutro entra aire exterior; por encima sale el aire de la sala. Conviene cambiar abajo las alturas de las aberturas, la relación de áreas y la temperatura interior.

Enlarge the upper opening and the amber neutral plane climbs toward it — the big hole is the one that sits near zero pressure difference. Then drag inside T below 283 K: the blue line tips the other way, both arrows reverse, and the room that was drawing at the floor starts drawing at the ceiling.

Al agrandar la abertura superior, el plano neutro es arrastrado hacia ella, porque un hueco grande pasa el mismo caudal con menos diferencia de presión. Después conviene bajar la temperatura interior por debajo de 283 K: la recta azul se inclina al otro lado y ambas flechas se invierten.

Poner 0 Pa en la abertura pega el plano neutro a esa cara#

Si se pierde la altura de referencia de la presión, totalPressure = 0 en una abertura clava el plano neutro en esa cara. La pendiente hidrostática de la columna exterior solo sobrevive en presión dinámica, con ρ∞gz\rho_\infty g z restado. Sin esa resta la solución converge con un caudal desviado por un factor de varios. La diferencia de temperatura de arriba supera los 200 K y la densidad varía más del 50 %. Forzar ρ≈ρ0(1−βΔT)\rho \approx \rho_0 (1 - \beta \Delta T) tasa otra flotabilidad. Una chimenea pertenece a una formulación compresible de bajo Mach o de densidad variable.

Las dos raíces del lazo aparecen tal cual en la iteración. Un caudal inicial cerca de cero hace que el solver resbale a la raíz inferior y se siente en "sin tiro". Esa multiplicidad tiene la misma estructura que la bifurcación que Lorenz sacó de la convección en el fondo de una olla. Conviene arrancar cerca de la raíz superior, o soltar el caudal desde un valor impuesto. Franklin sí retuvo el calor en la sala. Ese calor era el presupuesto de la chimenea, y 1 m de descenso sacó 7,00 Pa del libro.

Comparte si te resultó útil.