本指南的第一部分介绍了在 CIME 案例控制系统中所需的基本命令,以便让模型能够顺利运行。
1.1. 前提条件
本指南的第一部分假设您已在使用的计算机上安装了 CIME 或由 CIME 驱动的模型以及必要的输入文件。如果不是这样,请参阅移植 CIME 。
其他前提条件:
-
熟悉基本的气候建模概念。
-
熟悉 UNIX 命令行终端和 UNIX 开发环境。
-
一个正确的 Python 解释器版本。
CIME 的命令是 Python 脚本,需要安装正确版本的 Python 解释器。Python 版本必须大于 2.11。你可以这样确定你使用的是哪个版本:
$ python --version
如果你需要更新 Python 版本,请查阅本地文档。
1.2. 关键术语和概念
以下关键术语和概念已根植于 CCS,并在本文档中频繁使用。请参阅术语表 以获取更完整的术语列表。
组件
在 CIME 中,一个耦合地球系统模型由通过耦合器相互作用并由驱动器控制的组件组成。
在 CIME 的当前版本中,允许有 7 个物理组件。它们是:
大气、海洋、海冰、陆地表面、河流、冰盖、海浪
组件也被称为“模型”。选择 7 个组件的部分原因是历史原因,部分原因是地球系统的物理特性:这 7 个组件在地球系统中占据物理上不同的领域,并且/或者需要不同的数值网格来求解。
组件类型
对于 7 个物理组件(模型)中的每一个,在 CIME 驱动的耦合模型中可以有三种不同的实现方式。
主动 :求解一组复杂的方程来描述模型的行为。也称为预测或完整模型。这些可以是完整的环流模型。可能有多个主动模型可用(例如 POP 和 MPAS-ocean 来表示全球海洋),但在组件集中一次只能使用一个海洋或大气模型。
数据 :对于某些气候问题,有必要通过用一个发送和接收与其他模型相同变量但值从文件读取而非从方程计算的版本替换主动模型来减少系统内的反馈。接收到的值被忽略。这些主动模型的替代品称为数据模型 。
stub: 对于某些配置,无需数据模型,而是使用一个 stub 版本,该版本仅占用驱动程序中的所需位置,并不发送或接收任何数据。例如,如果您正在设置一个水世界案例,您只需要为陆地模型提供一个 stub。
component set 或 compset:
7 个组件的特定激活、数据和 stub 版本的组合被称为一个 component set 或 compset。案例控制系统允许用户定义多个可能的 compsets,并在支持的平台上配置和运行它们。这里是一个 E3SM 的 longname 组件集示例,用于完全耦合的激活案例:
1850SOI_EAM%CMIP6_ELM%CNPRDCTCBCTOP_MPASSI_MPASO_MOSART_SGLC_SWAV
参见 Component Sets 了解更多信息。“GLC”最初意为“冰川模型”,现在是一个冰盖模型,但 GLC 字母仍然保留。
组件集别名:
输入像上面这样的 compset longname 可能会很累,因此 CCS 允许定义一个更短的 compset alias,这是一个简短的字符串,用来替代 longname。在 E3SM 中,上面的 longname 可以被称为“WCYCL1850”。
注意:
很久以前,CESM 就根据主动、数据和存根组件的组合,为 compset 别名中的首字母建立了一套惯例。如果你看到提到“B-case”或“F-case”,它就来源于这些惯例。这些惯例早于波浪模型作为选项的引入。
组件简称 | 含义 |
---|---|
A | 所有数据模型 |
B | 所有使用存根 glc 的完全主动模型 |
C | 带有数据 atm、河流和海冰的主动海洋模型。存根 lnd、glc |
D | 具有数据的海冰、大气、海洋(板状)和河流。stub 陆地,冰川 |
E | 活跃的 atm、lnd、sea-ice、river、数据海洋(slab)、stub glc |
F | 具有数据的大气、陆地、河流、海冰(仅热力学),海洋(固定海表温度),stub 冰川 |
G | 具有数据的海洋和海冰,大气和河流,stub 陆地和冰川 |
H | 活动海洋和海冰,数据大气, stub lnd,河流和 glc |
I | 活动陆地和河流模型,数据大气, stub ocn,海冰, glc |
IG | 活动陆地、河流和冰盖,数据大气, stub ocn,海冰 |
S | 所有 stub 模型(仅用于测试) |
X | 所有 x-compsets(除 stub glc 外的每个组件都是 2D 正弦波;仅用于测试) |
grid set:
每个活动的模型都必须在数值网格上求解其方程。CIME 允许系统中的模型使用不同的网格。所有数值网格的集合被称为 grid set,通常也简称为 grid。像 compset longname 一样,CCS 允许定义一个别名来表示一个 grid set。这个别名也被称为 grid,有时也被称为 resolution。
机器和编译器 :
机器是指你用来运行 CIME 并构建和运行气候模型的计算机,它可以是工作站或国家级超级计算机。 机器的确切名称通常是 UNIX 主机名,但也可能是任何字符串。一台机器可能有一个或多个 Fortran、C 和 C++ 编译器 ,这些编译器用于编译模型的源代码和 CIME。
案例 :
要构建和执行一个支持 CIME 的气候模型,你必须选择 compset、模型网格、机器和编译器。这些选择的集合,以及你可能进行的任何额外定制,被称为案例 。
开箱即用 :
任何可以通过 CIME 配置文件定义,并仅使用 CIME 案例控制系统中的基本命令构建的案例都是“开箱即用”案例。由于 CIME 及其配置文件与模型源代码一起保存并进行版本控制,因此可以匹配支持的开箱即用案例与特定版本的模型源代码,从而提高可重复性和来源证明。开箱即用案例也称为基准案例
1.3. CCS 和你的环境
在使用任何 CCS 命令之前,设置 CIME_MODEL
环境变量。在 bash 中,使用 export 命令,并将替换为适当文本。当前可能性是“e3sm”或“cesm。”
$ export CIME_MODEL=<model>
设置 CIME 变量的方法有多种。对于可以在多种方式中设置的变量,优先级顺序是:
-
变量出现在 CIME 命令的命令行参数中
-
变量被设置为环境变量
-
变量设置在
$HOME/.cime/config
中,具体说明请参考此处 。 -
变量设置在
$CASEROOT
的 xml 文件中
1.4. 快速入门
要查看使用 CIME 创建、配置、构建和运行案例的示例,请执行以下命令。(这假设 CIME 已移植到您的当前机器)。
$ cd cime/scripts
$ ./create_newcase --case mycase --compset X --res f19_g16
$ cd mycase
$ ./case.setup
$ ./case.build
$ ./case.submit
每个命令的输出将在以下部分进行说明。
提交案例后,您可以通过监控 CaseStatus 文件来跟踪运行进度。
重复命令,直到看到消息 case.run success
。
1.5. 使用 query_config 查询可用的预定义 compsets
您的 CIME 驱动模型可能为模型开发者广泛使用的案例定义了许多 compset 和 gridset 别名。
使用工具 query_config 查看您的模型可用的现成 compsets、组件、网格和机器。
要查看可用的 compsets、组件、网格和机器的列表,请查看 help 文本:
$ query_config --help
要查看所有可用的组件集,请尝试:
$ query_config --compsets all
使用示例
要运行 query_config 获取 compset 信息,请参考以下示例,其中 drv 是组件名称:
$ query_config --compsets drv
输出类似下面的内容:
--------------------------------------
Compset Short Name: Compset Long Name
--------------------------------------
A : 2000_DATM%NYF_SLND_DICE%SSMI_DOCN%DOM_DROF%NYF_SGLC_SWAV
ADWAV : 2000_SATM_SLND_SICE_SOCN_SROF_SGLC_DWAV%CLIMO
S : 2000_SATM_SLND_SICE_SOCN_SROF_SGLC_SWAV_SESP
ADLND : 2000_SATM_DLND%SCPL_SICE_SOCN_SROF_SGLC_SWAV
ADESP_TEST : 2000_DATM%NYF_SLND_DICE%SSMI_DOCN%DOM_DROF%NYF_SGLC_SWAV_DESP%TEST
X : 2000_XATM_XLND_XICE_XOCN_XROF_XGLC_XWAV
ADESP : 2000_DATM%NYF_SLND_DICE%SSMI_DOCN%DOM_DROF%NYF_SGLC_SWAV_DESP
AIAF : 2000_DATM%IAF_SLND_DICE%IAF_DOCN%IAF_DROF%IAF_SGLC_SWAV
每个模型组件都指定了 compset 长名中 % 修饰符之后可以出现的内容的定义(例如,在 DOCN%DOM 中的 DOM)。
要查看 DOCN 支持哪些修饰符,请按照以下示例运行 query_config :
$ query_config --component docn
输出类似以下内容:
=========================================
DOCN naming conventions
=========================================
_DOCN%AQP1 : docn prescribed aquaplanet sst - option 1
_DOCN%AQP10 : docn prescribed aquaplanet sst - option 10
_DOCN%AQP2 : docn prescribed aquaplanet sst - option 2
_DOCN%AQP3 : docn prescribed aquaplanet sst - option 3
_DOCN%AQP4 : docn prescribed aquaplanet sst - option 4
_DOCN%AQP5 : docn prescribed aquaplanet sst - option 5
_DOCN%AQP6 : docn prescribed aquaplanet sst - option 6
_DOCN%AQP7 : docn prescribed aquaplanet sst - option 7
_DOCN%AQP8 : docn prescribed aquaplanet sst - option 8
_DOCN%AQP9 : docn prescribed aquaplanet sst - option 9
_DOCN%DOM : docn prescribed ocean mode
_DOCN%IAF : docn interannual mode
_DOCN%NULL : docn null mode
_DOCN%SOM : docn slab ocean mode
_DOCN%SOMAQP : docn aquaplanet slab ocean mode
_DOCN%SST_AQUAP : docn aquaplanet mode:
有关 CIME 如何确定 query_config 输出的更多详细信息,请参阅组件集 。