前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WRF运行wrf.exe出现forrtl: severe (174)问题原因与解决合集

WRF运行wrf.exe出现forrtl: severe (174)问题原因与解决合集

作者头像
自学气象人
发布2022-11-02 10:18:28
1.9K0
发布2022-11-02 10:18:28
举报
文章被收录于专栏:自学气象人

“分段错误可能难以追踪。由于通常没有明确的错误消息,因此可能需要反复试验才能找出问题所在。我试了好久(•́へ•́╬)!大致总结了一下,给大家参考,如果还有其他情况,欢迎大家补充。”

本文参考了气象家园的大部分关于 segmentation fault 的帖子,这里就不一一列出了;另外参考了论坛 kwerner 的文章 What is the most common reasonfor a segmentation fault?在此向各位前辈表示感谢!

一、存在 CFL 错误导致 segmentation fault

一般的段错误可以试试缩短namelist.input 中的积分步长(time_step)来解决,这也是最常见的,在论坛流传最广的解决方法。

其实是否需要减少积分步长要看是否存在 CFL 错误,如果有 CFL错误才应该尝试缩短积分步长来解决问题。存在 CFL 错误意味着模型变得不稳定,这通常是由陡峭的地形或非常强的对流造成的。

可以通过以下命令来看 error 和 out 文件里面是否存在 cfl 错误。

代码语言:javascript
复制
grep -rn "cfl"  rsl.*

1.减少时间步长

如果存在 cfl 错误,恭喜你(σ゚∀゚)σ…:☆,这时候就应该首先尝试减少时间步长了。time_step 的标准建议是 6dx(例如,如果dx = 30000,那么 time_step 应该小于等于180 )。但是如果仍然存在 CFL 错误,可以尝试将 time_step 减少到 4dx 或3dx 。当然,这样有时会有效,但并非总是有效,如果还是不行,就要接着往下尝试了ヽ(ー_ー)ノ。

2.添加 smooth_cg_topo = .true

可以尝试在namelist.input 的 &domains 部分中添加 smooth_cg_topo = .true。如果 CFL 错误发生在边界区域,则在实际运行之前。此选项平滑粗模型网格的外部行/列,以匹配数据附带的低分辨率地形。

3.设置 epssm = 0.2(最高 0.5)

如果 CFL 错误发生在复杂地形附近,您可以尝试设置 epssm = 0.2(最高 0.5)以查看是否有所不同。此选项用于略微前移垂直压力梯度(或声波)的中心,以抑制三维发散。

4.设置 w_damping = 1

也可以尝试设置 w_damping = 1。该参数是垂直速度阻尼。阻尼为0时,w增加过快,导致不稳定,溢出了计算机计算上限。

二、磁盘空间不足

有时可能是磁盘空间不足的结果。检查一下电脑还有多少空间可用于要写入的文件。如果域很大或分辨率很高,则输出文件会大得多(有时会有几 GB)。一般服务器应该不会有这个问题,如果是用自己的电脑要仔细检查一下这个问题(╹▽╹)。

三、内存问题

分段错误错误可能是由于内存问题。尝试在终端输入:

1. setenv MP_STACK_SIZE 64000000 (OMP_STACKSIZE)

代码语言:javascript
复制
setenv MP_STACK_SIZE64000000 (OMP_STACKSIZE)

2. limit stacksize unlimited

如果您使用的是 csh 或 tcsh,请尝试以下操作:

代码语言:javascript
复制
limit stacksizeunlimited

3.ulimit -s unlimited

如果您使用 sh 或 bash,请使用以下命令:

代码语言:javascript
复制
ulimit -s unlimited

如果 ulimit -s unlimited 没有用的话,这里也可以试试 ulimit -s 262140,气象家园有人说这样会有用,我也没试过,不知道什么原因。

可能还是无法解决问题,但默认堆栈大小通常非常小,会因内存不足而导致分段错误,多试试总没错ᕙ༼°益° ༽ᕗ。

四、使用过多或过少处理器或分解不好的结果

分段错误通常是使用过多或过少处理器或分解不好的结果。如何设置处理器数量,可以参考https://forum.mmm.ucar.edu/phpBB3/viewtopic.php?f=73&t=5082,英语不好,就不瞎翻译了,大家可以去看英文原版o(´^`)o。

五、输入数据有问题

如果模型在运行开始时就出现了 segmentation fault,这通常意味着输入数据有问题。检查一下 met_em* 文件,注意下各种变量中的任何奇怪的地方。检查所有变量和所有级别。如果有问题建议去官方下载数据,并在下载完成后检查数据大小,有的时候外网原因会下载不全(▼ヘ▼#)。

六、模型域设置问题

可能是你的域设置太靠边了,就和我一样,在检查前面全部没问题后,我试着改变了嵌套网格设计,就可以正常运行了。

------------------------------------—>

大概就是这么多了。

大家下期见─=≡Σ(((つ•̀ω•́)つ

————————————————

本文为转自CSDN博主「陆詟水栗」的原创文章(私信未能联系上作者。若有关于文章内容、版权或其他问题可联系小编协调),点击文末阅读原文按钮即可跳转原文。

原文链接:https://blog.csdn.net/weixin_42487488/article/details/119703861

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自学气象人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档