OpenFOAM中的Sampling工具

做大型CFD仿真的小伙伴可能会遇到这样一个问题,在超算上进行百万级别以上网格的仿真,数据量庞大,如何实时监测计算结果,确保仿真是朝着正确的方向发展?
OpenFOAM自带的sample工具可以完美解决这个问题


举个栗子

在controlDict文件下设置如下

functions {
    surfacesample1 
    {
        type                surfaces;
        libs            (sampling);
        writeControl        runTime;
        writeInterval       0.00001; // 输出的时间步长
    
        interpolationScheme cellPoint;
        surfaceFormat       vtk; // 输出数据类型
    
        surfaces
        (
                        plane_yz
                        {
                                type                    plane;
                                planeType               pointAndNormal;
                                pointAndNormalDict //定义平面
                                {
                                        point           (0 0 0);
                                        normal        (1 0 0);
                                }
                                interpolate             false; // 插值方法 选项: cell, cellPoint 等
                        }
            );
    
        fields       (T U O2);  // 输出的物理量
    }
}

以上是采用自定义的取样平面,当然也可以采用计算域的某一个边界:

    surfaces
    {
        type            surfaces;
        surfaceFormat   boundaryData;
        writeControl    writeTime;
        interpolationScheme cell;
        fields
        (
            U
            turbulenceProperties:R
            turbulenceProperties:nuTilda
            turbulenceProperties:L
        );
        surfaces
        (
            inlet
            {
                type            patch;
                patches         (inlet); // 边界名称
                interpolate     false;
            }
        );
    }

我们可以通过修改writeInterval调整采样平面数据的输出时间步长,这个步长是与算例的输出时间步长相互独立的。

最后通过运行foamSequenceVTKFiles 命令,即可得到paraview可以打开的数据。

这样一来,我们可以通过重建很小的数据量监控一个大Case的运行情况,也可以利用这种方法生成时间步长非常小的CFD视频,非常方便

你可能感兴趣的:(OpenFOAM中的Sampling工具)