00001 subroutine grgrad_vec_partial(fnx,fny,fnz,pdfnx,pdfny,pdfnz)
00002   use phys_constant, only : long
00003   use grid_parameter, only : nrg, ntg, npg
00004   use interface_grgrad_midpoint
00005   use make_array_3d
00006   implicit none
00007 
00008   real(long), pointer :: fnx(:,:,:), fny(:,:,:), fnz(:,:,:)
00009   real(long), pointer :: pdfnx(:,:,:,:), pdfny(:,:,:,:), pdfnz(:,:,:,:)
00010   real(long), pointer :: dfdx(:,:,:), dfdy(:,:,:), dfdz(:,:,:)
00011 
00012   call alloc_array3d(dfdx,1,nrg,1,ntg,1,npg)
00013   call alloc_array3d(dfdy,1,nrg,1,ntg,1,npg)
00014   call alloc_array3d(dfdz,1,nrg,1,ntg,1,npg)
00015 
00016   call grgrad_midpoint(fnx,dfdx,dfdy,dfdz)
00017   pdfnx(1:nrg,1:ntg,1:npg,1) = dfdx(1:nrg,1:ntg,1:npg)
00018   pdfnx(1:nrg,1:ntg,1:npg,2) = dfdy(1:nrg,1:ntg,1:npg)
00019   pdfnx(1:nrg,1:ntg,1:npg,3) = dfdz(1:nrg,1:ntg,1:npg)
00020 
00021   call grgrad_midpoint(fny,dfdx,dfdy,dfdz)
00022   pdfny(1:nrg,1:ntg,1:npg,1) = dfdx(1:nrg,1:ntg,1:npg)
00023   pdfny(1:nrg,1:ntg,1:npg,2) = dfdy(1:nrg,1:ntg,1:npg)
00024   pdfny(1:nrg,1:ntg,1:npg,3) = dfdz(1:nrg,1:ntg,1:npg)
00025 
00026   call grgrad_midpoint(fnz,dfdx,dfdy,dfdz)
00027   pdfnz(1:nrg,1:ntg,1:npg,1) = dfdx(1:nrg,1:ntg,1:npg)
00028   pdfnz(1:nrg,1:ntg,1:npg,2) = dfdy(1:nrg,1:ntg,1:npg)
00029   pdfnz(1:nrg,1:ntg,1:npg,3) = dfdz(1:nrg,1:ntg,1:npg)
00030 
00031   deallocate(dfdx)
00032   deallocate(dfdy)
00033   deallocate(dfdz)
00034 end subroutine grgrad_vec_partial