• Non ci sono risultati.

Ideal Reactor Models in Combustion: The non Isothermal Continuous Stirred Tank Reactor (CSTR)

N/A
N/A
Protected

Academic year: 2021

Condividi "Ideal Reactor Models in Combustion: The non Isothermal Continuous Stirred Tank Reactor (CSTR)"

Copied!
15
0
0

Testo completo

(1)

Ideal Reactor Models in Combustion:

The non Isothermal Continuous Stirred Tank Reactor (CSTR)

Notes prepared by Gaetano Continillo in occasion of lectures given in June 2017.

Let us consider a tank reactor in which:

 Reactants enter the tank at a constant flow rate

𝑉̇

𝑖𝑛 ;

 The concentration of the reactant 𝐶 [𝑚𝑜𝑙𝑒/𝑚3] and the temperature 𝑇 [𝐾] are uniform across the volume 𝑉 [𝑚3] of the reactor, as the effect of perfect mixing;

 In the tank, an irreversible chemical reaction occurs:

𝑅 → 𝑃 with reaction rate 𝑟[𝑚𝑜𝑙𝑒/(𝑚3𝑠)] which depends on 𝐶, 𝑇.

Schematically, a CSTR can be represented as follows:

Figure 1. Schematic of a Continuous Stirred tank Reactor

1. Isothermal CSTR at steady state

If the system is isothermal, i.e. the temperature is constant, then we only need to write species conservation equations. In this case, the balance equation for the reactant is sufficient, because the concentration of the product P can be derived by difference. In a general form, such balances can be written as:

= 0 entering q.ty = exiting q.ty + q.ty disappearing for the reaction + accumulated q.ty

In our specific case, since we are modelling a steady-state system, no accumulation is considered. If 𝑟(𝐶) is the reaction rate of an isothermal system, the balance can be written as:

𝑉̇𝑖𝑛× 𝐶𝑖𝑛 = Moles of R entering per unit time

𝑉̇𝑜𝑢𝑡× 𝐶𝑜𝑢𝑡= Moles of R leaving the reactor per unit time

𝑉 × 𝑟(𝐶) = Moles of R being consumed by the reaction, per unit time

where 𝑉 is the volume of the reacting fluid inside the reactor. Hence we have:

𝐶, 𝑇 𝑟𝑘(𝐶, 𝑇)

𝑉̇

𝑖𝑛

, 𝐶

𝑖𝑛

, 𝑇

𝑖𝑛

𝑉̇

𝑜𝑢𝑡

, 𝐶

𝑜𝑢𝑡

, 𝑇

𝑜𝑢𝑡

(2)

𝑉̇𝑖𝑛𝐶𝑖𝑛 = 𝑉̇𝑜𝑢𝑡𝐶𝑜𝑢𝑡+ 𝑉 × 𝑟(𝐶) (1) For simplicity, and to illustrate the problem, we assume constant density (the volume flow rate does not change between inlet ad outlet, i.e. 𝑉̇𝑖𝑛 = 𝑉̇𝑜𝑢𝑡 ≡ 𝑉̇ ) and, since 𝐶𝑜𝑢𝑡 = 𝐶 (perfect mixing) we write

𝑉̇𝐶

𝑖𝑛

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

𝑖𝑛

− 𝐶 =

𝑉

𝑉̇

𝑟(𝐶) = 𝜏𝑟(𝐶)

where 𝜏 = 𝑉/𝑉̇ represents the residence time, or, equivalently:

𝐶𝑖𝑛−𝐶

𝜏

= 𝑟(𝐶)

(2)

In the case of first order kinetics, we have 𝑟(𝐶) = 𝑘𝐶 and thus

𝐶

𝑖𝑛

− 𝐶 = 𝜏𝑘𝐶

(3)

that, solved for 𝐶, yields

𝐶 =

1

1+𝜏𝑘

𝐶

𝑖𝑛 (4)

