inter_d_cspl Subroutine

public subroutine inter_d_cspl(n, r, data, m, x, dint, ddint)

Uses

FIXME : Add documentation

Arguments

Type IntentOptional 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

Contents

Source Code


Source Code

  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