00001 subroutine helmholtz_solver(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 radial_green_fn_hrethadv
00006   use make_array_3d
00007   use interface_copy_to_bsjy_and_sbsjy
00008   use interface_helmholtz_solver_vol_int
00009   implicit none
00010   real(long), pointer :: pot(:,:,:), sou(:,:,:)
00011   real(long), pointer :: pot_vol(:,:,:)
00012 
00013   call alloc_array3d(pot_vol,0,nrg,0,ntg,0,npg)
00014   call calc_radial_green_fn_hrethadv(ome)
00015   call copy_to_bsjy_and_sbsjy(bsjy_hrha,sbsjy_hrha,sbsjyp_hrha)
00016 
00017   call helmholtz_solver_vol_int(sou,pot_vol)
00018   pot(0:nrg,0:ntg,0:npg) = &
00019   & pot_vol(0:nrg,0:ntg,0:npg)
00020 
00021   deallocate(pot_vol)
00022 
00023 end subroutine helmholtz_solver