Advances in Materials Science and Engineering
Volume 2015 (2015), Article ID 275340, 11 pages
http://dx.doi.org/10.1155/2015/275340

Research Article

Soft Sensor for Oxide Scales on the Steam Side of Superheater Tubes under Uneven Circumferential Load

Qing Wei Li¹ and Gui Huan Yao²

¹Energy and Environment Department, Southeast University, Si Pai Lou No. 2, Xuan Wu District, Nanjing 210096, China
²School of Mechanical and Power Engineering, Nanjing University of Technology, Nanjing, China

Received 31 December 2014; Accepted 8 February 2015

Academic Editor: Chih-Chun Hsieh

Copyright © 2015 Qing Wei Li and Gui Huan Yao. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Abstract.

A soft sensor for oxide scales on the steam side of superheater tubes of utility boiler under uneven circumferential loading is proposed for the first time. First finite volume method is employed to simulate oxide scales growth temperature on the steam side of superheater tube. Then appropriate time and spatial intervals are selected to calculate oxide scales thickness along the circumferential direction. On the basis of the oxide scale thickness, the stress of oxide scales is calculated by the finite element method. At last, the oxide scale thickness and stress sensors are established on support vector machine (SMV) optimized by particle swarm optimization (PSO) with time and circumferential angles as inputs and oxide scale thickness and stress as outputs. Temperature and stress calculation methods are validated by the operation data and experimental data, respectively. The soft sensor is applied to the superheater tubes of some power plant. Results show that the soft sensor can give enough accurate results for oxide scale thickness and stress in reasonable time. The forecasting model provides a convenient way for the research of the oxide scale failure.

1. Introduction

Oxide scale formed on the steam side of superheaters and reheaters of utility boilers in power plant brings many problems like tube clogging, overheating, and erosion of turbine blade [1–3]. It is estimated that 10% of all power plant breakdowns are caused by creep fractures of boiler tubes due to the scales formation [4]. Oxide failure often occurs at boiler’s start-up and stop stages. During these stages, large stress in oxide scales would be generated [5]. Many researchers have been devoted to studying the stress generated in oxide scales. For theoretical analysis, Sabau and Wright [6] studied the effects of creep, growth stress, and thermal stress on the internal stress state of the oxide film. Feng et al. [7] corrected the stoney formula for the nonuniform temperature and multilayered oxides to calculate the average stress combined with the deformation curvature of the layers. As for the experiment aspect, Galerie et al. [8] measured the average thermal stress of oxides on ferritic alloy with flat structure in three ways, namely, Raman spectroscopy, X-ray diffraction, and single-sided bending test. They pointed out that the results measured by Raman spectroscopy were accurate enough without the modifications by the X-ray diffraction and single-sided bending test. Luzin et al. [9] measured the thermal stress in Cu/Al coating systems of the flat structure using neutron diffraction method, which can give results reflecting the distribution along the thickness direction. For numerical aspect, Bian et al. [10] simulated the effects of temperature perturbations of gas and steam on the stress states of tubes and oxides using ANSYS finite element software.

As the load along the circumferential direction of the superheater tube is uneven, the oxide growth temperature is different circumferentially and so is the thickness of the oxide scales. Sabau et al. [11] pointed out that the steam temperature gradually increases along the flow direction of the tube and calculated the growth temperature distribution in the axial direction.

Support vector machine (SVM) introduced by Vapnik is a useful tool for data mining, especially in the fields of pattern recognition and regression. During the past few years, its solid theoretical foundation and good behaviors have attracted a number of researchers [12, 13]. However, the selection of parameters of SVM is still a problem. Grid search method [14] and optimization methods like particle swarm optimization [15], genetic algorithm [16], and ant colony optimization [17] have been introduced to solve the parameter selection problem.

PSO is an evolutionary computation technique developed by Dr. Eberhart and Dr. Kennedy in 1995, inspired by social behavior of bird flocking. It is getting more and more attention as it is simple, fast, and easy to implement [18]. Like other intelligent algorithms, PSO is troubled with prematurity and convergence problem. So some improved PSOs have been proposed [19–21].