Let us make things non-dimensional, and define

𝑥 ≡

𝐶𝑖𝑛−𝐶

𝐶𝑖𝑛

as the conversion degree in terms of the reactant, R, and

Da ≡ 𝜏𝑘

as the Damköhler number, we find easily, from Eq. (4), the non-dimensional analysis equation:

𝑥 =

Da

1+Da (5)

and the expression for 𝐶:

𝐶 =

1

1+𝐷𝑎

𝐶

𝑖𝑛

.

(6)

Figure 2. Conversion degree as a function of the Damköhler number.

0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1

0 2 4 6 8 10

𝑥

Da

(3)

2. Non-Isothermal CSTR at steady state

In the non-isothermal case, the species balance equation will not be sufficient to describe the system. Remember that the reaction rate depends both on concentration of the reactant and on the temperature, Eq. (2) should be rewritten as follows:

𝐶𝑖𝑛−𝐶

𝜏

= 𝑟(𝐶, 𝑇)

(2’)

where we now see two unknowns, i.e. the concentration 𝐶 and the temperature 𝑇. When the system cannot be modelled as isothermal, we need to write an energy balance. For any conserved quantity, we can write:

entering q.ty = exiting q.ty + q.ty disappearing + accumulated q.ty

In this case, entering and exiting quantities include the entering and exiting flow stream plus the energy exchanged as heat through the system boundaries (walls), plus the energy exchanged as mechanical work through the system boundaries. If the shaft work is zero, and if we use enthalpy as a measure of the energy to implicitly include the pressure work, we can write, per unit time:

𝐻̇

𝑖𝑛

+ 𝑄̇

𝑖𝑛

= 𝐻̇

𝑜𝑢𝑡 that is

∆𝐻 = 𝐻̇

𝑜𝑢𝑡

− 𝐻̇

𝑖𝑛

= 𝑄̇

(7) where 𝐻̇𝑖𝑛 and 𝐻̇𝑜𝑢𝑡 are the enthalpy flow rates, and 𝑄̇ is the heat flow entering the system through the walls. Note that, when the reactor is cooled, according to our definition 𝑄̇ < 0.

The change of absolute enthalpy between inlet and outlet, ∆𝐻 = 𝐻̇𝑜𝑢𝑡− 𝐻̇𝑖𝑛 , can be divided into two contributions:

 the change of absolute enthalpy due to the change in the composition of the fluid, given by (−∆𝐻𝑟)𝑉̇(𝐶 − 𝐶𝑖𝑛) , were ∆𝐻𝑟 is the enthalpy of reaction per mole of reactant;

 the change of absolute enthalpy due to the change in agitation of the molecules (sensible heat), 𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝(𝑇 − 𝑇𝑖𝑛). To simplify the exposition, we assume 𝑐̅𝑝, molar heat capacity, to be constant.

Going back to Eq. (7) we write

∆𝐻 = (−∆𝐻

𝑟

)𝑉̇(𝐶 − 𝐶

𝑖𝑛

) + 𝑉̇𝐶

𝑡𝑜𝑡

𝑐̅

𝑝

(𝑇 − 𝑇

𝑖𝑛

) = 𝑄̇

(7’) Define again the conversion degree as

𝑥 ≡

𝐶𝑖𝑛−𝐶

𝐶𝑖𝑛

=

𝜏𝑘(𝑇)

1+𝜏𝑘(𝑇)

(8)

from which, conversely, we have

𝐶 = 𝐶

𝑖𝑛

(1 − 𝑥)

