Skip to content

OpenFOAM

OpenFOAM交流区

5.3k 主题 31.6k 帖子
  • 3 帖子
    3k 浏览
    hurricane007H

    @刘雄国 哈哈哈好没事,反正看得懂的。嗯应该是进程。
    MPI或者OpenMP并不影响这个问题,反正都是两边交流信息,所以其实影响这个问题的是第二个。如果离散相分数很低,考虑单向耦合,或者二向耦合(连续相->离散相,离散相->离散相),那么可以把离散相和连续相分开,因为只需要把所有的连续相的流动汇总,并加给离散相就好了。
    如果是四向耦合,是不是大概这样:

    如果在每个时间步骤,用一个进程把所有的流场信息都集中起来供其他颗粒跟踪的进程去访问,并且还需要把所有的离散相信息汇总给连续相,那么通信量太大了。 即使把每个进程跟踪的颗粒都加上label,只定点访问某些进程的信息,似乎通信量也还挺大问题。 如果把流场的作为主进程,跟踪颗粒的作为slave进程,如果这个master/slave比是定的,那么也是之前的那个效率问题。
  • 自定义求解器运行时报错

    2
    2 帖子
    2k 浏览
    bestucanB

    信息太少,没法判断。可能性太多。像这个cfd online提供了这么多信息,依然是自己排查出来的。

    信息少就没法定位错误。可是都贴也太多。所以“知道提供什么信息”本身就是一件比较有挑战性的事情。然后现在好多问题是,了解的足够了就不会问了,了解的不足够又不知道怎么问,加油:huahua:

  • DPMFoam中如何设定初始流场中的颗粒浓度?

    5
    5 帖子
    5k 浏览

    前辈,麻烦问一下,您的问题解决了吗?我刚接触这块知识,也是不会设置颗粒初始位置。(已知初始浓度)不知您有什么好的解决办法?

  • 用pimpleFOAM做圆柱的涡激振动遇到收敛性问题

    12
    12 帖子
    10k 浏览

    @Fu 是的,大兄弟。我其他文件中改参数了,但forceCoeffs中忘改了,都改后已经可以算了。谢谢哈!

  • 5 帖子
    5k 浏览
    C

    感谢分享!

  • foamDataToFluent问题

    1
    1 帖子
    1k 浏览
    S

    请问foamDataToFluent如何用来转换组分量 比如CO2 H2O等转换 U P等都没问题 但是species fluent一直读不出来
    https://github.com/OpenFOAM/OpenFOAM-2.4.x/blob/master/applications/utilities/postProcessing/dataConversion/foamDataToFluent/fluentUnitNumbers.txt

  • CFD中的大涡模拟

    1
    1 帖子
    3k 浏览
    李东岳

    测试排版用

    引言

    湍流运动是目前计算流体力学中困难最多因此也最活跃的领域之一。当湍流存在,则住在其他相关的流动现象,并引致能量耗散、混合以及传热。没有三维的涡,则没有真正的湍流,因为只有在三维的流动中,涡旋才能进行伸展并产生新的涡旋。目前可采用的数值计算方法分为三类:直接模拟(Direct Numerical Simulation,DNS)、大涡模拟(Large Eddy Simulation,LES)和雷诺时均法(Reynolds-averaged Navier–Stokes,RANS)。RANS经过长期的发展,已经非常成熟。但RANS通过将速度进行平均后,并不能捕获湍流中的小涡结构。同时,这些小涡基本是各项同性的。另一方面,从主流中抽取能量的大涡却是各向异性,并且其和计算域的几何、边界、体积力高度关联。在使用RANS的时候,整个流场中必须使用同一个湍流模型对各种尺度下的湍流进行解析,但通常大涡和小涡的表现是不同的。因此研究学者对一种更完善的模型进行了探索。

    不同于RANS,LES对大涡进行解析的同时对小涡进行模化。LES认为大涡直接受边界条件的影响因此对其解析,但小涡是各项同性的因此他们表现相同,可以进行模化。由于LES把小涡进行了模化,因此最小的网格单元需要大于Kolmogorov尺度(最小的涡旋尺度)。同时LES的时间步可以比DNS大的多。因此,对于给定的计算资源,相对于DNS,LES可以计算更大雷诺数的算例。另外,不同于RANS中平均的概念,LES使用的是一种空间滤波技术。LES模型的概念如下:

    首先要确定一种滤波函数和截止尺度$\Delta$。这样,就可以对所有大于截止尺度的涡进行非稳态计算;

    使用滤波函数对依时变量进行空间滤波操作,在这一步,小于截止尺度的涡被过滤掉;

    在解析大涡和模化小涡的数学操作中,会产生一个亚格子尺度应力项(Sub-grid-scale Stress,SGS),亚格子尺度应力需要通过SGS模型来模化;

    在LES中,截止尺度是用来表明“多大的涡才算大涡”的概念。其可以为任意大小,但是选择比网格还要小的截止尺度是没有意义的。在笛卡尔网格下,最简单的截止尺度这样计算:
    \begin{equation}
    \Delta=\sqrt[3]{\delta x \delta y \delta z}
    \end{equation}
    其中$\delta x$等为笛卡尔网格下网格单元的边长。其他不同的截止尺度计算方法还有最大边长法、普朗特混合长法等。

    方程与模型 滤波N-S方程

    笛卡尔坐标下的连续性方程为:
    \begin{equation}
    \frac{\partial \rho}{\partial t}+\nabla \cdot(\rho \mathbf{U})=0
    \end{equation}
    对$\nabla \cdot(\rho \mathbf{U})$进行滤波后有滤波连续性方程:
    \begin{equation}
    \frac{\partial \rho}{\partial t}+\nabla \cdot(\rho \mathbf{\bar{U}})=0
    \end{equation}
    其中$\mathbf{\bar{U}}$为滤波后的速度。且有:
    \begin{equation}
    \mathbf{U}=\mathbf{\bar{U}}+\mathbf{U'}
    \end{equation}
    其中$\mathbf{U'}$为残余速度,且$\mathbf{U'} \neq 0$。下图表示的是一个对$x$分量速度进行高斯滤波之后的滤波速度分量和残余速度分量的示意图。
    U.jpg
    另外,有不可压缩动量方程为:
    \begin{equation}
    \frac{\partial \mathbf{U}}{\partial t}+\nabla \cdot (\mathbf{U} \mathbf{U})=-\nabla \frac{p}{\rho}+\nabla \cdot(\nu \nabla \mathbf{U})
    \label{mom}
    \end{equation}
    同理有:
    \begin{equation}
    \frac{\partial \mathbf{\bar{U}}}{\partial t}+\nabla \cdot (\overline{\mathbf{U} \mathbf{U}})=-\nabla \frac{\bar{p}}{\rho}+\nabla \cdot(\nu \nabla \mathbf{\bar{U}})
    \label{momF}
    \end{equation}
    在方程\eqref{momF}中,除了待求的$\bar{\mathbf{U}}$和$\bar{p}$外增加了一个未知量$\overline{\mathbf{U} \mathbf{U}}$。为了将问题简化,把方程\eqref{momF}的第二项进行变化:
    \begin{equation}
    \nabla \cdot (\overline{\mathbf{U} \mathbf{U}})=\nabla \cdot (\mathbf{\bar{U}} \mathbf{\bar{U}})+\left(\nabla \cdot (\overline{\mathbf{U} \mathbf{U}})-\nabla \cdot (\mathbf{\bar{U}} \mathbf{\bar{U}})
    \right)
    \label{W}
    \end{equation}
    将方程\eqref{W}带入到方程\eqref{momF}中有:
    \begin{equation}
    \frac{\partial \mathbf{\bar{U}}}{\partial t}+\nabla \cdot (\mathbf{\bar{U}} \mathbf{\bar{U}})=-\nabla \frac{\bar{p}}{\rho}+\nabla \cdot(\nu \nabla \mathbf{\bar{U}})
    -\left(\nabla \cdot (\overline{\mathbf{U} \mathbf{U}})-\nabla \cdot (\mathbf{\bar{U}} \mathbf{\bar{U}})
    \right)
    \label{momFF}
    \end{equation}
    对比最初的的N-S方程\eqref{mom},方程\eqref{momFF}中的最后一项$-\left(\nabla \cdot (\overline{\mathbf{U} \mathbf{U}})-\nabla \cdot (\mathbf{\bar{U}} \mathbf{\bar{U}})
    \right)$为滤波操作产生的特殊项。对其展开有:
    \begin{equation}
    \nabla \cdot (\mathbf{\bar{U}} \mathbf{\bar{U}})=\nabla \cdot \left[\begin{matrix}
    \bar{u}_1\
    \bar{u}_2\
    \bar{u}_3
    \end{matrix}\right][\bar{u}_1, \bar{u}_2, \bar{u}_3]=\nabla \cdot \left[
    \begin{matrix}
    \bar{u}_1 \bar{u}_1 & \bar{u}_1 \bar{u}_2 & \bar{u}_1 \bar{u}_3\
    \bar{u}_2 \bar{u}_1 & \bar{u}_2 \bar{u}_2 & \bar{u}_2 \bar{u}_3\
    \bar{u}_3 \bar{u}_1 & \bar{u}_3 \bar{u}_2 & \bar{u}_3 \bar{u}_3
    \end{matrix}
    \right]
    \label{T1}
    \end{equation}

    \begin{equation}
    \nabla \cdot (\overline{\mathbf{U} \mathbf{U}})=\nabla \cdot \overline{\left[\begin{matrix}
    u_1\
    u_2\
    u_3
    \end{matrix}\right][u_1, u_2, u_3]}=\nabla \cdot \left[
    \begin{matrix}
    \overline{u_1 u_1} & \overline{u_1 u_2} & \overline{u_1 u_3}\
    \overline{u_2 u_1} & \overline{u_2 u_2} & \overline{u_2 u_3}\
    \overline{u_3 u_1} & \overline{u_3 u_2} & \overline{u_3 u_3}
    \end{matrix}
    \right]
    \label{T2}
    \end{equation}

  • OpenFoam分区域计算

    4
    4 帖子
    4k 浏览
    孟豪龙

    @CarmeloSun 还没有

  • fsiFoam: flux requested but p not specified in fluxRequired

    4
    4 帖子
    5k 浏览
    李东岳

    @ahujeffery 因为一般只有p方程需要p.flux() 目前新版本openfoam已经不需要这个了

  • 求助:关于VOF求解!

    3
    3 帖子
    3k 浏览
    S

    您好,我最近也在做这方面的工作,但是遇到了一些问题想向您请教下可以吗?

  • OpenFOAM如何进行数据转换以便进行比大小

    4
    4 帖子
    3k 浏览

    刚刚尝试了下将double型变量赋值给一个新的体标量场,然后比较两个体标量场的大小就可以通过编译了:chitang:

    b =mesn.C().component(vector::Y)/a;//b被声明为一个体标量场记录距离壁面的无量纲距离,a为特征长度 Prt = 1.25;//Prt也是被声明为一个体标量场,这里先把Prt当做了一个中间变量,Prt为我研究中的湍流普朗特数,其对流体温度梯度影响很大,应当是一个函数而非常数。 if( b <= Prt ) { Prt = 0.45; } else { Prt=4.75; }

    今晚先算用编译好的求解器算一遍对不对,结果好的话,明后天再放上来。

  • openFoam 4.1在超算CentOS Linux release编译问题

    7
    7 帖子
    4k 浏览
    A

    @bestucan 是的,谢谢大佬:xinxin2:

  • openFoam如何选择合适的壁面函数

    2
    2 帖子
    2k 浏览
    X

    @Naruto foam-extend-4.1 版本带有几个 Non-Equilibrium Wall Function,可以参考。

    还有一个参考是这篇硕士论文:http://repozitorij.fsb.hr/7620/1/Šutalo_2017_diplomski.pdf

  • 8 帖子
    6k 浏览
    H

    @李东岳 在 有没有utility或者force,能使颗粒在RANS模拟中像LES那样发散开来 中说:

    我们之前详细的研究过这个东西 目前DPM这面的turbulent dispersion force结果都不太好 你可以尝试一下

    想请教一下李老师,在这个stochasticDispersionRAS.C的代码中,dt代表的是什么,并没有看出它的出处在哪。。
    从结果上来看,这个dt好像不是模拟中的timestep,它的值对于每个颗都不一样。

    // Member Functions //- Update (disperse particles) virtual vector update ( const scalar dt, const label celli, const vector& U, const vector& Uc, vector& UTurb, scalar& tTurb );
  • 6 帖子
    5k 浏览
    M

    @zousiyu 好的非常感谢您,我试一下。

  • 在碰撞模型里怎么调用网格粒子浓度?

    3
    3 帖子
    3k 浏览
    zheZ

    @李东岳 谢谢东岳老师的回复。这个cloud的类型是在KinematicCloud.H 中对cloudType的一步细分。

    //- Type of cloud this cloud was instantiated for typedef CloudType cloudType; //- Type of parcel the cloud was instantiated for typedef typename CloudType::particleType parcelType; //- Convenience typedef for this cloud type typedef KinematicCloud<CloudType> kinematicCloudType;

    无论我保不保留这个,都显示一样的error。这个expected primary-expression before '.' token是什么意思啊?少了什么吗?

  • 求一个EMMS模型的代码

    1
    1 帖子
    1k 浏览
    L

    如题,最近正在学习EMMS模型,没怎么搞明白,希望大神指导

  • paraview怎么输入实验数据

    5
    5 帖子
    4k 浏览
    李东岳

    openfoam搭配gnuplot也很方便

  • openfoam变时间步长dt的怎么理解

    3
    3 帖子
    3k 浏览
    L

    下午看资料也有跟你一样的困惑,不知道你说的是不是adjustTimeStep,还是只是如何改变时间步长哦,如果是adjustTimeStep的话你可以看看这个图片上的说法!微信图片编辑_20201208204436.jpg

  • 17 帖子
    12k 浏览
    M

    @mohui 您好,请问您解决这个问题了吗?我想给同种液滴的两个液滴染色,便于观察融合过程中的各个形态变化,求指教。