13 public trextcoeffintstrut,extcoeffintstrut,scattcoeffintstrut,cylconst
21 subroutine cylconst(lambda,theta,radius,Qs,Qt,gcyl)
22 real(dp),
intent(in) :: lambda
23 real(dp),
intent(in) :: theta
24 real(dp),
intent(in) :: radius
25 real(dp),
intent(out) :: Qs
26 real(dp),
intent(out) :: Qt
27 real(dp),
intent(out) :: gcyl
37 u,v,s,Dk,Rk,Ak1,Akm,Bk1,Bkm,Deltak
40 real(dp),
dimension(:),
allocatable :: &
42 complex(dp),
dimension(:),
allocatable :: &
43 ae,ah,be,bh,ju,dju,yu,dyu,jv,djv,yv,dyv,h1v,dh1v,h2v,dh2v
44 call optconst(lambda,n2,k2)
47 m=cmplx(n2,-k2,kind=dp)
49 u=x*sqrt(m**2-sin(theta)**2)
52 kmax=nint(x+4*x**(1/3.0_dp)+2)+2
56 allocate(ae(0:kmax),ah(0:kmax),be(0:kmax),bh(0:kmax),ju(0:kmax),dju(0:kmax),&
57 yu(0:kmax),dyu(0:kmax),jv(0:kmax),djv(0:kmax),yv(0:kmax),dyv(0:kmax),&
58 h1v(0:kmax),dh1v(0:kmax),h2v(0:kmax),dh2v(0:kmax))
59 call bessel(kmax,u,tol,ju,dju,yu,dyu)
60 call bessel(kmax,v,tol,jv,djv,yv,dyv)
61 call hankel(kmax,v,tol,h1v,dh1v,h2v,dh2v)
65 ak1=dh2v(k)/(v*h2v(k))-dju(k)/(u*ju(k))
66 akm=dh2v(k)/(v*h2v(k))-m**2*dju(k)/(u*ju(k))
67 bk1=djv(k)/(v*jv(k))-dju(k)/(u*ju(k))
68 bkm=djv(k)/(v*jv(k))-m**2*dju(k)/(u*ju(k))
70 ae(k)=iu*dk*rk*(bk1-ak1)/deltak
71 ah(k)=rk*(akm*bk1-dk**2)/deltak
72 be(k)=rk*(ak1*bkm-dk**2)/deltak
75 qte=
real(0.5_dp*be(0),kind=dp)
76 qth=
real(0.5_dp*ah(0),kind=dp)
77 qse=
real(0.5_dp*be(0)*conjg(be(0)),kind=dp)
78 qsh=
real(0.5_dp*ah(0)*conjg(ah(0)),kind=dp)
80 qte=qte+
real(be(k),kind=dp)
81 qth=qth+
real(ah(k),kind=dp)
82 qse=qse+
real(ae(k)*conjg(ae(k))+be(k)*conjg(be(k)),kind=dp)
83 qsh=qsh+
real(ah(k)*conjg(ah(k))+bh(k)*conjg(bh(k)),kind=dp)
119 t1=t1+2*be(k)*cos(k*phi)
120 t2=t2+2*ah(k)*cos(k*phi)
121 t3=t3-2*iu*ae(k)*sin(k*phi)
124 adsr(i)=(abs(t1)**2+abs(t2)**2)/(pi*x*qs)
125 adsr(i)=(abs(t1)**2+abs(t2)**2+abs(t3)**2+abs(t4)**2)/2
127 s1=adsr(1)*cos(0e0_dp)+adsr(nwaw)*cos(pi)
128 s2=adsr(1)+adsr(nwaw)
130 phi=(i-1)*pi/(nwaw-1)
131 s1=s1+2*adsr(i)*cos(phi)
134 s1=s1*pi/(2*(nwaw-1))
135 s2=s2*pi/(2*(nwaw-1))
160 end subroutine cylconst
166 real(dp) function trextcoeffintstrut ( theta )
167 real(dp),
intent(in) :: theta
168 real(dp) :: Qs,Qt,gcyl
169 call cylconst(
lambda,theta,dstrut/2,qs,qt,gcyl)
170 trextcoeffintstrut=(qt-qs*sin(theta)**2-gcyl*qs*cos(theta)**2)*cos(theta)
171 end function trextcoeffintstrut
177 real(dp) function extcoeffintstrut ( theta )
178 real(dp),
intent(in) :: theta
179 real(dp) :: Qs,Qt,gcyl
180 call cylconst(
lambda,theta,dstrut/2,qs,qt,gcyl)
181 extcoeffintstrut=qt*cos(theta)
182 end function extcoeffintstrut
188 real(dp) function scattcoeffintstrut ( theta )
189 real(dp),
intent(in) :: theta
190 real(dp) :: Qs,Qt,gcyl
191 call cylconst(
lambda,theta,dstrut/2,qs,qt,gcyl)
192 scattcoeffintstrut=qs*cos(theta)
193 end function scattcoeffintstrut
double lambda
Latent heat of blowing agent, J/kg.