Skip to content

OpenFOAM

OpenFOAM交流区

4.5k Topics 26.5k Posts
  • 合集:OpenFOAM安装准备工作贴

    Pinned
    7
    7 Posts
    15k Views
    S

    @sdugem 已解决

  • OpenFOAM教程 初级入门建议

    Pinned
    47
    47 Posts
    99k Views
    李东岳

    @黑山雁 处理了 :-)

  • OpenFOAM编程计算湍动能Budget

    4
    4 Posts
    140 Views
    李东岳

    是,这个nabla U有不同的写法:

    可以看出,方程(2.41)中的速度梯度与方程(2.7)形式并不一样,二者互为转置。这是因为
    在这里牵涉到一个张量概念:分子布局(numerator layout)以及分母布局(denominator
    layout)。方程(2.41)中的速度梯度采用了分子布局。方程(2.7)采用的为分母布局。两种布
    局导致写法不同。维基百科表示目前的教材中确实存在这一问题[8]。在本书以及开源软件
    OpenFOAM 中,使用的是方程(2.7)的形式

    另外,nabla U这个我之前也没细看。写了一种形式,有人说我写错了,给我发了个sci,我发现确实错了。我就改了一下。过一段时间,又有人说我错了。我又改回去了。这个sci里面定义还不一样。目前我写的跟OpenFOAM一致。

  • chemkinToFoam

    2
    2 Posts
    18 Views
    W

    @xuqiming 没有理解错。
    因为OpenFOAM里默认的transport model是sutherland公式,输运特性参数里的粘度的计算方法为:
    $$
    \mu=A_s \frac {T^{3/2}}{T+T_s}
    $$
    可以看出需要 $A_s$ 和 $T_s$ 这两个参数。这是一个非常简单的transport model。如果要用原生的任何燃烧求解器包括reactingFoam,那就是默认用sutherland公式,就只需要用OpenFOAM里 $A_s$ 和 $T_s$ 两个参数的transport文件。
    关注分子输运特性的组分,chemkin形式的transport文件里的六列分子特性参数是用来计算该组分粘度和比热容的,最终得到混合物的特性的,这种就是mixture-averaged/multicomponent transport model。OpenFOAM原生代码里没有植入这俩模型。
    看你用的是OpenFOAM-7,多说一句,OpenFOAM-8及以上的org版本增加了基于Fickian和MaxwellStefan模型求扩散系数的,这对求组分扩散非常重要,应该值得去关注一下,虽然这些模型用着也不是很方便。

  • 如何加速压力求解器收敛

    6
    6 Posts
    70 Views
    学流体的小明

    😅我自己写的程序必须是simple的分解,scotch都不能用,更不用说metis了

  • 5 Posts
    165 Views
    evensunE

    @cccrrryyy
    老师,实现这个的方法是,将我们算出来的粘性值,通过DEFINE_PROPERTY宏,加入到物性的分子粘性中,这样,在计算动量方程时用到的粘性,就是有效粘性(分子粘性+湍流粘性)了
    后面要和燃烧模型耦合会有点麻烦,因为燃烧模型会用到湍流粘性,我估计fluent会直接去找他们自己模型算的湍流粘性值,不知道这里会不会需要做一些额外的处理

  • #无痛苦N-S方程笔记#勘误

    3
    3 Posts
    25 Views
    李东岳

    已更新,确实有遗漏。谢谢!

  • 1 Posts
    59 Views
    B

    (One dimensional spherical flame initiation)
    我们最近在用reactingFoam、reactingDNS(考虑了组分的详细输运特性)来计算1D球形火焰传播,并且想与ASURF对照。在该算例中,火焰是在固定区域内沉积能量来引发的,该能量沉积区域位于1D计算域的左侧,长度rig=0.2mm,持续时长tig=0.2ms。该能量直接加入能量方程:power=energy/(4/3X3.14Xrig^3Xtig)Xexp(-(r/rig)^6)(X表示*)。在算例中使用topoSet工具降能量沉积区域disZone圈出来,求解器内部读取该disZone中的网格变化,然后对能量源项进行赋值。

    首先创建能量源项sparkE,读取算例中给的能量沉积半径dis_radius,持续时间dis_duration,能量dis_energy。 volScalarField sparkE ( IOobject ( "sparkE", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, dimensionedScalar("sparkE", dimEnergy/dimTime/dimVolume, 0.0) // J/m3/s ); IOdictionary chemistryDict ( IOobject ( thermo.phasePropertyName("chemistryProperties"), thermo.db().time().constant(), thermo.db(), IOobject::MUST_READ, IOobject::NO_WRITE, false ) ); const dictionary& dischargeTypeDict = chemistryDict.subDict("sparkDischarge"); scalar dis_duration = dischargeTypeDict.lookupOrDefault<scalar>("dis_duration", 2E-4); // 200 us scalar dis_radius = dischargeTypeDict.lookupOrDefault<scalar>("dis_radius", 2E-4); // 200 um scalar dis_energy = dischargeTypeDict.lookupOrDefault<scalar>("dis_energy", 1E-3); // 1 mJ //scalar dis_central = dischargeTypeDict.lookupOrDefault<scalar>("dis_central", 1E-3); // 1 mJ scalar PI = 3.1415926; scalar dis_paramTot = dis_energy/(4.0*PI/3.0*dis_radius*dis_radius*dis_radius*dis_duration); //scalar dis_paramTot = dis_energy/(PI*Foam::sqrt(PI)*dis_radius*dis_radius*dis_radius*dis_duration); 在求解器主程序中,对能量赋值 const label& disZoneID = mesh.cellZones().findZoneID("disZone"); const labelList& cZone = mesh.cellZones()[disZoneID]; forAll(mesh.C(),cellI) { sparkE[cellI] = 0.0; } if (disZoneID != -1 && cZone.size() > 0 && runTime.value() <= dis_duration) { forAll(cZone,cellI) { sparkE[cZone[cellI]] = dis_paramTot*std::exp(-PI/4.0*pow(mesh.C()[cZone[cellI]].x()/dis_radius,6)); // sparkE[cZone[cellI]] = dis_paramTot*std::exp(-pow(mesh.C()[cZone[cellI]].x()/dis_radius,2)); } } if ( (runTime.value()+runTime.deltaTValue()) > dis_duration && runTime.value() < dis_duration ) { runTime.setDeltaT((dis_duration-runTime.value())); } Info << " sparkE max/min: "<< max(sparkE).value() <<" "<< min(sparkE).value() << endl;

    但是如果采用ASURF中不能点火的能量,在openfoam中竟然能点燃。
    并且火焰半径(即火焰位置,定义为最大温度梯度)随时间的变化与ASURF完全不一样,图片左侧为openfoam计算结果,右侧为ASURF计算结果。请大家指点
    07dcd785-c9d6-4cca-a1e6-37f88d616cc8-flameRadius_left(reactingFoam)_right(ASURF).png

    算例可见附件:
    1Dflame_case.zip

  • 变量未初始化问题

    1
    1 Posts
    11 Views
    T

    在lagrangian/intermediate/submodels/Kinematic/ParticleForces路径下添加了一个电场力模型,编译通过,case计算时报错,似乎跟q和E变量未初始化有关,代码小白,求指点。

    563ac197-796b-4021-a867-d6ecd3a34007-image.png
    648c605a-93af-4ff6-9178-8242e48f84bd-image.png

    // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> Foam::ElectricfieldForce<CloudType>::ElectricfieldForce ( CloudType& owner, const fvMesh& mesh, const dictionary& dict, const word& forceType, const volScalarField& qField ) : ParticleForce<CloudType>(owner, mesh, dict, forceType, true), EName_(this->coeffs().template lookupOrDefault<word>("E", "E")), EInterpPtr_(NULL), qField_(qField) { Info<< "-----p in ELe\n" << endl; qInterpPtr_.reset ( interpolation<scalar>::New ( owner.solution().interpolationSchemes(), qField ).ptr() ); Info<< "-----p2 in ELe\n" << endl; } template<class CloudType> Foam::ElectricfieldForce<CloudType>::ElectricfieldForce ( const ElectricfieldForce& etf ) : ParticleForce<CloudType>(etf), EName_(etf.EName_), EInterpPtr_(NULL), qField_(etf.qField_) {}
  • paraview如何衡量长度

    6
    6 Posts
    3k Views
    L

    收藏!!

  • 关于paraview后处理颗粒的问题

    9
    9 Posts
    4k Views
    L

    学习ing

  • 1 Posts
    145 Views

    各位老师,早上好!小白最近在做openfoam燃烧时发现得到的模拟结果过小,比如我在化学反应机理中添加激发态自由基的反应,模拟得到的激发态自由基的结果量级在10^(-9),这在实验中结果是可信的,因为这种自由基不稳定,很快会跃迁到基态,但是从数值角度怎么解释呢?也有一些基态自由基比如CH,它的量级在10^(-5)。在openfoam中很多方程,它的残差到10^(-6),我们就认为它收敛了。10^(-9)量级的值我们怎么才能够保证其数值模拟结果的可信性呢,而不是计算得到的误差?是对一些不大可能发生的反应乘上了一个很小的系数吗?还是经过什么处理?文献中也只是给出了一个结果,但并没有对结果的可信性作出解释,恳请各位老师解惑。

  • 7 Posts
    292 Views
    L

    @Prometheus10 在 OpenFOAM计算圆球绕流过程中,如何输出切向粘性阻力系数和法向粘性阻力系数?或是如何从输出的结果中计算得到? 中说:

    我尝试手动在结果中将Symmetry边界条件改为Wall,然后执行一次wallshearstress;
    通过对比文献中气泡的压差阻力系数、法向粘性应力和切向粘性应力结果,输出的结果并不对

    是的,因为wallshearstress代码会自动过滤非wall边界,可以手动改为wall。既然计算剪切力的公式都是一样的,这么改一下不会影响计算正确性的。和文献对不上是不是symmetry边界条件的问题呢?(你们这个帖子挺长,我看大意是不是:楔形网格算球noslip正确,但算slip和symmetry和文献对不上,且symmetry效果更好些?)
    用整球网格算会如何呢?做一些其它情况的验证呢,比如壁面滑移的方腔流动?

    我之前做过低雷诺数下的一阶maxwell速度滑移的圆柱绕流,算出来的受力以及粘性正应力占比和文献比得上。不过你的自由滑移情况我没考虑过,不知道为啥出问题。

    @Prometheus10 在 OpenFOAM计算圆球绕流过程中,如何输出切向粘性阻力系数和法向粘性阻力系数?或是如何从输出的结果中计算得到? 中说:

    除此以外,是否只有像您提到的【方案二】基于wallshearstress functionObject进行修改,才能输出“绕流气泡”的粘性剪切力结果。

    这个只是方便些,直接输出壁面切向和法向粘性力场,不用在paraview中写公式,但是需要改OpenFOAM代码。得先看明白wallshearstress中咋算的,主要是改calcShearStress函数,不难,慢慢看慢慢改。

  • 多区域求解器温度场收敛非常慢

    2
    2 Posts
    148 Views
    李东岳

    能量方程收敛非常慢,导致计算时间增加了数十倍

    从你的log来看,能量方程都没有计算了。不是能量方程的问题

  • 19 Posts
    504 Views
    O

    @李东岳 好的,谢谢李老师,我试一试

  • OpenFOAM.com系列国内满速下载地址

    1
    1 Posts
    86 Views
    李东岳

    这些国内软件包都是直接fork国外github上面的OpenFOAM。因为有时候github访问不上去。就fork到国内。

    下列地址可直接使用git clone,例如,打开终端,在终端直接将下面的复制进去:

    git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-6.git

    即可在本地创建ThirdParty-6文件夹。如果提示你没有git,那么输入下面的即可:

    sudo apt install git

    正常的话是下图这样:

    捕获.JPG

    相关git地址: git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-v2312.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-v2306.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-v2206.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-v2106.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-v2006.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-v1912.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-v1906.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-v1712.git

    第三方包地址:

    git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-v2306.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-v2212.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-v2206.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-v2106.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-v2006.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-v1906.git

    在下载的时候,需要下载相应的OpenFOAM与相应版本的第三方包

  • OpenFOAM.org系列国内满速下载地址

    1
    1 Posts
    76 Views
    李东岳

    这些国内软件包都是直接fork国外github上面的OpenFOAM。因为有时候github访问不上去。就fork到国内。

    下列地址可直接使用git clone,例如,打开终端,在终端直接将下面的复制进去:

    git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-6.git

    即可在本地创建ThirdParty-6文件夹。如果提示你没有git,那么输入下面的即可:

    sudo apt install git

    正常的话是下图这样:

    捕获.JPG

    相关git地址: git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-11.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-10.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-9.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-8.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-7.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-6.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-5.x.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-4.x.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-3.0.x.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-2.3.0.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-2.2.0.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-2.1.1.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-2.1.0.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-2.0.0.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-1.7.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-1.6.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-1.5.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-1.4.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-1.3.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-1.2.git git clone https://e.coding.net/dyfluid/OpenFOAM/OpenFOAM-1.1.git

    第三方包地址:

    git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-11.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-10.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-9.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-8.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-7.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-6.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-5.x.git git clone https://e.coding.net/dyfluid/OpenFOAM/ThirdParty-3.0.x.git

    在下载的时候,需要下载相应的OpenFOAM与相应版本的第三方包

    如果有人需要scotch_6.0.3: scotch_6.0.3.tar.gz

  • 关于晃荡惯性力的植入

    13
    13 Posts
    1k Views
    李东岳

    我觉得你这个挺有意思的。初学可以练手用。但是个人觉得算法应该没有问题,出现不一致的情况可能还是哪里出现了小bug。

  • 3 Posts
    110 Views

    @BlancheDH 好嘞,我去试试,谢谢大佬:xinxin:

  • openFOAM中耦合风力机致动线模型

    11
    11 Posts
    2k Views
    S

    @sxz0823 可以加个联系方式交流一下吗,我用turbinesFoam和LES但是结果很不对我的qq是:1141101064