Skip to Content
教程列表Cime使用 CIME 创建一个 Case

本节及以下章节将提供更多关于 CIME 案例控制系统基本命令的详细信息:create_newcasecase.setupcase.buildcase.submit。在支持的系统上,您仅使用这 4 个命令即可配置、构建和运行许多复杂的气候模型配置。

要检查您的设备是否受支持,请尝试:

$ query_config --machines

如果您不在开箱即用的 CIME 支持平台上,您需要在继续之前将 CIME 移植到您的系统。

2.1. 调用 create_newcase

创建基于 CIME 的实验的第一步是使用 create_newcase

帮助文本中查看 create_newcase 的选项。:

$ create_newcase --help

create_newcase 所需的唯一参数是:

$ create_newcase --case CASENAME --compset COMPSET --res GRID

创建 CIME 实验或案例至少需要指定一个 compset、一个模型网格和一个案例目录。CIME 支持开箱即用的组件集模型网格硬件平台 (机器)。

警告

--case 参数必须是字符串,且不能包含以下任何特殊字符

> + * ? < > { } [ ] ~ ` @ :

--case 参数用于定义您的用例名称,这是一个非常重要的元数据,将用于文件名、内部元数据和目录路径。CASEROOT 是 create_newcase 将创建的目录,其名称与 CASENAME 相同。如果 CASENAME 仅是名称(不是路径),CASEROOT 将在您执行 create_newcase 的目录中创建。如果 CASENAME 是相对路径或绝对路径,CASEROOT 将在那里创建,用例的名称将是路径的最后一部分。

2.2. 调用 create_newcase 的结果

假设 create_newcase 被如下调用。这里,$CIMEROOT 是 CIME 分发的根目录的完整路径名:

$ cd $CIMEROOT/scripts $ create_newcase --case ~/cime/example1 --compset A --res f09_g16_rx1

在示例中,该命令创建一个 $CASEROOT 目录:~/cime/example1。如果该目录已存在,则会打印警告并中止命令。

--case 的参数中,案例名称取自最后一个斜杠之后的部分——因此这里的案例名称是 example1

create_newcase 的输出包括诸如信息等。

  • 组件集长名称是 2000_DATM%NYF_SLND_DICE%SSMI_DOCN%DOM_DROF%NYF_SGLC_SWAV

  • 网格集是 a%0.9x1.25_l%0.9x1.25_oi%gx1v6_r%r05_m%gx1v6_g%null_w%null

create_newcase$CASEROOT 中安装文件,这些文件将用于构建和运行模型,并可选择在目标平台上归档案例。

运行 create_newcase$CASEROOT 中创建以下脚本、文件和目录:

用户脚本

  • case.build

    用于构建组件和工具库以及模型可执行文件的脚本。

  • case.cmpgen_namelist

    执行 namelist 基线操作(比较、生成或两者都执行)的脚本。”

  • case.qstatus

    查询任何队列系统的队列的脚本。

  • case.setup

    用于设置案例(创建 case.run 脚本、宏文件和 user_nl_xxx 文件)的脚本。

  • case.submit

    用于使用机器的批处理队列系统提交案例运行的脚本。

  • check_case

    用于验证大小写是否设置正确的脚本。

  • check_input_data

    用于检查各种输入数据集并将它们移至正确位置的脚本。

  • pelayout

    查询和修改每个组件模型的 NTASKS、ROOTPE 和 NTHRDS 的脚本。

  • preview namelists

    用户在运行模型前查看其组件 namelists 的脚本,位于 $CASEROOT/CaseDocs

  • preview_run

    用于用户查看批量提交和 mpirun 命令的脚本。”

  • xmlchange

    用于修改 xml 文件中的值的脚本。

  • xmlquery

    查询 xml 文件中值的脚本。

XML 文件

  • env_archive.xml

    定义发送到短期存档的文件模式。您可以随时编辑此文件。您 CANNOT 使用 xmlchange 来修改此文件中的变量。”

  • env_batch.xml

    设置批处理系统设置,如墙钟时间和队列名称。”

  • env_build.xml

    设置模型构建设置。这包括组件分辨率和组件编译时配置选项。更改此文件后,您必须运行 case.build 命令。

  • env_case.xml

    create_newcase 设置的参数

  • env_mach_pes.xml

    设置组件机器特定的处理器布局(参见更改 pe 布局)。此处的设置对负载均衡良好的模拟至关重要(参见负载均衡 )。

  • env_mach_specific.xml

    为构建和/或运行设置一系列机器特定的环境变量。您 不能 使用 xmlchange 来修改此文件中的变量。

  • env_run.xml

    设置运行时设置,如运行长度、重启频率、耦合器诊断输出以及短期和长期归档。此文件可以在作业开始前的任何时间进行编辑。

  • env_workflow.xml

    设置运行时工作流的参数。

用户源修改目录

  • SourceMods

    顶层目录,包含每个 compset 组件的子目录,你可以在其中放置该组件的修改源代码。你也可以在这里放置修改后的 buildnml 和 buildlib 脚本。”

来源

  • README.case

    详细说明 create_newcase 使用的文件。这是一个跟踪运行时问题和变更的好地方。”

  • CaseStatus

    包含当前案件所执行操作列表的文件。

不可修改的工作目录

  • Buildconf,

    包含生成组件名称列表和组件及工具库(例如 PIO 或 MCT)脚本的工 作目录。你永远不需要编辑此目录的内容。

  • LockedFiles/

    存放不应更改文件副本的工作目录。某些 xml 文件在使用变量后会被锁定且不再更改(见下文)。

  • Tools/

    包含支持实用脚本的工作目录。你永远不需要编辑这个目录的内容。”

2.3. 案例目录中的锁定文件

$CASEROOT xml 文件的组织方式是,在变量在其他脚本系统部分解析(使用)后,可以在某些点上锁定这些变量。

CIME 通过在 $CASEROOT/LockedFiles锁定文件,并禁止你修改该文件来实现这一点,除非根据文件类型,你调用 case.setup –cleancase.build –clean

CIME 会根据以下规则锁定你的 $CASEROOT 文件:

  • create_newcase 后锁定 env_case.xml 中的变量。

    env_case.xml 文件永远无法解锁。

  • case.setup 后锁定 env_mach_pes.xml 中的变量。

    要解锁 env_mach_pes.xml,请运行 case.setup –clean

  • case.build 完成后锁定 env_build.xml 中的变量。

    要解锁 env_build.xml,运行 case.build –clean

  • env_run.xmlenv_batch.xmlenv_archive.xml 中的变量永远不会被锁定,而且大多数变量可以随时更改。

  • env_batch.xml 文件中存在一些例外情况。

2.4. 向 create_newcase 添加 –user-mods-dir 参数

用户可能希望通过 user_nl_xxx 文件修改、某些组件的 SourceMods 以及 xmlchange 命令的组合来定制目标案例。例如,用户可能希望基于一组共同的 namelist、源代码和/或案例 xml 设置来执行一系列实验。与其每次生成新的实验 CASEROOT 时都进行这些更改,用户可以在本地磁盘上创建一个包含一组更改的目录,这些更改将应用于每个案例。

例如,该目录可以包含以下文件:

$ user_nl_cpl $ shell_commands (this would contain ./xmlchange commands) $ SourceMods/src.cam/dyncomp.F90

需要注意的是,包含 xmlchange 命令的文件必须命名为 shell_commands,才能在案例创建时被识别和执行。

组件目录的结构不需要与组件源代码中的结构相同。例如,如果用户想要修改 CAM 源代码中的 src/dynamics/eul/dyncomp.F90 文件,应该直接将修改后的文件放入目录 SourceMods/src.cam 中。无需模仿源代码结构,例如 SourceMods/src.cam/dynamics/eul

当用户使用 --user-mods-dir 参数调用 create_newcase,并指向包含这些修改的目录的完整路径名时,CASEROOT 将被创建并应用这些修改。

Last updated on