• Non ci sono risultati.

I reattori ideali nei processi di combustione

N/A
N/A
Protected

Academic year: 2021

Condividi "I reattori ideali nei processi di combustione"

Copied!
27
0
0

Testo completo

(1)

I reattori ideali nei processi di combustione

Appunti del docente

1. Teoria termica delle esplosioni: il reattore Batch non isotermo.

Le esplosioni sono fenomeni dinamici, cioè fenomeni in cui i parametri del sistema cambiano rapidamente nel tempo. Per studiare le esplosioni dobbiamo abbandonare l’idea di equilibrio statico o di trasformazioni quasi-statiche ed introdurre modelli dinamici dei sistemi fisici.

In questo reattore batch ideale il reagente R viene caricato e lasciato reagire per un certo tempo per ottenere una determinata quantità del prodotto P. Le ipotesi del modello sono:

 La concentrazione del reagente 𝐶 [𝑚𝑜𝑙𝑒𝑚3 ] e la temperatura 𝑇 [𝐾] sono uniformi nel volume 𝑉 [𝑚3] del reattore, ovvero cambiano solo nel tempo

 Nel reattore avviene una reazione chimica irreversibile 𝑅 → 𝑃 con velocità 𝑟 [𝑚𝑜𝑙𝑒

𝑚3𝑠] che dipende da 𝐶 e 𝑇.

1.1 Reattore isotermo

Cominciamo col trattare la temperatura 𝑇 come un parametro e manteniamola costante nel tempo. Ad ogni istante di tempo il contenuto in reagente del reattore è dato dal volume 𝑉 del reattore moltiplicato per la concentrazione 𝐶 . Man mano che la reazione procede a velocità 𝑟, la concentrazione 𝐶 decresce e così pure la massa totale di reagente, secondo l’equazione

𝑉𝑑𝐶

𝑑𝑡̂ = −𝑉𝑟 (1.1)

dove abbiamo denotato con 𝑡̂ la variabile tempo dimensionale. Per unità di volume avremo:

𝑑𝐶

𝑑𝑡̂ = −𝑟

associata alla condizione iniziale 𝐶(𝑡0) = 𝐶0.

Per una reazione con cinetica del primo ordine sarà C, T r(C, T)

(2)

𝑑𝐶

𝑑𝑡̂ = −𝑘𝐶 (1.2)

che si risolve immediatamente per separazione delle variabili:

𝑑𝐶

𝐶 = −𝑘𝑑𝑡̂

𝑙𝑛(𝐶) = −𝑘𝑡̂ + 𝑐

𝐶(𝑡̂) = 𝑒−𝑘𝑡̂+𝑐 = 𝑒𝑐𝑒−𝑘𝑡̂

La costante di integrazione si determina facendo uso della condizione iniziale:

𝐶0 = 𝐶(0) = 𝑒𝑐𝑒0 → 𝑒𝑐 = 𝐶0 e la soluzione si scrive:

𝐶(𝑡̂) = 𝐶0𝑒−𝑘𝑡̂ (1.3)

La figura riporta 𝐶(𝑡̂) cominciando da 𝐶 = 1 per 𝑡̂ = 0, per tre valori diversi della costante cinetica 𝑘, da sinistra a destra 𝑘 = 10, 1, 0.1 :

Frazione molare di reagente in funzione del tempo (unità arbitrarie) per tre diversi valori di k.

Temperature più alte determinano valori più grandi per 𝑘. Più grande è la costante cinetica 𝑘, più veloce è il decadimento.

1.2 Reattore non isotermo

Si parla di esplosioni quando il sistema evolve lentamente e poi all’improvviso l’evoluzione accelera. Questo è possibile per effetto dell’aumento della temperatura, quando il sistema è non isotermo e la reazione è esotermica. In questo caso, lo svolgersi della reazione tende a far aumentare la velocità di reazione con un meccanismo di feedback positivo. Questo comportamento ha una analogia con le reazioni autocatalitiche.

Per studiare questo fenomeno dobbiamo ricavare le equazioni per un reattore non isotermo.

Poiché la temperatura non è più costante nel nostro modello, scriviamo, per cinetica del primo ordine:

0 2 4 6 8 10

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

(3)

𝑑𝐶

𝑑𝑡̂

= −𝑟(𝐶, 𝑇) = −𝑘(𝑇)𝐶

(1.4)

Abbiamo bisogno di un’altra equazione che descriva l’evoluzione della temperatura nel tempo.

L’equazione è il bilancio di energia, ossia il primo principio della termodinamica, scritta per un sistema chiuso. Facciamo l'ipotesi che il volume sia costante e che non vi sia scambio di lavoro con l’ambiente e, per un intervallo infinitesimo di tempo, scriviamo:

𝑑𝑈 = 𝛿𝑄

(1.5)

dove 𝛿𝑄 è il calore trasferito dall’ambiente al sistema. Per valutare la variazione di temperatura è necessario distinguere, nell’energia interna assoluta per una miscela reagente, i due contributi, cioè quello che dipende dalla composizione e quello che dipende dalla temperatura. Conviene riportarsi in termini di entalpia. Dalla definizione si ha

𝑈 = 𝐻 − 𝑝𝑉

Il sistema considerato è a volume costante. Differenziando si ha:

𝑑𝑈 = 𝑑𝐻 − 𝑉𝑑𝑝

e, d’altro canto:

𝑝𝑉 = 𝑁

𝑡𝑜𝑡

𝑅𝑇

(1.6)

Per semplificare la trattazione si assume che la reazione sia equimolare, cioè 𝑑𝑁𝑡𝑜𝑡 = 0.

Sostituendo si ha

𝑑𝑈 = 𝑑𝐻 − 𝑁

𝑡𝑜𝑡

𝑅𝑑𝑇

che, per la relazione di Mayer, 𝑅 = 𝑐̅𝑝− 𝑐̅𝑉, si scrive anche

𝑑𝑈 = 𝑑𝐻 − 𝑁

𝑡𝑜𝑡

(𝑐̅

𝑝

− 𝑐̅

𝑉

)𝑑𝑇

(1.7)

dove 𝑐̅𝑝 e 𝑐̅𝑉 sono i calori specifici su base molare. La variazione di entalpia assoluta si scompone in due contributi, cioè 𝑑𝐻 = 𝑑𝐻𝑟+ 𝑑𝐻𝑠, dove:

 𝑑𝐻𝑟 è la variazione di entalpia dovuta alla variazione della composizione, data da 𝑑𝐻𝑟 = (−∆𝐻𝑟)𝑑𝑁𝑟𝑒𝑎𝑔 = (−∆𝐻𝑟)𝑉𝑑𝐶𝑟𝑒𝑎𝑔

in cui ∆𝐻𝑟 è l’entalpia di reazione per mole di reagente;

 𝑑𝐻𝑠 è la variazione di entalpia dovuta alla agitazione termica delle molecole (calore sensibile), 𝑁𝑡𝑜𝑡𝑐̅𝑝𝑑𝑇. Per semplificare la trattazione abbiamo supposto 𝑐̅𝑝 costante.

Questa formulazione comprende anche il caso in cui il reagente non è la sola specie chimica nella corrente alimentata: difatti distinguiamo 𝑁𝑟𝑒𝑎𝑔 da 𝑁𝑡𝑜𝑡 e quindi anche 𝐶0 in generale sarà diverso (minore) rispetto a 𝐶𝑡𝑜𝑡.

Osservando che, dalla (1.4), 𝑑𝐶𝑟𝑒𝑎𝑔 = −𝑟𝑑𝑡̂,si ha:

𝑑𝐻 = 𝑑𝐻

𝑟

+ 𝑑𝐻

𝑠

= (−∆𝐻

𝑟

)𝑉(−𝑟𝑑𝑡̂) + 𝑁

𝑡𝑜𝑡

𝑐̅

𝑝

𝑑𝑇

da cui, sostituendo nella (1.7), si ha:

𝑑𝑈 = (−∆𝐻

𝑟

)𝑉(−𝑟𝑑𝑡̂) + 𝑁

𝑡𝑜𝑡

𝑐̅

𝑝

𝑑𝑇−𝑁

𝑡𝑜𝑡

(𝑐̅

𝑝

− 𝑐̅

𝑉

)𝑑𝑇

(4)

e di seguito, sostituendo nella (1.5) e semplificando:

∆𝐻

𝑟

𝑉𝑟𝑑𝑡̂ + 𝑁

𝑡𝑜𝑡

𝑐̅

𝑉

𝑑𝑇 = 𝛿𝑄

(1.5’)

Dividiamo per 𝑉𝑑𝑡̂, introduciamo 𝑄̇ =𝛿𝑄𝑑𝑡̂, osserviamo che 𝑁𝑡𝑜𝑡 = 𝑉𝐶𝑡𝑜𝑡, per una reazione del primo ordine sostituiamo 𝑟 = 𝑘(𝑇)𝐶 e scriviamo:

𝐶

𝑡𝑜𝑡

𝑐̅

𝑉𝑑𝑇

𝑑𝑡̂

= −∆𝐻

𝑟

𝑘(𝑇)𝐶 +

𝑄̇

𝑉 (1.8)

Rendiamo ora adimensionali le equazioni. Definiamo il grado di conversione

𝑥 =

𝐶0−𝐶

𝐶0

→ 𝐶 = 𝐶

0

(1 − 𝑥)

(1.9)

poi introduciamo il parametro dimensionale

∆𝑇

𝑚𝑎𝑥

= −

∆𝐻𝑟

𝐶𝑡𝑜𝑡𝑐̅𝑉

𝐶

0 (1.10)

ed il parametro adimensionale

𝛽 =

∆𝑇𝑚𝑎𝑥

𝑇0 (1.11)

e definiamo la temperatura adimensionale

𝜃 =

𝑇−𝑇0

∆𝑇𝑚𝑎𝑥

→ 𝑇 = 𝑇

0

+ ∆𝑇

𝑚𝑎𝑥

𝜃 = 𝑇

0

(1 + 𝛽𝜃)

(1.12) Sostituendo nella (1.8) e semplificando si trova:

𝑑𝜃

𝑑𝑡̂

= (1 − 𝑥)𝑘(𝑇) +

𝑄̇

𝑉𝐶𝑡𝑜𝑡𝑐̅𝑉∆𝑇𝑚𝑎𝑥 (1.8’)

Se la reazione segue la legge di Arrhenius per la dipendenza di k dalla temperatura, è

𝑘(𝑇) = 𝑘

0

𝑒

𝐸𝑎𝑅𝑇 . (1.13)

Introduciamo il parametro adimensionale

𝛾 =

𝐸𝑎

𝑅𝑇0 (1.14)

ed il tempo adimensionale

𝑡 = 𝑘

0

𝑡̂

(1.15)

da cui, applicando la formula per la derivata di funzione composta, si ha:

𝑑

𝑑𝑡̂

(∙) =

𝑑𝑡

𝑑𝑡̂

[

𝑑

𝑑𝑡

(∙)] = 𝑘

0 𝑑

𝑑𝑡

(∙)

e sostituiamo per ottenere

𝑑𝜃

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾

1+𝛽𝜃

+

𝑄̇

𝑘0𝑉𝐶𝑡𝑜𝑡𝑐̅𝑉∆𝑇𝑚𝑎𝑥 (1.8”)

Immaginiamo ora che il flusso termico dall’ambiente al reattore, 𝑄̇, sia esprimibile come un termine lineare nell’equazione, proporzionale all’area 𝑆 della superficie del reattore e alla differenza di temperatura tra l’ambiente ed il reattore, 𝑇− 𝑇

,

attraverso un coefficiente di scambio termico globale 𝑈:

(5)

𝑄̇ = −𝑈𝑆(𝑇 − 𝑇

)

(1.16) Dalle (1.12) si ha che

𝑇−𝑇

∆𝑇𝑚𝑎𝑥

= 𝜃 − 𝜃

Introduciamo infine il coefficiente di scambio termico adimensionale:

𝜙 =

𝑈𝑆

𝑘0𝑉𝐶𝑡𝑜𝑡𝑐̅𝑉 (1.17)

L’equazione di bilancio dell’energia prende così la forma finale:

𝑑𝜃

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾

1+𝛽𝜃

− 𝜙(𝜃 − 𝜃

)

(1.18)

La (1.18) è una equazione differenziale non lineare e contiene due variabili, 𝜃ed 𝑥. Se riprendiamo ora l’equazione di bilancio di materia (1.4) e vi sostituiamo le espressioni adimensionali introdotte per le variabili dipendenti e per le costanti, si perviene facilmente all’equazione:

𝑑𝑥

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾

1+𝛽𝜃 (1.19)

I bilanci di materia (1.4) e di energia (1.8) nella loro forma dimensionale sono associati alle condizioni iniziali:

𝐶(0) = 𝐶

0

𝑇(0) = 𝑇

0

che, per sostituzione delle espressioni (1.9) ed (1.12), diventano

𝑥(0) = 𝜃(0) = 0

(1.20)

Riassumendo, il sistema di equazioni è il seguente:

DISCUSSIONE DEI PARAMETRI I parametri sopra introdotti hanno la seguente interpretazione fisica:

 ∆𝑇𝑚𝑎𝑥 = − ∆𝐻𝑟

𝐶𝑡𝑜𝑡𝑐̅𝑉𝐶0 è il massimo aumento di temperatura ottenibile per conversione completa del reagente, presente in concentrazione 𝐶0, a beneficio dell’intero sistema che è caratterizzato da una concentrazione totale 𝐶𝑡𝑜𝑡, e senza scambio di calore con l’ambiente.

Il rapporto 𝐶𝑡𝑜𝑡⁄ è detto rapporto di diluizione; miscele più diluite producono un minore 𝐶0 aumento della temperatura.

𝑑𝑥

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾

1+𝛽𝜃 (1.19)

𝑑𝜃

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾

1+𝛽𝜃

− 𝜙(𝜃 − 𝜃

)

(1.18)

𝑥(0) = 𝜃(0) = 0

(1.20)

(6)

 𝛽 =∆𝑇𝑚𝑎𝑥

𝑇0 è una misura del contenuto termico della reazione in termini di effetti sulla temperatura: maggiore è 𝛽, maggiore sarà l’incremento di temperatura per effetto della reazione.

 𝛾 =𝑅𝑇𝐸𝑎

0 è una misura dell’energia di attivazione della reazione: maggiore è 𝛾, maggiore sarà la velocità di transizione da evoluzione lenta a veloce e cioè più dirompente sarà l’esplosione.

 𝜙 = 𝑈𝑆

𝑘0𝑉𝐶𝑡𝑜𝑡𝑐̅𝑉

rappresenta il coefficiente di scambio termico adimensionale. Esso contiene, fra le altre cose, informazioni sulla geometria del reattore. Ad esempio, per un reattore di forma sferica abbiamo:

𝑆 = 𝜋𝐷

2

