Abstract:
This invention is a new inspection technique using ultrasonic Lamb waves to measure reduction of pipe wall thickness due to localized corrosion at pipe supports. The technique uses two transducers in a pitch-catch mode to send and receive a selected Lamb wave. The wave travels along the pipe wall in the circumferential direction. The reduction of the pipe wall thickness at the pipe support changes the time-of-flight between the two transducers. By comparing time-of-flight data measured from the pipe support area and from areas adjacent to the pipe support, one can quantify the change of time-of-flight due to the pipe corrosion wall loss at the support. A mathematical model, a sizing algorithm and a PC program have been developed to quantitatively relate in time-of-flight to the minimum remaining wall thickness. With them, one can quantify the minimum remaining pipe wall thickness at a pipe support by simply measuring the change in the time-of-flight.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention is directed to methods and apparatus for ultrasonically measuring pipe wall thickness at pipe supports without lifting the pipe. 
     2. Description of the Prior Art 
     Prior to this invention, qualitative inspection using Lamb waves to detect pipe corrosion wall loss at pipe supports was available. Quality NDT, Inc., having an address at P.O. Box 1145, Breaux Bridge, La. 70517, offered such an inspection service. 
     There was, however, no sizing technique to allow quantitative measurements of pipe wall thickness at pipe supports. 
     SUMMARY OF THE INVENTION 
     This invention is a new inspection technique using ultrasonic Lamb waves to measure reduction of pipe wall thickness due to localized corrosion at pipe supports. The technique uses two transducers in a pitch-catch mode to send and receive a selected Lamb wave. The wave travels along the pipe wall in the circumferential direction. The reduction of the pipe wall thickness at the pipe support changes the time-of-flight between the two transducers. By comparing time-of-flight data measured from the pipe support area and from an area adjacent to the pipe support, one can quantify the change of time-of-flight due to the pipe corrosion wall loss at the support. A mathematical model, a sizing algorithm and a PC program have been developed to quantitatively relate the change in time-of-flight to the minimum remaining wall thickness. With them, one can quantify the minimum remaining pipe wall thickness at a pipe support by simply measuring the change in the time-of-flight. 
     This is the only ultrasonic technique to the inventor&#39;s knowledge that can quantify the minimum pipe wall thickness at the pipe support without physically lifting the pipe for inspection. The quantification is absolute, i.e., it is not based on comparison with calibration defects. There is no need for calibration standards. 
     The principles of the technique can be used to quantify various piping defects, e.g., pits, general corrosion, corrosion at pipe supports, etc. The sizing algorithm for different defects is the same, although the mathematical model and the equations relating the defect depth to time-of-flight may need to be modified to take into account the different shapes of different defects. With modifications, this invention can be used as a general piping inspection tool. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a schematic showing a method for Lamb wave inspection of a pipe at a pipe support. 
     FIG. 2 shows the phase velocity and group velocity dispersion curves of S 0  mode Lamb wave in steel. 
     FIG. 3 shows progression of corrosion on a pipe at a pipe support. 
     FIG. 4 shows the model for quantification of the minimum remaining wall thickness of a pipe at a pipe support. 
     FIG. 5 shows an example of calculated time shift as a function of the minimum remaining wall thickness in percentage of the nominal wall thickness. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     As shown in FIG. 1, a pitch-catch setup is used to measure the time-of-flight of Lamb wave propagation in the circumferential direction. A pipe 10, for which it is desired to determine the minimum wall thickness, h min , is supported by a pipe support 11. A Lamb wave 12 is &#34;pitched&#34; by transmitter 13 and &#34;caught&#34; by receiver 14. The change of material thickness affects the velocity of the wave propagation and thus the time-of-flight. By choosing a particular wave mode at a particular operating point, one can calculate the theoretical change of time-of-flight for the wave to propagate from transmitter 13 to receiver 14 due to the change of thickness. If the relationship between the thickness and the velocity is monotonic, one can uniquely determine the change of thickness from the change of time-of-flight. For example, one can choose the S 0  mode (i.e. the lowest order symmetric mode) Lamb wave at an operating frequency corresponding to the point where the S 0  mode group velocity is at its minimum. Keeping the same operating frequency, one then has a monotonic increase of the group velocity with the decrease of the material thickness. This means that any thickness reduction in the sound path will cause an increase of the Lamb wave 12 velocity and thus a decrease of the transit time for the Lamb wave 12 to propagate from the pitching transducer 13 to the catching transducer 14. 
     As an example, FIG. 2 shows the phase velocity dispersion curves and group velocity of the S o . mode Lamb wave in a steel plate in vacuum having a longitudinal wave velocity equal to 5.96 km/sec, a shear wave velocity equal to 3.26 km/sec, and a density equal to 7.93 g/cm 3 . The minimum of the group velocity occurs at f·h=2.56 MHz·mm, where f is the Lamb wave frequency and h is the material thickness. If one uses the S 0  mode at the frequency giving the f·h value equal to 2.56 MHz·mm for the nominal thickness, then any reduction from the nominal thickness (e.g., due to localized corrosion at pipe support) will cause a decrease in the f·h value. For example, for inspecting a pipe whose thickness is 0.375&#34; without wall loss due to pipe-support corrosion, one can use a frequency equal to 2.56/(0.375·25.4)=0.27 MHz as the operating frequency. This gives the group velocity of the S o  mode Lamb wave equal to 1.77 km/sec when there is no wall loss, i.e., it is 100% of the nominal thickness. Should there be any wall loss, the &#34;frequency-times-thickness&#34; value will decrease since the frequency is kept at a constant. As shown in FIG. 2, such a decrease of the f·h value will lead to an increase of the group velocity and therefore a shorter time-of-flight between the transmitting 13 and receiving 14 transducers. 
     There are two common methods to excite a Lamb wave at a particular point of interest. One is to use an electromagnetic acoustic transducer (EMAT) and the other is to use a piezoelectric transducer (PZT) with a wedge. With EMAT, one needs to choose a wire spacing that can generate a Lamb wave whose wavelength can satisfy the requirement for the phase velocity of the mode of interest at the operating point, as discussed in the following example. Using FIG. 2, S 0  mode in the steel at f·h=2.56 MHz·mm has a phase velocity equal to 4.0 km/sec. To operate on the S 0  mode at f·h=2.56 MHz·mm, one needs to use an EMAT wire spacing that gives the S 0  phase velocity equal to 4.0 km/sec at f·h=2.56 MHz·mm. For meander coils, one can use λ=2d, where λ is the wavelength and d is the wire spacing. Since Vp=f·λ, we have 
     
         V.sub.p =2·f·d                           (1) 
    
     For a given nominal thickness, h is known. One can determine f to satisfy f·h=2.56 MHz·mm. Using the f thus determined, one can then determine the wire spacing needed for the inspection. For example, to inspect a 0.375&#34; thick pipe, one should use frequency f=2.56/(0.375·25.4)=0.27 MHz. The wire spacing should be 4.0/(2·0.27)=7.4 mm (0.29&#34;). If one does not have such a wire spacing, one can adjust the frequency f so that the operating point is close to the above and the signal is at its highest amplitude level. 
     If one uses a piezoelectric transducer with a wedge, the phase velocity is determined as 
     
         V.sub.P =V.sub.i ·sin (Θ.sub.i)             (2) 
    
     where V i  is the velocity of the incident wave in the wedge material and Θ i  is the incident angle. For a given wedge material, V i  is fixed. One can adjust Θ i  to get the appropriate V P  value, as in the case for EMAT. That is, the only difference between EMAT and PZT is how we generate and determine the phase velocity. For EMAT we use Equation (1), and for PZT we use Equation (2). The rest of the calculations are the same. 
     Once a wave mode and an operating point are selected, one can quantify the minimum remaining wall thickness at a pipe support as follows: 
     Assume that the corrosion at the pipe support proceeds in a &#34;tangential cut&#34; fashion, as shown in FIG. 3. Mathematically, one can derive the following equations by using FIG. 4. As shown in FIG. 4, R is the outside radius of the pipe, i.e., R=D/2, where D is the outside diameter of the pipe; h min  is the minimum remaining wall thickness; h is the nominal wall thickness; Θ max  is the maximum angle of corrosion measured from the center of the corroded area; d denotes the wall thickness within the corroded area at angle Θ. Express the minimum remaining wall thickness as a fraction of the nominal wall thickness by using a new variable x, where ##EQU1## 
     From simple trigonometry, it is not difficult to find that the maximum angle of corrosion, Θ max , can be expressed as a function of x, h, and R: ##EQU2## 
     Similarly, one can find that the wall thickness d at angle Θ can be written explicitly as a function of Θ, x, h, and R: ##EQU3## 
     Assume that the velocity of the Lamb wave at wall thickness d is V g  (f·d), where V g  is the group velocity of the Lamb wave as a function of the product of frequency and thickness and f is the Lamb wave frequency. Similarly, the velocity of the Lamb wave at nominal wall thickness h is V g  (f·h). The time for the Lamb wave to propagate through the corroded area can be written as: ##EQU4## while the time for the Lamb wave to propagate through an equivalent area without the pipe-support corrosion can be written as: ##EQU5## Note: t o  is measured in the same manner as t except that the measurement is made at a point next to the pipe support. 
     The time shift due to localized corrosion at the pipe support is: 
     
         Δt=t-t.sub.o                                         (8) 
    
     That is ##EQU6## 
     Combining Equations (4), (5) and (9), one can find that the time shift is a function of x, h, R, f. Except for x, all the parameters are easily measurable in the field and can be used as input data for calculation of Lamb wave time shift with the equations. These other parameters can be measured as follows. 
     The nominal thickness, h, can be measured with an ultrasonic thickness gauge. The best mode of operation is to have the thickness measured from the bottom of the pipe in an area right next to the pipe support. If the bottom can not be reached, measure the thickness from as close to the pipe support as possible. 
     The outside radius, R, can be calculated from the nominal outside diameter, D. R=D/2. If the nominal outside diameter is not known, calculate R by using R=C/(2·π), where C is the external circumference of the pipe, which can be measured with a tape measure. 
     The frequency, f, is the Lamb wave frequency used in the inspection. Preferably, this frequency is set at the value giving the f·h corresponding to the minimum group velocity of the S 0  mode Lamb wave, as discussed previously. 
     Using the h, R, and f values determined as above, one can then calculate Δt as a function of x. The calculated Δt vs x curve can then be used to determine the minimum remaining wall thickness from the measured time shift. For example, FIG. 5 shows the time shift Δt as a function of the remaining minimum wall thickness in percentage of the nominal wall thickness by using Equations (4), (5), and (9) with h=0.437&#34;, R=7&#34;, and f=225 kHz (i.e. 0.225 MHz). This calculated curve can be used to determine the minimum remaining wall thickness of a pipe that has 0.437&#34; nominal wall thickness and 14&#34; outside diameter, with the S 0  mode Lamb wave operated at 225 kHz. As shown in the figure, for each time shift, Δt, there is a corresponding minimum remaining wall thickness. 
     In the best mode of operation, one should use the frequency f that gives the f·h value corresponding to the minimum group velocity of the S 0  Lamb wave. By choosing such a frequency, the above correlation between the time shift, Δt, and the minimum remaining wall thickness as a fraction of the nominal wall thickness, x, is always one-on-one. That is, for each time shift value, there is only one possible minimum remaining wall thickness value. 
     If for any reason one cannot use the frequency in the best mode of operation, it is possible to have more than one minimum remaining wall thickness values corresponding to one time shift value. In such a case, one should not use the calculated curve in the time shift range where there is more than one minimum remaining wall thickness value. The part of the curve that has a one-on-one correspondence is still valid, and can be used to determine the minimum remaining wall thickness from measured time shift. 
     A FORTRAN program for calculations per Equations (3), (4), (5) and (9) is included as Appendix A. This program calculates time shift as a function of the minimum remaining wall thickness. The program is for S o  mode Lamb wave inspection of pipes at pipe supports. V g  as a function of f·h for the S o  mode in a steel plate is included. 
     Ultrasonic System Requirements 
     The combination of EMAT and Automated Ultrasonic Testing (AUT) is preferred for the above inspection. EMAT is preferred because it does not require extensive surface preparation and it can work through a thin coating. Such capabilities make scanning along pipe for a long distance possible. AUT is preferred because scanning along a pipe is desired. For Lamb wave measurements, AUT system should be able to operate in the frequency range between 100 kHz and 500 kHz. In addition, the system should allow measurements of time shift with an accuracy of at least ±0.1 μsec. 
     The system should be able to handle pitch-catch measurements, as shown in FIG. 1. It is also desirable to have pulse-echo capability, so that one can use pulse-echo techniques to detect such defects as pits and cracks which is not considered in the above discussion. 
     
                                           APPENDIX A__________________________________________________________________________c   Filename: Pipe4.for  c Function: Time shift vs. min. remaining wall thickhess of pipec        at pipe support  c Last Revision: July 21, 1997  c Programmer: David Wang  c----- Variables-------------------------------------------------------   real*8 pd, pr, ph, pf, pfl, pfl, pws, px   real*8 tn, tps, dt, dtl, dti   real*8 a, b, c, root   characteer*31 name.sub.-- pd, name.sub.-- ph, name.sub.-- pf, name.sub.    -- pws, name.sub.-- pfl   character*31 name.sub.-- pfi, name.sub.-- phase, name.sub.-- root character*54 Col.sub.-- A, Col.sub.-- B, Col.sub.-- C, Col.sub.--    D, Col.sub.-- E   character*12 name.sub.-- out   common /emat/ thcknss, wire.sub.-- sp   external s0.sub.-- err, fndrt, s0.sub.-- phase, s0.sub.-- groupc----- Headers for output data columns-------------------------------    --   name.sub.-- pd= `Pipe outside diameter (inch): `   name.sub.-- ph= `Norminal wall thickness (inch): `   name.sub.-- pf= `EMAT frequency (KHz): `   name.sub.-- pws= `EMAT wire spacing (inch): `   name.sub.-- pfl= `Nearest mode frequency (KHz): `   name.sub.-- pfi= `Intersect frequency (KHz): `   name.sub.-- root= `Intersect F * H (MHZ*rnm): `   name.sub.-- phase= `Intersect phase velocity (km/s) : `   col.sub.-- A= `Column A: Time Shift (usec), based on EMAT freq.` col.sub.-- B= `Column B: Time Shift (usec), based on Lamb wave    freq.`   col.sub.-- C= `Column C: Time Shift (usec), based on intersect freq.` col.sub.-- D= `Column D: Minimum Remaining Wall Thickness (in)` col.sub.-- E= `Column E: Minimum Remaining Wall Thickness (%)`c----- Input data----------------------------------------------------    --   print *, `Enter pipe outside diameter (inch).`   read *, pd   pr = pd*25.4/2   print *, `Enter pipe nominal wall thickness (inch).`   read *, thcknss   ph = thcknss*25.4   print *, `Enter operating frequency (kHz).`   read *, pf   pf = pf/1000   print *, `Enter wire spacing (inch).`   read *, wire.sub.-- sp   pws = wire.sub.-- sp*25.4  c----- Output filename-------------------------------------------------   print *, `Enter output filename.`   read (*, 50) name.sub.-- out   format(A)   open (10, file = name.sub.-- out)  c----- Find &#34;true&#34; operating point-------------------------------------   call TrueOp (ph, pf, pws, pfl)   a = 0.1   b = 14.0   c = 0.00001   root = fndrt (s0.sub.-- err, a, b, c)   pfi = root/ph  c----- Header for output file------------------------------------------   write (10, 70) name.sub.-- pd,pd   format (A, 1x, F8.3)   write (10, 70) name.sub.-- ph,ph/25.4   write (10, 70) name.sub.-- pws,pws/25.4   write (10, 75) name.sub.-- pf,pf*1000   write (10, 75) name.sub.-- pfl,pfl*1000   write (10, 75) name.sub.-- pfi,pfi*1000   write (10, 70) name root, root   format (A, F7.1)   write (10, 80) name.sub.-- phase,s0.sub.-- phase(root)   format (A, 1x, F8.3, /)   write (10, 85) col.sub.-- A, Col.sub.-- B, col.sub.-- C, col.sub.-- D,    Col.sub.-- E   format (5(A, /))   write (10, *) ` A `,` B `,` C `,` D `,   &amp;      ` E `  c----- Calculate time shift (delta t) due to corrosion-----------------  c----- Output calculated results---------------------------------------   do 1000 px = 1.0, 0.0, -0.01 call TimeSupp(pr, ph, pf, px, tps) call TimeRef(pr, ph, pf, px, tn) dt = tps-tn call TimeSupp(pr, ph, pfl, px, tps) call TimeRef(pr, ph, pfl, px, tn) dtl = tps-tn call TimeSupp(pr, ph, pfi, px, tps) call TimeRef(pr, ph, pfi, px, tn) dti = tps-tn write (10, 100) dt, dtl, dti, px*ph/25.4, px*100  100    format (F9.3, F10.3, F10.3, F8.3, F10.3) write (*, 100) dt, dtl, dti, px*ph/25.4, px*100  1000 continue   close (10)   stop   endccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c                              .sup.  c c  Subroutines                        .sup. c c                              .sup.  c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*****    Find &#34;true&#34; operating point************************************** subroutine TrueOp (ph, pf, pws, pfl)   real*8 ph, pf, pws, pfl   real*8 pfh, fh, delta, del.sub.-- min, fh.sub.-- opl, fh.sub.-- op2 open (20, file = `check.sub.-- it.txt`)   open (30, file = `modify.txt`)   pfh = pf*ph   del.sub.-- min = 100000.00   do 1000, fh = 0.001, 8, 0.001delta = (fh-pfh)**2 + (S0.sub.-- phase(fh) - 2*pws*pf)**2if (delta .lt. del.sub.-- min) then del min = delta fh.sub.-- opl = fhend ifif (delta .le. del.sub.-- min) then del.sub.-- min = delta fh.sub.-- op2 = fhend ifwrite(20, 100) fh, S0.sub.-- phase(fh), S0.sub.-- group(fh)  100   format(3F12.3)  1000 continue   write(20, 150) pfh, 2*pws*pf, S0.sub.-- group(pfh)  150 format(/, 3F12.3)   write(20, 100) fh.sub.-- op1, s0.sub.-- phase(fh.sub.-- opl), s0.sub.--group(fh.sub.-- op1)   write(20, 100) fh.sub.-- op2, s0.sub.-- phase(fh.sub.-- op2), s0.sub.--group(fh.sub.-- op2)   pf1 = (fh.sub.-- op1 + fh.sub.-- op2)/2/ph   write (30, 200) pfh, 2*pws*pf, fh.sub.-- op1, s0.sub.-- phase(fh.sub.--op1),   &amp;       fh.sub.-- op2, s0.sub.-- phase(fh.sub.-- op2)  200 format(6F10.4)   close(20)   close (30)   end  c***** Calculate time in pipe at pipe support**************************   subroutine TimeSupp(r, h, f, x, t.sub.-- ps)   real*8 r, h, f, x, t.sub.-- ps   real*8 thetamax, dtheta, theta, z, vz   t.sub.-- ps = 0.0   thetamax = radmax(x, h, r)   dtheta = 0.001   do 100 theta = 0.0, thetamax, dtheta z= (f*r - f*h*(1 - x) )/cos(theta) - f*r + f*h vz = S0.sub.-- group(z) t.sub.-- ps = t.sub.-- ps + ((r - (1 - x)*h)/cos(theta) + r -    h)*dtheta/vz  100 continue   end  c***** Calculate time in &#34;clean&#34; reference*****************************   subroutine TimeRef(r, h, f, x, t.sub.-- ref)   real*8 r, h, f, x, t.sub.-- ref   t.sub.-- ref = ((2*r - h)/S0.sub.-- group(f*h)) * radmax(x, h, r) endcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c                              .sup. c c  Functions                         c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*****    Calculate the maximum &#34;corrosion angle&#34; in radian*************** real function radmax(x, h, r)   real*8 x, h, r   radmax = acos (1 - (1 - x)*h/r)   end  c Filename: s0.sub.-- err.for  c This program calculates the difference between S0 mode phase  c velocity and the phase velocity that EMAT can generate, i.e.  c (2*wire sp/thcknss)* x, where wire.sub.-- sp, thcknss, and fh denotec EMAT wire spacing, material thickness and frequency*thickness,c respectively, as a function of x.   real  function s0.sub.-- err(x)   real *8  x   common  /emat/ thcknss, wire.sub.-- sp   external S0.sub.-- phase   s0.sub.-- err = S0.sub.-- phase(x) - (2*wire.sub.-- sp/thcknss) * x end   real function fndrt(f, x1, x2, err)   real*8 x1, x2, err, x   external f   if (abs(f(x1)) .1t. err) then    .sup. fndrt = x1   else    .sup. if (f(x1)*f(x2) .1t. 0) then do while (abs(0.5*(f(x1) + f(x2))) .gt. err)   x= 0.5* (x1 + x2)   if (f(x1)*f(x) .1t. 0) then  .sup.  x2 = x   else .sup.   x1 = x  end if end do fndrt = 0.5*(x1 + x2)    .sup. else fndrt = 99    .sup. end if   end if   end  c Filename: S0.for  c This file contains two main functions:  c   .sup. S0.sub.-- phase(x)  c   .sup. S0.sub.-- group(x)  c and their supporting functions for calculation of the phase andc group velocities of S.sub.-- 0 mode Lamb wave.  c  c Programmer: W. D. Wang  c Date: July 18, 1997  c***** Determine phase velocity S0.sub.-- phase (x), where x = F*H in    MHz*mm*****   real function S0.sub.-- phase(x)   real*8 x   if (x .le. 2.07) S0.sub.-- phase = ph.sub.-- a(x)   if (x .gt. 2.07 .and. x .le. 2.6) S0.sub.-- phase = (ph.sub.-- a(x) +    ph.sub.-- b(x))/2   if (x .gt. 2.6 .and. x .le. 2.9) S0.sub.-- phase = ph.sub.-- b(x) if (x .gt. 2.9) S0.sub.-- phase = ph.sub.-- c(x)   end  c***** Equation ph.sub.-- A (for x from 0 to 2.6)***********************    ******   real function ph.sub.-- a(x)   real*8 x, a, b, c, d, e, f, g, h   a = 5.4313019   b = -0.99494947   c = -5.4066428   d = 0.33521875   e = 1.7832773   f = -0.040605348   g = -0.19194189   h = 0.0010635727   ph.sub.-- a = (a + c*x + e*x**2 + g*x**3)/(1 + b*x + d*x**2 + f*x**3 +    h*x**4)   end  c***** Equation ph.sub.-- B (for x from 2.07 to 2.9)********************    ******   real function ph.sub.-- b(x)   real*8 x, a, b, c, d, e, f   a = 9.017055   b = -0.33377479   c = -7.1942833   d = -0.2157153   e = 1.4946102   f = 0.081479093   ph.sub.-- b = (a + c*x + e*x**2)/(1 + b*x + d*x**2 + f*x**3)   end  c***** Equation ph.sub.-- C (for x from 2.87 to 14)*********************    *******   real function ph.sub.-- c(x)   real*8 x, a, b, c, d, e, f, g, h, i, j, k   a = -26.764432   b = 3.1731512   c = 186.55974   d = -0.22090979   e = -779.18481   f = 0.0094918666   g = 2088.2639   h = -0.00022308578   i = -3230.5396   j = 2.1020006e-6   k = 2277.2288   ph.sub.-- c = a + b*x + c/x + d*x**2 + e/x**2 + f*x**3 + g/x**3 +    h*x**4 + i/x**4   &amp;  + j*x**5 + k/x**5   end  c***** Determine group velocity S0.sub.-- group(x), where x = F*H in    MHz*mm****   real function S0.sub.-- group(x)   real*8 x   if (x .lt. 2.07) S0.sub.-- group = gr.sub.-- a(x)   if (x .ge. 2.07 .and. x .lt. 2.6) s0.sub.-- group = (gr.sub.-- a(x) +    gr.sub.-- b(x))/2   if (x .ge. 2.6 .and. x .lt. 2.7) s0.sub.-- group = gr.sub.-- b(x) if (x .ge. 2.7) S0.sub.-- group = gr.sub.-- c(x)   end  c***** Equation gr.sub.-- A (for x from 0 to 2.6)***********************    ******   real function gr.sub.-- a(x)   real*8 x, a, b, c, d, e, f, g, h, i   a = 5.4312321   b = -0.7684549   c = -4.1761241   d = 0.029047536   e = 0.021066467   f = 0.094991153   g = 0.6079103   h = -0.018744089   i = -0.11773569   gr.sub.-- a = (a + c*x + e*x**2 + g*x**3 + i*x**4)/(1 + b*x + d*x**2 +    f*x**3 + h*x**4)   end  c***** Equation gr.sub.-- B (for x from 2.07 to 2.9)********************    ******   real function gr.sub.-- b(x)   real*8 x, a, b, c, d, e, f, g, h, i   a = 57873.754   b = -152136.76   c = 163952.78   d = -90146.096   e = 23913.676   f = -754.00387   g = -1238.1872   h = 299.54023   i = -22.76067   gr.sub.-- b = a + b*x + c*x**2 + d*x**3 + e*x**4 + f*x**5 + g*x**6 +    h*x**7 + i*x**8   end  c***** Equation gr.sub.-- C (for x from 2.87 to 14)*********************    ******   real function gr.sub.-- c(x)   real*8 x, a, b, c, d, e, f, g, h, i, j , k   a = -16184.396   b = 7773.3871   c = 23182.146   d = -2534.1355   e = -22549.561   f = 536.57118   g = 14262.646   h = -66.619005   i = 5302.6586   j = 3.6827588   k = 880.79807   gr.sub.-- c = a + b*log(x) + c/log(x) + d*(log(x))**2 + e/(log(x))**2 &amp;  + f*(log(x))**3 + g/(log(x))**3 + h*(log(x))**4 + i/(log(x))**4 &amp;  + j*(log(x))**5 + k/(log(x))**5   end__________________________________________________________________________