CESM2 源码获取与组件检出
介绍 CESM2 源码下载、外部组件检出和输入数据目录的基本原则。
CESM2 源码获取与组件检出
CESM2 从公开 GitHub 仓库发布源码,但完整模型并不只包含主仓库本身。下载主仓库之后,仍需通过 manage_externals/checkout_externals 检出 CAM、CLM、CICE、POP、CISM、MOSART、CIME 等外部组件。因此,CESM2 下载过程应理解为“主仓库克隆 + 外部组件检出”两个阶段。
1. 准备命令行工具
官方文档要求构建和运行 CESM2 的机器上需要具备可用的 git 与 svn 命令行客户端。建议先检查版本:
git --version
svn --version
如果目标机器是共享集群,建议优先使用平台已提供的软件模块;如果自行安装,请确认 git 与 svn 在登录节点和构建节点上均可访问。
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. 推荐检查清单
git与svn均可用。- CESM 主仓库处于明确的 release 标签或分支。
checkout_externals -S显示外部组件状态正常。- 不直接下载完整 inputdata 仓库。
- 集群上尽量使用统一共享的
$DIN_LOC_ROOT,避免多个用户重复占用大量存储空间。
官方参考
- CESM2 Downloading CESM2: https://escomp.github.io/CESM/versions/cesm2.1/html/downloading_cesm.html
- CESM GitHub Repository: https://github.com/ESCOMP/CESM