OpenFOAM

4.5k 主题 26.2k 帖子
  • 在openfoam中如何查看yplus?

    5 帖子
    2k 浏览

    @李东岳 谢谢老师的指导,用interFoam -postProcess -func yPlus成功了。

  • compressibleInterFoam alphaEqn.H

    5 帖子
    1k 浏览

    @李东岳 谢谢老师~希望以后有机会能读到老师对这部分的分析

  • boundaryMesh().mesh().objectRegistry::template?

    3 帖子
    844 浏览

    @blookcfd 感谢您的回复,
    请问这种语法比较常见吗?
    这个objectRegistry::template是指代的 Type类型吗?

  • OpenFOAM中重叠网格问题Suggar++?

    3 帖子
    779 浏览

    Any information would be extremely helpful!

  • 11 帖子
    3k 浏览

    @李东岳 东岳老师,从下面几个式子看,固相黏度应该都是半经验表达式,所以0.5可能是个实验获得的参数:
    d7cd3790-cd15-45c3-bad9-6dcba069f6f6-image.png (JJ)
    bcc611d5-bc11-49c6-beb6-73d08b8496ad-image.png (Schaeffer)
    a5a9446d-2284-45ea-b94d-84d8125963b2-image.png (Princeton)

    此外,princeton中摩擦应力计算如下:
    b334a3b1-6081-4a12-bb32-5f3c04cca839-image.png
    3e038a48-fde7-41ec-9125-df2a1283aecb-image.png

    对通量的处理:

    const volVectorField& U = phase.U(); surfaceScalarField phiU = fvc::interpolate(U) & U.mesh().Sf(); volScalarField Ud = fvc::div(phiU);

    对压力计算:

    const volScalarField pc = Fr_*pow(max(alpha - alphaMinFriction, scalar(0)), eta_) /pow(max(alphaMax - alpha, alphaDeltaMin_), p_); ...... //对体 forAll(n,celli) { if (Ud[celli] < 0.0) { n[celli] = 1.03; } else { n[celli] = 0.5*sqrt(3.0)*sin(phi_.value()); } m[celli] = n[celli]-1; //..No negative base. 对不对? pt[celli] = 1.0-Ud[celli]/( n[celli]*sqrt(2.0)*sin(phi_.value())* (sqrt(Us[celli]) + small) ); if (!(pt[celli] > 0.0)) { pt[celli] = small; } //..No negative exponent. if (m[celli] > 0) { //n-1 power pt[celli] = pc[celli]*pow(pt[celli], m[celli]); } else { pt[celli] = pc[celli]*pow(1/pt[celli], mag(m[celli])); } } ...... //对面 forAll(currPatch,facei) { if(UdBf[patchi][facei] < 0.0) { nBf[patchi][facei] = 1.03; } else { nBf[patchi][facei] = 0.5*sqrt(3.0)*sin(phi_.value()); } mBf[patchi][facei] = nBf[patchi][facei]-1; ptBf[patchi][facei] = 1.0-UdBf[patchi][facei]/( nBf[patchi][facei]*sqrt(2.0)*sin(phi_.value())* (sqrt(UsBf[patchi][facei]) + small) ); if (!(ptBf[patchi][facei] > 0.0)) { ptBf[patchi][facei] = small; } //..No negative exponent. if (mBf[patchi][facei] > 0) { ptBf[patchi][facei] = pcBf[patchi][facei]*pow(ptBf[patchi][facei], mBf[patchi][facei]); } else { ptBf[patchi][facei] = pcBf[patchi][facei]*pow(1/ptBf[patchi][facei], mag(mBf[patchi][facei])); } } } // Correct BCs pt.correctBoundaryConditions(); Us.correctBoundaryConditions(); Ud.correctBoundaryConditions();

    黏度计算:

    //对体 forAll(Ud,celli) { if (Ud[celli] < 0) { n[celli] = 1.03; } else { n[celli] = 0.5*sqrt(3.0)*sin(phi_.value()); } m[celli] = n[celli]-1; if (!(pc[celli] > 0)) { pc[celli] = small; } //..pf is a const. //calculation of nu if (m[celli] > 0) { nu[celli] = sqrt(2.0)*pf[celli]*sin(phi_.value())* ( n[celli]-(n[celli]-1.0)*pow(pf[celli]/(pc[celli]), 1/m[celli]) ) /(sqrt(Us[celli]) + small); } else { nu[celli] = sqrt(2.0)*pf[celli]*sin(phi_.value())* ( n[celli]-(n[celli]-1.0)*pow(pc[celli]/(pf[celli]+small), mag(1/m[celli])) ) /(sqrt(Us[celli]) + small); } } ...... //对面 forAll(patches, patchi) { if (!patches[patchi].coupled()) { const fvPatch& currPatch = patches[patchi]; forAll(currPatch,facei) { if(UdBf[patchi][facei] < 0.0) { nBf[patchi][facei] = 1.03; } else { nBf[patchi][facei] = 0.5*sqrt(3.0)*sin(phi_.value()); } mBf[patchi][facei] = nBf[patchi][facei]-1; if (!(pcBf[patchi][facei] > 0.0)) { pcBf[patchi][facei] = small; } if (mBf[patchi][facei] > 0) { nuBf[patchi][facei] = sqrt(2.0)*pf.boundaryField()[patchi][facei]*sin(phi_.value())* ( nBf[patchi][facei]-(nBf[patchi][facei]-1.0)*pow(pfBf[patchi][facei]/pcBf[patchi][facei], 1/mBf[patchi][facei]) ) /(sqrt(UsBf[patchi][facei]) + small); } else { nuBf[patchi][facei] = sqrt(2.0)*pf.boundaryField()[patchi][facei]*sin(phi_.value())* ( nBf[patchi][facei]-(nBf[patchi][facei]-1.0)*pow(pcBf[patchi][facei]/(pfBf[patchi][facei]+small), mag(1/mBf[patchi][facei])) ) /(sqrt(UsBf[patchi][facei]) + small); } } } } nu.correctBoundaryConditions(); Us.correctBoundaryConditions(); pc.correctBoundaryConditions(); Ud.correctBoundaryConditions();

    结果在相分数0.5左右(摩擦黏度产生处)报错:
    149e14c3-5f93-4325-980c-2e15732c8f04-image.png
    36f75fde-3108-44a1-88ee-ba7eee7d1aa7-image.png

    相分数出现突变,而且无法增大(继续堆积),增大就会报错,不知道是哪个地方的处理有问题,还请东岳老师和其他前辈能解答一二!

  • 1 帖子
    391 浏览

    如题,求帮助,:chouchou: 感谢各位的指导!

  • 请问如何根据stl文件创建边界?(SHM除外)

    3 帖子
    877 浏览

    @blookcfd
    你好,感谢回复。

    我发现我的问题可能是由于snappyHexMesh选定的区域与重叠区域重合导致的,现在已经解决了。

    但是也有没解决的部分,我自己在原来overset网格的基础上加了一点东西,自己编译了另一个lib,这个lib与SHM还是有点冲突,运行的时候会报错,但实际上SHM执行了,网格也能用,所以我下一步好好看看我自己编的lib哪里有问题。

    当用toposet + createPatch时,提示找不到stl文件,但是我的stl文件就在对应文件夹下放着,所以这个问题我还没找到原因。

    我还在找寻替代方法,如果您知道其他方法能把stl放入计算域中,请不吝赐教,谢谢。

  • 1 帖子
    591 浏览

    请教各位大佬

    问题:OpenFOAM中重叠网格,六自由度运动。关于物体属性设置请教

    算例:我算六自由度运动,想定义模型上面1和下面2,两部分密度不同。(就是材料不同)

    目前问题:我试过分开给属性,就变成2个模型了啊,但是我想让模型是一个整体啊。这个咋定义呢?感谢

    23423432.png

  • blueCFD并行计算

    8 帖子
    2k 浏览

    @samuel-tu 用Ubuntu系统,四个物理核心,8个超线程。开四核并行计算的时候,cpu利用率是50%,开8核并行的时候,CPU利用率是96%。但是八核比四核还慢了一点点。。。搞不懂了。。

  • 1 帖子
    473 浏览

    本算例采用的是气液两相流,想要给空气相加一个速度边界条件,而水相不加这个边界条件,下面给出的这个边界条件是空气相的,是依时的边界条件,按照网站上相似的做法编了以下,但是始终出现如下错误。请各位老师同学有时间帮忙解答一下,非常感谢!
    下面是边界条件:

    afInlet { type codedFixedValue; value $internalField; redirectType ramp; name sinewave; code #{ #include <math.h> scalar t = this->db().time().value(); fvPatchField<vector> u ( patch().lookupPatchField<volVectorField,vector>("U.air") ); u[t] = vector(0,0,2*3.1416*10/1000/0.77*1*sin(2*3.1416*1*t)); (*this) == u; #};

    下面是报错的内容:

    --> FOAM FATAL ERROR: request for volVectorField U from objectRegistry region0 failed available objects of type volVectorField are 8 ( HbyA.air U.air U.water U.air_0 KdUByA.air U.water_0 KdUByA.water HbyA.water ) From function const Type& Foam::objectRegistry::lookupObject(const Foam::word&) const [with Type = Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>] in file /home/dyfluid/OpenFOAM/OpenFOAM-8/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 211. FOAM aborting #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::error::abort() at ??:? #2 Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const& Foam::objectRegistry::lookupObject<Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> >(Foam::word const&) const in "/home/dyfluid/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/bin/multiphaseEulerFoam" #3 Foam::totalPressureFvPatchScalarField::updateCoeffs() at ??:? #4 Foam::fvMatrix<double>::fvMatrix(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::dimensionSet const&) in "/home/dyfluid/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/bin/multiphaseEulerFoam" #5 ? in "/home/dyfluid/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/bin/multiphaseEulerFoam" #6 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" #7 ? in "/home/dyfluid/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/bin/multiphaseEulerFoam" Aborted (core dumped)
  • foam-extend的fsiFoam并行效率问题

    7 帖子
    2k 浏览

    @number44foam-extend的fsiFoam并行效率问题 中说:

    foam-extend的icoFsiFoam

    您好,请问下,下面两者有什么区别呢?
    foam-extend中自带的icoFsiFoam

    单独的fsiFoam

  • 8 帖子
    2k 浏览

    @samuel-tu 这个可以有。如果可以的话用结构网格是最方便的了,直接在该区域定义一个block,单独进行网格划分

  • volScalarField的函数计算

    4 帖子
    970 浏览

    @hongjiewang 请问你是在这步Clapeyron方程用局部压力计算饱和温度吗?还有这里的饱和压力pSat是个变量吗?

  • 网格转换writezones

    7 帖子
    2k 浏览

    我有的时候画了一个非常复杂的网格,用各种block切分,然后导入报错。然后就是重新画,每个步骤导入一次看看有没有错误。然后搞得特别细。就没错误了。目前也不知道哪里有问题。

  • 关于重叠网格的几个小问题

    4 帖子
    2k 浏览

    @cfdngu 楼主您好,我现在也有你之前的问题,算了一个和你类似的例子,波浪作用在矩形防波堤下三个自由度的响应,在沿波浪传播方向的那个自由度,无论是加密重叠区域网格,还是改进时间步和库郎数的关系,都没有好转,有了解贴体网格,但还没有采用做验证。以及您说的测点如何设置能在重叠网格上随物体一起运动。期待您的回答,祝您一切都好。

  • 1 帖子
    422 浏览

    请教各位使用过,浸入边界法IBM,解决流固耦合fsi问题的大佬。

    最近在用foam-extend中的浸入边界法,算圆柱绕流(刚性问题) 如果我想考虑圆柱的流固耦合fsi,请问设置上的区别在哪呢?
    即:浸入边界法,做流固耦合问题,和刚性问题,设置上区别在哪呢?
    万分感谢!

    7ffe581e-acb0-42ea-abb7-64507e4652c1-image.png

  • 3 帖子
    909 浏览

    @oitocfd
    您好,请问foam-extend,浸入边界法,做流固耦合问题,和刚性问题,
    设置上区别在哪呢?

  • OF中是怎么处理非线性的?

    7 帖子
    2k 浏览

    @micro 自挖自填。
    大家可以参考东岳老师关于icoFoam解析的文章,说的很正确的,一个时间步骤动量方程的系数是不变的,因为动量方程每个时间步中仅被组建了一次。但是每个时间步中,U可是被更新了好几次(在压力泊松循环中),两者并不矛盾!另外,我们同样可知,一个时间步中,我们反复求解压力泊松方程(一般是3次),压力泊松方程的系数同样是不变的,变化的是右端项(因为右端项是用速度组建的)。

  • 请教后处理中,关于探针的使用方法

    2 帖子
    696 浏览

    在设置探针的时候,有个fixedLocation的条目可以设置为false,这样的话对于动网格探针应该是会随着网格拓扑更新移动的。

  • 关于potentialFoam的问题

    6 帖子
    1k 浏览

    @xpqiu 谢谢您的回复!关于2,我设置的phi的tolerance是10^-6,solver是GAMG。把nNonOrthogonalCorrectors设为10之后,最后几次计算的No. Iteration 就随计算次数减小了,最后为0,我想应该是残差已经降到最低。谢谢!

  • interFoam相方程里人工对流项在哪里?

    5 帖子
    1k 浏览

    @cresendo 那就是纯对流方程了

  • 7 帖子
    2k 浏览

    @xpqiu 收到,还是非常感谢!!解释的已经很清晰了!

  • OpenFOAM中开发浮体系泊(锚链)模块

    2 帖子
    861 浏览

    @五好青年 tutorials里面的wingMotion

  • 2 帖子
    767 浏览

    目前也不确定是openMPI的问题还是OpenFOAM太挑剔,所以各位使用集群计算的老师同学们,能不能看看你们集群的hostname是不是有下划线的,能让我定位一下问题的位置。:xiezuoye:

  • snappyHexMesh 画网格时可以并行吗?

    8 帖子
    3k 浏览

    @李东岳 了解了,谢谢东岳老师

  • OpenFOAM中CIP方法,紧致差分插值曲线方法

    1 帖子
    367 浏览

    关于OpenFOAM中CIP方法(Constrained Interpolation Profile)紧致差分插值曲线方法

    请问OpenFOAM的哪个版本中,有CIP方法的代码,想学习下。

    目前参考了一些文献(胡长洪、刘成、赵西增等老师),但是不知道怎么植入。请问谁做过这方面的植入(或者有现成的开源代码)么

    感谢同在研究CIP的朋友回复,感谢!

  • 求分享带有foam-extend3.2以下的虚拟机

    4 帖子
    796 浏览
  • 关于icoFoam的几个问题

    4 帖子
    975 浏览

    @wying 要非常高的精度,比如普方法、有限差分那种7 8 9阶,有限体积法大体都不行

  • 1 帖子
    428 浏览

    如题,根据probes的字母意思解释,是Set of locations to sample(设置位置集),我看了下probes.H和probes.C的源程序,没有看懂,probes.C的部分代码如下:

    const label celli = mesh.findCell(location); elementList_[probei] = celli; if (celli != -1) { const labelList& cellFaces = mesh.cells()[celli]; const vector& cellCentre = mesh.cellCentres()[celli]; scalar minDistance = great; label minFaceID = -1; forAll(cellFaces, i) { label facei = cellFaces[i]; vector dist = mesh.faceCentres()[facei] - cellCentre;//是指面心和体心的插值么? if (mag(dist) < minDistance) { minDistance = mag(dist); minFaceID = facei; } } faceList_[probei] = minFaceID; }
  • libCoxVoinovAngle.so

    3 帖子
    815 浏览

    @李东岳 是这样啊,我还以为是软件系统文件缺少呢,感谢感谢

  • yyFlex error

    1 帖子
    594 浏览

    在OpenFOAM文件家下打开终端输入

    find src applications -name "*.L" -type f | xargs sed -i -e 's=\(YY\_FLEX\_SUBMINOR\_VERSION\)=YY_FLEX_MINOR_VERSION < 6 \&\& \1='
  • 关于overset网格的问题

    6 帖子
    2k 浏览

    @cfdngu 好的,非常感谢您快速的解答,我再尝试尝试。

  • OpenFOAM文章引用

    4 帖子
    1k 浏览

    @samuel-tu 主要这文章看看也很有帮助,它的角度偏代码整体架构而不是力学,对理解openfoam的设计还挺好的。

  • 风机滑移网格

    6 帖子
    1k 浏览

    @小狗狗 谢谢您,我学习一下

  • 3 帖子
    889 浏览

    @Yongbo :high: 谢谢

  • of1912中paraview5.6.3无法打开Python shell

    3 帖子
    836 浏览

    @bestucan 后来我也是这么解决的。。相当于直接安了新的Paraview

  • 关于directionMixed边界条件

    3 帖子
    1k 浏览

    可以参考邱小平大佬的博客
    链接文本

  • 3 帖子
    1k 浏览

    @starDust boundaryFieldRef()是非const的可以赋值

  • rhoEnergyFoam下载

    3 帖子
    847 浏览

    @bestucan 找原作者拿到了 ` 谢谢回复

  • 5 帖子
    1k 浏览

    @五好青年 emmm……这就不知道了,我没研究过。这只是一个线索。现成的应该是没有的。但是照着pdf里的线索查比从头做要快多了。

  • 5 帖子
    1k 浏览

    @Micro 关注过,但是没研究过。好像是8刚支持外挂矩阵求解器。还没机会学习:shangxue:

  • 6 帖子
    1k 浏览

    @shiyu 一个有点冗余的办法,定义一个vector场,每个网格都等于你那个gradP。这样就可以在别处lookup到了。

  • 某高阶格式偶尔收敛,偶尔发散

    4 帖子
    2k 浏览

    @李东岳 李老师,请问发散后继续计算又不发散了,比如如下报错:
    a0c00201-ea8c-4d8d-bdad-e4e033c1ad9e-image.png
    或者报错与solver有关(gauss-seidel),这证明植入的模型还是不容易收敛是吧?

  • 2 帖子
    805 浏览

    pisoFoam不可以考虑重力

    interFoam可以考虑中立,你这么操作就是对的,没有别的操作了。

  • openfoam求解.msh网格问题

    2 帖子
    762 浏览

    检查下网格边界条件吧。感觉有点问题。。

  • 4 帖子
    908 浏览

    最后就想请教下,各位大佬

    在进行OpenFOAM并行计算时,不管是虚拟机(还是真Ubuntu系统),CPU的核心可以100%满载吗?

    比如电脑16核,设置16核。有人尝试过么?实际会乱跳么?

    我这并行计算,实际只占用5%,这也太坑了叭!:136:

  • 21 帖子
    4k 浏览

    @Samuel-Tu: 好, 但仍谢谢Tu兄的回复,Tu兄,辛苦了

  • DecomposePar 的问题

    5 帖子
    1k 浏览

    @浪迹天大 谢谢,我研究一下,这个file 我就是读了一下文件名字,然后放到IOobject里,原来在of4就完全没问题

    positionsFile_(this->coeffDict().lookup("positionsFile")), positions_ ( IOobject ( positionsFile_, owner.db().time().constant(), owner.mesh(), IOobject::MUST_READ, IOobject::NO_WRITE ) ), PDFFileName_(this->coeffDict().lookup("PDFFile")), PDFsamples_ ( IOobject ( PDFFileName_, owner.db().time().constant(), owner.db(), IOobject::MUST_READ, IOobject::NO_WRITE ) ),
  • 提取log文件中的一些信息

    5 帖子
    1k 浏览

    各位简直就是大佬中的大佬 厉害厉害 :chitang:

  • Thomas slurry粘度模型

    2 帖子
    736 浏览

    东岳老师,我最近在做一个类似的模型,颗粒粘度与其体积分数有关的,用的of8的multiphaseEulerFoam,现在完全没有思路,不知道要将其放在哪里:136: 望您指点一二