40#include "implicit_f.inc"
44 INTEGER ,
INTENT(IN) :: NPT0
45 INTEGER ,
INTENT(IN) :: NSUB
46 my_real ,
DIMENSION(NPT0) ,
INTENT(IN) :: xf,yf
47 my_real ,
DIMENSION((NPT0-1)*NSUB+1) ,
INTENT(OUT) :: xx,yy
51 INTEGER :: I,J,K,NPTS,NSEG
53 my_real ,
DIMENSION(:,:) ,
ALLOCATABLE :: spline_knots
54 my_real ,
DIMENSION(:) ,
ALLOCATABLE :: ctrl_ptx,ctrl_pty
55 my_real ,
DIMENSION(4) :: ptx,pty,knots
63 ALLOCATE (ctrl_ptx(npts))
64 ALLOCATE (ctrl_pty(npts))
65 ALLOCATE (spline_knots(nseg,4))
68 ctrl_ptx(2:npts-1) = xf(1:npt0)
69 ctrl_pty(2:npts-1) = yf(1:npt0)
71 ctrl_ptx(1) = (half*ctrl_ptx(2) - four*ctrl_ptx(3) + ctrl_ptx(4)) * half
72 ctrl_pty(1) = (half*ctrl_pty(2) - four*ctrl_pty(3) + ctrl_pty(4)) * half
74 ctrl_ptx(npts) = (ctrl_ptx(npts-3) - four*ctrl_ptx(npts-2) + five*ctrl_ptx(npts-1)) * half
75 ctrl_pty(npts) = (ctrl_pty(npts-3) - four*ctrl_pty(npts-2) + five*ctrl_pty
80 ptx(2) = ctrl_ptx(i+1)
81 ptx(3) = ctrl_ptx(i+2)
82 ptx(4) = ctrl_ptx(i+3)
84 pty(2) = ctrl_pty(i+1)
85 pty(3) = ctrl_pty(i+2)
86 pty(4) = ctrl_pty(i+3)
91 knots(2) = spline_knots(i,1) + exp(
alpha*log(sqrt(dx**2 + dy**2)))
94 knots(3) = knots(2) + exp(
alpha*log(sqrt(dx**2 + dy**2)))
97 knots(4) = knots(3) + exp(
alpha*log(sqrt(dx**2 + dy**2)))
98 spline_knots(i,1:4) = knots(1:4)
119 DEALLOCATE (spline_knots)
120 DEALLOCATE (ctrl_pty)
121 DEALLOCATE (ctrl_ptx)