2023年12月30日发(作者:重点人员管控措施)
均匀介质圆柱对平面波的散射
1. TMz极化
假设TMz极化均匀平面波垂直入射半径为a的无限长均匀介质圆柱,相对介电常数为εr,相对磁导率为μr,波的传播方向为+x,入射电场和入射磁场用柱面波展开,分别表示为
E1jincˆzE0eajkxˆzE0eajkcosˆzE0anjnJnkejn (1)
HincEincE01n1kE0njnˆˆanjJnkeajJ'nkejnjnjn(2)
散射场朝外传播,因此,散射电场和磁场用柱第二类Hankel函数展开,分别表示如下
EscaˆzE0anHnan2k (3)
HscaE01dankE022ˆˆaHnkaanHn'k
jndjn (4)
透射场则由柱面基本波函数的线性组合表示,由于透射场在介质内部均为有限大,因此
EtranˆzE0bnJnk1
an (5)
HtranE01dbnkE0ˆˆaJnk1abnJn'k1
jndjn (6)
根据介质表面的边界条件,切向电场和切向磁场连续,可以得到
2jnJnkejnanHnkbnJnk1
(7)
(8)
1jnJ'nkejn12anHn'k11bnJn'k1
求解方程组,从而得到展开项的系数为
anjn1Jn'kaJnk1aJnkaJn'k1ajne
22Jn'k1aHnka1Jnk1aHn'ka (9)
bnjnJnkaHn'kaJn'kaHn22kaJnk1aH2n2'k1aJn'k1aHnk1a1ejn (1
0)
ˆn令a1Jn'kaJnk1aJnkaJn'k1a,将系数带入展开式,得到散射电22Jn'k1aHnka1Jnk1aHn'ka场和磁场的表达式为
EscaˆzE0jnaˆnHnan2kejn (11)
HscaˆaE01nnjnˆnHna2kejnkE0n2ˆˆnHnaja'kejn(12)
jn2对于远区散射场,kρ → ∞,Hnk2jnjk,则相应的电场和磁场jek为
EscaˆzE0a2jjkˆnejn
eakn (13)
H
scakE02jjk2jjkjnˆˆˆneaˆnejn
aenaeakknnE01(14)
c**********************************************************************
c Compute TMz Scattering from homogenerous lossless dielectric Circular
c Cylinder by Mie Series
c
c a INPUT, real(8)
c On entry, 'a' specifies the radius of the circular cylinder
c epsR INPUT, real(8)
c On entry, 'epsR' specifies the relative permittivity of
c the homogenerous dielectric circular cylinder
c MuR INPUT, real(8)
c On entry, 'muR' specifies the relative permeability of
c the homogenerous dielectric circular cylinder
c f INPUT, real(8)
c On entry, 'f' specifies the incident frequency
c r INPUT, real(8)
c On entry, 'r' specifies the distance between the obrvation
c point and the origin of coordinates
c ph INPUT, real(8)
c On entry, 'ph' specifies the obrvation angle
c Ez OUTPUT, complex(8)
c On exit, 'Ez' specifies the z component of the electric
c scattering field
c Hpho OUTPUT, complex(8)
c On exit, 'Hpho' specifies the pho component of the magnetic
c scattering field
c Hphi OUTPUT, complex(8)
c On exit, 'Hphi' specifies the phi component of the magnetic
c scattering field
c
c Programmed by Panda Brewmaster
c**********************************************************************
subroutine dSca_TM_DIE_Cir_Cyl_Mie(a, epsR, muR, f, r, ph, Ez, Hpho, Hphi)
c**********************************************************************
implicit none
c - Input Parameters
real(8) a, epsR, muR, f, r, ph
complex(8) Ez, Hpho, Hphi
c - Constant Numbers
real(8), parameter :: pi = 3.9793
real(8), parameter :: eps0 = 8.854187817d-12
real(8), parameter :: mu0 = pi * 4.d-7
complex(8), parameter :: cj = dcmplx(0.d0, 1.d0)
c - Temporary Variables
integer k, nmax
real(8) eta0, wavek0, ka0, kr
real(8) eta1, wavek1, ka1
complex(8) coe1, coe2
real(8), allocatable, dimension (:) :: Jnka0, Ynka0, DJnka0, Jnkr, Ynkr
real(8), allocatable, dimension (:) :: Jnka1, Ynka1, DJnka1
complex(8), allocatable, dimension (:) :: Hnka0, DHnka0, Hnkr, DHnkr
complex(8), allocatable, dimension (:) :: Hnka1, DHnka1
complex(8), allocatable, dimension (:) :: an
eta0 = dsqrt(mu0 / eps0)
wavek0 = 2.d0 * pi * f * dsqrt(mu0 * eps0)
ka0 = wavek0 * a
kr = wavek0 * r
eta1 = dsqrt(muR * mu0 / epsR / eps0)
wavek1 = 2.d0 * pi * f * dsqrt(muR * mu0 * epsR * eps0)
ka1 = wavek1 * a
nmax = ka1 + 10.d0 * ka1 ** (1.d0 / 3.d0) + 1
if(nmax < 5) nmax = 5
allocate(Jnka0(- 1 : nmax + 1), Ynka0(- 1 : nmax + 1), Hnka0(- 1 : nmax + 1), DJnka0(0 :
nmax), DHnka0(0 : nmax))
call dBES(nmax + 1, ka0, Jnka0(0 : nmax + 1), Ynka0(0 : nmax + 1))
Jnka0(- 1) = - Jnka0(1); Ynka0(- 1) = - Ynka0(1)
Hnka0(-1 : nmax + 1) = dcmplx(Jnka0(-1 : nmax + 1), - Ynka0(-1 : nmax + 1))
do k = 0, nmax
DJnka0(k) = (Jnka0(k - 1) - Jnka0(k + 1)) / 2.d0
DHnka0(k) = (Hnka0(k - 1) - Hnka0(k + 1)) / 2.d0
enddo
allocate(Jnka1(- 1 : nmax + 1), Ynka1(- 1 : nmax + 1), Hnka1(- 1 : nmax + 1), DJnka1(0 :
nmax), DHnka1(0 : nmax))
call dBES(nmax + 1, ka1, Jnka1(0 : nmax + 1), Ynka1(0 : nmax + 1))
Jnka1(- 1) = - Jnka1(1); Ynka1(- 1) = - Ynka1(1)
Hnka1(-1 : nmax + 1) = dcmplx(Jnka1(-1 : nmax + 1), - Ynka1(-1 : nmax + 1))
do k = 0, nmax
DJnka1(k) = (Jnka1(k - 1) - Jnka1(k + 1)) / 2.0
DHnka1(k) = (Hnka1(k - 1) - Hnka1(k + 1)) / 2.0
enddo
allocate(an(0 : nmax))
do k = 0, nmax
coe1 = (eta1 * DJnka0(k) * Jnka1(k) - eta0 * Jnka0(k) * DJnka1(k))
coe2 = (eta0 * DJnka1(k) * Hnka0(k) - eta1 * Jnka1(k) * DHnka0(k))
an(k) = coe1 / coe2
enddo
if(r >= 0) then ! Finite Distance
allocate(Jnkr(- 1 : nmax + 1), Ynkr(- 1 : nmax + 1), Hnkr(- 1 : nmax + 1), DHnkr(0 :
nmax))
call dBES(nmax + 2, kr, Jnkr(0 : nmax + 1), Ynkr(0 : nmax + 1))
Jnkr(- 1) = - Jnkr(1)
Ynkr(- 1) = - Ynkr(1)
Hnkr(- 1 : nmax + 1) = dcmplx(Jnkr(- 1 : nmax + 1), - Ynkr(- 1 : nmax + 1))
Ez = an(0) * Hnkr(0)
do k = 1, nmax
Ez = Ez + cj ** (- k) * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Ez = Ez + cj ** k * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Hpho = 0.d0
do k = 1, nmax
Hpho = Hpho + cj ** (- k) * k * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Hpho = Hpho + cj ** k * (- k) * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Hpho = - Hpho / wavek0 / eta0 / r
Hphi = 0.d0
do k = 1, nmax
Hphi = Hphi + cj ** (- k) * an(k) * DHnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Hphi = Hphi + cj ** k * an(k) * DHnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Hphi = - Hphi / eta0 / cj
deallocate(Jnkr, Ynkr, Hnkr, DHnkr)
el ! Infinite Distance
Ez = an(0)
do k = 1, nmax
Ez = Ez + 2.0 * an(k) * dcosd(k * ph)
enddo
Ez = Ez * dsqrt(2.d0 / pi / wavek0)
Hpho = 0.d0
Hphi = Ez / eta0
endif
deallocate(an)
deallocate(Jnka0, Ynka0, Hnka0, DJnka0, DHnka0)
deallocate(Jnka1, Ynka1, Hnka1, DJnka1, DHnka1)
end subroutine dSca_TM_DIE_Cir_Cyl_Mie
c######################################################################
c**********************************************************************
c Compute TMz Scattering from homogenerous lossy dielectric Circular
c Cylinder by Mie Series
c
c a INPUT, real(8)
c On entry, 'a' specifies the radius of the circular cylinder
c epsR INPUT, complex(8)
c On entry, 'epsR' specifies the relative permittivity of
c the homogenerous dielectric circular cylinder
c MuR INPUT, complex(8)
c On entry, 'muR' specifies the relative permeability of
c the homogenerous dielectric circular cylinder
c f INPUT, real(8)
c On entry, 'f' specifies the incident frequency
c r INPUT, real(8)
c On entry, 'r' specifies the distance between the obrvation
c point and the origin of coordinates
c ph INPUT, real(8)
c On entry, 'ph' specifies the obrvation angle
c Ez OUTPUT, complex(8)
c On exit, 'Ez' specifies the z component of the electric
c scattering field
c Hpho OUTPUT, complex(8)
c On exit, 'Hpho' specifies the pho component of the magnetic
c scattering field
c Hphi OUTPUT, complex(8)
c On exit, 'Hphi' specifies the phi component of the magnetic
c scattering field
c
c Programmed by Panda Brewmaster
c**********************************************************************
subroutine dSca_TM_LDIE_Cir_Cyl_Mie(a, epsR, muR, f, r, ph, Ez, Hpho, Hphi)
c**********************************************************************
implicit none
c - Input Parameters
real(8) a, f, r, ph
complex(8) epsR, muR, Ez, Hpho, Hphi
c - Constant Numbers
real(8), parameter :: pi = 3.9793d0
real(8), parameter :: eps0 = 8.854187817d-12
real(8), parameter :: mu0 = pi * 4.d-7
complex(8), parameter :: cj = dcmplx(0.d0, 1.d0)
c - Temporary Variables
integer k, nmax
real(8) eta0, wavek0, ka0, kr
complex(8) eta1, wavek1, ka1, coe1, coe2
real(8), allocatable, dimension (:) :: Jnka0, Ynka0, DJnka0, Jnkr, Ynkr
complex(8), allocatable, dimension (:) :: Jnka1, Ynka1, DJnka1
complex(8), allocatable, dimension (:) :: Hnka0, DHnka0, Hnkr, DHnkr
complex(8), allocatable, dimension (:) :: Hnka1, DHnka1
complex(8), allocatable, dimension (:) :: an
eta0 = dsqrt(mu0 / eps0)
wavek0 = 2.d0 * pi * f * dsqrt(mu0 * eps0)
ka0 = wavek0 * a
kr = wavek0 * r
eta1 = cdsqrt(muR * mu0 / epsR / eps0)
wavek1 = 2.d0 * pi * f * cdsqrt(muR * mu0 * epsR * eps0)
ka1 = wavek1 * a
nmax = ka0 + 10.d0 * ka0 ** (1.d0 / 3.d0) + 1
if(nmax < 5) nmax = 5
allocate(Jnka0(- 1 : nmax + 1), Ynka0(- 1 : nmax + 1), Hnka0(- 1 : nmax + 1), DJnka0(0 :
nmax), DHnka0(0 : nmax))
call dBES(nmax + 1, ka0, Jnka0(0 : nmax + 1), Ynka0(0 : nmax + 1))
Jnka0(- 1) = - Jnka0(1); Ynka0(- 1) = - Ynka0(1)
Hnka0(-1 : nmax + 1) = dcmplx(Jnka0(-1 : nmax + 1), - Ynka0(-1 : nmax + 1))
do k = 0, nmax
DJnka0(k) = (Jnka0(k - 1) - Jnka0(k + 1)) / 2.d0
DHnka0(k) = (Hnka0(k - 1) - Hnka0(k + 1)) / 2.d0
enddo
allocate(Jnka1(- 1 : nmax + 1), Ynka1(- 1 : nmax + 1), Hnka1(- 1 : nmax + 1), DJnka1(0 :
nmax), DHnka1(0 : nmax))
call cdBES(nmax + 1, ka1, Jnka1(0 : nmax + 1), Ynka1(0 : nmax + 1))
Jnka1(- 1) = - Jnka1(1); Ynka1(- 1) = - Ynka1(1)
do k = -1, nmax + 1
Hnka1(k) = dcmplx(dreal(Jnka1(k)) + dimag(Ynka1(k)), dimag(Jnka1(k)) -
dreal(Ynka1(k)))
enddo
do k = 0, nmax
DJnka1(k) = (Jnka1(k - 1) - Jnka1(k + 1)) / 2.d0
DHnka1(k) = (Hnka1(k - 1) - Hnka1(k + 1)) / 2.d0
enddo
allocate(an(0 : nmax))
do k = 0, nmax
coe1 = (eta1 * DJnka0(k) * Jnka1(k) - eta0 * Jnka0(k) * DJnka1(k))
coe2 = (eta0 * DJnka1(k) * Hnka0(k) - eta1 * Jnka1(k) * DHnka0(k))
an(k) = coe1 / coe2
enddo
if(r >= 0) then ! Finite Distance
allocate(Jnkr(- 1 : nmax + 1), Ynkr(- 1 : nmax + 1), Hnkr(- 1 : nmax + 1), DHnkr(0 :
nmax))
call dBES(nmax + 2, kr, Jnkr(0 : nmax + 1), Ynkr(0 : nmax + 1))
Jnkr(- 1) = - Jnkr(1)
Ynkr(- 1) = - Ynkr(1)
Hnkr(- 1 : nmax + 1) = dcmplx(Jnkr(- 1 : nmax + 1), - Ynkr(- 1 : nmax + 1))
Ez = an(0) * Hnkr(0)
do k = 1, nmax
Ez = Ez + cj ** (- k) * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Ez = Ez + cj ** k * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Hpho = 0.d0
do k = 1, nmax
Hpho = Hpho + cj ** (- k) * k * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Hpho = Hpho + cj ** k * (- k) * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Hpho = - Hpho / wavek0 / eta0 / r
Hphi = 0.d0
do k = 1, nmax
Hphi = Hphi + cj ** (- k) * an(k) * DHnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Hphi = Hphi + cj ** k * an(k) * DHnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Hphi = - Hphi / eta0 / cj
deallocate(Jnkr, Ynkr, Hnkr, DHnkr)
el ! Infinite Distance
Ez = an(0)
do k = 1, nmax
Ez = Ez + 2.d0 * an(k) * dcosd(k * ph)
enddo
Ez = Ez * dsqrt(2.d0 / pi / wavek0)
Hpho = 0.d0
Hphi = Ez / eta0
endif
deallocate(an)
deallocate(Jnka0, Ynka0, Hnka0, DJnka0, DHnka0)
deallocate(Jnka1, Ynka1, Hnka1, DJnka1, DHnka1)
end subroutine dSca_TM_LDIE_Cir_Cyl_Mie
c######################################################################
2520151050-5-10-150306090Angle (deg)Scattering
Width
(dB)f = 1 GHzf = 3 GHz120150180
(a)
25Scattering
Width
(dB)20151Angle (deg)f = 1 GHzf = 3 GHz120150180
(b)
图1 均匀介质圆柱的双站散射-TMz极化:(a) εr = 4,μr = 1;(b) εr = 4 − j,μr =
1;
2. TEz极化
假设TEz极化均匀平面波垂直入射半径为a的无限长均匀介质圆柱,相对介电常数为εr,相对磁导率为μr,波的传播方向为+x,入射电场和入射磁场用柱面波展开,分别表示为
HincˆzH0eajkxˆzH0eajkcosˆzH0anjnJnkejn (15)
EincH01n1kH0jnˆˆanjJkeanjnjnjnJ'nkejn (16)
散射场朝外传播,因此,散射电场和磁场用柱第二类Hankel函数展开,分别表示如下
HscaˆzH0ananHn2k
(17)
EscaH01ankH02ˆˆaHkanjnjnaH'k
2nn (18)
透射场则由柱面基本波函数的线性组合表示,由于透射场在介质内部均为有限大,因此
HtranˆzH0anbJk
nn1 (19)
EtranH01dbnkH0ˆˆaJnk1ajndjnbJ'k
nn1 (20)
根据介质表面的边界条件,切向电场和切向磁场连续,可以得到
2jnJnkejnanHnkbnJnk1
(21)
(22)
2jnJ'nkejnanHn'k1bnJn'k1
求解方程组,从而得到展开项的系数为
anjnJn'kaJnk1a1JnkaJn'k1ajne
221Jn'k1aHnkaJnk1aHn'ka22JnkaHn'kaJn'kaHnka (23)
bnjnJnk1aHn22'k1a1Jn'k1aHnk1aejn (24)
ˆn令aJn'kaJnk1a1JnkaJn'k1a,将系数带入展开式,得到散射电221Jn'k1aHnkaJnk1aHn'ka场和磁场的表达式为
HH01scaˆzH0a2nˆnHnjna2kejn (25)
EscaˆanˆnHnjnankejnkH0ˆajn2ˆnHnjna'kejn (26)
2对于远区散射场,kρ → ∞,Hnk2jnjk,则相应的散射磁场为
jek (27)
HH01scaˆzH0a2jjkˆnejn
eaknE
scakH02jjk2jjkjnˆˆˆneaˆnejn
aenaeakknn(28)
c**********************************************************************
c Compute TEz Scattering from homogenerous lossless dielectric Circular
c cylinder by Mie Series
c
c a INPUT, real(8)
c On entry, 'a' specifies the radius of the circular cylinder
c epsR INPUT, real(8)
c On entry, 'epsR' specifies the relative permittivity of
c the homogenerous dielectric circular cylinder
c MuR INPUT, real(8)
c On entry, 'muR' specifies the relative permeability of
c the homogenerous dielectric circular cylinder
c f INPUT, real(8)
c On entry, 'f' specifies the incident frequency
c r INPUT, real(8)
c On entry, 'r' specifies the distance between the obrvation
c point and the origin of coordinates
c ph INPUT, real(8)
c On entry, 'ph' specifies the obrvation angle
c Hz OUTPUT, complex(8)
c On exit, 'Hz' specifies the z component of the magnetic
c scattering field
c Epho OUTPUT, complex(8)
c On exit, 'Epho' specifies the pho component of the electric
c scattering field
c Ephi OUTPUT, complex(8)
c On exit, 'Ephi' specifies the phi component of the electric
c scattering field
c
c Programmed by Panda Brewmaster
c**********************************************************************
subroutine dSca_TE_Die_Cir_Cyl_Mie(a, EpsR, MuR, f, r, ph, Hz, Epho, Ephi)
c**********************************************************************
implicit none
c - Input Parameters
real(8) a, EpsR, MuR, f, r, ph
complex(8) Hz, Epho, Ephi
c - Constant Numbers
real(8), parameter :: pi = 3.9793d0
real(8), parameter :: eps0 = 8.8549d-12
real(8), parameter :: mu0 = pi * 4.d-7
complex(8), parameter :: cj = dcmplx(0.d0, 1.d0)
c - Temporary Variables
integer k, nmax
real(8) eta0, wavek0, ka0, kr
real(8) eta1, wavek1, ka1
complex(8) coe1, coe2
real(8), allocatable, dimension (:) :: Jnka0, Ynka0, DJnka0, Jnkr, Ynkr
real(8), allocatable, dimension (:) :: Jnka1, Ynka1, DJnka1
complex(8), allocatable, dimension (:) :: Hnka0, DHnka0, Hnkr, DHnkr
complex(8), allocatable, dimension (:) :: Hnka1, DHnka1
complex(8), allocatable, dimension (:) :: an
eta0 = dsqrt(mu0 / eps0)
wavek0 = 2.d0 * pi * f * dsqrt(mu0 * eps0)
ka0 = wavek0 * a
kr = wavek0 * r
eta1 = dsqrt(MuR * mu0 / EpsR / eps0)
wavek1 = 2.0 * pi * f * dsqrt(MuR * mu0 * EpsR * eps0)
ka1 = wavek1 * a
nmax = ka1 + 10.0 * ka1 ** (1.0 / 3.0) + 1
if(nmax < 5) nmax = 5
allocate(Jnka0(- 1 : nmax + 1), Ynka0(- 1 : nmax + 1), Hnka0(- 1 : nmax + 1), DJnka0(0 :
nmax), DHnka0(0 : nmax))
call dBES(nmax + 1, ka0, Jnka0(0 : nmax + 1), Ynka0(0 : nmax + 1))
Jnka0(- 1) = - Jnka0(1); Ynka0(- 1) = - Ynka0(1)
Hnka0(-1 : nmax + 1) = dcmplx(Jnka0(-1 : nmax + 1), - Ynka0(-1 : nmax + 1))
do k = 0, nmax
DJnka0(k) = (Jnka0(k - 1) - Jnka0(k + 1)) / 2.d0
DHnka0(k) = (Hnka0(k - 1) - Hnka0(k + 1)) / 2.d0
enddo
allocate(Jnka1(- 1 : nmax + 1), Ynka1(- 1 : nmax + 1), Hnka1(- 1 : nmax + 1), DJnka1(0 :
nmax), DHnka1(0 : nmax))
call dBES(nmax + 1, ka1, Jnka1(0 : nmax + 1), Ynka1(0 : nmax + 1))
Jnka1(- 1) = - Jnka1(1); Ynka1(- 1) = - Ynka1(1)
Hnka1(-1 : nmax + 1) = dcmplx(Jnka1(-1 : nmax + 1), - Ynka1(-1 : nmax + 1))
do k = 0, nmax
DJnka1(k) = (Jnka1(k - 1) - Jnka1(k + 1)) / 2.0
DHnka1(k) = (Hnka1(k - 1) - Hnka1(k + 1)) / 2.0
enddo
allocate(an(0 : nmax))
do k = 0, nmax
coe1 = eta0 * DJnka0(k) * Jnka1(k) - eta1 * Jnka0(k) * DJnka1(k)
coe2 = eta1 * DJnka1(k) * Hnka0(k) - eta0 * Jnka1(k) * DHnka0(k)
an(k) = coe1 / coe2
enddo
if(r >= 0) then ! Finite Distance
allocate(Jnkr(- 1 : nmax + 1), Ynkr(- 1 : nmax + 1), Hnkr(- 1 : nmax + 1))
allocate(DHnkr(0 : nmax))
call dBES(nmax + 2, kr, Jnkr(0 : nmax + 1), Ynkr(0 : nmax + 1))
Jnkr(- 1) = - Jnkr(1); Ynkr(- 1) = - Ynkr(1)
Hnkr(- 1 : nmax + 1) = dcmplx(Jnkr(- 1 : nmax + 1), - Ynkr(- 1 : nmax + 1))
Hz = an(0) * Hnkr(0)
do k = 1, nmax
Hz = Hz + cj ** (- k) * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Hz = Hz + cj ** k * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Epho = 0.d0
do k = 1, nmax
Epho = Epho + cj ** (- k) * k * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Epho = Epho + cj ** k * (- k) * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Epho = - Epho * eta0 / wavek0 / r
Ephi = an(0) * DHnkr(0)
do k = 1, nmax
Ephi = Ephi + cj ** (- k) * an(k) * DHnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Ephi = Ephi + cj ** k * an(k) * DHnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Ephi = Ephi * eta0 / cj
deallocate(Jnkr, Ynkr, Hnkr, DHnkr)
el ! Infinite Distance
Hz = an(0)
do k = 1, nmax
Hz = Hz + 2.0 * an(k) * dcosd(k * ph)
enddo
Hz = Hz * dsqrt(2.0 / pi / wavek0)
Epho = 0.d0
Ephi = Hz * eta0
endif
deallocate(an)
deallocate(Jnka0, Ynka0, Hnka0, DJnka0, DHnka0)
deallocate(Jnka1, Ynka1, Hnka1, DJnka1, DHnka1)
end subroutine dSca_TE_Die_Cir_Cyl_Mie
c######################################################################
c**********************************************************************
c Compute TEz Scattering from homogenerous lossy dielectric Circular
c Cylinder by Mie Series
c
c a INPUT, real(8)
c On entry, 'a' specifies the radius of the circular cylinder
c epsR INPUT, complex(8)
c On entry, 'epsR' specifies the relative permittivity of
c the homogenerous dielectric circular cylinder
c MuR INPUT, complex(8)
c On entry, 'muR' specifies the relative permeability of
c the homogenerous dielectric circular cylinder
c f INPUT, real(8)
c On entry, 'f' specifies the incident frequency
c r INPUT, real(8)
c On entry, 'r' specifies the distance between the obrvation
c point and the origin of coordinates
c ph INPUT, real(8)
c On entry, 'ph' specifies the obrvation angle
c Hz OUTPUT, complex(8)
c On exit, 'Hz' specifies the z component of the magnetic
c scattering field
c Epho OUTPUT, complex(8)
c On exit, 'Epho' specifies the pho component of the electric
c scattering field
c Ephi OUTPUT, complex(8)
c On exit, 'Ephi' specifies the phi component of the electric
c scattering field
c
c Programmed by Panda Brewmaster
c**********************************************************************
subroutine dSca_TE_LDie_Cir_Cyl_Mie(a, EpsR, MuR, f, r, ph, Hz, Epho, Ephi)
c**********************************************************************
implicit none
c - Input Parameters
real(8) a, f, r, ph
complex(8) EpsR, MuR, Hz, Epho, Ephi
c - Constant Numbers
real(8), parameter :: pi = 3.9793d0
real(8), parameter :: eps0 = 8.854187817d-12
real(8), parameter :: mu0 = pi * 4.d-7
complex(8), parameter :: cj = dcmplx(0.d0, 1.d0)
c - Temporary Variables
integer k, nmax
real(8) eta0, wavek0, ka0, kr
complex(8) eta1, wavek1, ka1, coe1, coe2
real(8), allocatable, dimension (:) :: Jnka0, Ynka0, DJnka0, Jnkr, Ynkr
complex(8), allocatable, dimension (:) :: Jnka1, Ynka1, DJnka1
complex(8), allocatable, dimension (:) :: Hnka0, DHnka0, Hnkr, DHnkr
complex(8), allocatable, dimension (:) :: Hnka1, DHnka1
complex(8), allocatable, dimension (:) :: an
eta0 = dsqrt(mu0 / eps0)
wavek0 = 2.d0 * pi * f * dsqrt(mu0 * eps0)
ka0 = wavek0 * a
kr = wavek0 * r
eta1 = cdsqrt(MuR * mu0 / EpsR / eps0)
wavek1 = 2.d0 * pi * f * cdsqrt(MuR * mu0 * EpsR * eps0)
ka1 = wavek1 * a
nmax = ka0 + 10.d0 * ka0 ** (1.d0 / 3.d0) + 1
if(nmax < 5) nmax = 5
allocate(Jnka0(- 1 : nmax + 1), Ynka0(- 1 : nmax + 1), Hnka0(- 1 : nmax + 1), DJnka0(0 :
nmax), DHnka0(0 : nmax))
call dBES(nmax + 1, ka0, Jnka0(0 : nmax + 1), Ynka0(0 : nmax + 1))
Jnka0(- 1) = - Jnka0(1); Ynka0(- 1) = - Ynka0(1)
Hnka0(-1 : nmax + 1) = dcmplx(Jnka0(-1 : nmax + 1), - Ynka0(-1 : nmax + 1))
do k = 0, nmax
DJnka0(k) = (Jnka0(k - 1) - Jnka0(k + 1)) / 2.d0
DHnka0(k) = (Hnka0(k - 1) - Hnka0(k + 1)) / 2.d0
enddo
allocate(Jnka1(- 1 : nmax + 1), Ynka1(- 1 : nmax + 1), Hnka1(- 1 : nmax + 1), DJnka1(0 :
nmax), DHnka1(0 : nmax))
call cdBES(nmax + 1, ka1, Jnka1(0 : nmax + 1), Ynka1(0 : nmax + 1))
Jnka1(- 1) = - Jnka1(1); Ynka1(- 1) = - Ynka1(1)
do k = - 1, nmax + 1
Hnka1(k) = dcmplx(dreal(Jnka1(k)) + dimag(Ynka1(k)), dimag(Jnka1(k)) -
dreal(Ynka1(k)))
enddo
do k = 0, nmax
DJnka1(k) = (Jnka1(k - 1) - Jnka1(k + 1)) / 2.d0
DHnka1(k) = (Hnka1(k - 1) - Hnka1(k + 1)) / 2.d0
enddo
allocate(an(0 : nmax))
do k = 0, nmax
coe1 = eta0 * DJnka0(k) * Jnka1(k) - eta1 * Jnka0(k) * DJnka1(k)
coe2 = eta1 * DJnka1(k) * Hnka0(k) - eta0 * Jnka1(k) * DHnka0(k)
an(k) = coe1 / coe2
enddo
if(r >= 0) then ! Finite Distance
allocate(Jnkr(- 1 : nmax + 1), Ynkr(- 1 : nmax + 1), Hnkr(- 1 : nmax + 1))
allocate(DHnkr(0 : nmax))
call dBES(nmax + 2, kr, Jnkr(0 : nmax + 1), Ynkr(0 : nmax + 1))
Jnkr(- 1) = - Jnkr(1); Ynkr(- 1) = - Ynkr(1)
Hnkr(- 1 : nmax + 1) = dcmplx(Jnkr(- 1 : nmax + 1), - Ynkr(- 1 : nmax + 1))
Hz = an(0) * Hnkr(0)
do k = 1, nmax
Hz = Hz + cj ** (- k) * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Hz = Hz + cj ** k * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Epho = 0.d0
do k = 1, nmax
Epho = Epho + cj ** (- k) * k * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Epho = Epho + cj ** k * (- k) * an(k) * Hnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Epho = - Epho * eta0 / wavek0 / r
Ephi = an(0) * DHnkr(0)
do k = 1, nmax
Ephi = Ephi + cj ** (- k) * an(k) * DHnkr(k) * cdexp(dcmplx(0.d0, k * ph))
Ephi = Ephi + cj ** k * an(k) * DHnkr(k) * cdexp(dcmplx(0.d0, - k * ph))
enddo
Ephi = Ephi * eta0 / cj
deallocate(Jnkr, Ynkr, Hnkr, DHnkr)
el ! Infinite Distance
Hz = an(0)
do k = 1, nmax
Hz = Hz + 2.d0 * an(k) * dcosd(k * ph)
enddo
Hz = Hz * dsqrt(2.d0 / pi / wavek0)
endif
deallocate(an)
deallocate(Jnka0, Ynka0, Hnka0, DJnka0, DHnka0)
deallocate(Jnka1, Ynka1, Hnka1, DJnka1, DHnka1)
end subroutine dSca_TE_LDie_Cir_Cyl_Mie
c######################################################################
2520151050-5-10-150306090Angle (deg)Scattering
Width
(dB)f = 1 GHzf = 3 GHz120150180
(a)
Scattering
Width
(dB)20100-10-20-30-400306090Angle (deg)f = 1 GHzf = 3 GHz120150180
(b)
图2均匀介质圆柱的双站散射-TEz极化:(a) εr = 4,μr = 1;(b) εr = 4 − j,μr = 1;
本文发布于:2023-12-30 20:52:17,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1703940738256711.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:均匀介质圆柱对平面波的散射(Mie级数).doc
本文 PDF 下载地址:均匀介质圆柱对平面波的散射(Mie级数).pdf
留言与评论(共有 0 条评论) |