OpenFOAM

4.5k Topics 26.2k Posts
  • 16 Posts
    8k Views

    @东岳 嗯嗯,这也是个办法。两种方法速度都比较难调节。

  • 2 Posts
    1k Views

    已解决,辐射换热的文件里没有将limestone去掉,谢谢大家

  • 3 Posts
    2k Views

    phi一般是流场解出来之后,用速度在网格面心插值得到的surfaceScalarField。也就是说,phi是求解出来的量,不能随意改动吧?如果要改温度方程对流项,应该再叠加一个phir,类比interFoam求解器相分数方程的interface compression term。

  • 关于MULES的疑问

    5 Posts
    3k Views

    @yhdthu

    感谢,没想到知乎上也有大神研究这个!

  • 16 Posts
    5k Views

    @东岳 那个我添加成了,可能是我考虑多了,加和不加区别不大

  • 求一篇openfoam的文章

    1 Posts
    974 Views

    H. Weller, A New Approach to VOF-based Interface Capturing Methods for Incompressible and Compressible Flow, OpenCFD Ltd., Report TR/HGW/04, (2008).

  • 关于OpenFOAM中DPM求解器的问题

    7 Posts
    3k Views

    @东岳 是想获得颗粒轨迹

  • twoPhaseEulerFoam算水流

    6 Posts
    3k Views

    @dzw05 好的 谢谢 我再试试 看看是不是我设置的问题

  • 4 Posts
    2k Views

    paraFoam需要编译一下,个人不是很喜欢paraFoam,启动慢,显示网格也慢。不过有空我更新一下编译方式

  • thermal stress in openfoam

    2 Posts
    1k Views

    你好!可以参考foam-extend版本,相对而言,extend版本的固体力学求解器选择更多。我看了下,extend版本的考虑温度影响的弹性求解器是用的温度差更新应力的。

  • 对流项格式问题

    4 Posts
    2k Views

    bounded不建议用于瞬态计算哦

  • 1 Posts
    828 Views

    本人目前在用rhoPorousSimpleFoam求解器进行多孔介质模型的计算,对angleDuctImplicit算例进行修改。计算条件:固相提供恒定热流密度边界条件。目的:获得固相与液相的温度场。
    现在遇到两个问题:
    1 无法设置恒定的热流密度边界条件。算例中给的是恒定温度,如果要设置成热流密度需要定义换热区域(固相&液相)。
    2 rhoPorousSimpleFoam求解器中的thermophysicalProperties只能设置流体的参数,无法设置固体参数。

    请问各位大神这个问题有什么好建议么

  • 2 Posts
    2k Views

    请问老师,VanLeer格式在处理相方程的对流项时,可以保证质量守恒和有界吗?那MULES的作用是什么呢,对于使用对流项使用WENO格式,您有什么看法?求指教

  • 3 Posts
    2k Views

    @东岳 东岳老师,问题已解决。非定常计算一开始要求时间步长要比较小,先得到一个较稳定的流场,在别的求解器里可能会先用稳态求解器算一个初场。而我上面的算例一开始时间步长较大,到后面越来越不稳定最终发散。开始用变时间步长让对应的库郎数从1以下慢慢增加即可。

  • 4 Posts
    2k Views

    Reference temperature

    参考温度,因为这个求解器调用了B假定:http://dyfluid.com/docs/energy.html

    Pr和Prt该怎么取?

    http://www.cfdbaike.com/doku.php#prandtl_number

    alphat是什么意思

    同上

    为什么这个算例里面0文件夹下p的壁面不取zeroGradient?

    因为p是从p_rgh计算出来的

  • 4 Posts
    2k Views

    我看了下,确实不是连续的。在ManualInjection.C文件中:

    template<class CloudType> Foam::scalar Foam::ManualInjection<CloudType>::timeEnd() const { // Injection is instantaneous - but allow for a finite interval to // avoid numerical issues when interval is zero return ROOTVSMALL; }

    我看了一下,可以用cellZoneInject:

    Description Injection positions specified by a particle number density within a cell set. User specifies: - Number density of particles in cell set (effective) - Total mass to inject - Initial parcel velocity Properties: - Parcel diameters obtained by PDF model - All parcels introduced at SOI

    你试试这个?

    PS. 你需要用topoSet做一个cellSet出来toturial里面有

  • 4 Posts
    2k Views

    @zhangxc0223 可以用cyclic边界

  • 3 Posts
    2k Views

    @东岳 成功了,谢谢东岳老师了

  • tangential surface tension

    8 Posts
    3k Views

    @东岳
    在interfaceProperties.C中编程如下
    fvc::interpolate(fvc::grad(sigma) - fvc::grad(alpha)*(fvc::grad(alpha)&fvc::grad (sigma))*mag(fvc::grad (sigma))) & mesh.Sf()
    将此项添加到速度和压力方程。其中当计算压力项时发散了。

  • LES模拟

    11 Posts
    5k Views

    @东岳 好的,明白了。谢谢李老师!

  • 白算一星期哟

    1 Posts
    852 Views
    //- Breakage kernel SBre_[kth].ref() += breakagePtr_->g()[i]()*weis_[i] *( DSDPtr_->beta(abs_[i], kth)() - pow(abs_[i], kth) ); //- DSD TO DO implemented //- Coalescence kernel if (coalescence_) { for (int j

    上周五自己做的评论,DSD函数还没植入,周一来的时候完全忘了。吭哧吭哧算了好几天,感觉没有破碎的效果呢?

    检查代码发现函数还没植入,返回的0..

  • 4 Posts
    2k Views

    对于不可压缩流动,密度/压力的大小是无关紧要的。重要的是压力差。因此你不需要保证求解的密度是你要的密度。

    \begin{equation}
    \frac{\partial \rho \mathbf{U} }{\partial t}+\nabla \cdot \left(\rho \mathbf{U} \mathbf{U} \right)-\nabla \cdot \left(\mu \nabla \mathbf{U} \right)=-\nabla p
    \label{NS2}
    \end{equation}

    比如这个方程,如果密度不变,你直接除掉密度就可以。因此在不可压缩求解器中你不需要设置密度的大小

  • 2 Posts
    1k Views

    我目前不清楚怎么用paraview处理这个
    但我感觉paraview应该可以弄,可能你得外挂paraview的代码脚本,我不太熟悉这个

  • of-v1706中的IsoAdvector

    25 Posts
    13k Views

    我也忘了..

  • 7 Posts
    3k Views

    这个site是什么意思

    目前我也不清楚 知道了可以告诉我一下 :mihu:

  • 11 Posts
    8k Views

    @youmengtian 能请教一下你是怎么测试tut中的算例的吗?我计算算例的时候先用scalarTransportFoam计算出一个时间段的结果,再使用PODSolver就报错了。请问你是怎么计算的呀

  • MRF是怎么回事

    3 Posts
    2k Views

    @东岳 谢谢东岳老师

  • BuoyantPimpleFoam 求解问题

    6 Posts
    2k Views

    @东岳 谢谢东岳老师!

  • 7 Posts
    4k Views

    分离区大小的问题一般是和粘性有关。看一下用的是什么湍流壁面函数,个人经验,湍流壁面函数对分离区的预测通常是不准确的。我计算的时候一般y+小于1,不采用壁面函数(当然在openfoam里是所谓的低雷诺数模型)。

  • 2 Posts
    1k Views

    不太清楚这个,只能建议看看源文件了..

  • p_rgh = p - rho*gh的目的是什么?

    3 Posts
    2k Views

    @cfdngu 这是哪篇文献,想拜读一下:chitang:

  • 热物性的状态方程在哪编译的?

    4 Posts
    2k Views

    @zwl 这些都是类模板,你需要找到对这些类模板进行特化的源文件。

    参考:
    thermophysicalModels/basic/psiThermo/psiThermos.C
    thermophysicalModels/basic/rhoThermo/rhoThermos.C

  • 1 Posts
    1k Views

    打开“设置”——“更新和安全”——“针对开发人员”——选“开发人员模式”—退出

    找到 "设置 "-"应用和功能" -下翻打开 "相关设置"下的"程序和功能"--在左边点击 "启用或关闭windows功能" --找到 "适用于linux的windows子系统" -勾选后点确定——退出

    打开应用商店搜索 ubuntu , 会显示几个ubuntu系统,选择一个系统的(我选的是ubuntu 18那个),下载之后打开,等几秒钟,设置自己的用户名和密码。然后关闭。

    然后去www.openfoam.com (如果用的是百度,打开前几个网页应该都是可以的,注意区分版本,有v1612,v172,v182),打开之后选择顶头The open source CFD toolbox下的Download,
    选择win10 native,找到大标题下Install OpenFOAM 下的OpenFOAM-v1806-windows10.tgz,点击下载,点进去大概等几秒钟就会自动下载(需要点确定下载就点确定)。在c盘的用户(Users)文件里新建一个Dwonload文件夹,找到你下载的文件,把他拷到
    新建的Download的文件夹。

    点桌面左下角的开始键,找到ubuntu,直接打开你的ubuntu子系统.
    输入命令

    cd/mnt/ ls cd c/ //(打开c盘) ls //(会显示你的c盘里的文件夹) cd Users/ //(打开用户文件夹) ls cd Download //(打开之前建的Download文件夹) cp OpenFOAM-v1806-windows10.tgz /home/(ubuntu的用户名)/ //(注意v1806是版本) ls cd ls ls tar xvf OpenFOAM-v1806-windows.tgz ls ls OpenFOAM ls OpenFOAM/OpenFOAM-v1806/etc/bashrc bashrc .nano

    按方向键切到最后,再空两行,输入 source OpenFOAM/OpenFOAM-v1806/etc/bashrc
    按ctrl o(不是0),然后enter键保存,然后ctrl X退出。
    然后关闭终端
    打开一个新的终端,输入

    cd OpenFOAM/OpenFOAM-v1806/tutorials 选择你想运行的算例测试一下,安装完毕。

    参考视频链接https://v.qq.com/x/page/b0564p64f68.html

  • 6 Posts
    3k Views

    应该有一个WSGG的开源模型,你可以找一下,你可以以此为参考,改成你自己的模型

  • 《OpenFOAM用户指南-5.0》勘误

    3 Posts
    2k Views
    thermodynamics { Hf 0; Sf 0; CpCoeffs<8> ( 1000 -0.05 0.003 0 0 0 0 0 ); } \endverbatim The polynomial expression is evaluated as so: \f[ Cp = 1000 - 0.05 T + 0.003 T^2 \f]

    所以应该是1

    感谢!已更新 @D-Benjamin :huahua: http://www.cfd-china.com/topic/1441/openfoam用户指南-勘误/2

  • 5 Posts
    2k Views

    谢谢两位老师的关注,我会再多孔介质的资料先学学看,谢谢

  • totalpressure源码

    3 Posts
    2k Views

    @东岳 谢谢

  • twoPhaseEulerFoam下流化床算例

    2 Posts
    1k Views

    inletOutlet边界条件针对流入和流出的情况需要作区分,比如流出的时候是零法向梯度,流入的时候需要指定某个值。判断流入和流出的信息是通过phi来识别的。OpenFOAM中边界处的phi在大于0的时候,全部流出。因此对于这一类条件,需要指定phi,你的案例中,指定的是phi.air

  • 10 Posts
    4k Views

    @东岳 i其实是第一个网格,n是最后一个网格
    也就是
    先求每一个网格中的alpha * x 再对整个计算域求和
    然后求和所有计算域中alpha的值
    两者做比值

  • 2 Posts
    1k Views

    不好意思 数据在这里
    0_1542843045909_48db69f6-3dde-40bc-9b8d-70c1b51caa28-image.png Dd [um] Number
    0.00000220 17200.00000
    0.00000439 71000.00000
    0.00000659 97900.00000
    0.00000878 84400.00000
    0.00001100 53900.00000
    0.00001320 35000.00000
    0.00001540 23900.00000
    0.00001760 15300.00000
    0.00001980 12200.00000
    0.00002200 9060.00000
    0.00002410 6550.00000
    0.00002630 5540.00000
    0.00002850 4090.00000
    0.00003070 3440.00000
    0.00003290 2530.00000
    0.00003510 2210.00000
    0.00003730 1960.00000
    0.00003950 1490.00000
    0.00004170 1240.00000
    0.00004390 938.00000
    0.00004610 860.00000
    0.00004830 743.00000
    0.00005050 652.00000
    0.00005270 550.00000
    0.00005490 427.00000
    0.00005710 339.00000
    0.00005930 282.00000
    0.00006150 268.00000
    0.00006370 194.00000
    0.00006590 208.00000
    0.00006810 171.00000
    0.00007030 131.00000
    0.00007240 106.00000
    0.00007460 125.00000
    0.00007680 76.00000
    0.00007900 66.10000
    0.00008120 52.80000
    0.00008340 63.80000
    0.00008560 23.50000
    0.00008780 42.40000
    0.00009000 34.10000
    0.00009220 33.50000
    0.00009440 18.30000
    0.00009660 21.60000
    0.00009880 17.70000
    0.00010100 14.00000
    0.00010300 10.40000
    0.00010500 10.30000
    0.00010800 10.20000
    0.00011000 6.71000
    0.00011200 0.00000
    0.00011400 3.29000
    0.00011600 6.51000
    0.00011900 0.00000
    0.00012100 0.00000
    0.00012300 0.00000
    0.00012500 0.00000
    0.00012700 0.00000
    0.00013000 0.00000
    0.00013200 0.00000
    0.00013400 0.00000
    0.00013600 2.98000
    0.00013800 2.96000
    0.00014100 0.00000
    0.00014300 0.00000
    0.00014500 0.00000
    0.00014700 0.00000
    0.00014900 0.00000
    0.00015100 0.00000
    0.00015400 0.00000
    0.00015600 0.00000
    0.00015800 0.00000
    0.00016000 0.00000
    0.00016200 0.00000
    0.00016500 0.00000
    0.00016700 0.00000
    0.00016900 0.00000
    0.00017100 0.00000
    0.00017300 0.00000
    0.00017600 0.00000
    0.00017800 0.00000
    0.00018000 0.00000
    0.00018200 0.00000
    0.00018400 0.00000
    0.00018700 0.00000
    0.00018900 0.00000
    0.00019100 0.00000
    0.00019300 0.00000
    0.00019500 0.00000
    0.00019800 0.00000
    0.00020000 0.00000
    0.00020200 0.00000
    0.00020400 0.00000
    0.00020600 0.00000
    0.00020900 0.00000
    0.00021100 0.00000
    0.00021300 0.00000
    0.00021500 0.00000
    0.00021700 0.00000
    0.00022000 0.00000
    0.00022200 0.00000
    0.00022400 0.00000
    0.00022600 0.00000
    0.00022800 0.00000
    0.00023100 0.00000
    0.00023300 0.00000
    0.00023500 0.00000
    0.00023700 0.00000
    0.00023900 0.00000
    0.00024100 0.00000
    0.00024400 0.00000
    0.00024600 0.00000
    0.00024800 0.00000
    0.00025000 0.00000
    0.00025200 0.00000
    0.00025500 0.00000
    0.00025700 0.00000
    0.00025900 0.00000
    0.00026100 0.00000
    0.00026300 0.00000
    0.00026600 0.00000
    0.00026800 0.00000
    0.00027000 0.00000
    0.00027200 0.00000
    0.00027400 0.00000
    0.00027700 0.00000
    0.00027900 0.00000
    0.00028100 0.00000
    0.00028300 1.84000
    0.00028500 0.00000
    0.00028800 0.00000
    0.00029000 0.00000
    0.00029200 0.00000
    0.00029400 0.00000
    0.00029600 0.00000
    0.00029900 0.00000
    0.00030100 0.00000
    0.00030300 0.00000
    0.00030500 0.00000
    0.00030700 0.00000
    0.00031000 0.00000
    0.00031200 0.00000
    0.00031400 0.00000
    0.00031600 0.00000
    0.00031800 0.00000
    0.00032100 0.00000
    0.00032300 0.00000
    0.00032500 0.00000
    0.00032700 0.00000
    0.00032900 0.00000
    0.00033200 0.00000
    0.00033400 0.00000
    0.00033600 0.00000
    0.00033800 0.00000
    0.00034000 0.00000
    0.00034200 0.00000

  • 6 Posts
    4k Views

    从代码上解释更好说:

    scalarField U(-phi/patch().magSf()); //其中的phi你要给定(指定通量),然后即可计算出速度U的大小(模) vectorField n(patch().nf()); //面的法向 if (phiName.dimensions() == dimVelocity*dimArea) { // volumetric flow-rate operator==(n*U); //速度 } else if (phiName.dimensions() == dimDensity*dimVelocity*dimArea) { const fvPatchField<scalar>& rhop = patch().lookupPatchField<volScalarField, scalar>(rhoName_); // mass flow-rate operator==(n*U/rhop); //速度

    你看下/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel的速度边界条件设置。

  • 2 Posts
    1k Views

    还没见过教材里面讨论low-Mach-number assumption,气动声学这块我还没研究过 :zoule:

  • 1 Posts
    744 Views
    Source[kth].ref() += (1 - kth)/(kth + 1)* pow(a[n], kth + 2)*g*w[n];

    上面要改为

    Source[kth].ref() += (1.0 - kth)/(kth + 1.0)* pow(a[n], kth + 2)*g*w[n];

    否则 (1 - kth)/(kth + 1)在kth大于1的时候为0

  • 3 Posts
    2k Views

    东岳大哥您好,算几十万的网格是没有问题的,我扩展了虚拟机的内存到64g和虚拟内存到10g都不行。 。。也是奇怪

  • Taylor Couette Flow

    1 Posts
    895 Views

    请问在OpenFOAM中,如何定义一个轴对称模型来仿真Taylor Couette flow?如何设定wedge边界?谢谢大神!

  • 标量场壁面梯度的处理方式

    8 Posts
    3k Views

    @mr-h标量场壁面梯度的处理方式 中说:

    在温度方程里的拉普拉斯项fvm::laplacian(ka,T) 中 存在ka的梯度的计算。

    此处Ka为volScalarField,那么fvm::laplacian(ka,T)是不是等价于(fvm::grad(ka)&fvm::grad(T)) + ka*fvm::laplacian(T);这两种表达方式的意义一样吗?

  • 3 Posts
    2k Views

    楼主问题解决了么?我也遇到类似问题,求解决办法。谢谢!

  • 3 Posts
    1k Views

    @东岳 是类似与MultiRegionFoam的方法吗?存在多套网格分别对应不同的region?这种方法我没试过。我用的求解器是interfoam,现在只是想的是从一套网格上生成一个subMesh,这样绝大部分的网格节点是对应的,求解标量C方程所需要的数据可以通过原始的网格map过来。

  • 1 Posts
    774 Views

    图片
    我最近在使用reactingParcelFilmFoam计算水滴与结构表面撞击并形成水膜的过程中,我想往模型中添加一个水滴的收集系数,这个系数需要知道水滴在撞击到结构时的位置坐标和初始的位置坐标,请问有人知道该怎么确定这两个坐标吗?

  • 2 Posts
    1k Views

    从代码来看,e表示回弹系数,mu表示一种损耗。e越大,回弹越完全,mu越大,速度被消耗的越大。这些值影响你颗粒撞击壁面的回弹行为。
    你可以手动计算一下,看看U有什么变化

    case PatchInteractionModel<CloudType>::itRebound: { keepParticle = true; active = true; vector nw; vector Up; this->owner().patchData(p, pp, nw, Up); // Calculate motion relative to patch velocity U -= Up; scalar Un = U & nw; vector Ut = U - Un*nw; if (Un > 0) { U -= (1.0 + e_)*Un*nw; } U -= mu_*Ut; // Return velocity to global space U += Up; break; }