00001 function d2fdx2_2nd(xg,fnc,rv)
00002 implicit none
00003 real(8) :: xg(1:4),fnc(1:4), rv, d2fdx2_2nd
00004 real(8) :: dr01, dr02, dr03, dr12, dr13,
00005 dr23, dr10, dr20, dr21, dr30, dr31, dr32, &
00006 wer0, wer1, wer2, wer3, &
00007 rrv0, rrv1, rrv2, rrv3
00008 integer :: ir0, ir1, ir2, ir3
00009
00010 ir0 = 1
00011 ir1 = 2
00012 ir2 = 3
00013 ir3 = 4
00014 dr01 = xg(ir0) - xg(ir1)
00015 dr02 = xg(ir0) - xg(ir2)
00016 dr03 = xg(ir0) - xg(ir3)
00017 dr12 = xg(ir1) - xg(ir2)
00018 dr13 = xg(ir1) - xg(ir3)
00019 dr23 = xg(ir2) - xg(ir3)
00020 dr10 = - dr01
00021 dr20 = - dr02
00022 dr21 = - dr12
00023 dr30 = - dr03
00024 dr31 = - dr13
00025 dr32 = - dr23
00026 rrv0 = rv - xg(ir0)
00027 rrv1 = rv - xg(ir1)
00028 rrv2 = rv - xg(ir2)
00029 rrv3 = rv - xg(ir3)
00030 wer0 = 2.0d0*(rrv2*rrv3 + rrv1*rrv3 + rrv1*rrv2) &
00031 & /(dr01*dr02*dr03)
00032 wer1 = 2.0d0*(rrv2*rrv3 + rrv0*rrv3 + rrv0*rrv2) &
00033 & /(dr10*dr12*dr13)
00034 wer2 = 2.0d0*(rrv1*rrv3 + rrv0*rrv3 + rrv0*rrv1) &
00035 & /(dr20*dr21*dr23)
00036 wer3 = 2.0d0*(rrv1*rrv2 + rrv0*rrv2 + rrv0*rrv1) &
00037 & /(dr30*dr31*dr32)
00038
00039 d2fdx2_2nd = wer0*fnc(ir0) + wer1*fnc(ir1) &
00040 & + wer2*fnc(ir2) + wer3*fnc(ir3)
00041
00042 end function d2fdx2_2nd