V3FIT
All Classes Namespaces Files Functions Variables Enumerations Macros Pages
splintx.f
1  FUNCTION splintx(x)
2  USE vparams
3  USE vsvd0
4  USE csplinx
5  IMPLICIT NONE
6 C-----------------------------------------------
7 C D u m m y A r g u m e n t s
8 C-----------------------------------------------
9  REAL(rprec) x
10 C-----------------------------------------------
11 C L o c a l P a r a m e t e r s
12 C-----------------------------------------------
13  REAL(rprec), PARAMETER :: c1o6 = 1._dp/6._dp
14 C-----------------------------------------------
15 C L o c a l V a r i a b l e s
16 C-----------------------------------------------
17  INTEGER :: klo, khi, k
18  REAL(rprec) :: h, a, b, h2, a2, b2, y26lo, y26hi, qmidx0,
19  1 splintx
20 C-----------------------------------------------
21 
22  CALL setspline (rmidx, wmidx, qmidx, hmidx, ymidx, y2midx,
23  1 tenmidx, tenmidx(1), nptsx, natur)
24 
25  klo = 1
26  khi = nptsx
27 
28  1 CONTINUE
29  IF (khi - klo .gt. 1) THEN
30  k = (khi + klo)/2
31  IF (rmidx(k) .gt. x) THEN
32  khi = k
33  ELSE
34  klo = k
35  ENDIF
36  GOTO 1
37  ENDIF
38 
39  h = rmidx(khi) - rmidx(klo)
40  IF( h.eq.zero )then
41  splintx = zero
42  RETURN
43  END IF
44  a = rmidx(khi) - x
45  b = x - rmidx(klo)
46  h2 = h*h
47  a2 = a*a
48  b2 = b*b
49  y26lo = c1o6*y2midx(klo)
50  y26hi = c1o6*y2midx(khi)
51  qmidx0 = (a*(ymidx(klo)+(a2-h2)*y26lo)+b*(ymidx(khi)+
52  1 (b2-h2)*y26hi))/h
53  splintx = qmidx0
54 
55  END FUNCTION splintx