It is not convenient to get oxide scales thickness and stress values through theoretical method, experimental method, and simulation method for online application. In this paper, a soft sensor for oxide scales based on SVM optimized by PSO is proposed. The rest of the paper is organized as follow. Section 2 introduces the calculation of the thickness and stress of oxide scales. Then Section 3 provides a soft sensor for oxide scales, after which the temperature and stress calculation method are validated by the operation data and experiment data, respectively. An application is given to show the performance of the soft sensor in Section 5. Finally, Section 6 summarizes the contribution of this paper.

2. Calculation of the Thickness and Stress of Oxide Scales

2.1. Physical Model

The model area is divided into four regions, that is, steam region, scale region, steel region, and gas region from inside to outside, as shown in Figure 1. Define the angle of the windward side as 0° and take counterclockwise as positive.

(a) Cross section

(b) Longitudinal section

Figure 1: Geometric model.

The steam is fully developed turbulent flow and convection coefficient between steam and oxide scale is expressed as

where is Reynolds number defined in (2); is Prandtl number defined in (3); is thermal conductivity of the steam, W/(m·K); is the inner diameter of the tube, m:

where is mass flow rate of the steam, kg/s; is steam viscosity, kg/(m·s):

where is specific heat of the steam, J/(kg·K).

Heat transfer between gas and steel is forced convection and convection coefficient is given as

where is Reynolds number that is defined as in (5); is Prandtl number that is defined as in (6); is thermal conductivity of flue gas, W/(m·K); is outer diameter of the tube, m:

where is steam viscosity, kg/(m·s); is gas mass velocity, kg/s:

where is specific heat of the flue gas, .

The temperature can be solved by the following equation [25]:

where is the density, kg/m³; is the specific heat, J/(kg·K); is time, s; is thermal conductivity, W/(m·K); and are the space variables, m.

2.2. Mathematical Model of Oxide Thickness Calculation

Oxide scale thickness is the basis of the calculation of stress. For the case where protective oxide scale is formed, the rate of scale growth is controlled by diffusion of ions through the oxide, and the growth of the oxide scales can be described by [5]

where is the thickness of the oxide scales, μm; is the oxidation rate, μm²/hr; is time, hr; is Arrhenius constant, μm²/hr, is activation energy, kJ/mole; is universal gas constant, kJ/(mole·K); is absolute growth temperature, K.

Take the temperature between the tube and oxide scales as the growth temperature. The growth temperature changes with the thickness of the oxide scales, so the thickness of the oxide scales should be calculated through [26]

where is the thickness of the oxides at the end of the th time intervals, μm; is the time interval, hr; is the growth temperature in the th interval, K; is the oxidation rate in the th interval, μm²/hr.

2.3. Mathematical Model of the Stress in Oxide Scales

The stress in oxide scales mainly consists of thermal stress, which can be calculated by the following equations [27]:

where and are the free strain of tube and oxide scale, respectively.

The displacement and stress of tube and oxide scales are calculated according to mechanics of elasticity as follows:

where is the metal free thermal strain; is the oxide free thermal strain; is the linear expansion coefficient of the metal, m/K; is the linear expansion coefficient of the oxide scales, m/K; and are the inside and outside temperature of metal, respectively, K; and are the inside and outside temperature of oxide scales, respectively, K; represents metal or oxide scales; is the radial displacement, m; is the Poisson ration; is the average radial coordinate, m; is the radial argument, m; and are the inside radius and outside radius, m; is the free thermal strain; and are undetermined parameters and are obtained with boundary conditions; is the radial stress, MPa; is modulus of elasticity, Mpa; is circumferential stress, MPa; is axial stress, MPa.

The inlet gas temperature and steam temperature are given. The radial boundary stress of the gas side and steam side equals the gas pressure and steam pressure, respectively. The radial stress and temperature are continuous at the interface of tube and oxide scales and the interfaces of different oxide layers.

3. Soft Sensor for the Thickness and Stress of Oxide Scales

Though the stresses can be calculated by simulation method, it is time consuming. Operators are eager to monitor the oxide thickness and stress online. So a soft sensor is proposed.

3.1. Introduction of SVM

Train samples of SVM are , which are mapped into high-dimensional space through nonlinear function and regressed linearly as follows:

where ; .

The learning process is converted into an optimization problem according to structural risk minimization principle:

where is the penalty factor; and are slack variables.

Linear insensitive loss function is defined with :

Equation (13) can be transformed into the following form through the dual form of Lagrange polynomial:

