WRF rsl.out文件研究

摘要:
本文翻译自https://www2.mmm.ucar.edu/wrf/users/FAQ_files/FAQ_wrf_runtime.htmlQ1我应该使用几个处理器来运行wrf-exe?A1经验法则是,所使用的处理器的最小数量应基于具有最大大小的域,而所使用的最大数量应基于最小的域。例如,假设您有两个域,domain01是200x200网格,d

本文翻译自https://www2.mmm.ucar.edu/wrf/users/FAQ_files/FAQ_wrf_runtime.html

Q1 我应该使用几个处理器来运行wrf.exe?

A1 经验法则是,使用的处理器数量最少应基于最大大小的那个domain,而使用的处理器数量最多应基于最小的domain。例如,假设您有2个domain,并且domain 01是200x200 grid spaces,而domain 02是300x300 grid spaces。您可以用来大致估计大量处理器的数学运算的公式:

最大处理器数量:
(200/25)*(200/25)= 64个处理器

最小处理器数量:
(300/100)*( 300/100)= 9个处理器

这意味着您应该在9到64个处理器之间使用此处理器。
使用过多处理器的问题在于,当您使用多个处理器时,将根据所使用的处理器数量将域划分为正方形。但是,这些正方形中的每个正方形也具有halo 区(或从每个边界向内的一定数量的网格空间),可为靠近边界的区域获得相邻的计算结果。如果使用过多的处理器,则每个平方会变得小于光环的大小,这会引起问题。

Q2 如果我想查看特定程序的执行方式,是否可以在该程序中添加“ stop”语句?

A2 终止模型的正确方法是使用对wrf_error_fatal的 WRF调用。如果将其“ grep”到目录WRFV3 / phys中,则将看到其用法。这应该杀死所有处理器上的模型。

Q3 rsl *文件中的ims,jms,kms,ips,jps,kps等变量是什么意思?

NDOWN_EM V4.1.4 PREPROCESSOR
 *************************************
 Parent domain
 ids,ide,jds,jde            1         751           1         721
 ims,ime,jms,jme          577         632         678         726
 ips,ipe,jps,jpe          584         625         685         721
 *************************************

A3 im, jm是用于包含 communication domain(halo 区)的分解domain -"m" 表示每个分布式内存处理器上的内存大小。ip, jp是分解domain的物理尺寸,不包括halo区。"p" 仅是每个分布式存储处理器上的计算domain的大小。

Q4 在使用嵌套网格运行“ hold-suarez”理想化案例时,我发现初始化域2时,domain 1的网格(XLONG和XLAT)在domain2所在的区域中发生了变化。为什么会这样?

A4 造成这种情况的部分原因可能是,当您运行理想化案例时,没有嵌套的输入。因此,模型会插值从粗略域到嵌套的所有内容,包括纬度和经度。如果将feedback设置为1,则将导致嵌套数据覆盖嵌套区域中的粗略域,包括XLAT和XLONG。这是必要的,因为从嵌套中计算出的值正在替换粗糙的域值(例如,由于辐射)。除非插值真的很差,否则奇数比应该做得很好,因为在嵌套域和粗糙域上存在重叠的网格。对于均匀比率,由于没有同位网格,因此在打开反馈时将进行一些平均。

Q5 运行WRF的最低合理eta层次是多少?

A5 通常,第二完整层次应设置为0.993-0.996。

Q6 如何使用辅助文件输出除wrfout中的变量以外的变量?

A6 您将需要在Registry.EM_COMMON中添加这些变量,然后通过添加以下示例选项来重新编译和修改namelist.input:

auxhistN_outname =“ rainfall_d
auxhistN_interval = 10,
frames_per_auxhistN =
1000,1000 io_form_auxhistN = 2

注意:N为您的额外输出变量的流号。

Q7 在WRF中设置'quilting'的目的是什么?

A7 在没有quilting的情况下,使用常规的netCDF,头处理器将收集并写出数据。使用quilting时,将保留N个处理器以进行数据收集(在头处理器写入时)。对于大量网格点,这可以缩短墙钟时间。

Q8 段错误的最常见原因是什么?

A8 段错误错误通常意味着存在内存问题。尝试键入以下命令之一以查看是否有帮助:

  1. setenv MP_STACK_SIZE 64000000(OMP_STACKSIZE)
    2.如果使用的是csh或tcsh,请尝试以下操作:limit stacksize unlimited
    3.如果使用的是sh或bash,请使用以下命令:ulimit -s unlimited

这可能无法解决您的问题,但是默认堆栈大小通常很小,并且可能由于内存不足而导致段错误。

如果模型在运行开始时就出现故障,则通常可能意味着输入数据有问题。确保检查您的met_em *文件以查看是否在各种变量中发现了奇怪的地方。

Q9 时间序列变量的输出格式是什么?

A9 时间序列的默认输出格式是一个简单的文本文件,每个域一个站点。

