10
\ begingroup美元

我是WRF V3.5的用户,主要用于气象模拟。
有时,我会运行模型很长一段时间

我的尝试

我把长周期(e。G 1年)分成几个短的。

例如:

## WPS名称列表。wps start_date = '2014-01-01_06:00:00' end_date = '2014-01-31_23:00:00'在。csh文件中设置WRF运行周期。Set year = "2014" foreach strtime (010106010512 010500011012 011000011512 011500012012 012000012512 012500013012 013000020100) Set smon = ' echo ${strtime}|cut -c1-2 ' Set sday = ' echo ${strtime}|cut -c3-4 ' Set SHR = ' echo ${strtime}|cut -c5-6 ' Set emon = ' echo ${strtime}|cut -c9-10 ' Set ehr = ' echo ${strtime}|cut -c11-12 ' &time_control run_days = 0, run_hours = 132, run_minutes = 0, run_seconds = 0, start_year = ${year},${year},Start_month = ${smon},${smon}, start_day = ${sday},${sday}, start_hour = ${shr},${shr}, start_minute = 00,00, start_second = 00,00, end_year = ${year},${year}, end_month = ${emon},${emon}, end_day = ${eday},${ehr}, end_hour = ${ehr}, end_minute = 00,00, end_second = 00, interval_seconds = 21600

在这短短的时间里,我将前12小时作为旋转的时间(除了开始的时间)。

这是我从网上剪下来的时序建模设置的示意图。

http://i12.tietuku.cn/afd906ddd823ddd6.png

结果

它生成8个.nc文件,每个文件包含132帧数据。
现在,我使用netCDF运营商(NCO)来处理输出文件。

  1. 使用ncks要分别删除每个文件的前12小时帧。

  2. 使用ncrcat将所有8个.nc文件连接在一起,得到一个文件,代表整个模拟周期。

问题

我曾经用过这种方法。但是当文件数量很大时,它实际上是一种转储方法。

有人提供您处理旋转数据删除的方法吗?

我的目标

  • 该模型只能生成一个包含所有仿真周期的文件。
  • 开机时间可以被上一个文件的帧自动覆盖。

更新:希望你分享你的方法!

\ endgroup美元
3.
  • 1
    \ begingroup美元 我经常做同样的事情,除了修剪旋转上升周期。你真的需要把所有东西都放在一个文件里吗?我所做的是在一个单独的文件中(在我的例子中是每小时)每个时间段都有WRF输出,并在单独的目录中组织单独的运行。当我需要连接所有内容时,我只需从shell或Python脚本中选择所需的文件。 \ endgroup美元
    - - - - - -milancurcic
    2016年3月17日15:21
  • \ begingroup美元 谢谢你的回复。因此,您的意思是每小时设置一个WRF输出文件。如何避免后一帧的叠加?例如,wrfout_2016_03_17_00是模拟的最后一帧。下一个模拟开始wrfout_2016_03_17_00.然后文件将被重写。但我想留着旧的那个。 \ endgroup美元
    - - - - - -汉Zhengzu
    2016年3月17日15:56
  • 2
    \ begingroup美元 我将来自不同运行的输出文件存储在不同的目录中,以避免较旧的输出被较新的输出覆盖。 \ endgroup美元
    - - - - - -milancurcic
    2016年3月17日21:45

2答案2

2
\ begingroup美元

有一个特点- d选项,用于调用ncks多余的。但是,从NCO版本4.2.1(2012年8月)开始就可以使用了。

ncrcat -d时间,13,,132,120 wrfout*摘要。Nc # -d dim,[min][,[max][,[stride][,[subcycle]]]] .

这一特性深深隐藏在在线手册中。你可以在这里找到它:nco.sourceforge.net/nco.html #次循环

解释:

  • 13:我们考虑的第一步
  • [空]:直到最后
  • 132:我们的循环长度为132步
  • 120:我们取每个周期的前120个值(从13号开始)

如果我们写0132年- d, 13日,等于0132年- d, 13日,1,我们只能得到从第13个开始的第132个值。

我不处理WRF输出,但我们使用化学传输模型CMAQ工作。我们得到每小时解析浓度输出文件的每一天。这些文件有25个时间步长(当前的0点钟和第二天),我们需要删除一个)点钟时间步长并追加文件。为此,我使用ncrcat -d TSTEP,0, 25,24 [infiles] [outfile]

最直接的方法是为此目的编写一个Fortran程序。但是,我也更喜欢军士。也许你可以试试cdo。code.zmaw.de /项目/ cdo)作为替代。然而,我使用cdo的解决方案比NCO解决方案更笨重。

\ endgroup美元
8
  • \ begingroup美元 很高兴看到你的答案。我在考虑学习WRF-CMAQ。那么,您的意思是,在一天的气象模拟中,去掉前1小时的数据对以后的CTM是合理的?我还没试过中医,只是好奇而已。 \ endgroup美元
    - - - - - -汉Zhengzu
    2016年3月27日14:40
  • 1
    \ begingroup美元 每个输出文件使用25小时而不是24小时的原因只是技术性质的:第一个时间步骤包含该模型日的初始浓度。因此,对于每一天,我们有一个初始浓度的时间步和24个新模型浓度的时间步。我们有一个大约4天的旋转周期-我经常花10天的旋转周期只是为了确保。 \ endgroup美元
    - - - - - -daniel.heydebreck
    2016年3月27日15:19
  • 1
    \ begingroup美元 是的,取消10天的假期——但是CMAQ的。我们在气象学上不使用WRF。另一个部门的同事用COSMO-CLM模型制作了流星后模。我不确定他们是如何建立COSMO-CLM的。我们只是获取他们的数据,并将其作为CMAQ的输入进行预处理。对于CMAQ来说,4天的旋转已经足够了——一位同事测试了2天的旋转,它看起来也很不错。我选择10天,因为这是个整数:-)。 \ endgroup美元
    - - - - - -daniel.heydebreck
    2016年3月28日12:31
  • 1
    \ begingroup美元 谢谢你的回复!我也听说过一些在欧洲开发的模型,如cosmos - art, REMO等。在中国,WRF是最受欢迎的。 \ endgroup美元
    - - - - - -汉Zhengzu
    2016年3月28日12:39
  • 1
    \ begingroup美元 欧洲有一个真正的动物园模型;-)。 \ endgroup美元
    - - - - - -daniel.heydebreck
    2016年3月29日8:45
2
\ begingroup美元

这是我目前的方法。

  1. 所有wrfout-files都位于同一路径上。
  2. 使用pynco在python循环中拆分旋转数据帧

    import glob nco = nco () for fn in glob.iglob('*.nc'): filename, extname = os.path.splitext(fn) output_fn = filename[11:22] + str(int(filename[22:24]) + 12) + extname nco。nks (input=fn, output=output_fn, dimension='Time,13 ')

输入如下:2014 - 04 - 04 - _12.nc(内装120帧)
输出如下所示:wrfout_2014-04-04_00:00:00.nc(内装133帧)

\ endgroup美元

    你的答案

    点击“张贴您的答案”,即表示您同意我们的服务条款隐私政策而且饼干的政策

    这不是你想要的答案?浏览带标签的其他问题问自己的问题