; 𝑉 =

𝜋𝐷3

6 e l’equazione (1.17) diventa

𝜙 =

6𝑈

𝐷𝑘0𝐶𝑡𝑜𝑡𝑐̅𝑉

A parità di parametri fisici e chimici, se solo si aumenta la dimensione del reattore, cioè se 𝐷 → ∞, allora 𝜙 = 6𝑈

𝐷𝑘0𝐶𝑡𝑜𝑡𝑐̅𝑉→ 0. Il rischio di esplosione è maggiore per reattori di dimensioni maggiori.

(7)

1.2.1 Reattore batch non isotermo – caso adiabatico

Per trattare questo caso limite basta porre 𝜙 = 0. Le equazioni diventano

𝑑𝑥

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾 1+𝛽𝜃

𝑑𝜃

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾 1+𝛽𝜃

formalmente identiche e anche associate a condizioni iniziali identiche. È evidente che, in questo caso, 𝜃 ≡ 𝑥, e che il sistema è compiutamente descritto equivalentemente da una qualsiasi delle due equazioni:

𝑑𝜃

𝑑𝑡

= (1 − 𝜃)𝑒

𝛾

1+𝛽𝜃 (1.21)

con la condizione iniziale

𝜃(0) = 0

L’equazione (1.21) si può risolvere numericamente, ad esempio con il procedimento esposto in Appendice A. Due soluzioni sono riportate in figura, fissato 𝛽 = 8 e per 𝛾 = 8 e 𝛾 = 11 da sinistra a destra. Si vede che al crescere di 𝛾 il tempo di induzione cresce, mentre la velocità di crescita della temperature è ancora alta e non cambia significativamente rispetto a quanto si osserva per valori di 𝛾 più bassi.

Sistemi che presentano transizioni lentoveloce sono più pericolosi poiché il sistema sembra tranquillo per molto tempo e poi esplode inaspettatamente causando danni, feriti e anche perdita di vite umane. A quanto pare però sembra che, se potessimo prevenire l’aumento della temperatura oltre un certo limite, potremmo prevenire l’esplosione. Per studiare questa possibilità, dobbiamo riprendere il modello del reattore sviluppato per il caso generale non adiabatico.

0 500 1000 1500 2000 2500 3000

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

1 teta(t)

(8)

1.2.2 Reattore batch non isotermo – caso non adiabatico

Riprendiamo le equazioni ricavate sopra:

𝑑𝑥

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾

1+𝛽𝜃 (1.19)

𝑑𝜃

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾

1+𝛽𝜃

− 𝜙(𝜃 − 𝜃

)

(1.18)

𝑥(0) = 𝜃(0) = 0

(1.20)

La figura che segue riporta l’andamento dellea variabili di stato, fissati 𝛽 = 3 e 𝛾 = 8 , e per tre diversi valori di 𝜙, da sinistra a destra: 0.001, 0.01 e 0.1.

Per 𝜙 = 0.001 il calore rimosso è insufficiente ad evitare l’esplosione; per 𝜙 = 0.01 l'andamento presenta ancora un carattere esplosivo; per 𝜙 = 0.1 invece l’esplosione non avviene.

Note:

 Esiste un valore critico per 𝜙, che dipende dai parametri del sistema;

 A parità di parametri fisici e chimici, se solo si aumenta la dimensione del reattore, cioè se 𝐷 → ∞, allora 𝜙 = 6𝑈

𝐷𝑘0𝑐𝑉→ 0. Il rischio di esplosione è maggiore per reattori di dimensioni maggiori.

0 500 1000 1500 2000 2500 3000

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

1 x(t) et teta(t)

(9)

2. Il reattore continuo a mescolamento (CSTR) non isotermo.

Riferiamoci ancora ad un reattore in cui

 La concentrazione del reagente 𝐶 [𝑚𝑜𝑙𝑒/𝑚3] e la temperatura 𝑇 [𝐾] sono uniformi nel volume 𝑉 [𝑚3] del reattore.

 Nel reattore avviene una reazione chimica irreversibile equimolare 𝑅 → 𝑃 con velocità 𝑟[𝑚𝑜𝑙𝑒/(𝑚3𝑠)] che dipende da 𝐶, 𝑇.

Schematicamente, un CSTR è rappresentato come segue:

2.1 CSTR isotermo in regime stazionario

Se il sistema è isotermo bisogna scrivere solo bilanci di materia, in questo caso uno soltanto per il reagente 𝑅, poiché la concentrazione del prodotto 𝑃 si può ottenere per differenza. In una forma del tutto generale questi possono essere scritti come segue:

= 0 q.tà entrante = q.tà uscente + q.tà che scompare per reazione + q.tà accumulata

Nel caso specifico, poiché stiamo modellando un reattore in regime stazionario, si ha che l’accumulo della specie che stiamo bilanciando è nullo. Detta 𝑟(𝐶) la velocità di reazione di un generico processo in condizioni isoterme, il bilancio può essere scritto come segue:

𝑉̇𝑖𝑛× 𝐶𝑖𝑛 = Moli di R entranti per unità di tempo.

𝑉̇𝑜𝑢𝑡× 𝐶𝑜𝑢𝑡= Moli di R uscenti per unità di tempo.

𝑉 × 𝑟(𝐶) = Moli di R reagite per unità di tempo.

dove stavolta abbiamo indicato con 𝑉̇ la portata volumetrica e con 𝑉 il volume del fluido reagente contenuto nel reattore. Pertanto, si ha:

𝑉̇𝑖𝑛𝐶𝑖𝑛 = 𝑉̇𝑜𝑢𝑡𝐶𝑜𝑢𝑡+ 𝑉 × 𝑟(𝐶) (2.1)

Per semplicità e a scopo illustrativo ci limitiamo a descrivere sistemi a densità costante (la portata volumetrica non cambia fra ingresso e uscita, cioè 𝑉̇𝑖𝑛 = 𝑉̇𝑜𝑢𝑡 ≡ 𝑉̇) e, riconoscendo che 𝐶𝑜𝑢𝑡 = 𝐶 (perfetta miscelazione) scriviamo quindi

𝐶, 𝑇 𝑟𝑘(𝐶, 𝑇)

𝑉̇

𝑖𝑛

, 𝐶

𝑖𝑛

, 𝑇

𝑖𝑛

𝑉̇

𝑜𝑢𝑡

, 𝐶

𝑜𝑢𝑡

, 𝑇

𝑜𝑢𝑡𝑖𝑛

(10)

𝑉̇𝐶

𝑖𝑛

= 𝑉̇𝐶 + 𝑉𝑟(𝐶) ↔ 𝐶

𝑖𝑛

− 𝐶 =

𝑉

𝑉̇

𝑟(𝐶) = 𝜏𝑟(𝐶)

dove 𝜏 = 𝑉/𝑉̇ rappresenta il tempo di residenza, o, equivalentemente:

𝐶𝑖𝑛−𝐶

𝜏

= 𝑟(𝐶)

(2.2)

Nel caso di una reazione con cinetica del primo ordine si ha 𝑟(𝐶) = 𝑘𝐶 e dunque

𝐶

𝑖𝑛

− 𝐶 = 𝜏𝑘𝐶

(2.3)

che, risolta per 𝐶, fornisce

𝐶 =

1

1+𝜏𝑘

𝐶

𝑖𝑛 (2.4)

Se ora definiamo come al solito il grado di conversione rispetto al reagente 𝑅 ed il numero di Damköhler:

𝑥 ≡

𝐶𝑖𝑛−𝐶

