OpenFOAM手动网格分块

OpenFOAM手动网格分块

  1. 通过OpenFOAM的格式自编程来对各个cell命名,确定他们所属的processor
/*---------------------------------------------------------------------------*\

  =========                 |

  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox

   \\    /   O peration     |

    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation

     \\/     M anipulation  |

-------------------------------------------------------------------------------

License

    This file is part of OpenFOAM.

 

    OpenFOAM is free software: you can redistribute it and/or modify it

    under the terms of the GNU General Public License as published by

    the Free Software Foundation, either version 3 of the License, or

    (at your option) any later version.

 

    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT

    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or

    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License

    for more details.

 

    You should have received a copy of the GNU General Public License

    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.

 

Application

    scalar2Label

    codeBy CloudBird, HIT,cloudbird7@foxmail.com

 

\*---------------------------------------------------------------------------*/

 

#include "fvCFD.H"

 

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

 

 

int main(int argc, char *argv[])

{

    #include "setRootCase.H"

    #include "createTime.H"

    #include "createMesh.H"

 

    const volVectorField& center = mesh.C();

 

    labelIOList finalDecomp

    (

        IOobject

        (

            "manualDecomposition",

            mesh.facesInstance(),

            mesh,

            IOobject::NO_READ,

            IOobject::AUTO_WRITE,

            false

        ),

        labelList (center.size())

    );

 

    Info<< "Making manualDecomposition file\n" << endl;

    scalar x_=0,y_=0;

label num0 = 0, num1 = 0, num2 = 0, num3 = 0;

//这里是将网格分为四块,分块的依据是下边if的判断语句,也就是先挖一个小方框出来,然后对剩下的部分分成三块,并输出分块之后每一块的cell的数量。

forAll(center, cellID)

    {

x_ = center[cellID].x();

y_ = center[cellID].y();

if (x_ > -0.75 && x_ < 0.75 &&y_>-0.75&&y_ < 0.75)

{

finalDecomp[cellID] = 0;

num0++;

}

else

{

if (x_ < 0)

{

finalDecomp[cellID] = 1;

num1++;

}

else if (x_ < 3)

{

finalDecomp[cellID] = 2;

num2++;

}

 

else

{

finalDecomp[cellID] = 3;

num3++;

}

}

 

    }

Info << "num0 = " << num0 << nl << "num1 = " << num1 << nl << "num2 = " << num2 << nl << "num3 = " << num3 << nl;

    finalDecomp.write();

 

    Info<< "Done\n" << endl;

 

    return 0;

}

 

 

// ************************************************************************* //

这样会在constant文件夹下边生成一个名为manualDecomposition的文件,这个文件本质上是一个标量文件,用于标记各个cell所属的processor。

  1. 在system文件夹下的decomposeParDict中修改分割方式
numberOfSubdomains 4;

method           manual;

manualCoeffs

{
    dataFile        "manualDecomposition";
}

其中dataFile的名字要改成我们生成的文件的名字,也就是maualDecomposition,还需要注意的一点是numberOfSubdomains的数量要和你在maulDecomposition中定义的数量一致。

3.之后直接decomposePar就是按照手动分割网格的方式对你定义的网格进行分割。
processor0
Processor0
processor1
processor1

processor2
processor2
processor3
processor3

文件的编译按照一般OpenFOAM文件编译的方式进行,参考http://dyfluid.com/docs/book/_book/

参考文章:

https://blog.csdn.net/CloudBird07/article/details/105349031

https://www.dazhuanlan.com/2019/08/16/5d55fc7975c16/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenFOAM 是一款开源的计算流体力学软件,它可以进行多种流体动力学模拟,并且可以输出各种不同的结果和数据,包括网格速度和压力等。要计算网格速度和压力,你可以使用 OpenFOAM 中的 `postProcessing` 工具。 要导出网格速度和压力,你需要进行以下步骤: 1. 在命令行终端中打开你的模拟案例。 2. 进入到 `postProcessing` 目录下。 3. 运行 `foamToVTK` 命令,将 OpenFOAM 模拟的数据转换为 VTK 格式的文件。例如: ``` foamToVTK -latestTime ``` 这会将最新的时间步长的数据转换为 VTK 格式的文件。 4. 进入到 `VTK` 目录下,运行 `paraFoam` 命令,启动 ParaView 可视化软件。例如: ``` paraFoam ``` 5. 在 ParaView 中加载 VTK 文件,然后选择要查看的变量,例如网格速度和压力。 6. 在 ParaView 中选择要查看的数据和变量,然后可以使用 ParaView 的各种工具和功能来可视化和分析数据。 以上是一般的步骤,具体的操作可能会因为你所使用的 OpenFOAM 版本和具体情况而有所不同。希望这些信息对你有帮助! ### 回答2: OpenFOAM是一个开源的计算流体力学(CFD)软件包。如果要导出网格速度分量,可以通过以下步骤: 1. 在OpenFOAM中求解流动问题,得到速度场数据。可以使用求解器,如simpleFoam或pisoFoam,或者根据具体情况使用其他求解器。 2. 导出速度场数据。可以使用ParaView软件进行后处理,ParaView支持OpenFOAM的结果文件格式。打开ParaView并加载OpenFOAM结果文件,然后选择速度分量(U),以便可视化或导出。 3. 可视化速度分量。在ParaView中,选择速度分量U并创建相应的切片、矢量图、等值线或其他可视化选项。可以调整颜色映射、大小、方向等参数来使结果更加清晰和具有信息性。 4. 导出速度分量数据。在ParaView中,可以将速度分量U数据导出为各种格式,如CSV、VTK等。选择导出选项并指定文件名和保存位置,以获取速度分量数据。 另外,OpenFOAM还提供了许多编程接口和函数,可以在求解器中自定义输出速度分量数据的方法。这可以通过在求解器的源代码中添加相应的代码来实现。具体方法和代码实现可以参考OpenFOAM的文档和用户指南。 总结:要导出OpenFOAM网格速度分量,首先使用OpenFOAM求解流动问题并得到速度场数据,然后使用ParaView软件进行可视化和导出。另外,OpenFOAM还提供了自定义输出速度分量数据的编程接口和函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值