Skip to content
  • 0 赞同
    23 帖子
    4k 浏览

    @Prometheus10 感谢已经解决了,但是用共享文件夹计算算例感觉速度很慢,尤其是打开一个计算步比较多的算例就很卡,我就是右下角加载的光盘,谢谢!

  • 论坛最近是不是显示有问题

    C斯达克
    7
    0 赞同
    7 帖子
    2k 浏览

    @李东岳 感觉好像能行了:140: 感谢李老师!

  • blockMesh楔形体网格划分

    OpenFOAM
    5
    0 赞同
    5 帖子
    400 浏览
    J

    @李东岳 ```
    /--------------------------------- 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 dictionary;
    object extrudeProperties;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    constructFrom patch;
    sourceCase "$FOAM_CASE";

    sourcePatches (front);
    exposedPatchName back;

    extrudeModel wedge;

    sectorCoeffs
    {
    axisPt (0 0 0);
    axis (0 -1 0);
    angle 5;
    }

    flipNormals false;
    mergeFaces false;

    // ************************************************************************* //

    老师,这是我的extrudeMeshDict文件,我用这个文件进行拉伸,它提示我的wedge不是一个平面,为什么会这样呢?

    /--------------------------------- 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 dictionary;
    object blockMeshDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    convertToMeters 0.001;

    vertices
    (
    (0 0 0)//0
    (7 0 0)//1
    (10 0 0)//2
    (1010 0 0)//3
    (2010 0 0)//4

    (0 5 0)//5 (5 5 0)//6 (10 5 0)//7 (1010 5 0)//8 (2010 5 0)//9 (0 40 0)//10 (7 40 0)//11 (10 40 0)//12 (1010 40 0)//13 (2010 40 0)//14 (0 1640 0)//15 (7 1640 0)//16 (10 1640 0)//17 (0 0 10)//0 (7 0 10)//1 (10 0 10)//2 (1010 0 10)//3 (2010 0 10)//4 (0 5 10)//5 (7 5 10)//6 (10 5 10)//7 (1010 5 10)//8 (2010 5 10)//9 (0 40 10)//10 (7 40 10)//11 (10 40 10)//12 (1010 40 10)//13 (2010 40 10)//14 (0 1640 10)//15 (7 1640 10)//16 (10 1640 10)//17

    );

    blocks
    (
    hex (0 1 6 5 18 19 24 23) (20 50 1) simpleGrading (1 ((1 1 50)(0 0 0)) 1)//1

    hex (1 2 7 6 19 20 25 24) (30 50 1) simpleGrading (((1 1 0.05)(0 0 0)) ((1 1 50)(0 0 0)) 1)//2 hex (2 3 8 7 20 21 26 25) (300 50 1) simpleGrading (((1 1 1500)(0 0 0)) ((1 1 50)(0 0 0)) 1)//3 hex (3 4 9 8 21 22 27 26) (40 50 1) simpleGrading (1 ((1 1 50)(0 0 0)) 1)//4 hex (5 6 11 10 23 24 29 28) (20 100 1) simpleGrading (1 1 1)//5 hex (6 7 12 11 24 25 30 29) (30 100 1) simpleGrading (((1 1 0.05)(0 0 0)) 1 1)//6 hex (7 8 13 12 25 26 31 30) (300 100 1) simpleGrading (((1 1 1500)(0 0 0)) 1 1)//7 hex (8 9 14 13 26 27 32 31) (40 100 1) simpleGrading (1 1 1)//8 hex (10 11 16 15 28 29 34 33) (20 400 1) simpleGrading (1 ((1 1 50)(0 0 0)) 1)//9 hex (11 12 17 16 29 30 35 34) (30 400 1) simpleGrading (((1 1 0.05)(0 0 0)) ((1 1 50)(0 0 0)) 1)//10

    );

    boundary
    (
    inlet
    {
    type patch;
    faces
    (
    (15 33 34 16)
    (16 34 35 17)
    );
    }

    outlet { type patch; faces ( (4 9 27 22) (9 14 32 27) ); } upper { type symmetry; faces ( (12 30 31 13) (13 31 32 14) ); } axis { type symmetry; faces ( (0 18 23 5) (5 23 28 10) (10 28 33 15) ); } bottom { type wall; faces ( (0 1 19 18) (1 2 20 19) (2 3 21 20) (3 4 22 21) ); } wall { type wall; faces ( (12 17 35 30) ); } back { type symmetry; faces ( (0 5 6 1) (1 6 7 2) (2 7 8 3) (3 8 9 4) (5 10 11 6) (6 11 12 7) (7 12 13 8) (8 13 14 9) (10 15 16 11) (11 16 17 12) ); } front { type symmetry; faces ( (18 19 24 23) (19 20 25 24) (20 21 26 25) (21 22 27 26) (23 24 29 28) (24 25 30 29) (25 26 31 30) (26 27 32 31) (28 29 34 33) (29 30 35 34) ); }

    );

    // ************************************************************************* //

    这是我的blockMesh文件,根据你之前的提示,我看那个算例里面是先定义了一个矩形出来,然后进行拉伸的,想仿照人家的来做
  • 有大神精通Basilisk的吗?

    C斯达克
    11
    0 赞同
    11 帖子
    3k 浏览
    L

    @zhaocx q求问一下basilisk怎么实现并行操作呢

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

    OpenFOAM
    8
    0 赞同
    8 帖子
    573 浏览
    G

    是的,趋势没啥问题,但是看起来这个case对于网格的依赖性没那么强,网格和液滴直径的比值小于1的情况也和另外的基本吻合

  • 0 赞同
    6 帖子
    501 浏览
    C

    @evensun 哦哦这样。

    燃烧如果是FPV啥的,想耦合FLUENT自带的确实有些麻烦,不如直接把FPV涉及的那些变量都自定义uds再求解。如果不是FPV就不清楚了。

  • 升阻力系数计算问题

    OpenFOAM
    4
    0 赞同
    4 帖子
    400 浏览
    S

    @Joker 谢谢,我改一下试试

  • turbinesFoam致动线模型

    OpenFOAM
    3
    0 赞同
    3 帖子
    159 浏览
    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 帖子
    137 浏览
    L

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

  • 0 赞同
    3 帖子
    575 浏览
    M

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

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

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

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

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

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

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

  • 0 赞同
    1 帖子
    167 浏览
    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 帖子
    93 浏览
    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 帖子
    199 浏览
    李东岳

    网站安装:

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

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

  • 0 赞同
    1 帖子
    271 浏览

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

  • 0 赞同
    7 帖子
    759 浏览
    L

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

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

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

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

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

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

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