where and are Lagrange multipliers; is kernel function meeting the conditions of mercer. Radial basis kernel function is selected in this study:

Due to the sparsity, only some samples’ coefficients are not 0 in quadratic programming (15), which are the support vector machines. Assuming the number of support vector machines is , the regression function can be given as follows:

3.2. Introduction of PSO

In PSO, each feasible solution of the optimization problem is seen as a “particle” of the solution space. Each particle searches the solution space following the optimal particle of the whole group. Suppose the group searches in a dimensional solution space. The particle is expressed as . Particles search for new feasible solutions by constantly adjusting their positions. is the optimal position of particle . is the optimal position of the whole group. is position change rate of particle . Each particle uses the following equations to adjust its velocity and position:

where is inertia weight; is the dimension of the space; is the particle number in the group; and are acceleration coefficients, where is known as the individual cognitive factor; is known as social learning factor; rand₁ and rand₂ are two separately generated uniformly distributed random numbers in the range .

3.3. Optimization of SVM’s Parameters

and have great influence on the learning ability and generalization ability. compromises structural risks and sampling error. is decided by the width or the scope of the input space.

In this paper, support vector machine parameters are optimized by PSO. Each particle represents a potential set of and . The fitness function is defined as

where is the forecasting value and is the actual value.

Initialize PSO and iterate to get proper set of and to minimize the predicting error, namely, the fitness value evaluated by (19), to promote the predicting accuracy.

3.4. Soft Sensor for Thickness and Stress of Oxide Scales

Traditional methods like theoretical method, experimental method, and simulation method cannot provide accurate enough oxide scale thickness and stress in reasonable time. With the development of intelligent algorithms, the soft sensor can be qualified to do this work. In our study, SVM is employed to predict oxide scale thickness and stress.

(1) Soft Sensor for Oxide Scale Thickness. Take time and angles as inputs and oxide scale thickness as the output, as shown in Figure 2(a). Train samples and test samples are obtained from simulations. Take 6 out of the samples as train samples and the one left is test sample. Leave-one-out method is employed to train SVM parameters [16].

(a) Soft sensor for oxide scale thickness

(b) Soft sensor for oxide scale stress

Figure 2: Soft sensor for oxide scale thickness and stress.

(2) Soft Sensor for Oxide Scale Stress. Take time, oxide scale thickness, and angles as inputs and oxide scale stress as the output, as shown in Figure 2(b). Train samples and test samples are obtained from simulations. The first 18 samples are train samples, while the last 3 samples are test samples. The training method is the same with thickness soft sensor. Leave-one-out method is employed to train SVM parameters.

The steps of constructing the soft sensors are detailed as follows.

Step 1. Collect calculation parameters of oxide scales and superheater tubes.

Step 2. Program thermal calculation procedure according to 73 boiler thermal calculation standards to get the convection coefficient between steam and oxide scales and convection coefficient between gas and substrate and steam temperature and gas temperature.

Step 3. Divide operating time and spatial space into several intervals reasonably considering computational cost and accuracy of the results.

Step 4. Calculate the temperature distribution by finite volume method with the boundaries got in Step 2.

Step 5. Calculate the oxide scale thickness according to (8)-(9) with intervals in Step 3 and temperature distribution in Step 4. Repeat Steps 4 and 5 until all the intervals have been done.

Step 6. Calculate the stress of oxide scales according to (10)-(11) on the platform of ANSYS with given temperature drop and oxide scale thickness in corresponding direction.

Step 7. Optimize SVM parameters for the oxide scale thickness soft sensor and stress soft sensor with leave-one-out method.

Step 8. Construct thickness soft sensor and stress soft sensor with the data collecting from Steps 5 and 6 and the parameters optimized in Step 7.

4. Verification

4.1. Validation of Oxide Scale Thickness Calculation Method

Two reheater tube samples of power plant in site are taken for validation [28, 29]. Two different cases with different tube diameters from two different locations are used. Operating steam temperature of both tubes is 576°C. The flue gas temperatures were reported ranging from 800 to 900°C. The estimated scale thickness and the actual data are plotted in Figure 3. It can be seen that the estimated scale thickness is closed to the actual data.

Figure 3: The estimated scale thickness and the actual data.

4.2. Validation of Oxide Scale Stress Calculation Method

