修改 TSI(总太阳辐照度)教程

1. 背景和原理

TSI(Total Solar Irradiance,单位 W/m²) 是描述太阳辐射强度的关键参数。在气候模拟中,TSI 决定了行星表面接收到的能量,进而影响大气和海洋的热力过程。TSI 的改变不仅适用于研究地球气候,还对其他行星的宜居性研究具有重要意义。例如,由于行星距恒星的距离不同,以及恒星在其演化过程中光度的变化,不同的 TSI 水平可能决定一颗行星是否处于宜居带内。通过模拟 TSI 的变化,研究人员可以探索不同条件下的气候稳定性与宜居性特征。

2. CAM4 中修改 TSI

2.1 修改方法

在 CAM4 的物理包中,TSI 可以直接通过 user_nl_cam 文件的 solar_const 参数设置。

2.2 实现步骤

  1. 在案例目录中找到 user_nl_cam 文件。
  2. 添加或修改以下参数:
    solar_const = 1300.0
    其中 1300.0 为目标 TSI 值(单位 W/m²)。
  3. 运行 ./preview_namelist 验证更改。
  4. 编译和运行模型:
    ./case.build
    ./case.submit

3. CAM5 中修改 TSI

3.1 问题说明

在 CAM5 物理包中,RRTMG 辐射方案使用光谱辐照度文件(solar_data_file)计算辐射强度,而不是直接使用 solar_const

若同时设置 solar_constsolar_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)来实现。这涉及以下步骤:

  1. 准备原始光谱辐照度文件,例如 ape_solar_ave_tsi_1365.nc
  2. 编写 Python 脚本调整文件(见下文)。
  3. 在案例中指定新文件,并更新 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 在案例中指定新文件

  1. 编辑案例目录中的 user_nl_cam 文件,指定新的光谱辐照度文件:
    solar_data_file = '/work/home/yinjiewang/inputdata/atm/cam/solar/ape_solar_ave_tsi_1100.nc'
  2. 运行 ./preview_namelist 检查更改。
  3. 编译和运行模型:
    ./case.build
    ./case.submit