1 subroutine zeff(freq,D,N,nsizes,k2,tt,ice,xr,z_eff,z_ray,kr,qe,qs,rho_e)
33 integer,
intent(in) :: ice, xr
34 integer,
intent(in) :: nsizes
35 real*8,
intent(in) :: freq,d(nsizes),
n(nsizes),tt,qe(nsizes), &
36 qs(nsizes), rho_e(nsizes)
37 real*8,
intent(inout) :: k2
40 real*8,
intent(out) :: z_eff,z_ray,kr
45 real*8,
dimension(nsizes) :: &
58 complex*16,
dimension(nsizes) :: &
63 real*8 :: eta_sum, eta_mie, const, z0_eff, z0_ray, k_sum, &
64 n_r, n_i, dqv(1), dqxt, dqsc, dbsc, dg, dph(1)
66 complex*16 :: xs1(1), xs2(1)
76 wl = 2.99792458/(freq*10)
81 if (abs(94.-freq) < 3.) k2=0.75
82 if (abs(35.-freq) < 3.) k2=0.88
83 if (abs(13.8-freq) < 3.) k2=0.925
90 call
m_wat(freq,tt,n_r,n_i)
92 call
m_ice(freq,tt,n_r,n_i)
98 if ((ice == 1) .and. (minval(rho_e) >= 0)) correct_for_rho = 1
101 if (correct_for_rho == 1)
then
103 m0 = ((2+m0**2+2*
f*(m0**2-1))/(2+m0**2+
f*(1-m0**2)))**(0.5)
110 call
mieint(sizep(
i), m0(
i), one, dqv, qext(
i), dqsc, qbsca(
i), &
111 dg, xs1, xs2, dph, err)
126 if (
size(d0) == 1)
then
127 eta_sum = qbsca(1)*(
n(1)*1e6)*d0(1)**2
129 call
avint(qbsca*n0*d0**2,d0,nsizes,d0(1),d0(
size(d0,1)),eta_sum)
132 eta_mie = eta_sum*0.25*
pi
133 const = (wl**4/
pi**5)*(1./k2)
134 z0_eff = const*eta_mie
139 if (
size(d0) == 1)
then
140 k_sum = qext(1)*(
n(1)*1e6)*d0(1)**2
142 call
avint(qext*n0*d0**2,d0,nsizes,d0(1),d0(
size(d0,1)),k_sum)
145 kr = k_sum*0.25*
pi*(1000.*cr)
150 if (
size(d0) == 1)
then
151 z0_ray = (
n(1)*1e6)*d0(1)**6
153 call
avint(n0*d0**6,d0,nsizes,d0(1),d0(
size(d0)),z0_ray)