Skip to content

OpenFOAM

OpenFOAM交流区

5.3k 主题 31.8k 帖子
  • 合集:OpenFOAM安装准备工作贴

    已固定
    28
    28 帖子
    42k 浏览
    N

    请问那个含有很多版本的离线的虚拟机,怎么设置共享文件夹啊,VMtools设置了出错呢?

  • OpenFOAM教程 初级入门建议

    已固定
    55
    55 帖子
    198k 浏览
    李东岳

    新版的transportProperties改成了physicalProperties,你改个名

  • 输入scalar但是报double错误,编译失败

    2
    2 帖子
    27 浏览
    Y

    image.png

  • 热压通风p_rgh边界条件设置

    16
    16 帖子
    191 浏览
    K

    好的 非常感谢李老师的指导! :) 我再研究研究
    :mihu:

  • OpenFOAM编译时内部编译器出错

    32
    32 帖子
    318 浏览
    李东岳

    我测试了一下我那个虚拟机的2206的dambreak,没复现问题

  • 1 帖子
    22 浏览
    M

    作者:牛马丁

    本人是OpenFOAM初学者,在安装OpenFOAM过程中遇到了很多问题,感谢前辈们的无私分享,才能一一解决。
    吃水不忘挖井人,本人几经折腾终于有了点心得,遂总结了这篇经验帖以造福后人,前辈们的帖子放在末尾以供参考。

    目录

    安装WSL2

    配置OpenFOAM安装环境

    2.1 下载源码 2.2 安装所需库 2.3 配置编译环境

    编译OpenFOAM

    检查安装

    4.1 方式一 4.2 方式二

    安装ParaView Windows版本

    5.1 下载/安装Windows版本的ParaView 5.2 添加系统环境变量 5.3 修改paraFoam脚本 5.4 建立Windows文件夹下的OpenFOAM算例运行目录 5.5 ParaView 远程桌面闪退问题 1 安装WSL2

    因为OpenFOAM在Linux环境下运行,所以要在Windows中配置Linux环境。本文选用的是微软的Windows Subsystem for Linux(简称WSL)子系统。

    对于windows10版本2004版本及更新版本或者windows11,可以直接一行命令符安装,方法如下:

    Windows搜索powershell,以管理员身份启动

    方法一(不指定版本): 在控制器中输入命令:

    wsl --install

    等待安装完成后重启电脑。

    方法二(指定版本): 输入如下命令安装Ubuntu 20.04 LTS版本: wsl --install Ubuntu-20.04

    输入用户名和密码完成安装。

    如果是Win10系统,WSL默认版本为1.0,可以手动设置为2.0(Win11可忽略):管理员运行powershell,输入:

    wsl --set-default-version 2

    因为WSL2比WSL1的性能提升很多。

    Tips: 建议在微软商店下载终端应用,在终端中启动Ubuntu

    更详细的教程可以参考:Windows 10 安装配置WSL2(ubuntu20.04)教程 超详细

    2 配置OpenFOAM安装环境 2.1 下载源码

    对于OpenFOAM-v2106,需要下载的源码包括:

    Source: https://sourceforge.net/projects/openfoam/files/v2106/OpenFOAM-v2106.tgz/download

    因为本帖使用基于Windows的ParaView,所以可以不必下载/编译ThirdParty文件。

    2.2 安装所需库 逐行复制如下命令安装OpenFoam必要库: sudo apt-get update sudo apt-get install build-essential autoconf autotools-dev cmake gawk gnuplot sudo apt-get install flex libfl-dev libreadline-dev zlib1g-dev openmpi-bin libopenmpi-dev mpi-default-bin mpi-default-dev sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev sudo apt-get install libfftw3-dev libscotch-dev libptscotch-dev libboost-system-dev libboost-thread-dev libcgal-dev 逐行复制如下命令安装ThirdParty必要库:(如果使用windows版本ParaView,这一部分可以忽略掉) # 这里可以不执行,因为可以使用Win版ParaView sudo apt install paraview-dev # 这里最好还是执行一下 sudo apt install cmake qtbase5-dev qttools5-dev qttools5-dev-tools libqt5opengl5-dev libqt5x11extras5-dev libxt-dev 2.3 配置编译环境 创建目录文件夹并进入,终端输入: mkdir $HOME/OpenFOAM cd $HOME/OpenFOAM 拷贝源码到文件夹
    将下载好的源码拷贝到Windows桌面,输入cp命令拷贝,其中目录的盘符/c/和用户名myname根据情况替换: cp /mnt/c/Users/myname/Desktop/OpenFOAM-v2106.tgz .

    注意:路径后以空格加.结尾

    解压源码
    终端逐行运行: tar -xvf OpenFOAM-v2106.tgz 配置环境变量
    终端运行: vim ~/.bashrc

    回车后打开bashrc文件,使用方向⬇键将光标移至最后一行,输入i进入编辑模式,在最后插入一行:

    source ~/OpenFOAM/OpenFOAM-v2106/etc/bashrc

    按Esc退出编辑模式,并输入:wq保存并退出。
    接着在命令行输入:

    source ~/.bashrc

    启动环境变量配置

    3 编译OpenFOAM 测试安装环境 foamSystemCheck 移动到OpenFOAM目录($WM_PROJECT_DIR): foam

    注意:如果这一步失败了,说明环境变量配置不成功。

    编译OpenFOAM ./Allwmake -j -s -l

    Tips:根据测试,命令包含 -q (queue)有概率失败,原因未知。

    4 检查安装 4.1 方式一

    输入如下命令:

    foamInstallationTest

    输出没有Error即可。

    注意: 对于OpenFOAM-v2106,输出可能包含critical error,但是经测试不影响使用;只要4.2的测试通过就行

    4.2 方式二 测试案例中的算例,例如: foamTestTutorial -full incompressible/simpleFoam/pitzDaily 也可以手动运行: # Create the user "run" directory: mkdir -p "$FOAM_RUN" # Change to the user "run" directory: run # Copy tutorial cp -r "$FOAM_TUTORIALS"/incompressible/simpleFoam/pitzDaily ./ # Run the tutorial ( cd pitzDaily && blockMesh && simpleFoam )

    以上就是OpenFOAM-v2106程序的全部安装过程。
    接下来是后处理软件ParaView的Windows版本安装过程。

    5 安装ParaView Windows版本

    OpenFOAM可以在windows下的Linux子系统(WSL)安装,但是很麻烦的一个问题是WSL没有图形化的界面,只有一个控制台窗口,在后处理的过程中我们就没有办法直接调用paraFoam命令启动ParaView来对OpenFOAM的计算结果进行后处理。paraFoam的实质其实就是调用ParaView的一个脚本,我们可以重写此脚本,在调用windows下安装ParaView来对OpenFOAM的计算结果进行后处理。简单的步骤如下:

    5.1 下载/安装Windows版本的ParaView 首先从ParaView的官网上下载ParaView的windows系通下的安装包,下载链接如下: https://www.paraview.org/download/

    对于OpenFOAM-v2106,选择ParaView-5.13.3-Windows-Python3.10-msvc2017-AMD64.zip这个版本;

    解压缩到对应文件夹即可。

    5.2 添加系统环境变量

    windows搜索:查看高级系统设置,点击环境变量,在系统变量里找到Path,点击编辑:

    点击新建,将上一步解压目录里的bin/目录添加到Path中,例如:

    D:\Program Files\ParaView-5.13.3-Windows-Python3.10-msvc2017-AMD64\bin 添加完成后,确定。 5.3 修改paraFoam脚本 打开WSL Ubuntu,进入paraFoam脚本所在目录,并进行备份: cd ~/OpenFOAM/OpenFOAM-v2106/bin sudo cp ~/OpenFOAM/OpenFOAM-v2106/bin/paraFoam ~/OpenFOAM/OpenFOAM-v2106/bin/paraFoam.bk 使用windows资源管理器打开该目录: explorer.exe . 使用记事本打开paraFoam文件,将所有内容替换为以下脚本: pre_para=`basename $PWD` para_file=${pre_para}.foam >${para_file} cmd.exe /c "paraview ${para_file}" rm ${para_file} 为paraFoam加上可执行权限: sudo chmod +x paraFoam 重启WSL Ubuntu 5.4 建立Windows文件夹下的OpenFOAM算例运行目录

    基于以上修改,需要在Windows目录下运行OpenFOAM算例,否则在WSL Ubuntu目录下执行paraFoam会报错

    首先在Windows目录里建立一个run文件夹,用于存放OpenFOAM算例,例如: D:\OpenFOAM_run 然后启动Ubuntu,编辑环境变量: vim ~/.bashrc 输入i进入编辑模式,在文件的末尾添加: win_run=/mnt/d/OpenFOAM_run

    按Esc退出编辑模式,并输入:wq保存并退出

    执行环境变量:

    source ~/.bashrc 然后输入$win_run就可以直接跳转Windows目录: cd $win_run

    然后我们输入paraFoam就是启动windows下的ParaView对OpenFOAM计算结果进行处理了

    5.5 ParaView 远程桌面闪退问题

    当使用虚拟机或者远程桌面时,使用的GPU驱动为OpenGL,这种驱动不足以显示ParaView界面,以下是解决办法:

    下载,解压ParaView(使用5.13.3版本测试); 下载release-msvc(使用20.0.6版本); 在任意位置解压; 复制 x64/opengl32.dll和 x64/libglapi.dll 到ParaView根目录: ParaView_Path/bin/ 打开windows命令提示符 使用cd命令进入到ParaView根目录ParaView_Path/bin/ 输入: set MESA_GL_VERSION_OVERRIDE=4.5 paraview.exe #启动paraview 参考链接 WSL调用Windows下的ParaView对OpenFOAM进行后处理 OpenFOAM系列教程-1.3-运行并在Windows下用ParaView查看算例 OpenFOAM系列教程-1.2.1-安装(OpenFOAM-v2106) OpenFOAM系列教程-1.1-安装Ubuntu How to run ParaView using Mesa on Windows
  • OpenFOAM中使用ke模型时可以不使用壁面函数么

    2
    2 帖子
    28 浏览
    李东岳

    可以不用。但是结果不准,有时候还偏差非常大。
    用的话可能影响稳定性。

    不研究壁面对其的影响

    不单单影响壁面,而是全场

  • 数据驱动CFD的意义是什么?

    11
    11 帖子
    2k 浏览
    李东岳

    这不太好说是怎么回事。你这个帖子其实包含了很多细节也没法一一debug。

    我的课题就是在您开源的基础上一步步做的

    哪个?lesMLFoam么?

    虽然在流场预测的趋势上有了较好的拟合结果,但是所预测的始终是这种有规律的间隙

    这个看起来前后的描述是冲突的。从你paraview的结果来看,结果并不好。
    你目前的进展在哪里?然后哪里出现了不一致?

  • 基于PIMPLE算流固耦合的数值方法优化

    6
    6 帖子
    122 浏览
    李东岳

    这不好说,需要拿算例debug,只能自己尝试

  • 2 帖子
    36 浏览
    李东岳

    感谢分享!!

  • tecplot Linux版安装

    5
    5 帖子
    2k 浏览
    A

    @陶震 谷歌搜一下tecplot 360 ex 和关键字SSQ, SSQ是破解组的名字

  • 加密网格周围的结果不连续

    6
    6 帖子
    135 浏览
    李东岳

    160万太难debug。你可以用2D网格,做个3000-5000的,然后也是类似这种非均一细化。看看有没有问题。

  • interIsofoam射流问题

    3
    3 帖子
    67 浏览
    X

    @李东岳 感谢东岳老师的回复,设置我也贴一下:

    FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { "alpha.phase1.*" { nAlphaCorr 3; nAlphaSubCycles 1; alphaOuterCorrectors yes; cAlpha 0; isoFaceTol 1e-6; surfCellTol 1e-6; nAlphaBounds 3; snapTol 1e-12; clip true; gardAlphaNormal false; MULESCorr yes; nLimiterIter 3; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-8; relTol 0; orientationMethod LS; //RDF splitWarpedFace false; writePlicFields false; mapAlphaField true; nAlphaSubCycles 1; cAlpha 1; } "pcorr.*" { solver GAMG; tolerance 1e-08; relTol 0.01; smoother DIC; cacheAgglomeration no; } p_rgh { solver GAMG; tolerance 1e-08; relTol 0.01; smoother DIC; cacheAgglomeration no; } p_rghFinal { $p_rgh; relTol 0; tolerance 1e-9; } U { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-07; relTol 0; } UFinal { $U; tolerance 1e-06; relTol 0; } kFinal { $k; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } epsilonFinal { $epsilon; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } epsilon { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } k { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } } PIMPLE { momentumPredictor yes; nOuterCorrectors 3; nCorrectors 5; nNonOrthogonalCorrectors 1; pRefPoint (0.01 0.01 0.01); pRefValue 0; } reconstructionSchemes { alpha.phase1 { method isoAlpha; isoAlphaMethod isoAlpha; alpha alpha.phase1; isoValue 0.5; surfaceCellSize 0; linearCorrection true; smoothNormals true; nSmoothNormals 3; cellNormalMethod corrected; faceNormalMethod corrected; } } relaxationFactors { fields { } equations { ".*" 1; } } FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default CrankNicolson 1; } gradSchemes { default Gauss linear ; } divSchemes { div(Phi,U) Gauss linearUpwind grad(U); div(rhoPhi,U) Gauss limitedLinearV 1; div(phi,alpha.phase1) Gauss interfaceCompression vanLeer 3; div(phirb,alpha) Gauss interfaceCompression; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div((muEff*dev(T(grad(U))))) Gauss linear; div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } interfaceCompression { cAlpha 2; } wallDist { method meshWave; } fluxRequired { default no; p_rgh; pcorr; alpha.phase1; } FoamFile { version 2.0; format ascii; class dictionary; location "system"; object setFieldsDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // defaultFieldValues ( volScalarFieldValue alpha.phase1 1 ); regions ( cylinderToCell { p1 (0 0 0); p2 (0 0 0.004); radius 0.0003925; fieldValues ( volScalarFieldValue alpha.phase1 0 ); } ); FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application interIsoFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 0.2; deltaT 0.0001; writeControl adjustableRunTime; writeInterval 0.005; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression uncompressed; timeFormat general; timePrecision 6; runTimeModifiable yes; adjustTimeStep yes; maxCo 5; maxAlphaCo 1; maxDeltaT 0.01; libs ("libfiniteVolume.so" "libsampling.so"); functions { bubbleTracking { type surfaces; libs ("libsampling.so"); surfaceFormat vtk; fields (alpha.phase1 U); surfaces ( bubbleSurface { type isoSurface; isoField alpha.phase1; isoValue 0.5; interpolate true; } ); executionInterval 5; } gasVolumeFraction { type volFieldValue; libs ("libfieldFunctionObjects.so"); enabled true; operation average; fields (alpha.phase1); mean on; base time; writeControl timeStep; writeInterval 1; log true; valueOutput true; writeFields false; surfaceFormat none; format csv; } FoamFile { format ascii; class volScalarField; location "0"; object epsilon; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -3 0 0 0 0]; internalField uniform 1e-6; boundaryField { outlet { type zeroGradient; } inlet { type fixedValue; value uniform 1.04e5; } nozzlewall { type epsilonWallFunction; value uniform 1e-6; } bottom { type epsilonWallFunction; value uniform 1e-6; } pipewall { type epsilonWallFunction; value uniform 1e-6; } } FoamFile { version 2.0; format ascii; class volScalarField; object k; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; internalField uniform 1e-6; boundaryField { outlet { type zeroGradient; } inlet { type fixedValue; value uniform 11.34; } nozzlewall { type kqRWallFunction; value uniform 1e-6; } bottom { type kqRWallFunction; value uniform 1e-6; } pipewall { type kqRWallFunction; value uniform 1e-6; } } FoamFile { version 2.0; format ascii; class volScalarField; object nut; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -1 0 0 0 0]; internalField uniform 1e-6; boundaryField { outlet { type calculated; value uniform 0; } inlet { type calculated; value uniform 0; } nozzlewall { type nutkWallFunction; value uniform 0; } bottom { type nutkWallFunction; value $internalField; } pipewall { type nutkWallFunction; value uniform 0; } } FoamFile { version 2.0; format ascii; class volScalarField; object p_rgh; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; internalField uniform 0; boundaryField { outlet { type totalPressure; p0 uniform 0; } inlet { type fixedFluxPressure; value uniform 0; } nozzlewall { type fixedFluxPressure; value uniform 0; } bottom { type fixedFluxPressure; value uniform 0; } pipewall { type fixedFluxPressure; value uniform 0; } }

    具体就是这样,设定喷气体,容器里面充满液体,改了一个月也没怎么收敛,头大得很,之前画了个200w的网格,△t很小就调粗网格了,能够调成功的话打算在捕获相界面的方法上下点功夫。

  • 单空泡溃灭

    8
    8 帖子
    1k 浏览
    S

    @李东岳 在 单空泡溃灭 中说:

    bubbleCollapse.tar.gz

    适配openfoam10

    @李东岳 在 单空泡溃灭 中说:

    bubbleCollapse.tar.gz

    适配openfoam10

    非常感谢

  • 请教一下关于openfoam湍流模型的设置问题

    5
    5 帖子
    115 浏览
    C

    假如约束太弱的话,就是会漂出去一段距离,也和实际情况相符。可以提高约束刚度试试。

  • 15 帖子
    3k 浏览
    C

    @Prometheus10 对,“界面褶皱”的问题一直存在的,加密三相接触线附近网格会好一些,但是不能完全祛除,原因未知。

  • Openfoam虚拟机全系列压缩包损坏

    4
    4 帖子
    88 浏览
    C

    好嘞谢谢您

  • 三维圆柱绕流案例

    6
    6 帖子
    146 浏览
    P

    @李东岳 好的 那我换个版本吧

  • vmware虚拟机 复制粘贴不成功

    4
    4 帖子
    139 浏览
    C

    东岳老师,我之前电脑坏了现在电脑在重新下载Openfoam虚拟机全系列,发现你那个保存到百度网盘上的虚拟机全系列好像坏了,您能再上传一下吗,我解压的时候说压缩包已损坏

  • 使用sprayFoam求解器设置多喷雾入口算例

    8
    8 帖子
    3k 浏览
    R

    或许可以在createClouds.H中声明多个basicSprayCloud对象,并将相应的源项添加进去