🎉 新版上线:现在购买赠送 1 次一对一服务,截止 2026.9.30
必看

构建 Case 与输入数据管理

介绍 case.build、构建日志、EXEROOT、RUNDIR 与 check_input_data 的关系。

CESM.run2026-06-24cesm-required/05_build_inputdata.md

构建 Case 与输入数据管理

case.build 用于构建 CESM 可执行文件。它会生成组件 namelist、构建公共库和组件库,并最终在 $EXEROOT 下生成模型可执行文件。构建阶段也是输入数据检查的重要节点。

1. 执行构建

进入 case 目录:

cd $CASEROOT

执行:

./case.build

如平台建议在计算节点构建,应使用平台提供的交互式或队列编译方式,不要在登录节点长时间占用资源。

2. 构建阶段会做什么

case.build 通常会完成以下工作:

  • $RUNDIR$CASEROOT/CaseDocs 生成组件 namelist。
  • 构建 coupler 和公共支持库,例如 mctpiogptlcsm_share
  • 构建各活动组件和数据组件所需的库。
  • $EXEROOT 下生成模型可执行文件,例如 cesm.exe

查询构建和运行目录:

./xmlquery EXEROOT,RUNDIR,BLDDIR

3. 构建日志

构建日志通常位于 $BLDDIR,文件名形如:

atm.bldlog.YYYYMMDD-HHMMSS
ice.bldlog.YYYYMMDD-HHMMSS
cpl.bldlog.YYYYMMDD-HHMMSS

如果日志文件被压缩为 .gz,通常表示对应组件构建成功。若构建失败,应优先查看最后一个未压缩或最新的组件构建日志。

4. 输入数据检查

CESM 需要的输入数据由具体 compset 和 resolution 决定。不要手动下载整个输入数据仓库。可在 case 目录中执行:

./check_input_data

如果缺少数据:

./check_input_data --download

check_input_data 会根据 Buildconf/$component.input_data_list 中的文件清单检查 $DIN_LOC_ROOT。对于共享集群,建议多个用户使用统一的 $DIN_LOC_ROOT,以减少重复下载和存储浪费。

5. 重新构建

如果修改了 env_build.xmlMacros.cmake、编译选项,或在 SourceMods/src.* 中加入代码,建议清理后重新构建:

./case.build --clean-all
./case.build

如果只修改 PE layout,有时不需要完整清理,但当不确定依赖关系是否已变化时,应采用更保守的重新构建策略。

6. 学习提示

构建失败时应优先查看最新的组件构建日志,并确认 $EXEROOT$RUNDIR$CASEROOT 的区别。初学者经常在 $CASEROOT 中寻找可执行文件或历史输出,但这些文件通常位于构建目录、运行目录或归档目录。

官方参考