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)
subroutine zeff(freq, D, N, nsizes, k2, tt, ice, xr, z_eff, z_ray, kr, qe, qs, rho_e)
subroutine mieint(Dx, SCm, Inp, Dqv, Dqxt, Dqsc, Dbsc, Dg, Xs1, Xs2, DPh, Error)
subroutine avint(ftab, xtab, ntab, a_in, b_in, result)
subroutine m_wat(freq, t, n_r, n_i)
subroutine m_ice(freq, t, n_r, n_i)