00001 subroutine calc_radial_green_fn_hrethadv_homosol(omega,char_dn)
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_homosol
00006 implicit none
00007 integer :: il, im, ir, irr
00008 real(8) :: omega, omegam, omegam_rg, omegam_rgin, l2p1, l2p1dlp1, W, Wp
00009 real(8) :: rtpi2 = 1.253314154753822d0
00010 real(8) :: sbj, sbj_in, sbjp_in, sj, sjp
00011 real(8) :: sby, sby_in, sbyp_in, sy, syp
00012 character(len=2) :: char_dn
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 sbsjy_hrha_ho = 0.0d0
00032 sbsjyp_hrha_ho = 0.0d0
00033 do il = 0, nlg
00034 do im = 0, il
00035 do ir = 0, nrg
00036 if(im.eq.0)then
00037 l2p1 = dble(2*il+1)
00038 l2p1dlp1 = l2p1/dble(il+1)
00039 if (char_dn.eq.'nh') then
00040 sbsjy_hrha_ho(il,im,ir) = - l2p1dlp1*rg(0)**(il+2)/rg(ir)**(il+1)
00041 end if
00042 if (char_dn.eq.'dh') then
00043 sbsjyp_hrha_ho(il,im,ir)= - l2p1*(rg(0)/rg(ir))**(il+1)
00044 end if
00045 else
00046 omegam = dble(im)*omega
00047 omegam_rgin = omegam*rg(0)
00048 l2p1 = dble(2*il+1)
00049 call sphbess_and_dx(omegam_rgin,il,sj,sy,sjp,syp)
00050 sby_in = sy
00051 sbj_in = sj
00052 sbyp_in = omegam*syp
00053 sbjp_in = omegam*sjp
00054 omegam_rg = omegam*rg(ir)
00055 W = sqrt(sbj_in**2 + sby_in**2)
00056 Wp = sqrt(sbjp_in**2 + sbyp_in**2)
00057 call sphbess(omegam_rg,il,sj,sy)
00058 sby = sy
00059 if (char_dn.eq.'nh') then
00060
00061 sbsjy_hrha_ho(il,im,ir) = l2p1*sby/Wp
00062 end if
00063 if (char_dn.eq.'dh') then
00064
00065 sbsjyp_hrha_ho(il,im,ir) = l2p1*sby/W
00066 end if
00067 endif
00068 enddo
00069 enddo
00070 enddo
00071
00072 end subroutine calc_radial_green_fn_hrethadv_homosol