00001 subroutine grdr_gridpoint_type0(fnc,deriv,irg,itg,ipg)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrg
00004 use coordinate_grav_extended, only : rgex, irgex_r, itgex_r, ipgex_r
00005 implicit none
00006 real(long), external :: dfdx_4th
00007 real(long), pointer :: fnc(:,:,:)
00008 real(long), intent(out) :: deriv
00009 real(long) :: rv
00010 real(long) :: r5(5), fr5(5)
00011 integer :: irg, itg, ipg, irgex, itgex, ipgex
00012 integer :: ir0, irg0, ii
00013
00014
00015
00016
00017
00018
00019 ir0 = min0(irg-2,nrg-4)
00020
00021 do ii = 1, 5
00022 irg0 = ir0 + ii - 1
00023 r5(ii) = rgex(irg0)
00024
00025 irgex = irgex_r(irg0)
00026 itgex = itgex_r(itg,irg0)
00027 ipgex = ipgex_r(ipg,irg0)
00028 fr5(ii) = fnc(irgex,itgex,ipgex)
00029 end do
00030
00031
00032
00033 rv = rgex(irg)
00034 deriv = dfdx_4th(r5,fr5,rv)
00035
00036 end subroutine grdr_gridpoint_type0