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