You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:15:37