V3FIT
splints.f
1  FUNCTION splints (x)
2  USE vspline
3  USE vmec_input, ONLY: isnodes
4  IMPLICIT NONE
5 C-----------------------------------------------
6 C D u m m y A r g u m e n t s
7 C-----------------------------------------------
8  REAL(rprec) x
9 C-----------------------------------------------
10 C L o c a l P a r a m e t e r s
11 C-----------------------------------------------
12  REAL(rprec), PARAMETER :: c1o6 = 1._dp/6._dp
13 C-----------------------------------------------
14 C L o c a l V a r i a b l e s
15 C-----------------------------------------------
16  INTEGER :: klo, khi, k
17  REAL(rprec) :: h, a, a2, b, b2, h2, y26lo, y26hi, yx, splints
18 C-----------------------------------------------
19 
20  klo = 1
21  khi = isnodes
22 
23  1 CONTINUE
24  IF (khi - klo .gt. 1) THEN
25  k = (khi + klo)/2
26  IF (sknots(k) .gt. x) THEN
27  khi = k
28  ELSE
29  klo = k
30  ENDIF
31  GOTO 1
32  ENDIF
33 
34  h = sknots(khi) - sknots(klo)
35  a = sknots(khi) - x
36  b = x - sknots(klo)
37  h2 = h*h
38  a2 = a*a
39  b2 = b*b
40  y26lo = c1o6*y2stark(klo)
41  y26hi = c1o6*y2stark(khi)
42  yx = (a*(ystark(klo)+(a2-h2)*y26lo)+b*(ystark(khi)+(b2-h2)*y26hi))
43  1 /h
44  splints = yx
45 
46  END FUNCTION splints