00001 subroutine interpo_gr2fl_type0(flv,grv,irf,itf,ipf)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrg
00004 use coordinate_grav_r, only : rg
00005 use coordinate_grav_extended
00006 use def_matter, only : rs
00007 implicit none
00008 real(long), external :: lagint_4th
00009 real(long), pointer :: grv(:,:,:)
00010 real(long), intent(out) :: flv
00011 real(long) :: x(4), f(4)
00012 real(long) :: rrff, small = 1.0d-14
00013 integer :: irg, irf, itf, ipf, ir0, irf0, irg0, itg0, ipg0, ii
00014
00015 rrff = rs(itf,ipf)*rg(irf)
00016 do irg = 0, nrg-1
00017 if (rrff.le.rg(irg)) then
00018 ir0 = min0(irg-2,nrg-3)
00019 exit
00020 end if
00021 end do
00022 do ii = 1, 4
00023 irf0 = ir0 + ii - 1
00024 irg0 = irgex_r(irf0)
00025 itg0 = itgex_r(itf,irf0)
00026 ipg0 = ipgex_r(ipf,irf0)
00027 x(ii) = rgex(irf0)
00028 f(ii) = grv(irg0,itg0,ipg0)
00029 end do
00030 flv = lagint_4th(x,f,rrff)
00031
00032 end subroutine interpo_gr2fl_type0