The average internal stress of oxides on AISI 441 is measured by Raman spectroscopy in [30]. The dimensions of the specimen are 2 mm × 1.5 mm. The thickness of the alloy and oxide scales is 1.2 mm and 0.001 mm, respectively. This literature assumed that the composition of the oxides was chromia only. The specimen was cooled to room temperature after being oxidized at 800°C. The pressure is 1 atm. The average stress of the oxide scales is simulated with finite element method. The simulated result is compressive and the value is 1.126 Gpa. The error is 6.17% compared with 1.2 Gpa provided in [30]. So the results based on (10)-(11) by finite element method are credible.

5. An Application Case

5.1. Description on the Calculation Related Data

The physical parameters of oxide scales and superheater material are listed in Tables 1-2. Geometrical parameters listed in Table 3 are taken from the superheater of some power plant. Take operational parameters as boundary conditions; see Table 4.

Table 1: The main parameters for oxide scales [22, 23].

Name
Elasticity modulus/×10¹¹ [Pa]
The Poisson ration

Fe-Cr-spinel
2.3
0.31

Magnetite
2.1
0.29

Hematite
2.2
0.19

Table 2: The parameters of TP347 [24].

Temperature [°C]
Elasticity modulus ×10¹¹ [Pa]
The linear expansion coefficient ×10⁻⁶ [K⁻¹]
The Poisson
Conduction coefficient [W/(m·K)]
Arrhenius constant [μm²/h]
Activation energy [KJ/mole]

25
2
15.27
0.3
23.2
5 × 10⁹
−171

100
1.96
17.3
0.3
23.2
5 × 10⁹
−171

200
1.88
17.5
0.3
23.2
5 × 10⁹
−171

300
1.81
17.7
0.3
23.2
5 × 10⁹
−171

400
1.72
18.2
0.3
23.2
5 × 10⁹
−171

500
1.63
18.6
0.3
23.2
5 × 10⁹
−171

600
1.56
18.9
0.3
23.2
5 × 10⁹
−171

Table 3: Geometrical parameters.

Inner diameter [mm]
Outer diameter [mm]
Axial length [mm]
Length of gas area [mm]
Width of gas area [mm]
Operating time [h]

36.7
44.5
15
1000
500
10000

Table 4: Boundary conditions.

Inlet temperature [°C]
Inlet velocity [m/s]
Outlet pressure [MPa]

Gas
950
9.6
0.09

Steam
560
6.9
25

5.2. Growth Temperature and Thickness of the Oxide Scales

Growth temperature decreases along the circumferential direction and changes rapidly at approximately 90°. Reduced gas flow area enhances flow speed, which enlarges the convective heat transfer coefficient. At first, the growth temperature of the oxide scales increases fast as the difference of thermal conductivity between the metal and the oxide scales is large; see Figure 4. The thickness of the oxide scales is given in Figure 5.

Figure 4: The growth temperature along the tube.

Figure 5: The oxide thickness along the tube.

5.3. Forecasting of the Oxide Scales Thickness

The predicting results for oxide scale thickness are shown in Figure 6. We can see the forecasting values are closed to the actual values for train samples and test samples in all directions, showing that the results given by oxide scale thickness soft sensor are accurate enough.

(a) 0°, 30°, and 60°

(b) 90°, 120°, 150°, and 180°

Figure 6: The forecasting results.

5.4. Forecasting of the Oxide Scale Stress

Assume that the temperature drop of steam is 100°C while all other parameters remain the same. The stresses are calculated with (10)-(11). The optimization progress of SVM parameters for the radial stress in 0° is shown in Figure 7. The best and are found after 38 iterations. The best and best are 100 and 0.87, respectively.

Figure 7: The optimization progress of SVM parameters (Best = 100  = 0.86866).

Radial stresses, axial stresses, and circumferential stresses in 0°, 90°, and 180° are shown in Figures 8, 9, and 10. The first 18 samples are training samples and the last 3 samples are testing samples. From the figures, it can be seen that the forecasting results provided by soft senor are accurate enough. The first 3 training samples’ forecasting results are not ideal, which is caused by two reasons: the samples are not enough and the stress rises too dramatically.

(a) 0° direction

(b) 90° direction

(c) 180° direction

Figure 8: Forecasting results of radial stresses.

