00001 function dfdx_2nd(x,f,v)
00002 implicit none
00003 real(8) :: dfdx_2nd
00004 real(8) :: x(3),f(3), v
00005 real(8) :: dx01, dx02, dx12
00006 real(8) :: dx10, dx20, dx21
00007 real(8) :: xv0, xv1, xv2
00008 real(8) :: wex0, wex1, wex2
00009 integer :: ir0, ir1, ir2
00010
00011 ir0 = 1
00012 ir1 = 2
00013 ir2 = 3
00014 dx01 = x(ir0) - x(ir1)
00015 dx02 = x(ir0) - x(ir2)
00016 dx12 = x(ir1) - x(ir2)
00017 dx10 = - dx01
00018 dx20 = - dx02
00019 dx21 = - dx12
00020 xv0 = v - x(ir0)
00021 xv1 = v - x(ir1)
00022 xv2 = v - x(ir2)
00023
00024 wex0 = (xv2 + xv1)/(dx01*dx02)
00025 wex1 = (xv2 + xv0)/(dx10*dx12)
00026 wex2 = (xv1 + xv0)/(dx20*dx21)
00027 dfdx_2nd = wex0*f(ir0) + wex1*f(ir1) + wex2*f(ir2)
00028
00029 end function dfdx_2nd