Q10 由于非常大的垂直速度,我遇到了CFL错误。如何克服这些错误?

A10 首先尝试减少时间步长。有时这可行,但并非总是如此。您可以尝试的另一件事是在运行real之前,在namelist的&domains部分中添加smooth_cg_topo = .true.。如果CFL沿边界区域发生,则可以平滑模型地形以匹配行驶数据随附的低分辨率地形。如果CFL发生在复杂的地形附近,则可以尝试将epssm = 0.2(最大为0.5)设置为无效。

Q11 运行real.exe时出现以下错误消息:

frame / module_domain.f:无法分配
grid%xkmhd(sm31:em31,sm32:em32,sm33:em33)

可能是什么原因?
A11 1)您的计算机没有足够的内存来在您的域上运行real.exe

2)如果您的计算机具有足够的内存和多个CPU,但是单个CPU无法访问所有内存,则需要使用dmpar(MPI)构建WRF选项并在多个处理器上运行它(mpirun -np N real.exe,其中N > 1)以利用更多的可用内存(请参阅问题1)。
Q12 我已经正确安装了共享库,但是计算机在运行时找不到它们。如何在运行时找到共享库?
A12 Unix操作系统通常查看环境变量LD_LIBRARY_PATH来搜索库路径中的目录。尝试发出这些命令:

echo $LD_LIBRARY_PATH

如果路径不包括在/ usr / local / lib目录,然后(在KSH,例如),键入:
export LD_LIBRARY_PATH = “$ LD_LIBRARY_PATH:在/ usr / local / lib目录”

你可以把这个在您的登录脚本中,这样您就不必每次都发出此命令。

Q13 如何在特定物理学中输出局部变量?

A13 输出例程将看不到局部变量。您将需要在wrfout文件中看到的变量声明为注册表中的状态变量。然后,这些变量将可用于resolve_em.F,它调用microphysics_driver。您将需要将新变量传递给驱动程序,然后传递给驱动程序中调用的物理方案。这些状态变量应声明为“ OUT”变量,并按补丁尺寸(ime,jme)进行标注。然后,您需要使用需要输出的字段来填充这些数组。看一下我们的WRF教程中的演讲,您可能会发现一些更有用的信息:
Registry and Examples

Q14 尝试运行理想化案例时,如何通过namelist关闭科里奥利力?