(a) 0° direction

(b) 90° direction

(c) 180° direction

Figure 9: Forecasting results of axial stress.

(a) 0° direction

(b) 90° direction

(c) 180° direction

Figure 10: Forecasting results of circumferential stress.

The corresponding average errors and maximum errors are shown in Tables 5-6. The maximum forecasting error comes from the first training sample. The average forecasting errors are small enough to show the stress level in the oxide scales, which can be further reduced by adding samples in the early stage. To get the stress, the simulation method takes more than 10 minutes; however, the soft sensor only needs few seconds, cutting down the calculation time greatly.

Table 5: The average forecasting errors for the stress.

0°
90°
180°

Axial stress average error/[MPa]
1.35
1.41
2.26

Circumferential stress average error/[MPa]
0.40
0.50
0.66

Radial stress average error/[MPa]
0.02
0.02
0.15

Table 6: The maximum forecasting errors for the stress.

0°
90°
180°

Axial stress maximum error/[MPa]
76.85
40.99
24.28

Circumferential stress maximum error/[MPa]
58.38
43.45
41.32

Radial stress maximum error/[MPa]
4.39
4.46
1.99

6. Conclusions

The thickness and stress of oxide scales under uneven circumferential loading are calculated by finite volume method and finite element method, which are supplied as the samples. A soft sensor for oxide thickness and stress is proposed for the first time. An application shows that the soft sensor can give enough accurate results for oxide scale thickness and stress while the calculation time is greatly cut down. The soft sensor provides a convenient way to study oxide scale failure. In future, more operating parameters, tube diameters, and tube materials will be studied and incorporated into the predicting model.

Conflict of Interests

The authors declare that there is no conflict of interests regarding the publication of this paper.

Acknowledgments

The authors declare that there is no conflict of interests regarding the publication of this paper and acknowledge financial support from National Natural Science Foundation of China (51406077) and the Natural Science Foundation of Jiangsu Province, China (12KJB470008).

References

Q. T. Zhou, K. Y. Zhou, and W. Leng, Boiler Principle, Electric Power Press, Beijing, China, 2nd edition, 2009.

P. J. Ennis and W. J. Quadakkers, “Implications of steam oxidation for the service life of high-strength martensitic steel components in high-temperature plant,” International Journal of Pressure Vessels and Piping, vol. 84, no. 1-2, pp. 82–87, 2007.

M. Schütze, “Route from U. R. Evans' original approach to today's understanding of scale failure,” Corrosion Engineering Science and Technology, vol. 48, no. 4, pp. 303–312, 2013.

D. R. H. Jones, “Creep failures of overheated boiler. Superheater and reformer tubes,” Engineering Failure Analysis, vol. 11, no. 6, pp. 873–893, 2004.

I. G. Wright and P. F. Tortorelli, “Program on technology innovation: oxide growth and exfoliation on alloys exposed to steam,” Tech. Rep. EPRI1013666, Electric Power Research Institute, Palo Alto, Calif, USA, 2007.

A. S. Sabau and I. G. Wright, “Influence of oxide growth and metal creep on strain development in the steam-side oxide in boiler tubes,” Oxidation of Metals, vol. 73, no. 5-6, pp. 467–492, 2010.

X. Feng, Y. Huang, and A. J. Rosakis, “Stresses in a multilayer thin film/substrate system subjected to nonuniform temperature,” Transactions ASME—Journal of Applied Mechanics, vol. 75, no. 2, 7 pages, 2008.

A. Galerie, F. Toscan, M. Dupeux et al., “Stress and adhesion with spallation,” Materials Research, vol. 7, no. 1, pp. 81–88, 2004.

V. Luzin, K. Spencer, and M.-X. Zhang, “Residual stress and thermo-mechanical properties of cold spray metal coatings,” Acta Materialia, vol. 59, no. 3, pp. 1259–1270, 2011.

C.-X. Bian, K.-Y. Zhou, J.-Q. Xu, and X.-H. Xu, “Finite element analysis on transient stresses of oxide scales at steam side of boiler superheater,” Journal of Power Engineering, vol. 28, no. 5, pp. 696–700, 2008.

A. S. Sabau, I. G. Wright, and J. P. Shingledecker, “Oxide scale exfoliation and regrowth in TP347H superheater tubes,” Materials and Corrosion, vol. 63, no. 10, pp. 896–908, 2012.

