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