一些OpenFOAM自带的有用小工具

前言
这篇博文总结自OpenFOAM的用户手册。OpenFOAM的用户手写得很好,初学OpenFOAM的时候没觉得什么,等差不多入门之后,回头再看一遍,能发现其中很多亮点,很多能解决实际使用痛点的操作。有空多读手册,多回头看看。(本文长期更新)

场映射 mapFields

mapFields工具用来映射场。比如目前我们有一个100x100网格的运算结果,为了提高运算精度,我们决定将网格密度提高至200x200。为了不至于从0开始计算,我们可以使用mapFields工具将100x100网格的结果映射值200x200的网格中。关于mapFields工具,在OpenFOAM用户手册中多有探讨读者可以自行去阅读(用户手册第七版,2.1.5.3节,2.1.9节,5.6节)。值得强调的是,该技术实现的方法是进行插值,因此对于一些对有界性要求非常高的变量来说,进行场映射可能导致越界。(例如相界面处)。对于并行运算结果,该命令不需要进行重组也可以运行。

插值得到中间步的场 temporalInterpolate

使用 temporalInterpolate可以通过插值得到两个时间步之间的场。例如我们现在已经得到了0.2,0.4,0.6,0.8四步的数据,运行以下命令:

temporalInterpolate -time 0.2:0.8

我们可以插值得到0.3,0.5,0.7s时的数据,而运行:

temporalInterpolate -time 0.2,0.8

我们将得到0.2s和0.8s中间步的数据,即0.5s时的数据。
temporalInterpolate还可以指定插值方式等其他参数,可以使用附加-help参数来查看temporalInterpolate函数支持的参数。

重新进行并行区域划分redistributePar

当我们已经进行了并行区域的划分又想重新进行新的区域划分时,我们可以使用redistributePar命令进行。假设我们现在已经使用decomposePar命令划分好了2个并行区域,现在我们想重新划分为4个并行计算域,我们可以先可以修改system/decomposeParDict里的参数,进行4区域的划分,然后执行以下命令:

mpirun -np 4 redistributePar -parallel

如果想重新划分特定时间步(例如1s时)的数据,可以添加time关键词:

mpirun -np 4 redistributePar -time 1 -parallel

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值