mech2Foam能够生成XiFoam求解器所需的Gulder系数与热物理学参数
所需全部代码可从下面网站下载|
https://usn.figshare.com/articles/code/Generating_thermodynamic_and_combustion_properties_for_CFD_mech2Foam/13721134
使用该代码过程中发现大大小小报错太多,难以使用,经过检查和修改,对部分不适配电脑上python3.11的代码进行了修改。同时对部分源代码中有问题的部分进行了修改。对没有表述清楚的地方增加了注释进行说明。
经过测试,目前该代码能够成功生成Gulder系数与适配of7的thermophysicalProperties文件。
修改后主程序如下
main.py
xuqiming
帖子
-
mech2Foam程序使用 -
chemkin反应机理转化为cantera,进而转化为openFoam .dat文件@风云5091 我觉得你可能是没有修改python代码中的文件名,因为他提示的是CTI和XML格式不支持。Yaml是支持的。你可以检查ctTransToOF中mian程序下文件名是否为chem.yaml,然后再到python3环境中进行调用。
mech = 'chem.yaml'
python3 ctTransToOF.py
-
chemkin反应机理转化为cantera,进而转化为openFoam .dat文件@风云5091 ctTranToFoam.py是一个python程序,应当按python程序的运行方式去运行,不是一个foam程序,
-
oepnFoam如何初始化非均匀内部标量场感谢上述诸位的帮助,我已经成功通过funkySetFields解决了上述问题。并有一些自己的感受
*blastXiFoam求解器中的volScalarFieldFunction在OF7中是不支持的,虽然不知道为何我下载的blastFoam对应版本turious中有该函数;
*通过swak4foam中funkySetFields能够实现非均匀场的指定。swak4foam安装需要找对对应自己OF版本的文件,目前我找到的最高的似乎只支持到OF7。在高版本的UBUNTU上安装swak4foam无法直接使用,因为swak4foam调用python内核,且只支持“Python”名,而在高版本的UBUNTU中识别的的是python3,因此需要将python3和python进行连接,使用sudo ln -sf /usr/bin/python3 /usr/bin/python
即可。
*funkySetFields的简单使用很容易实现,在system中复制入一个funkySetFieldDict文件,通过expression进行场和条件的指定,运行funkySetFields -time n
即可实现非均匀场的指定。
-
oepnFoam如何初始化非均匀内部标量场@Rachel0096 感谢你的回复,但是该教程是对边界条件进行修改,如果将二维工况中的内部标量类比于三维条件下的边界标量似乎可以尝试,希望有更好的办法。
-
oepnFoam如何初始化非均匀内部标量场@youhaoyu 那0文件数据顺序与坐标网格的对应规则如何呢,这个我还真没注意过。
-
oepnFoam如何初始化非均匀内部标量场由于计算需要,在oepnFoam中想要生成随Y轴变化的温度场(比如T=300+100*Y),但是不知道要如何才能实现,希望诸位大佬能不吝赐教。
我自己目前看到两个实现方案,但是都尚未能实现-
1是看到blastXiFoam求解器在setField文件中通过volScalarFieldFunction来施加code标量场,但是我使用该方法时一直报错(即使直接运行blastXiFoam案例中的Allrun文件);
-
2是看到很多说使用funkySetFields包可以实现复杂初始化场,目前尚未实现。
-
-
chemkin反应机理转化为cantera,进而转化为openFoam .dat文件本人菜鸡,记录一下自己chemkin反应机理转化为cantera,进而转化为openFoam .dat文件的过程,希望有需要的人可以少走一些弯路。
目的:chemkinToFoam转化的机理无法对热力学文件所需要的As与Ts进行计算,因此需要通过ctTransToOF程序进行转化,而ctTransToOF只识别cantera格式文件,所以首先需要通过cantera的ck2yaml将chemkin反应机理转化为.yaml格式文件。
1、安装cantera
最后安装PYTHON版本,因为ctTransToOF只找到了.py文件,这样比较方便。
pip install cantera可以直接安装。2、调用ctTransToOF模块
cantera官网有教程,ck2yaml --input=chem.inp --thermo=therm.dat --transport=tran.dat在python解释器直接运行即可。此处有一个问题是,我安装的cantera不知道为何无法调用ck2yaml功能,因此直接在终端进行使用了。转化时,一般会报错,建议通过ck2yaml --permissive --input=chem.inp --thermo=therm.dat --transport=tran.dat --debug处理.inp文件。3、生成dat文件
将生成的.yaml文件放入ctTranToFoam-main程序的mechanism文件夹,将文件名修改为对应.yaml文件名。注意ctTranToFoam-main程序不能使用.cti等格式的机理文件,会报错。运行ctTranToFoam.py
,生成dat文件。 -
chemkinToFoam@风云5091 很简单,chemkin会根据transport中的6个参数去计算不同温度下的粘度,我是人为读取数据,然后依据sutherland公式去拟合这两个参数。
不过我也不知道这样是否合理,目前是这样做的。 -
chemkinToFoam@风云5091 我基于chemkin的计算结果自己拟合了As和Ts
-
chemkinToFoam@wangfei9088 不好意思,才看见消息。
非常感谢您的回复,或许我还是应该使用FLUENT去实习自己的需求。 -
chemkinToFoam*chemkinToFoam关于transport输运文件的疑问
在使用chemkinToFoam中,根据说明书所使用的命令为*** chemkinToFoam [OPTIONS] <CHEMKIN file> <CHEMKIN thermodynamics file> <CHEMKIN transport file> <OpenFOAM chemistry file> <OpenFOAM thermodynamics file>*
但是根据网络论坛和我自己的尝试,chemkin中的transport文件无法进行转化,chemkinToFoam所需的transport文件实际上如下图所示。
根据我的理解,transport文件是用于计算包括二元输运系数在内的一系列输运参数的,在除了0维反应动力学计算的其他计算中应当都是需要transport文件。
那么openFoam中在通过reactingFoam等求解器进行计算时,为何不需要transport参数。
又或者是我理解错误,其实transport文件可以进行转化。
恳请诸位大佬批评指导!openFoam中使用的输运文件
-
基于reactingFoam的管道内预混氢气点火爆炸@尚善若水 好的,非常感谢,我去看一下,实在不行就返回用fluent去做了,只是浪费了几个月的学习时间。
-
基于reactingFoam的管道内预混氢气点火爆炸@wangfei9088 那请问您是否了解其他公开求解器,比如blastFoam或者rhoCentralRfFoam有能解决这是问题的吗?
-
基于reactingFoam的管道内预混氢气点火爆炸@wangfei9088 感谢您的回复
参考您的建议1,正如您说的,我现在热物理属性用的是reactingMixture,之前尝试过multicomponent,但是这个属于在of7中问题很多,非常容易报错(在of8中倒是可以运行),我将会尝试下您说的其他属性。
参考您的建议1和2,您的意思是reactingFoam无法实现热质传输不平衡的模拟,进而导致这种情况,那如果需要修改这一点,需要对reactingFoam进行重新修改编译吗,我尚未接触到这种较底层的内容,那是不是代表用reactingFoam就难以实现我的需求了。我使用的热物理属性如下
thermoType { type hePsiThermo; mixture reactingMixture; transport sutherland; thermo janaf; energy sensibleEnthalpy; equationOfState perfectGas; specie specie; } inertSpecie N2; chemistryReader foamChemistryReader; foamChemistryFile "$FOAM_CASE/constant/reactions"; foamChemistryThermoFile "$FOAM_CASE/constant/thermo.compressibleGas";```
-
基于reactingFoam的管道内预混氢气点火爆炸补充一下,模拟是基于of7版本进行的。
-
基于reactingFoam的管道内预混氢气点火爆炸场景描述
5cm5cm50cm密闭管道内充满当量比预混氢气,在管道一端点火,观察火焰传播。
算例描述
问题简化为2维问题,湍流模型选择SST(我的算例不知道为何选择别的湍流模型会发散) ,点火点通过设置2500k温度进行点火(k 50, omega 5000),网格尺寸为0.1cm,单个算例7773X单核计算时间约为500s,求解器为reactingFoam,输运模型为EDC 2005,详细反应机理。
问题描述
在试验中,火焰形成指形火焰后,点火端应该先接触上下壁面,然后逐渐向前沿传播,火焰前端较尖锐,但是在模拟中指形火焰前端过于圆润,而且在靠近火焰尖端的地方先接触壁面,导致下一个阶段平面火焰出现的比较晚而且形状不对。自己调参测试(已经测试很久)过壁面条件、初始参数和离散格式,目前发现离散格式影响很大,但是不知道如何设置,只能碰运气,未发现效果更好的离散格式。
希望大佬能给出一些修改意见
如果大家感兴趣,可以上传完整算例
PS.在fluent中EDC确定能够实现这种模拟。下面为对比图,场景尺寸不完全一样,但是现象肯定是一致的。目前没有对一样尺寸试验结果进行定量对比,想要先现象能对应上。
reactingFoam模拟
论文 8.2cm8.2cm40cm场景下试验与FLUENT模拟
离散格式ddtSchemes { default backward;//Euler; } gradSchemes { default Gauss linear; grad(U) cellLimited leastSquares 1; grad(k) cellLimited leastSquares 1; grad(epsilon) cellLimited leastSquares 1; grad(omega) cellLimited leastSquares 1; } divSchemes { default bounded Gauss linearUpwind limited;//Gauss limitedLinear 1; div(phi,U) Gauss linearUpwind grad(U); div(phi,Yi_h) Gauss MUSCL; div(phid,p) Gauss linearUpwind grad(U); div(phi,K) Gauss limitedLinear 0.5;//Gauss linearUpwind default; div(phi,epsilon) Gauss linearUpwind default; div(phi,omega) Gauss linearUpwind default; div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear orthogonal; } interpolationSchemes { default linear; } snGradSchemes { default orthogonal; } wallDist { method meshWave; }
初始化变量
regions ( cylinderToCell { p1 (0 0 0); p2 (0 0 0.01); radius 0.0075; fieldValues ( volScalarFieldValue T 2500 volScalarFieldValue k 100 volScalarFieldValue omega 5000 volScalarFieldValue N2 1 ); } );