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

CESM2 源码获取与组件检出

介绍 CESM2 源码下载、外部组件检出和输入数据目录的基本原则。

CESM.run2026-06-24cesm-required/01_source_checkout.md

CESM2 源码获取与组件检出

CESM2 从公开 GitHub 仓库发布源码,但完整模型并不只包含主仓库本身。下载主仓库之后,仍需通过 manage_externals/checkout_externals 检出 CAM、CLM、CICE、POP、CISM、MOSART、CIME 等外部组件。因此,CESM2 下载过程应理解为“主仓库克隆 + 外部组件检出”两个阶段。

1. 准备命令行工具

官方文档要求构建和运行 CESM2 的机器上需要具备可用的 gitsvn 命令行客户端。建议先检查版本:

git --version
svn --version

如果目标机器是共享集群,建议优先使用平台已提供的软件模块;如果自行安装,请确认 gitsvn 在登录节点和构建节点上均可访问。

2. 克隆 CESM2 发布版本

以 CESM2.1 系列官方示例为例:

git clone -b release-cesm2.1.5 https://github.com/ESCOMP/CESM.git my_cesm_sandbox
cd my_cesm_sandbox

如需查看可用的 CESM2 发布标签:

git tag --list 'release-cesm2*'

切换到指定发布版本:

git checkout release-cesm2.0.1

实际教学页面中应根据课程使用的 CESM 版本固定示例,不建议在入门教程中混用多个发布分支。

3. 检出外部组件

进入 CESM 主目录后执行:

./manage_externals/checkout_externals

该脚本会读取 Externals.cfg 及相关外部组件配置文件,将 CESM 所需的组件源码检出到主目录下。若需要查看脚本参数:

./manage_externals/checkout_externals --help

完成后检查外部组件状态:

./manage_externals/checkout_externals -S

理想情况下,各组件前方不应出现错误标记。如果出现外部组件未完整检出,可先重新执行 checkout_externals;若问题持续存在,再启用日志:

./manage_externals/checkout_externals --logging

随后检查 manage_externals.log

4. 输入数据不要整库下载

CESM 输入数据规模很大,官方文档明确不建议下载完整输入数据仓库。正确做法是为系统准备一个共享的 $DIN_LOC_ROOT 目录,并由具体 case 按需检查和下载所需数据。

对于未预置输入数据路径的机器,通常需要在建例时或机器配置中明确输入数据目录。后续构建和提交过程中,CIME 会调用 check_input_data 检查当前 case 所需的数据是否存在。

5. 推荐检查清单

  • gitsvn 均可用。
  • CESM 主仓库处于明确的 release 标签或分支。
  • checkout_externals -S 显示外部组件状态正常。
  • 不直接下载完整 inputdata 仓库。
  • 集群上尽量使用统一共享的 $DIN_LOC_ROOT,避免多个用户重复占用大量存储空间。

官方参考