00001 subroutine interpo_radial1p_grav(grv,val,rv,it,ip)
00002   use phys_constant, only : long
00003   use grid_parameter, only : nrg
00004   use coordinate_grav_r, only : rg
00005   implicit none
00006   real(long), external :: lagint_4th
00007   real(long), pointer :: grv(:,:,:)
00008   real(long), intent(out) :: val
00009   real(long), intent(in)  :: rv
00010   integer, intent(in)     :: it, ip
00011   real(long) :: x(4), f(4)
00012   integer :: irg, ir0
00013 
00014   do irg = 0, nrg-1
00015     if (rv.le.rg(irg)) then 
00016       ir0 = min0(max0(0,irg-2),nrg-3)
00017       exit
00018     end if
00019   end do
00020   x(1:4) = rg(ir0:ir0+3)
00021   f(1:4) = grv(ir0:ir0+3,it,ip)
00022   val = lagint_4th(x,f,rv)
00023 
00024 end subroutine interpo_radial1p_grav