P.-F. Pai and W.-C. Hong, “Forecasting regional electricity load based on recurrent support vector machines with genetic algorithms,” Electric Power Systems Research, vol. 74, no. 3, pp. 417–425, 2005.

C.-C. Hsiao, S.-F. Su, and C.-C. Chuang, “A rough-based robust support vector regression network for function approximation,” in Proceedings of the IEEE International Conference on Fuzzy Systems (FUZZ '11), pp. 2814–2818, Taipei, Taiwan, June 2011.

F. Friedrichs and C. Igel, “Evolutionary tuning of multiple SVM parameters,” Neurocomputing, vol. 64, no. 1–4, pp. 107–117, 2005.

X. Wang, H. Zhang, C. Zhang, X. Cai, J. Wang, and M. Ye, “Time series prediction using LS-SVM with particle swarm optimization,” in Proceedings of the 3rd International Symposium on Neural Networks, vol. 3972, pp. 747–752, Chengdu, China, 2006.

D. Zhang, W. Liu, A. Wang, and Q. Deng, “Parameter optimization for support vector regression based on genetic algorithm with simplex crossover operator,” Journal of Chemical Information and Computer Sciences, vol. 8, no. 6, pp. 911–920, 2011.

X. L. Zhang, X. F. Chen, and Z. J. He, “An ACO-based algorithm for parameter optimization of support vector machines,” Expert Systems with Applications, vol. 37, no. 9, pp. 6618–6628, 2010.

M. Q. Hu, T. Wu, and J. D. Weir, “An adaptive particle swarm optimization with multiple adaptive methods,” IEEE Transactions on Evolutionary Computation, vol. 17, no. 5, pp. 705–720, 2013.

J. Ding, J. Liu, K. R. Chowdhury, W. Zhang, Q. Hu, and J. Lei, “A particle swarm optimization using local stochastic search and enhancing diversity for continuous optimization,” Neurocomputing, vol. 137, pp. 261–267, 2014.

X. Jin, Y. Liang, D. Tian, and F. Zhuang, “Particle swarm optimization using dimension selection methods,” Applied Mathematics and Computation, vol. 219, no. 10, pp. 5185–5197, 2013.

Z. G. Ren, A. Zhang, C. Wen, and Z. Feng, “A scatter learning particle swarm optimization algorithm for multimodal problems,” IEEE Transactions on Cybernetics, vol. 44, no. 7, pp. 1127–1140, 2014.

M. Schütze, “Mechanical properties of oxide scales,” Oxidation of Metals, vol. 44, no. 1-2, pp. 29–61, 1995.

M. Walter, M. Schütze, and A. Rahmel, “Behavior of oxide scales on 12Cr-1Mo steel during thermal cycling,” Oxidation of Metals, vol. 39, no. 5-6, pp. 389–410, 1993.

J. Q. Zhi and W. J. Rui, Handbook for Metal Materials of Thermal Power Station, China Electric Power Press, Beijing, China, 2000.

S. M. Yang and W. Q. Tao, Heat Transfer, Higher Education Press, 2006.

I. G. Wright, A. S. Sabau, and R. B. Dooley, “Development of strain in oxides grown in steam tubes,” Materials Science Forum, vol. 595–598, pp. 387–395, 2008.

N. Noda, R. B. Hetnarski, and Y. Tanigawa, Thermal Stresses, vol. 222–224, Taylor & Francis, New York, NY, USA, 2003.

J. Ahmad, “Technical memorandum of Kapar Power Station Sdn Bhd Malaysia: remaining life assessment of reheater tube,” Tech. Rep., TNB Generation Sdn Bhd, Kuala Lumpur, Malaysia, 2001.

J. Ahmad, “Technical memorandum of kapar power station Sdn Bhd Malaysia: report of reheater tube failure,” Tech. Rep., TNB Generation Sdn Bhd, Kuala Lumpur, Malaysia, 2004.

S. Chandra-Ambhorn, Y. Wouters, L. Antoni, F. Toscan, and A. Galerie, “Adhesion of oxide scales grown on ferritic stainless steels in solid oxide fuel cells temperature and atmosphere conditions,” Journal of Power Sources, vol. 171, no. 2, pp. 688–695, 2007.