𝐶𝑖𝑛

; 𝐷𝑎 ≡ 𝜏𝑘

si trova facilmente, dalla (2.4), l’equazione adimensionale di analisi:

𝑥 =

𝐷𝑎

1+𝐷𝑎 (2.5)

e l’espressione per 𝐶:

𝐶 =

1

1+𝐷𝑎

𝐶

𝑖𝑛

.

(2.6)

2.2 CSTR non isotermo

Nel caso non isotermo l’equazione di bilancio di materia non sarà in generale sufficiente a descrivere un CSTR ideale. Infatti, ricordando che la velocità di reazione dipende dalla concentrazione e dalla temperatura, la (2.2) dovrebbe essere riscritta come segue:

𝐶𝑖𝑛−𝐶

𝜏

= 𝑟(𝐶, 𝑇)

(2.2’)

in cui sono presenti due incognite, ovvero la concentrazione 𝐶 e la temperatura 𝑇 in uscita dal reattore. Quando il sistema non può essere considerato isotermo occorre dunque affiancare al bilancio di materia anche un bilancio d’energia.

Vale sempre, come per ogni grandezza conservata, la relazione q.tà entrante = q.tà uscente + q.tà distrutta + q.tà accumulata

Nelle quantità entranti e uscenti sono comprese sia le quantità legate alle correnti entranti ed uscenti, sia l’energia scambiata nel modo calore attraverso i confini del sistema, sia il lavoro meccanico. Se il lavoro meccanico è uguale a zero, il bilancio d’energia può essere scritto, nell’unità di tempo, come segue:

𝐻̇

𝑖𝑛

+ 𝑄̇

𝑖𝑛

= 𝐻̇

𝑜𝑢𝑡 ovvero

∆𝐻 = 𝐻̇

𝑜𝑢𝑡

− 𝐻̇

𝑖𝑛

= 𝑄̇

(2.7)

= 0 (sistema stazionario)

= 0 (poiché l’energia totale si conserva)

(11)

dove 𝐻̇𝑖𝑛 ed 𝐻̇𝑜𝑢𝑡 sono le portate entalpiche entrante ed uscente rispettivamente, e 𝑄̇ è la potenza termica entrante nel reattore attraverso le pareti. Si noti che, in caso di raffreddamento del reattore, in base alla definizione è 𝑄̇ < 0.

La variazione di entalpia assoluta ∆𝐻 = 𝐻̇𝑜𝑢𝑡− 𝐻̇𝑖𝑛 si compone di due contributi:

 la variazione di entalpia dovuta alla variazione della composizione, data da (−∆𝐻𝑟)𝑉̇(𝐶 − 𝐶𝑖𝑛) , dove ∆𝐻𝑟 è l’entalpia di reazione per mole di reagente;

 la variazione di entalpia dovuta alla agitazione termica delle molecole (calore sensibile), 𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝(𝑇 − 𝑇𝑖𝑛). Per semplificare la trattazione abbiamo supposto 𝑐̅𝑝, calore specifico molare, costante.

Da ciò, sostituendo nella 2.7 scriviamo

∆𝐻 = (−∆𝐻

𝑟

)𝑉̇(𝐶 − 𝐶

𝑖𝑛

) + 𝑉̇𝐶

𝑡𝑜𝑡

𝑐̅

𝑝

(𝑇 − 𝑇

𝑖𝑛

) = 𝑄̇

(2.7’) Definiamo il grado di conversione

𝑥 ≡

𝐶𝑖𝑛−𝐶

𝐶𝑖𝑛

=

𝜏𝑘(𝑇)

1+𝜏𝑘(𝑇)

(2.8)

da cui all’inverso

𝐶 = 𝐶

𝑖𝑛

(1 − 𝑥)

e, dopo le sostituzioni nella (2.7’) e con facili passaggi, si scrive:

𝑇 − 𝑇

𝑖𝑛

=

𝐶𝑖𝑛(−∆𝐻𝑟)

𝐶𝑡𝑜𝑡𝑐̅𝑝

𝑥 +

𝑄̇

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝 (2.9)

che rappresenta l’incremento di temperatura ottenuto per effetto della reazione chimica per conversione 𝑥 in presenza di scambio termico con l’esterno. Quando il grado di conversione 𝑥 è uguale a uno (conversione completa), la quantità

[𝑇 − 𝑇

𝑖𝑛

]|

𝑥=1

=

𝐶𝑖𝑛(−∆𝐻𝑟)

𝐶𝑡𝑜𝑡𝑐̅𝑝

+

𝑄̇

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝 (2.10)

rappresenta il massimo incremento di temperatura ottenibile per effetto della reazione chimica per conversione completa. Si noti che esso, per come è definito, dipende ancora dalla concentrazione in ingresso 𝐶𝑖𝑛 oltre che, ovviamente, dallo scambio termico con l’esterno. Il rapporto 𝐶𝑡𝑜𝑡⁄𝐶𝑖𝑛 è un rapporto di diluizione: miscele più diluite producono un minore aumento della temperatura.

In condizioni adiabatiche ( 𝑄̇ = 0 ) potremo definire

∆𝑇

𝑚𝑎𝑥,𝑎𝑑

≡ [𝑇 − 𝑇

𝑖𝑛

]|

𝑥=1,𝑎𝑑𝑏

=

𝐶𝑖𝑛(−∆𝐻𝑟)

𝐶𝑡𝑜𝑡𝑐̅𝑝 (2.11)

Posto

𝛽 ≡

∆𝑇𝑚𝑎𝑥,𝑎𝑑

𝑇𝑖𝑛

,

(2.12)

la (2.11) si riscrive come

𝑇 = 𝑇

𝑖𝑛

+ 𝛽𝑇

𝑖𝑛

𝑥 +

𝑄̇

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝 (2.13)

(12)

che esprime la temperatura come funzione esplicita del grado di conversione e dei parametri del sistema, 𝑇 = 𝑇(𝑥). Introduciamo ora la temperatura adimensionale come

𝜃 ≡

𝑇−𝑇𝑖𝑛

∆𝑇𝑚𝑎𝑥,𝑎𝑑

(2.14)

da cui

𝑇 = 𝑇

𝑖𝑛

+ ∆𝑇

𝑚𝑎𝑥,𝑎𝑑

𝜃 = 𝑇

𝑖𝑛

(1 + 𝛽𝜃)

(2.15) e, sostituendo nella (2.13), si ricava

𝜃 = 𝑥 +

𝑄̇

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝∆𝑇𝑚𝑎𝑥,𝑎𝑑 (2.16)

Prima di andare avanti con l'equazione di bilancio dell'entalpia, riprendiamo l'equazione di bilancio di materia

𝐶𝑖𝑛−𝐶

𝜏

= 𝑟(𝐶, 𝑇) ,

(2.2’)

usiamo la definizione di grado di conversione, specifichiamola per reazione del primo ordine con cinetica di Arrhenius 𝑘(𝑇) = 𝑘0𝑒𝐸𝑎𝑅𝑇 ed introduciamo il parametro adimensionale 𝛾 = 𝐸𝑎

𝑅𝑇0 per scrivere:

𝑥 = 𝜏

𝑘0

𝑒

𝛾

1+𝛽𝜃

(1 − 𝑥)

(2.17)

La costante preesponenziale 𝑘0 non è espressiva della costante di velocità di reazione “media”.

Conviene perciò manipolare l’espressione in questo modo:

𝑘0

𝑒

1+𝛽𝜃𝛾

=

𝑘0

𝑒

𝛾

𝑒

