59 lines
1.8 KiB
FortranFixed
59 lines
1.8 KiB
FortranFixed
|
|
||
|
subroutine inter_motion(r_time,r_xyz,i_npts,r_t,r_xyzint)
|
||
|
|
||
|
real*8 r_time(*),r_xyz(3,*),r_t,r_xyzint(3)
|
||
|
real*8 r_temp(3),r_tt(3),r_dy
|
||
|
integer i_npts,i,j,i_ind,i_use(3),i_order
|
||
|
|
||
|
i_order = 2+1
|
||
|
call hunt(r_time,i_npts,r_t,i_ind)
|
||
|
|
||
|
if(abs(r_t - r_time(i_ind)) .le. abs(r_t - r_time(i_ind+1)) .and.
|
||
|
+ i_ind+1 .le. i_npts .and. i_ind-1 .ge. 1)then
|
||
|
r_tt(1) = r_time(i_ind-1)
|
||
|
r_tt(2) = r_time(i_ind)
|
||
|
r_tt(3) = r_time(i_ind+1)
|
||
|
i_use(1) = i_ind-1
|
||
|
i_use(2) = i_ind
|
||
|
i_use(3) = i_ind+1
|
||
|
elseif(abs(r_t - r_time(i_ind)) .le. abs(r_t - r_time(i_ind+1)) .and.
|
||
|
+ i_ind+2 .le. i_npts .and. i_ind-1 .le. 0)then
|
||
|
r_tt(1) = r_time(i_ind)
|
||
|
r_tt(2) = r_time(i_ind+1)
|
||
|
r_tt(3) = r_time(i_ind+2)
|
||
|
i_use(1) = i_ind
|
||
|
i_use(2) = i_ind+1
|
||
|
i_use(3) = i_ind+2
|
||
|
elseif(abs(r_t - r_time(i_ind)) .gt. abs(r_t - r_time(i_ind+1)) .and.
|
||
|
+ i_ind+2 .le. i_npts)then
|
||
|
r_tt(1) = r_time(i_ind)
|
||
|
r_tt(2) = r_time(i_ind+1)
|
||
|
r_tt(3) = r_time(i_ind+2)
|
||
|
i_use(1) = i_ind
|
||
|
i_use(2) = i_ind+1
|
||
|
i_use(3) = i_ind+2
|
||
|
elseif(abs(r_t - r_time(i_ind)) .gt. abs(r_t - r_time(i_ind+1)) .and.
|
||
|
+ i_ind+1 .le. i_npts .and. i_ind-1 .ge. 1)then
|
||
|
r_tt(1) = r_time(i_ind-1)
|
||
|
r_tt(2) = r_time(i_ind)
|
||
|
r_tt(3) = r_time(i_ind+1)
|
||
|
i_use(1) = i_ind-1
|
||
|
i_use(2) = i_ind
|
||
|
i_use(3) = i_ind+1
|
||
|
else
|
||
|
write(6,*) 'Problem with motion data...'
|
||
|
stop
|
||
|
endif
|
||
|
|
||
|
do i=1,3
|
||
|
do j=1,3
|
||
|
r_temp(j) = r_xyz(i,i_use(j))
|
||
|
enddo
|
||
|
call polint(r_tt,r_temp,i_order,r_t,r_xyzint(i),r_dy)
|
||
|
enddo
|
||
|
|
||
|
end
|
||
|
|
||
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
|
||
|
|