【WRF工具】cmip6-to-wrfinterm工具概述:生成WRF中间文件
cmip6-to-wrfinterm工具概述
- cmip6-to-wrfinterm工具安装
- cmip6-to-wrfinterm工具使用
- 快速启动(Quick start)
- 情景1:MPI-ESM-1-2-HR(默认):
- 情景2:BCMM
- 情景3:EC-Earth3
- 更改使用(Usage)
- 修改 config.ini ( MPI-ESM1-2-HR)
- [可选] 修改 Vtable
- [高级] cmip_handler.py
- 参考
cmip6-to-wrfinterm工具介绍及下载可参见GitHub-cmip6-to-wrfinterm

CMIP6-to-WRFInterim 使用纯 Python 实现将 CMIP6 亚日尺度输出转换为 WRF 中间文件,这些中间文件用于驱动 WRF 模型进行区域动力降尺度应用。目前支持的模型如下:

如果您希望使用其他模型,需要进行相应的修改。
cmip6-to-wrfinterm工具安装
请使用Anaconda3发行版安装Python3。已经对Anaconda3中包含的Python3.8和3.9进行了深入测试,较低版本的Python3也可能可以使用(未经测试)。如果NumPy、Pandas、SciPy、XArray和NetCDF4已正确安装,可以跳过安装步骤。
建议在Anaconda中创建一个新的环境并安装requirements.txt文件。
安装代码如下:
conda create -n test_c2w python=3.9
conda activate test_c2w
pip install -r requirements.txt
cmip6-to-wrfinterm工具使用
快速启动(Quick start)
情景1:MPI-ESM-1-2-HR(默认):
python3 run_c2w.py
请使用类 Unix (Linux) 系统运行上述命令,看到一些 FutureWarnings 是正常的。如果成功,您应该会在文件夹中看到CMIP6:2100-01-02_00和。(如果您是 Windows 子系统用户,请参阅故障排除。)CMIP6:2100-01-02_06./output
将两个中间文件复制或链接到您的 WPS 文件夹,准备好geo_em文件并正确设置namelist.wps,现在您就可以运行metgrid.exe以下 WRF 程序了。
文件夹中有一个涵盖东亚地区的简单示例namelist.wps和供测试。如果您在计算节点上操作,您还可以修改以自动执行从到的程序。namelist.input./sample/MPI-ESM-1-2-HRwps_wrf_pipeline.shmetgrid.exewrf.exe
如果您成功运行示例案例,您将会看到初始条件下以及 6 小时 WRFv4.3 运行后的皮肤温度快照,如上所示。

情景2:BCMM
python3 run_c2w.py -m BCMM
情景3:EC-Earth3
python3 run_c2w.py -m EC-Earth3
文件夹中有一个简单的示例namelist.wps,namelist.input涵盖了中美洲,./sample/EC-Earth3供测试之用。
如果您成功运行示例案例,则应看到初始条件下和 6 小时 WRFv4.3 运行后的皮肤温度快照,如下所示:

更改使用(Usage)
修改 config.ini ( MPI-ESM1-2-HR)
当您正确下载MPI-ESM1-2-HR数据时,首先./conf/config.MPI-ESM1-2-HR.ini正确编辑文件。
[INPUT]
input_root=./sample/MPI-ESM1-2-HR/
model_name=MPI-ESM1-2-HR
scenario = ssp585
esm_flag=r1i1p1f1
grid_flag=gn
#YYYYMMDDHHMM
cmip_strt_ts = 210001020000
cmip_end_ts = 210001020600[OUTPUT]
#YYYYMMDDHHMM, please seperate your ETL processes if request very long-term simulation
etl_strt_ts = 210001020000
etl_end_ts = 210001020600
output_root = ./output/
- [INPUT][‘input_root’]是CMIP6数据的根目录,这里指向的是./sample/文件夹。
- [INPUT][‘model_name’]是模型的名称。目前仅MPI-ESM-1-2-HR支持该模型。如果您计划使用其他模型,则需要设置自己的变量映射表(见下文)。
- [INPUT][‘scenario’] [‘esm_flag’] [‘grid_flag’]用于形成 netCDF 文件名。
- [INPUT][‘cmip_strt_ts’]和[INPUT][‘cmip_end_ts’]是 CMIP6 数据的开始和结束时间。
- [OUTPUT][‘etl_strt_ts’]和[OUTPUT][‘etl_end_ts’]是您所需 ETL 周期的开始和结束时间。
编辑完文件后config.ini,您可以再次运行脚本并运行所需的时间。中间文件将生成在[OUTPUT][‘output_root’]文件夹中。
请注意,对于MPI-ESM1-2-HR,模型未提供 10-200cm 之间的土壤属性,我们用 0-10cm 土壤属性覆盖了它,2d-soilr变量映射表中提供了特殊类型标记。如果您的研究需要准确的土壤属性,您可能需要长期(约 1 个月)的启动运行。
对于历史运行,MPI-ESM1-2-HR不提供大气数据集中的皮肤温度输出,我们tas在这里使用它来表示皮肤温度,这在陆地上是可以接受的,因为陆地特性是从陆地表面模型预测的,但它可能对规定的有偏差SST。我们建议用户tos从海洋数据集下载数据并将其转换为大气数据集格式,并修改Vtable以摄取真实的 SST。
[可选] 修改 Vtable
./db/${MODEL_NAME}.csv记录模型指定的变量映射表。如果您计划使用其他模型或在某些情况下涉及 SST(例如 MPI-ESM1-2-HR 的历史运行),则需要设置自己的变量映射表。
src_v,aim_v,units,type,lvlmark,desc
ta,TT,K,3d,PlevPt,3-d air temperature
hus,SPECHUMD,kg kg-1,3d,PlevPt,3-d specific humidity
ua,UU,m s-1,3d,PlevPt, 3-d wind u-component
va,VV,m s-1,3d,PlevPt, 3-d wind v-component
zg,GHT,m,3d,PlevPt, 3-d geopotential height
ps,PSFC,Pa,2d,Lev, Surface pressure
tas,TT,K,2d,PlevPt, 2-m temperature
uas,UU,m s-1,2d,PlevPt, 10m wind u-component
vas,VV,m s-1,2d,PlevPt, 10m wind v-component
ts,SKINTEMP,K,2d,PlevPt, Skin temperature
psl,PMSL,Pa,2d,PlevPt, Mean sea-level pressure
huss,SPECHUMD, kg kg-1,2d,PlevPt, 2-m relative humidity
mrsos,SM000010, kg/m-3,2d-soil,PlevPt, 0-10 cm soil moisture
tsl,ST000010,K,2d-soil,PlevPt, 0-10 cm soil temp
mrsos,SM010200, kg/m-3,2d-soilr,PlevPt, 10-200 cm soil moisture
tsl,ST010200,K,2d-soilr,PlevPt, 10-200 cm soil temp
- src_v是CMIP6数据中变量的名称,也用于形成netCDF文件名。
- aim_v是存档在WRF中间文件中的变量的名称,由 使用metgrid.exe。
- units是变量的单位。
- type表示变量的类型。3d表示三维变量,2d表示二维变量,2d-soil表示土壤层中的二维变量。注意,对于MPI-ESM-1-2-HR,模型没有提供 10-200cm 之间的土壤属性,我们用 0-10cm 土壤覆盖了它,2d-soilr这里提供了一个特殊的类型标记。
- lvlmark是变量的级别标记。PlevPt表示该变量是具有压力级别的三维变量。
- desc是变量的描述。
[高级] cmip_handler.py
转换器的核心是cmip_handler.py。它是一个处理 CMIP6 数据并将其转换为 WRF 中间文件的 Python 模块。该模块首先根据config.ini文件加载 CMIP6 数据,然后将其插入到常规 latXlon 网格中。最后将数据转换为 WRF 中间文件。该模块包括以下函数和类:
Functions:gen_wrf_mid_template():Generate a WRF-Mid template dict for the WRF-Intermediate data.write_record(out_file, slab_dic):Write a record to a WRF intermediate file--------------------Classes:CMIPHandler():Construct CMIP Handler Methods-------__init__: initialize CMIP Handler with config and loading datainterp_data: interpolate data to common meshwrite_wrfinterm: write wrfinterm file
参考
相关文章:
【WRF工具】cmip6-to-wrfinterm工具概述:生成WRF中间文件
cmip6-to-wrfinterm工具概述 cmip6-to-wrfinterm工具安装cmip6-to-wrfinterm工具使用快速启动(Quick start)情景1:MPI-ESM-1-2-HR(默认):情景2:BCMM情景3:EC-Earth3 更改使用&#x…...
大厂面试真题:阿里经典双重检测DCL对象半初始化问题
阿里面试题中提到的双重检测DCL(Double-Checked Locking)对象半初始化问题,是Java多线程编程中一个经典的问题。以下是对这一问题的详细解析: 一、双重检测锁(DCL)概述 双重检测锁是一种用于实现单例模式…...
20款奔驰CLS300升级原厂抬头显示HUD 23P智能辅助驾驶 触摸屏人机交互系统
以下是为您生成的一份关于 18 款奔驰 CLS 老款改新款的改装文案: 18 款奔驰 CLS 老款改新款:科技升级,畅享极致驾驶体验 在汽车改装的世界里,每一次的升级都是对卓越的追求。今天,让我们一同探索 18 款奔驰 CLS 老款改…...
GoogleNet原理与实战
在2014年的ImageNet图像识别挑战赛中,一个名叫GoogLeNet 的网络架构大放异彩。以前流行的网络使用小到11,大到77的卷积核。本文的一个观点是,有时使用不同大小的卷积核组合是有利的。 回到他那个图里面你会发现,这里的一个通过我们最大的池化…...
MongoDB 数据库服务搭建(单机)
下载地址 下载测试数据 作者:程序那点事儿 日期:2023/02/15 02:16 进入下载页,选择版本后,右键Download复制连接地址 下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.14.tgz …...
基于springboot+小程序的智慧物业平台管理系统(物业1)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 智慧物业平台管理系统按照操作主体分为管理员和用户。 1、管理员的功能包括报修管理、投诉管理管理、车位管理、车位订单管理、字典管理、房屋管理、公告管理、缴费管理、维修指派管理、…...
[SpringBoot] 苍穹外卖--面试题总结--上
前言 1--苍穹外卖-SpringBoot项目介绍及环境搭建 详解-CSDN博客 2--苍穹外卖-SpringBoot项目中员工管理 详解(一)-CSDN博客 3--苍穹外卖-SpringBoot项目中员工管理 详解(二)-CSDN博客 4--苍穹外码-SpringBoot项目中分类管理 详…...
[C#]使用onnxruntime部署yolov11-onnx实例分割模型
【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 在C#中使用ONNX Runtime部署YOLOv11-ONNX实例分割模型,涉及到模型的加载、数据预处理、模型推理和后处理几个关键步骤。 首先,需要确保已经安装了ONNX Runtime的NuGe…...
Polars的Config
Config Config 内容使用示例设置并行执行设置日志详细程度指定null值设置推断schema的行数启用低内存模式获取当前配置选项的值 在Polars的Python API中,Config部分提供了配置选项,允许用户自定义Polars的行为。以下是一些可配置的选项及其使用示例&…...
【面试官】 多态连环问
以下是一些关于封装的常见面试题及答案: 封装 1. 什么是封装? 答案:封装是面向对象编程的三大特性之一,它是将数据和操作数据的方法绑定在一起,并且通过访问修饰符限制对数据的直接访问,只提供特定的方法来…...
Vue 路由设置
为了防止遗忘,记录一下用Vue写前端配置路由时的过程,方便后续再需要用到时回忆。 一、举个例子 假如需要实现这样的界面逻辑: 在HomePage中有一组选项卡按钮用于导航到子页面,而子页面Page1中有一个按钮,其响应事件是…...
力扣110:判断二叉树是否为平衡二叉树
利用二叉树遍历的思想编写一个判断二叉树,是否为平衡二叉树 示例 : 输入:root [3,9,20,null,null,15,7] 输出:true思想: 代码: int getDepth(struct TreeNode* node) {//如果结点不存在,返回…...
Chromium 中JavaScript Fetch API接口c++代码实现(一)
Fetch API主要暴露了三个接口一个方法。 三个接口 Request(资源请求)Response(请求的响应)Headers(Request/Response头部信息)一个方法 fetch()(获取资源调用的方法更多介绍参考 Fetch API - Web API | MDN (mozilla.org) 一、 来看一段前端代码 <!DOCTYPE html> <h…...
ARM(5)内存管理单元MMU
一、虚拟地址和物理地址 首先,计算机系统的内存被组成一个由M个连续的字节大小组成的数组。每字节都会有一个唯一的物理地址。CPU访问内存最简单的方式就是使用物理地址。如下图: 图 1 物理地址,物理寻址 而现在都是采用的都是虚拟寻址的方法。CPU生成一…...
文件上传漏洞原理
原理:\n应用中存在上传功能,但是上传的文件没有经过严格的合法性检验或者检验函数存在缺陷,导致可以上传木马文件到服务器,并且能够执行其中的恶意代码。\n\n危害:\n服务器的网页篡改,网站被挂马࿰…...
Web安全 - 安全防御工具和体系构建
文章目录 安全标准和框架1. 国内安全标准:等级保护制度(等保)2. 国际安全标准:ISO27000系列3. NIST安全框架:IDPRR方法4. COBIT与ITIL框架 防火墙防火墙的基本作用防火墙的三种主要类型防火墙的防护能力防火墙的盲区 W…...
服务器数据恢复—raid磁盘故障导致数据库文件损坏的数据恢复案例
服务器存储数据恢复环境&故障: 存储中有一组由3块SAS硬盘组建的raid。上层win server操作系统层面划分了3个分区,数据库存放在D分区,备份存放在E分区。 RAID中一块硬盘的指示灯亮红色,D分区无法识别;E分区可识别&a…...
requests 中data=xxx、json=xxx、params=xxx 分别什么时候用
如果是要做爬虫模拟一个页面提交,看原页面是post还是get,以及Content-Type是什么。 GET 请求 使用 paramsxxx,查询参数会被编码到 URL 中。POST 请求,Content-Type为 application/x-www-form-urlencoded的,使用 dataxx…...
毕设 大数据抖音短视频数据分析与可视化(源码)
文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕…...
【SQL】深入理解SQL:从基础概念到常用命令
目录 1. SQL基础概念1.1 数据库与表1.2 行与列1.3 数据库与表结构示意图 2. 常用SQL命令3. DML 命令3.1 SELECT语句3.2 INSERT语句3.3 UPDATE语句3.4 DELETE语句 4. DDL 命令3.4.1 CREATE 命令3.4.2 ALTER 命令3.4.3 DROP 命令 5. DCL 命令3.6.1 GRANT 命令3.6.2 REVOKE 命令 学…...
开源机械爪OpenClaw:从设计到力控抓取的完整实现指南
1. 项目概述:从“OpenClaw”看开源机械爪的无限可能最近在逛GitHub的时候,发现了一个挺有意思的项目,叫“MeyerZhou/openclaw”。光看名字,你大概能猜到这是个关于机械爪的开源项目。没错,这是一个旨在提供低成本、模块…...
AI编程助手安全规则实战:从SQL注入防御到团队安全基线构建
1. 项目概述:当AI编程助手遇上安全红线最近在GitHub上看到一个挺有意思的项目,叫“cursor-security-rules”。光看名字,你大概能猜到它和Cursor这个AI编程工具有关,而且重点是“安全规则”。没错,这个项目本质上是一个…...
Go语言实现Hermes引擎:高性能JavaScript字节码虚拟机解析与实践
1. 项目概述:一个Go语言实现的Hermes引擎最近在折腾一些需要高性能模板渲染的后端服务,偶然间在GitHub上发现了LAI-755/hermes-go这个项目。简单来说,这是一个用纯Go语言实现的Hermes引擎。如果你对前端生态熟悉,可能听说过Hermes…...
AI Agent架构深度解析:从核心原理到工程实践
1. 项目概述:一次关于AI Agent的深度技术探险最近在GitHub上看到一个名为“tvytlx/ai-agent-deep-dive”的项目,光看标题就让人眼前一亮。这显然不是一个简单的“Hello World”式教程,而是一次对AI Agent(智能体)技术的…...
基于树莓派与QT Py的本地化物联网红外遥控器DIY指南
1. 项目概述与核心价值想没想过,把家里那堆遥控器——电视的、机顶盒的、空调的、音响的——统统集成到一个你手机能打开的网页里?而且这个控制中心完全在你家局域网里运行,不依赖任何云服务,不用担心厂商倒闭后设备变砖。今天分享…...
基于Stellar的智能体经济安全与效率优化框架解析
1. 项目概述:一个面向智能体经济的安全与效率优化框架最近在探索智能体(Agent)应用生态时,我遇到了一个普遍存在的痛点:如何在一个去中心化、多智能体协作的网络中,既保证交互的安全与可信,又能…...
私有化部署智能助手:基于开源项目smarty-gpt的本地化AI对话平台搭建指南
1. 项目概述:当智能助手遇上本地化部署最近在折腾一个挺有意思的开源项目,叫citiususc/smarty-gpt。乍一看名字,你可能觉得这又是一个基于GPT的聊天机器人,没什么新意。但如果你深入了解一下,就会发现它的定位非常独特…...
AI攻防时间差:当漏洞发现速度碾压修复速度— 聚焦技术核心
AI攻防时间差:当漏洞发现速度碾压修复速度 — 聚焦技术核心 引言:当两个世界碰撞 2026年5月,对于网络安全领域而言,是一个具有分水岭意义的月份。 一边是360人工智能安全研究院在5月12日发布的重磅报告,首次提出**“AI…...
基于MCP协议构建个人AI工作流:模块化套件配置与隐私优先实践
1. 项目概述:一个为个人工作流注入AI智能的MCP套件 最近在折腾AI Agent和自动化工作流的朋友,应该都绕不开一个词: MCP 。全称是Model Context Protocol,你可以把它理解成AI模型(比如Claude、ChatGPT)和外…...
学习信息系统项目管理师我们以什么视角学习?
如果你只是死记硬背那些定义,你会觉得这本书枯燥乏味,而且做题时很容易掉进陷阱。但如果你**“入戏”**,把自己当成那个掌握全局的项目经理,很多答案你凭直觉就能选对。为了帮你把“入戏”进行到底,我给你三个**“入戏…...