1+𝛽𝜃𝛾𝛽𝜃

Definiamo quindi 𝑘𝑟𝑖𝑓 = 𝑘0

𝑒

𝛾 ed il numero di Damköhler Da ≡ 𝜏𝑘𝑟𝑖𝑓, da cui

𝑥 =

Da

(1 − 𝑥)𝑒

𝛾𝛽𝜃

1+𝛽𝜃 (2.17)

Conviene a questo punto rendere adimensionale anche il termine di scambio termico con l’esterno. Immaginiamo che il flusso termico dall’ambiente al reattore, 𝑄̇, sia esprimibile come un termine lineare nell’equazione, proporzionale all’area 𝑆 della superficie del reattore e alla differenza di temperatura tra il reattore e l’ambiente, 𝑇 − 𝑇

,

attraverso un coefficiente di scambio termico globale 𝑈, ed usiamo la definizione di

𝜃

per scrivere

𝑄̇ = −𝑈𝑆(𝑇 − 𝑇

) = −𝑈𝑆 ∆𝑇

𝑚𝑎𝑥,𝑎𝑑

(𝜃 − 𝜃

)

(2.18) e, sostituendo nella (2.16):

𝜃 = 𝑥 −

𝑈𝑆

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝

(𝜃 − 𝜃

)

(2.19)

Nel coefficiente adimensionale 𝑈𝑆

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝 osserviamo la dipendenza da un parametro operativo, la portata volumetrica 𝑉̇. Poiché essa è già rappresentata nel numero di Damköhler, operiamo la seguente trasformazione:

𝑈𝑆

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝

=

𝑉𝑘𝑟𝑖𝑓

𝑉̇

𝑈𝑆

𝑉𝑘𝑟𝑖𝑓𝐶𝑡𝑜𝑡𝑐̅𝑝

= Da

𝑈𝑆

𝑉𝑘𝑟𝑖𝑓𝐶𝑡𝑜𝑡𝑐̅𝑝

(13)

e battezziamo il coefficiente adimensionale di scambio termico analogamente a quanto fatto per il reattore batch:

𝜙

= 𝑈𝑆

𝑉𝑘𝑟𝑖𝑓𝐶𝑡𝑜𝑡𝑐̅𝑝

per scrivere infine

𝜃 = 𝑥 − Da𝜙(𝜃 − 𝜃

)