A14 不幸的是,namelist没有为此设置的选项。但是,您可以在module_initialize_(ideal_case).F文件中设置grid%f = 0(使用该文件作为您选择的理想情况。然后保存该文件并重新编译代码。您将不需要 'clean -a' 或需要在重新编译之前重新configure。只需简单地重新编译即可,并且编译应该很快,因为它只是在构建此例程。

Q15 我试图以GRIB2格式写入wrfout文件,但glibc检测到损坏的内存错误。我该如何解决?

A15 此选项仅适用于32位系统。它在某些64位系统上失败,不幸的是,这尚未开发。

Q16 我的湿度变量为负。我怎样才能解决这个问题?

A16 您可以使用namelist选项mp_zero_out删除负的潮湿变量。众所周知,负水分不会影响模型集成。使用moist_adv_opt = 1选项将使湿度变量保持正值。

Q17 为什么在模型正常运行时没有任何错误没有生成我的wrfout和/或wrfrst文件?

A17 这可能是因为您的wrfout / wrfrst文件太大(即大于2GB)。在构建WRF之前,使用以下命令来启用netCDF大文件支持(示例在csh中):
setenv WRFIO_NCD_LARGE_FILE_SUPPORT 1

Q18 在我的namelist中,用于打印obs信息的选项设置为true,但是当我检查rsl文件时,找不到关于观察性推挤的任何信息。为什么是这样?

A18 尝试在namelist的&time_control部分中添加以下内容:

auxinput11_interval_s =
180、180、180、180、180、180 auxinput11_end_h = 6,6,6,6,6

并更改适合您情况的值。这里的间隔应小于obs文件中的数据间隔。

Q19 如何更改自动分解,但使用自己的选项进行domain分解?

A19 该namelist选项nproc_x和nproc_y可以用来这样做,如果你有dmpar编译。如果使用OpenMP编译,则可以使用numtiles选项。

Q20 当我运行real.exe时,我在grid%tmn中遇到了错误,但是可以正常运行。应该忽略吗?

A20 检查您的输出,看看tmn是否用合理的值填充。这可能是由于tmn(在具有低分辨率[1度]数据的土工格栅中计算出的)与来自高分辨率数据(例如30秒)的地面掩模不匹配而触发的。

Q21 如何定义小于1秒的时间步长?

A21 您将需要在&domains部分中使用以下所有三个namelist选项:

time_step = 0,
time_step_fract_num = 1,
time_step_fract_den = 3,

以上示例将时间步长设置为1/3秒。

Q22 我正在使用GFS输入数据,并收到以下错误:

-----------------错误-------------------
>namelist:num_metgrid_soil_levels = 4
>输入文件:NUM_METGRID_SOIL_LEVELS = 0(来自met_em文件)。
> --------------致命调用---------------
>从文件中致命调用: LINE:695
>名称清单与全局属性NUM_METGRID_SOIL_LEVELS不匹配
> -------------------------------------- -----

是什么原因引起的?
A22 如果您在WRFV3.6.1或更早版本中使用GFS初始条件,并且开始日期为2015年1月7日或更晚,那么您将需要使用新的Vtable,因为GFS从1/7/15开始更新了其所有数据。您可以在此处找到更新的Vtable 。有关GFS数据更新的其他信息,请单击此处。

您将需要将此Vtable复制到WPS / ungrib / Variable_Tables /目录中,并将其命名为Vtable.GFS(这将覆盖以前的GFS Vtable)。之后,您需要返回WPS /目录并重新运行ungrib.exe。在运行ungrib.exe之前,您需要链接到新的Vtable:

ln -sf ungrib / Variable_Tables / Vtable.GFS Vtable

一旦确定WPS /目录中的“ Vtable”文件是* NEW * Vtable.GFS,就可以运行ungrib.exe,然后运行metgrid.exe,然后转到WRFV3 /目录,链接到您的met_em *文件并运行real.exe。您可以通过发出以下命令来验证met_em *文件中的土壤含量是否为4:

ncdump -h met_em.d01 *
其中“ *”仅代表您的met_em文件之一。

您应该看到类别(朝下)NUM_METGRID_SOIL_LEVELS = 4 。

Q23 为什么即使启用正定对流方案,QVAPOR仍为负?

A23 负值很小,四舍五入。正定方案无法摆脱如此小的值。

Q24 是什么引起以下错误:

ERROR: troubles, could not find trapping x locations
A24 当您的p_top_requested太高(即,大气层太低)时,通常会看到这种情况。尝试将其设置回默认值(= 5000),看看是否有帮助。如果您的域设置不佳,有时会经常看到此错误。有关设置您的域(和嵌套域)的

最佳实践,请参阅我们的WRF教程:WRF中的最佳实践嵌套中的这些讲座。

Q25 是什么引起以下错误:

ERROR: dz above fixed eta levels is too large
A25 当您将p_top_requested设置得太低(即,大气层太高)时,通常会看到这种情况。尝试将其设置回默认值(= 5000),看看是否有帮助。

Q26 我正在尝试使用与原始运行不同的历史记录间隔来运行重新启动,但是在旧的间隔时间我仍会得到输出。我该如何纠正?

A26 在namelist的&time_control部分中,添加以下行:

override_restart_timers = .true。

Q27 如何估算运行时间?

A27 在某些计算机上,您始终可以从输出文件中找到作业所需的CPU和时钟时间。在其他机器(例如Linux机器)上,您可以通过查看生成第一个和最后一个wrfout文件的时间来估计墙钟时间。两者之间的差异是对工作所需的墙钟时间的粗略估计。

[Wrf-users] Max number of CPUs for WRF
http://mailman.ucar.edu/pipermail/wrf-users/2012/002670.html

免责声明:文章转载自《WRF rsl.out文件研究》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Element-ui 中的Dialog 对话框freemarker:初识(搭建环境、对象、集合、索引、赋值、null、时间、宏定义)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

微信小程序知识点总结--组件

aspectFill缩放模式保持缩放图像的纵横比,并且只能完全显示图像的短边。也就是说,图片通常只在水平或垂直方向上是完整的,而另一个方向会被截取。...

记一次Arcgis Server10.2许可过期导致发布图层失败

1.今天,当使用arcmap将地图服务发布到arcgisserver时,发布突然失败。在arcgisserver的管理页面的日志选项中发现错误:未能初始化服务器对象“System/PublicingTools”:0x80004005:错误:(-8003)YourArcGISServerlicense已过期。2.然后在服务器路径中查找文件:...

dBFs和dBm

dBFs和dBmdBFs是用来表征数字域功率值的大小,一般情况下我们定义0dBFs为数字域满刻度功率值,即数字域中功率的最大值;因此看到的dBFs的值都是负的。...

GitLab 数据库

要访问GitLab数据库步骤中使用的DockerGitlab,首先输入容器dockerexec-itgitlab/bin/bash ``查找数据库配置文件``bash/var/opt/GitLab/gitlabrails/etc/database yml内容如下,记录数据库配置信息production:adapter:postgresqlencoding:u...

PB各对象常用事件

1.触发窗口中事件名称的时间01.在激活窗口之前激活触发器02。单击触发器03.Close触发器04.CloseQuery在窗口被清除或关闭时触发。...

宝塔Python项目设置及启动文件编辑

在宝塔面板中,通过软件商店的Python项目管理器,即可完成设置,一般有以下两个步骤:1、添加项目设置完成后,点击确认。...