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