(2.19')

Il sistema algebrico non lineare da risolvere per determinare lo stato

 

x, del sistema è quindi

Si tratta di un sistema non lineare di due equazioni nelle incognite 𝑥 e 𝜃, con cinque parametri adimensionali (Da, 𝛽, 𝛾, 𝜃 e 𝜙).

2.3 CSTR non isotermo – caso adiabatico

Nel caso adiabatico, 𝜙 = 0. In corrispondenza di un valore generico 𝑥 del grado di conversione, in condizioni adiabatiche, dalla (2.19') si avrà perciò:

𝜃 = 𝑥

(2.20)

da cui si osserva che in questo caso – e solo in questo, adiabatico e senza scambi di lavoro – esiste un legame “stechiometrico” tra temperatura raggiunta e grado di conversione, legame che non dipende da parametri operativi (volume, portata ecc.) poiché la variazione di energia potenziale chimica si ritrova tutta in variazione di energia termica della miscela uscente. La (2.28) diventa

𝑥 = Da(1 − 𝑥)𝑒

𝛾𝛽𝑥

1+𝛽𝑥 (2.21)

che è infine una sola equazione nella sola incognita 𝑥 e con tre parametri (Da, 𝛽, 𝛾). In questa espressione si riconosce che, per 𝛽 = 0 ossia per reazione in cui non vi è conversione di energia potenziale chimica in energia termica (e quindi, nelle ipotesi fatte, reazione isoterma), l’esponenziale è =1. Pertanto in questo caso l’espressione si riduce a 𝑥 = Da(1 − 𝑥), che restituisce quella del reattore isotermo.

La (2.21) si può risolvere numericamente, con un possibile metodo illustrato in Appendice B, cercando gli zeri della funzione

𝐹(𝑥) = = 0

. (2.22)

Nelle figure seguenti è riportato il diagramma delle soluzioni al variare del numero di Damköhler, per tre valori fissati di 𝛽 e due valori di 𝛾. Le curve azzurre corrispondono a 𝛽 = 0 vale a dire reattore isotermo e, difatti, gli andamenti sono identici a quelli visti per il caso più semplice (isotermo). All’aumentare della termicità della reazione (reazione esotermica), e cioè per valori positivi di 𝛽, la conversione corrispondente ad un dato valore di Da è maggiore. Si nota inoltre che,

𝑥 = Da(1 − 𝑥)𝑒

𝛾𝛽𝜃

1+𝛽𝜃 (2.17)

𝜃 = 𝑥 − Da𝜙(𝜃 − 𝜃

)

(2.19')

(14)

a parità di Da, all’aumentare di 𝛾 aumenta anche la conversione. Le reazioni di combustione sono caratterizzate da valori elevati di 𝛾 (comunemente arrivano anche a 15-20) e dunque si spiega come mai in prima approssimazione i calcoli si fanno per conversione completa. Si osservi anche che, per alti valori di 𝛾, a bassi Damköhler (= alte portate) la conversione subisce una diminuzione molto brusca.

0 2 4 6 8 10

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Da

x

Conversione di CSTR adiabatico, =1

=0

=1

=10

0 2 4 6 8 10

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

1 Conversione CSTR adiabatico, =5

Da

x

=0

=1

=10

(15)

La figura seguente mostra le soluzioni per reazione esotermica, isoterma ed endotermica. Si nota come il caso di reazione endotermica conduce ad una conversione più bassa per il sistema in esame.

Molteplicità delle soluzioni e fenomeno del blowout.

La (2.21) essendo non lineare può presentare, e difatti in alcuni casi presenta, molteplicità di soluzioni per un singolo set di valori dei tre parametri. Le condizioni esplorate fin qui si riferiscono a reazioni debolmente esotermiche con energia di attivazione relativamente bassa. Le reazioni di combustione presentano spesso forte esotermicità ed energie di attivazione molto elevate.

0 0.002 0.004 0.006 0.008 0.01

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Da

x

Conversione, CSTR stazionario adiabatico

Parametri:

gamma = 10 beta = 7

0 2 4 6 8 10

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Da x

=0

=1

=-1

Da critico (di blowout) Regione di molteplicità

(16)

La figura riporta un grafico in cui si riconoscono le soluzioni di alta conversione (in rosso), quelle di bassa conversione (in blu) e quelle di media conversione (in nero). Si può dimostrare che le soluzioni di media conversione corrispondono a punti di funzionamento instabili per il sistema, mentre le soluzioni di bassa e di alta conversione (sistema spento e sistema acceso) sono stabili. Si vede poi che la regione di molteplicità ha ampiezza finita e si posiziona nel regime delle alte portate (Da → 0).

Si osservi anche che la soluzione di alta conversione (in rosso) cessa di esistere quando il numero di Damköhler scende al di sotto di un preciso valore critico, e cioè quando la portata supera un preciso valore critico, al di sopra del quale sopravvive solo la soluzione di bassa conversione. Ciò significa che per portate superiori rispetto a questo valore critico non è possibile avere combustione all’interno del reattore. In pratica, sotto opportune condizioni, si osserva la fiamma all’uscita del reattore. Tale fenomeno si chiama “blowout”.

(da http://www.instructables.com/id/Beer-Can-Jet-Engine-Mark-II/)

2.4 CSTR non isotermo – caso non adiabatico

Il caso adiabatico è solo un caso teorico, dato che non si riesce ad ottenere nella pratica un isolamento perfetto. Per il caso generico, bisogna considerare valori non nulli del coefficiente di scambio termico

𝜙

, e perciò risolvere il sistema di due equazioni

𝑥 = Da(1 − 𝑥)𝑒

𝛾𝛽𝜃

1+𝛽𝜃 (2.17)

𝜃 = 𝑥 − Da𝜙(𝜃 − 𝜃

)

(2.19')

Il codice MATLAB è in Appendice B.

(17)

APPENDICE A

Risoluzione numerica delle equazioni differenziali ordinarie del modello di reattore batch non isotermo.

A.1 Reattore batch adiabatico.

Come si è visto, il sistema è compiutamente descritto dalla sola equazione

𝑑𝜃

𝑑𝑡

= (1 − 𝜃)𝑒

𝛾

1+𝛽𝜃 (1.21)

con la condizione iniziale

𝜃(0) = 0

Lo scopo della risoluzione approssimata numerica è quello di costruire una tabella di due colonne, a partire dal valore iniziale

𝜃(0) = 0,

una per gli istanti di tempo considerati, distanziati di un intervallo ∆𝑡, e l'altra con i valori di 𝜃 calcolati in corrispondenza.

Cominciamo con lo scrivere la relazione fra 𝜃(𝑡) e 𝜃(𝑡 + ∆𝑡), per mezzo della serie di Taylor arrestata al primo ordine. Si ha, per una qualunque funzione 𝜃(𝑡):

𝜃(𝑡 + ∆𝑡) = 𝜃(𝑡) + 𝜃(𝑡)∆𝑡 + 𝑂(∆𝑡2) da cui:

𝜃(𝑡) ≈𝜃(𝑡+∆𝑡)−𝜃(𝑡)

∆𝑡

Per brevità designiamo con l'apice 𝑛 le grandezze valutate al tempo 𝑡 e con l'apice 𝑛 + 1 le grandezze valutate al tempo 𝑡 + ∆𝑡. Con questa approssimazione, valida per ∆𝑡 piccolo, l’equazione differenziale si può quindi scrivere sostituendo la derivata con la formula approssimata:

𝜃𝑛+1−𝜃𝑛

∆𝑡 = (1 − 𝜃)𝑒

𝛾 1+𝛽𝜃

Questa relazione, nella quale conosciamo il valore corrente 𝜃𝑛 e vogliamo ricavare il valore seguente 𝜃𝑛+1, si risolve esplicitamente per 𝜃𝑛+1, generando così il metodo di Eulero esplicito:

𝜃𝑛+1 = 𝜃𝑛+ (1 − 𝜃𝑛)𝑒

𝛾 1+𝛽𝜃𝑛∆𝑡

nel quale il secondo membro si valuta in corrispondenza del valore noto 𝜃𝑛. Il metodo esplicito è però numericamente instabile per passi di integrazione più grandi di un certo valore. Si preferisce adottare allora un metodo cosiddetto implicito, in cui la derivata approssimata si calcola, per quanto possibile, in corrispondenza del valore ancora incognito della variabile dipendente. Una possibile formula semimplicita si può ricavare come segue:

𝜃𝑛+1−𝜃𝑛

∆𝑡 = (1 − 𝜃𝑛+1)𝑒

𝛾 1+𝛽𝜃𝑛

nella quale il termine argomento dell’esponenziale si esprime comunque in forma esplicita, per mantenere una espressione lineare in 𝜃𝑛+1. Raggruppando e risolvendo per 𝜃𝑛+1:

𝜃𝑛+1 =𝜃𝑛+𝑒

𝛾 1+𝛽𝜃𝑛∆𝑡 1+𝑒

𝛾 1+𝛽𝜃𝑛∆𝑡

(1.18)

(18)

Integrando passo dopo passo costruiamo quindi una tabella di due colonne, una per gli istanti di tempo considerati e l'altra con i valori di  calcolati in corrispondenza. Di seguito un esempio di codice su piattaforma MATLAB.

% Réacteur chimique BATCH non isotherme, adiabatique

% réaction de premiere ordre, cinétique Arrhenius

% A -> B

%

clear all;

% close all;

%

% Parametres du réacteur

%

beta=3; % Enthalpie de réaction sans dimension [default=1]

gamma=8; % 20; % Energie d'activation sans dimension, Ea/R*T_rif [default=10]

%

% Conditions initiales

%

x_0=0; % conversion/temperature à t=0

%

%Definition des extrémes d'integration a=0; b=1000;

%

m=2000; % nombre des intervalles d'integration

dt=(b-a)/m; % amplitude de l'intervalle d'integration

%

t(1)=0;

x(1)=x_0; % conversion initiale, sans dimensions

%

for i=1:(m-1)

%Méthode semi-implicite t(i+1)=t(i)+dt;

k1=exp(-gamma/(1+beta*x(i)));

x(i+1)=(x(i)+k1*dt)/(1+k1*dt);

end

hold on

%plot(t,teta,'r') plot(t,x,'b') title('x(t)')

A.2 Reattore batch non adiabatico.

Le equazioni da integrare numericamente sono le seguenti:

𝑑𝑥

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾

1+𝛽𝜃 (1.19)

𝑑𝜃

𝑑𝑡

= (1 − 𝑥)𝑒

𝛾

1+𝛽𝜃

− 𝜙(𝜃 − 𝜃

)

(1.18)

𝑥(0) = 𝜃(0) = 0

(1.20)

Scriviamo le formule semiimplicite lineari:

𝑥𝑛+1−𝑥𝑛

∆𝑡

= (1 − 𝑥

𝑛+1

)𝑒

𝛾 1+𝛽𝜃𝑛

𝜃𝑛+1−𝜃𝑛

∆𝑡

= (1 − 𝑥

𝑛+1

)𝑒

𝛾

1+𝛽𝜃𝑛

− 𝜙 ( 𝜃

𝑛+1

− 𝜃

)

(19)

da cui si ricava facilmente:

𝑥

𝑛+1

=

𝑥𝑛+𝑒

𝛾 1+𝛽𝜃𝑛∆𝑡 1+𝑒

𝛾 1+𝛽𝜃𝑛∆𝑡

𝜃

𝑛+1

=

𝜃𝑛+(1−𝑥𝑛+1)𝑒

𝛾

1+𝛽𝜃𝑛∆𝑡+𝜙𝜃∆𝑡

1+𝜙∆𝑡

da risolvere nell'ordine, prima la 𝑥𝑛+1 e poi la 𝜃𝑛+1 così come appaiono scritte1. Di seguito un esempio di codice su piattaforma MATLAB.

% Réacteur chimique BATCH non isotherme non adiabatique

% réaction de premiere ordre, cinétique Arrhenius

% A -> B

%

clear all;

% close all;

%

% Parametres du réacteur

%

beta=3; % Enthalpie de réaction sans dimension [default=1]

gamma=8; % 20; % Energie d'activation sans dimension, Ea/R*T_rif [default=10]

phi= 0.001; % coefficient d'echange de chaleur, sans dimension (default : 0.0001, 0.001)

%

teta_8=0; % temperature exterieure, sans dimension (0)

%

% Conditions initiales

%

x_0=0; % conversion à t=0 teta_0=0; % temperature à t=0

%

%Definition des extrémes d'integration a=0; b=1000;

%

m=2000; % nombre des intervalles d'integration

dt=(b-a)/m; % amplitude de l'intervalle d'integration

%

t(1)=0;

x(1)=x_0; % conversion initiale, sans dimensions teta(1)=teta_0; % Condition initiale

%

for i=1:(m-1)

%Méthode semi-implicite t(i+1)=t(i)+dt;

k1=exp(-gamma/(1+beta*teta(i)));

x(i+1)=(x(i)+k1*dt)/(1+k1*dt);

1 Non è evidente ma, avendo scelto una formula semi implicita, le due equazioni devono essere risolte nell'ordine, in ciascun passo prima quella per la 𝑥 e poi quella per la 𝜃, il motivo essendo che i secondi membri debbono essere valutati allo stesso livello di tempo. Se calcolassimo prima la 𝜃𝑛+1 e poi la 𝑥𝑛+1, nell'equazione per la 𝜃 saremmo costretti a valutare il termine di reazione con il fattore (1 − 𝑥) valutato al tempo 𝑛 − dato che non abbiamo ancora calcolato 𝑥𝑛+1 − mentre calcoleremmo la variazione di conversione con il termine (1 − 𝑥) valutato al tempo 𝑛 + 1. La variazione di conversione sarebbe quindi disallineata dalla variazione di temperatura e ciò introdurrebbe un errore sistematico. D'altro canto, se calcolassimo la variazione di 𝑥 con (1 − 𝑥) valutato al tempo 𝑛 useremmo una formula esplicita e quindi instabile per alti valori di ∆𝑡.

(20)

teta(i+1)=(teta(i)+(1-x(i+1))*k1*dt+phi*teta_8*dt)/(1+phi*dt);

end hold on

%plot(t,teta,'r') plot(t,x,'g') plot(t,teta,'r')

title('x(t) et teta(t)')

APPENDICE B

Risoluzione numerica delle equazioni non lineari del modello di reattore CSTR non isotermo.

B.1 Reattore CSTR adiabatico.

Bisogna trovare gli zeri della funzione

𝐹(𝑥) = Da(1 − 𝑥)𝑒

𝛾𝛽𝑥

1+𝛽𝑥

− 𝑥 = 0

. (2.20)

In MATLAB esiste la funzione

fzero(@fun,x0)

che trova la radice dell’equazione specificata in fun più vicina ad x0. Di seguito il codice MATLAB che traccia il luogo delle soluzioni al variare del numero di Damköhler, per specificati valori di 𝛽 e 𝛾.

% Il programma risolve le equazioni di funzionamento a regime

% stazionario di un CSTR adiabatico con reazione non isotermica.

% Il diagramma risultante riporta il grado di conversione/temperatura

% adimensionale x (in rosso) in funzione del parametro operativo

% principale numero di Damkoehler), per assegnati valori di

% beta (parametro legato alla termicità della reazione) e gamma

% (parametro legato alla cinetica). In caso di molteplicità, il programma

% può determinare anche il ramo delle soluzioni instabili, e lo traccia

% in colore nero.

clear all; close all;

gamma=10; % 10 beta=2; % 2

Damin=0; % estremo sinistro dell'intervallo di scansione per Da DeltaDa=0.0005; % 1/N numero di punti nell'intervallo (Damin,Damax) Damax=0.03; % estremo destro dell'intervallo di scansione per Da dDa=DeltaDa*(Damax-Damin);

%

% Questa istruzione definisce la funzione "anonima" res (res sta per

% residuo) che dipende dai parametri del caso. In particolare, decidiamo di

% lasciare variabile il parametro Da nella ricerca degli zeri.

%

res=@(x,Da) x-Da*(1-x)*exp((gamma*beta*x)/(1+beta*x));

%

(21)

Daplot=[]; % conterrà i valori delle ascisse del grafico x_out=[]; % conterrà i valori delle ordinate del grafico

%

% Prima scansione, per Da decrescente fino a zero (portata crescente). Il

% valore di x ad alti Da è prossimo a uno, quindi come tentativo iniziale

% fissiamo:

% x0=1;

%

dxmax=0; % serve per localizzare il punto di massima derivata dx/dDa

%

%

for Da=Damax:-dDa:Damin % ciclo di scansione per Da

%

% Invoca fzero per determinare la soluzione (zero) nel punto Da:

%

zero=fzero(@(x) res(x,Da), x0);

%

% Calcola il valore della derivata d(x)/d(Da) per determinare il Da critico

% ossia quello in cui il diagramma fa un salto dal ramo di alta conversione

% a quello di bassa conversione. Poiché la scansione è a passo costante,

% basta determinare la differenza fra le due radici successive trovate.

%

dx=abs(zero-x0);

if dx>dxmax dxmax=dx;

Dadxmax1=Da-dDa; % prende il valore precedente xdxmax1=x0; % prende il valore precedente end

%

% Usa lo zero appena trovato come valore iniziale per il calcolo

% successivo e conserva Da e zero per la diagrammazione.

%

x0=zero;

Daplot=[Daplot,Da];

x_out=[x_out,zero];

% end

%

figure(1)

plot(Daplot,x_out,'ro','MarkerSize',4) hold on

plot(Dadxmax1,xdxmax1,'*','MarkerSize',6) % disegna un asterisco sul "naso"

% (blowout) drawnow

axis([0 Damax 0 1])

xlabel('Da');ylabel('x');title('Conversione/Temperatura, CSTR stazionario adiabatico');

text(0.75*Damax,.30,...

['Parametri:', 10,...

'gamma = ',num2str(gamma), 10,...

'beta = ', num2str(beta), 10],...

'HorizontalAlignment','left',...

'BackgroundColor',[1 1 1]) hold on

drawnow

%

% Esegue di nuovo la scansione ma al contrario, per evidenziare eventuale

% molteplicità delle soluzioni ed isteresi

%

% Svuota i registri Daplot e x_out

%

Daplot=[];

(22)

x_out=[];

%

% Per portata infinita, tempo di residenza nullo, conversione nulla. Il

% tentativo iniziale è:

% x0=0;

dxmax=0;

%

for Da=Damin:dDa:Damax

zero=fzero(@(x) res(x,Da), x0);

dx=abs(zero-x0);

if dx>dxmax dxmax=dx;

Dadxmax2=Da-dDa; % prende il valore precedente xdxmax2=x0; % prende il valore precedente end

x0=zero;

Daplot=[Daplot,Da];

x_out=[x_out,zero];

end

%

figure(1)

plot(Daplot,x_out,'r.','MarkerSize',4) hold on

plot(Dadxmax2,xdxmax2,'*','MarkerSize',6) % disegna un asterisco sul "naso"

drawnow

%

% Esegue la scansione ancora per determinare il ramo delle soluzioni

% instabili nella curva a S. La ricerca avviene a partire da un valore

% di Da posizionato sicuramente all'interno della regione di molteplicità.

% Il valore di tentativo iniziale x0 è scelto in modo da determinare

% convergenza alla soluzione intermedia instabile.

%

Da_middle=(Dadxmax1+Dadxmax2)/2;

Daplot=[];

x_out=[];

x0=0.5; % valore di tentativo iniziale presumibilmente vicino % alla soluzione intermedia instabile

%

for Da=Da_middle:dDa:Dadxmax2 % cerca le soluzioni da Da_middle % in avanti fino a Dadxmax2 Daplot=[Daplot,Da];

x_out=[x_out,zero];

zero=fzero(@(x) res(x,Da), x0); % trova lo zero della funzione "res"

x0=zero; % conserva l'ultimo valore calcolato per usarlo come % tentativo iniziale del calcolo successivo

Daplot=[Daplot,Da]; % appende l'ultimo valore utilizzato % alla sequenza dei valori utilizzati % finora, ai fini della diagrammazione x_out=[x_out,zero]; % appende l'ultimo valore calcolato % alla sequenza dei valori calcolati % finora, ai fini della diagrammazione end

x0=0.4; % riposiziona x0

for Da=Da_middle:-dDa:Dadxmax1 % cerca le soluzioni da Da_middle % all'indietro fino a Dadxmax1 Daplot=[Daplot,Da];

x_out=[x_out,zero];

zero=fzero(@(x) res(x,Da), x0);

x0=zero;

Daplot=[Daplot,Da];

x_out=[x_out,zero];

end

(23)

%

figure(1)

plot(Daplot,x_out,'k.','MarkerSize',3) drawnow

% disegna due asterischi in corrispondenza dei nasi della curva a S

(24)

B.2 Reattore CSTR non adiabatico.

Bisogna trovare gli zeri del sistema

𝑥 = Da(1 − 𝑥)𝑒

𝛾𝛽𝜃

1+𝛽𝜃 (2.17)

𝜃 = 𝑥 − Da𝜙(𝜃 − 𝜃

)

(2.19')

Ricaviamo 𝑥 dalla (2.19')

𝑥 = 𝜃 + Da𝜙(𝜃 − 𝜃

)

(2.19")

e sostituiamolo nella (2.17) per dare:

𝜃 + Da𝜙(𝜃 − 𝜃

) − Da (1 − (𝜃 + Da𝜙(𝜃 − 𝜃

))) 𝑒

𝛾𝛽𝜃

1+𝛽𝜃

= 0

(2.23)

Adoperiamo ancora

fzero(@fun,x0)

che trova la radice dell’equazione specificata in fun più vicina ad x0, e successivamente calcoliamo 𝑥 dalla (2.19"). Di seguito il codice MATLAB che traccia il luogo delle soluzioni al variare del numero di Damköhler, per specificati valori di 𝛽, 𝛾, 𝜙 e 𝜃 .

% Il programma risolve il modello di funzionamento a regime

% stazionario di un CSTR non adiabatico con reazione non isotermica.

% Il diagramma risultante riporta il grado di conversione x (in azzurro) e

% la temperatura adimensionale teta (in rosso) in funzione del parametro

% operativo principale (numero di Damkoehler), per assegnati valori di

% beta (parametro legato alla termicità della reazione), gamma

% (parametro legato alla cinetica), phi (coefficiente adimensionale di

% scambio termico) e tetainf (temperatura adimensionale esterna al

% reattore). In caso di molteplicità, il programma può determinare anche

% i rami delle soluzioni instabili, e li traccia in colore nero.

% Le due equazioni del modello, in x e teta, una lineare e una non, sono

% combinate per dare una sola equazione non lineare in teta. La x è

% calcolata dopo, sostituendo teta nell'altra equazione (lineare).

clear all; close all;

gamma=10; % 10 beta=2; % 2 phi=5;

tetainf=0;

Damin=0; % estremo sinistro dell'intervallo di scansione per Da DeltaDa=0.001; % 1/N numero di punti nell'intervallo (Damin,Damax) Damax=0.03; % estremo destro dell'intervallo di scansione per Da dDa=DeltaDa*(Damax-Damin);

%

% Questa istruzione definisce la funzione "anonima" res (res sta per

% residuo) che dipende dai parametri del caso. In particolare, decidiamo di

% lasciare variabile il parametro Da nella ricerca degli zeri.

%

res=@(teta,Da) teta+Da*phi*(teta-tetainf)-Da*(1-teta-Da*phi*(teta- tetainf))*exp(gamma*beta*teta/(1+beta*teta));

%

Daplot=[]; % conterrà i valori delle ascisse del grafico

(25)

teta_out=[]; % conterrà i valori delle ordinate (teta) del grafico x_out=[]; % conterrà i valori delle ordinate (x) del grafico

%

% Prima scansione, per Da decrescente fino a zero (portata crescente). Il

% valore di teta ad alti Da è prossimo a 1, quindi come tentativo iniziale

% fissiamo:

%

teta0=1;

%

dtetamax=0; % serve per localizzare il punto di massima derivata dx/dDa

%

for Da=Damax:-dDa:Damin % ciclo di scansione per Da

%

% Invoca fzero per determinare la soluzione (zero) nel punto Da:

%

zero=fzero(@(teta) res(teta,Da), teta0);

%

% Calcola il valore della derivata d(teta)/d(Da) per determinare il Da critico

% ossia quello in cui il diagramma fa un salto dal ramo di alta conversione

% a quello di bassa conversione. Poiché la scansione è a passo costante,

% basta determinare la differenza fra le due radici successive trovate.

%

dteta=abs(zero-teta0);

if dteta>dtetamax dtetamax=dteta;

Dadtetamax1=Da-dDa; % prende il valore precedente tetadtetamax1=teta0; % prende il valore precedente end

%

% Usa lo zero appena trovato come valore iniziale per il calcolo

% successivo e conserva Da e zero per la diagrammazione.

%

teta0=zero;

Daplot=[Daplot,Da];

teta_out=[teta_out,zero];

x_out=[x_out,zero+Da*phi*(zero-tetainf)]; % calcola x da teta end

%

figure(2)

plot(Daplot,x_out,'c.','MarkerSize',4) hold on

plot(Daplot,teta_out,'r.','MarkerSize',4) hold on

plot(Dadtetamax1,tetadtetamax1,'*','MarkerSize',6) % disegna un asterisco sul

"naso"

% (blowout) drawnow

axis([0 Damax 0 1])

xlabel('Da');ylabel('x, teta');title('Conversione e Temperatura, CSTR stazionario adiabatico');

text(0.75*Damax,.30,...

['Parametri:', 10,...

'gamma = ',num2str(gamma), 10,...

'beta = ', num2str(beta), 10,...

'phi = ',num2str(phi), 10,...

'tetainf = ',num2str(tetainf)],...

'HorizontalAlignment','left',...

'BackgroundColor',[1 1 1]) hold on

drawnow

%

% Esegue di nuovo la scansione ma al contrario, per evidenziare eventuale

% molteplicità delle soluzioni ed isteresi

Riferimenti

Documenti correlati

viceversa la variazione infinitesima di energia interna di calore e di lavoro dipendono. non dipende

 Un progetto, individuale o a gruppi di due-tre persone, assegnato dal docente e basato sugli argomenti del Capitolo 2 (calcolo di parametri di processo per un

 Un progetto, individuale o a gruppi di due-tre persone, assegnato dal docente e basato sugli argomenti del Capitolo 2 (calcolo di parametri di processo per un

In corrispondenza del valore del rapporto equivalente di massima potenza così determinato, si studi inoltre l’effetto del preriscaldamento dell’aria di alimento da 298 fino

Processi di Combustione – A.A. Determinare il rapporto equivalente di esercizio per percentuali di propano pari a 0%, 50% e 100% in moli e, laddove minore di uno, la frazione

Sotto le stesse ipotesi, ma ovviamente considerando l’eccesso di O 2 nei prodotti, stimare la temperatura adiabatica di combustione per rapporto equivalente 0.2 (5) Il

 Un progetto, individuale o a gruppi di due-tre persone, assegnato dal docente e basato sugli argomenti del Capitolo 2 (calcolo di parametri di processo per un

Utilizzando il codice “pplane8” implementato in Matlab è stato ricavato il diagramma delle fasi e le serie temporali delle variabili di stato del sistema per diversi set di