OpenFOAM

4.5k 主题 26.2k 帖子
  • 重新看icoFoam

    8 帖子
    2k 浏览

    @李东岳 我下面仔细推导了一下:
    首先 rAU(1.0/UEqn.A());,这个公式的计算得到的结果是:

    对角系数 这是A()函数: template<class Type> Foam::tmp<Foam::volScalarField> Foam::fvMatrix<Type>::A() const { tmp<volScalarField> tAphi ( volScalarField::New ( "A("+psi_.name()+')', psi_.mesh(), dimensions_/psi_.dimensions()/dimVol, extrapolatedCalculatedFvPatchScalarField::typeName ) ); tAphi.ref().primitiveFieldRef() = D()/psi_.mesh().V(); tAphi.ref().correctBoundaryConditions(); return tAphi; } 这是D()对角系数的平均化处理 template<class Type> Foam::tmp<Foam::scalarField> Foam::fvMatrix<Type>::D() const { tmp<scalarField> tdiag(new scalarField(diag())); addCmptAvBoundaryDiag(tdiag.ref()); return tdiag; } 边界对对角系数的影响: template<class Type> void Foam::fvMatrix<Type>::addCmptAvBoundaryDiag(scalarField& diag) const { forAll(internalCoeffs_, patchi) { addToInternalField ( lduAddr().patchAddr(patchi), cmptAv(internalCoeffs_[patchi]), diag ); } }

    从上面的代码可以得到:
    $$
    A_p=\frac{\bar{D}}{\Delta V}
    $$
    其中:
    $$
    \bar{D}=average(a_p')+diag
    $$
    式子中average(Ap')表示的是边界对主对角线系数的影响的平均;diag表示的是内部面离散的主对角线系数。

    周围系数作为源项: H() template<class Type> Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh>> Foam::fvMatrix<Type>::H() const { tmp<GeometricField<Type, fvPatchField, volMesh>> tHphi ( GeometricField<Type, fvPatchField, volMesh>::New ( "H("+psi_.name()+')', psi_.mesh(), dimensions_/dimVol, extrapolatedCalculatedFvPatchScalarField::typeName ) ); GeometricField<Type, fvPatchField, volMesh>& Hphi = tHphi.ref(); // Loop over field components for (direction cmpt=0; cmpt<Type::nComponents; cmpt++) { scalarField psiCmpt(psi_.primitiveField().component(cmpt)); scalarField boundaryDiagCmpt(psi_.size(), 0.0); addBoundaryDiag(boundaryDiagCmpt, cmpt); boundaryDiagCmpt.negate(); addCmptAvBoundaryDiag(boundaryDiagCmpt); Hphi.primitiveFieldRef().replace(cmpt, boundaryDiagCmpt*psiCmpt); } Hphi.primitiveFieldRef() += lduMatrix::H(psi_.primitiveField()) + source_; addBoundarySource(Hphi.primitiveFieldRef()); Hphi.primitiveFieldRef() /= psi_.mesh().V(); Hphi.correctBoundaryConditions(); typename Type::labelType validComponents ( psi_.mesh().template validComponents<Type>() ); for (direction cmpt=0; cmpt<Type::nComponents; cmpt++) { if (validComponents[cmpt] == -1) { Hphi.replace ( cmpt, dimensionedScalar(Hphi.dimensions(), 0) ); } } return tHphi; } template<class Type> void Foam::fvMatrix<Type>::addBoundaryDiag ( scalarField& diag, const direction solveCmpt ) const { forAll(internalCoeffs_, patchi) { addToInternalField ( lduAddr().patchAddr(patchi), internalCoeffs_[patchi].component(solveCmpt), diag ); } }

    这里面的求解过程包含了:
    $$
    H=\frac{\left [-\sum a_{\mathbf{N}}\mathbf{U_N} + (\mathbf{b}+\mathbf{b'})+(average(a_p')-a_p')\mathbf{U_C}\right]}{\Delta V}
    $$

    最后:

    $$
    HbyA= \frac{H}{A}=\frac{\Delta V}{average(a_p')+diag}\frac{\left [-\sum a_{\mathbf{N}}\mathbf{U_N} + (\mathbf{b}+\mathbf{b'})+(average(a_p')-a_p')\mathbf{U_C}\right]}{\Delta V}
    $$
    $$
    HbyA= \frac{H}{A}=\frac{\left [-\sum a_{\mathbf{N}}\mathbf{U_N} + (\mathbf{b}+\mathbf{b'})+(average(a_p')-a_p')\mathbf{U_C}\right]}{average(a_p')+diag}
    $$

  • icoFoam求解器解析中问题。

    9 帖子
    6k 浏览

    @李东岳 李老师,您好。volScalarField rAU(1.0/UEqn.A());这个重理论上分析应该是矢量才对,但是细节上的操作确实做成了体标量场。

    template<class Type> Foam::tmp<Foam::volScalarField> Foam::fvMatrix<Type>::A() const { tmp<volScalarField> tAphi ( volScalarField::New ( "A("+psi_.name()+')', psi_.mesh(), dimensions_/psi_.dimensions()/dimVol, extrapolatedCalculatedFvPatchScalarField::typeName ) ); tAphi.ref().primitiveFieldRef() = D()/psi_.mesh().V(); tAphi.ref().correctBoundaryConditions(); return tAphi; }

    $ A=\frac{A_p}{\Delta V}$
    在计算系数Diag的过程中,将边界对主对角线的系数进行了平均更新:

    template<class Type> Foam::tmp<Foam::scalarField> Foam::fvMatrix<Type>::D() const { tmp<scalarField> tdiag(new scalarField(diag())); //这里进行了平均处理并修正了主对角线系数。 addCmptAvBoundaryDiag(tdiag.ref()); return tdiag; }

    为什么这样操作呢?这样会使得系数矩阵不一样了!

  • FsiFoam并行问题

    15 帖子
    5k 浏览

    你好。请教你一个问题。我在对fsiFoam进行并行计算的时候,出现这个错误,能否指导一下QQ截图20201231233815.png

  • pairCollision中,A和B分别指网格还是粒子?

    5 帖子
    1k 浏览

    @bestucan 抱歉回复的晚了,已经很感谢您的解答了,帮我捋清了很多了。我按着您的这个思路走了一遍,大概明白了我之前给出的的确是A和B都是网格名称。而同时,在分别中也代表着其中包含的粒子a和b,也就是您说的也可以理解为A 和B 也是粒子。

    我的理解是A 和B 是有相关的两个cells,而最后的

    evaluatePair(*pA_ptr, *pB_ptr);

    是建立两个网格之间(包括网格里所有粒子)的一种配对机制,不知道对不对?

    // Loop over the other Parcels in cell A (aO) forAll(cellOccupancy[realCelli], aO) { pB_ptr = cellOccupancy[realCelli][aO]; // Do not double-evaluate, compare pointers, arbitrary // order if (pB_ptr > pA_ptr) { evaluatePair(*pA_ptr, *pB_ptr); } }

    在之后的loop里,对于相同cell里的粒子相对配对,也就是说把一个粒子单拎出来a,然后其它的所有粒子相当于a0(而这个其实与之前B网格的指示相同而以)。这样理解不知道对不对?

    最后一点儿避免两次被征用,所以有了一个对比。

    知道您肯定也花时间翻了一遍了,实在是感谢!

    如果有其他朋友一起讨论,感激不尽。

  • 3 帖子
    1k 浏览

    @OF初学者周 这个是最后sample操作时候的报错,求解器的报错在 log.multiphaseEulerFoam里边。
    我修改了求解器为multiphaseEulerFoam, phase properties type basicMultiphaseSystem, 提示需要定义alpha.water, 添加后还需要定义fvSchemes,可能是我添加有误,操作完成后还出现如下报错:
    我也来蹲🙈一个大佬:papa:

    Courant Number mean: 0.0001514815028686309 max: 0.01324964389123762 deltaT = 0.002398081534772182 Time = 0.00239808 PIMPLE: Iteration 1 #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::sigFpe::sigHandler(int) at ??:? #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" #3 Foam::MULES::limitSum(Foam::UPtrList<Foam::Field<double> const> const&, Foam::UPtrList<Foam::Field<double> >&, Foam::HashSet<int, Foam::Hash<int> > const&) at ??:? #4 void Foam::MULES::limitSum<Foam::PtrList<Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> > >(Foam::PtrList<Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> > const&, Foam::PtrList<Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> >&, Foam::HashSet<int, Foam::Hash<int> > const&) at ??:? #5 Foam::phaseSystem::solve(Foam::PtrList<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > const&, Foam::PtrList<Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> > const&) at ??:? #6 ? in "/home/veen/Disk/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/bin/multiphaseEulerFoam" #7 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" #8 ? in "/home/veen/Disk/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/bin/multiphaseEulerFoam" Floating point exception (core dumped)
  • 关于omega_和omega_()中的括号

    6 帖子
    2k 浏览

    @吴优 对,是这个。

  • 3 帖子
    818 浏览

    @李东岳 谢谢李老师!这是调用函数模板的一种形式吧。此问题已解决!但关于autoCreatek函数的实现功能还是不太明白:mihu:

  • 3 帖子
    1k 浏览

    @cccrrryyy 嗯呢,已经明白了~

  • 1 帖子
    383 浏览

    一般的openFOAM算例文件,时间步文件下就是场数据,而且场数据和网格点一般多,然而mutiRegions问题时间步文件下是region名称,而且场数据和region保持一致,这样导入的话,tecplot绘图会出现如下怪异场!微信图片_20201230134855.png

  • LES模拟两射流撞击

    23 帖子
    4k 浏览

    二维只是为了复现这篇文献,后面自己研究的话会做三维的

  • 如何在paraView中画出这样的图

    3 帖子
    989 浏览

    感谢感谢,成功了

  • WSL2安装OpenFOAM

    10 帖子
    3k 浏览

    wsl是win模拟linux的api,就像wine一样。wsl2就是个虚拟机,不过经过微软优化,没其他虚拟机那么嗝应人。

    如果是升级失败,系统里应该有还原点,还原一下更新前的系统状态就好,不会擦除其他个人数据。

  • 13 帖子
    3k 浏览

    @队长别开枪 大佬大佬 感谢分享!!

  • 后处理新定义一个物理量问题

    3 帖子
    976 浏览

    谢谢老师的回复,老师提供了一个可供一试的办法。这里给出一个使用 Python programmable filter 后处理的办法,粘贴在这,供参考。使用时需要VTK格式
    29a52e6c-72e1-4861-b38c-6733d4ea7b35-image.png

  • 添加湍流模型遇到问题(重发)

    7 帖子
    3k 浏览

    李老师您好,请问这个问题解决了吗?我也遇到类似的问题,就是只改湍流模型的名字,在编译的时候也出现了一些error

  • fsiFoam中的固体求解器

    7 帖子
    2k 浏览

    @Stan同学 别邮箱请教了,发布在论坛估计能更快得到解答,祝好

  • rhoSimpleFoam求解器算例

    3 帖子
    2k 浏览

    非常感谢!我更新了下方程33:xiexie:

    方程22是严谨的情况下的方程,但是22并不能用,因为$A^{n+2}$未知,所以还是要把方程22参考方程14那样线性化一下。就是方程23

  • 5 帖子
    2k 浏览

    @yhdthu 谢谢!

  • 3 帖子
    1k 浏览

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

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

    2 帖子
    716 浏览

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

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

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

    5 帖子
    2k 浏览

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

  • 12 帖子
    3k 浏览

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

  • 5 帖子
    2k 浏览

    感谢分享!

  • foamDataToFluent问题

    1 帖子
    496 浏览

    请问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 帖子
    1k 浏览

    测试排版用

    引言

    湍流运动是目前计算流体力学中困难最多因此也最活跃的领域之一。当湍流存在,则住在其他相关的流动现象,并引致能量耗散、混合以及传热。没有三维的涡,则没有真正的湍流,因为只有在三维的流动中,涡旋才能进行伸展并产生新的涡旋。目前可采用的数值计算方法分为三类:直接模拟(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 帖子
    1k 浏览

    @CarmeloSun 还没有

  • 4 帖子
    2k 浏览

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

  • 求助:关于VOF求解!

    3 帖子
    963 浏览

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

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

    4 帖子
    1k 浏览

    刚刚尝试了下将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 帖子
    1k 浏览

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

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

    2 帖子
    968 浏览

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

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

  • 8 帖子
    2k 浏览

    @李东岳有没有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 帖子
    2k 浏览

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

  • 关于绿色版paraview

    8 帖子
    2k 浏览

    @liujunCFD 理论上新的空白硬盘是挂载在/home下面的,是不是就是你想要的对/home的扩容?
    个人感觉ubuntu的分区似乎没有windows那么严格:haqi:

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

    3 帖子
    774 浏览

    @李东岳 谢谢东岳老师的回复。这个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 帖子
    494 浏览

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

  • paraview怎么输入实验数据

    5 帖子
    1k 浏览

    openfoam搭配gnuplot也很方便

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

    3 帖子
    1k 浏览

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

  • 17 帖子
    4k 浏览

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

  • 利用openfoam做液滴碰撞,给液滴染色

    9 帖子
    2k 浏览

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

  • 38 帖子
    10k 浏览

    @aaaachenjian 模拟是在微重力环境下,上下壁面有个温差,在自由面上加个热毛细力,已经放弃用VOF方法了,像这种变形较小的直接挪网格,这是算法天生问题不太好解决

  • 关于射流!

    4 帖子
    1k 浏览

    @liujunCFD关于射流! 中说:

    各位前辈在用OF处理两股射流相互作用时的思路

    貌似不需要特殊处理

  • 网格生成与合成的问题

    4 帖子
    1k 浏览

    WeChat8db3756fb66113a48305c51893ed1215.png

    模型还是很简单的,就是一个柱体+方形,但是我用icem画必须要用两个O grid,网格过渡很不好(至少我看起来很难受),不知有什么其他思路?

  • 1 帖子
    503 浏览

    各位前辈好,我最近准备从其他版本移植一个动网格功能时发现新旧版本之间motionSolver类在调用declareRunTimeSelectionTable函数时存在不同,旧版本中argList使用了Istream,新版本改为了Iodictionary。这导致旧版本的派生类移植到新版本遇到问题,如果直接改新版本的话又会导致其他派生类出现问题。因此可否在基类motionSolver中调用两次declareRunTimeSelectionTable,argList分别使用Istream和Iodictionary?
    事实上我在polyPatch.H中看到了调用两个declareRunTimeSelectionTable的例子:

    TypeName("patch"); //- Debug switch to disallow the use of genericPolyPatch static int disallowGenericPolyPatch; // Declare run-time constructor selection tables declareRunTimeSelectionTable ( autoPtr, polyPatch, word, ( const word& name, const label size, const label start, const label index, const polyBoundaryMesh& bm, const word& patchType ), (name, size, start, index, bm, patchType) ); declareRunTimeSelectionTable ( autoPtr, polyPatch, dictionary, ( const word& name, const dictionary& dict, const label index, const polyBoundaryMesh& bm, const word& patchType ), (name, dict, index, bm, patchType) );

    但是不清楚是否是为了实现上述的功能?

  • 关于如何耦合求解器的些许疑虑

    5 帖子
    1k 浏览

    @bestucan 感谢
    你我素昧平生,得您悉心指导,甚是感动
    占用您宝贵的时间,无偿在论坛替新人解决问题,分享经验
    感激涕零,无以言表
    致谢
    :huahua:

  • 关于foam-extend浸没边界法的一个想法

    4 帖子
    1k 浏览

    这个猜测经过我目前的尝试发现应该是个错误的想法,stl文件应先转变成ftr格式,之后在背景网格中由writeIbMasks使用gamma变量去识别,而不需要用其他的方式去操作。希望大家可以引以为戒:136:
    这个答案是我在目前学习过程中的一个认知,如果有错误还希望各位大佬可以提出来:140:

  • paraview怎么使坐标图光滑

    3 帖子
    1k 浏览

    @bestucan 多谢:xinxin: :xinxin:

  • 跨音速求解器选择

    9 帖子
    2k 浏览

    @cccrrryyy 谢谢你的回复!用KOmegaSST有三方面的原因。第一是我用kOmegaSST做过subsonic jet, mixing layer等的模拟,效果都不错,高超音速的jet别人也做了,结果跟NASA的比对了,都挺好的,因为这些算例的积累所以想继续用KomegaSST做。第二是我们组在做修改KomegaSST湍流模型这块,所以希望都基于这个做。第三是因为用组里编的程序,湍流模型是kOmegaSST的做过transonic turbine的模拟,结果也很好。所以我觉得不是湍流模型的问题,认为openfoam应该能模拟出来的。

  • 2 帖子
    794 浏览

    @dyb 图2 max Courant = 1.8,你用的PISO 还是PIMPLE
    减小deltaT试试

  • 19 帖子
    8k 浏览

    @李东岳 :wocao:
    大哥,你这样我压力好大= =