00001 subroutine helmholtz_solver_binary(sou,sou_surf,dsou_surf,pot)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrg, npg, ntg
00004 use def_matter_parameter, only : ome
00005 use make_array_3d
00006 use interface_helmholtz_solver_binary_surf_int
00007 use interface_helmholtz_solver_binary_vol_int
00008 implicit none
00009 real(long), pointer :: pot(:,:,:), sou(:,:,:)
00010 real(long), pointer :: sou_surf(:,:), dsou_surf(:,:)
00011 real(long), pointer :: pot_vol(:,:,:), pot_surf(:,:,:)
00012
00013 call alloc_array3d(pot_vol,0,nrg,0,ntg,0,npg)
00014 call alloc_array3d(pot_surf,0,nrg,0,ntg,0,npg)
00015
00016 call calc_radial_green_fn_hrethadv(ome)
00017 call helmholtz_solver_binary_vol_int(sou,pot_vol)
00018 call helmholtz_solver_binary_surf_int(sou_surf,dsou_surf,pot_surf)
00019 pot(0:nrg,0:ntg,0:npg) = pot_vol(0:nrg,0:ntg,0:npg) &
00020 & + pot_surf(0:nrg,0:ntg,0:npg)
00021
00022 deallocate(pot_vol)
00023 deallocate(pot_surf)
00024
00025 end subroutine helmholtz_solver_binary