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