and, after substitutions in Eq. (7') and with some algebra, we write:

𝑇 − 𝑇

𝑖𝑛

=

𝐶𝑖𝑛(−∆𝐻𝑟)

𝐶𝑡𝑜𝑡𝑐̅𝑝

𝑥 +

𝑄̇

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

which represents the increase in the temperature obtained as a consequence of the chemical reaction completed at a generic conversion degree 𝑥 , and in presence of heat transfer 𝑄 ̇ with the environment. When conversion is complete (𝑥 = 1), the quantity

= 0 (since the total energy is conserved)

= 0 (steady state)

(4)

[𝑇 − 𝑇

𝑖𝑛

]|

𝑥=1

=

𝐶𝑖𝑛(−∆𝐻𝑟)

𝐶𝑡𝑜𝑡𝑐̅𝑝

+

𝑄̇

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

represents the maximum increase of the temperature that can be obtained by the chemical reaction at complete conversion (𝑥 = 1). Note that, by the way it is defined, it still depends on the concentration of reactant at the inlet and, of course, on the heat exchanges with the environment.

The ratio 𝐶𝑡𝑜𝑡⁄𝐶𝑖𝑛 is a measure of the dilution of the mixture: more diluted mixtures prodce a lower temperature increase.

In adiabatic conditions ( 𝑄̇ = 0 ) we can define

∆𝑇

𝑚𝑎𝑥,𝑎𝑑

≡ [𝑇 − 𝑇

𝑖𝑛

]|

𝑥=1,𝑎𝑑𝑏

=

𝐶𝑖𝑛(−∆𝐻𝑟)

𝐶𝑡𝑜𝑡𝑐̅𝑝 (11)

∆𝑇𝑚𝑎𝑥 is thus the maximum temperature increase that can be obtained for complete conversion of the reactant, fed at in concentration 𝐶𝑖𝑛 in the inlet stream, to the benefit of the whole system characterized by total concentration 𝐶𝑡𝑜𝑡, with no heat transfer to/from the environment. The expression 𝐶𝑡𝑜𝑡⁄𝐶𝑖𝑛 takes the name of dilution ratio; of course, if a large fraction of the total mass is constituted by the active reactant (low dilution) then the temperature will increase considerably, otherwise (high dilution, 𝐶𝑖𝑛 ≪ 𝐶𝑡𝑜𝑡) the temperature will increase much less.

Let

𝛽 ≡

∆𝑇𝑚𝑎𝑥,𝑎𝑑

𝑇𝑖𝑛

,

(12)

and Eq. (11) is rewritten as

𝑇 = 𝑇

𝑖𝑛

+ 𝛽𝑇

𝑖𝑛

𝑥 +

𝑄̇

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

which expresses the temperature as an explicit function of the conversion degree and of the system parameters, 𝑇 = 𝑇(𝑥). Let us introduce the non-dimensional temperature as

𝜃 ≡

𝑇−𝑇𝑖𝑛

∆𝑇𝑚𝑎𝑥,𝑎𝑑

(14)

such that

𝑇 = 𝑇

𝑖𝑛

+ ∆𝑇

𝑚𝑎𝑥,𝑎𝑑

𝜃 = 𝑇

𝑖𝑛

(1 + 𝛽𝜃)

(15) and, combining with Eq. (13), we have

𝜃 = 𝑥 +

𝑄̇

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

Get now back to the species balance equation:

𝐶𝑖𝑛−𝐶

𝜏

= 𝑟(𝐶, 𝑇) ,

(2’)

use the definition of conversion degree, specify it for a first order reaction with Arrhenius kinetics 𝑘(𝑇) = 𝑘0𝑒𝐸𝑎𝑅𝑇 and introduce the non-dimensional parameter 𝛾 = 𝐸𝑎

𝑅𝑇𝑖𝑛 , to write:

𝑥 = 𝜏

𝑘0

𝑒

𝛾

1+𝛽𝜃

(1 − 𝑥)

(17)

The preexponential 𝑘0 is not representative of the "average" reaction rate constant. It is convenient to manipulate the expression as:

(5)

𝑘0

𝑒

1+𝛽𝜃𝛾

=

𝑘0

𝑒

𝛾

𝑒

1+𝛽𝜃𝛾𝛽𝜃

Then, define a reference reaction rate constant, 𝑘𝑟𝑒𝑓 = 𝑘0

𝑒

𝛾 and the Damköhler number Da ≡ 𝜏𝑘𝑟𝑒𝑓, and write

𝑥 =

Da

(1 − 𝑥)𝑒

𝛾𝛽𝜃

1+𝛽𝜃 (17')

At this point it is convenient to make non-dimensional the heat transfer term. Imagine that the heat flux 𝑄̇ be expressed as a linear term in the equation, proportional to the surface area 𝑆 of the reactor and to the temperature difference between the reactor and the environment, 𝑇 − 𝑇

,

through a global heat transfer coefficient 𝑈, and use the definition of

𝜃

to write:

𝑄̇ = −𝑈𝑆(𝑇 − 𝑇) = −𝑈𝑆 ∆𝑇𝑚𝑎𝑥,𝑎𝑑(𝜃 − 𝜃) (18)

and, substituting in Eq. (16):

𝜃 = 𝑥 −

𝑈𝑆

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝

(𝜃 − 𝜃

)

(19)

In the non-dimensional coefficient 𝑈𝑆

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝 we observe the dependence on an operating parameter, the volume flow rate 𝑉̇.

Since 𝑉̇ is already contained in the Damköhler number, we make the following transformation:

𝑈𝑆

𝑉̇𝐶𝑡𝑜𝑡𝑐̅𝑝

=

𝑉𝑘𝑟𝑒𝑓

𝑉̇

𝑈𝑆

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

= Da

𝑈𝑆

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

and introduce the non-dimensional heat transfer coefficient:

𝜙

= 𝑈𝑆

𝑉𝑘𝑟𝑒𝑓𝐶𝑡𝑜𝑡𝑐̅𝑝 to finally write

𝜃 = 𝑥 − Da𝜙(𝜃 − 𝜃

)

(19')

The two algebraic non linear equations to be solved to compute (

𝑥, 𝜃

) are:

It is a set of two nonlinear equations in the unknowns

𝑥

e 𝜃, with five non-dimensional parameters (Da, 𝛽, 𝛾, 𝜃 e 𝜙).

DISCUSSION OF THE PARAMETERS The parameters introduced above have the following physical meaning:

 Da =𝑉

𝑉̇𝑘𝑟𝑒𝑓= 𝜏𝑘𝑟𝑒𝑓 (the Damköhler number) is the most common operation parameter. It contains the volume flow rate 𝑉̇ at power −1: the highest the Damköhler, the lowest the flow rate.

𝑥 = Da(1 − 𝑥)𝑒

𝛾𝛽𝜃

1+𝛽𝜃 (17')

𝜃 = 𝑥 − Da𝜙(𝜃 − 𝜃

)

(19')

(6)

 𝛽 =∆𝑇𝑚𝑎𝑥

𝑇𝑖𝑛 is a measure of the thermal effects of the chemical reaction: the higher 𝛽, the higher the temperature change as an effect of the reaction.

 𝛾 =𝑅𝑇𝐸𝑎

𝑖𝑛 is a measure of the activation energy of the reaction: the higher 𝛾, the higher the transition temperature between the slow reaction and the fast reaction regime.

 𝜃 is the non-dimensional temperature outside the reactor (i.e. environment).

𝜙

= 𝑈𝑆

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

represents the non-dimensional heat transfer coefficient between the reactor and the environment. It contains, among other things, information on shape and size of the reactor. For example, a spherical reactor of diameter 𝐷 will have:

𝑆 = 𝜋𝐷

2

; 𝑉 =

𝜋𝐷3

6 and the expression becomes

𝜙 =

6𝑈

𝐷𝑘𝑟𝑒𝑓𝐶𝑡𝑜𝑡𝑐̅𝑉

where we note that, if we only change the size of the reactor, the non-dimensional heat transfer coefficient changes. Larger vessels are more "adiabatic" just because of the size (lower surface/volume ratio).

3. Non isothermal CSTR – adiabatic case

In the adiabatic case, 𝜙 = 0. In correspondence with a generic value 𝑥 of the conversion degree, in adiabatic conditions, from Eq. (19') it is then:

𝜃 = 𝑥

(20)

from which we observe that in this case, and only in this case, there exists a “stoichiometric”

relationship between the temperature reached and the conversion degree attained. This relationship does not depend on operating parameters (volume, mass flow rate etc.) because the change in the potential chemical bond energy of the mixture is entirely found as thermal energy in the mixture at the outlet. Eq. (28) becomes

𝑥 = Da(1 − 𝑥)𝑒

𝛾𝛽𝑥

1+𝛽𝑥

,

(21)

a single equation in the sole unknown 𝑥 and three parameters (Da, 𝛽, 𝛾). From this expression we see that, for 𝛽 = 0 i.e. for a reaction in which there is no conversion of chemical bond potential energy into thermal energy (thus, under our assumption, for an isothermal system), the exponential term is =1. Thus, in this case the expression reduces to

𝑥 = Da(1 − 𝑥)

that gives us back the expression for the isothermal reactor.

Equation (21) can be solved numerically. One method is shown in the Appendix. It consists of seeking the roots of the equation

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

𝛾𝛽𝜃

1+𝛽𝑥

= 0

. (22)

(7)

We call "solution diagrams" the graphs describing how the solutions of Eq. 22 change, appear and disappear as one parameter changes. In the following figures we see examples of solution diagrams, in which the Damköhler number is chosen as the operation parameter, for three chosen values of 𝛽 and two values of 𝛾. The blue lines correspond to 𝛽 = 0 , that is to a isothermal reactor and, in fact, the curves are the same as for the isothermal case (Figure 2). As the thermal character of the reaction changes (𝛽 > 0, exothermic reaction) the conversion degree at a given value of Da is larger. Note also that, at a given 𝛽, conversion grows as 𝛾 increases. Combustion reactions are characterized by high values of the activation energy, corresponding to values of 𝛾 reaching 15-20.

and this explains why when we do back-of-the-envelope calculations of adiabatic combustion temperature we assume complete conversion. Note finally that, for high 𝛾 values and at low Damköhler numbers (= high mass flow rates) the conversion degree decreases sharply.

Figure 3. Conversion degree versus the Damköhler number, for three values of 𝛽, 𝛾 = 1.

Figure 4. Conversion degree versus the Damköhler number, for three values of 𝛽, 𝛾 = 5.

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

(8)

Figure 5 shows the solutions for an exothermic (𝛽 = 1), an isothermal (𝛽 = 0) and one endothermic (𝛽 = −1) reaction. Note that, for the endothermic case, the conversion degree is always lower that for iso- and exothermic.

Figure 5. Conversion degree as a function of the Damköhler number: exothermic (𝛽 = 1), isothermal (𝛽 = 0) and endothermic (𝛽 = −1) reaction. All curves are for 𝛾 = 1.

4. Multiplicity of the solutions: extinction and ignition limits.

Equation (21), being nonlinear, may have more than one solution for a given set of values of the parameters. The conditions explored so far are weakly exothermic and relatively low activation energy. But, often, combustion reactions are strongly exothermic and have high activation energy.

Figure 6. Conversion degree as a function of the Damköhler number, 𝛾 = 10 , 𝛽 = 7. The multiplicity region is identified by two green vertical lines.

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

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

Conversion degree, adiabatic steady-state CSTR

Parameters:

𝛾 = 10 𝛽 = 7 Extinction

Ignition

Multiplicity region

(9)

Figure 6 reports a plot in which we recognize the high conversion solutions (in red), the low conversion solutions (in blue) and the mid conversion solutions (in black). It can be shown that the mid conversion solutions are unstable, and that the system chooses either the high or the low conversion solution, which are both stable, at the same value of the Damköhler number. Note that the multiplicity region has a finite amplitude in the Damköhler range and that it is located towards the high flow rate regime (Da → 0).

Note also that the high conversion solution (in red) ceases to exist when the Damköhler number goes below a critical value, i.e. when the mass flow rate increases beyond a critical value named extinction limit or blowout limit. This means that, for flow rates higher than this limit, it is impossible to have combustion inside the reactor.

Figure 7. Blowoff from a can combustor.

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

Finally, note that the low conversion solution (in blue) ceases to exist when the Damköhler number goes beyond a critical value, i.e. when the mass flow rate decreases beyond a critical value named ignition limit. This means that, for flow rates lower than this limit, the mixture will always ignite.

3. Non isothermal CSTR – non adiabatic case

The adiabatic case is just a theoretical (limit) case. In practice, it is impossible to obtain a perfect insulation of the reactor. For a generic case, nonzero values for the heat transfer coefficient

𝜙

must be considered, and thus it is necessary to solve a two-equation system:

𝑥 = Da(1 − 𝑥)𝑒

𝛾𝛽𝜃

1+𝛽𝜃 (17')

𝜃 = 𝑥 − Da𝜙(𝜃 − 𝜃

)

(19')

Solve Eq. (19') for 𝑥 :

𝑥 = 𝜃 + Da𝜙(𝜃 − 𝜃

)

(19")

and substitute in Eq. (17') to find:

(10)

𝜃 + Da𝜙(𝜃 − 𝜃

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

))) 𝑒

𝛾𝛽𝜃

1+𝛽𝜃

= 0

(23)

We can now invoke

fzero(@fun,x0)

to find the solution of fun nearest to x0, and subsequently compute 𝑥 from Eq. (19").

A MATLAB code capable to do this for specified values of 𝛽, 𝛾, 𝜙 e 𝜃 is in the Appendix.

Figure 8. Conversion degree (cyan) and temperature (red) as a function of the Damköhler number, 𝛾 = 10 , 𝛽 = 7, 𝜙 = 50, 𝜃= 0.

Figure 8 reports a plot of the same system as in Figure 6, but with heat transfer to the environment characterized by 𝜙 = 50 and 𝜃 = 0 (same value as the inlet temperature 𝜃𝑖𝑛 = 0) in which we recognize high, mid, and low conversion solutions. Conversion increases with the Damköhler number at all stable solutions. Note that the multiplicity region has a larger amplitude in the Damköhler range, mainly due to a higher Damköhler number at ignition limit. Note also that at high flow rates (Da → 0) the system is quantitatively similar to the adiabatic case, the reason being that the chemical time is much too short to give the system the time to be significantly cooled down by the environment. At large values of the Damköhler number, heat losses are large and thus temperatures are much lower. This results in an optimal value for the Damköhler number in terms of system maximum temperature.

(11)

APPENDIX

Numerical resolution of the steady state equations of the non isothermal CSTR.

A.1 Adiabatic CSTR.

As seen above, the system is fully described by the single equation:

𝑥 = Da(1 − 𝑥)𝑒

𝛾𝛽𝑥

1+𝛽𝑥 (21)

The scope of the numerical procedure is to find an approximate value for the solution of Eq. (21) as one operation parameter changes while the others are fixed to chosen values.

MATLAB provides a built-in function:

fzero(@fun,x0)

which calculates the root of function fun with an iterative procedure starting from a first guess value, x0. The code reported below traces the solutions of Eq. (21) as the Damköhler number is varied.

% This code solves the equation at steady state for an adiabatic CSTR with

% non isothermal reaction of the first order and Arrhenius kinetics.

% stazionario di un CSTR adiabatico con reazione non isotermica.

% The resulting solution diagram reports the nondimensional

% conversion/temperature x (in red) as a function of the main

% operation parameter, the Damkoehler number, for assigned values of beta

% (parameter related to the maximum temperature increase) and gamma

% (parameter related to the chemical kinetics.

%

% In case of multiple solutions, the code can track the unstable

% solution branch (in black).

clear all; close all;

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

Damin=0; % lower bound for the Damkoehler number interval

DeltaDa=0.0005; % 1/N number of points to compute within (Damin,Damax) Damax=0.01; % upper bound for the Damkoehler number interval

dDa=DeltaDa*(Damax-Damin);

%

% This instruction defines the "anonymous" function res (res as "resifdual")

% that depends on the system parameters. Particularly, we decide to leave

% Da (the Damkoehler number) as variable in the search of the zeroes.

%

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

%

Daplot=[]; % abscissae in the plot x_out=[]; % ordinates in the plot

%

% First scan, Da decreasing down to Damin. The value of x at high Da is

% close to 1, thus we set our initial guess as x0=1

% x0=1;

%

dxmax=0; % initialize the location of the point of maximum derivative dx/dDa

%

%

for Da=Damax:-dDa:Damin % main scan cycle

(12)

%

% Invoke fzero to determine the solution at Damkoehler=Da:

%

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

%

% Computes the value of the derivative d(x)/d(Da) to determine the critical

% value of Da, that is where the diagram jumps from the high conversion branch

% to the low conversion branch.

%

dx=abs(zero-x0);

if dx>dxmax dxmax=dx;

Dadxmax1=Da-dDa; % take the previous value xdxmax1=x0; % take the previous value end

%

% Use the zero just found as the initial guess for the next computation

% and stores (Da, zero) for the plot.

%

x0=zero;

Daplot=[Daplot,Da];

x_out=[x_out,zero];

% end

%

figure(1)

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

plot(Dadxmax1,xdxmax1,'*','MarkerSize',6) % draw an asterisk on the "nose"

% (extinction) drawnow

axis([0 Damax 0 1])

xlabel('Da');ylabel('x');title('Conversion/Temperature, steady adiabatic CSTR');

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

['Parameters:', 10,...

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

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

'HorizontalAlignment','left',...

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

drawnow

%

% Scan again but in the forward direction, to possibly seek multiple branches

%

% Clear Daplot and x_out

%

Daplot=[];

x_out=[];

%

% For infinite flow rate/zero residence time, the conversion is zero, thus the

% best initial guess is x0=0:

% 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; % take the previous value xdxmax2=x0; % take the previous value end

(13)

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) % draw an asterisk on the 'nose' % (ignition)

% drawnow

%

% Scan the region in between the 'noses' to compute the unstable solution

% branch of the S curve. The search begins from a value of Da that certainly

% belongs to the multiplicity region, i.e. from the midpoint of the interval

% between the computed extinction limit and ignition limit.

% The initial guess x0 is chosen in order to possibly detect an unstable

% solution, i.e. as the midpoint of the interval span by the ordinates computed

% for the two 'noses'

%

Da_middle=(Dadxmax1+Dadxmax2)/2;

Daplot=[];

x_out=[];

x0=(xdxmax1+xdxmax2)/2;

%

for Da=Da_middle:dDa:Dadxmax2 % seek solutions between Da_middle % and Dadxmax2

Daplot=[Daplot,Da];

x_out=[x_out,zero];

zero=fzero(@(x) res(x,Da), x0); % find the zero of the "res" function

%

% Use the zero just found as the initial guess for the next computation

% and appends the new (Da, zero) to the plot arrays.

%

x0=zero;

Daplot=[Daplot,Da];

x_out=[x_out,zero];

% end

%

% reset x0

%

x0=(xdxmax1+xdxmax2)/2;

for Da=Da_middle:-dDa:Dadxmax1 % seek solutions from Da_middle backwards down % to Dadxmax1

Daplot=[Daplot,Da];

x_out=[x_out,zero];

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

%

% Use the zero just found as the initial guess for the next computation

% and appends the new (Da, zero) to the plot arrays.

%

x0=zero;

Daplot=[Daplot,Da];

x_out=[x_out,zero];

end

%

figure(1)

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

(14)

A.2 Non adiabatic CSTR.

Use Eq. (23) to compute steady states for a non-adiabatic reactor. The method is the same as the one used with the adiabatic reactor.

clear all; close all;

gamma=10;

beta=2;

phi=5;

tetainf=0;

%

Damin=0;

DeltaDa=0.001;

Damax=0.03;

dDa=DeltaDa*(Damax-Damin);

%

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

%

Daplot=[];

teta_out=[];

x_out=[];

%

teta0=1;

%

dtetamax=0;

%

for Da=Damax:-dDa:Damin

%

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

%

dteta=abs(zero-teta0);

%

if dteta>dtetamax dtetamax=dteta;

Dadtetamax1=Da-dDa;

tetadtetamax1=teta0;

end

%

teta0=zero;

Daplot=[Daplot,Da];

teta_out=[teta_out,zero];

x_out=[x_out,zero+Da*phi*(zero-tetainf)];

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) drawnow

axis([0 Damax 0 1])

xlabel('Da');ylabel('x, teta');title('Conversion and Temperature, steady state non-adiabatic CSTR');

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

['Parameters:', 10,...

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

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

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

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

'HorizontalAlignment','left',...

'BackgroundColor',[1 1 1])

(15)

hold on drawnow

%

Daplot=[];

teta_out=[];

x_out=[];

%

teta0=0;

dtetamax=0;

%

for Da=Damin:dDa:Damax

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

dteta=abs(zero-teta0);

if dteta>dtetamax dtetamax=dteta;

Dadtetamax2=Da-dDa;

tetadtetamax2=teta0;

end

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(Dadtetamax2,tetadtetamax2,'*','MarkerSize',6) drawnow

%

Da_middle=(Dadtetamax1+Dadtetamax2)/2;

teta0=(tetadtetamax1+tetadtetamax2)/2;

%

Daplot=[];

teta_out=[];

x_out=[];

%

for Da=Da_middle:dDa:Dadtetamax2

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

teta0=zero;

Daplot=[Daplot,Da];

teta_out=[teta_out,zero];

x_out=[x_out,zero+Da*phi*(zero-tetainf)];

end

teta0=(tetadtetamax1+tetadtetamax2)/2;

for Da=Da_middle:-dDa:Dadtetamax1 % zero=fzero(@(teta) res(teta,Da), teta0);

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',3) hold on

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

drawnow

Riferimenti

Documenti correlati

Inferring the infection biology of the wood decay fungus Perenniporia fraxinea through an analysis of genotypic diversity: a case study in northern Italy.. Terms of use:

Miraglia et al., “Cardiac fibroblast- derived extracellular matrix (biomatrix) as a model for the stud- ies of cardiac primitive cell biological properties in normal and

e relativo all’esclusione del socio di SS, SNC e SAS (per quanto riguarda le SRL tale fattispecie è disciplinata dall’art. 2473-bis c.c.; viceversa, per le società

Avendo recentemente trascorso un periodo di tre mesi nella capitale dell‘Ulster, mi è parso di notevole interesse esaminare come si è evoluta la

Figure 7: Impulse responses and 68% confidence bounds for the 3-state MSSVAR model with short-run restrictions and long-run demand shock neutrality restriction, with oil, q, p, s εoil

In particular, it was shown that the initial bed temperature (T 0 ) should be set at about 1000 K in order to achieve the threshold ignition value for reduction reaction; moreover,

Note also that the high conversion solution (in red) ceases to exist when the Damköhler number goes below a critical value, i.e.. when the mass flow rate increases beyond a

Developmental stress has been shown to have detrimental effects on the expression of various secondary sexual traits in male birds. These effects include reductions in song output