如何在openfoam中为场平均指定任意表面?

计算科学 流体动力学 开放式泡沫 误差估计
2021-12-26 06:22:27

所以,我正在运行这个 openfoam 模拟,我需要一个表面上的 areaAverage 速度和压力,目前正在读取整个平面,我不想在 sampleSurfaceDict 中指定我自己的,

new_plane
{
    type            faceSource;
    functionObjectLibs ("libfieldFunctionObjects.so");
    enabled         true;
    outputControl   timeStep;
    log             true;
    valueOutput     true;
    source          sampledSurface;
    //setFormat raw;
    surfaceFormat   vtk;


    sampledSurfaceDict
    {
        type            plane;    // always triangulated
        basePoint       (0   -1.5 0);
        normalVector    (0 -1 0);
    }
    operation       areaAverage;
    fields
    (
        p
        U
    );
}

有类型圈吗?或指定半径的方法?在 sampledSurfaceDict

sampledSurfaceDict
    {
        type            plane;    // always triangulated
        basePoint       (0   -1.5 0);
        normalVector    (0 -1 0);
    }

有人知道planeEquationDict吗?

1个回答

据我所知,没有这样的事情。但是,只要您碰巧有一些 C++ 经验,您的目标应该是相当直接地实现。

  1. 在 OpenFOAM 源目录中找到circleSet 。
  2. 制作它的本地副本并将其重命名为faceSetSet之类的名称。
  3. 读取您想要采样的faceSet的名称。
  4. 阅读faceSet
  5. 在每个时间步中,仅循环这些面并平均您想要的字段。

这是一个非常初级和基本的算法,你必须填补空白。如果您需要更多帮助,请告诉我。