00001 subroutine helmholtz_solver_outgoing(sou,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 radial_green_fn_hrethadv
00007 use radial_green_fn_hret_mi_hadv
00008 use interface_copy_to_bsjy_and_sbsjy
00009 use interface_helmholtz_solver_vol_int
00010 use interface_helmholtz_solver_vol_int_hret_mi_hadv
00011 implicit none
00012 real(long), pointer :: pot(:,:,:), sou(:,:,:)
00013 real(long), pointer :: pot_vol_hret_pl_hadv(:,:,:)
00014 real(long), pointer :: pot_vol_hret_mi_hadv(:,:,:)
00015
00016 call alloc_array3d(pot_vol_hret_pl_hadv,0,nrg,0,ntg,0,npg)
00017 call alloc_array3d(pot_vol_hret_mi_hadv,0,nrg,0,ntg,0,npg)
00018
00019 call calc_radial_green_fn_hrethadv(ome)
00020 call copy_to_bsjy_and_sbsjy(bsjy_hrha,sbsjy_hrha,sbsjyp_hrha)
00021 call helmholtz_solver_vol_int(sou,pot_vol_hret_pl_hadv)
00022 call calc_radial_green_fn_hret_mi_hadv(ome)
00023 call copy_to_bsjy_and_sbsjy(bsjy_hrmiha,sbsjy_hrmiha,sbsjyp_hrmiha)
00024 call helmholtz_solver_vol_int_hret_mi_hadv(sou,pot_vol_hret_mi_hadv)
00025
00026
00027 pot(0:nrg,0:ntg,0:npg) = pot_vol_hret_pl_hadv(0:nrg,0:ntg,0:npg) &
00028 & + pot_vol_hret_mi_hadv(0:nrg,0:ntg,0:npg)
00029
00030 deallocate(pot_vol_hret_pl_hadv)
00031 deallocate(pot_vol_hret_mi_hadv)
00032
00033 end subroutine helmholtz_solver_outgoing