FIXME : Add documentation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n | |||
real, | intent(in), | dimension(n) | :: | r | ||
real, | intent(in), | dimension(n) | :: | data | ||
integer, | intent(in) | :: | m | |||
real, | intent(in), | dimension(m) | :: | x | ||
real, | intent(out), | dimension(m) | :: | dint | ||
real, | intent(out), | dimension(m) | :: | ddint |
subroutine inter_d_cspl(n,r,data,m,x,dint,ddint)
use mp, only: mp_abort
implicit none
integer, intent(in) :: n, m
real, dimension(n), intent(in) :: r, data
real, dimension(m), intent(in) :: x
real, dimension(m), intent(out) :: dint, ddint
integer, parameter :: max=1000
real, dimension(max) :: ddata, temp
integer :: i,ierr
if (n .gt. max) then
write (*,*) 'error in inter_d_cspl'
write (*,*) 'increase max'
call mp_abort('error in inter_d_cspl : increase max')
endif
ierr = 0
call fitp_curv1(n,r,data,0.0,0.0,3,ddata,temp,1.0,ierr)
if (ierr .ne. 0) then
if (ierr .eq. 1) then
write (*,*) 'FITPACK: curv1 error: n < 2'
elseif (ierr .eq. 2) then
write (*,*) 'FITPACK: curv1 error: x-values not increasing'
else
write (*,*) 'FITPACK: curv1 error'
endif
call mp_abort('problem with FITPACK in inter_d_cspl')
endif
do i=1,m
dint(i) = fitp_curv2 (x(i),n,r,data,ddata,1.0)
ddint(i)= fitp_curvd (x(i),n,r,data,ddata,1.0)
enddo
end subroutine inter_d_cspl