【分享+搬运】自定义非均匀inlet U
-
有条件的可以自行油管:https://www.youtube.com/watch?v=K-nAF3qAPTc
感谢youtuber:Mark Kimber
侵删-
首先你要有一个自己的进口速度场的公式
或者自行拟合一个,根据实际情况来。
-
在Terminal中输入
writeCellCentres
获取网格每个cell的坐标,会生成ccx,ccy,ccz三个文件,内涵每个patch中的每个cell的坐标(x,y,z),找到inlet patch,我的是topWall。3个文件中的topwall(就是我的inlet)的2100代表的是这个patch上又2100个网格。同理对于ccy文件同样找到这个patch的所有cell坐标。分别复制这些数据,生成两个新的文本,叫inletX, inletY。根据实际网格情况,以及坐标轴自行选择用哪2个文件。
-
进入octave(一个类似matlab的程序,youtuber是这么说的)这一步主要是根据你的速度场的公式,xy坐标,计算出进口的vector。
x= load('inletX'); //读取inlet patch的x坐标 y=load('inletY'); //读取inlet patch的y坐标 Uz==1.1+0.18988/0.01415/sqrt(3.1415926/2)*exp(-2*(x.^2+y.^2)/0.1415.^2); //公式 fid= fopen('inletU','w')// inletU文件要提前新建好,不知道为什么视频中输出结果为5,我的结果一直为3,不过不影响使用 N=length(x) for i=1:N fprintf(fid,'(%8.4f %8.4f %8.4f) \n',0,0,Uz(i)); end fclose(fid)
其实第3步完全可以用excel做。。。。。。。
-
把得到的vector的值带入到0/U中
-
进入paraview中查看即可
-
-
@aiweimo setfields 应该是定义cell centers 的值吧(这个我不是太确定,如果错误希望各位大神指正),这个应该是定义的入口边界处的,还有那个writeCellCentres现在应该是在postProcessing中了,不能直接用。如果你想定义随时间改变的inlet,可以参考一下timeVaringMappedFixedValue(也许拼错了哈哈)。具体实现的例子,可以参考一个叫eddylicious的工具包,或者查看openfoam的代码,或者去cfdonline上查看对应的例子。
-
@星星星星晴 大佬您好,我学习了您的教程,但是没有复现出来,您能帮我看看哪出问题了吗?
我是用的of10,直接修改的windaroundbuidings算例(只改了速度U)
U文件如下/*--------------------------------*- C++ -*----------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: 10 \\/ M anipulation | \*---------------------------------------------------------------------------*/ FoamFile { format ascii; class volVectorField; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Uinlet (10 0 0); dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { inlet { type fixedValue; value nonuniform List<vector> 494 ( ( -1.2961 0.0000 0.0000) ( -0.7059 0.0000 0.0000) ( -0.2917 0.0000 0.0000) ( -0.0393 0.0000 0.0000) ( 0.0672 0.0000 0.0000) ( 0.1305 0.0000 0.0000) ( 0.1642 0.0000 0.0000) ( 0.1796 0.0000 0.0000) ( 0.1850 0.0000 0.0000) ....... ........ ( 0.3551 0.0000 0.0000) ( 0.3592 0.0000 0.0000) ( -0.2114 0.0000 0.0000) ( 0.1055 0.0000 0.0000) ( 0.1069 0.0000 0.0000) ( 0.1057 0.0000 0.0000) ( -0.2113 0.0000 0.0000) ( -0.2135 0.0000 0.0000) ) } outlet { type pressureInletOutletVelocity; value uniform (0 0 0); } wall { type noSlip; } #includeEtc "caseDicts/setConstraintTypes" }
报错如下:
-
@wsy11 在 【分享+搬运】自定义非均匀inlet U 中说:
@星星星星晴 这个视频我已经看过了,也参考了视频中的步骤。
我把目录改成英文以后还是同样的报错,
我在其他的地方没有什么改动,都是用的tutorials\incompressible\simpleFoam\windaroundbuildings算例自带的条件。
,肯定不是目录的问题,只是建议你不要使用中英文混合目录。
我查了一下我之前的CASE,是不是少了一个分号?/*--------------------------------*- C++ -*----------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: 10 \\/ M anipulation | \*---------------------------------------------------------------------------*/ FoamFile { format ascii; class volVectorField; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Uinlet (10 0 0); dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { inlet { type fixedValue; value nonuniform List<vector> 494 ( ( -1.2961 0.0000 0.0000) ( -0.7059 0.0000 0.0000) ( -0.2917 0.0000 0.0000) ( -0.0393 0.0000 0.0000) ( 0.0672 0.0000 0.0000) ( 0.1305 0.0000 0.0000) ( 0.1642 0.0000 0.0000) ( 0.1796 0.0000 0.0000) ( 0.1850 0.0000 0.0000) ....... ........ ( 0.3551 0.0000 0.0000) ( 0.3592 0.0000 0.0000) ( -0.2114 0.0000 0.0000) ( 0.1055 0.0000 0.0000) ( 0.1069 0.0000 0.0000) ( 0.1057 0.0000 0.0000) ( -0.2113 0.0000 0.0000) ( -0.2135 0.0000 0.0000) ); } outlet { type pressureInletOutletVelocity; value uniform (0 0 0); } wall { type noSlip; } #includeEtc "caseDicts/setConstraintTypes" }