当前位置:网站首页 > Haskell函数式编程 > 正文

cmip6模式输出LAI(cmip6的哪个模式最好)



本文相关视频讲解:CMIP数据驱动WRF

国际耦合模式比较计划(CMIP)为研究不同情景下的气候变化提供了大量的模拟数据,而在实际研究中,全球气候模式输出的数据空间分辨率往往较低(>100Km,缺乏区域气候特征,为了更好地研究不同情景下,某一区域的气候变化特征,我们往往需要更高分辨率的模拟数据。此时便需要对全球模式输出的数据进行降尺度研究,将大尺度信息变量与小尺度信息变量建立联系,获得更多的小尺度的变量。通常,降尺度可分为(1)动力降尺度 (2)统计降尺度 (3)二者结合降尺度

动力降尺度通常是将全球模式输出的数据作为驱动场,输入至区域气候模式中,从而获取描述区域气候特征的更高分辨率数据。WRF作为最常用的中尺度天气预测模式,将其与最新的CMIP6全球模式数据结合,是动力降尺度最常用的方法。

下面以CMIP6数据中的MPI-ESM2-HR数据为例,展示使用CMIP6数据驱动WRF的基本步骤。

对于CMIP6驱动WRF,已有老师在github上上传了基于python的工具包,习惯在LINUX下使用python的用户可以尝试:cmip6-to-wrfnterm

基本思路都是类似的,只不过本文主要是基于服务器现有的NCL、CDO与shell脚本实现。

本次使用的模式为MPI-ESM2-HR数据,空间分辨率为100km,选择原因:数据全面、分辨率好、应用较多,可自己根据需求去官网下载数据。

本次所需下载并驱动的变量有:

``

v_name wrf_name units dim desc notes ps PSFC Pa 2d surface pressure psl PMSL Pa 2d Mean sea-level pressure zg GHT m 3d geopotential height ta TT K 3d air temperature tas TT K 2d 2-m temerature ua UU m s-1 3d u-component wind; uas UU m s-1 2d `10-m u-component wind va VV m s-1 3d v-component wind vas VV m s-1 2d 10-m v-component wind hus SPECHUMD kg kg-1 3d specific humidity huss SPECHUMD kg kg-1 2d 10-m specific humidity ts SKINTEMP K 2d Skin temperature tsl ST000010 K 2d 0-10cm soil temperature tos SST K 2d Sea temperature optional mrsos SM000010 m3 m-3 2d 0-10cm soil moisture snw SNOW kg m-2 2d snow mass optional sic SEAICE 1 2d seaice optional

下载数据命名一般为以下格式:
在这里插入图片描述
变量名称_时间分辨率_层级_模式名称_情景名称_年份时间,在MPI-ECSM-HR变量的对应需要去自行查询变量表格、

 
  

在运行时,输入bash run.sh startdate enddate便可将相应时间段提取并输出为变量_时间的形式,如:
在这里插入图片描述
注意:下载的CMIP6数据变量存在2D与3D区别,在处理3D变量,如ua va时,cdo还应当加上sellevel-提取对应的层数,这是由于该数据中ua va的垂直层仅有7层,而ta hus zg则有28层,在后续运行WRF时,3D数据的层次应当保持一致!!!

处理好后的数据,为了方便,根据2d与3d的不同将其合并:

 
  

运行后可得到2d_MPI_HR和3dMPI_HR文件。

我们应当注意的是,CMIP6的经纬度很多时候并不是等经纬度间距的,比如我下载的数据就是100km,在海洋上分辨率有时达到50km。这就使得我们在运行之前,首先要将其插值到均一的lat/lon坐标下,否则WRF将很难处理。

值得注意的是,CMIP6数据可分为大气与海洋两部分,而大气的经纬度与海洋的经纬度则存在差异,比如,大气的经纬度数据为一维数据,海洋则以二维数据给出,因此插值时需要分开处理。请在插值前弄清楚变量的经纬度网格。

在这里插入图片描述
tas经纬度,以一维表征

在这里插入图片描述
tos经纬度网格为曲线网格,经纬度为二维形式
对于两种在ncl中使用不同的插值函数即可,对一维使用将经纬度转为映射文件,在使用插值,对二维曲线网格,使用函数,再使用插值。
以下为插值的代码示例:


 
  

在这里定义了一个regird_mpi函数,在使用是输入文件名以及要插值的变量即可,根据经纬度网格点不同,可将该函数中的和相互替换。

最后,要将插值后的变量数据,转写为WPS的中间文件,该中间文件可直接被metgrid.exe读取,并生成met_em文件。
ncl中就有现成的函数,需要注意的是,撰写时变量的FIELD应当包括在METGRID.TBL中相同,否则metgrid无法识别。
如果数据是2d,则直接撰写,如果数据为3d,则根据层数,循环一层层写:

 
  

最后使用WPS文件夹下的util/https://blog.csdn.net/weixin_/article/details/rd_intermediate.exe 确认是否读取成功,关于这一部分,可参考我以前的博客:撰写WPS intermediate file添加海冰场

将输出的中间文件链接至WPS文件夹,修改namelist.wps文件夹&metgrid部分的fg_name,使其读取我们撰写的中间文件。
在这里插入图片描述之后的步骤就和普通运行WRF一样了,请注意由于数据本身的性质,土壤层数与垂直层数量较少,在设置namelist时记得修改与其保持一致。

主要的坑在于数据本身。

  1. 3D数据垂直层不一致,ua与va数据仅有7层,而ta hus zg等数据却又有8层,因此在撰写文件时必须注意对应层数保持一致。
  2. 经纬度格点不一致,注意经纬度各点的类别,在插值时注意区分。
  3. CMIP6数据本身并不是再分析资料,而是预测气候变化的模型输出,常常会出现数据量与WRF所需不对应的问题,请注意各个变量描述。
  4. 除了2D与2D以外,也可以使用CMIP6的2D静态数据,如LANDSEA,步骤类似,主要是通过namelist.wps中的constant_name来设置读取。

相关代码与数据已经发布在Github上,请查询:Write_CMIP_to_wps_int

到此这篇cmip6模式输出LAI(cmip6的哪个模式最好)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 多级列表样式怎么设置word(多级列表样式怎么设置1.2变为2.1)2025-12-15 18:54:08
  • jflash命令模式烧录(jflash烧写stm32)2025-12-15 18:54:08
  • 阿里巴巴支付方式有哪些(阿里巴巴支付方式是什么)2025-12-15 18:54:08
  • pcap文件是什么(pcapng文件格式)2025-12-15 18:54:08
  • pcap文件格式怎么看(pcapng文件格式)2025-12-15 18:54:08
  • ipv6报文结构和ipv4相比有什么变化(ipv4和ipv6报文格式区别)2025-12-15 18:54:08
  • 指数与对数的转换公式例题(指数与对数的相互转换)2025-12-15 18:54:08
  • ifstream的read函数(ifstream eof函数)2025-12-15 18:54:08
  • oracle时间函数大全(oracle时间运算)2025-12-15 18:54:08
  • rmsep公式(rmse计算)2025-12-15 18:54:08
  • 全屏图片