00001 subroutine calc_enthalpy_xyzaxis
00002   use grid_parameter, only : nrf, ntf, npf, ntfeq, ntfpolp, npfxzp, npfyzp
00003   use def_matter, only : emd
00004   use def_quantities, only : dhdr_x, dhdr_y, dhdr_z
00005   use make_array_3d
00006   use interface_flgrad_2nd_gridpoint
00007   implicit none
00008   real(8), pointer :: hh(:,:,:)
00009   real(8) :: qq, hhtmp, pre_c, rho_c, epsi_c
00010   real(8) :: dfdx, dfdy, dfdz
00011   integer :: irf, itf, ipf
00012 
00013   call alloc_array3d(hh, 0, nrf, 0, ntf, 0, npf)
00014 
00015   do ipf = 0, npf
00016     do itf = 0, ntf
00017       do irf = 0, nrf
00018         qq = emd(irf,itf,ipf)
00019         call peos_q2hprho(qq, hhtmp, pre_c, rho_c, epsi_c)
00020         hh(irf,itf,ipf) = hhtmp
00021       end do
00022     end do
00023   end do
00024 
00025   call flgrad_2nd_gridpoint(hh,dfdx,dfdy,dfdz,nrf,ntfeq,npfxzp)
00026   dhdr_x = dfdx
00027   call flgrad_2nd_gridpoint(hh,dfdx,dfdy,dfdz,nrf,ntfeq,npfyzp)
00028   dhdr_y = dfdy
00029   call flgrad_2nd_gridpoint(hh,dfdx,dfdy,dfdz,nrf,ntfpolp,0)
00030   dhdr_z = dfdz
00031 
00032   deallocate(hh)
00033 
00034 end subroutine calc_enthalpy_xyzaxis