跳转到主要内容

耦合模型配置生成

项目描述

CoupledModelDriver

tests codecov build version license style documentation

CoupledModelDriver 生成用于 NEMS-coupled 海洋耦合模型集合的上层作业提交框架和配置目录。

pip install coupledmodeldriver

它使用 NEMSpy 生成 NEMS 配置文件,在运行之间共享通用配置,并将预启动和网格划分组织成独立的作业以进行依赖性提交。

文档可在 https://coupledmodeldriver.readthedocs.io 找到

支持的模型和平台

  • 模型
    • 环流模型
    • 强迫
      • ATMESH
      • WW3DATA
      • HURDAT最佳轨迹
      • OWI
  • 平台
    • 本地
    • Slurm
      • Hera
      • Stampede2
      • Orion

组织/责任

CoupledModelDriver 是由美国联邦政府机构美国国家海洋和大气管理局(NOAA)下属的海岸海洋建模分支(CMMB)开发的,用于 COASTAL Act 项目。

使用示例

1. 生成 JSON 配置文件

initialize_adcirc 根据给定参数创建 JSON 配置文件。此命令未公开的 ADCIRC 运行选项,如 runsgwce_solution_scheme,可以通过直接修改 JSON 文件进行指定。以下示例创建了一个小 Shinnecock Inlet 网格的耦合 (ATMESH + WW3DATA) -> ADCIRC 的 JSON 文件。

initialize_adcirc \
    --platform HERA \
    --mesh-directory /scratch2/COASTAL/coastal/save/shared/models/meshes/shinnecock/v1.0 \
    --output-directory hera_shinnecock_ike_spinup_tidal_atmesh_ww3data \
    --modeled-start-time 20080823 \
    --modeled-duration 14:06:00:00 \
    --modeled-timestep 00:00:02 \
    --nems-interval 01:00:00 \
    --adcirc-executable /scratch2/COASTAL/coastal/save/shared/repositories/CoastalApp/ALLBIN_INSTALL/NEMS-adcirc-atmesh-ww3data.x \
    --adcirc-processors 40
    --adcprep-executable /scratch2/COASTAL/coastal/save/shared/repositories/CoastalApp/ALLBIN_INSTALL/adcprep \
    --modulefile /scratch2/COASTAL/coastal/save/shared/repositories/CoastalApp/modulefiles/envmodules_intel.hera \
    --forcings tidal,atmesh,ww3data \
    --tidal-source TPXO \
    --tidal-path /scratch2/COASTAL/coastal/save/shared/models/forcings/tides/h_tpxo9.v1.nc \
    --tidal-spinup-duration 12:06:00:00 \
    --atmesh-path /scratch2/COASTAL/coastal/save/shared/models/forcings/shinnecock/ike/wind_atm_fin_ch_time_vec.nc \
    --ww3data-path /scratch2/COASTAL/coastal/save/shared/models/forcings/shinnecock/ike/ww3.Constant.20151214_sxy_ike_date.nc

这将创建以下目录 hera_shinnecock_ike_spinup_tidal_atmesh_ww3data/,包含以下 JSON 配置文件:

📂 hera_shinnecock_ike_spinup_tidal_atmesh_ww3data/
┣ 📜 configure_adcirc.json
┣ 📜 configure_atmesh.json
┣ 📜 configure_modeldriver.json
┣ 📜 configure_nems.json
┣ 📜 configure_slurm.json
┣ 📜 configure_tidal_forcing.json
┗ 📜 configure_ww3data.json

这些文件包含 ADCIRC 运行的相关配置值。在生成实际模型配置之前,您可能需要更改这些值以修改运行结果。例如,NEMS 连接和运行顺序需要在 configure_nems.json 中手动指定。

2. 生成模型配置文件

generate_adcirc 使用从 JSON 配置文件(上一步生成)读取的选项生成 ADCIRC 运行配置(fort.14fort.15 等)。

cd hera_shinnecock_ike_spinup_tidal_atmesh_ww3data
generate_adcirc

生成的配置将如下所示:

📂 hera_shinnecock_ike_spinup_tidal_atmesh_ww3data/
┣ 📜 configure_adcirc.json
┣ 📜 configure_atmesh.json
┣ 📜 configure_modeldriver.json
┣ 📜 configure_nems.json
┣ 📜 configure_slurm.json
┣ 📜 configure_tidal_forcing.json
┣ 📜 configure_ww3data.json
┣ 📂 spinup/
┃  ┣ 📜 fort.13
┃  ┣ 🔗 fort.14 -> ../fort.14
┃  ┣ 📜 fort.15
┃  ┣ 📜 nems.configure
┃  ┣ 📜 model_configure
┃  ┣ 🔗 atm_namelist.rc -> ./model_configure
┃  ┣ 📜 config.rc
┃  ┣ 📜 setup.job
┃  ┗ 📜 adcirc.job
┣ 📂 runs/
┃  ┗ 📂 unperturbed/
┃    ┣ 📜 fort.13
┃    ┣ 🔗 fort.14 -> ../../fort.14
┃    ┣ 📜 fort.15
┃    ┣ 🔗 fort.67.nc -> ../../spinup/fort.67.nc
┃    ┣ 🔗 fort.68.nc -> ../../spinup/fort.68.nc
┃    ┣ 📜 nems.configure
┃    ┣ 📜 model_configure
┃    ┣ 🔗 atm_namelist.rc -> ./model_configure
┃    ┣ 📜 config.rc
┃    ┣ 📜 setup.job
┃    ┗ 📜 adcirc.job
┣ 📜 fort.14
┣ 📜 cleanup.sh
┗ 📜 run_hera.sh

3. 运行模型

上一步也将生成一个名为 ./run_hera.sh 的脚本。您可以运行它以将模型运行提交到 Slurm作业队列

./run_hera.sh

队列将添加以下作业:

   JOBID CPU NODE DEPENDENCY       NODELIST(REA NAME
20967647 1   1    (null)           (None)       ADCIRC_SETUP_SPINUP
20967648 40  1    afterok:20967647 (Dependency) ADCIRC_COLDSTART_SPINUP
20967649 1   1    (null)           (None)       ADCIRC_SETUP_unperturbed
20967650 42  2    afterok:20967649 (Dependency) ADCIRC_HOTSTART_unperturbed

4. 跟踪模型进度

check_completion 检查运行中的模型目录的完成状态。

cd hera_shinnecock_ike_spinup_tidal_atmesh_ww3data
check_completion
{
    "hera_shinnecock_ike_spinup_tidal_atmesh_ww3data": {
        "spinup": "running - 15%",
        "runs": "not_started - 0%"
    }
}

您也可以传递一个特定的目录(或多个目录)

check_completion spinup
{
    "spinup": "running - 27%"
}
cd run_20211027_florence_besttrack_250msubset_quadrature
check_completion runs/*_13
{
    "vortex_4_variable_perturbation_13": "completed - 100.0%",
    "vortex_4_variable_quadrature_13": "not_started - 0%"
}

如果运行出现错误,可以通过传递 --verbose 来查看详细的日志

check_completion spinup
{
    "spinup": "error - 0%"
}
check_completion spinup --verbose
{
    "spinup": {
        "status": "error",
        "progress": "0%",
        "error": {
            "ADCIRC_SETUP_SPINUP.err.log": [
                "forrtl: severe (24): end-of-file during read, unit -4, file /proc/92195/fd/0\n",
                "Image              PC                Routine            Line        Source             \n",
                "adcprep            000000000069A72E  Unknown               Unknown  Unknown\n",
                "adcprep            00000000006CBAAF  Unknown               Unknown  Unknown\n",
                "adcprep            000000000050A5CB  openprepfiles_           6996  prep.F\n",
                "adcprep            0000000000507F22  prep13_                   753  prep.F\n",
                "adcprep            000000000042E2E9  prepinput_                717  adcprep.F\n",
                "adcprep            000000000042BCDB  MAIN__                    239  adcprep.F\n",
                "adcprep            000000000040B65E  Unknown               Unknown  Unknown\n",
                "libc-2.17.so       00002AAEC02EB555  __libc_start_main     Unknown  Unknown\n",
                "adcprep            000000000040B569  Unknown               Unknown  Unknown\n",
                "srun: error: h24c51: task 0: Exited with exit code 24\n",
                "srun: launch/slurm: _step_signal: Terminating StepId=25366266.1\n"
            ]
        }
    }
}
check_completion runs
{
    "spinup": "failed - 0%"
}
check_completion runs --verbose
{
    "runs": {
        "status": "failed",
        "progress": "0%",
        "failed": {
            "fort.16": "ADCIRC output file `fort.16` not found"
        },
        "error": {
            "ADCIRC_SETUP_unperturbed.err.log": [
                "slurmstepd: error: execve(): /scratch2/COASTAL/coastal/save/shared/repositories/CoastalApp/ADCIRC/ALLBIN_INSTALL/adcprep: No such file or directory\n",
                "srun: error: h18c49: task 0: Exited with exit code 2\n",
                "srun: launch/slurm: _step_signal: Terminating StepId=25366268.0\n"
            ]
        }
    }
}

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分发

coupledmodeldriver-1.7.1.post1.tar.gz (63.7 kB 查看哈希值)

上传时间 源码

构建发行版

coupledmodeldriver-1.7.1.post1-py3-none-any.whl (77.4 kB 查看哈希值)

上传时间 Python 3

支持