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

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

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

一、存在CFL错误导致segmentation fault

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

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

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

grep -rn "cfl"  rsl.*

1.减少时间步长

如果存在cfl错误,恭喜你(σ゚∀゚)σ…:☆,这时候就应该首先尝试减少时间步长了。
time_step的标准建议是 6
dx(例如,如果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)

setenv MP_STACK_SIZE 64000000 (OMP_STACKSIZE)

2. limit stacksize unlimited

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

limit stacksize unlimited

3.ulimit -s unlimited

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

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* 文件,注意下各种变量中的任何奇怪的地方。 检查所有变量和所有级别。如果有问题建议去官方下载数据,并在下载完成后检查数据大小,有的时候外网原因会下载不全(▼ヘ▼#)。

六、模型域设置问题

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

WRF运行wrf.exe出现forrtl: severe (174): SIGSEGV, segmentation fault occurred问题原因与解决合集_第1张图片

—>

WRF运行wrf.exe出现forrtl: severe (174): SIGSEGV, segmentation fault occurred问题原因与解决合集_第2张图片
2021.12.9补充:

七、参数化方案组合出错

并不是所有的方案都允许组合使用,组合出错也会导致段错误


大概就是这么多了,大家下期见─=≡Σ(((つ•̀ω•́)つ

你可能感兴趣的:(Linux,WRF,WRF)