修改 TSI(总太阳辐照度)教程
1. 背景和原理
TSI(Total Solar Irradiance,单位 W/m²) 是描述太阳辐射强度的关键参数。在气候模拟中,TSI 决定了行星表面接收到的能量,进而影响大气和海洋的热力过程。TSI 的改变不仅适用于研究地球气候,还对其他行星的宜居性研究具有重要意义。例如,由于行星距恒星的距离不同,以及恒星在其演化过程中光度的变化,不同的 TSI 水平可能决定一颗行星是否处于宜居带内。通过模拟 TSI 的变化,研究人员可以探索不同条件下的气候稳定性与宜居性特征。
- CAM4: 可以直接通过命名列表参数
solar_const
修改 TSI,无需额外准备输入文件。 - CAM5: 由于 RRTMG 辐射方案的限制,
solar_const
不再适用,必须通过修改光谱辐照度文件(solar spectral irradiance file
)来实现 TSI 的调整。
2. CAM4 中修改 TSI
2.1 修改方法
在 CAM4 的物理包中,TSI 可以直接通过 user_nl_cam
文件的 solar_const
参数设置。
2.2 实现步骤
- 在案例目录中找到
user_nl_cam
文件。 - 添加或修改以下参数:
其中solar_const = 1300.0
1300.0
为目标 TSI 值(单位 W/m²)。 - 运行
./preview_namelist
验证更改。 - 编译和运行模型:
./case.build ./case.submit
3. CAM5 中修改 TSI
3.1 问题说明
在 CAM5 物理包中,RRTMG 辐射方案使用光谱辐照度文件(solar_data_file
)计算辐射强度,而不是直接使用 solar_const
。
若同时设置 solar_const
和 solar_data_file
,会报如下警告:
WARNING: It is not allowed to set both solar_const and solar_data_file. solar_const will be ignored.
此外,尝试切换回 CAMRT 辐射方案可能导致模型组件不兼容的错误。
3.2 解决方案
要在 CAM5 中修改 TSI,需通过修改光谱辐照度文件(solar spectral irradiance file
)来实现。这涉及以下步骤:
- 准备原始光谱辐照度文件,例如
ape_solar_ave_tsi_1365.nc
。 - 编写 Python 脚本调整文件(见下文)。
- 在案例中指定新文件,并更新
user_nl_cam
文件。
3.3 Python 脚本
以下脚本用于生成新的光谱辐照度文件:
import xarray as xr
# 原始文件路径
input_file = "ape_solar_ave_tsi_1365.nc"
# 目标 TSI 值
target_tsi_values = [1300, 1200, 1100]
# 循环生成新文件
for target_tsi in target_tsi_values:
# 打开原始文件
ds = xr.open_dataset(input_file)
# 计算缩放因子
scale_factor = target_tsi / ds["tsi"].max().item()
# 缩放 SSI 和更新 TSI
ds["ssi"] = ds["ssi"] * scale_factor
ds["tsi"][:] = target_tsi
# 保存新文件
output_file = f"ape_solar_ave_tsi_{target_tsi}.nc"
ds.to_netcdf(output_file)
print(f"生成新文件:{output_file},目标 TSI = {target_tsi} W/m²")
3.4 在案例中指定新文件
- 编辑案例目录中的
user_nl_cam
文件,指定新的光谱辐照度文件:solar_data_file = '/work/home/yinjiewang/inputdata/atm/cam/solar/ape_solar_ave_tsi_1100.nc'
- 运行
./preview_namelist
检查更改。 - 编译和运行模型:
./case.build ./case.submit