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