def Mie_SD(m, wavelength, dp, ndp, interpolate=False, asDict=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#Mie_SD
dp = coerceDType(dp)
ndp = coerceDType(ndp)
_length = np.size(dp)
Q_ext = np.zeros(_length)
Q_sca = np.zeros(_length)
Q_abs = np.zeros(_length)
Q_pr = np.zeros(_length)
Q_back = np.zeros(_length)
Q_ratio = np.zeros(_length)
g = np.zeros(_length)
# scaling of 1e-6 to cast in units of inverse megameters - see docs
aSDn = np.pi*((dp/2)**2)*ndp*(1e-6)
# _logdp = np.log10(dp)
for i in range(_length):
Q_ext[i], Q_sca[i], Q_abs[i], g[i], Q_pr[i], Q_back[i], Q_ratio[i] = AutoMieQ(m,wavelength,dp[i])
Bext = trapz(Q_ext*aSDn)
Bsca = trapz(Q_sca*aSDn)
Babs = Bext-Bsca
Bback = trapz(Q_back*aSDn)
Bratio = trapz(Q_ratio*aSDn)
bigG = trapz(g*Q_sca*aSDn)/trapz(Q_sca*aSDn)
Bpr = Bext - bigG*Bsca
if asDict:
return dict(Bext=Bext, Bsca=Bsca, Babs=Babs, G=bigG, Bpr=Bpr, Bback=Bback, Bratio=Bratio)
else:
return Bext, Bsca, Babs, bigG, Bpr, Bback, Bratio
评论列表
文章目录