00001 subroutine sourceterm_exsurf_eqm_binary(fnc,sou_ex,dsou_ex)
00002   use phys_constant, only : long
00003   use grid_parameter, only : ntg, npg, npgxzm
00004   use grid_parameter_binary_excision, only : ex_nrg
00005   use make_array_2d
00006   use interface_interpo_linear_type0_2Dsurf
00007   use interface_grdr_gridpoint_type0
00008 
00009   implicit none
00010   real(long), pointer :: fnc(:,:,:), sou_ex(:,:), dsou_ex(:,:)
00011   real(long), pointer :: fnc_exsurf(:,:), dfnc_exsurf(:,:)
00012   real(long) :: deriv, val
00013   integer :: itg, ipg, itgex, ipgex
00014 
00015   call alloc_array2d(fnc_exsurf, 0, ntg, 0, npg)
00016   call alloc_array2d(dfnc_exsurf, 0, ntg, 0, npg)
00017 
00018   do ipg = 0, npg
00019     do itg = 0, ntg
00020       fnc_exsurf(itg,ipg) = fnc(ex_nrg,itg,ipg)
00021       call grdr_gridpoint_type0(fnc,deriv,ex_nrg,itg,ipg)
00022       dfnc_exsurf(itg,ipg) = deriv
00023     end do
00024   end do
00025 
00026   do ipg = 1, npg
00027     do itg = 1, ntg
00028 
00029       itgex = itg
00030       ipgex = ipg + npgxzm  - ((ipg+npgxzm)/(npg+1))*npg
00031 
00032 
00033 
00034 
00035 
00036 
00037       call interpo_linear_type0_2Dsurf(val,fnc_exsurf,itg,ipg)
00038       sou_ex(itgex,ipgex) = val
00039       call interpo_linear_type0_2Dsurf(val,dfnc_exsurf,itg,ipg)
00040       dsou_ex(itgex,ipgex) = val
00041     end do
00042   end do
00043   deallocate(fnc_exsurf)
00044   deallocate(dfnc_exsurf)
00045 
00046 end subroutine sourceterm_exsurf_eqm_binary