00001 subroutine flgrad(fnc,grad_fnc,order)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrf, ntf, npf
00004 use interface_flgrad_2nd_gridpoint
00005 use interface_flgrad_4nd_gridpoint
00006 implicit none
00007 real(long) pointer :: fnc(:,:,:)
00008 real(long) pointer :: grad_fnc(:,:,:,:)
00009 real(long) :: dfdx, dfdy, dfdz
00010 integer :: irf, itf, ipf, order
00011
00012 if (order.ne.2.or.order.ne.4) stop 'flgrad order wrong'
00013 do ipf = 0, npf
00014 do itf = 0, ntf
00015 do irf = 0, nrf
00016
00017 if (order.eq.2) &
00018 & call flgrad_2nd_gridpoint(fnc,dfdx,dfdy,dfdz,irf,itf,ipf)
00019 if (order.eq.4) &
00020 & call flgrad_4th_gridpoint(fnc,dfdx,dfdy,dfdz,irf,itf,ipf)
00021 grad_fnc(irf,itf,ipf,1) = dfdx
00022 grad_fnc(irf,itf,ipf,2) = dfdy
00023 grad_fnc(irf,itf,ipf,3) = dfdz
00024
00025 end do
00026 end do
00027 end do
00028 end subroutine flgrad