Introduction To Numerical Methods in Chemical Engineering
Introduction To Numerical Methods in Chemical Engineering
NUMERICAL
METHODS IN
CHEMICAL
ENGINEERING
dCj
dx
A+B
= 0, j = A,B,C,D
B+C
k1
k2
C
D
d 2CA
dCA
D 2 u
k1CACB = 0
dx
dx
D
d 2CB
2
dx
D
d 2CC
2
dx
u
dx
D
d 2CD
2
dx
dCB
dCC
dx
dCD
dx
k1CACB k2CBCC = 0
+ k1CACB k2CBCC = 0
=D
dx
dCi
dx
=u
Ci + 1 2Ci + Ci 1
D
x2
Ci Ci 1
D
x
+ k2CBCC = 0
uCj,in = uCj D
d 2Ci
dCj
dx
Pradeep Ahuja
Introduction to
Numerical Methods in Chemical Engineering
Introduction to
Numerical Methods in
Chemical Engineering
PRADEEP AHUJA
Associate Professor
Department of Chemical Engineering and Technology
Institute of Technology, Banaras Hindu University
Varanasi
New Delhi-110001
2010
Rs. 275.00
INTRODUCTION TO NUMERICAL METHODS IN CHEMICAL ENGINEERING
Pradeep Ahuja
2010 by PHI Learning Private Limited, New Delhi. All rights reserved. No part of this book may
be reproduced in any form, by mimeograph or any other means, without permission in writing from
the publisher.
ISBN-978-81-203-4018-3
The export rights of this book are vested solely with the publisher.
Published by Asoke K. Ghosh, PHI Learning Private Limited, M-97, Connaught Circus,
New Delhi-110001 and Printed by Jay Print Pack Private Limited, New Delhi-110015.
To
my Mother
Kamla Ahuja
and
All my Students
Contents
Preface
ix
1.
2.
3.
116
1730
21
25
3152
viii
4.
Contents
5384
63
68
5.
85104
6.
ConvectionDiffusion Problems
6.1 Upwind Schemes
105
6.1.1 First Order Upwind Scheme
105
6.1.2 Second Order Upwind Scheme
106
6.2 Comparison of CDS and UDS
113
Exercises
114
7.
8.
155170
9.
171191
85
93
97
105118
119
119154
Contents
10.
Appendix:
Programs in C++
ix
192223
225283
Bibliography
285286
Index
287289
Preface
This book entitled Introduction to Numerical Methods in Chemical Engineering is designed for
a course on Numerical Methods in Chemical Engineering and the associated Computer
Applications Laboratory course offered as part of undergraduate programmes in chemical
engineering. Also, for the courses on Chemical Engineering Mathematics or Applied
Mathematics in Chemical Engineering, this book can be used for the numerical solution aspects
of chemical engineering problems.
The computer programs are listed in C++. The author assumes that the students are at
least moderately familiar with the C++ language. In addition to the computer examples, there
are several much shorter examples appearing throughout the text. These shorter examples
usually illustrate a particular point by means of hand calculations. 33 sample programs in C++,
arranged by chapter, are presented in the Appendix and about 148 exercises (including chapterend exercises with answers) are solved. The numerical solutions of algebraic (linear and
nonlinear) and differential (ordinary and partial) equations encountered in subjects such as
General Chemical Engineering, Chemical Engineering Thermodynamics, Chemical Reaction
Engineering, and Heat Transfer are discussed using introductory but efficient numerical
methods. The students can also use the programs and build up their own programs to solve
specific Design Project problems in chemical engineering. The author feels that before using
chemical engineering software (which use advanced numerical methods), the students should
have some hands-on experience on small programs and introductory numerical methods as well
as their usage in chemical engineering. The experience gained from using these programs helps
in the development of basic understanding of numerical methods and confidence in handling
numerical techniques. Some problems whose analytical solutions are available are also solved
and the numerical and analytical results are compared. By changing various parameters the
student can find out the conditions under which correct results are obtained as well as those
under which correct results are not obtained.
For the solution of linear algebraic equations, the tridiagonal matrix algorithm (TDMA),
Gauss elimination, and GaussSeidel methods are discussed. For the solution of nonlinear
equation(s), Newtons method is discussed and for initial value problems in ordinary
differential equations the RungeKutta fourth order method is discussed. For the solution of
boundary value problems the Finite Difference method is used. The Finite Difference method
is a simple yet very powerful tool for the solution of boundary value problems, but requires
a structured grid. It is the basis for the Advanced Finite Volume and Finite Element methods.
In this book the following Finite Difference methods are discussed: Central Difference Scheme
(CDS) for discretization of diffusion terms, Upwind Difference Scheme (UDS) for
xi
xii
Preface
discretization of convection terms, Forward in Time and Central in Space (FTCS) difference
scheme for discretization of the one-dimensional transient conduction/diffusion equation
adopting the Explicit, Implicit and CrankNicolson methods, and the Alternating Direction
Implicit (ADI) method for the numerical solution of two-dimensional steady and transient heat
conduction.
Chapter 1 contains an introduction to the numerical solution of a system of linear
algebraic equations. The numerical solution of a single as well as two (simultaneous) nonlinear
algebraic equation(s) and the calculation of pressure drop in a pipe under nonlaminar
conditions, minimum fluidization velocity and terminal velocity are all discussed in Chapter
2. The numerical solution of computer-oriented problems in Chemical Engineering
Thermodynamics is discussed in Chapter 3. Various problems in vapourliquid and chemical
reaction equilibria are discussed. Vapourliquid equilibrium calculations are done for systems
following Raoults law, modified Raoults law, GammaPhi approach and PhiPhi approach.
The numerical solution of initial value problems in ordinary differential equations, along with
the initial value problems in double pipe heat exchanger and stirred tanks with coil heater, and
in batch, stirred and plug flow reactors are discussed in Chapter 4. The numerical solution of
boundary value problems in ordinary differential equations and convectiondiffusion problems
are discussed in Chapters 5 and 6 respectively. The numerical solution of tubular reactors with
axial dispersion and simultaneous chemical reaction and diffusion in spherical catalyst pellets
are discussed in Chapters 7 and 8 respectively. The numerical solution of one-dimensional
transient heat conduction/diffusion is discussed in Chapter 9, and that of two-dimensional
steady and transient heat conduction is discussed in Chapter 10. The Finite Difference method
is used for the solution of boundary value problems in Chapters 510.
The books referred to by the author for the preparation of class notes, on which the
contents of this book are principally based, is given in the Bibliography. The author expresses
his thanks to all those authors, too numerous to acknowledge individually. The author is
indebted to all his colleagues for many positive interactions and discussions and also to all his
friends for their constant appreciation, invaluable advice and encouragement. The author
would like to thank the Department of Science and Technology, New Delhi, for providing
partial financial support and Prof. S.N. Upadhyay, Director, Institute of Technology, Banaras
Hindu University, Varanasi, for providing the major part of the funds for the purchase of
Fluent 25 Users Perpetual License software in the Department of Chemical Engineering and
Technology, which proved immensely useful in the process of writing this book.
The author is also thankful to all his B.Tech. Chemical Engineering students who have
taken up the Computer Laboratory course and various computational and other chemical
engineering courses so enthusiastically and helped in many ways in developing this work.
Their inquisitive questions and enthusiasm towards the numerical solution of algebraic and
differential equations in chemical engineering inspired the author to create a work of this kind,
in which the numerical solution of various equations in chemical engineering is provided under
one cover. Feedback from students has critically guided the development and evolution of the
book, taking it from a handwritten collection of notes to the present form. The book is thus
dedicated to all his students. The author is grateful to Mr. Sudarshan Das, Mr. Abhjit Baroi
and Mr. Pankaj Manohar of PHI Learning for their cooperation.
Preface
xiii
The author is indebted and extremely thankful to his mother Kamla Ahuja, to his father
A.D. Ahuja, and his wife Preeti Bala Ahuja, for their care, help and understanding, as without
their support this work could never have been completed.
In spite of all efforts to the contrary, some errors might have crept into the book. The
author would be rather grateful if such errors are pointed out. He would also very much
appreciate any criticism or suggestion for improvement of the contents of the book from the
readers.
Pradeep Ahuja
Chapter 1
D
C
E
D
C
E
D
C
E
D
E
C0 D0
C0
Z
Z
Z
Z
E0 Z 0
D0 Z 0
F
F
F
F
F 0
F0
(1.1)
N linear algebraic equations can be written in the form Ax = d. The matrix A contains elements
on the diagonal (bi, i = 1 to N), sub-diagonal (ai, i = 2 to N), and super-diagonal (ci, i = 1 to
N 1), and thus is called a tridiagonal matrix. The algorithm for the solution of this sort of
linear algebraic equation is called the TriDiagonal Matrix Algorithm or the Thomas algorithm.
1
where a1 = 0, cN = 0
E Z
H K
(1.3a)
CK
(1.2)
(1.3b)
C K
where bi and gi are obtained by substituting Eq. (1.3b) into Eq. (1.2). Thus we get
E Z
C H D Z E Z
C
C E
D
Z
C
F CH
E Z
Thus
F C H
E
Z
C E
C E
D
D
C
C
C
(1.4)
HK
F CH
K
F CH
C E
D
C
CK
(1.5)
a1 = 0; therefore
b1 = b1
and
(1.6)
F
D
(1.7)
H
The algorithm for the solution of a tridiagonal set of linear algebraic equations is given below:
(i) Calculate bi and gi for i = 1 to N.
(ii) Calculate Z 0
(iii) Calculate Z
E Z
H 0 0 0
C0
HK
E Z
K
CK
. Since cN = 0, therefore xN = g N.
for i = N 1, N 2, , 3, 2, 1.
EXAMPLE 1.1
Solution
We have
Z
Z
Z
Z
Z
Z
Z
C D
H
F
D
C
D
H
C
H
C
H
C
C E
C
F CH
C
D
C E
C
F CH
C
D
C E
C
F CH
C
D
C E
C
u
H
C
H
C
H
F CH
C
D
C E
C
F CH
C E
C
F CH
C
D
C
Z
H
Z
E Z
H
C
u
Z
E Z
H
C
u
Z
E Z
H
C
u
Z
E Z
H
C
u
Z
E Z
H
C
Z
H
E Z
C
Program 1.1 uses the above method for solving the tridiagonal system of linear algebraic
equations and is given in the Appendix.
F
F
F
C
C
C
C
C
C
C F
C F
C F
(1.8)
C
Take the element a11 as the pivot. Multiply the first equation by and then add it to the
C
second equation, which then becomes
CC
CC
C
F
C
Z C
Z F
C
C
C
Thus x1 is eliminated from the second equation. Similarly, eliminate x1 from the third
C
and then adding it to the third equation.
C
At the end of the first stage the augmented matrix becomes
C
c
C
c
C
C F
c c
C F
c c
C F
(1.9)
C
C
c
C
C
c
C
cc
C
F
c
F
cc
F
(1.10)
c
C
and then
Now take the element a 2 as the new pivot. Multiply the second equation by
2
c
C
add it to the third equation. Thus x2 is eliminated from the third equation. At the end of the
second stage the augmented matrix becomes
The values of x1, x2, and x3 can be obtained by back substitution. The pivots should be chosen
in such a way that they are nonzero. Rows can be exchanged so that the pivot is nonzero. This
procedure is called partial pivoting.
EXAMPLE 1.2 Solve the following set of three linear algebraic equations in three variables
using the Gauss Elimination method:
Z Z Z
Z Z Z
Solution
Z Z Z
and then add it to the second equation. We get
and then add it to the third equation. We get
This completes the first stage. Multiply the second equation by
and then add it to the
third equation. We get
Z
u
10x1 + x2 + 2x3 = 44
Thus
Z
u
.
Program 1.2 uses the Gauss elimination method for solving a system of linear algebraic
equations and is given in the Appendix.
EXAMPLE 1.3 Solve the following set of three linear algebraic equations in three variables
using the Gauss Elimination method:
Z Z Z
Z Z Z
Solution
Z Z Z
and then add it to the second equation. We get
and then add it to the third equation. We get
Multiply the second equation by 0.3076923 and then add it to the third equation. We get
Z
.
3x1 + x2 2x3 = 9
Thus
Z
.
EXAMPLE 1.4 Benzene (1), toluene (2), styrene (3), and xylene (4) are to be separated in
the sequence of distillation columns shown in Fig. 1.1. Determine molar flow rates of streams
D1, B1, D2, and B2. The composition of the feed stream and the streams D1, B1, D2, and B2 is
shown in the figure. Also, determine the molar flow rates and compositions of streams B and
D. The molar flow rate of the feed stream is 70 mol/min.
D1
x1
x2
x3
x4
=
=
=
=
0.35
0.54
0.04
0.07
x1
x2
x3
x4
=
=
=
=
0.16
0.42
0.24
0.18
x1
x2
x3
x4
=
=
=
=
0.21
0.54
0.10
0.15
x1
x2
x3
x4
=
=
=
=
0.01
0.10
0.65
0.24
x1
x2
x3
x4
=
=
=
=
B1
0.20
0.40 70 mol/min
0.25
0.15
D2
B2
Fig. 1.1
Solution The material balance equations for benzene (1), toluene (2), styrene (3), and xylene
(4) are given below.
u
u
u
u
& $
$
Z $
Z$
& $
$
D = D1 + B1 = 43.75 mol/min.
Z $
& $
&
Z &
10
Z &
&Z& $Z$
&Z & $Z $
&Z & $Z $
11
EXAMPLE 1.5 Solve the following set of three linear algebraic equations in three variables
using the GaussSeidel method:
10x1 + x2 + 2x3 = 44
2x1 + 10x2 + x3 = 51
x1 + 2x2 + 10x3 = 61
Solution It can be seen that the coefficient of x1 is dominant in the first equation, and the
coefficient of x2 and x3 are dominant in the second and third equations, respectively. Thus
P
Z
P
P
Z Z
P
Z
P
P
Z Z
P
P
Z Z
Let us assume x2 = 0, x3 = 0. The initial values used will not affect the converged solution, but
will affect the number of iterations required for convergence.
First Iteration:
P
Z
Z
Z
Z
Second Iteration:
u
u
u
Z
u
Z
The final converged solution is x1 = 3, x 2 = 4, x3 = 5.
Z
Program 1.3 uses the GaussSeidel method for solving a system of linear algebraic equations
and is given in the Appendix.
EXAMPLE 1.6 Solve the following set of three linear algebraic equations in three variables
using the GaussSeidel method:
Z Z Z
Z Z Z
Z Z Z
12
Solution
Let us write the first, second and third equations in the form
P
Z
P
P
Z Z
P
Z
P
P
Z Z
P
Z
P
P
Z Z
Let us assume x2 = 0, x3 = 0.
First Iteration:
Z
Z
Z
Second Iteration:
u
u
Z
Z
The final converged solution is x1 = 3, x2 = 2, x3 = 1.
Z
Exercises
1.1
Z
Z
Z
Z
Z
Z
1.2
Solve the following linear algebraic equations using the Gauss elimination method:
2x1 x2 = 100
x1 + 2x2 x3 = 0
x2 + 2x3 x4 = 0
x3 + 2x4 x5 = 0
x4 + 2x5 x6 = 0
x5 + 2x6 x7 = 0
x6 + 2x7 x8 = 0
x7 + 2x8 = 200
Note that the augmented matrix for this problem is
(Ans: x1 = 111.11,
x6 = 166.66,
1.3
13
P
Z
P
Z
P
P
Z Z
P
Z
P
P
Z Z
P
Z
P
P
Z Z
P
Z
P
P
Z Z
14
P
P
Z Z
P
Z
P
P
Z Z
P
Z
x2 = 122.22, x3 = 133.33, x4 = 144.44, x5 = 155.55,
x7 = 177.77, x8 = 188.88)
P
Z
(Ans: x1 = 111.11,
x6 = 166.66,
1.4
Solve the following linear algebraic equations using the Gauss elimination method:
4x1 + 2x2 + x3 = 11
x1 + 2x2 = 3
2x1 + x2 + 4x3 = 16
Note that the augmented matrix is
(Ans: x1 = 1,
1.5
x2 = 2,
x3 = 3)
Solve the linear algebraic equations of Problem 1.4 using the GaussSeidel method:
Note that for GaussSeidel to converge the equations are expressed in the form
P
Z
P
P
Z Z
P
Z
P
Z
P
P
Z Z
x3 = 3)
P
Z
(Ans: x1 = 1,
1.6
x2 = 2,
Solve the following linear algebraic equations using the Gauss elimination method:
Z Z Z
Z Z Z
(Ans: x1 = 1.2857,
Z Z Z
x2 = 1.9286, x3 = 2.8571)
1.7
15
Solve the linear algebraic equations of Problem 1.6 using the Gauss-Seidel method:
Note that for GaussSeidel to converge the equations are expressed in the form
P
Z
P
P
Z Z
P
Z
P
P
Z Z
P
P
Z Z
x2 = 1.9286, x3 = 2.8571)
P
Z
(Ans: x1 = 1.2857,
1.8
Solve the following linear algebraic equations using the Gauss elimination method:
6
6
6
6
6
6
6
6
6
Note that for using the Gauss elimination method the equations have to expressed
in the form of augmented matrix as
(Ans: T1,1 = 47.14, T1,2 = 91.25, T1,3 = 182.86, T2,1 = 57.32, T2,2 = 115.00,
T2,3 = 220.18, T3,1 = 47.14, T3,2 = 91.25, T3,3 = 182.86)
16
1.9
Solve the following linear algebraic equations using the GaussSeidel method:
6 6 6
6 6
6 6
6 6
6 6
6
6
6
6
6
6
6
6
6 6
6 6
6 6
6
6 6 6
Note that for GaussSeidel to converge the equations are to be expressed in the
form
6 P
6P 6 P 6 P
6P 6 P
6P 6 P 6 P
6P 6 P 6 P 6 P
P
6
P
6
(Ans: T1,1
T2,3
6P 6 P 6 P
P
6
6 P
6 P
6 P
6 P
6P 6 P
6 P
P
P
6 6
P
P
P
6 6 6
P
P
6 6
= 47.14, T1,2 = 91.25, T1,3 = 182.86, T2,1 = 57.32, T2,2 = 115.00,
= 220.18, T3,1 = 47.14, T3,2 = 91.25, T3,3 = 182.86)
Chapter 2
ZP
H
Hc
(2.1)
where xn is the value of x at the start of the iteration and xn+1 is the updated value after the
iteration. First an initial value of x is assumed, and the function value and its derivative are
determined at this assumed value. The assumed value is updated by using Newtons formula,
and again the function value and its derivative are determined at this new value of x (see
Fig. 2.1). The value of x is again updated and the procedure is repeated till there is no change
in the previous and updated values of x. By taking different starting (old) values, different roots
can be obtained, if more than one real root occurs. Note that when the root is obtained, there
is no change in the value of x. That is, xn+1 = xn, which implies f = 0, which is the required
condition, that function value should become zero at the root. Note that Newtons method
works only if, at f = 0, the derivative of the function is not zero. In Fig. 2.1, the function value
becomes zero at the root xs. In this case the starting value is taken to be x1.
The algorithm of Newtons method is:
(i) Take an initial value of xn,
FH
(ii) Calculate f and H c
at the value of xn,
FZ
H
(iii) Calculate the new value of x, using Z P Z P ,
Hc
P
P
(iv) Check if Z Z F ; if yes, stop, else
17
18
(v) Make xn = xn+1 and go to Step (ii) and repeat the procedure till the condition stated
in (iv) is satisfied. e is the convergence criterion and may be of the order of 106.
f
f1
f2
f3
0
x1
x2
Fig. 2.1
x3
xs
The derivation of Newtons formula is presented below. Let a nonlinear algebraic equation be
represented as f (x) = 0. Let us start with an initial guess x0 of the solution and let us assume
that it is close to the actual solution xs. We make a Taylor series to approximate f(x) in the
vicinity of x0 as follows:
H Z
H Z
FH
FZ
Z Z F H Z Z
FZ
Z
"
Z
At the solution, H
Z 5 = 0 and the Taylor series yields
H Z
FH
FZ
Z
Z
F H
FZ
Z5 Z Z5 Z
Z
"
Z5 Z "
In this case, as long as the first derivative is nonzero at x0, we obtain a reasonable
approximation of the solution, x1, from the rule
H Z
FH
FZ
Z
(2.2)
Successive application of this rule yields Newtons method for solving a single nonlinear
algebraic equation in the form
P
Z
H c Z
H ZP
19
where f denotes the derivative of the function with respect to x. The iterations are stopped
when the previous and updated values of x are less than eabs, that is
Z P Z P F CDU
(2.3)
Z P Z P
F TGN
Z P
(2.4)
or
Consider that the real roots of the equation x3 2x2 x + 2 = 0 have to be determined.
Different roots are obtained by taking different starting values of x. Newtons method
discussed here determines only the real roots. For the above equation the starting values taken
and the corresponding roots are listed in Table 2.1.
Table 2.1
Starting value
4.0
1.5
0.5
0.25
0.0
1.0
2.0
4.0
100.0
2.0
1.0
1.0
1.0
2.0
1.0
1.0
1.0
1.0
100.0
2.0
Thus the three roots on which the solution converges are (2, 1, 1). Various iterations in
Newtons method to determine the real root of the equation x3 2x2 x + 2 = 0 with starting
value x = 4 are listed in Table 2.2.
Table 2.2
Iteration number
Starting point
1
2
3
4
5
6
7
4.0
2.92857
2.38803
2.10969
2.01297
2.00022
2.00000
30.0
7.03533
1.82478
0.37852
0.03959
0.00066
0.00000
28.0
13.01529
6.55594
3.91362
3.10426
3.00176
3.00000
P
4
P
Z
2.92857
2.38803
2.10969
2.01297
2.00022
2.00000
2.00000
H
Hc
20
EXAMPLE 2.1
With an initial value of 0.5, it can be checked that the solution is 0.201640.
F &
NQI
4G H
H
(2.7)
For the laminar conditions the friction factor can be easily determined. But for nonlaminar
conditions the Colebrook equation has to be solved using Newtons method as described in the
example below.
EXAMPLE 2.2 Air at 25C and 1 atm flows through a 4 mm diameter tube with an average
velocity of 50 m/s. The roughness is e = 0.0015 mm. Calculate the friction factor using the
Colebrook equation
F &
NQI
4G H
H
Determine the pressure drop in a 1 m section of the tube using the relation
H.8 S
&
3
Density of air at 25C and 1 atm is 1.23 kg/m and viscosity is 1.79 105 kg/m-s.
'2
Solution
We have
F
&
S8&
N
4G
u u u
u
21
Thus
NQI
H
H
or
u
NQI u
H
u
NQI u
H
H
The derivative of the function with respect to the friction factor is given by
(c
H
Using Newtons method, we get f = 0.0291. Under these conditions the pressure drop in a 1 m
section of the pipe is given by
'2
u u u
N/m2 = 11.19 kPa
u
Program 2.1 for calculating the pressure drop in a pipe under nonlaminar conditions is given
in the Appendix.
'2
N X'. F
S X '. F
GU F R
GU F R
F
F
(2.8)
where n is the superficial velocity of the fluid, dp is the particle diameter, fs is the sphericity
of the particle, e is the voidage in the packed bed, and DP is the pressure drop across the
packed bed of length DL . r and m are respectively the density and viscosity of the fluid. At
the point of incipient fluidization the force obtained from the pressure drop across the fluidized
bed (DP A) is equal to the gravitational force exerted by the mass of the particles minus the
buoyancy force. If Lmf is the height of the packed bed at the point of minimum fluidization
22
and emf is the voidage of the packed bed at minimum fluidization, then the total volume of the
bed at minimum fluidization is Lmf A and thus the volume of solids at minimum fluidization
is Lmf A(1 emf). The gravitational force of the particles minus the buoyancy force is given
by volume of the solid particles (rp r)g. Thus at minimum fluidization conditions
'2 u #
.OH # F OH S R S I
(2.9)
or
'2
.OH
F OH S R S I
(2.10)
Substituting this value in the Ergun equation for packed bed, we get
N F
S F OH
OH
XOH F OH S R S I
XOH
F OH
F OH
GU F R
GU F R
(2.11)
The real roots of the minimum fluidization velocity can be obtained using Newtons
method.
EXAMPLE 2.3 Solid particles having a diameter of 0.12 mm, shape factor fs = 0.88, and
a density of 1000 kg/m3 are to be fluidized using air at 2.0 atm and 25oC. The
voidage at minimum fluidization is 0.42. The viscosity of air under these conditions is
1.845 105 kg/m-s. The molecular weight of air is 28.97.
Solution
2/
46
u u u
u
kg/m3
N F
S F OH
OH
XOH F OH S R S I
XOH
F OH
F OH
GU F R
GU F R
S F OH
N F OH
H c
XOH
F OH
GU F R
F OH
GU F R
Starting with an initial value of nmf = 0.1 m/s, the converged value is nmf = 0.0046 m/s.
Program 2.2 for calculating the minimum fluidization velocity is given in the Appendix.
23
FX R
(I (D (&
FV
Gravitational force minus the buoyancy force on the particle is given by
(I (D
8R S R S I
SR
SR S I
(2.12)
(2.13)
where VP is the volume of the particle and m is the mass of the particle.
FD
Fg Fb = (rp r)Vpg
Fig. 2.2
The terminal velocity or free settling velocity is a constant velocity fall and is given when
FX R
FV
; thus
CD is given by % &
(I (D
(&
(& # R
. Thus Eq. (2.14) becomes
S XV
O
S R S I S #R%& XV
SR
(2.14)
(2.15)
where Ap is the projected area of the particle on a plane at right angles to the direction of
motion and nt is the terminal velocity of the falling particle. As the velocity of particle rises
the drag force also increases till the drag force balances the (gravitational buoyancy) force.
Thus,
XV
I S R S O
S R #R% & S
24
Q
F SR
R
#R
TR
Q F
R
Thus for spherical particles the expression for terminal velocity becomes
S R S IF R
(2.16)
% S
&
For laminar flow (Rep < 1), that is, in the Stokes law region
%&
4G R
(2.17)
S XF R
. We get the
following expression for terminal settling velocity in the laminar flow regime
IF S R S
R
(2.18)
N
For turbulent flow, CD = 0.44 (Rep > 1000 to 2 105). But for intermediate values of the
particle Reynolds number, there are many correlations. The Schiller and Nauman correlation
is applicable for Rep < 800 and is given by
%&
4G
R
4G R
(2.19)
The terminal velocity for the case of intermediate values of particle Reynolds number is
determined using the following steps:
(i) A value of terminal velocity is assumed.
(ii) At the assumed value the particle Reynolds number is calculated and thereafter CD
is determined.
(iii) The terminal velocity is recalculated using X
S R S IF R
% S
&
If the assumed value and recalculated values are different, the new calculated value becomes
the starting value for the next iteration. The procedure is repeated till the absolute value of the
difference between the new value and the previous value of the terminal velocity in an iteration
is negligible.
25
EXAMPLE 2.4 Oil droplets of diameter 2 mm are to be settled from air at 25C and 1 atm.
The density of oil is 900 kg/m3. Calculate the terminal settling velocity of the particles. For
air at these conditions, m = 1.85 105 kg/m-s. CD is given by
%&
4G
R
4G R
Solution The following data are given: dp = 2 103 m, m = 1.85 105 kg/m-s. The density
of air under the given conditions is given by
2/
46
u u
u
kg/m3
SI XV F R
N
u XV u u
u
XV
Rep
CD
nt
0.03
1.5
4.9
6.2
3.83
191.35
625.0
790.0
8.63
0.82
0.52
0.47
1.5
4.9
6.2
6.47
6.47
825.38
0.47
6.52
H Z Z Z ! Z 0
H Z Z Z ! Z 0
"
H 0 Z Z Z ! Z 0
26
> Z
Z " Z 0 @
Z
f (x) = 0
We use a Taylor series expansion to obtain Newtons method, representing the ith function in
the vicinity of the current estimate xn as
HK Z
P
P
K
K
ZHO ZO ZO ZO ZO ZO HZ R Z R Z PR
"
O
O R
HK Z P
ZP
ZP
Assuming that xn is sufficiently close to the true solution xS, we can drop the quadratic and
higher order terms
0
P
K
ZHO Z5 O ZO
O
HK Z P
ZP
For convenience we collect the first partial derivatives into the N N Jacobian matrix
H
Z
KO
(2.20)
P
P
,KO ZO
O
| HK Z P
or
0
P
P
,KO 'ZO
O
P
ZO
HK Z P
(2.21)
H ZP
(2.23)
(2.24)
Let us consider two nonlinear equations f1(x1, x2) and f2(x1, x2). To start the iteration, some
initial values of x1 and x2 have to be assumed. The change in the values of x1 and x2 are
determined using Eq. (2.23).
Z
H
H
Z
'Z
'Z
H
H
H
(2.25)
27
Now we have to find the inverse of the Jacobian matrix. The inverse of a nonsingular
2 2 matrix #
C
C
C
is given by #
C
C
FGV # C
C
. Thus Eq. (2.25) can be
C
written as
'Z
'Z
where
H
Z
& H
Z
&
Thus
'Z
H
Z H
H H
Z
(2.26)
H H
H H
Z Z Z Z
(2.27)
H
H
H
Z
Z
&
(2.28)
H
and
H
H
H
Z
Z
(2.29)
'Z
&
The algorithm for solution of two simultaneous nonlinear algebraic equations is given below:
H
H H H
H
,
,
, and
,
Z Z Z
Z
EXAMPLE 2.5
equations:
Obtain the values of x and y that satisfy the following two nonlinear algebraic
H Z [ G Z Z[
I Z [ UKP Z[ Z [
Solution
H
Z
H
[
GZ [
Z
28
I
Z
I
[
[ EQU Z[
Z EQU Z[
I Z [
H
Z
H
[
I
Z
I
[
G Z Z[
UKP Z[ Z [
G Z [
Z
[ EQU Z[
Z EQU Z[
&
'Z
'[
H I H I
Z [ [ Z
H
I
I H
[
[
&
I
H
H
I
Z
Z
&
y
0.5
0.1
1.5
0.03036 1.0406
0.0615
0.00086 0.9685
2.0406
Dx
Dy
1.1
0.9696
2.0115
0.0295 0.0721
0.99914 1.9676
0.00088 0.0307
0.9992
1.9992
1.9992
0.0008
29
The solution of the given nonlinear algebraic equations is x = 0 and y = 1. Note that when
f = 0 and g = 0 the solution is obtained.
Program 2.4 for the solution of the above two simultaneous nonlinear equations is given in the
Appendix.
EXAMPLE 2.6
equations:
Modify Program 2.4 to solve the following system of two nonlinear algebraic
H Z Z Z Z
H Z Z
Solution
Z Z
H
Z
Z
Z
H
Z
Z CPF
H
Z
Z
Exercises
2.1
2.2
Air at 25C and 1 atm flows through a 4 mm diameter tube with an average velocity
of 25 m/s. The roughness is e = 0.0015 mm. The friction factor is given by
H
F &
NQI
4G H
Determine the pressure drop in a 1 m section of the tube using the relation
'2
H.8 S
&
The density of air at 25C and 1 atm is 1.23 kg/m3 and the viscosity is
1.79 105 kg/m-s.
(Ans: f = 0.03467, DP = 3.33 kPa)
2.3
Solid particles having a diameter of 0.05 mm, shape factor fs = 0.88, and density
of 1000 kg/m3 are to be fluidized using air at 2.0 atm and 25C. The voidage
at minimum fluidization is 0.39. The viscosity of air under these conditions is
1.845 10-5 kg/m-s. The molecular weight of air is 28.97.
(Ans: 0.000611 m/s)
30
2.4
Solve Exercise 2.3 for solid particles having a diameter of 0.25 mm. The voidage
at minimum fluidization is 0.48.
(Ans: 0.0327 m/s)
2.5
Oil droplets of diameter 0.2 mm are to be settled from air at 25C and 1 atm. The
density of oil is 900 kg/m3. Calculate the terminal settling velocity of the particles.
Viscosity of air under these conditions is 1.85 105 kg/m-s. CD is given by
4G
%&
R
4G R
(Ans: 0.6462 m/s)
2.6
Chapter 3
Chemical Engineering
Thermodynamics
The calculation of molar volume using the van der Waals, RedlichKwong, and Peng
Robinson cubic equations of state at the given temperature and pressure is discussed first in
this chapter. After this, bubble point, dew point, and flash calculations using Raoults and
modified Raoults law are discussed. The determination of vapour pressure at the given
temperature for a pure substance following a cubic equation of state is thereafter discussed.
The determination of system pressure and vapour phase composition at the given temperature
and liquid phase composition is discussed using the gammaphi [ 2G Z H H and phiphi
[K 2GK8 ZK 2GK. approaches. The solution of two simultaneous chemical reactions in
equilibrium in the homogeneous phase and the calculation of adiabatic flame temperature are
also discussed in this chapter.
8 D
(3.2)
8 8
2
2
2
where
4 6E
and D
2E
31
46E
2E
32
46 C
CD
8 D
. At the given temperature and
8 8
2
2
2
pressure and given critical properties of the substance, the only unknown in this equation is
the molar volume V. The derivative of the function f with respect to the molar volume is given
by
46
C
H c 8 D
(3.3)
8
2
2
A value of molar volume is assumed. At the assumed molar volume the value of the
function f and its derivative f are determined and the new molar volume is determined using
Newtons method [see Eq. (2.1)]
8 P
8P
H
Hc
(2.1)
Thereafter, the new molar volume becomes the old molar volume, and f and f are determined
again at this molar volume. The procedure is repeated till there is a very meagre change
between the new and old molar volumes, that is, 8 P 8 P .
The Redlich-Kwong equation of state is
46
C
8 D 6 8 8 D
(3.4)
8
where
46 D46
C
CD
8 D
8
2
2
62
62
4 6E
2E
and
(3.5)
46E
.
2E
46 D46
C
CD
. At the given
8 D
8
2
2
62
62
temperature and pressure and given the critical properties of the substance, the only unknown
in this equation is the molar volume, V. The derivative of the function f with respect to the
molar volume is given by
8
46
D46
C
8 D
2
2
62
The PengRobinson equation of state is
H
8
(3.6)
46
C
8 D 8 D8 D
(3.7)
8 D
8 D
D
8 D
2
2
2
2
2
(3.8)
46E
2E
33
6
O
6E
46E
2E
46 46D C
46 CD
8 D
8 D
D
8 D
2
2
2
2
2
At the given temperature and pressure and given critical properties of the substance the only
unknown in this equation is the molar volume V. The derivative of the function f with respect
to the molar volume is given by
H
46
46D C
H c 8 D
8 D
2
2
2
(3.9)
EXAMPLE 3.1 Calculate the molar volume of saturated liquid water and saturated water
vapor at 100C and 101.325 kPa using van der Waals, RedlichKwong and PengRobinson
cubic equations of state. For water: TC = 647.1 K, PC = 220.55 bar, and w = 0.345.
Solution Program 3.1 for calculating the molar volume at the given temperature and pressure
using various cubic equations of state is given in the Appendix. The result obtained from the
program is given below.
Saturated liquid volume using PengRobinson equation of state = 2.25 105 m3/mol
Saturated vapour volume using PengRobinson equation of state = 0.030352 m3/mol
Saturated liquid volume using RedlichKwong equation of state = 2.64 105 m3/mol
Saturated vapour volume using RedlichKwong equation of state = 0.030400 m3/mol
Saturated liquid volume using van der Waals equation of state = 3.90 105 m3/mol
Saturated vapour volume using van der Waals equation of state = 0.030469 m3/mol.
34
2 Z 2UCV Z 2UCV
#
we get
$
6 %
(3.11)
$
$
2 Z GZR #
Z GZR #
(3.12)
6 %
6 %
In the above equation the Antoine parameters, system pressure and liquid composition are
given. The only unknown is the temperature. The derivative of the function f with respect to
temperature is given by
H
Hc
Z 2UCV $
6 %
Z 2UCV $
6 %
(3.13)
A value of temperature is assumed. At the assumed temperature the value of function f and its
derivative f are determined and the new temperature is determined using [see Eq. (2.1)]
H
6 P 6 P
(2.1)
Hc
Thereafter the new temperature becomes the old temperature and again at this temperature, f
and f are determined. The procedure is repeated till there is a very meagre change between
the new and old temperatures, that is, 6 P 6 P . This equation can also be written as
6 P 6 P
.
P
6
$
%
# NP 2
(3.14)
Z 2UCV
and [
2
Z 2UCV
.
2
35
[
[
UCV UCV
2 2
2
#
$
, we get
6 %
(3.15)
$
$
[ GZR #
[ GZR #
(3.16)
2
6 %
6 %
Here in this equation the Antoine parameters, system pressure and vapour composition are
given. The only unknown is the temperature. The derivative of the function f with respect to
temperature is given by
H
Hc
[ $
2UCV
6 %
[ $
2UCV
(3.17)
6 %
A value of temperature is assumed. At the assumed temperature the value of the function f and
its derivative H c are determined and the new temperature is determined using
6 P
6P
H
Hc
Thereafter, the new temperature becomes the old temperature and f and H c are determined
again at this temperature. The procedure is repeated till there is a very meagre change between
the new and old temperatures, that is, 6 P 6 P . This equation can also be written as
6 P 6 P
[ 6 UCV .
. The assumed temperature is calculated from the relation 6 P
P
6
[
[
Once the temperature that satisfies the equation
UCV is determined, the liquid
UCV
2 2
2
[ 2
[ 2
and Z
.
phase composition can be determined using Z
UCV
2
2UCV
EXAMPLE 3.2 Calculate the bubble point and dew point temperatures for the acetone (1)
water (2) system at 101.325 kPa for feed composition z1 = 0.5. Assume the system to follow
Raoults law.
Solution Program 3.2 for calculating the bubble and dew point temperatures for a system
following Raoults law is given in the Appendix. The result obtained from the program is
bubble point temperature = 71.81C, dew point temperature = 87.08C.
36
temperatures or at the given temperature, if the pressure lies between the dew point and bubble
point pressure, both liquid and vapour exist. In this section we shall determine the equilibrium
liquid and vapour phase compositions if the temperature, system pressure and feed composition
are given. The overall composition is denoted by zi and L and V denote the amount of moles
in the liquid and vapour phases respectively. Let the initial total number of moles before
flashing be 1. The distribution coefficient (Ki) for a species is defined as its composition in the
vapour phase divided by its composition in the liquid phase. We can write for a particular
species that
-
[
Z
(3.18)
2 UCV
; therefore, if the temperature and the pressure
2
of the system are given, then the K values of all the components can be calculated. The
composition of the vapour in terms of Ki and feed composition is given by
For a system following Raoults law, -
-\
8 8K
(3.19)
K
\
8 8K
(3.20)
K
[ 8 8K
(3.21)
Z 8 8-
3.22)
\
[ Z 8 8K
(3.23)
The function has to be formulated in such a way that its required value is zero. In this equation
the only unknown is V, which is the number of moles in the vapour phase per unit mol fed
to the system. The derivative of the function with respect to V is given by
Hc
\
8 8-
K
(3.24)
A value of V is assumed. At the assumed V the value of the function f and its derivative f
are determined and the new V is determined using
8 P
8P
H
Hc
37
Thereafter, the new V becomes the old V and again at this V the function f and its derivative
f are determined. The procedure is repeated till there is a very meagre change between the
new and old values of V, that is, 8 P 8 P . Once V is determined, the vapour and
liquid phase composition can be determined.
EXAMPLE 3.3 Calculate the compositions of the liquid and vapour phases for the acetone
(1)acetonitrile (2)nitromethane (3) system. The feed composition is z1 = 0.3, z2 = 0.3 and z3
= 0.4. At the given temperature, 2UCV 195.75 kPa, 2UCV 97.84 kPa, and 2UCV 50.32 kPa.
The pressure of the system is 100 kPa. Assume the system to follow Raoults law.
Solution Program 3.3 for calculating the composition of the liquid and vapour phases under
flash conditions for a system following Raoults law is given in the Appendix. The result
obtained from the program is given below: x1 = 0.25057, y1 = 0.490491, x2 = 0.301341,
y2 = 0.294832, x3 = 0.44561, y3 = 0.224231. The number of moles in vapour phase is 0.206026.
ZH 2UCV
(3.25)
[ 2
Z H 2
(3.26)
UCV
The activity coefficients can be determined using various models. In the present case the
Wilson model is used, because for a given system the activity coefficients can be determined
as a function of the temperature and the liquid composition. The Wilson parameters are given
by
/
8
C
GZR
46
8
(3.27)
/
8
C
GZR
46
8
(3.28)
NP H
/
/
NP
Z Z / Z
Z Z / Z Z /
(3.29)
NP H
/
/
NP
Z Z / Z
Z Z / Z Z /
(3.30)
38
(ii) Calculate the vapour pressure of the components at the given temperature.
(iii) Calculate the activity coefficients at the given temperature and liquid composition.
(iv) Calculate the bubble point pressure using the relation 2 ZH 2UCV ZH 2UCV
Calculation of bubble point temperature
(i) Enter the pressure and the liquid composition
(ii) At the given pressure, calculate the saturation temperature of the components and the
assumed temperature using 6 P
6Z 6 UCV .
K
(iii) At the assumed temperature, calculate the vapour pressure of the components and the
activity coefficients.
(iv) Update the vapour pressure of Component 1 using the relation
2
2UCV
ZH ZH
2UCV
2UCV
(v) From the updated value of 2UCV , calculate the temperature using
$
# NP 2UCV
%
(vi) Go to Step (iii) and repeat the procedure till convergence in temperature is obtained.
Calculation of dew point pressure
(i) Enter the temperature and the vapour composition.
(ii) Calculate the vapour pressure of the components at the given temperature.
(iii) Initially assume the activity coefficients to be one and calculate the system pressure
using
2
[
[
UCV
UCV
H 2
H 2
(iv) Calculate the liquid composition using Z
(v) Update the liquid composition using x1
[ 2
UCV
H 2
and Z
x1
and x 2
x1 x 2
[ 2
UCV
H 2
1 x1 .
39
[
[
UCV
UCV
H 2
H 2
(ix) Go to Step (iv) and repeat the procedure till convergence in the pressure is obtained.
Calculation of dew point temperature
(i) Enter the pressure and the vapour composition.
(ii) At the given pressure, calculate the saturation temperature of the components and the
assumed temperature using 6 P
g1 = g2 = 1.
(iii) At the assumed temperature, calculate the vapour pressure of the components.
(iv) Calculate the liquid composition using Z
(v) Update the liquid composition using Z
[ 2
UCV
H 2
and Z
[ 2
UCV
H 2
Z
and x2 = 1 x1.
Z Z
6
NP 2UCV
6
where the temperature is in C and the vapour pressure in kPa. The parameters in the Wilson
equation are: a12 = 437.98 cal/mol and a21 = 1238 cal/mol. The molar volume of the
components is V1 = 76.92 cm3/mol and V2 = 18.07 cm3/mol. Assume the system to follow the
modified Raoults law.
(i) Calculate the bubble point pressure at 100C and x1 = 0.5.
(ii) Calculate the bubble point temperature at 101.325 kPa and x1 = 0.5.
40
(iii) Calculate the the dew point pressure at 100C and y1 = 0.5.
(iv) Calculate the dew point temperature at 101.325 kPa and y1 = 0.5.
Solution Program 3.4 for the bubble point and dew point calculations for a system following
the modified Raoults law is given in the Appendix. The result obtained from the program is
given below: (i) 204.264 kPa, (ii) 80.93C, (iii) 184.10 kPa, and (iv) 83.82C.
(v) Record the bubble point pressure (Pbubble) and the activity coefficients (g 1b and g 2b).
(vi) For the calculation of the dew point pressure (total feed as vapour), first assume the
activity coefficients to be1.
.
[
[
UCV
UCV
H 2
H 2
(viii) Calculate the liquid phase compositions using Z
(vii) Calculate the pressure using 2
[ 2
and Z
UCV
H 2
[ 2
.
UCV
H 2
Z
and x2 = 1 x1.
Z Z
.
[
[
UCV
UCV
H 2
H 2
(xiii) Go to step (viii) and repeat the procedure till convergence in pressure is obtained.
(xiv) Store the dew point pressure (Pdew) and the activity coefficients (g 1d and g 2d).
41
(xv) Enter the pressure between the bubble point and dew point pressures.
(xvi) The assumed number moles in vapour phase is calculated using 8
2DWDDNG 2
.
2DWDDNG 2FGY
g 1 is calculated using
H
2 2FGY H D H F
H F .
2DWDDNG 2FGY
g 2 is calculated using
H
2 2FGY H D H F
H F .
2DWDDNG 2FGY
H 2
UCV
(xix) Calculate -
and -
H 2
(xx) Calculate [
- \
and [
8 8-
(xxi) Calculate Z
[
and Z
-
UCV
- \
.
8 8-
[
.
-
[ Z [ Z .
\
8 8-
K
(xxiv) 8 P
8P
H
.
Hc
(xxv) Go to Step (xx) and repeat the procedure till convergence in V is obtained.
(xxvi) Calculate g1 and g2.
(xxvii) Go to Step (xix) and repeat the procedure till convergence in activity coefficients is
obtained.
EXAMPLE 3.5 Calculate the composition of the liquid and vapour phases for the system
acetone (1)water (2) at 100oC and 200 kPa. The feed composition is z1 = 0.3. The Antoine
equations of the components are given by
NP 2UCV
6
NP 2UCV
6
where the temperature is in C and the vapour pressure in kPa. The parameters in the Wilson
equation are: a12 = 292.66 cal/mol and a21 = 1445.26 cal/mol. The molar volume of the
components is V1 = 74.05 cm3/mol and V2 = 18.07 cm3/mol. Assume the system to follow the
modified Raoults law.
42
Solution Program 3.5 for calculating the composition of the liquid and vapour phases under
flash conditions for a system following the modified Raoults law is given in the Appendix.
The result obtained from the program is: bubble point pressure = 310.47 kPa, dew point
pressure = 142.80 kPa. The system pressure chosen is 200 kPa and after convergence the
number of moles in the vapour phase is 0.546235. x1 = 0.045019 and y1 = 0.511817.
H. H8
, stop.
H8
2QNF
H.
, and go back to Step (ii) and repeat
H8
H
2
8 D
2D
C
NP
< NP <
46 D46 8 D
(3.31)
8. D
C
. 2D
< NP <
NP
46 D46 8 . D
where
<.
28 .
46
(3.31a)
88 D
C
8 2D
< NP <
NP
46 D46
88 D
8
where
43
(3.31b)
28 8
46
<8
EXAMPLE 3.6 Calculate the vapour pressure of water at 100C using the PengRobinson
cubic equation of state. For water: TC = 647.1 K, PC = 220.55 bar, and w = 0.345.
Solution Program 3.6 for calculating the vapour pressure using the cubic equation of state
is given in the Appendix. The vapour pressure of water at 100C as obtained from the program
is 96071.375 Pa.
(3.32)
ZH H
8
(3.33)
[ 2G ZH H
At the given temperature and liquid phase composition, the equilibrium pressure and the
vapour composition are determined. Then again at the same temperature and at a different
liquid phase composition, the equilibrium pressure and vapour composition are determined.
This is used to generate the Pxy diagram at the given temperature.
The algorithm is given below.
(i) Read T, x1, Tc1, Pc1, Tc2, Pc2, w1, w2, ZC1, ZC2, 2UCV , 2UCV .
(ii) x2 = 1 x1.
(iii) At the given temperature and liquid phase composition, calculate the activity
coefficients g1 and g2.
(iv) At the given temperature, calculate B11, B22, B12 and d12.
(v) Calculate the initial value of the total pressure using 2 ZH 2UCV ZH 2UCV (only to
start the solution do we assume the modified Raoults law to be true) and the
ZH 2UCV
ZH 2UCV
and [
.
2
2
(vi) At the total pressure, calculate the fugacity of the pure liquid species 1(f1) and 2(f2)
at the given temperature and calculated pressure, using the relation
composition in vapour phase using the relation [
$ 2 UCV
2 UCV GZR
46
KK
8 . 2 2 UCV
GZR
46
44
(vii) Calculate the fugacity coefficient of the species 1( G ) and 2( G ) in the vapour phase.
(viii) Calculate -
(ix) Calculate 5
H H
G 2
and -
H H
G 2
- u Z - u Z .
- u Z
- u Z
and [
. Go to Step (vii) and repeat the procedure
5
5
till dS < e. (This is because the composition of the vapour phase has changed and
therefore the fugacity coefficients of the species in the vapour phase get changed.)
(x) Calculate [
ZH H ZH H
and calculate the new
G
G
ZH H
ZH H
compositions in the vapour phase using [
and [
. Go to Step
G 2
G 2
(vi) and repeat the procedure till dP < e.
EXAMPLE 3.7 Consider the methanol (1) water (2) system in vapourliquid equilibrium.
The temperature of the system is 100C and the liquid phase composition is x1 = 0.958.
Determine the system pressure and the vapour phase composition. Use the GammaPhi
approach. The Antoine equations of the components are given by
NP 2UCV
6
NP 2UCV
6
where temperature is in C and vapour pressure in kPa. The parameters in the Wilson equation
are: a12 = 107.38 cal/mol and a21 = 469.55 cal/mol. The molar volume of the components is
V1 = 40.73 cm3/mol and V2 = 18.07 cm3/mol. Tc1 = 512.6 K, Pc1 = 80.97 bar, w1 = 0.564,
Zc1 = 0.224, Tc2 = 647.1 K, Pc2 = 220.55 bar, w2 = 0.345, Zc2 = 0.229.
Solution Program 3.7 for Pxy calculations using the GammaPhi approach is given
in the Appendix. The result obtained from the program is given below: pressure = 344930.59
Pa and y1 = 0.980694.
NP G.
D
< . D. NP < . 2D
46
Z C Z C
C.
D 46
C
2D
D
46
. NP
D
2D .
< .
46
<.
45
(3.34)
[ C [ C
C8
D 46
8
D
< 8 D8 NP < 8 2D
46
NP G8
2D
D
46
8 NP
D
2D8
8
<
46
<8
(3.35)
NP G.
Z C Z C
C.
D 46
C
D
< . D. NP < . 2D
46
2D
D
46
. NP
D
2D .
.
<
46
<.
(3.36)
[ C [ C
C8
D 46
8
D
< 8 D8 NP < 8 2D
46
8
NP G
where
2D
D
46
8 NP
D
2D8
< 8
46
<8
(3.37)
C.
Z C Z C Z Z C
(3.38)
D.
ZD Z D
(3.39)
C8
[ C [ C [ [ C
(3.40)
D8
[D [ D
(3.41)
<.
28 .
46
(3.42)
46
28 8
46
For a binary VLE mixture the phase equilibrium equations are
<8
[ 2 G8
Z 2 G.
(3.43)
(3.44)
8
(3.45)
[ 2 G Z 2 G.
and variables are T, P, x1, and y1. Thus, if any two variables (T or P, x1 or y1) are specified
the other two can be determined.
Since the compositions of the liquid and vapour phases are different, a and b for each
phase are different. Calculate a and b for the liquid phase and then ZL and VL (the smallest
root), and a and b for the vapour phase and then ZV and VV (the largest root). The molar volume
is calculated by solving the cubic form of the PengRobinson equation of state. The algorithm
for the calculation of the bubble point pressure and the vapour phase composition at the given
temperature and the liquid phase composition for a binary mixture using the cubic equations
of state is given below.
Z C Z C Z Z C and D . ZD Z D .
(v) Assume some pressure (P) and composition in the vapour phase y1 (assume y1 greater
than x1 if component 1 is the more volatile component).
(vi) Using Newtons technique, calculate VL using aL, bL, x1, x2. Take Vold = bL because
28 .
the liquid phase molar volume is to be calculated. From VL, calculate < .
46
(compressibility factor in the liquid phase).
(vii) Calculate the fugacity coefficient of the components G. and G. in the liquid
mixture.
8
(viii) Calculate for the vapour phase: C
[ C [ C [ [ C and D8
[D [ D .
46
because
2
28 8
the vapour phase molar volume is to be calculated. From VV, calculate < 8
46
(compressibility factor in the vapour phase).
(ix) Using Newtons technique, calculate VV using aV, bV, y1, y2. Take 8QNF
8
(x) Calculate the fugacity coefficient of the components G8 and G in the vapour phase
mixture.
(xi) Calculate -
(xii) Calculate 5WO
G.
and -
G8
G.
.
8
G
- u Z - u Z
47
- u Z
- u Z
and [
. Go to Step (viii) and repeat the procedure
5WO
5WO
till E
5WO F . This is because the composition of the vapour phase has changed;
therefore aV and bV get changed.
(xiv) Calculate the new pressure using 2PGY 2QNF u 5WO . Go to Step (vi) and repeat the
procedure till E 2 F .
(xiii) Calculate [
EXAMPLE 3.8 Consider the CO2 (1) n-pentane (2) system in vapourliquid equilibrium.
The temperature of the system is 377.65 K and the liquid phase composition is x1 = 0.5.
Determine the system pressure and the vapour phase composition using the PengRobinson
cubic equation of state. Tc1 = 304.2 K, Pc1 = 73.83 bar, w1 = 0.224, Tc2 = 469.7 K, Pc2 = 33.70
bar, and w2 = 0.252.
Solution Program 3.8 for Pxy calculations using the PengRobinson cubic equation of
state is given in the Appendix. The result obtained from the program is given below: Pressure
= 6524432 Pa and y1 = 0.81127.
3.9
The solution of two simultaneous nonlinear algebraic equations is described in Section 2.5. The
application in chemical reaction equilibrium in the homogeneous phase is described in the
example below.
EXAMPLE 3.9
take place
Starting with 5 moles of steam and 1 mole of methane, calculate the equilibrium composition
of the resulting mixture at 600C and 1 atm. At this temperature the equilibrium constants for
the first and second reaction are 0.574 and 2.21 respectively. Assume the gas mixture to follow
ideal gas behaviour.
Solution Let X1 be the reaction coordinate for the first reaction and X2 for the second. The
number of moles of components at equilibrium is as follows:
CH4: 1 X1
H2O: 5 X1 X2
CO: X1 X2
H2: 3X1 + X2
CO2: X2
Total: 6 + 2X1
48
: : : :
:
: :
:
: : :
: :
: :
H
: : : :
: : : :
: : :
: : : :
H
:
: : : :
: : : :
: : : : : : : : :
: : : :
H
:
: : : : : :
H
:
: : : :
: : : :
: : : :
: : : :
:
: : : : : : : :
H
:
: : : :
: :
: : : : : : : :
The algorithm is described in Section 2.5. Program 3.9 for solution of two chemical reaction
equilibrium equations is given in the Appendix. The solution is X1 = 0.912 and
X2 = 0.633. Thus at equilibrium: moles of CH4 = 0.09 mol, moles of H2O = 3.465 mol, moles
of CO = 0.285 mol, moles of H2 = 3.355 mol, moles of CO2 = 0.625 mol, and total number
of moles = 7.82 mol.
49
%2
(vi) Calculate
C D6 E6 F6
'C O C O C O C O C
'D O D O D O D O D
'E O E O E O E O E
'F O F O F O F O F
(vii) Calculate the standard enthalpy change of reaction at the adiabatic flame temperature
(T) with respect to the standard enthalpy change of reaction at temperature (T0)
'D
'E
'F
6 6
6 6
6 6
(viii) Assume an adiabatic flame temperature and at that temperature calculate the value of
the function
UD
UE
UF
H UC 6 6
6 6
6 6
6 6
'D
'E
'F
+ '*6 'C 6 6
6 6
6 6
6 6
and its derivative
'*6 'C 6 6
6P
50
EXAMPLE 3.10 Calculate the adiabatic flame temperature of a gas initially at 25oC
containing 1 mol C2H6 (1), 4 mol O2 (2), 10 mol CO2 (3) and 0 mol of H2O (4). The ethane
is completely burned. The standard heat capacity is given by % 2 C D6 E6 F6 , where
T is in K and % 2 in cal/mol-K.
Species
C2H6
O2
CO2
H2O(g)
b 102
4.124
0.3631
1.4285
0.04594
a
1.648
6.085
5.316
7.700
c 105
1.530
0.1709
0.8362
0.2521
d 109
1.740
0.3133
1.784
0.8587
kcal/mol,
Solution
1 o %1 * 1
and the reaction with 4 mol of O2 and 10 mol CO2 is
% *
Exercises
3.1
Calculate the molar volume of saturated liquid water and saturated water vapour at
180C and 1.0 MPa using the van der Waals, RedlichKwong and PengRobinson
cubic equations of state. For water: TC = 647.1 K, PC = 220.55 bar, and w = 0.345.
(Ans: VL using the PengRobinson equation of state = 2.47 105 m3/mol, VV using
the PengRobinson equation of state = 0.003570 m3/mol, VL using the Redlich
Kwong equation of state = 2.95 105 m3/mol, VV using the RedlichKwong
equation of state = 0.003605 m3/mol, VL using the van der Waals equation of state
= 4.31 105 m3/mol, VV using the van der Waals equation of state = 0.003647 m3/mol)
3.2
Calculate the bubble point and dew point temperatures for the acetone (1)water
(2) system at 101.325 kPa for feed composition z1 = 0.9. Assume the system to
follow Raoults law.
(Ans: Bubble point temperature = 58.58C, dew point temperature = 66.93C)
3.3
Calculate the composition of the liquid and vapour phases for the acetone
(1) acetonitrile (2)nitromethane (3)system. The feed composition is z1 = 0.25,
z2 = 0.5 and z3 = 0.25. At the given temperature: 2UCV 195.75 kPa, 2UCV 97.84
50.32 kPa. The pressure of the system is 100 kPa. Assume the
kPa, and 2UCV
system to follow Raoults law.
(Ans: x1 = 0.175384, y1 = 0.343313, x2 = 0.504845, y2 = 0.493941, x3 =
0.320819, y3 = 0.161436. The number of moles in the vapour phase is 0.444331.)
3.4
51
6
where the temperature is in C and the vapour pressure in kPa. The parameters in
the Wilson equation are: a12 = 437.98 cal/mol and a21 = 1238 cal/mol. The molar
volumes of the components are V1 = 76.92 cm3/mol and V2 = 18.07 cm3/mol.
Assume the system to follow the modified Raoults law.
(i) Calculate the bubble point pressure at 100C and x1 = 0.3.
(ii) Calculate the bubble point temperature at 101.325 kPa and x1 = 0.3.
(iii) Calculate the dew point pressure at 100C and y1 = 0.3.
(iv) Calculate the dew point temperature at 101.325 kPa and y1 = 0.3.
[Ans:
3.5
(i) 193.78 kPa, (ii) 82.18C, (iii) 140.78 kPa, and (iv) 91.00C]
Calculate the composition of the liquid and vapour phases for the acetone (1)
water (2) system at 100C and 200 kPa. The feed composition is z1 = 0.5. The
Antoine equations of the components are given by
NP 2UCV
6
NP 2UCV
6
where the temperature is in C and the vapour pressure in kPa. The parameters in
the Wilson equation are: a12 = 292.66 cal/mol and a21 = 1445.26 cal/mol. The molar
volume of the components is V1 = 74.05 cm3/mol and V2 = 18.07 cm3/mol. Assume
the system to follow the modified Raoults law.
[Ans: Bubble point pressure = 334.97 kPa, dew point pressure = 195.68 kPa,
number of moles in vapour phase = 0.974685, x1 = 0.045018, y1 = 0.511817]
3.6
Calculate the vapour pressure of water at 120C using the PengRobinson cubic
equation of state. For water: TC = 647.1 K, PC = 220.55 bar, and w = 0.345.
(Ans: 191689.125 Pa)
3.7
Consider the methanol (1) water (2) system in vapourliquid equilibrium. The
temperature of the system is 100C and the liquid phase composition is x1 = 0.5.
Determine the system pressure and the vapour phase composition. Use the GammaPhi approach. The Antoine equations of the components are given by
NP 2UCV
6
52
NP 2UCV
6
where the temperature is in C and the vapour pressure in kPa. The parameters in
the Wilson equation are: a12 = 107.38 cal/mol and a21 = 469.55 cal/mol. The molar
volumes of the components are V1 = 40.73 cm3/mol and V2 = 18.07 cm3/mol.
TC1 = 512.6 K, PC1 = 80.97 bar, w1 = 0.564, ZC1 = 0.224, TC2 = 647.1 K,
PC2 = 220.55 bar, w2 = 0.345, ZC2 = 0.229.
(Ans:
3.8
Consider the CO2 (1) n-pentane (2) system in vapourliquid equilibrium. The
temperature of the system is 377.65 K and the liquid phase composition is x1 = 0.35.
Determine the system pressure and the vapour phase composition using the Peng
Robinson cubic equation of state. TC1 = 304.2 K, PC1 = 73.83 bar, w1 = 0.224,
TC2 = 469.7 K, PC2 = 33.70 bar, w2 = 0.252.
(Ans:
3.9
0.757692)
0.782462)
Calculate the adiabatic flame temperature of a gas initially at 25C containing 1 mol
C2H6 (1), 5 mol O2 (2), 10 mol CO2 (3) and 0 mol of H2O (4). The ethane is
completely burned. The standard heat capacity is given by C0 = a + bT + cT2
P
+ dT3 where T is in K and C 0 in cal/mol-K.
P
Species
C2H6
O2
CO2
H2O(g)
a
1.648
6.085
5.316
7.700
b 102
4.124
0.3631
1.4285
0.04594
c 105
1.530
0.1709
0.8362
0.2521
d 109
1.740
0.3133
1.784
0.8587
The standard enthalpy of formation at 298.15 K is: '* 7I a kcal/mol,
'* BIs
kcal/mol, and '* % *
kcal/mol.
H
Chapter 4
54
In the numerical formulation of the problem some terms are left out; those errors are
called truncation errors. When the step size is small, these errors are less. If the step size is
very low, then the truncation errors are less but the round-off errors are high. Consider a step
size of 106 m; then to go from 1 to 10 m, the number of iterations required is 107, which is
huge. Whenever the new concentration is computed, the number is not completely stored, it
is stored up to some decimal places only, depending on the compiler used. So to avoid roundoff errors the step size should not be very small and to avoid truncation errors it should not
be very large. So there is an optimum step size and it varies with the problem. To determine
the optimum step size, at a particular value of independent variable x the value of the
dependent variable y is determined using various step sizes. When for two consecutive step
sizes the value of y is the same, then the higher of the two is the optimum step size.
In the RungeKutta fourth order method the following are computed:
M
J u H Z [
(4.2)
M
J u H Z J [ M
(4.3)
M
J u H Z J [ M
(4.4)
M
J u H Z J [ M
(4.5)
M M M M
(4.6)
From the initial condition (x0, y0) we have determined the value of y at x0 + h. Now again the
above calculations are carried out to determine the value of y at x0 + 2h. But before carrying
out the next calculation the following statements, due to which the value of y1 becomes y0 and
x0 + h becomes x0, are executed:
x0 = x0 + h
(4.7)
(4.8)
y0 = y1
[
EXAMPLE 4.1
[
F[
Z[
FZ
using the RungeKutta fourth order method. The initial condition is: at x = 0, y = 0. Determine
the value of y at x = 0.2. The analytical solution is given by y = ex x 1.
F[
Solution Let us take step size of h = Dx = 0.1. The function is H
Z [ . To compute
FZ
y at x = 0.1 the starting point is x0 = 0 and y0 = 0. The calculations are given below.
55
Thus
at x = 0.1
M M M M
Now let us compute the value of y at x = 0.2. For this computation the starting point is
x0 = 0.1 and y0 = 0.0051708. The calculations are given below.
[
[
u u
Thus the value of y (at x = 0.2) = 0.0214025.
The analytical solution at x = 0.2 is y = e0.2 0.2 1 = 0.0214028, which is close to the
numerical solution.
[
EXAMPLE 4.2
dy
dx
y
1 x
with the initial condition y(0) = 2. Determine y at x = 2.5 using the fourth-order RungeKutta
method.
Solution The initial condition is: at x = 0: y = 2. We have to determine y at x = 2.5. The result
from Program 4.1 (given in the Appendix) at step size of 0.01 is: at x = 2.5, y = 0.57.
O%2
6\ 6TGH
O%2
6\ '\ 6TGH
56
Consider a differential section of the inner pipe. Through the circumference of the inner pipe
heat enters from steam in the outer pipe. Under steady conditions (Input Output = 0)
O% 2 6\ 6TGH O% 2 6\ '\ 6TGH 7Q & '\ 65 6
Dividing by Dz, we get
6\
6
O%2 \ '\
'\
7Q & 65 6
As Dz 0, we get
O% 2
F6
7Q & 65 6
F\
(4.9)
where T is the temperature of the fluid in the inner pipe and is a function of length, TS is the
temperature of steam in the outer pipe and is constant, and O is the mass flow rate of fluid in
inner pipe. The analysis of the double pipe heat exchanger is described in the example below.
EXAMPLE 4.3 On one side of a double pipe heat exchanger is saturated steam and water
is flowing in the inner tube. The temperature of entering water is 20C and the velocity of
water is 1 m/s. The inner diameter of the inner pipe is 2.4 cm. Under steady conditions,
determine the temperature of water at the length of 5 and 10 m from the inlet. The total length
of the heat exchanger is 10 m. Assume that the temperature does not change along the radius
of the pipe. The density of water is 1000 kg/m3 and the specific heat capacity is 4184 J/kgK. The overall heat transfer coefficient based on the inside area of the inner pipe is 200 W/
m2-K and the temperature of saturated steam is 250C.
Solution
S X# u u Q
kg/s
F6
u u u 6
F\
F6
F\
u 6
NOVF
O% 2
6 6
57
where T1 is the temperature of the inlet water, T2 is the temperature of the exit water, and
L = 10 m. The temperatures in the double pipe heat exchanger are shown in Fig. 4.2.
250C
250C
20C
Steam temperature
37.60C
Fig. 4.2
Water temperature
'6
NOVF
NP
O% 2
6 6
Q &. '6NOVF
Q u u u
W/m2-K
which is close to the given value. In this problem the overall heat transfer coefficient is given
and temperature of water is determined. Usually in heat transfer laboratory experiments, the
exit temperature of water is known and the overall heat transfer coefficient is determined.
O
M = Mass
of fluid
in tank
T
TS
Fig. 4.3
58
The energy balance equation is given by Accumulation = Input Output. The input is due to
energy input by the entering stream and the heat input from the steam, and the output is energy
carried away by the exit stream. From the energy balance equation, we get
F6
O% 2 6 6 3
(4.10)
FV
where T1 is the temperature of the entering stream and T is the temperature of exit stream and
is equal to temperature of water in the stirred tank. The heat transfer between the steam in the
coil and the fluid is given by Q = UADTlmtd = UA(TS T). The temperature throughout the coil
is TS as the steam is saturated, and outside the whole coil, that is inside the tank uniform
temperature, T exists as the vessel is stirred; therefore DTlmtd = TS T. Note that though the
temperature in the tank is uniform, it varies with time.
/% 2
EXAMPLE 4.4 Consider a stirred tank heater. It is a square tank 0.5 m on its sides and 2
m high and is filled with water at 20C. Water is fed to the tank at a flow rate of 1L/s and
exits out at the same flow rate from the top of the tank. The temperature of inlet water is 20C.
At time t = 0 s, water in the tank is heated by a coil containing steam whose overall heat
transfer coefficient based on the outside area of the coil is 200 W/m2-K. The outside area of
the coil through which heat exchange takes place is 1 m2. The temperature of the steam is
250C. The specific heat capacity of water is 4184 J/kg-K. After how much time is the
temperature of exit water 28C? What is the maximum temperature that can be reached in the
tank?
Solution Volume of tank = 0.5 0.5 2 = 0.5 m3. Since the density of water is 1000 kg/m3,
therefore the mass of water in the tank is 500 kg. Thus M = 500 kg, CP = 4184 J/kg-K,
3 = UA(TS T) = 200(TS T), and m = 1 kg/s, and Eq. (4.10) becomes
u
F6
FV
Simplifying, we get
F6
6
FV
The initial condition is: at t = 0, T = 20C. We have to determine t at T = 28C. Program 4.1 can
be modified, and with step size of 0.1 we get T = 28C at t = 700 s. The variation of
temperature of the fluid in the tank with time is shown in Table 4.1.
Table 4.1
Time (s)
Temperature (C)
500
26.81
750
28.31
1000
29.19
3000
30.46
5000
30.48
59
F6
; thus
FV
the steady state temperature is given by 0.064 0.0021 T = 0 or T = 30.48C. The same is
also obtained from the numerical solution. Note the temperature at 5000 s in Table 4.1.
EXAMPLE 4.5 Consider a stirred vessel which initially contains 760 kg of solvent at 25C.
12 kg/min of solvent flows into the stirred vessel at 25C and exits out also at the same rate.
At t = 0 the flow of steam is started in a coil in the stirred vessel. The heat supplied by steam
to the solvent is given by 3 = UA(TS T), where UA is the overall heat transfer coefficient
multiplied by coil area through which heat exchange takes place and TS is the temperature of
steam and is 150C. UA = 11.5 kJ/min-K. The specific heat of the solvent is Cp = 2.3 kJ/kgK. Show that
F6 Q
Solution From the energy balance equation we know: Accumulation = Input Output. Here
input energy is due to incoming fluid and steam and output is due to outgoing fluid.
Substituting the values in Eq. (4.10), we get
F6
u 6
6
FV
Note that DTlmtd = TS T, where T is the temperature of the fluid in the stirred tank. In the
coil throughout the temperature is TS and the fluid temperature is T. Simplifying the above
equation, we get
u
F6
6
FV
The initial condition is: at t = 0, T = 25C. We have to determine T at t = 3000 s.
Program 4.1 can be modified, and with step size of 0.01 we get: at t = 3000 s, T = 49.69C.
The variation of temperature of the fluid in the tank with time is shown in Table 4.2.
Table 4.2
Time (s)
Temperature (oC)
1000
2000
3000
5000
7500
10000
15000
20000
25000
36.41
44.27
49.69
55.98
59.43
60.78
61.53
61.64
61.66
60
F6
, thus the
FV
steady state temperature is given by 0.023 0.000373T = 0 or T = 61.66C. The same is also
obtained from the numerical solution. Note the temperature at 25000 s in Table 4.2.
SR
FX R
(& (D (I
FV
8R
where rp is the density of the particle, vp is the upward velocity of the particle, FD is the drag
force acting on the particle, Fb is the buoyancy force acting on the particle, Fg is the
gravitational force acting on the particle, and Vp is the volume of the particle. The drag force
is given by
(& #R
%&
(4.11)
SI XI X R
where rg is the density of the gas, Ap is the projected area of the particle on a plane at right
angles to the direction of motion, and vg vp is the relative velocity. The gravitational force
minus the buoyancy force on the particle is given by [see Eq. (2.17)]
(I (D
8R S R S I I
S I%&
#R
X X
X X
8R I R I R
(rp rg)g
vg
Fig. 4.4
61
SR
FX R
FV
#R
%& SI
XI X R S I S R I
8R
(4.12)
Note that the terms have units of force acting on the particle divided by the volume of the
particle. Dividing both sides of the equation by rp, we get
FX R
FV
SI #R
%&
XI X R S I I
R
S R 8R
The derivative
FX R
XR
FX R
FV
F\
where z is the direction along the length of the pneumatic conveyor. Thus the momentum
balance equation can be written as
XR
FX R
F\
SI #R
%&
XI X R S I I
R
S R 8R
(4.13)
Program 4.2 uses the RungeKutta fourth order method for integrating the above ordinary
differential equation and is given in the Appendix.
EXAMPLE 4.6 Determine the velocity of the solid particles of diameter 3 104 m along
the length of the pneumatic conveyor. The initial velocity of the particle is zero and superficial
velocity of air is 12 m/s. The density of the particle is 900 kg/m3. Air is fed at 25C and 1
atm and the viscosity of air under these conditions is 1.8 105 kg/m-s. Neglect wall effects.
Use the following relation to determine CD:
%&
4G
R
4G R
where Rep is the particle Reynolds number based on relative velocity and is given by
4G R
Solution
SI XI X R F R
N
SI
2/
46
u u
u
kg/m3
62
The projected area of the particle divided by the volume of the particle is given by
Q TR
#R
TR
Q TR
The particle Reynolds number is
8R
4G R
SI XI X R F R
N
FR
u
m
u X R u u
X R
u
XR
SI #R
%&
XI X R S I I
S R 8R
R
FX R
FX R
F\
F\
%&
X R
FX R
F\
Let [
%& X R
X ; thus
R
F[
F\
where 4G R
[
%& [
and %&
4G . The initial condition is at
R
4G R
z = 0, y = 0. The problem can be solved using the RungeKutta fourth order method. The
velocity of the particle along the length of the pneumatic conveyor as obtained from
Program 4.2 is presented in Table 4.3. The step size of 0.01 m is taken.
Table 4.3
z (m)
vp (m/s)
0.0
0.1
0.2
0.3
0.5
1.0
2.0
3.0
5.0
10.0
0.00
5.84
7.24
8.06
9.01
10.06
10.67
10.83
10.90
10.90
63
4.5
H Z [ \
(4.14)
F\
H Z [ \
(4.15)
FZ
with the initial condition: at x = x0, y = y0 and z = z0. The ordinary differential equations have
to be integrated to determine the value of y and z at some x. A step size, h, is chosen in the
independent variable and after a step size in independent variable, i.e., at x = x0 + h the value
of y and z are to be computed. In the RungeKutta fourth order method the following are
computed:
M
J u H Z [ \
(4.16)
N
J u H Z [ \
(4.17)
M
J u H Z J [ M \ N
(4.18)
N
J u H Z J [ M \ N
(4.19)
M
J u H Z J [ M \ N
(4.20)
N
J u H Z J [ M \ N
(4.21)
M
J u H Z J [ M \ N
(4.22)
N
J u H Z J [ M \ N
(4.23)
M M M M
(4.24)
\ \ N N N N
(4.25)
From the initial condition (x0, y0, z0), we have determined the value of y and z at x0 + h. Now
again, the above calculations are carried out to determine the value of y and z at x0 + 2h. But
before carrying out the next calculation the following statements are executed, due to which
the value of y1 becomes y0, z1 becomes z0 and x0 + h becomes x0:
[
[
x0 = x0 + h
y0 = y1
z0 = z1
64
EXAMPLE 4.7
dx
dt
x 2y
dy
dt
3x 2 y
using the RungeKutta fourth order method. The initial condition is: at t = 0, x = 6, y = 4.
Determine the values of x and y at t = 0.2. The analytical solution is given by x = 4e4t + 2et
and y = 6e4t 2et.
FZ
Z [ and
Solution Take step size of h = Dt = 0.1. The functions are H
FV
F[
H
Z [ . To compute the value at t = 0.1 the starting point is t0 = 0, x0 = 6 and y0
FV
= 4. The calculations are given below.
f1(0, 6, 4) = 14; therefore k1 = 1.4;
f2(0, 6, 4) = 26; therefore l1 = 2.6;
f1(0.05, 6.7, 5.3) = 17.3; therefore k2 = 1.73;
f2(0.05, 6.7, 5.3) = 30.7; therefore l1 = 3.07;
f1(0.05, 6.865, 5.535) = 17.935; therefore k3 = 1.7935;
f2(0.05, 6.865, 5.535) = 31.665; therefore l3 = 3.1665;
f1(0.1, 7.7935, 7.1665) = 22.1265; therefore k4 = 2.21265;
Thus
Z
M M M M
(at t = 0.1)
(at t = 0.1)
N N N N
Now let us compute the value of y and z at t = 0.2. For this computation the starting point is
t0 = 0.1, x0 = 7.7766, and y0 = 7.140725. The calculations are given below.
[
[
65
Thus at t = 0.2
u u
[ u u
From the analytical solution at t = 0.2: x = 10.5396, y = 11.7158, which is close to the
numerical solution.
Z
EXAMPLE 4.8
F\
[
FZ
with the initial condition y(0) = 2, z(0) = 1. Determine the value of y and z at x = 3. Compare
the numerical solution with the analytical solution. The analytical solution of the given
differential equations is y = Asin(x + a) and z = Acos(x + a).
Solution
F[
\
FZ
F\
[
H
FZ
The initial condition is: at x = 0, y = 2, z = 1. We have to determine y and z at x = 3. The
result from Program 4.3 at step size of 0.01 is: at x = 3: y = 1.84, z = 1.27. Now let us check
the numerical result with the analytical solution. First let us determine the constants A and a.
At x = 0: y = 2, z = 1, and thus
H
2 = A sin(0 + a)
1 = A cos(0 + a)
Thus tan a = 2 or a = 63.435 and thus A = 2.236. From the conversion of radians to degrees
we know that 3.1416 radians = 180. Thus x = 3 = 171.887. At x = 3 the following is obtained:
y = 2.236 sin(171.887 + 63.435) = 1.84
z = 2.236 cos(171.887 + 63.435) = 1.27
which is the same as numerical solution.
EXAMPLE 4.9
F [
[Z
FZ
with the initial conditions y(0) = 2, y(0) = 1. Determine the value of y at x = 3.
66
Solution
Let us take
F[
FZ
[Z
H
F[
FZ
F\
FZ
[Z
O kg/s
T0
T1
T1
Fig. 4.5
T2
T2
T3
T3
67
of the oil. T1, T2, and T3 are the temperatures of the first, second and third tank respectively.
TS is the temperature of steam. The energy balance of tank 2 gives
F6
FV
The energy balance of tank 3 gives
/%2
O%2 6 6 7# 65 6
F6
O%2 6 6 7# 65 6
FV
The analysis is described in the example below.
/%2
EXAMPLE 4.10 Three tanks in series are used to heat oil (see Fig. 4.5). Each tank is initially
filled with 1000 kg of oil at 20C. Saturated steam at 250C condenses within the coils
immersed in each tank. Oil is fed into the first tank at a rate of 2 kg/s and overflows into the
second and third tanks at the same flow rate. The temperature of the oil fed to the first tank
is 20C. The tanks are well mixed so that the temperature inside the tanks is uniform and the
outlet stream temperature is the temperature within the tank. Cp of oil = 2000 J/kg-K. The rate
of heat transferred to the oil from the steam is given by 3 = UA(TS T), where A is the outside
area of the coil in one tank, A = 1 m2 and the overall heat transfer coefficient is based on the
outside area of the coil, U = 200 W/m2-K. Determine the steady state temperature in all the
three tanks. What time interval is required for T3 to reach 99% of this steady state value?
Solution
F6
FV
F6
FV
F6
FV
F6
FV
F6
FV
F6
FV
The initial condition is: at t = 0: T1 = T2 = T3 = 20C. Program 4.4 for the solution of above
68
three ordinary differential equations by the RungeKutta fourth order method is given in the
Appendix. The results at step size of 0.1 is shown in Table 4.4.
Table 4.4
Time (s)
T1 (oC)
T2 (oC)
T3 (oC)
1000
2500
7500
15000
29.61
30.89
30.95
30.95
36.08
40.98
41.38
41.38
39.56
49.87
51.31
51.31
6
F6
FV
; thus the
C
C
Initial conditions and ODEs for batch and plug flow reactors
Initial
Condition for
Plug Flow
Reactor
#V Z
# o $
#V V
%#
%$
F% #
FV
F%$
FV
M% #
%#
M% #
%$
F% #
FZ
F% $
W
FZ
M% #
M% #
69
(Cont.)
M
M
# $ %
o
o
#V V
%#
%$
%%
M
# $ %
o
M
o
$ % &
F% #
FV
F%$
FV
F%%
FV
#V Z
M% #
%#
%$
M% # M%$
%%
F% #
FZ
F%$
W
FZ
F%%
W
FZ
W
M%$
M% #
M% # M% $
M% $
#V V
%#
%$
%%
%&
F% #
FV
F%$
FV
F%%
FV
F%&
FV
#V Z
M% #% $
M% #% $ M% $%%
F% #
FZ
F% $
W
FZ
F%%
W
FZ
F% &
W
FZ
W
%#
%$
%%
%&
M% #%$
M% #%$ M%$%%
M% #% $ M% $%%
M% $%%
J u H V J % M
M
J u H V J % M
70
M
J u H V J % M
%
%
V
V J
M M M M
% %
Program 4.1 can be modified and the results for step size of 0.01 s are presented in Table 4.6.
Table 4.6
t (s)
CA (mol/m3)
Numerical solution
CA (mol/m3) = et
Analytical solution
0.0
1.0
2.0
3.0
5.0
10.0
1.000000
0.367880
0.135335
0.049787
0.006738
0.000045
1.000000
0.367879
0.135335
0.049787
0.006738
0.000045
EXAMPLE 4.12 A liquid phase reaction A B is carried out in a stirred vessel reactor. Feed
enters the reactor at a rate of F = 1 L/s and exits out also at the same flow rate. Both the
reactant and product have the same density. The concentration of reactant in the feed is CA0
= 1 mol/m3. The volume of the tank is V = 10 L and the concentration of A of the solution
in the tank is 1 mol/m3. The vessel may be considered perfectly mixed, so that the
concentration of A in the product stream equals that inside the tank. The rate of consumption
of A equals kCA, where k = 1 s1. Determine the concentration of A at various time periods from
0 to 10 s.
Solution
71
The initial condition is: at t = 0, CA = 1 mol/m3. Program 4.1 can be modified and at step size
of 0.01 the concentration of component A in the tank with time is shown in Table 4.7.
Table 4.7
Time (s)
0.10
0.25
0.50
1.0
2.0
3.0
5.0
10.0
0.9053
0.7891
0.6212
0.3969
0.1927
0.1248
0.0947
0.0909
F% #
; thus % #
mol/m3. The same is also obtained from
FV
numerical solution. Note the concentration at 10 s in the Table 4.7.
At steady state,
M
M
EXAMPLE 4.13 Consider reaction # $ % carried out in a batch reactor. The
o
o
differential equation for component A is
F% #
FV
for component B
for component C
F% $
FV
M% #
M% # M %$
F%%
FV
M % $
The initial condition is: at t = 0, CA = 1 mol/m3, CB = 0 mol/m3, and CC = 0 mol/m3. The rate
constants are k1 = 1 s1 and k2 = 1 s1. Using the RungeKutta fourth order method, determine
the concentration of A, B, and C up to 10 s.
Solution
M #
H
M # M $
H
M $
where A, B and C are the concentrations of the components A, B, and C, respectively. The
initial condition is at time t = t0, A = A0, B = B0, C = C0. Thereafter the concentrations are
computed at time t = t0 + h.
72
M
N
O
M
N
O
M
N
O
J u H V # $ %
J u H V # $ %
J u H V # $ %
J u H V J # M $ N % O
J u H V J # M $ N % O
J u H V J # M $ N % O
J u H V J # M $ N % O
J u H V J # M $ N % O
J u H V J # M $ N % O
M
N
O
J u H V J # M $ N % O
J u H V J # M $ N % O
J u H V J # M $ N % O
#
#
M M M M
$
$
N N N N
%
%
O O O O
t 0 = t0 + h
A0 = A1
B0 = B1
C0 = C1
Program 4.5 for the solution of the above three simultaneous ordinary differential equations by
the RungeKutta fourth order method is given in the Appendix. The results for step size of 0.01
s are presented in Table 4.8.
73
t (s)
CA (mol/m3)
CB (mol/m3)
CC (mol/m3)
0.0
1.0
2.0
3.0
4.0
5.0
10.0
1.000000
0.367880
0.135335
0.049787
0.018316
0.006738
0.000045
0.000000
0.367879
0.270671
0.149361
0.073263
0.033690
0.000454
0.000000
0.264241
0.593994
0.800852
0.908422
0.959573
0.999503
EXAMPLE 4.14
The concentration of various species with time are given by the following differential
equations:
for component A
for component C
for component D
M% #%$
F% $
FV
F%%
FV
F% &
FV
for component B
F% #
FV
M% $%%
74
t (s)
CA (mol/m3)
CB (mol/m3)
CC (mol/m3)
CD (mol/m3)
0.0
1.0
2.0
3.0
4.0
5.0
10.0
1.000000
0.528875
0.404510
0.357692
0.337090
0.327357
0.318152
1.000000
0.394646
0.175134
0.083121
0.040733
0.020275
0.000659
0.000000
0.336895
0.366113
0.367737
0.366553
0.365561
0.364356
0.000000
0.134230
0.229376
0.274571
0.296357
0.307082
0.317492
Solution Program 4.1 can be modified and the results for step size of 0.01 m are presented
in Table 4.10.
Table 4.10
x (m)
CA (mol/m3)
0.0
1.0
2.0
3.0
5.0
10.0
1.000000
0.367880
0.135335
0.049787
0.006738
0.000045
M
M
EXAMPLE 4.16 Consider a reaction # $ % carried out in a plug flow reactor.
o
o
The differential equation for component A is
F% #
FZ
M% #
75
for component B
W
F%$
FZ
M% # M% $
F%%
FZ
M% $
for component C
x (m)
CA (mol/m3)
CB (mol/m3)
CC (mol/m3)
0.0
1.0
2.0
3.0
4.0
5.0
10.0
1.000000
0.371577
0.136695
0.050287
0.018500
0.006806
0.000046
0.000000
0.367861
0.272024
0.150359
0.073814
0.033960
0.000458
0.000000
0.260562
0.591281
0.799353
0.907686
0.959234
0.999496
EXAMPLE 4.17
Consider the following two reactions taking place in a plug flow reactor:
M
# $ %
o
M
$ % &
o
The concentration of various species with the length of the reactor are given by the following
differential equations:
for component A
F%
W # M% #% $
FZ
for component B
F%
W $ M% #%$ M%$%%
FZ
for component C
F%
W % M% #%$ M%$%%
FZ
for component D
F%
W & M % $ %%
FZ
76
% #% $
F% $
FZ
% #% $ % $%%
F%%
FZ
% #%$ %$%%
F% &
FZ
% $ %%
Program 4.6 can be modified (time replaced by distance along the length of the tubular reactor)
and the results for step size of 0.01 m are presented in Table 4.12.
Table 4.12
x (m)
0.0
1.0
2.0
3.0
4.0
5.0
10.0
CA (mol/m3)
CB (mol/m3)
CC (mol/m3)
CD (mol/m3)
1.000000
0.528875
0.404510
0.357692
0.337090
0.327357
0.318152
1.000000
0.394646
0.175134
0.083121
0.040733
0.020275
0.000659
0.000000
0.336895
0.366113
0.367737
0.366553
0.365561
0.364356
0.000000
0.134230
0.229376
0.274571
0.296357
0.307082
0.317492
77
Z GZR
, where T is in Kelvin. Take the following
46
reaction is given by M
M GZR D
G
M
where D
'
, G
46
6
and M
6
T#
FP#
F8
F:
F8
P# F:
# F\
M GZR D :
G
(
T#
P
#
F:
F8
P#
F6
T# #'* S
F\
TZP
where q = Ua(TS T) and a is the total area of heat transfer per unit length; thus a = pD (for
one tube). A is the cross-sectional area of the tube based on inside diameter. Thus the above
equation becomes
O% 2
F6 7
65 6 T# '*
F8
&
TZP
(
D
M
'
46
MI O
U MI
u
u
O
U
78
F:
F\
#M : GZR
G
#M
(
Q
u
m1
Thus
F:
F\
O% 2
MI
,
U
MI -
9
-
a, A and U are all based on the internal diameter of tubes. The inlet molar flow rate of A is
given by
P
#
MI OQN
U MI
O% 2
T#
T#
OQN
U
F6
7
65 6 T# '*
#F\
&
TZP
Q
M P GZR D :
#
G
(
F6 u
65 6 T# '*
F\
TZP
u
T# '* TZP
6
F6
79
Program 4.7 for the solution of the above two simultaneous ordinary differential equations by
Runge-Kutta fourth order method is given in the Appendix. The results for step size of 0.1 m
are presented in Table 4.13.
Table 4.13
z (m)
0.1
0.2
0.3
0.4
0.5
1.0
2.0
3.0
5.0
10
15
20
25
30
35
40
45
50
100
150
200
250
300
350
0.000026
0.000363
0.00094
0.0015
0.0015
0.005
0.011
0.017
0.029
0.059
0.088
0.118
0.147
0.176
0.204
0.232
0.260
0.287
0.542
0.752
0.903
0.980
0.998
0.999
343.87
359.29
361.51
362.69
362.69
364.87
365.35
365.40
365.49
365.71
365.93
366.16
366.40
366.64
366.89
367.14
367.39
367.66
370.65
374.56
379.76
385.59
388.33
388.68
80
Exercises
4.1
Integrate the following ODEs using the RungeKutta fourth order method:
FZ
FV
Z [
F[
FV
Z [ Z\
F\
\ Z[
FV
Initial condition at t = 0: x = y = z = 5. Determine x(20),
y(20) = 12.61,
y(20),
z(20).
z(20) = 10.96)
FZ
FV
F[
Z [
FV
Initial condition at t = 0: x = 3 and y = 5. Note that since the ordinary differential
equation is second order, therefore two conditions have to be given to completely
define the problem.
H
81
F[
\
FZ
F\ Z \ [
H
FZ
Initial condition at x = 0: y = 1 and z = 0.
( Ans: y(1) = 0.8785)
H
4.4
by 4G R
(Ans:
4.5
S I XI X R F R
.
N
8.9044 m/s)
(Ans:
0.36788 mol/m3)
4.6
Solve Exercise 4.5 for rate constant of the reaction of 0.01 s1.
(Ans: 0.904838 mol/m3)
4.7
F% #
F\
M% #
The initial condition is: at z = 0, CA = 1 mol/m3. The rate constant of the reaction
is 0.1 s1. Using RungeKutta fourth order method, determine the concentration of
A at 5 m from entrance. Take u = 1 m/s.
(Ans:
4.8
0.606531 mol/m3)
Solve Exercise 4.7 for rate constant of the reaction of 0.01 s1.
(Ans:
0.95123 mol/m3)
82
4.9
M
M
Consider reaction # $ % carried out in a batch reactor. The differential
o
o
equation for component A is
F% #
M% #
FV
for component B
F% $
M% # M %$
FV
for component C
F%%
M % $
FV
F% #
FZ
M% #
F%$
FZ
M% # M% $
for component B
for component C
F%%
M % $
FZ
The initial condition is: at x = 0, CA = 1 mol/m3, CB = 0 mol/m3, and CC = 0 mol/
m3. The rate constants are: k1 = 1 s1 and k2 = 0.1 s1. Using the RungeKutta fourth
order method, determine the concentration of A, B, and C at 5 m from entrance.
W
83
The concentration of various species with time are given by the following
differential equations:
for component A
F% #
FV
F% $
FV
for component D
F% &
FV
for component C
F%%
FV
for component B
M% #%$
M % $ %%
for component A
W
F% #
FZ
M% #% $
F% $
FZ
F%%
FZ
for component B
for component C
84
for component D
W
F%&
FZ
M % $ %%
Chapter 5
[ Z 'Z
F[
'Z F [
'Z F [
"
FZ Z
FZ Z
FZ Z
(5.1)
Simplifying, we get
[ Z 'Z [ Z
'Z F [
F[
"
FZ Z FZ Z
'Z
Thus
F[
FZ
[ Z 'Z [ Z
'Z
1 'Z
F[
is of first order in Dx, indicating that the truncation error O(Dx) goes to
FZ Z
zero like the first power in Dx. That is why we write the derivative at point x as
The derivative
F[
FZ
NKO
[ Z 'Z [ Z
'Z
'Z
86
i 2
i 1
i
Fig. 5.1
i+1
i+2
One-dimensional body.
[ 'Z
K
F[
'Z F [
'Z F [
'Z F [
"
FZ
FZ
FZ
FZ
(5.2a)
F[
'Z F [
'Z F [
'Z F [
"
FZ
FZ
FZ
FZ
(5.2b)
[
K
[ 'Z
K
F[
at node i as
FZ
[ [
1 'Z
'Z
K
(5.3)
[ [
1 'Z
'Z
K
F[
at node i as
FZ
(5.4)
F[
at
Subtracting Eq. (5.2b) from Eq. (5.2a), we get the central difference approximation of
FZ
node i as
F[
FZ
[ [
1 'Z
'Z
K
(5.5)
It is seen that the truncation errors for the forward difference and backward differences are first
order, whereas the central difference yields a second order truncation error. Adding the two
F[
at node i
equations, we get the central difference approximation of
FZ
F[
FZ
[ [ [
1 'Z
'Z
K
(5.6)
It should be noted that these finite difference approximations are only valid to some order of
Dx. The error in the approximations is called the truncation error. It is possible to get
approximations which are valid to higher order by using more grid points in the
approximations. But for our purposes the approximations given above will be sufficient.
A numerical scheme is called consistent if the finite difference approximations have a
truncation error that approaches zero in the limit that Dx 0, Dt 0.
Even if the numerical scheme is consistent, we are still not guaranteed that iterating the
numerical scheme will give a good approximation to the true solution of the differential
equation. A numerical scheme is called convergent if the solution of the discretized equations
approaches the exact solution of the differential equation in the limit that Dx 0, Dt 0.
87
For linear equations the issue of convergence is intimately related to the issue of stability
of the numerical scheme. A scheme is called stable if it does not magnify errors that arise in
the course of the calculation.
As Dx and Dt are made smaller, the truncation error of approximating the derivatives by
finite differences decreases. However, for smaller sizes, more computations need to be done
to get solutions for the same domain and total time, which leads to increased round-off errors.
The total error as a function of these sizes is shown in Fig. 5.2. Here it is assumed that the
solution is calculated on the same domain and for the same total time.
Error
Total error
Truncation
error
Round-off
error
Grid size
Fig. 5.2
For a second order differential equation, two boundary conditions have to be specified and thus
the problem is called the two-point boundary value problem. There are three types of boundary
conditions: Dirichlet, Neumann and mixed. Dirichlet boundary condition is the one in which
the variable is defined such as y = 0 and Neumann boundary condition is the one in which the
F[
. Mixed
gradient of the variable is defined perpendicular to the surface such as
FP
boundary condition is the one which is a combination of Dirichlet and Neumann, such as
F6
M
J 6 6f . A well-posed problem is the one which has a unique solution.
FZ
EXAMPLE 5.1 Using finite difference method, solve the second order one dimensional
linear differential equation
F[
FZ
with the Dirichlet boundary conditions
(0 < x < 1)
at x = 0: y
at x = 1: y
88
Compute the value of y at x = 0.5. Make two parts (see Fig. 5.3). The exact solution is
y = x2 x.
Fig. 5.3
Solution
Example 5.1.
[ [ [
'Z
K
Substituting i = 2, we get
[ [ [
'Z
Since two parts are made, therefore Dx = 0.5. It is given that y1 = 0 and y3 = 0 and we get
[
, which is the same as the exact solution.
EXAMPLE 5.2 Using the finite difference method, solve the second order one dimensional
linear differential equation
F[
FZ
with the following boundary conditions:
At x = 0: y
(0 < x < 1)
F[
Neumann boundary condition
FZ
Compute the value of y at x = 0.5. Make two parts (see Fig. 5.4).
At x = 1:
Solution
2
Fig. 5.4
At node 2
3
Example 5.2.
[ [ [
'Z
Since y1 = 0, we get
'Z
[ [
At node 3
89
[ [ [
'Z
where node 4 is a hypothetical node. From the boundary condition at node 3, we get
[ [
'Z
thus y4 = y2 + 2Dx. Therefore
'Z [ [
'Z
Thus
'Z [ [
'Z
Solving the equations for nodes 2 and 3, we get [ and y3 = 0.
EXAMPLE 5.3 Using finite difference method, solve the differential equation with the
source term f(x)
F[
(0 < x < 1)
[ H Z
FZ
f(x) = 4x2 2x 4
with the Dirichlet boundary conditions
At x = 0: y
At x = 1: y 1
The total length is 1 m. Make 3 parts (see Fig. 5.5). The exact solution is y = 2x2 + x.
Solution
2
Fig. 5.5
3
Example 5.3.
[ [ [
[
'Z
K
At node 2
[ [ [
[
'Z
H
90
[ [
[
[ [ [
At node 3
[ [ [
[
[ [ [
Solving the equations for nodes 2 and 3, we get y2 = 0.111 and y3 = 0.222.
EXAMPLE 5.4 Using finite difference method, solve the differential equation with the
source term f(x)
F[
[
FZ
H Z
H Z
subject to the boundary conditions
(0 < x < 1)
Z Z
At x = 0: y = 0
F[
FZ
The total length is 1 m. Make 3 parts (see Fig. 5.6). The exact solution is y = 2x2 + x.
At x = 1:
3
Fig. 5.6
Solution
Example 5.4.
At node 2
[ [ [
[
'Z
[ [
[
H
[ [ [
At node 3
[ [ [
[
[ [ [ [
At node 4
[ [ [
[
91
[ [ [ [
where node 5 is a hypothetical node. From the boundary condition at node 4, we get
[ [
, therefore y 5 y 3 2 and the equation for node 4 becomes
'Z
[ [ [
Thus the equation of node 2 is
[ [
[
F[
FZ
, [
, y4 = 1.
F [
[
FZ
and y(1) = 1. Take Dx = 0.1 m. Compare the results with the analytical solution
[
EQUJ Z
EQUJ
92
Solution
F[
FZ
y =1
6
Fig. 5.7
11
Example 5.5.
Discretizing the given differential equation at node i using the central difference scheme,
we get
[ [ [
'Z
K
[ 'Z [ [
K
Since Dx = 0.1, therefore Dx2 = 0.01 and the above equation becomes
[ [ [
K
At node 1
[ [ [
Also at node 1,
At node 2
At node 10
F[
FZ
, thus
[ [
'Z
2.01y1 + 2y2 = 0
y1 2.01y2 + y3 = 0
y9 2.01y10 + y11 = 0
[
[
[
93
Node
x (m)
Numerical y
Analytical y
0.0
0.1
0.2
0.3
0.5
0.8
0.9
1
2
3
4
6
9
10
0.6482
0.6515
0.6612
0.6776
0.7309
0.8668
0.9287
0.6481
0.6513
0.6611
0.6774
0.7308
0.8667
0.9287
Fig. 5.8
10
Example 5.6.
Dx = 1.111, T1 = 100C, T10 = 200C. Using the central difference scheme, we get
6 6 6
'Z
6 6 6
94
6
6
6
6
6
6
6
6
6
6
6
6
6
6
EXAMPLE 5.7 A fin of diameter 0.02 m and length 0.05 m is attached to a wall. The
temperature of the wall is 320C. Determine the temperature of the fin at x = 0.0125, 0.025,
0.0375 and 0.05 m using the finite difference technique taking four parts. The thermal
conductivity of the rod is 50 W/m-K and the convective heat transfer coefficient from the rod
to the surroundings is 100 W/m2-K. The temperature of the surroundings is 20C. The
F R J2
governing differential equation is
R , where q = T Tsurr and the boundary
M#
FZ
FR J
condition at x = 0.05 m is
R .
FZ M
The schematic diagram of the fin is shown in Fig. 5.9.
Wall at 320C
Solution
x =0
0.0125
0.025
0.0375
q0 = 300
Fig. 5.9
x = 0.05 m
J2
.
M#
Let O
F R J2
R
FZ M#
R R R
OR
'Z
95
, we get
Simplifying, we get
R O'Z R R
(for i = 1, 2, 3, 4)
R R J
R
'Z
M
R R
J
R 'Z
M
R &
R
M
96
R &
R
M
O
J Q F
J2
M#
QF
M
& O'Z
J
MF
u
u
R
R
R
R
x (m)
q (numerical solution
for 4 parts)
q (analytical
solution)
0.0125
0.025
0.0375
0.05
248.95
213.47
191.32
181.13
248.75
213.13
190.90
180.66
Even when 4 parts are made the difference between the numerical and analytical solution is
meagre. The numerical solution can exactly match with the analytical solution if a greater
number of parts is made.
97
Let us define
O
Thus the differential equation can be written as
(5.7)
M
&
F %
O%
FZ
The boundary conditions are
at x = 0
(5.8)
(5.9)
C = CS
and at x = L
(5.10a)
F%
FZ
where CS is the concentration at the surface of the pore.
(5.10b)
EXAMPLE 5.8 Diffusion and reaction take place in a pore of 1mm in length. The rate
constant of the reaction, k = 103s1 and effective diffusivity of species, D = 109 m2/s. Make
100 parts of the pore and determine the concentration at x = 0.5 mm. The concentration at the
surface of the mouth of the pore is 1 mol/m3.
Solution
We have
O
M
m1
&
m and 100 parts are made, thus 'Z
m. The
schematic diagram of the pore is shown in Fig. 5.10. The first node is labelled 0 and therefore
the last node is the 100th node as 100 parts are made.
F%
FZ
C=1
0
x=0
Fig. 5.10
At x = 0:
C=1
At x = 103 m:
F%
FZ
100
x = 1 mm
98
% % %
%
'Z
K
At node 1
% % %
%
'Z
% % u %
Simplifying, we get
% %
At node 2
% % %
%
'Z
C3 + C1 2C2 104C2 = 0
C1 2.0001C2 + C3 = 0
At node 99
At node 100
F%
FZ
; thus
% %
'Z
%
%
%
%
%
%
99
Exercises
5.1
d2y
y 1 0
dx 2
with the boundary conditions y(0) = y(1) = 0. List the tridiagonal set of equations
and determine y at various values of x. Take Dx = 0.1.
(Ans:
[
[
[
y1 = y(0.1) = 0.041253
y3 = y(0.3) = 0.095313
y4 = y(0.4) = 0.108661
y5 = y(0.5) = 0.113096
y6 = y(0.6) = 0.108661
y7 = y(0.7) = 0.095313
5.2
y2 = y(0.2) = 0.072919
y8 = y(0.8) = 0.072919
y9 = y(0.9) = 0.041253
100
(Ans:
[
[
d2y
dx 2
with the boundary conditions y(1) = 1.175 and y(3) = 10.018. Take Dx = 0.5. List
the tridiagonal set of equations and determine y at various x.
(Ans:
[
[
y3 = y(2.5) = 6.076825.
F[
and F[ . Take Dx = 0.5.
FZ
FZ
List the tridiagonal set of equations and determine y at various x.
[
[
[
[
5.5
101
Consider 1-D steady state conduction without heat generation taking place in a
rectangular slab. The temperature of the left side of the slab is 100C and of the
right side is 50C. The length of the slab is 1 m and the thermal conductivity of the
slab is 120 W/cm-K. Take Dx = 0.1 m. Determine the temperature distribution in
the slab and list the tridiagonal set of equations. The governing equation is
F 6
.
FZ
(Ans: The tridiagonal set of equations are
6
6
6
6
T1 = T(0.1) = 95.0
T3 = T(0.3) = 85.0
T4 = T(0.4) = 80.0
T5 = T(0.5) = 75.0
T6 = T(0.6) = 70.0
T7 = T(0.7) = 65.0
T8 = T(0.8) = 60.0
T9 = T(0.9) = 55.0
A fin of diameter 0.02 m and length 0.08 m is attached to a wall (see Fig. 5.11).
The temperature of the wall is 200C. List the tridiagonal set of equations and
determine the temperature of the fin at x = 0.02, 0.04, 0.06 and 0.08 m, using the
finite difference technique taking four parts. The thermal conductivity of rod is
25 W/m-K and convective heat transfer coefficient from rod to surroundings is
40 W/m2-K. The temperature of surroundings is 25C. The governing differential
F R J2
equation is
R , where q = T Tsurr and boundary condition at
M#
FZ
FR J
x = 0.08 m is
R .
FZ M
0
Wall at 200C
5.6
T2 = T(0.2) = 90.0
x=0
0.02
Fig. 5.11
0.04
0.06
x = 0.08 m
Exercise 5.6.
102
R
R
R
R
q1 = q (0.02) = 128.49
q2 = q (0.04) = 98.44
q3 = q (0.06) = 80.98
q4 = q (0.08) = 73.88
5.7
Diffusion and reaction take place in a pore of 1mm in length. The rate constant of
the reaction, k = 2.5 104s1 and effective diffusivity of species, D = 109 m2/s. Make
10 parts of the pore. List the tridiagonal set of equations and determine the
concentration along x. The concentration at the surface of the mouth of the pore is
F%
.
1 mol/m3 and at pore end
FZ
(Ans: The tridiagonal set of equations are
%
%
%
%
C3 = C(0.3) = 0.941703
C6 = C(0.6) = 0.904631
C9 = C(0.9) = 0.887947
Diffusion and reaction take place in a pore of 1 mm in length. The rate constant of
the reaction, k = 0.1 s1 and effective diffusivity of species, D = 109 m2/s. Make
10 parts of the pore. List the tridiagonal set of equations and determine the
concentration along x. The concentration at the surface of the mouth of the pore is
F%
.
1 mol/m3 and at pore end
FZ
(Ans: The tridiagonal set of equations are
%
%
%
%
103
C1 = C(0.1) = 0.381966
C2 = C(0.2) = 0.145898
C3 = C(0.3) = 0.055728
C4 = C(0.4) = 0.021286
C5 = C(0.5) = 0.008131
C6 = C(0.6) = 0.003107
C7 = C(0.7) = 0.001190
C8 = C(0.8) = 0.000463
C9 = C(0.9) = 0.000198
Water flows between the two fixed parallel plates as shown in Fig. 5.12. Fluid
moves in the x-direction parallel to the plates and there is no velocity in the y
direction. The spacing between the plates is 0.02 m and pressure gradient is 100
Pa/m. The viscosity of water under the flow conditions is 0.001 kg/m-s. Using the
finite difference method, solve the velocity profile equation
wR
w W
N
wZ
w[
x
h
Fig. 5.12
Determine the velocity at various nodes between the symmetry line and the wall.
Make 10 parts. Compare the numerical solution with the analytical solution
W
(Ans:
R
[ J .
N Z
W
W
104
x (m)
Node
u, Numerical (m/s)
0.000
0.001
0.002
0.003
0.004
0.005
0.006
0.007
0.008
0.009
1
2
3
4
5
6
7
8
9
10
5.00
4.95
4.80
4.55
4.20
3.75
3.20
2.55
1.80
0.95
u, Analytical (m/s)
5.00
4.95
4.80
4.55
4.20
3.75
3.20
2.55
1.80
0.95
Chapter 6
ConvectionDiffusion Problems
The convection-diffusion equation for the transport of a component of concentration C is
given by
W
F%
F %
&
FZ
FZ
F%
F %
is the convection term and & is the diffusion term. The
FZ
FZ
central difference scheme (CDS) or the upwind difference scheme (UDS) can be used for the
discretization of the convection term, whereas CDS is used for the discretization of the
diffusion term. The comparison of the central difference and upwind difference schemes for
the discretization of convection term is also discussed here.
F%
FZ
% %
'Z
K
( x, u)
(6.1)
and for information propagated from right to left discretization of convection term at node i
is given by
F% % %
( x, u)
(6.2)
FZ
'Z
This is shown in Fig. 6.1.
K
105
106
% % %
'Z
F%
FZ
( x, u)
(6.3)
and for information propagated from right to left, discretization of convection term at node i
is given by
F%
FZ
% % %
'Z
K
Direction of flow
i2
i1
( x, u)
(6.4)
i+1
i+2
i+3
F%
FZ
% %
'Z
K
(a)
i2
Fig. 6.1
i1
Direction of flow
(b)
i +1
i+2
i+3
F%
FZ
% %
'Z
K
Discretization of convection term using first order upwind method: (a) Direction of flow
and space identical; (b) Direction of flow opposite to direction of space.
Let us now derive the formula for second order upwind scheme. Since upwind scheme is onesided, we shall consider nodes near to a boundary (see Fig. 6.2). Assume that C can be
expressed near the boundary by the polynomial
C = a + bx + cx2
ConvectionDiffusion Problems
107
3
u
Dx
2
Dx
Boundary
1
Fig. 6.2
At point 1 (x = 0)
At point 2 (x = Dx)
At point 3 (x = 2Dx)
C1 = a
C2 = a + bDx + cDx2
C3 = a + 2bDx + 4cDx2
% % %
'Z
D
We find b because it is equal to
and at x = 0,
F%
F%
at the wall (at node 1). This is because
FZ
FZ
D EZ
F%
= b. Therefore at point 1
FZ
% % %
'Z
F%
FZ
This is a one-sided finite difference expression for the derivative at the boundary. This
becomes the basis for second order upwind scheme
%
Z
% % %
'Z
K
% % %
'Z
K
Oscillations do not take place when first order upwind scheme is used for discretization of
convection term.
108
x=0
Fig. 6.3
One-dimensional space.
F%
F %
&
FZ
FZ
Z 2G .
%. %
2G
where Pe is the Peclet number, the ratio of strength of convection by strength of diffusion, and
W.
. Take Pe 50 .
is given by 2G
&
Solution
We have
(i) Central difference scheme for both diffusion and convection terms
Using central difference scheme (CDS) at node i, we get
% %
% % %
W
&
'Z
'Z
Multiplying by
'Z
, we get
&
W'Z
% % % % %
&
The local Peclet number is given by
K
2G
NQE
W 'Z
&
ConvectionDiffusion Problems
109
2G
NQE
Let B
Thus
2G
NQE
and C
2G
NQE
% % 2G
K
NQE
%
K
C % % B %
K
Let the total length be 1 m and let us make 50 parts of the length; therefore 'x
schematic diagram is shown in Fig. 6.4.
0
x=0
C = C0
10
20
Fig. 6.4
At node 0,
At node 1
30
40
0.02 m. The
50
x = 1
C = C50
Schematic diagram.
C = C0.
C % % B %
C %
At node 2
C % % B %
C % % B %
At node 3
At node 48
C % % B %
C % % B %
At node 49
At node 50 the value of C50 is known; therefore the equation for node 49 becomes
C % %
B %
Thus the set of equations for value of C at node 1 to 49 using central difference scheme for
both the diffusion and convection terms becomes
110
B
%
C
%
B
%
C
B
C
B
%
%
C
B
C B
%
C
B %
C %
C %
B %
W
W 'Z
and the local Peclet number becomes 2G
u . Thus
&
&
a = Peloc 2 = 1 and b = Peloc + 2 = 3. The solution can be obtained by modifying the
parameters ai (i = 2 to N), bi (i = 1 to N) and ci (i = 1 to N 1) in Program 1.1 given in the
Appendix. The numerical and analytical results are shown in Table 6.1.
For Pe = 50,
NQE
(ii) Central difference scheme for diffusion term and upwind difference scheme for convection term
Using the upwind difference scheme (UDS) for the convection term and the central difference
scheme for the diffusion term at node i, we get
% %
% % %
W
&
'Z
'Z
On multiplying by
'Z
, the discretized equation at node i becomes
&
2G % 2G % %
NQE
NQE
= Peloc + 1
H % C % %
K
Let the total length be 1 m and let us make 50 parts of the length; therefore Dx = 0.02 m. At
node 0, C = C0.
At node 1
H % C % %
Since the value of C0 is known, therefore the equation at node 1 becomes
At node 2
C % %
H %
H % C % %
ConvectionDiffusion Problems
At node 3
H % C % %
At node 48
H % C % %
At node 49
111
At node 50 the value of C50 is known; therefore the equation for node 49 becomes
H % C %
%
Thus the set of equations for value of C at node 1 to 49 using the central difference scheme
for the diffusion term and the first order upwind scheme for the convection term becomes
C
H
C
H
%
%
%
C
C
H
%
%
C
H
H C
%
H
C %
H C %
H %
%
W
W 'Z
and the local Peclet number becomes 2G
u . Thus
&
&
b = Peloc + 2 = 3 and g = Peloc + 1 = 2. The solution can be obtained by modifying the
parameters ai (i = 2 to N), bi (i = 1 to N) and ci (i = 1 to N 1) in Program 1.1 given in the
Appendix. The numerical and analytical results are shown in Table 6.1.
For Pe = 50,
NQE
Table 6.1
Node number
42
43
44
45
46
47
48
49
x (m)
C (CDS)
0.84
0.86
0.88
0.90
0.92
0.94
0.96
0.98
0.000152
0.000457
0.001372
0.004115
0.012346
0.037037
0.111111
0.333333
C (CDS/UDS)
0.003906
0.007813
0.015625
0.031250
0.062500
0.125000
0.250000
0.500000
G Z
(Analytical)
G
0.000335
0.000912
0.002479
0.006738
0.018316
0.049787
0.135335
0.367879
112
The central difference scheme is a second order scheme and is therefore more accurate,
whereas upwind scheme used is first order and is therefore less accurate. But if more parts are
made, then more accurate results are obtained. The importance of first order upwind scheme
is shown in the next example.
EXAMPLE 6.2
Solution
We have
(i) Central difference scheme for both diffusion and convection terms
W
W 'Z
and the local Peclet number becomes 2G
u .
&
&
Thus a = Peloc 2 = 8 and b = Peloc + 2 = 12. The solution can be obtained by modifying
the parameters ai (i = 2 to N), bi (i = 1 to N) and ci (i =1 to N 1) in Program 1.1 given in
the Appendix. The numerical results are shown in Table 6.2.
For Pe = 500,
NQE
(ii) Central difference scheme for diffusion term and upwind difference scheme for convection term
W
W 'Z
and the local Peclet number becomes 2G
u .
&
&
Thus b = Peloc + 2 = 12 and g = Peloc + 1 = 11. The solution can be obtained by modifying
the parameters ai (i = 2 to N), bi (i = 1 to N) and ci (i = 1 to N 1) in Program 1.1 given in
the Appendix. The numerical results are shown in Table 6.2.
For Pe = 500,
NQE
Table 6.2
Node number
x (m)
C (CDS)
C (CDS/UDS)
42
43
44
45
46
47
48
49
0.84
0.86
0.88
0.90
0.92
0.94
0.96
0.98
0.039018
0.058528
0.087791
0.131687
0.197531
0.296296
0.444444
0.666667
0.000000
0.000000
0.000000
0.000006
0.000060
0.000751
0.008264
0.090909
When the local Peclet number is much below 1, then diffusion is dominant and when the local
Peclet number is much above 1, then convection is dominant. When the central difference
scheme is used for the discretization of both the diffusion and convection terms, then for all
local Peclet number greater than zero, b > 0 but a changes sign at Peloc = 2. The subdiagonal
elements are negative, diagonals are positive and superdiagonals are negative for Peloc < 2,
whereas for Peloc > 2 the subdiagonals elements are negative, diagonals are positive and
superdiagonals are positive. It is seen that when Peloc > 2, oscillations occur in the solution of
CDS, whereas, when UDS is used for discretization of the convection term, then for all values
ConvectionDiffusion Problems
113
of Peloc the subdiagonal elements are negative, diagonals are positive and superdiagonals are
negative. When first order method (UDS) is used, oscillations do not occur. Note that the sign
of subdiagonal, diagonal and superdiagonal elements in UDS match that of CDS for Peloc < 2.
Thus if oscillations occur when CDS is used, then a larger number of parts can be made so that
Dx becomes less and thus Peloc becomes less than 2, or UDS can be used to avoid oscillations.
7&5
% %
'Z
K
(6.1)
% % % % % %
'Z
'Z
'Z
(6.5)
Thus
F%
FZ
F%
FZ
F%
FZ
F%
FZ
F%
FZ
F%
FZ
7&5
7&5
7&5
7&5
7&5
7&5
F%
FZ
F%
FZ
F%
FZ
F%
FZ
F%
FZ
F%
FZ
%&5
% % % %
'Z
'Z
(6.6)
% % % %
'Z
'Z
(6.7)
% % % %
'Z
(6.8)
% % %
'Z
(6.9)
%&5
%&5
%&5
%&5
'Z % % %
'Z
(6.10)
'Z F %
FZ
(6.11)
%&5
W
F%
FZ
7&5
&
F %
FZ
(6.12)
114
F%
W
FZ
F%
W
FZ
'Z F %
F %
&
FZ
FZ
W'Z F %
F %
&
FZ
FZ
%&5
(6.13)
Thus UDS is equivalent to adding the additional numerical diffusion (or artificial diffusion)
term to the CDS. The effective diffusion coefficient is
&GHH
&
W 'Z
(6.14)
2G
NQEGHH
W'Z
&
GHH
W'Z
W'Z
&
&
W'Z
2G
(6.15)
NQE
Thus due to the addition of the numerical diffusion term, the effective local Peclet number is
always less than 2, whatever the value of the local Peclet number and thus oscillations do not
occur when first order UDS is used.
Exercises
6.1
%
%
%
%
ConvectionDiffusion Problems
115
x (m)
C (analytical)
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
6.2
C (numerical CDS)
0.999966
0.999865
0.999560
0.998645
0.995902
0.987671
0.962979
0.888904
0.666678
0.999922
0.999710
0.999133
0.997567
0.993307
0.981729
0.950256
0.864704
0.632149
%
%
and the results are shown in Table 6.4.
W
Table 6.4
x (m)
C (numerical CDS/UDS)
C (analytical)
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.999023
0.997068
0.993157
0.985337
0.969697
0.938417
0.875855
0.750733
0.500489
0.999922
0.999710
0.999133
0.997567
0.993307
0.981729
0.950256
0.864704
0.632149
116
6.3
Since the first order upwind is used for the discretization of the convection term,
therefore more parts are a must for a better answer as the first order method is
O(Dx).
W
Solve Exercise 6.1 for
m1. Compare the numerical result with the
&
G Z
analytical solution % Z
.
G
(Ans:
%
%
and the results are shown in Table 6.5.
Table 6.5
x (m)
C (analytical)
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
6.4
C (numerical CDS)
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
0.999999
0.999999
0.999999
0.999994
0.999955
0.999665
0.997521
0.981684
0.864665
In this problem the local Peclet number is 2.0; therefore central difference gives a
wrong answer.
W
Solve Exercise 6.2 for
m1. Compare the numerical result with the
&
G Z
analytical solution % Z
.
G
(Ans: The tridiagonal set of equations are
%
%
%
%
ConvectionDiffusion Problems
117
x (m)
C (analytical)
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
6.5
C (numerical CDS/UDS)
0.999966
0.999865
0.999560
0.998645
0.995902
0.987671
0.962979
0.888904
0.666678
0.999999
0.999999
0.999999
0.999994
0.999955
0.999665
0.997521
0.981684
0.864665
Since the first order upwind method is used for the discretization of the convection
term, therefore more parts are a must for a better answer as the first order method
is O(Dx).
W
Solve Exercise 6.1 for
m1. Compare the numerical result with the
&
G Z
analytical solution % Z
.
G
(Ans:
%
%
x (m)
C (numerical CDS)
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.000697
0.999071
1.002865
0.994011
1.014670
0.966466
1.078942
0.816497
1.428870
C (analytical)
1.000000
1.000000
1.000000
1.000000
1.000000
0.999999
0.999999
0.999955
0.993262
118
In this problem the local Peclet number is greater than 2.0; therefore central
difference gives oscillations.
6.6
W
&
G Z
analytical solution % Z
.
G
(Ans: The tridiagonal set of equations are
%
%
%
%
C (numerical CDS/UDS)
1.000000
1.000000
0.999997
0.999979
0.999872
0.999229
0.995371
0.972223
0.833334
C (analytical)
1.000000
1.000000
1.000000
1.000000
1.000000
0.999999
0.999999
0.999955
0.993262
Since the first order upwind method is used for the discretization of convection
term, therefore more parts are a must for a better answer as the first order method
is O(Dx)).
Chapter 7
Boundary conditions and ODEs for tubular reactor with axial dispersion
Boundary condition
at x = 0
Boundary condition
at x = L
M
# $
o
W% # KP
W%$ KP
F% #
FZ
F%$
W% $ &
FZ
W% # &
F% #
FZ
F%$
FZ
M
M
# $ %
o
o
W% # KP
W%$ KP
W%% KP
F% #
FZ
F%$
W% $ &
FZ
F%%
W%% &
FZ
W% # &
o
# $ %
M
$ % &
o
F% #
FZ
F%$
FZ
F%%
FZ
F % #
F%
W # M% #
FZ
FZ
F %$
F%$
&
W
M% # M%$
FZ
FZ
F %%
F%
&
W % M%$
FZ
FZ
&
M
119
120
W% #
W%$
W%%
KP
KP
KP
W%&
KP
F% #
FZ
F%$
FZ
F%%
FZ
F%&
FZ
F% #
FZ
F%$
W% $ &
FZ
F%%
W%% &
FZ
F%&
W%& &
FZ
W% # &
(Cont.)
&
&
&
&
F % #
FZ
W
F% #
M% #%$
FZ
F % $
F%
W $ M% #% $ M%$%%
FZ
FZ
F %%
FZ
W
F%%
M% #%$ M% $%%
FZ
F % &
F%
W & M% $%%
FZ
FZ
dx
Fig. 7.1
= uCA
(7.1)
F%
#
FZ
(7.2)
F%
FZ #
= W%
FZ
(7.3)
F% F F%
= &
FZ #
FZ FZ FZ
(7.4)
= &
that leaving through convection
Accumulation
=
F%
#FZ
FV
(7.5)
121
W%# &
F% F F%
F%
F%
# W%
FZ # &
FZ #
FZ
FZ
FZ FZ FZ
F%
FZ
FV
W
F%
F F%
FZ &
FZ
FZ
FZ FZ
F%
FV
F %
&
FZ
W
F%
FZ
(7.6)
(7.7)
(7.8)
At steady state and if reaction also occurs in the tubular vessel, we get
&
F %
FZ
W
F%
T
FZ
(7.9)
C now refers to the concentration of the reactant or product. r is a net positive quantity if C
refers to a reactant and negative if C refers to a product.
Use of a dispersion model changes the reactor analysis from an initial value problem to
a boundary value problem. The boundary conditions proposed by Danckwerts are
At inlet:
W%
At exit:
F%
FZ
W% &
KP
F%
FZ
(7.10)
(7.11)
At the reactor inlet, the flux entering is uCin but once inside the reactor and in the presence
of dispersion, the flux is
W% &
F%
FZ
KP
W% &
F%
FZ
If the reaction stops once the stream leaves the reactor, the concentration profile becomes
F%
uniform, and the outlet boundary condition becomes
.
FZ
EXAMPLE 7.1 Consider a reaction A B carried out in a tubular reactor. The differential
equation for species A along the length of the tubular reactor of length 10 m is
&
F % #
FZ
W
F% #
M% #
FZ
122
At x = 0 (inlet):
KP
W% # &
F% #
FZ
F% #
FZ
A fluid medium comprising initially only A flows through the reactor with a mean axial
velocity u = 1 m/s. The axial dispersion coefficient, D = 104 m2/s and rate constant of the
reaction is 1 s1. The inlet concentration, CA,in = 1 mol/m3. Make 50, 20, and 10 parts of the
reactor and determine the concentration of A at various nodes along the length of the tubular
reactor.
At x = 10 m (exit):
Solution
We have
Z1
Z1
Fig. 7.2
Example 7.1.
m
We solve the differential equation using upwind difference scheme for convection term.
Discretizing the differential equation at node i, we get
'Z
% %
%
& #
'Z
#K
#K
%
W
#K
%
'Z
#K
M%
#K
At node 1
% % # % #
% # % #
& #
W
'Z
'Z
M% #
W
&
W
&
&
% #
M % # % #
'Z
'Z
'Z
'Z
'Z
% % #
W% # & #
'Z
123
W 'Z
% #KP % # % #
&
&
% #
M % #
% #KP % # % #
'Z
'Z &
'Z
'Z
'Z
& W
W
W
&
M
% #
% #
'Z
'Z
&
'Z
'Z
W W
% #KP
&
'Z
At node 2
W
W
&
&
&
M % # % #
% #
'Z
'Z
'Z
'Z
'Z
W
W
&
&
&
M % # % #
% #
'Z
'Z
'Z
'Z
'Z
At node 3
At node 51
W
W
&
&
&
M % # % #
% #
'Z
'Z
'Z
'Z
'Z
'Z
thus
CA52 = CA50
M % #
% #
'Z
'Z
'Z
'Z
Coefficient of % #
&
'Z
&
'Z
W
'Z
W
W
M
'Z
&
u
u
W W
Right hand side of equation 1 =
& 'Z % #
KP
124
&
'Z
&
'Z
W
'Z
W
M
'Z
u
&
'Z
Right hand side of equation 2 = 0.
The coefficients of equation 3 (at node 3) are
Coefficient of % #
Coefficient of % #
Coefficient of % #
&
'Z
&
'Z
W
'Z
W
M
'Z
u
&
'Z
Right hand side of equation 3 = 0.
The coefficients of equation 51 (at node 51) are
Coefficient of % #
Coefficient of % #
&
'Z
&
'Z
W
'Z
u
W
M
'Z
u
%
#
% #
125
Node number
x (m)
CA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
51
0.0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
1.6
1.8
2.0
2.2
2.4
2.6
2.8
3.0
3.2
3.4
3.6
3.8
4.0
4.2
4.4
10.0
0.999908
0.833268
0.694400
0.578675
0.482236
0.401869
0.334895
0.279083
0.232573
0.193813
0.161513
0.134596
0.112165
0.093472
0.077895
0.064913
0.054095
0.045080
0.037567
0.031306
0.026089
0.021741
0.018118
0.000110
More conversion would have occurred if the reactor is assumed to be ideal plug flow.
Concentration profile for 20 parts
If 20 parts of the reactor are made, then 'Z
m. The coefficients of the 21 equations
at 21 nodes are as given below.
The coefficients of equation 1 (at node 1) are
Coefficient of % #
Coefficient of % #
&
'Z
W
W
M
&
'Z
u
&
'Z
W
'Z
u
W W
Right hand side of equation 1 =
& 'Z % #
KP
126
&
'Z
&
'Z
W
'Z
W
M
'Z
&
'Z
u
&
'Z
&
'Z
W
'Z
W
M
'Z
&
'Z
u
Coefficient of % #
&
'Z
&
'Z
W
'Z
u
W
M
'Z
u
% #
% #
127
Node number
x (m)
1
3
5
7
9
11
13
15
17
19
21
CA
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
0.999917
0.444400
0.197500
0.087800
0.039000
0.017300
0.007700
0.003400
0.001500
0.000677
0.000301
&
'Z
&
'Z
W
W
M
'Z
&
W
'Z
u
u
KP
Coefficient of % #
Coefficient of % #
&
'Z
&
'Z
W
'Z
W
M
'Z
u
&
'Z
W
'Z
'Z
Right hand side of equation 2 = 0.
The coefficients of equation 3 (at node 3) are
Coefficient of % #
&
W W
Right hand side of equation 1 =
& 'Z % #
128
Coefficient of % #
Coefficient of % #
&
'Z
W
M
'Z
&
'Z
u
Coefficient of % #
&
'Z
&
'Z
u
W
'Z
W
M
'Z
u
% #
Node number
1
2
3
4
5
6
7
8
9
10
11
x (m)
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
CA
0.999925
0.499975
0.249994
0.125000
0.062502
0.031252
0.015626
0.007813
0.003907
0.001953
0.000977
129
&
F % #
FZ
W
F% #
M% #
FZ
At x = 0 (inlet):
W% # &
KP
F% #
FZ
F% #
FZ
A fluid medium comprising initially only A flows through the reactor with a mean axial
velocity u = 1 m/s. The axial dispersion coefficient, D = 104 m2/s and rate constant of the
reaction is 1 m3/mol-s. The inlet concentration CA,in =1 mol/m3. Make 20 parts of the reactor
and determine the concentration of A at various nodes along the length of the tubular reactor.
At x = 10 m (exit):
Coefficient of % #
&
'Z
W
W
M% #
&
'Z
u
&
'Z
W
'Z
% #
u
% #
W W
Right hand side of equation 1 =
& 'Z % #
KP
&
'Z
W
'Z
130
Coefficient of % #
Coefficient of % #
&
'Z
W
M% #
'Z
u
% #
% #
% #
% #
&
'Z
Right hand side of equation 2 = 0.
The coefficients of equation 3 (at node 3) are
Coefficient of % #
Coefficient of % #
Coefficient of % #
&
'Z
&
'Z
W
'Z
W
M% #
'Z
u
&
'Z
Right hand side of equation 3 = 0.
The coefficients of equation 21 (at node 21) are
Coefficient of % #
Coefficient of % #
&
'Z
&
'Z
W
'Z
u
W
M% #
'Z
u
% #
% #
% #
% #
%
#
#
% # % #
Program 7.1 for the solution of the above problem is given in the Appendix. In the program
the initial values of concentration of A at nodes 1 to 21 is assumed and then the TDMA is used
to determine new values of concentration of A at nodes 1 to 21. Again, these values are used
to determine the coefficients in the matrix, and after the coefficients are determined the TDMA
is used to determine new values of concentration of A at nodes 1 to 21. The procedure is
repeated till there is no change in the concentration at each node. The results are presented in
Table 7.5.
131
Node number
x (m)
1
3
5
7
9
11
13
15
17
19
21
CA
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
0.999923
0.569732
0.387587
0.290241
0.230588
0.190624
0.162124
0.140841
0.124379
0.111286
0.100638
Assuming the axial dispersion coefficient to be the same for all the species, the concentration
of various species along the length of the reactor are given by the following differential
equations:
for component A
F % #
&
FZ
W
F% #
M% #%$
FZ
for component B
&
F % $
&
F %%
FZ
W
F%$
M% #%$ M%$%%
FZ
W
F%%
M% #%$ M%$%%
FZ
for component C
FZ
for component D
&
F % &
FZ
W
F%&
M%$%%
FZ
132
KP
W% $
W%%
At inlet:
W% &
F% #
FZ
At exit:
F%$
FZ
W% # &
F% #
FZ
W% $ &
F% $
FZ
W%% &
F%%
FZ
W% & &
F% &
FZ
KP
KP
KP
F%%
FZ
F%&
FZ
CPF
Make 20 parts of the reactor of length 10 m. A fluid medium comprising initially only A and
B flows through the reactor with a mean axial velocity u = 1 m/s. The axial dispersion
coefficient is the same for all the species, D = 104 m2/s, and the rate constants of the reactions
are k1 = k2 = 1 m3/mol-s. The inlet concentrations of A and B are CA,in = CB,in = 1 mol/m3.
Compute the concentration of various species along the length of the reactor.
Solution
We have
'Z
m
We solve the differential equation using the upwind difference scheme for the convection term.
Discretizing the differential equation at node i, we get for species A
% %
%
& #
'Z
#K
#K
%
W
#K
%
'Z
#K
M% %
#K
$K
for species B
% %
%
%
& $
W
'Z
$K
$K
$K
%
'Z
$K
M% % M% %
#K
$K
$K
%K
for species C
%%K %%K
%
& %K
'Z
%%K %%K
W
M% #K % $K M% $K %%K
'Z
for species D
% %
%
& &
'Z
&K
&K
%
W
&K
%
'Z
&K
M% %
$K
%K
133
M% #% $
W
&
W
&
&
% #
M% $ % # % #
'Z
'Z
'Z
'Z
'Z
From the boundary condition at node 1, we get
W% #KP
% % #
W% # & #
'Z
W
&
W W 'Z
&
&
% #
M% $ % #
% #KP % # % #
'Z
'Z &
'Z
'Z
'Z
& W
W
W
&
M%$
% #
% #
'Z
'Z
&
'Z
'Z
W W
% #KP
&
'Z
% % $ %$
% $ %$
& $
W
M% #%$ M% $%%
'Z
'Z
W
&
W
&
&
% $
M% # M%% % $ % $
'Z
'Z
'Z
'Z
'Z
From the boundary condition at node 1, we get
W%$KP
% %$
W%$ & $
'Z
W 'Z
%$KP %$ %$
&
&
% $
M% # M%% % $
%$KP %$ %$
'Z
'Z &
'Z
'Z
'Z
& W
W
W
&
M% # M%%
%$
%$
'Z
'Z
&
'Z
'Z
W W
%$KP
&
'Z
134
W
&
W
&
&
%%
M % $ %% %%
'Z
'Z
'Z
'Z
'Z
From the boundary condition at node 1, we get
M% #%$
% %%
W%% & %
'Z
W'Z%%
%%
&
Substituting for CC0, in the equation for node 1, we get
%%
W
&
W W 'Z%%
&
&
%%
M% $ %%
%%
&
'Z
'Z
'Z
'Z
'Z
& W
W
W
&
M%$
%%
%%
'Z
'Z
&
'Z
'Z
M% #% $
M% #%$
M %$%%
W
&
W
&
&
% &
% & %&
' Z 'Z
'Z
'Z
'Z
From the boundary condition at node 1, we get
M%$%%
% %&
W% & & &
'Z
W
&
W W 'Z% &
&
&
% &
%&
%&
'Z 'Z
'Z
&
'Z
'Z
& W W
W
&
%
%
'Z 'Z
& 'Z 'Z &
&
M%$%%
M% $%%
M% $ % # % #
% #
'Z
'Z
'Z
'Z
'Z
W
W
&
&
&
W
W
&
&
&
M %$ %% %%
%%
'Z
'Z
'Z
'Z
'Z
W
W
&
&
&
% &
%& % &
'Z
'Z
'Z
'Z
'Z
At node 21 the discretized equation for component A is
M% # % $
M %$ %%
W
W
&
&
&
M% $ % # % #
% #
'Z
'Z
'Z
'Z
'Z
% # % #
thus CA22 = CA20
'Z
W
W
&
&
M%$ % #
% #
'Z
'Z
'Z
'Z
W
W
&
&
&
% $ % $
thus CB22 = CB20
'Z
W
W
&
&
M %$ %% %%
%%
'Z
'Z
'Z
'Z
'Z
'Z
135
136
M%$ %%
%%
'Z
'Z
'Z
'Z
W
W
&
&
&
% &
% & % &
'Z
'Z
'Z
'Z
'Z
From the boundary condition at node 21, we get
%& %&
'Z
M% $ %%
M% $%%
u
%$
%$
Coefficient of CB1 = 0
Coefficient of CC1 = 0
Coefficient of CD1 = 0
Coefficient of % #
u
Coefficient of CB2 = 0
Coefficient of CC2 = 0
Coefficient of CD2 = 0
W W
Right hand side of equation 1 =
& 'Z % #
KP
u
% # %%
% # %%
Coefficient of %$
u
Coefficient of CC2 = 0
Coefficient of CD2 = 0
W W
Right hand side of equation 2 =
& 'Z %$
KP
u
%$
%$
Coefficient of CD1 = 0
Coefficient of CA2 = 0
Coefficient of CB2 = 0
Coefficient of CC2 =
u
Coefficient of CD2 = 0
Right hand side of equation 3 = CA1CB1.
The coefficients of equation 4 (node 1, species D) are:
Coefficient of CA1 = 0
Coefficient of CB1 = 0
Coefficient of CC1 = 0
Coefficient of %&
u
Coefficient of CA2 = 0
Coefficient of CB2 = 0
Coefficient of CC2 = 0
u
Right hand side of equation 4 = CB1CC1.
Coefficient of %&
137
138
Coefficient of CB1 = 0
Coefficient of CC1 = 0
Coefficient of CD1 = 0
Coefficient of % #
u
%$
%$
Coefficient of CB2 = 0
Coefficient of CC2 = 0
Coefficient of CD2 = 0
Coefficient
Coefficient
Coefficient
Right hand
of CB3 = 0
of CC3 = 0
of CD3 = 0
side of equation 5 = 0.
Coefficient of % #
Coefficient of CC1
Coefficient of CD1
Coefficient of CA2
=0
=0
=0
Coefficient of %$
u
% # %%
% # %%
Coefficient of CC2 = 0
Coefficient of CD2 = 0
Coefficient of CA3 = 0
Coefficient of %$
Coefficient of CC3 = 0
Coefficient of CD3 = 0
Right hand side of equation 6 = 0.
Coefficient of CD1 = 0
Coefficient of CA2 = 0
Coefficient of CB2 = 0
Coefficient of %%
u
%$
%$
Coefficient of CD2 = 0
Coefficient of CA3 = 0
Coefficient of CB3 = 0
Coefficient of CD3 = 0
Right hand side of equation 7 = CA2CB2
Coefficient of %%
Coefficient of CA2
Coefficient of CB2
Coefficient of CC2
=0
=0
=0
Coefficient of %&
u
Coefficient of CA3 = 0
Coefficient of CB3 = 0
Coefficient of CC3 = 0
Right hand side of equation 8 = CB2CC2.
Coefficient of %&
u
Coefficient of CB20 = 0
Coefficient of CC20 = 0
Coefficient of CD20 = 0
139
140
Coefficient of % #
Coefficient
Coefficient
Coefficient
Right hand
u
%$
%$
of CB21 = 0
of CC21 = 0
of CD21 = 0
side of equation 81 = 0.
u
Coefficient of CC20 = 0
Coefficient of CD20 = 0
Coefficient of CA21 = 0
Coefficient of %$
u
% # %%
% # %%
Coefficient of CC21 = 0
Coefficient of CD21 = 0
Right hand side of equation 82 = 0.
The coefficients of equation 83 (node 21, species C) are:
Coefficient of CA20 = 0
Coefficient of CB20 = 0
Coefficient of %%
u
Coefficient of CD20 = 0
Coefficient of CA21 = 0
Coefficient of CB21 = 0
Coefficient of %%
u
%$
%$
Coefficient of CD21 = 0
Right hand side of equation 83 = CA21CB21.
The coefficients of equation 84 (node 21, species D) are:
Coefficient of CA20 = 0
Coefficient of CB20 = 0
Coefficient of CC20 = 0
Coefficient of %&
u
141
Coefficient of CA21 = 0
Coefficient of CB21 = 0
Coefficient of CC21 = 0
u
Right hand side of equation 84 = CB21CC21.
Coefficient of %&
Thus the set of equations for concentration of species A, B, C, and D at nodes 1 to 21 can be
written in the block tridiagonal form as
$
#
%
$ %
# $
#
%
$ %
# $
#
%
$ %
#
$
#
:
:
:
:
:
:
% :
$ :
&
&
&
&
&
&
&
&
where
:
For node 1
%$
$
% #
%
$
%%
%&
:
% #
%
$
%%
%&
% # %%
:
% #
%
$
%%
%&
% $
142
%
&
% #%$
%$%%
For node 2
#
$
%
&
For node 3
#
$
% $
% # %%
% $
% #%$
%$%%
% $
% # %%
% $
%
&
For node 21
#
$
&
143
% #%$
%$%%
%$
% # %%
%$
% #%$
%$%%
>% #
%$ %% %& % # %$ %% %& @
The Gauss elimination method can be used to solve these 84 linear algebraic equations. The
non-zero elements of the matrix A are
A(1,1) = 20005.9992CB1, A(1,5) = 2.0008, A(2,2) = 20005.9992CA1CC1, A(2,6) = 2.0008
A(3,3) = 20005.9992CB1, A(3,7) = 2.0008, A(4,4) = 20005.9992, A(4,8) = 2.0008, A(5,1)
= 2.0004, A(5,5) = 2.0008CB2, A(5,9) = 0.0004, A(6,2) = 2.0004, A(6,6) = 2.0008CA2CC2,
A(6,10) = 0.0004, A(7,3) = 2.0004, A(7,7) = 2.0008CB2, A(7,11) = 0.0004, A(8,4) = 2.0004,
A(8,8) = 2.0008, A(8,12) = 0.0004, A(9,5) = 2.0004, A(9,9) = 2.0008CB3, A(9,13) = 0.0004,
A(10,6) = 2.0004, A(10,10) = 2.0008CA3CC3, A(10,14) = 0.0004, A(11,7) = 2.0004,
A(11,11) = 2.0008CB3, A(11,15) = 0.0004, A(12,8) = 2.0004, A(12,12) = 2.0008, A(12,16)
= 0.0004, A(13,9) = 2.0004, A(13,13) = 2.0008CB4, A(13,17) = 0.0004, A(14,10) = 2.0004,
A(14,14) = 2.0008CA4CC4, A(14,18) = 0.0004, A(15,11) = 2.0004, A(15,15) = 2.0008CB4,
A(15,19) = 0.0004, A(16,12) = 2.0004, A(16,16) = 2.0008, A(16,20) = 0.0004, A(17,13) =
144
145
Node number
x (m)
CA
CB
CC
CD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
0.0
0.5
1.0
1.5
2.0
2.5
3.0
3.5
4.0
4.5
5.0
5.5
6.0
6.5
7.0
7.5
8.0
8.5
9.0
9.5
10.0
0.999925
0.745869
0.602852
0.516040
0.460355
0.423163
0.397574
0.379579
0.366717
0.357413
0.350622
0.345632
0.341947
0.339216
0.337186
0.335674
0.334547
0.333705
0.333075
0.332604
0.332252
0.999918
0.681292
0.474505
0.336482
0.241939
0.175791
0.128732
0.094823
0.070151
0.052067
0.038739
0.028875
0.021552
0.016103
0.012040
0.009008
0.006742
0.005048
0.003780
0.002831
0.002121
0.000060
0.189554
0.268800
0.304402
0.321230
0.329465
0.333583
0.335665
0.336717
0.337242
0.337497
0.337612
0.337659
0.337671
0.337668
0.337659
0.337649
0.337639
0.337630
0.337623
0.337617
0.000006
0.064577
0.129276
0.181438
0.221265
0.251137
0.273464
0.290175
0.302718
0.312168
0.319310
0.324724
0.328835
0.331960
0.334332
0.336124
0.337466
0.338454
0.339160
0.339638
0.339996
EXAMPLE 7.4
Solution Since three parts are made, therefore the total number of nodes is 4.
The coefficients of equation 1 (node 1, species A) are:
146
Coefficient of % #
%$
%$
Coefficient of CB1 = 0
Coefficient of CC1 = 0
Coefficient of CD1 = 0
Coefficient of % #
Coefficient of CB2 = 0
Coefficient of CC2 = 0
Coefficient of CD2 = 0
W W
Right hand side of equation 1 =
& 'Z % #
KP
% # %%
% # %%
Coefficient of CC1 = 0
Coefficient of CD1 = 0
Coefficient of CA2 = 0
Coefficient of %$
Coefficient of CC2 = 0
Coefficient of CD2 = 0
W W
Right hand side of equation 2 =
& 'Z %$
KP
Coefficient of CD1 = 0
Coefficient of CA2 = 0
Coefficient of CB2 = 0
%$
%$
Coefficient of %%
Coefficient of CD2 = 0
Right hand side of equation 3 = CA1CB1
The coefficients of equation 4 (node 1, species D) are:
Coefficient of CA1 = 0
Coefficient of CB1 = 0
Coefficient of CC1 = 0
Coefficient of %&
Coefficient of CA2 = 0
Coefficient of CB2 = 0
Coefficient of CC2 = 0
Right hand side of equation 4 = CB1CC1
Coefficient of %&
=0
=0
=0
%$
%$
Coefficient of CB2 = 0
Coefficient of CC2 = 0
Coefficient of CD2 = 0
Coefficient of % #
Coefficient of CB3 = 0
Coefficient of CC3 = 0
Coefficient of CD3 = 0
Right hand side of equation 5 = 0.
The coefficients of equation 6 (node 2, species B) are:
Coefficient of CA1 = 0
147
148
Coefficient of %$
Coefficient of CC1
Coefficient of CD1
Coefficient of CA2
=0
=0
=0
Coefficient of %$
% # %%
% # %%
Coefficient of CC2 = 0
Coefficient of CD2 = 0
Coefficient of CA3 = 0
Coefficient of CC3 = 0
Coefficient of CD3 = 0
Right hand side of equation 6 = 0.
Coefficient of %$
=0
=0
=0
% $
%$
Coefficient of CD2 = 0
Coefficient of CA3 = 0
Coefficient of CB3 = 0
Coefficient of CD3 = 0
Right hand side of equation 7 = CA2CB2.
Coefficient of %%
Coefficient of CB1 = 0
Coefficient of CC1 = 0
Coefficient of %&
Coefficient of CA2
Coefficient of CB2
Coefficient of CC2
Coefficient of %&
=0
=0
=0
Coefficient of CA3 = 0
Coefficient of CB3 = 0
Coefficient of CC3 = 0
Right hand side of equation 8 = CB2CC2
The coefficients of equation 13 (node 4, species A) are:
Coefficient of %&
Coefficient of % #
Coefficient of CB3 = 0
Coefficient of CC3 = 0
Coefficient of CD3 = 0
Coefficient of % #
Coefficient
Coefficient
Coefficient
Right hand
%$
%$
of CB4 = 0
of CC4 = 0
of CD4 = 0
side of equation 13 = 0.
Coefficient of CC3 = 0
Coefficient of CD3 = 0
Coefficient of CA4 = 0
Coefficient of %$
% # %%
% # %%
149
150
Coefficient of CC4 = 0
Coefficient of CD4 = 0
Right hand side of equation 14 = 0
The coefficients of equation 15 (node 4, species C) are:
Coefficient of CA3 = 0
Coefficient of CB3 = 0
Coefficient of %%
Coefficient of CD3 = 0
Coefficient of CA4 = 0
Coefficient of CB4 = 0
Coefficient of %%
%$
%$
Coefficient of CD4 = 0
Right hand side of equation 15 = CA4CB4.
The coefficients of equation 16 (node 4, species D) are:
Coefficient of CA3 = 0
Coefficient of CB3 = 0
Coefficient of CC3 = 0
Coefficient of %&
Coefficient of CA4 = 0
Coefficient of CB4 = 0
Coefficient of CC4 = 0
Right hand side of equation 16 = CB4CC4.
Coefficient of %&
Thus the set of equations for concentration of species A, B, C, and D at nodes 1 to 4 can be
written in the block tridiagonal form as
$
#
%
$
#
%
$
#
:
:
% :
$ :
&
&
&
&
where
:
% #
%
$
%%
%&
:
% #
%
$
%%
%&
:
% #
%
$
%%
%&
For node 1
$
%$
% # %%
%
&
% $
% #%$
%$%%
For node 2
#
$
% $
%
% # %%
%$
151
152
&
% #%$
%$%%
#
$
% $
For node 3
%
&
For node 4
% # %%
%$
% #%$
%$%%
#
$
% $
% # %%
% $
&
153
% # %$
%$ %%
>% #
%$
%%
%& @
The Gauss elimination method can be used to solve these 16 linear algebraic equations (see
Program 1.2 given in the Appendix). The results are given in Table 7.7.
Table 7.7
Node number
x (m)
CA
CB
CC
CD
1
2
3
4
0
1
2
3
0.999933
0.652683
0.503350
0.430048
0.999927
0.532064
0.296694
0.170485
0.000060
0.226697
0.289994
0.310390
0.000006
0.120620
0.206656
0.259562
Exercises
7.1
&
F % #
FZ
W
F% #
M% #
FZ
KP
W% # &
F% #
FZ
At x = 10 m (exit)
F% #
FZ
A fluid medium comprising initially only A flows through the reactor with a mean
axial velocity u = 1 m/s. The axial dispersion coefficient, D = 104 m2/s and the rate
constant of the reaction is 0.1 s1. The inlet concentration CA,in =1 mol/m3. Make
10 parts of the reactor. List the tridiagonal set of equations and determine the
concentration of A at various positions along the length of the tubular reactor.
(Ans: The tridiagonal set of equations are
154
% #
%
#
&
F % #
FZ
The boundary conditions are
W
F% #
M% #
FZ
At x = 0 (inlet): W% #
KP
W% &
#
F% #
FZ
F% #
FZ
A fluid medium comprising initially only A flows through the reactor with a mean
axial velocity u = 1 m/s. The axial dispersion coefficient, D = 104 m2/s and rate
constant of the reaction is 0.1 m3/mol-s. The inlet concentration CA,in = 1 mol/m3.
Make 10 parts of the reactor. List the tridiagonal set of equations and determine the
concentration of A at various positions along the length of the tubular reactor.
(Ans: The tridiagonal set of equations are
At x = 10 m (exit):
% #
CA1 = CA(0.0) =
CA3 = CA(2.0) =
CA5 = CA(4.0) =
CA7 = CA(6.0) =
CA9 = CA(8.0) =
CA11 = CA(10.0)
% #
0.999991
0.844719
0.730059
0.642133
0.572688
= 0.516529
% #
% #
% #
%#
%#
Chapter 8
F % F%
&
M%
(8.1)
FT
T FT
It is assumed that the pellet is isothermal and therefore the rate constant is also fixed. D is the
effective binary diffusivity of A within the catalyst pellet. The boundary conditions are
at r = R
(8.1b)
C = CS
and at r = 0
dC
dr
(8.1b)
&
F % #
FT
F% #
&
M% #
T
FT
where D is the effective binary diffusivity of A within the catalyst pellet. The pellet is
isothermal. The concentration at the surface of the spherical catalyst pellet is 1 mol/m3, thus
the boundary conditions are
155
156
at r = R
CA = 1
at r = 0
F% #
FT
The radius of the catalyst pellet is 1.0 cm. Make 100 parts of the radius. Take the rate constant,
k = 10-3 s1 and D = 109 m2/s. Determine the concentration of species A at various nodes along
the radius of the catalyst pellet.
Solution
The differential equation for diffusion and reaction in a spherical catalyst pellet is
F %
FT
It is given that
M
&
F% M
%
T FT &
m2.
m. The schematic
diagram of the spherical catalyst pellet is shown in Fig. 8.1. The first node is labelled 0 and
therefore the last node is the 100th node as 100 parts are made.
The radius is 1 cm = 102 m and 100 parts are made, thus 'T
100
r= R
C100 = 1
0
r=0
Fig. 8.1
C=1
F%
FT
157
% %
%
O 'T
'T
% % %
% % 'T %
O
'T
K
% % %
K
% % %
O
K
% % %
O
O
F %
FT
%
Discretizing, we get
% % %
'T
%
F%
FT
; thus
% %
'T
becomes
At node 1 (m = 1)
% % %
O
O
% %
At node 2 (m = 2)
At node 3 (m = 3)
% % %
% % %
158
At node 99 (m = 99)
% %
% %
%
%
%
%
%
%
%
F % F%
&
M%
(8.2)
FT
T FT
It is assumed that the pellet is isothermal and therefore the rate constant is also fixed. D is the
effective binary diffusivity of A within the catalyst pellet. The boundary conditions are
At r = R:
C = CS
At r = 0:
F%
FT
EXAMPLE 8.2
159
F % #
F% #
&
M% #
T
FT
FT
where D is the effective binary diffusivity of A within the catalyst pellet. The pellet is
isothermal. The concentration at the surface of the spherical catalyst pellet is 1 mol/m3; thus
the boundary conditions are
&
At r = R:
CA = 1
F% #
FT
At r = 0:
The radius of the catalyst pellet is 1.0 cm. Make 100 parts of the radius. Take the rate constant,
k = 103 m3/mol-s and D = 109 m2/s. Determine the concentration of species A at various
nodes along the radius of the catalyst pellet.
Solution
The differential equation for diffusion and reaction in a spherical catalyst pellet is
F %
FT
It is given that
M
&
F% M
%
T FT &
.
m. The schematic
diagram of the spherical catalyst pellet is given in Fig. 8.1. The first node is labelled 0 and
therefore the last node is the 100th node as 100 parts are made. Discretizing the differential
equation at node i, we get
The radius is 1 cm = 102 m and 100 parts are made, thus 'T
% % %
% %
%
O 'T
'T
% % %
% % 'T %
O
'T
K
% % %
K
% % %
O
K
% % % %
O
O
F %
FT
%
160
Discretizing, we get
% % %
'T
%
% % % 'T %
F%
At node 0,
FT
becomes
% % % %
% %
, and therefore C1 = C1. Therefore the above equation
; thus
'T
% % %
% % %
At node 1 (m = 1)
% % % %
O
O
% % %
At node 2 (m = 2)
% % % %
At node 3 (m = 3)
At node 99 (m = 99)
Since C100
% % % %
= 1, we get
%
%
%
%
%
%
%
%
161
It is seen that the coefficient matrix also depends on the concentrations. Therefore, to start the
program the concentrations are assumed, the coefficients are calculated and TDMA is used to
determine the new concentrations. At these concentrations the coefficients are re-calculated
and TDMA is used to determine the new concentrations. The procedure is repeated till there
is no change in the concentration profile. Program 8.1 for the solution of the above problem
is given in the Appendix. The results for nodes 77 to 99 are presented in Table 8.1.
Table 8.1 Concentration of reactants in spherical catalyst pellet for first and second order reactions under
isothermal condition
Node number
99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83
82
81
80
79
78
77
r (cm)
0.99
0.98
0.97
0.96
0.95
0.94
0.93
0.92
0.91
0.90
0.89
0.88
0.87
0.86
0.85
0.84
0.83
0.82
0.81
0.80
0.79
0.78
0.77
0.914015
0.835509
0.763826
0.698366
0.638586
0.583988
0.534119
0.488564
0.446948
0.408925
0.374184
0.342438
0.313425
0.286908
0.262670
0.240513
0.220257
0.201735
0.184799
0.169310
0.155144
0.142186
0.130331
F % F%
&
M 6 %
FT
T FT
' 65
M 65 GZR
6
465
(8.3)
(8.4)
162
Consider the case of a non-isothermal first order reaction A B occurring in the interior of
a spherical catalyst pellet. We wish to compute the effect of internal heat and mass transfer
resistance upon the reaction rate and the concentration and temperature profiles within the
pellet. The concentration profile CA(r) is governed by the mole balance
F% #
F
(8.5)
T &# FT T M 6 % #
FT
where DA is the effective binary diffusivity of A within the pellet. If k is the effective thermal
conductivity of the pellet, the temperature profile T(r) is governed by the energy balance
F F6
T M
T '* TZP M 6 % #
FT
FT
(8.6)
Neglecting external heat and mass transfer resistance, we have known values of the
concentration and temperature at the surface, r = R: CA(R) = CAS and T(R) = TS. Also, at the
centre of the pellet, r = 0:
rate constant is
F% #
FT
and
F6
FT
' 65
M 65 GZR
(8.7)
6
465
If we assume constant DA, k and '*TZP the problem reduces to a single ordinary differential
equation. Dividing the energy balance equation by '* TZP and adding to the mole balance
equation, we get
M 6
Integrating, we get
F% # F
F
M
F6
T &#
T
FT
FT FT
'* TZP FT
F% #
M
F6
T &#
%
FT
'* TZP FT
2
where C1 is the constant of integration. Dividing by r gives
%
F
M
&#% #
6
FT
'* TZP T
&#% #
'*
TZP
%
(8.8)
(8.9)
(8.10)
(8.11)
where C2 is the constant of integration. At the surface, we get the value of constant C2 as
%
& # % #5
'*
TZP
65
(8.12)
163
'* TZP
& # % #5
'*
TZP
65
(8.13)
Thus there exists the following linear relation between CA(r) and T(r):
&# '* TZP
% # T % #5
(8.14)
M
Thus only the mole balance equation has to be solved. Thus, if we assume constant DA, k and
'* TZP , we can show that at any point along the radius the temperature and concentration of
the reactant are related by Eq. (8.14). A parameter is defined as
6 T 65
& '* TZP %5
M65
(8.15)
& '* TZP
% %5
M65
Therefore
65
6
&'* TZP
% %5
M65
& '* TZP
% %5
M65
& '* TZP
% %5
M65
(8.16)
If CS = 1, then C
becomes
& '* TZP
M65
M 6
'
465
(8.17)
C % %5
(8.18)
164
EXAMPLE 8.3 Diffusion and reaction take place in a non-isothermal spherical catalyst pellet
of radius 1 cm. The rate constant of the reaction k(TS) = 103 s1 and effective diffusivity of
species, D = 109 m2/s. Make 100 parts of the radius and determine the concentration within
the catalyst pellet. The concentration at the surface of the spherical catalyst pellet CS = 1 mol/
m3. Take b = 1 and g = 1.
Solution The differential equation for diffusion and reaction in a non-isothermal spherical
catalyst pellet is
F %
FT
F% M
%
T FT &
where
HC % %5
M 65 GZR
C % %5
F %
FT
It is given that
M 65
HC % %5
F% M 65
%
GZR
C % %
T FT
&
5
&
m2.
m. The schematic
diagram of the spherical catalyst pellet is given in Fig. 8.1. The boundary conditions are
The radius is 1 cm = 102 m and 100 parts are made; thus 'T
At r = 1 cm:
C =1
F%
FT
At r = 0:
F %
FT
%
F%
GZR
%
T FT
%
% % %
K
'T
%
% %
GZR %
O 'T
'T
K
K
% % %
K
%
% % GZR
%
O
%
165
%
GZR
%
O
%
% %
O
F %
%
GZR
%
FT
%
Discretizing, we get
% % %
'T
%
GZR % %
%
% % % GZR
%
At node 0,
becomes
F%
FT
; thus
% %
'T
%
%
% % GZR
%
%
%
GZR
%
% %
At node 1 (m = 1)
%
% GZR
O
%
% %
O
%
GZR
% %
%
At node 2 (m = 2)
%
% GZR
% %
%
At node 3 (m = 3)
%
% GZR
% %
%
At node 99 (m = 99)
%
% GZR
% %
%
166
%
% GZR
%
%
GZR
%
%
%
%
GZR
%
%
GZR
%
%
%
%
GZR
%
%
It is seen that the coefficient matrix also depends on the concentrations. Therefore, to start the
program the concentrations are assumed, the coefficients are calculated and TDMA is used to
determine the new concentrations. At these concentrations the coefficients are re-calculated
and TDMA is used to determine the new concentrations. The procedure is repeated till there
is no change in the concentration profile. Program 8.2 for the solution of the above problem
is given in the Appendix. The results for nodes 77 to 100 are presented in Table 8.2.
Solve Example 8.3 for b = 10 and g = 1.
EXAMPLE 8.4
Solution
F %
FT
%
F%
GZR
%
T FT
%
% % %
K
'T
%
% %
GZR %
O'T
'T
% % %
K
%
% % GZR
%
O
%
%
GZR
%
O
%
% %
O
F %
%
GZR
%
FT
%
167
Discretizing, we get
%
GZR %
%
%
% % % GZR
%
%
% % %
'T
At node 0,
becomes
F%
FT
; thus
% %
'T
%
% % GZR
%
%
GZR
%
%
% %
At node 1 (m = 1)
%
% GZR
% %
O
O
%
%
GZR
% %
%
At node 2 (m = 2)
%
% GZR
% %
%
At node 3 (m = 3)
%
% GZR
% %
%
At node 99 (m = 99)
%
% GZR
% %
%
%
% GZR
%
%
168
%
%
GZR
%
%
GZR
%
%
%
%
GZR
%
%
%
%
GZR
It is seen that the coefficient matrix also depends on the concentrations. Therefore, to start the
program the concentrations are assumed, the coefficients are calculated and TDMA is used to
determine the new concentrations. At these concentrations the coefficients are re-calculated
and TDMA is used to determine the new concentrations. The procedure is repeated till there
is no change in the concentration profile. Program 8.2 can be modified to solve this problem.
The results for nodes 77 to 100 are presented in Table 8.2.
Table 8.2
Concentration of reactant in spherical catalyst pellet under non-isothermal conditions for first
order reaction for b = 1 and b = 10
Node number
100
99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83
82
81
80
79
78
77
r (cm)
C (b = 1)
C (b = 10)
1.00
0.99
0.98
0.97
0.96
0.95
0.94
0.93
0.92
0.91
0.90
0.89
0.88
0.87
0.86
0.85
0.84
0.83
0.82
0.81
0.80
0.79
0.78
0.77
1.000000
0.901657
0.803074
0.713959
0.633761
0.561849
0.497557
0.440217
0.389179
0.343828
0.303586
0.267922
0.236345
0.208414
0.183724
0.161913
0.142658
0.125665
0.110677
0.097460
0.085810
0.075543
0.066497
0.058529
1.000000
0.873620
0.752422
0.646573
0.554827
0.475639
0.407470
0.348888
0.298610
0.255496
0.218553
0.186914
0.159829
0.136650
0.116820
0.099585
0.085352
0.072949
0.062345
0.053280
0.045531
0.038908
0.033247
0.028409
169
Exercises
8.1
F % #
F% #
&
M% #
T
FT
FT
where D is the effective binary diffusivity of A within the catalyst pellet. The pellet
is isothermal. The concentration at the surface of the spherical catalyst pellet is 1
mol/m3 thus the boundary conditions are:
&
At r = R:
CA = 1
F% #
FT
At r = 0:
The radius of the catalyst pellet is 1.0 cm. Make 10 parts of the radius. Take the
rate constant, k = 0.1 s1 and D = 109 m2/s. Determine the concentration of species
A at various positions along the radius of the catalyst pellet.
(Ans: The tridiagonal set of equations are
CA0
CA2
CA4
CA6
CA8
=
=
=
=
=
CA(0.0)
CA(0.2)
CA(0.4)
CA(0.6)
CA(0.8)
=
=
=
=
=
% #
% #
% #
% #
0.000000
0.000000
0.000000
0.000000
0.000120
CA1
CA3
CA5
CA7
CA9
=
=
=
=
=
CA(0.1)
CA(0.3)
CA(0.5)
CA(0.7)
CA(0.9)
=
=
=
=
=
0.000000
0.000000
0.000000
0.000001
0.010894
Distance (in cm) is measured from the centre of the spherical pellet.
8.2
&
F % #
FT
F% #
&
M% #
T
FT
where D is the effective binary diffusivity of A within the catalyst pellet. The pellet
is isothermal. The concentration at the surface of the spherical catalyst pellet is
1 mol/m3, thus the boundary conditions are
At r = R:
At r = 0:
CA = 1
F% #
FT
170
The radius of the catalyst pellet is 1.0 cm. Make 10 parts of the radius. Take the
rate constant, k = 0.1 m3/mol-s and D = 109 m2/s. Determine the concentration of
species A at various positions along the radius of the catalyst pellet.
(Ans: The tridiagonal set of equations are
% #
%
% #
#
% #
% #
% #
% #
% #
GZR
%
%
CA0
CA2
CA4
CA6
CA8
%
%
GZR
%
%
GZR
=
=
=
=
=
CA(0.0)
CA(0.2)
CA(0.4)
CA(0.6)
CA(0.8)
=
=
=
=
=
0.000000
0.000000
0.000000
0.000000
0.000045
CA1
CA3
CA5
CA7
CA9
=
=
=
=
=
%
%
GZR
CA(0.1)
CA(0.3)
CA(0.5)
CA(0.7)
CA(0.9)
=
=
=
=
=
%
%
0.000000
0.000000
0.000000
0.000000
0.006659
Distance (in cm) is measured from the centre of the spherical pellet.
%
%
Chapter 9
One-Dimensional Transient
Heat Conduction
The numerical solution of one-dimensional transient heat conduction in a rectangular slab,
cylinder, and sphere is discussed in this chapter using the finite difference method. The onedimensional transient heat conduction in a rectangular slab is given by
6
V
6
(9.1)
Z
In a cylinder it is given by
6
6
V
6
V
6
T T
(9.2)
6
T T
(9.3)
M
. Discretization is carried out using the forward in time and central in space
S%2
(FTCS) difference scheme. The explicit, implicit and CrankNicolson discretizations are
discussed. An example of one-dimensional transient diffusion is also discussed. Von Neumann
stability analysis, which is used to determine the criteria under which the explicit scheme is
stable, is also discussed.
where
9.1
H
Z
$
H
H
H
H
% &
'
(H )
Z [
Z
[
[
(9.4)
172
PDE
6
Z
Parameters
6
[
6
6
B
V
Z
A=1
B=0
C=1
(9.5)
B2 4AC = 0
Parabolic
A=1
(a > 0)
B2 4AC = 4 < 0
Elliptic
A = a
B=0
C=0
Classification of PDE
B=0
C = a2
Hyperbolic
The coefficients in the 1D wave equation are determined using the following. Differentiating
Eq. (9.5) with respect to x, we get
W
W
C
VZ
Z
W
V
C
W
V Z
W
V
C
W
Z
6
V
6
Z
Using the forward in time and central in space explicit difference scheme, we get
6KP 6KP
'V
'Z
(9.6)
173
If the solution is known at time n, then it is very easy to determine the solution at time
n + 1 using the explicit method.
6KP
where /
B'V
'Z
(9.7)
Thus if the temperature at all the nodes is known at time t, the temperature at time t + Dt can
be computed and from this temperature at time t + Dt, the temperature at time t + 2Dt can be
computed. Thus the temperature at any required time can be computed. Thus the values of all
the nodes can be updated to compute the temperature profile at the required time. But there
is a disadvantage, which is that explicit discretization is not stable for all values of Dt and Dx.
It is stable only when
'V
'Z
(9.8)
is not satisfied,
'Z
then convergence shall not be obtained and the solution shall start diverging. The implicit
method is an unconditionally stable method and the implicit discretization of Eq. (9.1) is given
by
6KP 6KP
'V
'V
6KP 6KP 6KP
'Z
(9.9)
When the temperature at time t is known, then to calculate the temperature at time t + Dt the
tridiagonal set of linear algebraic equations is solved. Thus 6KP are known and 6KP are
calculated. Thus marching in time can be carried out to obtain the temperature at various nodes
at the next time step for the parabolic PDE.
6
V
CrankNicolson discretization is given by
6KP 6KP
'V
6
Z
'Z
6KP 6K P 6KP
'Z
(9.10)
In the CrankNicolson method the discretization of space term is carried out using the central
difference scheme at time n and at time n + 1 and taking the mean of the two. It is an
174
unconditionally stable method. It is an more accurate than the implicit method. The accuracy
of the implicit method is O(Dt,Dx2), whereas that of CrankNicolson is O(Dt2,Dx2). The central
difference scheme is not used in time because it would require high storage, as there would
be terms of three typesT n+1, T n, T n1.
6
6
B
V
Z
Discretizing using the FTCS explicit scheme, we get at node i [see Eq. (9.6)]
6KP
6KP
B'V
'Z
6
P
K
6KP 6KP
Let the exact solution of this equation be D. This is the solution that would be obtained using
a computer with infinite accuracy (infinite storage of each variable). Let the numerical solution
on a real machine with finite accuracy be N. Then, round-off error = N D = e. Thus, N =
D + e and the above equation becomes
&KP F KP &KP F KP
'V
'Z
(9.11)
Since the exact solution D must satisfy the difference equation, the same is true of the error,
that is
P
FK
F KP
'V
F P F KP F KP
B K
'Z
(9.12)
Thus the exact solution D and the error e must both satisfy the same difference equation.
Consider a distribution of errors at any time. The error e (x, t) can be written as a series of the
form
F Z V
CV
KM
OZ
(9.13)
where
MO
OQ
.
m = 0, 1, 2, , M
(9.14)
M is the number of intervals (Dx units long) contained in length L. Since the difference
equation is linear, superposition may be used and we may examine the behaviour of a single
term of the series. Thus, when the finite difference equation (FDE) is linear, it is sufficient to
175
investigate only one component of the Fourier series. The error is in the form of Fourier series.
Consider the term
F O Z V
G G
CV
C V 'V
G GKMO Z G CV GKMO Z
where /
B'V
'Z
Z V
G G
CV
KM O Z
KM Z 'Z
KM Z 'Z
/ G CV G O
G CV GKMO Z G CV G O
. If we divide by G G
CV
KM O Z
(9.16)
, we get
/ G O' G O '
G '
C
(9.15)
KM O Z
KM
KM
G C G C
(9.17)
/ EQU C
(9.18)
EQU C
we get
G C'V
where
MO 'Z
(9.19)
EQU C
(9.20)
We know
UKP
Thus
G C'V
/ UKP
(9.21)
Since F KP G C'V F KP for each frequency present in the solution for the error, it is clear that if
GC'V is less than or equal to one, a general component of the error will not grow from one
time step to the next. Stability means that error should not grow. This requires that
/ UKP
P
C
d
(9.22)
FK
C
!
(9.23)
(9.24)
d
Since M is positive, the first condition is always satisfied. The second inequality is satisfied
176
, which is the stability requirement. Thus for the explicit finite difference
B'V
equation 6KP 6KP 6KP 6KP 6KP to be stable
'Z
B'V d
(9.25)
'Z
The two-dimensional transient heat conduction equation is
only if / d
6
6
V
Z
6
[
(9.26)
6KPL
B'V
'Z
6
P
K L
6KP L 6KPL
B'V
'[
P
K L
6KPL 6KPL
(9.27)
From the von Neumann stability analysis, we get the explicit FTCS discretization to be stable
when
B'V
'Z
B'V
'[
(9.28)
6KPL
6KPL
B'V
'
6
K
6KP
(9.29)
B'V
'
9.5
(9.30)
One-dimensional transient heat conduction in a rectangular slab using the implicit method is
described in the example below.
EXAMPLE 9.1 Consider transient heat conduction in a rectangular slab. The partial
differential equation is
6
V
6
Z
The total width of the rectangular slab is 0.8 cm. Initially the temperature is uniform at 20C.
The temperature of the end faces of the rectangular slab is made 300C at t = 0 s. Use implicit
discretization and take Dx = 0.1 cm, Dt = 0.1 s, and a = 105 m2/s. List the tridiagonal system
177
of equations and determine the temperature at the centre and the intermediate points of the slab
up to 3.1 s.
Solution
Symmetry
Fig. 9.1
Wall at 300C
Transient heat conduction in rectangular slab.
Using forward in time and central in space implicit difference scheme, we get
6KP 6KP
'V
6KP 6KP
where /
B'V
'Z
6KP 6KP 6KP
'Z
/ 6KP 6KP 6KP
6KP
6P
6P
6P
At node 2
At node 3
At node 4
6P
178
where 0 is a hypothetical node to the left of node 1. Since at x = 0 (node 1) the symmetry
condition is satisfied, we get
6
Z
; thus
6P 6P
'Z
n 1
and so T0
T2n 1 .
Thus at i = 1, we get
/ 6P / 6P
6P
/
6 P
/
6P
/
/
/
P
/
/ 6
/
P
/
/ 6
6P
6P
6P
6 /
where the old values are at time n and the computed values are at time n + 1. Here a = 105 m2/s,
Dt = 0.1 s, Dx = 0.1 cm, 6P 6P 6P 6P C, T5 = 300C. Thus
/
B'V
'Z
P
6
P
6
6P
6 P
6P
P
6
6
6
At time t = 0, 6P 6P 6P 6P C and the solution by TDMA is obtained at time
t = 0.1s. These become the old values for solution by TDMA at t = 0.2 s and so on. Note that
in this sort of discretization a tridiagonal matrix is bound to get formed because, for
discretization at node i, use is made of the values at nodes i 1, i + 1, and i. Program 9.1 for
the solution of the above problem is given in the Appendix. The coefficient matrix parameters
are constant, but the right hand side of the linear algebraic equations each time is updated. The
results of Program 9.1 are presented in Table 9.2.
179
Time (s)
T1
T2
T3
T4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2.0
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3.0
3.1
31.91
53.21
78.59
104.35
128.55
150.45
169.87
186.90
201.78
214.72
225.98
235.75
244.24
251.60
258.00
263.55
268.36
272.54
276.17
279.32
282.05
284.42
286.48
288.27
289.82
291.16
292.33
293.34
294.22
294.99
295.65
37.87
63.86
91.28
117.22
140.66
161.40
179.57
195.42
209.21
221.20
231.60
240.64
248.48
255.29
261.19
266.32
270.77
274.63
277.98
280.89
283.42
285.61
287.51
289.16
290.59
291.84
292.91
293.85
294.66
295.37
295.98
61.70
100.49
131.40
156.04
176.20
193.09
207.45
219.79
230.44
239.65
247.64
254.56
260.57
265.78
270.30
274.22
277.63
280.58
283.15
285.38
287.31
288.99
290.44
291.70
292.80
293.75
294.58
295.29
295.92
296.46
296.92
127.23
175.91
202.44
219.49
231.90
241.66
249.71
256.50
262.31
267.32
271.65
275.40
278.66
281.48
283.93
286.05
287.89
289.49
290.88
292.09
293.13
294.04
294.83
295.51
296.10
296.62
297.07
297.45
297.79
298.08
298.33
EXAMPLE 9.2 A brick wall with a thickness of 0.5 m is initially at a uniform temperature
of 300 K. At time t = 0 the left surface is maintained at 425 K and right at 600 K. Determine
the time required for its centre temperature to reach 425 K. Use implicit discretization and take
Dx = 0.05 m, a = 105m2/s, and Dt = 1.0 s.
Solution
600
1
Fig. 9.2
6
Example 9.2.
11
180
In a rectangular slab
6
6
B
V
Z
Discretizing using implicit FTCS at node i, we get
6 P 6 P
'V
K
6 P 6 P 6 P
'Z
6KP 6KP
'V
'Z
. Therefore
6 P 6 P 6 P
6P
6P
At node 2
At node 3
6P 6P 6P
6P
P
6P 6P 6
6P
P
P
6P 6 6
P
6
At node 9
At node 10
Since T11 = 600, we get
P
6P 6
P
6
Thus the unknowns are T2 to T10. The tridiagonal set of 9 linear algebraic equations is
P
6
P
6
6 P
6P
P
6
6 P
P
6
P
Initially 6P 6P 6P 6P 6P 6P 6P 6P 6 . After every iteration the time
is incremented by 1 s. We have to determine the time when T6 = 425. Program 9.1 can
181
be modified by changing the coefficients and the following solution is obtained at 2865 s:
T2 = 415.87, T3 = 409.24, T4 = 407.40, T5 = 412.24, T6 = 425.06, T7 = 446.44, T8 = 476.11,
T9 = 512.95, and T10 = 555.07.
6
6
T T
Using the forward in time and central in space implicit difference scheme, we get
6KP 6KP
'V
6 P 6 P
K
where /
B'V
' T
6 P 6 P 6 P
K
K
K
'T
6KP 6KP
O 'T
'T
/ 6 P 6 P 6 P
6 P 6 P
O
.
6 P 6 P
K
/
/
6 P /
6 P /
/6 P
O
O
K
/ P
/ P
P
/
/
6 / 6
6
O
O
K
6P
K
At node 2 (m = 1)
/ P
/ P
P
/ 6 / 6 / 6
6P
/ P
/ P
P
/ 6 / 6 / 6
6P
At node 3 (m = 2)
182
At node 4 (m = 3)
/ P
/ P
P
/ 6 / 6 / 6
6P
6
where T5 = 300C. On using LHospitals rule at node 1, the PDE becomes
V
implicit FTCS to discretize, we get
6KP 6KP
'V
6K
/
P
6K
6KP
/
'T
6KP
/ 6
P
6
T
. Using
6KP 6KP
/
6KP
6P
K
At i = 1, we get
6P
Since at r = 0,
; thus 6P
6P .
/ 6P / 6P
6P
/
/
P
6P 6
/
P
/
6P 6
/
/ 6 P 6P
/
P 6 P /
6
/
/
where the old values are at time n and the computed values are at time n + 1. Here a = 105 m2/s,
Dt = 0.1 s, Dr = 0.1 cm, 6P 6P 6P 6P C, T5 = 300C. Thus
B'V
'T
P
6
P
6
6P
6 P
6P
6
6
6
183
At time t = 0, 6P 6P 6P 6P C, and the solution by TDMA is obtained at time
t = 0.1 s. These become the old values for solution by TDMA at t = 0.2 s and so on. Program 9.1
can be modified to solve this problem and the results are given in Table 9.3.
Table 9.3
Time (s)
T1
T2
T3
T4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2.0
2.1
48.29
91.65
135.90
174.33
205.21
229.08
247.17
260.72
270.83
278.34
283.92
288.06
291.13
293.40
295.09
296.34
297.26
297.95
298.46
298.83
299.11
55.37
102.48
146.97
183.93
212.93
235.05
251.69
264.11
273.36
280.22
285.32
289.09
291.89
293.97
295.51
296.65
297.49
298.12
298.58
298.93
299.18
81.30
137.51
180.31
211.78
234.84
251.79
264.29
273.53
280.36
285.43
289.18
291.96
294.02
295.54
296.67
297.51
298.13
298.60
298.94
299.19
299.38
145.91
203.48
234.56
253.66
266.43
275.39
281.85
286.56
290.04
292.60
294.49
295.90
296.94
297.71
298.28
298.70
299.02
299.25
299.42
299.55
299.64
6
T
6
T T
184
Using the forward in time and central in space implicit difference scheme, we get
6 P 6 P 6 P
K
K
K
6KP 6KP
'V
'T
6KP 6KP
O 'T
'T
6 P 6 P
P
/ 6 P 6 P 6 P
6 6 P
O
6 P 6 P
/
/
6 P / 6 P / /6 P
O
O
where /
B'V
' T
.
K
/
/
6 P / 6 P / 6 P /
O
O
K
6P
At node 2 (m = 1)
6P / / 6P 6P /
6P
At node 3 (m = 2)
/
/
6P
At node 4 (m = 3)
/
/
6P
where T5 = 300C
6
6
.
V
T
Again, using the implicit FTCS, we get
At node 1 the PDE becomes
6 P 6 P
'V
K
6KP 6KP
6 P 6 P 6 P
K
'T
/ 6KP 6KP 6KP
6 P / 6 P / 6 P /
6P
6P
At i =1, we get
where 0 is a hypothetical node to the left of node 1.
At r = 0,
6
T
; thus
6P 6P
'T
and so 6P
6P .
185
Thus at i = 1, we get
6P / 6P /
6P
6
/
/
6 P
/
/
/
6P
/
/ 6P
6P
6
6
P /
6
where the old values are at time n and the computed values are at time n + 1. Here a = 105
m2/s, Dt = 0.1 s, Dr = 0.1 cm, 6P 6P 6P 6P C, T5 = 300C. Thus
B'V
'T
P
6
P
6
6P
6 P
6P
6
6
6
At time t = 0, 6P 6P 6P 6P C and the solution by TDMA is obtained at
time t = 0.1 s. These become the old values for solution by TDMA at t = 0.2 s and so on.
Program 9.1 can be modified to solve this problem and the results are given in Table 9.4.
Table 9.4
Time (s)
T1
T2
T3
T4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
1.2
1.3
1.4
65.71
126.67
180.57
220.93
248.79
267.24
279.18
286.82
291.67
294.74
296.68
297.91
298.68
299.17
73.33
136.83
189.55
227.66
253.44
270.32
281.17
288.09
292.48
295.25
297.00
298.11
298.81
299.25
100.00
168.57
215.92
246.71
266.33
278.75
286.60
291.55
294.67
296.64
297.88
298.66
299.16
299.47
162.22
224.87
256.27
273.58
283.71
289.85
293.64
296.00
297.48
298.41
299.00
299.37
299.60
299.75
186
% %
&
T T
T
At r = 0:
t 0
At r = R:
C = CS = 0
At t = 0:
C = C0
t>0
Determine the concentration of the drug in the centre of the bead after 3, 12, 24, and 48 h.
Make 10 parts of the radius from r = 0 to r = R. Take Dt = 1.0 s.
Solution
The radius of the bead is 0.326 cm and the initial concentration of the drug in the
OI
mg/cm3. The schematic diagram of the bead from r = 0 to r = R with
Q4
10 parts is shown in Fig. 9.3.
bead is =
Initial concentration
= 68.9 mg/cm3
r= R
T
F%
FT
C =0
0
5
Fig. 9.3
Example 9.5.
In a sphere
%
V
% %
&
T T
T
10
187
% P % P % P
% P % P
&
O 'T
'T
'T
& 'V P
P
% P % P
%
% % P
O
'T
&
'V
'T
Thus at node i
P
% P % P
K
% P
K
%
%
&
V
T
Discretizing the above equation at node 0, we get
P
P
% %
'V
&
'T
P
P
% %
At node 0,
%
T
; thus
% %
'T
%
P
P
P
% %
%
P
P
P
% %
becomes
% %
% % %
P
P
% %
P
%
P
P
P
P
% %
P
P
P
P
%
At node 1
P
P
P
% % %
P
%
188
At node 2
P
%
P
P
P
% % %
P
%
P
P
P
% % %
P
%
P
%
P
P
% %
At node 8
At node 9
P
%
The above set of 10 equations (at nodes 0 to 9) can be written in tridiagonal form as
% P
P
%
P
%
% P
P
%
P
%
% P
P
%
P
P
P
P
P
P
P
P
P
P
Initially % % % % % % % % % % mg/cm3. At the completion of an iteration, time is incremented by 1 s. Program 9.2 for the solution of the above
problem is given in the Appendix. The following concentration of drug at the centre of the
bead is obtained from Program 9.2: after 3 h the concentration is 62.39 mg/cm3; after 12 h the
concentration is 26.36 mg/cm3, after 24 h the concentration is 7.99 mg/cm3; and after 48 h the
concentration is 0.73 mg/cm3.
Exercises
9.1
Consider transient heat conduction in a rectangular slab. The total width of the
rectangular slab is 1 cm. Initially the temperature is uniform at 25C. The
temperature of the end-faces of the rectangular slab is made 300C at t = 0 s. Use
implicit discretization and take Dx = 0.1 cm, Dt = 0.1 s, and a = 105 m2/s. List the
tridiagonal system of equations and determine the temperature at the centre and the
intermediate points of the slab after 5 s.
(Ans: The tridiagonal set of equations is
P
6
6 P
6P
6 P
P
6
189
6P
6
6
6
6
T1 = T(0.0) = 87.43
T2 = T(0.1) = 96.08
T3 = T(0.2) = 122.44
T4 = T(0.3) = 166.98
T5 = T(0.4) = 228.16.
Distance (in cm) is measured from the centre.
9.2
Consider a cylinder of radius 0.5 cm. Initially the temperature is uniform at 25C.
The temperature of the cylinder surface is made 300C at t = 0 s. Use implicit
discretization and take Dr = 0.1 cm, Dt = 0.1 s, and a = 105 m2/s. List the
tridiagonal system of equations and determine the temperature at the centre and the
intermediate points of the cylinder after 5 s.
(Ans: The tridiagonal set of equations is
6 P
6 P
6 P
6P
P
6
T1 = T(0.0) = 150.81
T2 = T(0.1)
T3 = T(0.2) = 179.46
T4 = T(0.3)
T5 = T(0.4) = 256.06
Distance (in cm) is measured from the centre.
9.3
6P
6
6
6
P
6
= 158.06
= 213.45
Consider a sphere of radius 0.5 cm. Initially the temperature is uniform at 25C.
The temperature of the sphere surface is made 300C at t = 0 s. Use implicit
discretization and take Dr = 0.1 cm, Dt = 0.1 s, and a = 105 m2/s. List the
tridiagonal system of equations and determine the temperature at the centre and the
intermediate points of the sphere after 5 s.
(Ans: The tridiagonal set of equations is
P
6P 6
P
P
6 6
P 6 P
6
P 6 P
6
190
T1 = T(0.0) = 200.21
T2 = T(0.1) = 205.72
T3 = T(0.2) = 221.68
T4 = T(0.3) = 245.88
T5 = T(0.4) = 274.07
Distance (in cm) is measured from the centre.
9.4
Consider a concrete wall 0.5 m thick. Initially the temperature is uniform at 20C.
The temperature of one surface of the wall x = 0 is suddenly raised to 80C and
the right surface at x = 0.5 m remains always at 20C. Use implicit discretization
and take Dx = 0.1 m, Dt = 10 s, and a = 1.25 105 m2/s. List the tridiagonal
system of equations and determine the temperature distribution throughout the slab
after 1 h.
(Ans: The tridiagonal set of equations are
P
6
P
6
6P
6 P
6P
P
6
6
6
T2 = T(0.1) = 64.06
T3 = T(0.2) = 49.66
T4 = T(0.3) = 37.70
T5 = T(0.4) = 28.13
Distance (in m) is measured from surface at 80C.
9.5
A large flat slab of clay is to be dried. The slab is dried from both sides, is 4 cm
thick and has an initial uniform water concentration of 0.5 g of water per cm3. The
movement of water within the clay occurs by diffusion. It is known that, with the
proposed drying conditions, the drying will occur in the constant rate period at a
rate of 0.1 g/cm2-h of water as long as the surface moisture concentration remains
above 0.2257 g of water per cm3. Use implicit discretization and take Dx = 0.2 cm,
Dt = 0.01 h, and D = 0.25 cm2/h. List the tridiagonal system of equations and
determine the duration of the constant rate period and the distribution of water
within the clay at the end of the constant rate period. The partial differential
equation is
%
V
&
%
Z
P
%
% P
At t = 1.5 h:
C1 = C(0.0) = 0.4947
C2 = C(0.2) = 0.4937
C5 = C(0.8) = 0.4738
C4 = C(0.6) = 0.4841
C7 = C(1.2) = 0.4342
C8 = C(1.4) = 0.4011
C10 = C(1.8) = 0.2983
C11 = C(2.0) = 0.2257
Distance (in cm) is measured from the centre.
P
%
%
% P
P
%
C3 = C(0.4) = 0.4904
C6 = C(1.0) = 0.4578
C9 = C(1.6) = 0.3563
191
Chapter 10
6
[
(10.1)
This is an elliptic partial differential equation and the temperature T(x, y) must satisfy this
equation as well as the boundary conditions along the entire boundary of the plate. Twodimensional transient heat conduction is given by [see Eq. (9.26)]
6
V
6
Z
6
[
This is a parabolic partial differential equation. Relaxation techniques are used for the
numerical solution of elliptic equations, whereas marching in time is used for parabolic
equations. The numerical solution of two-dimensional steady heat conduction is carried out by
the GaussSeidel, RedBlack GaussSeidel, and Alternating Direction Implicit (ADI)
methods. The boundary conditions like convection, exterior corner with convection, interior
corner with convection and insulation are discussed in this chapter. The numerical solution of
two-dimensional transient heat conduction is discussed using ADI method, which is an implicit
method and is therefore unconditionally stable. It is also called line-by-line TDMA.
6
Z
6
Z
6
[
6
[
K L
K L
(10.2)
'Z
6
6
K L
(10.3)
L
'Z
K L
6
(10.4)
K L
'[
K L
L
K L
6 6
193
K L
6
K L
(10.5)
'[
i, j + 1
K L
Dy
i, j
i 1, j
i + 1, j
K L
K L
K L
i, j 1
Dx
Fig. 10.1
6
Z
K
6
[
K L
K L
K L
6
[
6
Z
K L
L
6
Z
Z
L
K L
'Z
K
6
[
[
K L
L
6 6 6 6
6
K L
K L
6 6 6
K L
'[
K L
K L
6 6 6
6
K L
'Z
K L
6
K L
'[
6
K L
(10.6)
(10.7)
194
6 6
Discretizing the equation
Z [
zero, we get
6 6 6
K
'Z
K L
6
K L
6
K L
'[
6
K L
(10.8)
K L
K L
6
K L
6
K L
or
6
6 6 6
K
K L
6
K L
K L
(10.9)
6KPL
6KP L 6KPL 6KPL 6KPL
(10.10)
6 P 6 P X'6 P
(10.11)
is known as the relaxation parameter. The various cases are described in
195
New
temperature
computed
during iteration
Temperature
taken at the
beginning of
next iteration
110
110
110
Relaxation
parameter
110
105
115
1
0.5
1.5
Type of
Relaxation
GaussSeidel
Underrelaxation
Overrelaxation
The method is convergent only for 0 < w < 2. For overrelaxation the relaxation parameter lies
between 1 and 2 and for underrelaxation between 0 and 1. When w = 1, it becomes the Gauss
Seidel method. The optimum value of w is different for each problem. It has to be determined
by hit and trial.
RBRBRBRBRBRBRBRB
BRBRBRBRBRBRBRBR
RBRBRBRBRBRBRBRB
BRBRBRBRBRBRBRBR
RBRBRBRBRBRBRBRB
BRBRBRBRBRBRBRBR
RBRBRBRBRBRBRBRB
BRBRBRBRBRBRBRBR
Fig. 10.2
The nodes surrounding the black node are all red and the nodes surrounding the red node are
all black. The surrounding nodes are those nodes which are to the east, west, north and south
of a node. The other four nodes are called the corner nodes of node (i, j). Consider again the
finite difference equation (10.9):
6
6 6
K
L
L
6
K L
6
K L
Red points depend only on the black points and black points depend only on the red points.
Thus we can carry out one half-sweep updating the red points and then another half-sweep
K L
196
updating the black points with the new red values. Thus, the RedBlack GaussSeidel method
is the one in which the red nodes are updated using black nodes and then the black nodes are
updated using the updated red nodes. This procedure is repeated till the following convergence
criterion is satisfied: 6KPL 6KPL F .
EXAMPLE 10.1
Determine the temperature at various nodes shown in Fig. 10.3. The two 6 6
. The boundary conditions
dimensional heat transfer is given by the equation
Z [
are shown in Fig. 10.3. The size of the slab is 2 m 2 m and Dx = Dy = 0.5 m. Use the Gauss
Seidel method.
400C
T1,3
T3,3
T1,2
T2,2
T3,2
T1,1
20C
T2,3
T2,1
T3,1
20C
20C
Fig. 10.3
Example 10.1
Solution Since all the nodes are interior nodes, therefore the discretized equation at node (i, j)
is given by
6 6 6 6
6
Thus
K
L
L
K L
K L
K L
P
6
P
6
P
6
P
6
P
6
P
P
6 6
P
6
P
6
P
6
P
P
6 6
P
6
P
6
P
6
P
6
P
6
P
P
6 6
197
P
P
P
6 6 6
P
6
P
6
P
6
P
6
P
6
P
6
P
6
P
6
P
6
P
6
Note that the coefficient of the term on the left hand side is the highest among all the other
coefficients in the linear algebraic equation. That is why convergence is obtained when the
GaussSeidel method is used for solving the above set of linear algebraic equations. To start
the iteration, some initial values of all the nine variables are assumed and thereafter their latest
values are used to update the solution. The iterations are performed till there is no change in
P
P
the value of temperature 6K L 6K L F . Program 10.1 for the solution of the above problem
is given in the Appendix. The converged solution is
T1,1 = 47.14
T1,2 = 91.25
T1,3 = 182.86
T2,1 = 57.32
T2,2 = 115.00
T2,3 = 220.18
T3,1 = 47.14
T3,2 = 91.25
T3,3 = 182.86
EXAMPLE 10.2 Consider the following body in which the inner face is at 200C and the
outer face is at 100C. The body is very long so that heat transfer takes place in two
dimensions only. The thermal conductivity of the body is 1.21 W/m-K. The dimensions of the
m.
body are shown in Fig. 10.4. Take 'Z '[
3m
1m
3m
1m
200C
2
5
Fig. 10.4
Example 10.2.
100C
198
6P
6P
6P
6P
6P
On modifying the Program 10.1, the following solution is obtained: T1 = 145.83C,
T2 = 141.67C, T3 = 120.83C, T4 = 141.67C, T5 = 145.83C.
6P
EXAMPLE 10.3
Determine the temperature at various nodes shown in Fig. 10.5. The heat
6
6
400C
R4
R5
B2
R3
B3
R1
20C
B4
B1
R2
Fig. 10.5
20C
20C
Example 10.3.
Solution Before starting the iterations the following initial values of temperatures at the
black nodes are assumed: B1 = 55, B2 = 90, B3 = 90, B4 = 220C. Now we compute values
at the red nodes using the assumed values at the black nodes.
4
q%
4
4
4
199
q%
q%
q%
6 6
EXAMPLE 10.4 Discretize the equation
Z [
boundary as shown in Fig. 10.6.
i 1, j
i, j + 1
dq4
dq2
i, j
dq3
Dx
2
Convection
boundary
i, j 1
Dx
Fig. 10.6
Dy
200
Solution The given differential equation is at steady state and therefore in the control volume
around node (i, j), the summation of S entering the control volume from all the four sides is
FS
6
FS
6
M#
M#
zero. From the left and right sides,
, and from top and bottom,
.
[
FV
Z
FV
To determine the area for heat transfer into the control volume, the depth is taken to be unity.
The various energy inputs into the control volume around node (i, j) are
'Z 6
6
FS
FV
M
FS
FV
6
M '[
FS
FV
M
FS
FV
J '[ 6 6
K L
K L
'[
6
K L
L
'Z
'Z 6
K L
6
K L
'[
K L
Thus
M
'Z 6
K L
6
K L
'[
6
M '[
K L
6
K
L
'Z
'Z 6
M
K L
6
K L
'[
J '[ 6
K L
6f
where T is the free stream temperature of the surrounding fluid and h is the convective heat
transfer coefficient between the convection boundary surface and fluid.
If Dx = Dy, the equation becomes
M
6 6 M 6 6 M 6 6 J 'Z 6 6f
Collecting the terms of Ti,j on one side and the rest of the terms on the other side, we get
K L
K L
K L
6
L
K L
6 6
K
K L
K L
6
K L
K L
$K6f
$K
K L
EXAMPLE 10.5
6
Z
6
201
[
i, j
Dy
Dx
2
i 1, j 1
T h
i, j 1
Dx
Fig. 10.7
Solution
'[ 6
K L
6
K
'Z
L
'Z 6
M
K L
6
K L
'[
'Z
6
K L
6f J
'[
6
K L
6f
where T is the free stream temperature of the surrounding fluid and h is the convective heat
transfer coefficient between the convection boundary surface and the fluid. If Dx = Dy, the
equation becomes
M
6
K L
6
K
L
M
6
K L
6
K L
J 'Z 6
K L
6f
Collecting the terms of Ti, j on one side and the rest of the terms on the other side, we get
6
6 6
K L
K L
$K6f
$K
6 6
at node (i, j) of an interior corner
Z [
with the convection boundary condition as shown in Fig. 10.8.
EXAMPLE 10.6
202
i, j + 1
i 1, j
i, j
i + 1, j
Dy
Dx
2
T h
i, j 1
Dx
Fig. 10.8
Solution
M
K L
6
K
L
'Z
6
M 'Z
K L
6
K L
'[
6
M '[
K L
6
K
L
'Z
'Z 6
M
K L
6
K L
'[
'Z
6 6f J '[ 6 6f
where T is the free stream temperature of the surrounding fluid and h is the convective heat
transfer coefficient between the convection boundary surface and the fluid. Taking Dx = Dy and
dividing by k, we get
K L
6
K L
K L
6
K
6
6
K L
K L
6
K L
6
K L
6 6
K L
$K 6 6f
K L
Collecting the terms of Ti, j on one side and the rest of the terms on the other side, we get
K L
6
K
L
6
K L
EXAMPLE 10.7
L
6
K L
$K6f
$K
6
Z
6
[
203
i, j + 1
i 1, j
Dy
i, j
Insulation
boundary
Dx
2
Dx
Fig. 10.9
Solution The given differential equation is at steady state and therefore in the control volume
around node (i, j) the summation of S entering the control volume from all the three sides is
zero. There is no heat flux across the insulation boundary. From the energy balance at node
(i, j), we get
M
'Z 6
K L
6
K L
6 6
'Z 6 6
M '[
M
'Z
'[
'[
K L
K L
K L
K L
6
K L
6
K L
6
K
6 6
K L
K L
Collecting the terms of Ti, j on one side and the rest of the terms on the other side, we get
6
6 6
K
L
K L
6
K L
Note that the insulation boundary equation is obtained by setting h = 0 in the equation for
convection boundary.
K L
EXAMPLE 10.8
6
Z
6
[
204
100oC and the top face at 500C, while the other two faces are exposed to an environment at
100oC. The convective heat transfer coefficient between the right and bottom walls to the
surrounding fluid is 10 W/m2-K. The block is 1 m 1 m. Use the GaussSeidel method.
500C
T1,3
T2,3
T3,3
h = 10 W/m2-K
T1,2
T2,2
T3,2
T = 100C
T1,1
T2,1
100C
T3,1
2
T = 100C
Fig. 10.10
h = 10 W/m -K
Example 10.8.
m.
At the interior nodes the discretized equation is
Solution
'Z
'[
6 6
L
L
6
K L
6
K L
At nodes T1,1, T2,1, T3,2, and T3,3 the convection boundary condition exists, and at node T3,1 the
exterior corner convection boundary condition exists. These convection boundary conditions
have been described in previous examples. Thus the following nodal equations are obtained:
6P 6 P
6 P
P
P
P
6 6 6
P
6
P
P
6 6
P
6
P
P
P
6 6 6
P
6
P
P
P
P
6 6 6 6
P
6
P
P
P
6 6 6
P
6
K L
P
P
6 6
P
6
P
P
P
6 6 6
P
6
P
P
6 6
P
6
205
Note that the coefficient of the term on the left hand side is the highest among all the other
coefficients in the linear algebraic equation and that is why convergence is obtained when the
GaussSeidel method is used. To start the iteration, some initial values of all the nine variables
are assumed and thereafter their latest values are used to update the solution. The iterations are
performed till there is no change in the value of the temperature at the given node, that is,
6KPL 6KPL F . Program 10.1 can be modified for the solution of this problem. The converged
solution is (all T in C)
T1,1 = 157.68
T1,2 = 192.34
T1,3 = 280.65
EXAMPLE 10.9
T2,1 = 184.51
T2,2 = 231.03
T2,3 = 330.25
T3,1 = 175.32
T3,2 = 217.01
T3,3 = 309.32
For the L-shaped body shown in Fig. 10.11, determine the temperatures at
6
6
Insulated
h = 75 W/m2-K
T = 25C
7
8
Dy = 1 cm
9
Heat flux
4500 W/m2
Surface at 90C
Fig. 10.11
Dx = 1 cm
Example 10.9.
206
Solution
'Z 6 6
'[
'[ 6 6
M
'Z
'Z
6 6f
M 6 6 M 6 6 J'Z 6 6f
6 6 6 6
J 'Z
6 6f
M
J 'Z
.
M
Thus the equation for node 1 becomes
where
6 6
6 6
'[ 6 6
'[ 6 6
'Z M 'Z M 'Z '[
6 6 6 6 6 6
6 6 6 6
6
Equation for node 4:
M
J 'Z
6f 6
M
6 6 6
6
M
J 'Z 6 6f
'Z
'[
6 6f J 6 6f
J 'Z
6f 6
M
6 6
'Z 6 6
'Z 6
6 6
M
M '[
'[
'[
'Z
6 6 6
6 6
6
6 6
6 6
6 6
6 6
M '[ 'Z M 'Z '[ M 'Z '[
6 6 6
6
6 6
'Z 6 6
'[ 6 6
6 6
M '[
M 'Z '[ M 'Z
'[
'Z
'Z
'[
6 6f J 6 6f
6 6
6 6
6 6 6 6
J 'Z
6f 6
M
6 6 6
6
6
'[ 6 6
'[ 6 6
'Z M 'Z M 'Z '[
M
6 6 6 6 6
6
J 'Z
6f 6
M
6 6
6
'[ 6 6
'[ 6 6
'Z M 'Z M 'Z '[
6 6 6 6 6
6
J 'Z 6 6f
J 'Z
6f 6
M
6 6
J 'Z 6 6f
'[ 6 6
'Z 6
'[
'Z M '[
'[
6 6 6
6
6
'Z
6 6f
J 'Z
6f 6
M
207
208
Program 10.1 can be modified for the solution of this problem. The converged solution is:
T1 = 83.19, T2 = 82.86, T3 = 81.49, T4 = 86.43, T5 = 86.27, T6 = 85.78, T7 = 86.72, T8 = 87.26,
and T9 = 88.54C.
6
[
L
6
K L
'Z
L
K L
6
K L
'[
6
K L
P
6
K L
'Z
6K
L
P
6 P 6 P 6 P
'[
K L
K L
K L
(10.12)
P
P
P
6 6
6
(10.13)
'[
'Z
The first half-step is executed on all the nodes. This is followed by computation of the second
half- step on all the nodes (see Fig. 10.12). The ADI method is also called the line-by-line
6KPL
6KPL
j+1
j
Sweep direction
K L
Sweep direction
6KPL
i
i+1
(b) Second half-step of iteration
209
TDMA, as in each line of nodes taken a tridiagonal set of linear algebraic equations is formed.
TDMA can be used to solve them, and thus the values of nodes along a line are updated.
Initially, Eq. (10.12) is considered for the first half of iteration, in which the sweep direction
is along the x-axis and each line of nodes along the x-axis is updated. Then Eq. (10.13) is
considered for the second half of iteration, in which the sweep direction is along the y-axis and
each line of nodes along the y-axis is updated. The iterations are performed till convergence
in temperature is achieved, 6KPL 6KPL F . ADI is a line-by-line method, whereas Gauss
Seidel is a pointwise method.
EXAMPLE 10.10
Determine the temperature at various nodes shown in Fig. 10.13. The heat
6 6
transfer is given by the equation
. The boundary conditions are shown in
Z [
Fig. 10.13. The size of the slab is 2 m 2 m and Dx = Dy = 0.5 m. Use the ADI method.
400C
T2,4
T1,4
T3,4
T1,3
T0,1
T3,3
T2,2
T3,2
T1,1
20C T0,2
T2,3
T1,2
T0,3
T2,1
T3,1
T4,3
T4,2
20C
T4,1
T1,0
T2,0
T3,0
20C
Fig. 10.13 Example 10.10.
Solution The first half iteration is performed (scanning various i nodes for given j) using the
discretized equation
P
P
P
6 6 6
K
'Z
K L
6 P 6 P 6 P
K L
K L
'[
K L
P
P
6 6 6
K
K L
6 P 6 P
K L
K L
At node 1,1
P
P
P
P
P
6 6
210
Let us assume the following initial temperatures: T1,2 = 90, T2,2 = 110, T3,2 = 90. Since T0,1
is always at 20C, the above equation becomes
P
At node 2,1
6
P
P
P
P
6 6 6
6
P
P
6 6
P
6
P
6
P
6
P
P
P
6 6
6
P
P
6 6
At node 3,1
P
P
P
P
P
6 6
6
P
6
P
6
P
P
6 6
P
P
P
P
6 6 6
6 6
The following tridiagonal set of linear algebraic equations is obtained for various i nodes at
j=1
P
6
P
6
6 P
P
P
= 46.43, 6
P
= 55.71, 6
= 46.43C.
P
P
P
P
6 6
Let us assume the following initial temperatures: T1,3 = 180, T2,3 = 220, T3,3 = 180.
Since T0,2 is always at 20C, the above equation becomes
P
P
P
P
P
6 6 6
6 6
At node 2,2
P
6
P
P
P
6
P
P
6
P
P
6 6
P
P
6 6
211
At node 3,2
P
P
P
P
P
6 6
P
P
6 6
P
P
P
6 6 6
P
P
P
P
6 6 6
6 6
The following tridiagonal set of linear algebraic equations is obtained for various i nodes at
j = 2:
P
6
P
6
6 P
P
P
P
The solution by TDMA is: 6 = 90.10, 6 = 113.98, 6 = 90.10C.
Now let us write the equations for various i nodes at j = 3.
At node 1,3
P
P
P
P
P
6 6
6
P
6
P
P
P
6 6 6
At node 2,3
P
6
P
P
P
6
P
P
6
P
P
6 6
P
P
6 6
At node 3,3
P
P
P
P
P
6 6
P
6 6
P
P
P
6 6 6
P
6 6
P
P
P
6 6 6
212
The following tridiagonal set of linear algebraic equations is obtained for various i nodes at
j = 3:
P
6
P
6
6 P
P
P
P
The solution by TDMA is: 6 = 182.46, 6 = 219.72, 6 = 182.46C.
The second half iteration (scanning various j nodes for given i) is performed using the
discretized equation
P
P
P
6 6 6
K
'Z
K L
6 P 6 P 6 P
K L
K L
K L
'[
P
6 P 6 P 6 P
6 6
P
P
P
6 6 6
6 6
K L
At node 1,1
P
6
K L
K L
P
6
P
P
6
P
6
P
P
6
P
P
At node 1,2
P
P
P
6 6 6
P
P
P
6 6 6
At node 1,3
P
6 6 6
P
6 6
P
P
P
6 6 6
P
P
P
6 6
The following tridiagonal set of linear algebraic equations is obtained for various j nodes at
i = 1:
P
6
P
6
P
6
213
P
P
P
The solution by TDMA is: 6 = 46.63, 6 = 90.81, 6 = 182.63C.
At node 2,1
P
P
P
P
6 6 6
P
6
P
6
P
6 6
P
P
6
6
P
6
P
P
P
6 6 6
At node 2,2
P
P
P
P
6 6 6
P
P
P
6 6 6
P
6 6
At node 2,3
P
P
P
P
6 6 6
P
6 6
The following tridiagonal set of linear algebraic equations is obtained for various j nodes at
i = 2:
P
6
P
6
6
P
P
P
P
The solution by TDMA is: 6 = 56.87, 6 = 114.41, 6 = 219.88C.
At node 3,1
P
6
P
6
P
P
6
6
P
P
P
6 6
P
6
P
P
6 6 6
P
P
P
6 6 6
At node 3,2
P
P
P
6 6 6
P
P
P
6 6 6
P
P
6 6
214
At node 3,3
P
P
P
6 6 6
P
P
6 6
The following tridiagonal set of linear algebraic equations is obtained for various j nodes at
i = 3:
P
6
P
6
P
6
P
P
P
The solution by TDMA is: 6 = 46.97, 6 = 91.03, 6 = 182.73C.
Program 10.2 for the solution of the above problem is given in the Appendix. After 25
iterations when convergence is obtained, the results from the computer program are: T1,1 = 47.14,
T1,2 = 91.25, T1,3 = 182.86, T2,1 = 57.32, T2,2 = 115.00, T2,3 =220.16, T3,1 = 47.14,
T3,2 = 91.25, T3,3 = 182.86C.
Similar results are obtained in Example 10.1 in which the problem was solved using the
GaussSeidel method.
10.6
The ADI method can be extended for the solution of two-dimensional transient heat
conduction. The explicit schemes are stable only with some constraints on Dx and Dt, whereas
implicit schemes are not associated with these constraints. Therefore the ADI method, which
is an implicit method shall be used. Transient heat conduction in two-dimensional space is
given by [see Eq. (9.26)]
6
6
V
Z
6
[
6
K L
6 P
'V
K L
P
P
P
P
P
P
6 6 6 6 6 6
B
'Z
'[
Letting D = Dx = Dy and /
B'V
'
, we get
K L
K L
K L
K L
(10.14)
P
6K L
6KPL
P
P
/ P
6K L 6K L 6K L 6KPL 6KPL 6KPL
6K
L
K L
6K
L
P
P
P
P
P
6 6 6
/
K
(10.15)
, we get
/
P
P
6 6
/
K L
215
K L
P
6 P 6 P 6 P
(10.16)
6 P 6 P 6 P
/
(10.17)
6
K L
K L
K L
K L
K L
K L
K L
6KPL
P
P
P
6 6
6 P 6 P 6 P
6
B
'Z
'[
(10.18)
P
P
P
/ P
6K L 6KPL 6KPL 6K 6K 6K L
L
L
(10.19)
P
6
K L
'V
P
6KPL 6K L
K L
K L
K L
K L
, we get
/
P
P
6K L 6K L
P
6 P 6 P 6 P
/
K L
P
P
K L
K L
P
P
P
6 6 6
K
K L
(10.20)
/
(10.21)
temperature at time t and 6 are the updated temperatures computed in this first half of
iteration. Sweeping of each line along the x-axis is carried out from bottom to top. Then
P
Eq. (10.21) is considered for the second half of the iteration. In this equation, 6 are known
and 6 P are computed. The sweeping of each line along the y-axis is carried out from left to
right and the temperature profile at time t + Dt is computed. This temperature profile at t + Dt
can be used to obtain the temperature profile at t + 2Dt by again carrying out the
first half and the second half of the iteration. Thus marching in time is carried out for this
parabolic PDE.
216
EXAMPLE 10.11 A slab of size 2 m 2 m is initially at 0C, and at t = 0 all the four sides
of the slab are made at 400oC. Take D = Dx = Dy = 0.1 m and a = 1 m2/s. Determine the
temperature of the slab at various nodes at t = 0.5 s. Take Dt = 0.05 s and for computing
consider the upper quadrant of the slab.
Solution The upper quadrant of the slab is shown in Fig. 10.14. The size of the quadrant is
1 m 1 m and 10 parts along an axis are made; therefore D = Dx = Dy = 0.1 m. Let us take
't
0.05 s; therefore /
B'V
'
. Thus
and
400C
(1,11)
6
Z
/
/
.
(11,11)
400C
(1,1)
(11,1)
6
[
Upper quadrant of slab in Example 10.11.
Fig. 10.14
P
6
P
P
P
P
6 6
P
P
P
6 , we get
P
P
6 6
P
At node (3,1), using Eq. (10.17) and from symmetry 6
P
P
P
6 6
6
P
At node (2,1), using Eq. (10.17) and from symmetry 6
6
P
P
6 and 6
P
6 , we get
P
P
6 6
P
6 , we get
6
6
P
P
6
P
6
217
P
6 , we get
6
P
In the above equation on the right hand side, T11,1 = 400. The above set of 10 equations
constitute a tridiagonal matrix and can be solved using TDMA.
Equations for node (1,2) to node (10,2)
P
P
P
6 , we get
P
P
P
6 6 6
6 6
6
P
P
6 6
P
P
P
6 6 6
P
P
P
P
P
6 6 6
6
6
P
P
6
P
6
P
6
6
P
In the above equation on the right hand side, T11,2 = 400. The above set of 10 equations
constitute a tridiagonal matrix and can be solved using TDMA.
Equations for node (1,10) to node (10,10)
P
6
P
P
6 , we get
P
P
P
6 6 6
P
P
P
P
P
6 6 6
6
P
6
P
P
P
P
6 6 6
P
6 6
P
P
P
P
6 6 6 6
218
In the above set of equations on the right hand side, Ti,11 = 400 and T11,10 = 400. The above
set of 10 equations constitute a tri-diagonal matrix and can be solved using TDMA.
Second half of iteration
Equations for node (1,1) to node (1,10)
P
P
P
P
6 6
P
6 6
P
At node (1,2), using Eq. (10.21) and from symmetry 6
P
6
P
6
P
P
6
P
6
P
P
P
P
6 6
P
6 , we get
P
At node (1,10), using Eq. (10.21) and from symmetry 6
P
P
6 6
P
6 , we get
6 6
P
6
P
and 6
P
6 , we get
P
At node (1,3), using Eq. (10.21) and from symmetry 6
P
6
6
P
P
6 , we get
P
6 6 6
In the above equation on the right hand side, T1,11 = 400. The above set of 10 equations
constitute a tridiagonal matrix and can be solved using TDMA.
Equations for node (2,1) to node (2,10)
P
P
6
P
6
P
6
P
6 , we get
P
6
P
P
P
P
6
P
6
P
6
P
6
P
6
P
P
P
P
6 6 6 6
219
In the above equation on the right hand side, T2,11 = 400. The above set of 10 equations
constitute a tridiagonal matrix and can be solved using TDMA.
Equations for node (10,1) to node (10,10)
6
P
6
P
P
P
P
, we get
P
6
P
6
6
P
P
6
6
P
P
P
P
6
P
P
6
6
P
6
P
P
6
In the above set of equations on the right hand side, T11,i = 400 and T10,11 = 400. The above
set of 10 equations constitute a tridiagonal matrix and can be solved using TDMA. Note that
for both the first-half and second-half iterations the tridiagonal matrix that is formed has the
following coefficients:
C
C
C
C
C
D
D
D
D
D
C
D
C
D
C
D
C
D
D
E E E E E E E E E
Program 10.3 for the solution of the above problem is given in the Appendix. The temperatures
(in C) at t = 0.5 s are presented in Table 10.2.
Table 10.2
T1,1 = 329.77
T1,2 = 329.83
T1,3 = 330.02
T1,4 = 330.42
T1,5 = 331.19
T1,6 = 332.64
T1,7 = 335.34
T1,8 = 340.39
T1,9 = 349.80
T1,10 = 367.33
T2,1 = 331.09
T2,2 = 331.70
T2,3 = 333.54
T2,4 = 336.68
T2,5 = 341.22
T2,6 = 347.31
T2,7 = 355.10
T2,8 = 364.85
T2,9 = 376.94
T2,10 = 389.30
T4.1 = 339.01
T4,2 = 339.65
T4,3 = 341.58
T4,4 = 344.82
T4,5 = 349.39
T4,6 = 355.29
T4,7 = 362.43
T4,8 = 370.77
T4,9 = 380.49
T4,10 = 389.60
T5,1 = 345.20
T5,2 = 345.80
T5,3 = 347.61
T5,4 = 350.64
T5,5 = 354.86
T5,6 = 360.25
T5,7 = 366.68
T5,8 = 374.10
T5,9 = 382.71
T5,10 = 390.70
220
T6,1 = 352.52
T6,2 = 353.06
T6,3 = 354.67
T6,4 = 357.35
T6,5 = 361.08
T6,6 = 365.79
T6,7 = 371.37
T6,8 = 377.76
T6,9 = 385.18
T6,10 = 391.98
T7,1 = 360.60
T7,2 = 361.06
T7,3 = 362.42
T7,4 = 364.68
T7,5 = 367.81
T7,6 = 371.75
T7,7 = 376.38
T7,8 = 381.65
T7,9 = 387.81
T7,10 = 393.37
T8,1 = 369.54
T8,2 = 369.90
T8,3 = 370.96
T8,4 = 372.73
T8,5 = 375.16
T8,6 = 378.22
T8,7 = 381.80
T8,8 = 385.87
T8,9 = 390.63
T8,10 = 394.88
T9,1 = 381.09
T9,2 = 381.31
T9,3 = 381.98
T9,4 = 383.07
T9,5 = 384.59
T9,6 = 386.49
T9,7 = 388.71
T9,8 = 391.25
T9,9 = 394.16
T9,10 = 396.86
T10,1 = 388.03
T10,2 = 388.17
T10,3 = 388.60
T10,4 = 389.30
T10,5 = 390.27
T10,6 = 391.47
T10,7 = 392.88
T10,8 = 394.47
T10,9 = 396.38
T10,10 = 397.96
Exercises
10.1 Using the Gauss-Seidel method, determine the temperatures at positions 1, 2, 3 and
4 shown in Fig. 10.15.
700C
4
100C
400C
500C
Fig. 10.15
Exercise 10.1.
75C
T2,3
T2,3
T1,2
T2,2
T3,2
T1,1
T2,1
T3,1
0C
Fig. 10.16
Exercise 10.2.
50C
221
(Ans: T1,1 = 42.86, T1,2 = 63.17, T1,3 = 78.57, T2,1 = 33.26, T2,2 = 56.25,
T2,3 = 76.12, T3,1 = 33.93, T3,2 = 52.46, T3,3 = 69.64C)
10.3 Using the Gauss-Seidel method, determine the steady state temperatures for nodes
1 to 6 shown in Fig. 10.17. The thermal conductivity of the body is 1.5 W/m-K.
Dx = Dy = 25 cm.
2
1
3
50C
h = 12 W/m2-K, T = 15C
Fig. 10.17
50C
50C
Exercise 10.3.
h = 23 W/m2-K, T = 25C
2
3
4
10
11
12
13
Insulation
14
15
16
100C
100C
Fig. 10.18
Exercise 10.4.
222
(1,11)
6
Z
(11,11)
600C
(1,1)
6
[
Fig. 10.19 Exercise 10.5.
(11,1)
(Ans: Program 10.3 can be modified and the temperatures (in C) at t = 0.25 s are
presented in Table 10.3.
Table 10.3
T1,1 = 290.10
T1,2 = 290.34
T1,3 = 291.18
T1,4 = 292.95
T1,5 = 296.35
T1,6 = 302.74
T1,7 = 314.69
T1,8 = 336.96
T1,9 = 378.48
T1,10 = 455.84
T2,1 = 294.61
T2,2 = 297.26
T2,3 = 305.32
T2,4 = 319.18
T2,5 = 339.47
T2,6 = 366.94
T2,7 = 401.84
T2,8 = 443.29
T2,9 = 491.07
T2,10 = 563.32
T3,1 = 308.63
T3,2 = 311.43
T3,3 = 319.95
T3,4 = 334.48
T3,5 = 355.48
T3,6 = 383.30
T3,7 = 417.53
T3,8 = 456.10
T3,9 = 497.67
T3,10 = 562.67
T4.1 = 329.39
T4.2 = 332.19
T4.3 = 340.64
T4.4 = 354.95
T4.5 = 375.40
T4.6 = 402.10
T4.7 = 434.20
T4.8 = 469.16
T4.9 = 505.61
T4.10 = 566.37
T5,1 = 356.77
T5,2 = 359.39
T5,3 = 367.31
T5,4 = 380.66
T5,5 = 399.59
T5,6 = 424.03
T5,7 = 452.99
T5,8 = 483.88
T5,9 = 515.51
T5,10 = 571.09
T6,1 = 390.11
T6,2 = 392.45
T6,3 = 399.47
T6,4 = 411.25
T6,5 = 427.88
T6,6 = 449.20
T6,7 = 474.24
T6,8 = 500.60
T6,9 = 527.28
T6,10 = 576.02
T7,1 = 427.17
T7,2 = 429.12
T7,3 = 435.00
T7,4 = 444.85
T7,5 = 458.70
T7,6 = 476.39
T7,7 = 497.03
T7,8 = 518.57
T7,9 = 540.20
T7,10 = 580.89
T8,1 = 462.90
T8,2 = 464.48
T8,3 = 469.20
T8,4 = 477.09
T8,5 = 488.17
T8,6 = 502.28
T8,7 = 518.67
T8,8 = 535.63
T8,9 = 552.54
T8,10 = 585.36
T9,1 = 496.07
T9,2 = 497.27
T9,3 = 500.88
T9,4 = 506.92
T9,5 = 515.38
T9,6 = 526.13
T9,7 = 538.58
T9,8 = 551.33
T9,9 = 563.91
T9,10 = 589.41
T10,1 = 576.63
T10,2 = 576.89
T10,3 = 577.69
T10,4 = 579.01
T10,5 = 580.87
T10,6 = 583.23
T10,7 = 586.01
T10,8 = 589.01
T10,9 = 592.14
T10,10 = 596.94
223
T1,1 = 494.66
T1,2 = 494.74
T1,3 = 495.03
T1,4 = 495.63
T1,5 = 496.78
T1,6 = 498.96
T1,7 = 503.02
T1,8 = 510.59
T1,9 = 524.71
T1,10 = 551.00
T2,1 = 496.64
T2,2 = 497.55
T2,3 = 500.31
T2,4 = 505.01
T2,5 = 511.83
T2,6 = 520.96
T2,7 = 532.65
T2,8 = 547.27
T2,9 = 565.42
T2,10 = 583.95
T3,1 = 501.32
T3,2 = 502.29
T3,3 = 505.21
T3,4 = 510.15
T3,5 = 517.20
T3,6 = 526.45
T3,7 = 537.91
T3,8 = 551.64
T3,9 = 567.89
T3,10 = 583.27
T4,1 = 508.51
T4,2 = 509.48
T4,3 = 512.37
T4,4 = 517.23
T4,5 = 524.09
T4,6 = 532.93
T4,7 = 543.65
T4,8 = 556.16
T4,9 = 570.73
T4,10 = 584.40
T5,1 = 517.80
T5,2 = 518.71
T5,3 = 521.42
T5,4 = 525.95
T5,5 = 532.29
T5,6 = 540.37
T5,7 = 550.03
T5,8 = 561.14
T5,9 = 574.06
T5,10 = 586.05
T6,1 = 528.78
T6,2 = 529.59
T6,3 = 532.01
T6,4 = 536.03
T6,5 = 541.62
T6,6 = 548.69
T6,7 = 557.06
T6,8 = 566.64
T6,9 = 577.77
T6,10 = 587.97
T7,1 = 540.91
T7,2 = 541.59
T7,3 = 543.63
T7,4 = 547.02
T7,5 = 551.72
T7,6 = 557.62
T7,7 = 564.57
T7,8 = 572.48
T7,9 = 581.71
T7,10 = 590.05
T8,1 = 554.31
T8,2 = 554.84
T8,3 = 556.44
T8,4 = 559.09
T8,5 = 562.75
T8,6 = 567.33
T8,7 = 572.70
T8,8 = 578.81
T8,9 = 585.94
T8,10 = 592.32
T9,1 = 571.64
T9,2 = 571.97
T9,3 = 572.97
T9,4 = 574.61
T9,5 = 576.89
T9,6 = 579.73
T9,7 = 583.08
T9,8 = 586.87
T9,9 = 591.24
T9,10 = 595.29
T10,1 = 582.04
T10,2 = 582.26
T10,3 = 582.90
T10,4 = 583.95
T10,5 = 585.40
T10,6 = 587.21
T10,7 = 589.32
T10,8 = 591.71
T10,9 = 594.56
T10,10 = 596.94
Appendix
Programs in C++
Program
Title
1.1
1.2
1.3
2.1
2.2
2.3
2.4
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
4.1
4.2
225
226
4.3
4.4
4.5
4.6
4.7
7.1
7.2
8.1
8.2
9.1
9.2
10.1
10.2
10.3
Appendix:
Programs in C++
//PROGRAM 1.1
//program for the solution of tridiagonal equations
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int i,j,n,i1,n1,k;
float a[21],b[21],c[21],d[21],x[21],beta[21],gamma[21];
//a is subdiagonal, b is diagonal and c is superdiagonal
for(i=2;i<=7;++i)
{
a[i]=1.0;
}
for(i=1;i<=7;++i)
{
b[i]=-2.0;
}
for(i=1;i<=6;++i)
{
c[i]=1.0;
}
d[1]=-240.0;
for(i=2;i<=6;++i)
{
d[i]=-40.0;
}
d[7]=-60.0;
i=1;
n=7;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
for(j=i1;j<=n;++j)
{
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
cout<<\t\t\t THE SOLUTION BY TDMA<<endl;
for(i=1;i<=7;++i)
{
cout<<x[i]<<endl;
}
getch();
}
PROGRAM 1.2
//PROGRAM 1.2
//program for the solution of linear algebraic equations
//by the Gauss Elimination method
#include<iostream.h>
227
228
Appendix:
Programs in C++
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int n,m,l,i,j,k,jj,kp1,nn,ip1;
float a[10][11],x[10],sum,big,ab,quot,t;
n=4;
cout<<n<<endl;
m=n+1;
l=n-1;
cout<<Input the elements of A rowwise and elements of B<<endl;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cout<<a[i][j]<<endl;
}
}
for(k=1;k<=l;k++)
{
big=fabs(a[k][k]);
jj=k;
kp1=k+1;
for(i=kp1;i<=n;i++)
{
ab=fabs(a[i][k]);
if((big-ab)<0.0)
{
big=ab;
jj=i;
}
}
if((jj-k)>0)
{
for(j=k;j<=m;j++)
{
t=a[jj][j];
a[jj][j]=a[k][j];
a[k][j]=t;
}
}
for(i=kp1;i<=n;i++)
{
quot=a[i][k]/a[k][k];
for(j=kp1;j<=m;j++)
{
a[i][j]=a[i][j]-quot*a[k][j];
}
}
for(i=kp1;i<=n;i++)
{
a[i][k]=0.0;
}
}
x[n]=a[n][m]/a[n][n];
for(nn=1;nn<=l;nn++)
{
sum=0.0;
i=n-nn;
ip1=i+1;
for(j=ip1;j<=n;j++)
{
sum=sum+a[i][j]*x[j];
}
x[i]=(a[i][m]-sum)/a[i][i];
}
for(i=1;i<=n;i++)
{cout<<x[i]<<endl;}
getch();
}
PROGRAM 1.3
//PROGRAM 1.3
//program for the solution of linear algebraic equations
//by the Gauss-Seidel method
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float x1old,x2old,x3old,x1new,x2new,x3new;
x1new=2.0;
229
230
Appendix:
Programs in C++
x2new=3.0;
x3new=4.0;
do
{
x1old=x1new;
x2old=x2new;
x3old=x3new;
x1new=(44.0-x2old-2*x3old)/10.0;
x2new=(51.0-2*x1new-x3old)/10.0;
x3new=(61.0-x1new-2*x2new)/10.0;
}while(fabs(x1new-x1old)>1e-6&&fabs(x2new-x2old)>1e-6&&fabs(x3newx3old)>1e-6);
cout<<x1new<< <<x2new<< <<x3new<<endl;
getch();
}
PROGRAM 2.1
//PROGRAM 2.1
//program to solve for pressure drop in a pipe (nonlaminar case)
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float fricf,epsilon,d,mu,rho,v,fricfnew,f,fdash,Re,deltap,length,a1,a2,a3;
int n;
d=0.004,v=50.0,rho=1.23,mu=1.79e-5,epsilon=0.0015e-3,length=1.0;
cout<<\t\t\t OUTPUT<<endl;
cout<<\nEnter the initial value of fricfact;
cin>>fricf;
a1=epsilon/d;
Re=rho*v*d/mu;
a2=2.51/Re;
n=0;
fricfnew=0.01;
do
{
fricf=fricfnew;
f=(1.0/sqrt(fricf))+2.0*log10((a1/3.7)+(a2/sqrt(fricf)));
a3=-0.5*pow(fricf,-1.5);
fdash=a3+2.0*a2*a3/((a1/3.7)+(a2/sqrt(fricf)));
fricfnew=fricf-f/fdash;
n=n+1;
231
}while(fabs(fricfnew-fricf)>1e-6);
deltap=fricfnew*length*v*v*rho/(2.0*d);
cout<<\t Friction factor is <<fricfnew<<endl;
cout<<Pressure drop is <<deltap<<endl;
cout<<Number of iterations performed <<n<<endl;
getch();
}
PROGRAM 2.2
//PROGRAM 2.2
//program to solve for minimum fluidization velocity
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float epsilon,mu,vmf,phis,dp,rhop,rhog,a1,a2,a3,v,vnew,f,fdash;
const g=9.81;
int n;
dp=0.00012, phis=0.88, rhog=2.374, rhop=1000.0, mu=1.845e-5,
epsilon=0.42;
cout<<\t\t\t OUTPUT<<endl;
cout<<\nEnter the initial value of vmf in m/s ;
cin>>vmf;
a1=1.75*rhog*(1.0-epsilon)/(phis*dp*pow(epsilon,3.0));
a2=150.0*mu*(1.0-epsilon)*(1.0-epsilon)/(phis*phis*dp*dp*pow(epsilon,3));
a3=(1.0-epsilon)*(rhop-rhog)*g;
n=0;
vnew=0.01;
do
{
v=vnew;
f=a1*v*v+a2*v-a3;
fdash=2.0*a1*v+a2;
vnew=v-f/fdash;
n=n+1;
}while(fabs(vnew-v)>1e-6);
cout<<\t Velocity at minimum fluidization is <<vnew<< m/s <<endl;
cout<<Number of iterations performed were <<n<<endl;
getch();
}
232
Appendix:
Programs in C++
PROGRAM 2.3
//PROGRAM 2.3
//program to solve for terminal velocity
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float vt,vtnew,rhop,rhog,dp,cd,rep,mu,a1;
float g=9.81;
int n;
rhog=1.18,rhop=900.0,dp=0.002,mu=1.85e-5;
cout<<\nEnter the value of initial value of terminal velocity in m/
s ;
cin>>vtnew;
do
{
vt=vtnew;
rep=rhog*vt*dp/mu;
cd=24.0*(1.0+0.15*pow(rep,0.687))/rep;
a1=4.0*(rhop-rhog)*g*dp/(3.0*cd*rhog);
vtnew=sqrt(a1);
n=n+1;
}while(fabs(vtnew-vt)>1e-6);
cout<<\t Value of terminal velocity is <<vtnew<<endl;
cout<<number of iterations performed is <<n<<endl;
getch();
}
PROGRAM 2.4
//PROGRAM 2.4
//program for the solution of two simultaneous nonlinear equations
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float x1,x2,x1new,x2new,f1,f2,df1dx1,df1dx2,df2dx1,df2dx2;
float d,deltax1,deltax2;
int n;
x1new=0.1;
233
x2new=0.5;
n=0;
do
{
x1=x1new;
x2=x2new;
f1=pow(2.71828,x1)+x1*x2-1.0;
f2=sin(x1*x2)+x1+x2-1.0;
df1dx1=pow(2.71828,x1)+x2;
df1dx2=x1;
df2dx1=x2*cos(x1*x2)+1.0;
df2dx2=x1*cos(x1*x2)+1.0;
d=df1dx1*df2dx2-df1dx2*df2dx1;
deltax1=(f2*df1dx2-f1*df2dx2)/d;
deltax2=(f1*df2dx1-f2*df1dx1)/d;
x1new=x1+deltax1;
x2new=x2+deltax2;
n=n+1;
}while(fabs(x1new-x1)>1e-6&&fabs(x2new-x2)>1e-6);
cout<<The number of iterations performed is <<n<<endl;
cout<<x1new<< <<x2new<<endl;
getch();
}
PROGRAM 3.1
//PROGRAM 3.1
//program to calculate the molar volume in the liquid and vapour phases at the
//given temperature and pressure
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float w,s,t,tc,k,a,b,r=8.314,lpha,sol[2],vold,vnew,B,tr,b0,b1;
float p,pc,f,f1;
cout<<Enter the value of temperature in deg K and pressure in Pa;
cin>>t>>p;
cout<<Enter the value of critical temperature in deg K and critical
pressure in Pa;
cin>>tc>>pc;
cout<<Enter the value of acentric factor;
cin>>w;
//
//VIRIAL GAS EQUATION OF STATE Z(T,P)
//
234
Appendix:
Programs in C++
tr=t/tc;
b0=.083-0.422*pow(tr,-1.6);
b1=.139-0.172*pow(tr,-4.2);
B=(b0+w*b1)*r*tc/pc;
vnew=r*t/p+B;
cout<<Volume of vapour by virial eos Z(T,P) <<vnew<<m3/mol<<endl;
//
//VIRIAL GAS EQUATION OF STATE Z(T,V)
//
vnew=r*t/p;
do
{
vold=vnew;
f=p*vold/(r*t)-1-B/vold;
f1=p/(r*t)+B/(vold*vold);
vnew=vold-f/f1;
}
while(fabs(vnew-vold)>1e-6);
cout<<Volume of vapour by virial eos Z(T,V) <<vnew<<m3/mol<<endl;
//
//PENGROBINSON CUBIC EQUATION OF STATE
//
int i=0;
k=.37464+1.54226*w-.26992*w*w;
s=1+k*(1-pow(t/tc,.5));
lpha=pow(s,2);
a=.45724*r*r*tc*tc*lpha/pc;
b=.07780*r*tc/pc;
vnew=b;
for(i=0;i<=1;++i)
{
do
{
vold=vnew;
f=pow(vold,3)*p+vold*vold*(p*b-r*t)-vold*(3*p*b*b+2*b*r*t-a);
f=f+(p*b*b*b+b*b*r*t-a*b);
f1=pow(vold,2)*3*p+vold*2*(b*p-t*r)+(a-3*b*b*p-2*r*t*b);
vnew=vold-f/f1;
}
while(fabs(vnew-vold)>1e-6);
sol[i]=vnew;
vnew=r*t/p;
}
cout<<Volume of saturated liquid by Peng-Robinson <<sol[0]<<m3/
mol<<endl<<
235
236
Appendix:
Programs in C++
PROGRAM 3.2
//PROGRAM 3.2
//program to calculate the BPT and DPT
//of a mixture of given composition, assuming Raoults law to be true
//BPT is calculated by taking the given composition to be in liquid phase
//DPT is calculated by taking the given composition to be in vapour phase
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float p,p1sat,p2sat,p1satn,t1sat,t2sat;
float told,tnew,x1,x2,y1,y2,z1,a1,b1,c1,a2,b2,c2;
float f,f1;
cout<<\nEnter the mole fraction of component 1;
cin>>z1;
cout<<\nEnter the pressure in kPa;
cin>>p;
// the Antoine constants are for acetone (1) and water (2). For use of
// these constants temperature is in deg C and pressure in kPa.
a1=14.39155;
b1=2795.317;
c1=230.002;
a2=16.26205;
b2=3799.887;
c2=226.346;
//CALCULATION OF BUBBLE POINT TEMPERATURE
x1=z1;
x2=1-z1;
t1sat=b1/(a1-log(p))-c1;
t2sat=b2/(a2-log(p))-c2;
tnew=x1*t1sat+x2*t2sat;
do
{
told=tnew;
p1sat=exp(a1-b1/(told+c1));
237
p2sat=exp(a2-b2/(told+c2));
f=p-x1*p1sat-x2*p2sat;
f1=-x1*p1sat*b1/((told+c1)*(told+c1))-x2*p2sat*b2/
((told+c2)*(told+c2));
tnew=told-f/f1;
}while(fabs(tnew-told)>1e-6);
cout<<\nThe bubble point temperature is:<<tnew;
//CALCULATION OF DEW POINT TEMPERATURE
y1=z1;
y2=1-z1;
t1sat=b1/(a1-log(p))-c1;
t2sat=b2/(a2-log(p))-c2;
tnew=y1*t1sat+y2*t2sat;
do
{
told=tnew;
p1sat=exp(a1-b1/(told+c1));
p2sat=exp(a2-b2/(told+c2));
f=(1/p)-(y1/p1sat)-(y2/p2sat);
f1=(y1*b1/((told+c1)*(told+c1)))/(p1sat)+(y2*b2/
((told+c2)*(told+c2)))/(p2sat);
tnew=told-f/f1;
}while(fabs(tnew-told)>1e-6);
cout<<\nThe dew point temperature is <<tnew;
getch();
}
PROGRAM 3.3
//PROGRAM 3.3
//program to calculate the compositions of the vapour and liquid phases
//at the given
//temperature and pressure under flash conditions, assuming Raoults law
//to be true
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int i;
float psat[4],k[4],z[4],x[4],y[4],dpp,bpp,V,p,Vo,f,f1;
// dpp is the dew point pressure, bpp is bubble point pressure and
// V is the number of moles in the vapour phase.
psat[1]=195.75,psat[2]=97.84,psat[3]=50.32;
238
Appendix:
Programs in C++
239
PROGRAM 3.4
//PROGRAM 3.4
//program to calculate the bubble point pressure, bubble point temperature,
//dew point pressure and dew point temperature, assuming the modified
//Raoults law to be true
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float p,t,a1,b1,c1,a2,b2,c2,p1sat,p2sat,r=8.314,pold,pnew,g11,g22,t1sat,t2sat;
float tnew,told,x1,x2,y1,y2,h12,h21,g1,g2,m,a12=437.98*4.186,a21=1238*4.186;
float V1=76.92,V2=18.07;
a1=16.678;
b1=3640.2;
c1=219.61;
a2=16.2887;
b2=3816.44;
c2=227.02;
//the component 1 is acetone and 2 is water. The pressure in Antoine equation
//is in kPa and temperature in deg C. a12 and a21 are in cal/mol.
//
//CALCULATION OF BPP (temperature and liquid phase composition are given)
cout<<Calculation of BPP<<endl;
cout<<Enter the value of temperature in deg C and mole fraction x1;
cin>>t>>x1;
x2=1-x1;
p1sat=exp(a1-b1/(c1+t));
p2sat=exp(a2-b2/(c2+t));
h12=V2*exp(-a12/(r*(t+273.15)))/V1;
h21=V1*exp(-a21/(r*(t+273.15)))/V2;
m=h12/(x1+x2*h12)-h21/(x2+x1*h21);
g1=exp(-log(x1+x2*h12)+x2*m);
g2=exp(-log(x2+x1*h21)-x1*m);
p=x1*g1*p1sat+x2*g2*p2sat;
cout<<BPP=<<p<<kPa\n;
//
//CALCULATION OF BPT (pressure and liquid phase composition are given)
cout<<Calculation of BPT<<endl;
cout<<Enter the value of pressure in kPa and x1\n;
cin>>p>>x1;
x2=1-x1;
t1sat=b1/(a1-log(p))-c1;
t2sat=b2/(a2-log(p))-c2;
240
Appendix:
Programs in C++
tnew=x1*t1sat+x2*t2sat;
do
{
told=tnew;
p1sat=exp(a1-b1/(c1+told));
p2sat=exp(a2-b2/(c2+told));
h12=V2*exp(-a12/(r*(told+273.15)))/V1;
h21=V1*exp(-a21/(r*(told+273.15)))/V2;
m=h12/(x1+x2*h12)-h21/(x2+x1*h21);
g1=exp(-log(x1+x2*h12)+x2*m);
g2=exp(-log(x2+x1*h21)-x1*m);
p1sat=p/(g1*x1+g2*x2*(p2sat/p1sat));
tnew=b1/(a1-log(p1sat))-c1;
}
while(fabs(tnew-told)>.0001);
cout<<BPT=<<tnew<<deg C\n;
//
//CALCULATION OF DPP (temperature and vapour phase composition are given)
cout<<Calculation of DPP<<endl;
cout<<Enter the temperature in deg C and y1\n;
cin>>t>>y1;
y2=1-y1;
p1sat=exp(a1-b1/(c1+t));
p2sat=exp(a2-b2/(c2+t));
g1=g2=1;
g11=g22=1;
pnew=1/(y1/(g1*p1sat)+y2/(g2*p2sat));
do
{
pold=pnew;
do
{
g1=g11;
g2=g22;
x1=y1*pold/(g1*p1sat);
x2=y2*pold/(g2*p2sat);
x1=x1/(x1+x2);
x2=1-x1;
h12=V2*exp(-a12/(r*(t+273.15)))/V1;
h21=V1*exp(-a21/(r*(t+273.15)))/V2;
m=h12/(x1+x2*h12)-h21/(x2+x1*h21);
g11=exp(-log(x1+x2*h12)+x2*m);
g22=exp(-log(x2+x1*h21)-x1*m);
}
while((fabs(g11-g1)>.001)&&(fabs(g22-g2)>.001));
pnew=1/(y1/(g1*p1sat)+y2/(g2*p2sat));
}
241
while(fabs(pnew-pold)>.0001);
cout<<DPP=<<pnew<<kPa\n;
//
//CALCULATION OF DPT (pressure and vapour phase composition are given)
cout<<Calculation of DPT<<endl;
cout<<Enter the pressure in kPa and y1\n;
cin>>p>>y1;
y2=1-y1;
t1sat=b1/(a1-log(p))-c1;
t2sat=b2/(a2-log(p))-c2;
tnew=y1*t1sat+y2*t2sat;
g11=g22=1;
do
{
told=tnew;
p1sat=exp(a1-b1/(c1+told));
p2sat=exp(a2-b2/(c2+told));
do
{
g1=g11;
g2=g22;
x1=y1*p/(g1*p1sat);
x2=y2*p/(g2*p2sat);
x1=x1/(x1+x2);
x2=1-x1;
h12=V2*exp(-a12/(r*(told+273.15)))/V1;
h21=V1*exp(-a21/(r*(told+273.15)))/V2;
m=h12/(x1+x2*h12)-h21/(x2+x1*h21);
g11=exp(-log(x1+x2*h12)+x2*m);
g22=exp(-log(x2+x1*h21)-x1*m);
}
while((fabs(g11-g1)>.0001)&&(fabs(g22-g2)>.0001));
p1sat=p*(y1/g1+y2*p1sat/(g2*p2sat));
tnew=b1/(a1-log(p1sat))-c1;
}
while(fabs(tnew-told)>.0001);
cout<<DPT=<<tnew<<deg C\n;
getch();
}
PROGRAM 3.5
//PROGRAM 3.5
//program to calculate the compositions of the liquid and vapour phases under
//flash conditions, assuming the modified Raoults law to be true
#include<iostream.h>
242
Appendix:
Programs in C++
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
// the component 1 is acetone and 2 is water. The pressure in Antoine equation
// is in kPa and temperature in deg C. a12 and a21 are in cal/mol.
float t,p,z1,z2,a12=292.66,a21=1445.26,V1=74.05,V2=18.07,h12,h21;
float r=1.987,m,g1,g2,g1n,g2n,gb1,gb2,gd1,gd2;
float p1sat,p2sat,k1,k2,V,Vnew,bpp,dpp,pnew,pold;
float A1,A2,B1,B2,C1,C2;
float x1,x2,y1,y2,f,f1;
cout<<Enter the temperature in deg C;
cin>>t;
cout<<Enter the overall composition of species 1;
cin>>z1;
z2=1-z1;
//Listing the values of the Antoine parameters
A1=14.39155;
A2=16.26205;
B1=2795.817;
B2=3799.887;
C1=230.002;
C2=226.346;
//Calculation of BPP
x1=z1;
x2=z2;
p1sat=exp(A1-(B1/(t+C1)));
p2sat=exp(A2-(B2/(t+C2)));
h12=V2*exp(-a12/(r*(t+273.15)))/V1;
h21=V1*exp(-a21/(r*(t+273.15)))/V2;
m=(h12/(x1+x2*h12))-(h21/(x2+x1*h21));
g1=exp(-log(x1+x2*h12)+x2*m);
g2=exp(-log(x2+x1*h21)-x1*m);
p=x1*g1*p1sat+x2*g2*p2sat;
cout<<BPP=<<p<<kPa\n;
bpp=p;
gb1=g1;
gb2=g2;
//Calculation of DPP
y1=z1;
y2=z2;
p1sat=exp(A1-(B1/(t+C1)));
p2sat=exp(A2-(B2/(t+C2)));
g1=g2=1;
pnew=1/(y1/(g1*p1sat)+y2/(g2*p2sat));
g1n=g1;g2n=g2;
do
{
pold=pnew;
do
{
g1=g1n;
g2=g2n;
x1=y1*pold/(g1*p1sat);
x2=y2*pold/(g2*p2sat);
x1=x1/(x1+x2);
x2=1-x1;
h12=V2*exp(-a12/(r*(t+273.15)))/V1;
h21=V1*exp(-a21/(r*(t+273.15)))/V2;
m=(h12/(x1+x2*h12))-(h21/(x2+x1*h21));
g1n=exp(-log(x1+x2*h12)+x2*m);
g2n=exp(-log(x2+x1*h21)-x1*m);
}
while(fabs(g1n-g1)>.0001&&fabs(g2n-g2)>.0001);
pnew=1/(y1/(g1n*p1sat)+y2/(g2n*p2sat));
}
while(fabs(pnew-pold)>.0001);
cout<<DPP=<<pnew<<\n;
dpp=pnew;
gd1=g1n;
gd2=g2n;
cout<<Enter a pressure between <<dpp<< and <<bpp<<\n;
cin>>p;
V=(bpp-p)/(bpp-dpp);
g1=((p-dpp)*(gb1-gd1))/(bpp-dpp)+gd1;
g2=((p-dpp)*(gb2-gd2))/(bpp-dpp)+gd2;
//Calculation of distribution coefficients
do
{
g1n=g1;
g2n=g2;
k1=g1n*p1sat/p;
k2=g2n*p2sat/p;
do
{
V=Vnew;
y1=(k1*z1)/(1-V+V*k1);
y2=(k2*z2)/(1-V+V*k2);
x1=y1/k1;
x2=y2/k2;
f=y1-x1+y2-x2;
243
244
Appendix:
Programs in C++
f1=-(z1*(k1-1)*(k1-1)/((1-V+V*k1)*(1-V+V*k1))+
z2*(k2-1)*(k2-1)/((1-V+V*k2)*(1-V+V*k2)));
Vnew=V-f/f1;
}
while(fabs(Vnew-V)>.00001);
h12=V2*exp(-a12/(r*(t+273.15)))/V1;
h21=V1*exp(-a21/(r*(t+273.15)))/V2;
m=(h12/(x1+x2*h12))-(h21/(x2+x1*h21));
g1=exp(-log(x1+x2*h12)+x2*m);
g2=exp(-log(x2+x1*h21)-x1*m);
}
while(fabs(g1-g1n)>.0001&&fabs(g2-g2n)>.0001);
cout<<The number of moles in vapour phase is<<Vnew<<\n;
cout<<x1+x2=<<(x1+x2)<<\n;
cout<<y1+y2=<<(y1+y2)<<\n;
cout<<x1=<<x1<<\n;
cout<<y1=<<y1<<\n;
getch();
}
PROGRAM 3.6
//PROGRAM 3.6
//program to calculate the vapour pressure at the given
//temperature using the PengRobinson eos by comparing the fugacities of the
//liquid and vapour phases
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float w,s,t,tc,k,a,b,r=8.314,lpha,vold,vnew;
float vliq,vvap,zliq,zvap,c,d,fl,fv,pnew,p,pc,f,f1;
cout<<Enter the temperature in deg K and assumed pressure in Pa;
cin>>t>>pnew;
cout<<Enter the value of the critical temperature in deg K and the
critical pressure in Pa;
cin>>tc>>pc;
cout<<Enter the value of the acentric factor;
cin>>w;
k=.37464+1.54226*w-.26992*w*w;
s=1+k*(1-pow(t/tc,.5));
lpha=pow(s,2);
a=.45724*r*r*tc*tc*lpha/pc;
b=.07780*r*tc/pc;
245
do
{
p=pnew;
vnew=b;
do
{
vold=vnew;
f=pow(vold,3.0)*p+vold*vold*(p*b-r*t)-vold*(3.0*p*b*b+2.0*b*r*t-a);
f=f+(p*b*b*b+b*b*r*t-a*b);
f1=pow(vold,2.0)*3.0*p+vold*2.0*(b*p-t*r)+(a-3.0*b*b*p-2.0*r*t*b);
vnew=vold-f/f1;
}
while(fabs(vnew-vold)>1e-6);
vliq=vnew;
zliq=p*vliq/(r*t);
c=(a/(2.0*sqrt(2.0)*b*r*t))*(log((zliq+(1.0+sqrt(2.0))*b*p/(r*t))/
(zliq+(1.0-sqrt(2.0))*b*p/(r*t))));
fl=p*exp(zliq-1-log(zliq-p*b/(r*t))-c);
vnew=r*t/p;
do
{
vold=vnew;
f=pow(vold,3.0)*p+vold*vold*(p*b-r*t)-vold*(3.0*p*b*b+2.0*b*r*t-a);
f=f+(p*b*b*b+b*b*r*t-a*b);
f1=pow(vold,2.0)*3.0*p+vold*2.0*(b*p-t*r)+(a-3.0*b*b*p-2.0*r*t*b);
vnew=vold-f/f1;
}
while(fabs(vnew-vold)>1e-6);
vvap=vnew;
zvap=p*vvap/(r*t);
d=(a/(2.0*sqrt(2.0)*b*r*t))*(log((zvap+(1.0+sqrt(2.0))*b*p/(r*t))/
(zvap+(1.0-sqrt(2.0))*b*p/(r*t))));
fv=p*exp(zvap-1.0-log(zvap-b)-d);
pnew=p*fl/fv;
}
while(fabs(pnew-p)>1e-6);
cout<<The saturated vapour pressure at <<t<< deg K is <<pnew<<
Pa<<endl;
getch();
}
PROGRAM 3.7
//PROGRAM 3.7
//program to calculate the bubble point pressure using the gammaphi approach
#include<iostream.h>
246
Appendix:
Programs in C++
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float p,t,p1sat,p2sat,r=8.314,pnew,vc1,vc2,x1,x2,y1,y2,h12,h21,b11;
float b22,b12,vc12,pc1,pc2,pc12,w1,w2,w12,tc1,tc2,tc12,zc1,zc2,zc12;
float fc1,fc2,snew=0.0,g1,g2,f1,f2,b0,b1,tr1,tr2,tr12,k1,k2,sold,v1;
float v2,a12,a21,z,d12,A1,A2,B1,B2,C1,C2;
// read the values of tc1,tc2,pc1,pc2,w1,w2,zc1,zc2
// the data given are for the methanol (1) - water (2) system
// A1, B1, C1, A2, B2, C2 denote the Antoine constants in this program
a12=107.38*4.186;a21=469.55*4.186;
tc1=512.6;tc2=647.1;pc1=80.97*pow(10,5);pc2=220.55*pow(10,5);
w1=0.564;w2=0.345;zc1=0.224;zc2=0.229;v1=40.73*pow(10,-6);
v2=18.07*pow(10,-6);
//feed the temperature in degree C
t=100.0;x1=0.958;x2=1-x1;
A1=16.5938;
A2=16.2620;
B1=3644.3;
B2=3799.89;
C1=239.76;
C2=226.35;
p1sat=exp(A1-B1/(C1+t));
p2sat=exp(A2-B2/(C2+t));
p1sat=p1sat*1000; // converting kPa to Pa
p2sat=p2sat*1000;
t=t+273.15;
h12=(v2/v1)*exp(-a12/(r*t));
h21=(v1/v2)*exp(-a21/(r*t));
z=h12/(x1+x2*h12)-h21/(x2+x1*h21);
g1=exp(-log(x1+x2*h12)+x2*z);
g2=exp(-log(x2+x1*h21)-x1*z);
tr1=t/tc1;
b0=.083-0.422*pow(tr1,-1.6);
b1=.139-0.172*pow(tr1,-4.2);
b11=(r*tc1/pc1)*(b0+w1*b1);
tr2=t/tc2;
b0=.083-0.422*pow(tr2,-1.6);
b1=.139-0.172*pow(tr2,-4.2);
b22=(r*tc2/pc2)*(b0+w2*b1);
w12=(w1+w2)*0.5;
tc12=pow((tc1*tc2),0.5);
zc12=(zc1+zc2)*0.5;
vc1=zc1*r*tc1/pc1;vc2=zc2*r*tc2/pc2;
247
vc12=pow((pow(vc1,0.333333)+pow(vc2,0.33333))*0.5,3);
pc12=zc12*r*tc12/vc12;
tr12=t/tc12;
b0=.083-0.422*pow(tr12,-1.6);
b1=.139-0.172*pow(tr12,-4.2);
b12=(r*tc12/pc12)*(b0+w12*b1);
d12=2*b12-b11-b22;
p=x1*g1*p1sat+x2*g2*p2sat;
y1=x1*g1*p1sat/p;y2=x2*g2*p2sat/p;
pnew = p;
do
{
p=pnew;
f1=p1sat*(exp(b11*p1sat/(r*t)))*(exp((v1*(p-p1sat)/(r*t))));
f2=p2sat*(exp(b22*p2sat/(r*t)))*(exp((v2*(p-p2sat)/(r*t))));
do
{
sold=snew;
fc1=exp((p/(r*t))*(b11+y2*y2*d12));
fc2=exp((p/(r*t))*(b22+y1*y1*d12));
k1=g1*f1/(fc1*p);
k2=g2*f2/(fc2*p);
snew=x1*k1+x2*k2;
y1=x1*k1/snew;
y2=x2*k2/snew;
}
while(fabs(snew-sold)>1e-6);
pnew=(x1*g1*f1/fc1)+(x2*g2*f2/fc2);
y1=x1*g1*f1/(fc1*pnew);y2=x2*g2*f2/(fc2*pnew);
}
while(fabs(pnew-p)>1e-6);
cout<<fc1=<<fc1<<endl<<fc2=<<fc2<<endl;
cout<<g1=<<g1<<endl<<g2=<<g2<<endl;
cout<<k1=<<k1<<endl<<k2=<<k2<<endl;
cout<<p=<<p<<endl<<y1=<<y1<<endl;
getch();
}
PROGRAM 3.8
//PROGRAM 3.8
//program to calculate the bubble point pressure using the PengRobinson eos
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
248
Appendix:
Programs in C++
float t,x1,x2,y1,y2,tc1,tc2,v,vnew,pnew,p,zliq,zvap,avap,bvap;
float fc1l,fc2l,fc1v,fc2v,y1n,y2n;
float k1,k2,w1,w2,f,f1,lpha1,lpha2,r,snew,sold,pc1,pc2;
float aliq,bliq,b1,b2,a11,a22,a12,m1,m2;
clrscr();
//the data are for the CO2 (1) n-pentane (2) system
t=377.65;x1=0.5;
cout<<The value of x1=<<x1<<endl;
cout<<Enter an assumed value of y1 greater than x1 \n;
cin>>y1;
tc1=304.2;tc2=469.7;pc1=73.83e5;pc2=33.70e5;w1=0.224;w2=0.252;
r=8.314;x2=1-x1;y2=1-y1;
k1=0.37464+1.54226*w1-0.26992*w1*w1;
k2=0.37464+1.54226*w2-0.26992*w2*w2;
m1=1+k1*(1-pow(t/tc1,0.5));
m2=1+k2*(1-pow(t/tc2,0.5));
lpha1=m1*m1;
lpha2=m2*m2;
a11=0.455724*r*r*tc1*tc1*lpha1/pc1;
a22=0.455724*r*r*tc2*tc2*lpha2/pc2;
a12=(pow(a11*a22,0.5));
b1=0.07780*r*tc1/pc1;
b2=0.07780*r*tc2/pc2;
aliq=(x1*x1*a11+x2*x2*a22+2*x1*x2*a12);
bliq=x1*b1+x2*b2;
pnew=50e5; // assumed value for pressure in Pa
snew=0.0;
do
{
p=pnew;
vnew=bliq;
do
{
v=vnew;
f=pow(v,3)*p+v*v*(p*bliq-r*t)-v*(3*p*bliq*bliq+2*bliq*r*t-aliq);
f=f+(p*bliq*bliq*bliq+bliq*bliq*r*t-aliq*bliq);
f1=pow(v,2)*3*p+v*2*(bliq*p-r*t)+(aliq-3*bliq*bliq*p-2*r*t*bliq);
vnew=v-(f/f1);
}
while(fabs(vnew-v)>1e-6);
zliq=p*vnew/(r*t);
fc1l=exp((b1/bliq)*(zliq-1)-log(zliq-bliq*p/(r*t))-(aliq/
(2*sqrt(2)*r*t*bliq))*
((2*(x1*a11+x2*a12)/aliq)-(b1/bliq))*log((zliq+(2.414*bliq*p/
(r*t)))/(zliq(.414*bliq*p/(r*t)))));
249
fc2l=exp((b2/bliq)*(zliq-1)-log(zliq-bliq*p/(r*t))-(aliq/
(2*sqrt(2)*r*t*bliq))*
((2*(x1*a12+x2*a22)/aliq)-(b2/bliq))*log((zliq+(2.414*bliq*p/
(r*t)))/(zliq(.414*bliq*p/(r*t)))));
do
{
sold=snew;
avap=(y1*y1*a11+y2*y2*a22+2*y1*y2*a12);
bvap=y1*b1+y2*b2;
vnew=r*t/p;
do
{
v=vnew;
f=pow(v,3)*p+v*v*(p*bvap-r*t)-v*(3*p*bvap*bvap+2*bvap*r*t-avap);
f=f+(p*bvap*bvap*bvap+bvap*bvap*r*t-avap*bvap);
f1=pow(v,2)*3*p+v*2*(bvap*p-r*t)+(avap-3*bvap*bvap*p-2*r*t*bvap);
vnew=v-(f/f1);
}
while(fabs(vnew-v)>1e-6);
zvap=p*vnew/(r*t);
fc1v=exp((b1/bvap)*(zvap-1)-log(zvap-bvap*p/(r*t))-(avap/
(2*sqrt(2)*r*t*bvap))*
((2*(y1*a11+y2*a12)/avap)-(b1/bvap))*log((zvap+(2.414*bvap*p/
(r*t)))/(zvap(.414*bvap*p/(r*t)))));
fc2v=exp((b2/bvap)*(zvap-1)-log(zvap-bvap*p/(r*t))-(avap/
(2*sqrt(2)*r*t*bvap))*
((2*(y1*a12+y2*a22)/avap)-(b2/bvap))*log((zvap+(2.414*bvap*p/
(r*t)))/(zvap(.414*bvap*p/(r*t)))));
k1=fc1l/fc1v;k2=fc2l/fc2v;cout<<k1=<<k1<<endl<<k2=<<k2<<endl;
snew=k1*x1+k2*x2;
y1=k1*x1/snew;
y2=k2*x2/snew;
}
while(fabs(snew-sold)>1e-6);
pnew=p*snew;
}
while(fabs(pnew-p)>1e-6);
cout<<k1=<<k1<<endl<<k2=<<k2<<endl<<bpp=<<pnew<<endl<<y1=<<y1<<endl;
getch();
}
250
Appendix:
Programs in C++
PROGRAM 3.9
//PROGRAM 3.9
//program for the solution of two simultaneous chemical reactions
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float x1,x2,x1new,x2new,f1,f2,df1dx1,df1dx2,df2dx1,df2dx2;
float d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d,deltax1,deltax2;
int n;
x1new=0.9;
x2new=0.5;
n=0;
do
{
x1=x1new;
x2=x2new;
d1=(x1-x2)*pow((3*x1+x2),3);
d2=(1-x1)*(5-x1-x2)*pow((6+2*x1),2);
f1=(d1/d2)-0.575;
f2=(x2*(3*x1+x2)/((x1-x2)*(5-x1-x2)))-2.21;
d3=pow((3*x1+x2),2)*(12.0*x1-8.0*x2)/((1-x1)*(5-x1 x2)
*(6+2*x1)*(6+2*x1));
d4=pow((3*x1+x2),3)*(x1-x2)*(8*x1*x1+6*x1*x2-24*x1+2*x2-16);
d5=pow((1-x1),2)*pow((5-x1-x2),2)*pow((6+2*x1),3);
df1dx1=d3-(d4/d5);
d6=3*(x1-x2)*(3*x1+x2)*(3*x1+x2)-pow((3*x1+x2),3);
d7=(1-x1)*(5-x1-x2)*(6+2*x1)*(6+2*x1);
d8=((x1-x2)*(pow((3*x1+x2),3)))/((1-x1)*(5-x1-x2)*(5-x1-x2)
*(6+2*x1)*(6+2*x1));
df1dx2=(d6/d7)+d8;
d9=(x1-x2)*(x1-x2)*(5-x1-x2)*(5-x1-x2);
df2dx1=3*x2/((x1-x2)*(5-x1-x2))-(x2*(3*x1+x2)*(5-2*x1))/d9;
d10=(3*x1+2*x2)/((x1-x2)*(5-x1-x2));
d11=x2*(3*x1+x2)*(2*x2-5)/((pow((x1-x2),2))*pow((5-x1-x2),2));
df2dx2=d10-d11;
d=df1dx1*df2dx2-df1dx2*df2dx1;
deltax1=(f2*df1dx2-f1*df2dx2)/d;
deltax2=(f1*df2dx1-f2*df1dx1)/d;
x1new=x1+deltax1;
x2new=x2+deltax2;
n=n+1;
251
}while(fabs(x1new-x1)>1e-6&&fabs(x2new-x2)>1e-6);
cout<<The number of iterations performed is <<n<<endl;
cout<<x1new<< <<x2new<<endl;
getch();
}
PROGRAM 3.10
//PROGRAM 3.10
//program to calculate the adiabatic flame temperature (AFT) for a fuel
//case of complete conversion
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float sa,sb,sc,sd,da,db,dc,dd,t,tnew,t0=298.15,t1,n1,n2,n3,n4,f,f1,h0;
float u1=1,u2=3.5,u3=2,u4=3;
// n1, n2, n3, n4 are the number of moles entering of species
// 1, 2, 3, 4 respectively and u1, u2, u3, and u4 are their stoichiometric
// coefficients. The data is given for the reaction
// C2H6 + 3.5O2 = 2CO2 + 3H2O
// C2H6 is 1, O2 is 2, CO2 is 3 and H2O is 4
float a1=1.648,a2=6.085,a3=5.316,a4=7.700;
float b1=4.124e-2,b2=.3631e-2,b3=1.4285e-2,b4=.04594e-2;
float c1=-1.530e-5,c2=-.1709e-5,c3=-.8362e-5,c4=.2521e-5;
float d1=1.740e-9,d2=.3133e-9,d3=1.784e-9,d4=-.8587e-9;
cout<<Enter the value of n1,n2,n3,n4\n;
cin>>n1>>n2>>n3>>n4;
cout<<\nEnter the inlet temperature in deg C;
cin>>t1;
t1=t1+273.15;
sa=n1*a1+n2*a2+n3*a3+n4*a4;
sb=n1*b1+n2*b2+n3*b3+n4*b4;
sc=n1*c1+n2*c2+n3*c3+n4*c4;
sd=n1*d1+n2*d2+n3*d3+n4*d4;
da=u4*a4+u3*a3-u2*a2-u1*a1;
db=u4*b4+u3*b3-u2*b2-u1*b1;
dc=u4*c4+u3*c3-u2*c2-u1*c1;
dd=u4*d4+u3*d3-u2*d2-u1*d1;
h0=(u4*(-57.7979)+u3*(-94.052)-u2*0-u1*(-20.236))*1000;
tnew=1000;
//for various old values of tnew the final answer is the same
do
{
252
Appendix:
Programs in C++
t=tnew;
f=sa*(t-t1)+(sb/2)*(t*t-t1*t1)+(sc/3)*(t*t*t-t1*t1*t1)+(sd/4)
*(t*t*t*t-t1*t1*t1*t1);
f=f+h0+da*(t-t0)+(db/2)*(t*t-t0*t0)+(dc/3)*(t*t*t-t0*t0*t0)+(dd/4)
*(t*t*t*t-t0*t0*t0*t0);
f1=sa+sb*t+sc*t*t+sd*t*t*t+da+db*t+dc*t*t+dd*t*t*t;
tnew=t-f/f1;
}while(fabs((tnew-t)/tnew)>1e-6);
cout<<AFT=<<tnew;
getch();
}
PROGRAM 4.1
//PROGRAM 4.1
//program to solve an ordinary differential equation by the RungeKutta method
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float h,x0,xf,y,k1,k2,k3,k4;
int n;
x0=0.00000,y=2.00000;
float func(float,float);
cout<<\t\t\t OUTPUT<<endl;
cout<<\nEnter the value of x at which y is required: ;
cin>>xf;
cout<<\tEnter the value of step length (h): ;
cin>>h;
n=(xf-x0)/h;
for(int i=0;i<=n-1;i++)
{
k1=h*func(x0,y);
k2=h*func(x0+0.5*h,y+0.5*k1);
k3=h*func(x0+0.5*h,y+0.5*k2);
k4=h*func(x0+h,y+k3);
y=y+((k1+2.0*k2+2.0*k3+k4)/6.0);
x0=x0+h;
}
cout<<\t Value found by Runge-Kutta method at given x: <<y;
cout<<endl;
getch();
}
float func(float x, float y)
{
253
float f=-y/(1.0+x);
return(f);
}
PROGRAM 4.2
//PROGRAM 4.2
//program to determine the velocity of a particle in a pneumatic conveyor
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float h,z0,z,zf,y0,y,vp,k1,k2,k3,k4;
int n;
z0=0.00000,y0=0.00000;
float func(float,float);
cout<<\t\t\t OUTPUT<<endl;
cout<<\nEnter the value of z in m at which vp is required: ;
cin>>zf;
cout<<\tEnter the value of step length (h): ;
cin>>h;
n=(zf-z0)/h;
for(int i=0;i<=n-1;i++)
{
k1=h*func(z0,y0);
k2=h*func(z0+0.5*h,y0+0.5*k1);
k3=h*func(z0+0.5*h,y0+0.5*k2);
k4=h*func(z0+h,y0+k3);
y=y0+((k1+2.0*k2+2.0*k3+k4)/6.0);
z0=z0+h;
y0=y;
vp=sqrt(y);
cout<<\t Value found at z = <<z0<< = <<vp<<endl;
}
cout<<\t Value found by Runge-Kutta method at given z: <<vp;
cout<<endl;
getch();
}
float func(float a, float b)
{
float rep=19.648*(12.0-sqrt(b));
float cd=24.0*(1.0+0.15*pow(rep,0.687))/rep;
float f=6.55*cd*(12.0-sqrt(b))*(12.0-sqrt(b))-19.594;
return(f);
}
254
Appendix:
Programs in C++
PROGRAM 4.3
//PROGRAM 4.3
//program to solve two simultaneous ordinary differential equations
//by Runge-Kutta method
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float h,x0,xf,y,z,k1,k2,k3,k4,l1,l2,l3,l4;
int n;
x0=0.00000,y=2.00000,z=1.00000;
float func1(float,float,float);
float func2(float,float,float);
cout<<\t\t\t OUTPUT<<endl;
cout<<\nEnter the value of x at which y and z are required: ;
cin>>xf;
cout<<\tEnter the value of step length (h): ;
cin>>h;
n=(xf-x0)/h;
for(int i=0;i<=n-1;i++)
{
k1=h*func1(x0,y,z);
l1=h*func2(x0,y,z);
k2=h*func1(x0+0.5*h,y+0.5*k1,z+0.5*l1);
l2=h*func2(x0+0.5*h,y+0.5*k1,z+0.5*l1);
k3=h*func1(x0+0.5*h,y+0.5*k2,z+0.5*l2);
l3=h*func2(x0+0.5*h,y+0.5*k2,z+0.5*l2);
k4=h*func1(x0+h,y+k3,z+l3);
l4=h*func2(x0+h,y+k3,z+l3);
y=y+((k1+2.0*k2+2.0*k3+k4)/6.0);
z=z+((l1+2.0*l2+2.0*l3+l4)/6.0);
x0=x0+h;
}
cout<<\t Value at given x: <<y<< <<z;
cout<<endl;
getch();
}
float func1(float x, float y, float z)
{
float f=z;
return(f);
}
float func2(float x, float y, float z)
{
255
float f=-y;
return(f);
}
PROGRAM 4.4
//PROGRAM 4.4
//program to solve three simultaneous ordinary differential equations
//by the Runge-Kutta method
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
double h,t0,tf,temp1,temp2,temp3,k1,k2,k3,k4;
double l1,l2,l3,l4,m1,m2,m3,m4;
long n;
t0=0.00000,temp1=20.00000,temp2=20.00000,temp3=20.00000;
double func1(double,double,double,double);
double func2(double,double,double,double);
double func3(double,double,double,double);
cout<<\t\t\t OUTPUT<<endl;
cout<<\nEnter the value of t in sec at which temperatures are required: ;
cin>>tf;
cout<<\tEnter the value of the step length (h): ;
cin>>h;
n=(tf-t0)/h;
cout<<The number n is = <<n<<endl;
for(long i=0;i<=n-1;i++)
{
k1=h*func1(t0,temp1,temp2,temp3);
l1=h*func2(t0,temp1,temp2,temp3);
m1=h*func3(t0,temp1,temp2,temp3);
k2=h*func1(t0+0.5*h,temp1+0.5*k1,temp2+0.5*l1,temp3+0.5*m1);
l2=h*func2(t0+0.5*h,temp1+0.5*k1,temp2+0.5*l1,temp3+0.5*m1);
m2=h*func3(t0+0.5*h,temp1+0.5*k1,temp2+0.5*l1,temp3+0.5*m1);
k3=h*func1(t0+0.5*h,temp1+0.5*k2,temp2+0.5*l2,temp3+0.5*m2);
l3=h*func2(t0+0.5*h,temp1+0.5*k2,temp2+0.5*l2,temp3+0.5*m2);
m3=h*func3(t0+0.5*h,temp1+0.5*k2,temp2+0.5*l2,temp3+0.5*m2);
k4=h*func1(t0+h,temp1+k3,temp2+l3,temp3+m3);
l4=h*func2(t0+h,temp1+k3,temp2+l3,temp3+m3);
m4=h*func3(t0+h,temp1+k3,temp2+l3,temp3+m3);
temp1=temp1+((k1+2.0*k2+2.0*k3+k4)/6.0);
temp2=temp2+((l1+2.0*l2+2.0*l3+l4)/6.0);
temp3=temp3+((m1+2.0*m2+2.0*m3+m4)/6.0);
256
Appendix:
Programs in C++
t0=t0+h;
}
cout<<\t Value at given t: <<temp1<< <<temp2<< <<temp3;
cout<<endl;
getch();
}
double func1(double t, double temp1, double temp2, double temp3)
{
double f=0.065-0.0021*temp1;
return(f);
}
double func2(double t, double temp1, double temp2, double temp3)
{
double f=0.002*temp1-0.0021*temp2+0.025;
return(f);
}
double func3(double t, double temp1, double temp2, double temp3)
{
double f=0.002*temp2-0.0021*temp3+0.025;
return(f);
}
PROGRAM 4.5
//PROGRAM 4.5
//program to solve three simultaneous ordinary differential equations
//for the reaction a -> b -> c by the Runge-Kutta fourth order method
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float h,t0,tf,a,b,c,k1,k2,k3,k4;
float l1,l2,l3,l4,m1,m2,m3,m4;
int n;
t0=0.00000,a=1.00000,b=0.00000,c=0.00000;
float func1(float,float,float,float);
float func2(float,float,float,float);
float func3(float,float,float,float);
cout<<\t\t\t OUTPUT<<endl;
cout<<\nEnter the value of t in sec at which concentrations are required: ;
cin>>tf;
cout<<\tEnter the value of step length (h): ;
cin>>h;
n=(tf-t0)/h;
257
PROGRAM 4.6
//PROGRAM 4.6
//program to solve four simultaneous ordinary differential equations
//for the reactions a + b -> c and b + c -> d by the Runge-Kutta method
#include<iostream.h>
#include<conio.h>
258
Appendix:
Programs in C++
#include<math.h>
void main()
{
clrscr();
double h,t0,tf,a,b,c,d,k1,k2,k3,k4;
double l1,l2,l3,l4,m1,m2,m3,m4,n1,n2,n3,n4;
long n;
t0=0.00000,a=1.00000,b=1.00000,c=0.00000,d=0.00000;
double func1(double,double,double,double,double);
double func2(double,double,double,double,double);
double func3(double,double,double,double,double);
double func4(double,double,double,double,double);
cout<<\t\t\t OUTPUT<<endl;
cout<<\nEnter the value of t in sec at which concentrations are required: ;
cin>>tf;
cout<<\tEnter the value of step length (h): ;
cin>>h;
n=(tf-t0)/h;
cout<<The number n is = <<n<<endl;
for(long i=0;i<=n-1;i++)
{
k1=h*func1(t0,a,b,c,d);
l1=h*func2(t0,a,b,c,d);
m1=h*func3(t0,a,b,c,d);
n1=h*func4(t0,a,b,c,d);
k2=h*func1(t0+0.5*h,a+0.5*k1,b+0.5*l1,c+0.5*m1,d+0.5*n1);
l2=h*func2(t0+0.5*h,a+0.5*k1,b+0.5*l1,c+0.5*m1,d+0.5*n1);
m2=h*func3(t0+0.5*h,a+0.5*k1,b+0.5*l1,c+0.5*m1,d+0.5*n1);
n2=h*func4(t0+0.5*h,a+0.5*k1,b+0.5*l1,c+0.5*m1,d+0.5*n1);
k3=h*func1(t0+0.5*h,a+0.5*k2,b+0.5*l2,c+0.5*m2,d+0.5*n2);
l3=h*func2(t0+0.5*h,a+0.5*k2,b+0.5*l2,c+0.5*m2,d+0.5*n2);
m3=h*func3(t0+0.5*h,a+0.5*k2,b+0.5*l2,c+0.5*m2,d+0.5*n2);
n3=h*func4(t0+0.5*h,a+0.5*k2,b+0.5*l2,c+0.5*m2,d+0.5*n2);
k4=h*func1(t0+h,a+k3,b+l3,c+m3,d+n3);
l4=h*func2(t0+h,a+k3,b+l3,c+m3,d+n3);
m4=h*func3(t0+h,a+k3,b+l3,c+m3,d+n3);
n4=h*func4(t0+h,a+k3,b+l3,c+m3,d+n3);
a=a+((k1+2.0*k2+2.0*k3+k4)/6.0);
b=b+((l1+2.0*l2+2.0*l3+l4)/6.0);
c=c+((m1+2.0*m2+2.0*m3+m4)/6.0);
d=d+((n1+2.0*n2+2.0*n3+n4)/6.0);
t0=t0+h;
}
cout<<\t Value at given t: <<a<< <<b<< <<c<< <<d<<endl;
getch();
}
double func1(double
{
double f=-a*b;
return(f);
}
double func2(double
{
double f=-a*b-b*c;
return(f);
}
double func3(double
{
double f=a*b-b*c;
return(f);
}
double func4(double
{
double f=b*c;
return(f);
259
PROGRAM 4.7
//PROGRAM 4.7
//program to solve ordinary differential equations in a non-isothermal
//tubular reactor by the Runge-Kutta method
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float h,z0,zf,x,t,k1,k2,k3,k4,l1,l2,l3,l4;
int n;
z0=0.00000,x=0.00000,t=294.15;
float func1(float,float,float);
float func2(float,float,float);
cout<<\t\t\t OUTPUT<<endl;
cout<<\nEnter the value of z in m at which x and t are required: ;
cin>>zf;
cout<<\tEnter the value of step length (h): ;
cin>>h;
n=(zf-z0)/h;
for(int i=0;i<=n-1;i++)
260
Appendix:
Programs in C++
k1=h*func1(z0,x,t);
l1=h*func2(z0,x,t);
k2=h*func1(z0+0.5*h,x+0.5*k1,t+0.5*l1);
l2=h*func2(z0+0.5*h,x+0.5*k1,t+0.5*l1);
k3=h*func1(z0+0.5*h,x+0.5*k2,t+0.5*l2);
l3=h*func2(z0+0.5*h,x+0.5*k2,t+0.5*l2);
k4=h*func1(z0+h,x+k3,t+l3);
l4=h*func2(z0+h,x+k3,t+l3);
x=x+((k1+2.0*k2+2.0*k3+k4)/6.0);
t=t+((l1+2.0*l2+2.0*l3+l4)/6.0);
z0=z0+h;
}
cout<<\t Value at given z: <<x<< <<t<<endl;
cout<<endl;
getch();
}
float func1(float z, float x, float t)
{
float f=0.0527*(1-x)*exp(33.68*(1-388.71/t));
return(f);
}
float func2(float z, float x, float t)
{
float f=7.665*(388.71-t)-29554.1*0.0527*(1-x)*exp(33.68*(1-388.71/t));
return(f);
}
PROGRAM 7.1
//PROGRAM 7.1
//program to calculate the concentration profile in a
//tubular reactor with axial dispersion (second order reaction)
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int i,j,n,i1,n1,k,iter;
float a[101],b[101],c[101],d[101],x[101],x1[101],beta[101],gamma[101];
for(i=2;i<=20;++i)
{a[i]=2.0004;
}
a[21]=2.0008;
c[1]=2.0008;
for(i=2;i<=20;++i)
{c[i]=0.0004;
}
d[1]=-20004.0;
for(i=2;i<=21;++i)
{d[i]=0.0;
}
for(i=1;i<=21;++i)
{x[i]=0.0;
}
iter=0;
do
{
iter=iter+1;
for(i=1;i<=21;++i)
{x1[i]=x[i];}
b[1]=-20005.9992-x1[1];
for(i=2;i<=21;++i)
{b[i]=-2.0008-x1[i];
}
i=1;
n=21;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
for(j=i1;j<=n;++j)
{
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
}while(fabs(x[12]-x1[12])>1e-6&&fabs(x[18]-x1[18])>1e-6);
cout<<\t\t\t THE SOLUTION BY TDMA<<endl;
for(i=1;i<=21;++i)
{
cout<<x[<<i<<] = <<x[i]<<endl;
}
cout<<Number of iterations is <<iter;
getch();
}
261
262
Appendix:
Programs in C++
PROGRAM 7.2
//PROGRAM 7.2
//program to calculate the concentration profile in a tubular reactor
//with axial dispersion in which two parallel reactions take place
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int n,m,l,i,j,k,jj,kp1,nn,ip1;
float a[90][91],x[90],x1[90],sum,big,ab,quot,t;
n=84;
cout<<n<<endl;
m=n+1;
l=n-1;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
a[i][j]=0.0;
}
}
for(i=1;i<=84;i++)
{x[i]=0.01;}
do
{
for(i=1;i<=84;i++)
{x1[i]=x[i];}
a[1][1]=-20005.9992-x1[2];
a[1][5]=2.0008;
a[2][2]=-20005.9992-x1[1]-x1[3];
a[2][6]=2.0008;
a[3][3]=-20005.9992-x1[2];
a[3][7]=2.0008;
a[4][4]=-20005.9992;
a[4][8]=2.0008;
a[5][1]=2.0004;
a[5][5]=-2.0008-x1[6];
a[5][9]=0.0004;
a[6][2]=2.0004;
a[6][6]=-2.0008-x1[5]-x1[7];
a[6][10]=0.0004;
a[7][3]=2.0004;
a[7][7]=-2.0008-x1[6];
a[7][11]=0.0004;
a[8][4]=2.0004;
a[8][8]=-2.0008;
a[8][12]=0.0004;
a[9][5]=2.0004;
a[9][9]=-2.0008-x1[10];
a[9][13]=0.0004;
a[10][6]=2.0004;
a[10][10]=-2.0008-x1[9]-x1[11];
a[10][14]=0.0004;
a[11][7]=2.0004;
a[11][11]=-2.0008-x1[10];
a[11][15]=0.0004;
a[12][8]=2.0004;
a[12][12]=-2.0008;
a[12][16]=0.0004;
a[13][9]=2.0004;
a[13][13]=-2.0008-x1[14];
a[13][17]=0.0004;
a[14][10]=2.0004;
a[14][14]=-2.0008-x1[13]-x1[15];
a[14][18]=0.0004;
a[15][11]=2.0004;
a[15][15]=-2.0008-x1[14];
a[15][19]=0.0004;
a[16][12]=2.0004;
a[16][16]=-2.0008;
a[16][20]=0.0004;
a[17][13]=2.0004;
a[17][17]=-2.0008-x1[18];
a[17][21]=0.0004;
a[18][14]=2.0004;
a[18][18]=-2.0008-x1[17]-x1[19];
a[18][22]=0.0004;
a[19][15]=2.0004;
a[19][19]=-2.0008-x1[18];
a[19][23]=0.0004;
a[20][16]=2.0004;
a[20][20]=-2.0008;
a[20][24]=0.0004;
a[21][17]=2.0004;
a[21][21]=-2.0008-x1[22];
a[21][25]=0.0004;
a[22][18]=2.0004;
a[22][22]=-2.0008-x1[21]-x1[23];
a[22][26]=0.0004;
263
264
Appendix:
Programs in C++
a[23][19]=2.0004;
a[23][23]=-2.0008-x1[22];
a[23][27]=0.0004;
a[24][20]=2.0004;
a[24][24]=-2.0008;
a[24][28]=0.0004;
a[25][21]=2.0004;
a[25][25]=-2.0008-x1[26];
a[25][29]=0.0004;
a[26][22]=2.0004;
a[26][26]=-2.0008-x1[25]-x1[27];
a[26][30]=0.0004;
a[27][23]=2.0004;
a[27][27]=-2.0008-x1[26];
a[27][31]=0.0004;
a[28][24]=2.0004;
a[28][28]=-2.0008;
a[28][32]=0.0004;
a[29][25]=2.0004;
a[29][29]=-2.0008-x1[30];
a[29][33]=0.0004;
a[30][26]=2.0004;
a[30][30]=-2.0008-x1[29]-x1[31];
a[30][34]=0.0004;
a[31][27]=2.0004;
a[31][31]=-2.0008-x1[30];
a[31][35]=0.0004;
a[32][28]=2.0004;
a[32][32]=-2.0008;
a[32][36]=0.0004;
a[33][29]=2.0004;
a[33][33]=-2.0008-x1[34];
a[33][37]=0.0004;
a[34][30]=2.0004;
a[34][34]=-2.0008-x1[33]-x1[35];
a[34][38]=0.0004;
a[35][31]=2.0004;
a[35][35]=-2.0008-x1[34];
a[35][39]=0.0004;
a[36][32]=2.0004;
a[36][36]=-2.0008;
a[36][40]=0.0004;
a[37][33]=2.0004;
a[37][37]=-2.0008-x1[38];
a[37][41]=0.0004;
a[38][34]=2.0004;
a[38][38]=-2.0008-x1[37]-x1[39];
a[38][42]=0.0004;
a[39][35]=2.0004;
a[39][39]=-2.0008-x1[38];
a[39][43]=0.0004;
a[40][36]=2.0004;
a[40][40]=-2.0008;
a[40][44]=0.0004;
a[41][37]=2.0004;
a[41][41]=-2.0008-x1[42];
a[41][45]=0.0004;
a[42][38]=2.0004;
a[42][42]=-2.0008-x1[41]-x1[43];
a[42][46]=0.0004;
a[43][39]=2.0004;
a[43][43]=-2.0008-x1[42];
a[43][47]=0.0004;
a[44][40]=2.0004;
a[44][44]=-2.0008;
a[44][48]=0.0004;
a[45][41]=2.0004;
a[45][45]=-2.0008-x1[46];
a[45][49]=0.0004;
a[46][42]=2.0004;
a[46][46]=-2.0008-x1[45]-x1[47];
a[46][50]=0.0004;
a[47][43]=2.0004;
a[47][47]=-2.0008-x1[46];
a[47][51]=0.0004;
a[48][44]=2.0004;
a[48][48]=-2.0008;
a[48][52]=0.0004;
a[49][45]=2.0004;
a[49][49]=-2.0008-x1[50];
a[49][53]=0.0004;
a[50][46]=2.0004;
a[50][50]=-2.0008-x1[49]-x1[51];
a[50][54]=0.0004;
a[51][47]=2.0004;
a[51][51]=-2.0008-x1[50];
a[51][55]=0.0004;
a[52][48]=2.0004;
a[52][52]=-2.0008;
a[52][56]=0.0004;
a[53][49]=2.0004;
a[53][53]=-2.0008-x1[54];
265
266
Appendix:
Programs in C++
a[53][57]=0.0004;
a[54][50]=2.0004;
a[54][54]=-2.0008-x1[53]-x1[55];
a[54][58]=0.0004;
a[55][51]=2.0004;
a[55][55]=-2.0008-x1[54];
a[55][59]=0.0004;
a[56][52]=2.0004;
a[56][56]=-2.0008;
a[56][60]=0.0004;
a[57][53]=2.0004;
a[57][57]=-2.0008-x1[58];
a[57][61]=0.0004;
a[58][54]=2.0004;
a[58][58]=-2.0008-x1[57]-x1[59];
a[58][62]=0.0004;
a[59][55]=2.0004;
a[59][59]=-2.0008-x1[58];
a[59][63]=0.0004;
a[60][56]=2.0004;
a[60][60]=-2.0008;
a[60][64]=0.0004;
a[61][57]=2.0004;
a[61][61]=-2.0008-x1[62];
a[61][65]=0.0004;
a[62][58]=2.0004;
a[62][62]=-2.0008-x1[61]-x1[63];
a[62][66]=0.0004;
a[63][59]=2.0004;
a[63][63]=-2.0008-x1[62];
a[63][67]=0.0004;
a[64][60]=2.0004;
a[64][64]=-2.0008;
a[64][68]=0.0004;
a[65][61]=2.0004;
a[65][65]=-2.0008-x1[66];
a[65][69]=0.0004;
a[66][62]=2.0004;
a[66][66]=-2.0008-x1[65]-x1[67];
a[66][70]=0.0004;
a[67][63]=2.0004;
a[67][67]=-2.0008-x1[66];
a[67][71]=0.0004;
a[68][64]=2.0004;
a[68][68]=-2.0008;
a[68][72]=0.0004;
a[69][65]=2.0004;
a[69][69]=-2.0008-x1[70];
a[69][73]=0.0004;
a[70][66]=2.0004;
a[70][70]=-2.0008-x1[69]-x1[71];
a[70][74]=0.0004;
a[71][67]=2.0004;
a[71][71]=-2.0008-x1[70];
a[71][75]=0.0004;
a[72][68]=2.0004;
a[72][72]=-2.0008;
a[72][76]=0.0004;
a[73][69]=2.0004;
a[73][73]=-2.0008-x1[74];
a[73][77]=0.0004;
a[74][70]=2.0004;
a[74][74]=-2.0008-x1[73]-x1[75];
a[74][78]=0.0004;
a[75][71]=2.0004;
a[75][75]=-2.0008-x1[74];
a[75][79]=0.0004;
a[76][72]=2.0004;
a[76][76]=-2.0008;
a[76][80]=0.0004;
a[77][73]=2.0004;
a[77][77]=-2.0008-x1[78];
a[77][81]=0.0004;
a[78][74]=2.0004;
a[78][78]=-2.0008-x1[77]-x1[79];
a[78][82]=0.0004;
a[79][75]=2.0004;
a[79][79]=-2.0008-x1[78];
a[79][83]=0.0004;
a[80][76]=2.0004;
a[80][80]=-2.0008;
a[80][84]=0.0004;
a[81][77]=2.0008;
a[81][81]=-2.0008-x1[82];
a[82][78]=2.0008;
a[82][82]=-2.0008-x1[81]-x1[83];
a[83][79]=2.0008;
a[83][83]=-2.0008-x1[82];
a[84][80]=2.0008;
a[84][84]=-2.0008;
a[1][85]=-20004.0;
a[2][85]=-20004.0;
267
268
Appendix:
Programs in C++
a[3][85]=-x1[1]*x1[2];
a[4][85]=-x1[2]*x1[3];
a[5][85]=0.0;
a[6][85]=0.0;
a[7][85]=-x1[5]*x1[6];
a[8][85]=-x1[6]*x1[7];
a[9][85]=0.0;
a[10][85]=0.0;
a[11][85]=-x1[9]*x1[10];
a[12][85]=-x1[10]*x1[11];
a[13][85]=0.0;
a[14][85]=0.0;
a[15][85]=-x1[13]*x1[14];
a[16][85]=-x1[14]*x1[15];
a[17][85]=0.0;
a[18][85]=0.0;
a[19][85]=-x1[17]*x1[18];
a[20][85]=-x1[18]*x1[19];
a[21][85]=0.0;
a[22][85]=0.0;
a[23][85]=-x1[21]*x1[22];
a[24][85]=-x1[22]*x1[23];
a[25][85]=0.0;
a[26][85]=0.0;
a[27][85]=-x1[25]*x1[26];
a[28][85]=-x1[26]*x1[27];
a[29][85]=0.0;
a[30][85]=0.0;
a[31][85]=-x1[29]*x1[30];
a[32][85]=-x1[30]*x1[31];
a[33][85]=0.0;
a[34][85]=0.0;
a[35][85]=-x1[33]*x1[34];
a[36][85]=-x1[34]*x1[35];
a[37][85]=0.0;
a[38][85]=0.0;
a[39][85]=-x1[37]*x1[38];
a[40][85]=-x1[38]*x1[39];
a[41][85]=0.0;
a[42][85]=0.0;
a[43][85]=-x1[41]*x1[42];
a[44][85]=-x1[42]*x1[43];
a[45][85]=0.0;
a[46][85]=0.0;
a[47][85]=-x1[45]*x1[46];
a[48][85]=-x1[46]*x1[47];
a[49][85]=0.0;
a[50][85]=0.0;
a[51][85]=-x1[49]*x1[50];
a[52][85]=-x1[50]*x1[51];
a[53][85]=0.0;
a[54][85]=0.0;
a[55][85]=-x1[53]*x1[54];
a[56][85]=-x1[54]*x1[55];
a[57][85]=0.0;
a[58][85]=0.0;
a[59][85]=-x1[57]*x1[58];
a[60][85]=-x1[58]*x1[59];
a[61][85]=0.0;
a[62][85]=0.0;
a[63][85]=-x1[61]*x1[62];
a[64][85]=-x1[62]*x1[63];
a[65][85]=0.0;
a[66][85]=0.0;
a[67][85]=-x1[65]*x1[66];
a[68][85]=-x1[66]*x1[67];
a[69][85]=0.0;
a[70][85]=0.0;
a[71][85]=-x1[69]*x1[70];
a[72][85]=-x1[70]*x1[71];
a[73][85]=0.0;
a[74][85]=0.0;
a[75][85]=-x1[73]*x1[74];
a[76][85]=-x1[74]*x1[75];
a[77][85]=0.0;
a[78][85]=0.0;
a[79][85]=-x1[77]*x1[78];
a[80][85]=-x1[78]*x1[79];
a[81][85]=0.0;
a[82][85]=0.0;
a[83][85]=-x1[81]*x1[82];
a[84][85]=-x1[82]*x1[83];
for(k=1;k<=l;k++)
{
big=fabs(a[k][k]);
jj=k;
kp1=k+1;
for(i=kp1;i<=n;i++)
{
ab=fabs(a[i][k]);
if((big-ab)<0.0)
{
269
270
Appendix:
Programs in C++
big=ab;
jj=i;
}
}
if((jj-k)>0)
{
for(j=k;j<=m;j++)
{
t=a[jj][j];
a[jj][j]=a[k][j];
a[k][j]=t;
}
}
for(i=kp1;i<=n;i++)
{
quot=a[i][k]/a[k][k];
for(j=kp1;j<=m;j++)
{
a[i][j]=a[i][j]-quot*a[k][j];
}
}
for(i=kp1;i<=n;i++)
{
a[i][k]=0.0;
}
}
x[n]=a[n][m]/a[n][n];
for(nn=1;nn<=l;nn++)
{
sum=0.0;
i=n-nn;
ip1=i+1;
for(j=ip1;j<=n;j++)
{
sum=sum+a[i][j]*x[j];
}
x[i]=(a[i][m]-sum)/a[i][i];
}
}while(fabs(x[21]-x1[21])>1e-6&&fabs(x[84]-x1[84])>1e-6);
for(i=1;i<=n;i++)
{cout<<x[i]<<endl;}
getch();
}
271
PROGRAM 8.1
//PROGRAM 8.1
//program to calculate the concentration profile along the radius for
//reaction-diffusion in a spherical catalyst pellet (second order
//isothermal reaction)
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int i,j,n,i1,n1,k,iter;
float a[105],b[105],x1[105],c[105],d[105],x[105],beta[105],gamma[105];
for(i=1;i<=100;++i)
{x[i]=0.0;
}
//loop starts from here
iter=0;
do
{
iter=iter+1;
for(i=1;i<=100;++i)
{x1[i]=x[i];
}
for(i=2;i<=100;++i)
{a[i]=1.0-(1.0/(i-1.0));
}
b[1]=-6.0-0.01*x1[1];
for(i=2;i<=100;++i)
{b[i]=-2.0-0.01*x1[i];
}
c[1]=6.0;
for(i=2;i<=99;++i)
{c[i]=1.0+(1.0/(i-1.0));;
}
for(i=1;i<=99;++i)
{d[i]=0.0;
}
d[100]=-100.0/99.0;
i=1;
n=100;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
for(j=i1;j<=n;++j)
{
272
Appendix:
Programs in C++
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
}while(fabs(x[1]-x1[1])>1e-6&&fabs(x[100]-x1[100])>1e-6);
cout<<\t\t\t THE SOLUTION BY TDMA<<endl;
for(i=1;i<=100;++i)
{
cout<<x[<<i<<] = <<x[i]<<endl;
}
cout<<Number of iterations is <<iter;
getch();
}
PROGRAM 8.2
//PROGRAM 8.2
//program to calculate the concentration profile along the radius for
//reaction-diffusion in a spherical catalyst pellet (non-isothermal, beta=1)
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int i,j,n,i1,n1,k,iter;
float a[105],b[105],x1[105],c[105],d[105],x[105],beta[105],gamma[105];
for(i=1;i<=100;++i)
{x[i]=0.0;
}
iter=0;
//loop starts from here
do
{
iter=iter+1;
for(i=1;i<=100;++i)
{x1[i]=x[i];
}
for(i=2;i<=100;++i)
{a[i]=1.0-(1.0/(i-1.0));
}
b[1]=-6.0-0.01*exp((1.0-x1[1])/(2.0-x1[1]));
for(i=2;i<=100;++i)
{b[i]=-2.0-0.01*exp((1.0-x1[i])/(2.0-x1[i]));
}
c[1]=6.0;
for(i=2;i<=99;++i)
{c[i]=1.0+(1.0/(i-1.0));;
}
for(i=1;i<=99;++i)
{d[i]=0.0;
}
d[100]=-100.0/99.0;
i=1;
n=100;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
for(j=i1;j<=n;++j)
{
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
}while(fabs(x[1]-x1[1])>1e-6&&fabs(x[100]-x1[100])>1e-6);
cout<<\t\t\t THE SOLUTION BY TDMA<<endl;
for(i=1;i<=100;++i)
{
cout<<x[<<i<<] = <<x[i]<<endl;
}
cout<<Number of iterations is <<iter;
getch();
}
PROGRAM 9.1
//PROGRAM 9.1
//program to calculate the temperature profile in a rectangular
//slab during transient heat conduction
273
274
Appendix:
Programs in C++
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int i,j,n,i1,n1,k;
float a[21],b[21],c[21],d[21],x[21],beta[21],gamma[21];
float x1old,x2old,x3old,x4old,time,timef;
x[1]=20.0;
x[2]=20.0;
x[3]=20.0;
x[4]=20.0;
time=0.0;
timef=3.0;
//a is subdiagonal, b is diagonal and c is superdiagonal
a[2]=1.0;
a[3]=1.0;
a[4]=1.0;
b[1]=-1.5;
b[2]=-3.0;
b[3]=-3.0;
b[4]=-3.0;
c[1]=1.0;
c[2]=1.0;
c[3]=1.0;
for(time=0.1;time<timef;time=time+0.1)
{
x1old=x[1];
x2old=x[2];
x3old=x[3];
x4old=x[4];
d[1]=-0.5*x1old;
d[2]=-x2old;
d[3]=-x3old;
d[4]=-x4old-300.0;
i=1;
n=4;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
for(j=i1;j<=n;++j)
{
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
275
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
cout<<\t\t\t THE SOLUTION BY TDMA AT TIME = <<time<< seconds<<endl;
cout<<x[1]<< <<x[2]<< <<x[3]<< <<x[4]<<endl;
}
getch();
}
PROGRAM 9.2
//PROGRAM 9.2
//program to calculate the concentration profile in a sphere
//during transient diffusion of drug from spherical pellet
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int i,j,n,i1,n1,k;
float a[21],b[21],c[21],d[21],x[21],beta[21],gamma[21];
float x1old,x2old,x3old,x4old,x5old,x6old,x7old,x8old,x9old,x10old,time,timef;
for(i=1;i<=10;++i)
{
x[i]=68.9;
}
time=0.0;
timef=10800.0;
//a is subdiagonal, b is diagonal and c is superdiagonal
for(i=2;i<=10;++i)
{
a[i]=-(1.0-1.0/(i-1.0));
}
for(i=2;i<=10;++i)
{
b[i]=3544.5;
}
b[1]=591.4;
for(i=2;i<=9;++i)
{
276
Appendix:
Programs in C++
c[i]=-(1.0+1.0/(i-1.0));
}
c[1]=-1.0;
for(time=0.0;time<timef;time=time+1.0)
{
x1old=x[1];
x2old=x[2];
x3old=x[3];
x4old=x[4];
x5old=x[5];
x6old=x[6];
x7old=x[7];
x8old=x[8];
x9old=x[9];
x10old=x[10];
d[1]=x1old*590.4;
d[2]=x2old*3542.5;
d[3]=x3old*3542.5;
d[4]=x4old*3542.5;
d[5]=x5old*3542.5;
d[6]=x6old*3542.5;
d[7]=x7old*3542.5;
d[8]=x8old*3542.5;
d[9]=x9old*3542.5;
d[10]=x10old*3542.5;
i=1;
n=10;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
for(j=i1;j<=n;++j)
{
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
}
cout<<\t\t\t THE SOLUTION BY TDMA AT TIME = <<time<< seconds<<endl;
for(i=1;i<=10;++i)
277
{
cout<<x[i]<<endl;
}
getch();
}
PROGRAM 10.1
//PROGRAM 10.1
//program to calculate the temperature profile in a 2-D body
//during steady heat conduction using the GaussSeidel method
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
float t11old,t12old,t13old,t11new,t12new,t13new;
float t21old,t22old,t23old,t21new,t22new,t23new;
float t31old,t32old,t33old,t31new,t32new,t33new;
t11new=t12new=t13new=101.0;
t21new=t22new=t23new=101.0;
t31new=t32new=t33new=101.0;
do
{
t11old=t11new;
t12old=t12new;
t13old=t13new;
t21old=t21new;
t22old=t22new;
t23old=t23new;
t31old=t31new;
t32old=t32new;
t33old=t33new;
t11new=(t12old+50+0.5*t21old+100.0/3.0)*3/7;
t12new=(t11new+t13old+t22old+100)/4.0;
t13new=(t12new+t23old+600)/4;
t21new=(t22old+0.5*t11new+0.5*t31old+100/3)*3/7;
t22new=(t12new+t32old+t23old+t21new)/4;
t23new=(t13new+t22new+t33old+500)/4;
t31new=(0.5*t21new+0.5*t32old+100/3)*3/4;
t32new=(t22new+0.5*t31new+0.5*t33old+100/3)*3/7;
t33new=(t23new+250+0.5*t32new+100/3)*3/7;
}while(fabs(t11new-t11old)>1e-6&&fabs(t12new-t12old)>1e6&&fabs(t13new-t13old)>1e-6
278
Appendix:
Programs in C++
&&fabs(t21new-t21old)>1e-6&&fabs(t22new-t22old)>1e-6&&fabs(t23newt23old)>1e-6
&&fabs(t31new-t31old)>1e-6&&fabs(t32new-t32old)>1e-6&&fabs(t33newt33old)>1e-6);
cout<<t11new<< <<t12new<< <<t13new<<endl;
cout<<t21new<< <<t22new<< <<t23new<<endl;
cout<<t31new<< <<t32new<< <<t33new<<endl;
getch();
}
PROGRAM 10.2
//PROGRAM 10.2
//program to calculate the temperature profile in a 2D body
//during steady heat conduction using the ADI method
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int i,j,ii,jj,n,nn,nmax,i1,n1,k;
float a[21],b[21],c[21],d[21],x[21],beta[21],gamma[21], t[21][21];
float tstar[21][21];
a[2]=1.0;
a[3]=1.0;
b[1]=-4.0;
b[2]=-4.0;
b[3]=-4.0;
c[1]=1.0;
c[2]=1.0;
cout<<Enter the maximum number of iterations ;
cin>>nmax;
t[0][1]=tstar[0][1]=20.0;
t[0][2]=tstar[0][2]=20.0;
t[0][3]=tstar[0][3]=20.0;
t[1][0]=tstar[1][0]=20.0;
t[2][0]=tstar[2][0]=20.0;
t[3][0]=tstar[3][0]=20.0;
t[4][1]=tstar[4][1]=20.0;
t[4][2]=tstar[4][2]=20.0;
t[4][3]=tstar[4][3]=20.0;
t[1][4]=tstar[1][4]=400.0;
t[2][4]=tstar[2][4]=400.0;
t[3][4]=tstar[3][4]=400.0;
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
{
t[i][j]=20.0;
}
}
for(nn=1;nn<=nmax;nn++)
{
for(jj=1;jj<=3;jj++)
{
d[1]=-t[0][jj]-t[1][jj+1]-tstar[1][jj-1];
d[2]=-t[2][jj+1]-tstar[2][jj-1];
d[3]=-t[4][jj]-t[3][jj+1]-tstar[3][jj-1];
i=1;
n=3;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
for(j=i1;j<=n;++j)
{
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
tstar[1][jj]=x[1];
tstar[2][jj]=x[2];
tstar[3][jj]=x[3];
}
for(ii=1;ii<=3;ii++)
{
d[1]=-t[ii][0]-tstar[ii+1][1]-tstar[ii-1][1];
d[2]=-tstar[ii+1][2]-tstar[ii-1][2];
d[3]=-t[ii][4]-tstar[ii+1][3]-tstar[ii-1][3];
i=1;
n=3;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
279
280
Appendix:
Programs in C++
for(j=i1;j<=n;++j)
{
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
t[ii][1]=x[1];
t[ii][2]=x[2];
t[ii][3]=x[3];
}
}
cout<<\t\t\t THE SOLUTION BY ADI<<endl;
cout<<t[1][1]<< <<t[1][2]<< <<t[1][3]<<endl;
cout<<t[2][1]<< <<t[2][2]<< <<t[2][3]<<endl;
cout<<t[3][1]<< <<t[3][2]<< <<t[3][3]<<endl;
getch();
}
PROGRAM 10.3
//PROGRAM 10.3
//program to calculate the temperature profile in a 2D body
//during transient heat conduction using the ADI method
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int i,j,ii,jj,n,nn,nmax,i1,n1,k,kk,count;
float a[21],b[21],c[21],d[21],x[21],beta[21],gamma[21],t[21][21];
float tstar[21][21],time,timef;
timef=0.5;
for(k=1;k<=10;k++)
{
a[k]=-1.0;
b[k]=2.4;
c[k]=-1.0;
c[1]=-2.0;
for(k=1;k<=11;k++)
{
t[11][k]=400.0;
tstar[11][k]=400.0;
t[k][11]=400.0;
tstar[k][11]=400.0;
}
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
t[i][j]=0.0;
tstar[i][j]=0.0;
}
}
for(time=0.0;time<=timef;time=time+0.05)
{
for(jj=1;jj<=10;jj++)
{
if(jj==1)
{
for(ii=1;ii<=10;ii++)
{
d[ii]=2*t[ii][2]-1.6*t[ii][1];
}
d[10]=d[10]+400.0;
}
else
{
for(ii=1;ii<=10;ii++)
{
d[ii]=t[ii][jj+1]+t[ii][jj-1]-1.6*t[ii][jj];
}
d[10]=d[10]+400.0;
}
i=1;
n=10;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
for(j=i1;j<=n;++j)
{
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
281
282
Appendix:
Programs in C++
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
for(count=1;count<=10;count=count+1)
{
tstar[count][jj]=x[count];
}
}
for(ii=1;ii<=10;ii++)
{
if(ii==1)
{
for(jj=1;jj<=10;jj++)
{
d[jj]=2*tstar[ii+1][1]-1.6*tstar[ii][1];
}
d[10]=d[10]+400.0;
}
else
{
for(jj=1;jj<=10;jj++)
{
d[jj]=tstar[ii-1][jj]+tstar[ii+1][jj]-1.6*tstar[ii][jj];
}
d[10]=d[10]+400.0;
}
i=1;
n=10;
beta[i]=b[i];
gamma[i]=d[i]/beta[i];
i1=i+1;
for(j=i1;j<=n;++j)
{
beta[j]=b[j]-a[j]*c[j-1]/beta[j-1];
gamma[j]=(d[j]-a[j]*gamma[j-1])/beta[j];
}
x[n]=gamma[n];
n1=n-i;
for(k=1;k<=n1;++k)
{
j=n-k;
x[j]=gamma[j]-c[j]*x[j+1]/beta[j];
}
for(count=1;count<=10;count=count+1)
{
t[ii][count]=x[count];
}
}
}
cout<<\t\t\t THE SOLUTION BY ADI AT TIME = <<time<< s<<endl;
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
cout<<t[<<i<<][<<j<<] = <<t[i][j]<<\t;
}
}
getch();
}
283
Bibliography
Ahuja, P., Chemical Engineering Thermodynamics, PHI Learning, New Delhi, 2009.
Anderson, J.D., Computational Fluid Dynamics: The Basics with Applications, McGraw-Hill,
New York, 1995.
Beers, K.J., Numerical Methods for Chemical Engineering: Applications in MATLAB,
Cambridge University Press, Cambridge, UK, 2007
Bird, R.B., Stewart, W.E., and Lightfoot, E.N., Transport Phenomena, 2nd ed., John Wiley,
New York, 2002.
Butt, J.B., Reaction Kinetics and Reactor Design, Prentice Hall, Englewood Cliffs,
New Jersey, 1980.
Carnahan, B., Luther, H.A., and Wilkes, J.O., Applied Numerical Methods, John Wiley,
New York, 1969
Cengel, Y.A., Heat Transfer: A Practical Approach, 2nd ed., Tata McGraw-Hill, New Delhi,
2003
Chapra, S.C. and Canale, R.P., Numerical Methods for Engineers, 3rd ed., Tata McGraw-Hill,
New Delhi, 1998.
Chung, T.J., Computational Fluid Dynamics, Cambridge University Press, New York, 2002.
Cooper, A.R. and Jeffreys, G.V., Chemical Kinetics and Reactor Design, Oliver and Boyd,
Edinburgh, 1971
Felder, R.M. and Rousseau, R.W., Elementary Principles of Chemical Processes, John Wiley,
New York, 2000.
Finlayson, B.A., Nonlinear Analysis in Chemical Engineering, McGraw-Hill, New York,
1980.
Finlayson, B.A., Introduction to Chemical Engineering Computing, John Wiley, New York,
2006.
Fogler, H.S., Elements of Chemical Reaction Engineering, 4th ed., Pearson Education/Prentice
Hall, Upper Saddle River, New Jersey, 2006.
285
286
Bibliography
Fox, R.W., and McDonald, A.T., Introduction to Fluid Mechanics, 5th ed., John Wiley,
New York, 2004.
Gear, C.W., Numerical Initial Value Problems in Ordinary Differential Equations, Prentice
Hall, Englewood Cliffs, New Jersey, 1971.
Gupta, S.K., Numerical Methods for Engineers, Wiley Eastern, New Delhi, 1995.
Hill, C.G., Jr., Introduction to Chemical Kinetics and Reactor Design, John Wiley, New York,
1977.
Holland, C.D. and Anthony, R.G., Fundamentals of Chemical Reaction Engineering, Prentice
Hall, Englewood Cliffs, New Jersey, 1979
Holman, J.P., Heat Transfer, 8th ed., McGraw-Hill, New York, 1997.
Jain, M.K., Iyengar, S.R.K., and Jain, R.K., Numerical Methods for Scientific and
Engineering Computation, 5th ed., New Age International, New Delhi, 2007.
Jenson, V.G. and Jeffreys, G.V., Mathematical Methods in Chemical Engineering, 2nd ed.,
Academic Press, New York, 1977.
Kreyszig, E., Advanced Engineering Mathematics, 8th ed., John Wiley, New York, 1999.
Levenspiel, O., Chemical Reaction Engineering, 3rd ed., John Wiley, New York, 2001.
Mickley, H.S., Sherwood, T.K., and Reed, C.E., Applied Mathematics in Chemical
Engineering, 2nd ed., McGraw-Hill, New York, 1957.
Munson, B.R., Young, D.F., and Osiishi, T.H., Fundamentals of Fluid Mechanics, 5th ed.,
John Wiley, New York, 2006.
Press, W.H., Teukolsky, S.A., Vetterling, W.T., and Flannery, B.P., Numerical Recipes: The
Art of Scientific Computing, 3rd ed., Cambridge University Press, Cambridge, UK, 2007.
Sandler, S.I., Chemical, Biochemical, and Engineering Thermodynamics, 4th ed., Wiley India
Edition, New Delhi, 2006.
Sastry, S.S., Introductory Methods of Numerical Analysis, 3rd ed., Prentice-Hall of India,
New Delhi, 1998.
Smith, J.M., van Ness, H.C., and Abbott, M.M., Introduction to Chemical Engineering
Thermodynamics, 6th ed., McGraw-Hill, New York, 2001.
Tannehill, J.C., Anderson, D.A., and Pletcher, R.H., Computational Fluid Mechanics and
Heat Transfer, 2nd ed., Taylor and Francis, Washington, D.C., 1997.
Versteeg, H.K. and Malalasekera, W., An Introduction to Computational Fluid Dynamics
The Finite Volume Method, Prentice Hall, New York, 1995.
Welty, J.R., Wicks, C.E., Wilson, R.E., and Rorrer, G.L., Fundamentals of Momentum, Heat,
and Mass Transfer, 4th ed., John Wiley, New York, 2001.
Index
Activity coefficient, 37
Adiabatic flame temperature, 4950
Alternating direction implicit (ADI) method,
208220
for steady heat conduction, 208214
for transient heat conduction, 214220
Antoine equation, 34
Axial dispersion, 119
287
288
Index
Fin, 94
Finite difference schemes, 86, 105107, 172173
backward difference, 86
central difference, 86
forward difference, 86
FTCS Crank-Nicolson scheme, 173
FTCS explicit scheme, 172
FTCS implicit scheme, 173
upwind difference, 105107
Flash calculations, 3537, 4042
using modified Raoults law, 4042
using Raoults law, 3537
Forward difference scheme, 86
Forward in time and central in space (FTCS)
difference scheme, 172173
Fourier stability analysis, 174176
Friction factor, 2021
One-dimensional
steady heat conduction, 93
transient diffusion in a sphere, 186188
transient heat conduction, 176185
in a cylinder, 181183
in a rectangular slab, 176181
in a sphere, 183185
Optimum step size, 53
Ordinary differential equation, 53, 87, 105, 155
Overall heat transfer coefficient, 56
Index
Reynolds number, 20
Round-off error, 53, 87
Runge-Kutta fourth order method, 54
289
INTRODUCTION TO
NUMERICAL METHODS IN
CHEMICAL ENGINEERING
Pradeep Ahuja
Rs. 275.00
www.phindia.com
9 788120 340183