00001 subroutine calc_radial_green_fn_hrethadv_insurf(omega)
00002 use coordinate_grav_r, only : rg, hrg
00003 use phys_constant, only : long, pi
00004 use grid_parameter, only : nrg, npg, ntg, nlg
00005 use radial_green_fn_hrethadv
00006 implicit none
00007 integer :: il, im, ir, irr
00008 real(8) :: omega, omegam, omegam_rg, omegam_hrg, omegam_rgin, om2lp1
00009 real(8) :: rtpi2 = 1.253314154753822d0, rgoutsq, small = 1.0d-13
00010 real(8) :: x, xx, xnu, xrj, xrjp, xry, xryp
00011 real(8) :: sbj, sj, sby, sy
00012 real(8) :: sbjp, sjp, sbyp, syp
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 sbsjy_hrha(:,:,:) = 0.0d0
00037 sbsjyp_hrha(:,:,:) = 0.0d0
00038 do il = 0, nlg
00039 do im = 0, il
00040 do ir = 0, nrg
00041 if(im.eq.0)then
00042 sbsjy_hrha(il,im,ir) = - rg(0)**il/rg(irg)**(il+1)
00043 if (il.ne.0) sbsjyp_hrha(il,im,ir) &
00044 & = - dble(il)*rg(0)**(il-1)/rg(irg)**(il+1)
00045 else
00046 omegam = dble(im)*omega
00047 omegam_rgin = omegam*rg(0)
00048 om2lp1 = omegam*(2.d0*dble(il)+1.d0)
00049 call sphbess_and_dx(omegam_rgin,il,sj,sy,sjp,syp)
00050 sbj = sj
00051 sbjp = omegam*sjp
00052 omegam_rg = omegam*rg(ir)
00053 call sphbess(omegam_rg,il,sj,sy)
00054 sby = sy
00055 sbsjy_hrha(il,im,ir) = om2lp1*sbj*sby
00056 sbsjyp_hrha(il,im,ir) = om2lp1*sbjp*sby
00057 endif
00058 enddo
00059 enddo
00060 enddo
00061 rgoutsq = rg(0)*rg(0)
00062 sbsjy_hrha(:,:,:) = rgoutsq*sbsjy_hrha(:,:,:)
00063 sbsjyp_hrha(:,:,:) = rgoutsq*sbsjyp_hrha(:,:,:)
00064
00065 end subroutine calc_radial_green_fn_hrethadv_insurf