Skip to content
  • turbinesFoam致动线模型

    OpenFOAM
    3
    0 赞同
    3 帖子
    15 浏览
    S

    @李东岳 李老师你好,这有论文的,这个是作者写的
    Bachant, P., Goude, A., and Wosnik, M. (2016) Actuator line modeling of vertical-axis turbines. arXiv preprint 1605.01449.

  • 物性库编译提示 undefined reference

    OpenFOAM
    2
    0 赞同
    2 帖子
    10 浏览
    L

    因为密度和温度是成反比,多项式拟合即使用7次方拟合,效果仍然较差,而不可压理想气体模型可以又快又准的计算出密度

  • chemkinToFoam

    OpenFOAM
    3
    0 赞同
    3 帖子
    51 浏览

    最近看到的比较多的是耦合Cantera,使用OpenFOAM v10以后的多组分扩散可以看下这个 DDOF

  • 欧拉拉格朗日方法的问题

    OpenFOAM
    5
    0 赞同
    5 帖子
    149 浏览
    G

    好的,谢谢李老师!我去试一下

  • 0 赞同
    3 帖子
    315 浏览
    M

    你这read data 是干什么的 没找到哪里调用了啊。

  • OpenFOAM编程计算湍动能Budget

    OpenFOAM
    4
    0 赞同
    4 帖子
    182 浏览
    李东岳

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

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

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

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

    OpenFOAM
    6
    0 赞同
    6 帖子
    105 浏览
    学流体的小明

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

  • 0 赞同
    5 帖子
    191 浏览
    evensunE

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

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

    OpenFOAM
    2
    0 赞同
    2 帖子
    47 浏览
    李东岳

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

  • 0 赞同
    1 帖子
    76 浏览
    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

  • 变量未初始化问题

    OpenFOAM
    1
    0 赞同
    1 帖子
    22 浏览
    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如何衡量长度

    OpenFOAM
    6
    0 赞同
    6 帖子
    3k 浏览
    L

    收藏!!

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

    OpenFOAM
    9
    0 赞同
    9 帖子
    4k 浏览
    L

    学习ing

  • 网站安装的软件包

    C斯达克
    1
    0 赞同
    1 帖子
    82 浏览
    李东岳

    网站安装:

    sudo apt-get install python3-sphinx python3-pip pip install myst-parser sphinx-design sphinx-rtd-theme
  • 0 赞同
    1 帖子
    181 浏览
    G

    看论文的时候看到了这种速度云图,有大神知道是如何后处理得到的吗,可以通过tecplot实现吗?
    屏幕截图 2024-04-29 102300.png

  • 0 赞同
    1 帖子
    151 浏览

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

  • 0 赞同
    7 帖子
    329 浏览
    L

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

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

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

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

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

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

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

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

    OpenFOAM
    2
    0 赞同
    2 帖子
    154 浏览
    李东岳

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

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

  • 关于动网格的问题

    Fluent
    2
    0 赞同
    2 帖子
    400 浏览
    M

    改重心 或者自定义坐标系

  • 0 赞同
    19 帖子
    576 浏览
    O

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