Torureaktor
Torureaktor, ehk väljatõrjereaktor (ingl plug flow reactor (PFR)), on üks peamisi reaktori liike. Siin kirjeldame reaktorit ja näitame, kuidas modelleerida seda.
Iseloomustus
Torureaktoris segu voolab läbi reaktorit. Seega, erinevalt pidevast segureaktorist ja perioodilisest reaktorist, koostis sõltub asukohast ja ei ole ühtlane reaktoris. Mida kaugemale segu jõuab reaktorist, seda kõrgem on tavaliselt konversiooniaste. Üldiselt torureaktor töötab statisonaarses režiimis, mis tähendab, et kontsentratsioon ja muid parameetreid konkreetses kohas reaktoris ei muutu ajas, isegi kui reaktori pikisuunas kontsentratsioon muutub.
Põhivõrrand
Reaktori põhivõrrand on lihtsalt moolbilanss. Põhivõrrand on oluline kuna selle kaudu on võimalik vastata olulistele disaini ja opereerimise küsimustele. Torureaktori põhivõrrand on järgmine:
Põhivõrrandit saab ka kirjutada integraalsel kujul.
V on reaktori maht, ṅA0 on aine A moolkulu reaktori alguses, ṅA on moolkulu teatud kohas reaktoris ja -rA on reaktsiooni kiiruse valemit.
Põhivõrrand on moolibilanss, aga teisel kujul. Alustame siis üldise moolibilansiga.
Kuna torureaktoris konversiooniaste sõltub läbitud mahust, tekkimise/kadumise osa valemis on integraal. Pidev segureaktori ja perioodilise reaktoriga ei olnud vaja integraali kasutada kuna konversiooniaste oli igal pool sama.
Kui eeldame, et reaktor töötab statsionaarses režiimis, siis \( \frac{dn_A}{dt} = 0 \). Ehk, aine A kogus reaktoris ei muutu ajas. Tõstes ṅA0 ja ṅA valemi teisele poole, saame järgmise valemi.
Võime ka leida valemit tuletise kujul, kui võtta tuletist mahu suhtes.
Mõnikord tahame ka arvutada torureaktori mahtu ja selleks saame integreerida valemit, et leida põhivõrrandi integraalset kuju, mida üleval näidatakse. Selleks, et seda teha esiteks eraldame tuletise muutujaid ja viime dV valemi teisele poolele.
Siis saab mõlemat poolt integreerida ja põhivõrrandi integraalne kuju ongi käes.
Põhivõrrandit saab ka avaldada konversiooniastme suhtes.
Näide - lihtsam
Jäätmed lihatööstuses tihti sisaldavad palju valku. Sellest valgust oleks võimalik toota aminohapped ja orgaanilised happed, kui hüdrolüüsida jäätmed vees kõrge temperatuuri ja rõhu juures. Kuid katsed on näidanud, et aminohappe saagis on tavaliselt palju väiksem, kui teoreetiliselt peaks olema. Näiteks, 1 g kalajäätmetes (kuiv) oli 600 mg valku, aga toodeti ainult 140 mg aminohappeid. Saagis on madal suuresti sellepärast, et aminohapped ise lagunevad reaktori tingimustel. Suurema saagise saavutamiseks oleks vaja vähendada aminohapete lagunemist.3
Jäätmeid töödeldatakse torureaktoris ja toodetud aminohapped hakkavad lagunema. Selleks, et lihtsustada ülesannet keskendume ainult aminohapete lagunemisele. Eeldame, et torureaktor on 120-liitrine ja et aminohappeid juurde ei teki. Alguses ühe aminohappe (glütsiini) kontsentratsioon on 10 mmol/l. Mis osa glütsiinist on lagunenud selleks ajaks, kui lahus on väljunud reaktorist? Reaktor töötab 20 MPa ja 250 kraadi juures ja mahtkulu on 2 l/s.
Kineetilised parameetrid glütsiini lagunemiseks:
A = 3,51·1013 1/s
Ea = 166 kJ/mol
Alustame segureaktori põhivõrrandiga ja asendame rA reaktsiooni kiirusevalemiga:
Siis integreerime.
Seejärel saame lahendada XA jaoks.
Nüüd peame arvutama kiiruskonstanti Arrheniuse võrrandiga. Saame koostada Pythoni funktsiooni selle valemi jaoks:
def kiiruskonstant(T):
RGAS = 8.314462618 # J mol^-1 K^-1
A = 3.51e13
Ea = 166 * 1000 # J mol^-1
k = A * np.exp(-Ea / RGAS / (T + 273.15)) # s^-1
return k
Saame nüüd Pythonis lahendada põhivõrrandit ja arvutada konversiooniastet, mis näitab kui palju glütsiin on lagunenud.
Ca_alg = 0.01 # mol l^-1
V = 120 # l
T = 250 # Celcius
vdot = 2 # l s^-1
ndot_a_alg = vdot * Ca_alg
k = kiiruskonstant(T)
Xa = 1 - np.exp(-V * Ca_alg * k / ndot_a_alg)
Vastuseks saame 5,46%.
Pythoni fail, mida kasutasime siin lahendamiseks, on Githubis.
Näide - keerulisem
Eelmises näites lihtsustasime ülesannet ja panime mudelisse ainult ühte reaktsiooni. Kuid tegelikult valk kala jäätmetes peab esiteks lagunema selleks, et üksikud aminohapped oleksid lahuses.4 Nüüd teeme arvutust uuesti, aga võtame arvesse ka lagunemise reaktsiooni.
Jäätmeid töödeldatakse torureaktoris ja toodetud aminohapped hakkavad lagunema. Torureaktor on 2000-liitrine ja jäätmete kogus algses lahuses on 50 g/l. Kuna valk moodustab umbes 60% nendest jäätmetest3 ja umbes 14% kala valgust on glütsiin5, siis algne glütsiini sisaldus on 56 mmol/l, kuid see on veel valgus. Mis on glütsiini kontsentratsioon väljuvas voos? Reaktor töötab 20 MPa ja 250 kraadi juures. Mahtkulu on 2 l/s.
Hinnangulised kineetilised parameetrid kala jäätmete lagunemise reaktsiooniks:
A = 1·1012 1/s
Ea = 150 kJ/mol
Kineetilised parameetrid glütsiini lagunemiseks:
A = 3,51·1013 1/s
Ea = 166 kJ/mol
Kuna nüüd mudelis on kaks reaktsiooni kiirusevalemid on keerulisemad. Kuigi peaks ikkagi olema võimalik analüütiliselt lahendama, kasutame siin numbrilist meetodit kuna on kergem ja saame sama metoodikat kasutada keerulisemate süsteemidega tulevikus.
Esiteks, paneme kirja mudeli diferentsiaalvõrrandid. Antud ülesandes meid huvitavad kaks ainet, glütsiin ja kala jäätmed (täpsemalt glütsiini osa jäätmetest), siis nende moolbilansid moodustavad meie mudel.
Alustame põhivõrrandiga diferentsiaalsel kujul ja saame asendada moolkulu mahtkuluga korda kontsentratsiooni.
Siis lisame kiirusevalemit selleks, et saada mõlema aine moolbilanssi. Kuna glütsiin osaleb mõlemas reaktsioonis, glütsiini kiirusevalemis liidatakse mõlema reaktsiooni osa kokku. Võime ka jagada mahtkuluga, et liigutada seda valemi teisele poole.
Saame nüüd Pythonis lahendada mudelit. Diferentsiaalvõrrandite süsteemi lahendamiseks kasutame Gekko paketti. Esiteks, defineerime mudeli muutujaid ka konstante:
from gekko import GEKKO
m = GEKKO()
T = m.Param(value=250) # Celcius
k1 = m.Param(value=kiiruskonstant1(T.value))
k2 = m.Param(value=kiiruskonstant2(T.value))
vdot = m.Param(value=2) # l s^-1
npts = int(V)
m.time = np.linspace(0, V, npts) # tegelikult siin on maht, mitte aeg. Gekkos saab kasutada ".time" ka mahu tuletise jaoks
Cjäägid = m.Var()
Ca = m.Var()
Cjäägid.value = Cjäägid_alg * np.ones(npts) # alustame algkontsentratsiooniga
Ca.value = np.zeros(npts)
m.time muutujaga saame diskreetida meie reaktorit mahu järgi. Ehk, me saame jagada reaktorit väikesteks mahtudeks. Siin kasutame selleks Numpy linspace funktsiooni. Alguses maht on 0 ja lõpus kõik tükid peavad kokku liidetuna olema võrdne reaktori kogumahuga (ehk V).
Nüüd saame kirja panna meie valemid. Gekkole näitame, mis muutuja on meie tuletis kasutades .dt() meetodit. Gekko siis automaatselt saab arvutada meie jaoks kontsentratsioonide muutus mahuga.
m.Equation(Cjäägid.dt() == -k1 / vdot * Cjäägid)
m.Equation(Ca.dt() == k1 / vdot * Cjäägid - k2 / vdot * Ca)
Mudel on nüüd Gekkos kirja pandud ja saame lahendada. Gekkol on erinevad lahendamisviisid ja siin kasutame lahendamisviis 4.
m.options.IMODE = 4 # Gekkos on 6 arvutamise viisi, IMODE=4 tähendab, et lahendame dünaamilist mudelit
m.solve(disp=False)
Teeme joonist selleks, et kuvada, kuidas kontsentratsioon muutub reaktoris sõltuvalt läbitud mahust. Joonisest saame näha, et glütsiini kontsentratsioon väljuvas voos on umbes 0,021 mol/l.
Pythoni fail, mida kasutasime siin lahendamiseks, on Githubis.
Viited
- I. Kamenev, KAT0141 Reaktsiooniprotsessid: Loengukonspekt. Tallinna Tehnikaülikool, 2019.
- H. S. Fogler, Essentials of Chemical Reaction Engineering. Pearson Education, 2010.
- N. Sato, A. T. Quitain, K. Kang, H. Daimon, and K. Fujie, “Reaction Kinetics of Amino Acid Decomposition in High-Temperature and High-Pressure Water,” Ind. Eng. Chem. Res., vol. 43, no. 13, pp. 3217–3222, Jun. 2004, doi: 10.1021/ie020733n.
- K. Kang et al., “Optimization of amino acids production from waste fish entrails by hydrolysis in sub and supercritical water,” The Canadian Journal of Chemical Engineering, vol. 79, no. 1, pp. 65–70, 2001, doi: 10.1002/cjce.5450790110.
- B. Mohanty et al., “Amino Acid Compositions of 27 Food Fishes and Their Importance in Clinical Nutrition,” J Amino Acids, vol. 2014, p. 269797, 2014, doi: 10.1155/2014/269797.