Astropy废弃Blackbody1d替换为Blackbody后单位转换错误求助
问题解决:BlackBody替换BlackBody1d后的单位转换错误
问题根源
BlackBody1d被废弃后,替换的BlackBody模型输出的是单色辐射亮度(单位:erg/(cm² Hz s sr),带立体角sr),而原BlackBody1d输出的是单色辐照度(已包含半球立体角积分,等价于辐射亮度乘以π sr,单位不带sr)。直接转换时因单位维度不匹配报错。
修正方案
如果需要和原BlackBody1d完全一致的辐照度结果,需手动补上立体角积分(乘以π sr),再进行单位转换:
import numpy as np from astropy import units as u from astropy.modeling.models import BlackBody wl_bb = np.linspace(100, 1000000, 10000) * u.AA bb_teff = 3500 bb_scalar = 9.0e-12 teff_known = bb_teff # 补全原代码未定义的变量 # 初始化BlackBody模型 bb = BlackBody(temperature=teff_known * u.K) # 获取辐射亮度(带sr单位) fb = bb(wl_bb) # 乘以π sr转换为辐照度,再转换目标单位 fb = (fb * np.pi * u.sr).to(u.erg / u.s / u.cm**2, equivalencies=u.spectral_density(wl_bb))
额外说明
- 若你实际需要的是辐射亮度而非辐照度,只需调整目标单位包含
sr即可:fb = fb.to(u.erg / u.s / u.cm**2 / u.sr, equivalencies=u.spectral_density(wl_bb)) - 原代码中
teff_known变量未定义,已补充赋值,避免运行报错。
内容的提问来源于stack exchange,提问作者ElectroCloud
相关产品推荐
相关产品推荐

