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

    @李东岳 多谢李老师回复。上传的结果是关闭Decompose polyhedra选项后的结果,Tecplot里面也是这种情况。用的是2D的问题,采用的是选择x、y方向加密的方式。

    在源码里看到refineMesh调用了cutDirToEdge,其中加密方向是根据单元边选择方向的关系判断加密的方向(下图的cosAngle,maxEdgeI)。O型网格按照这样处理的方式,处于圆柱上方的网格和后方的网格加密的方向是不一致的(第二张图片是只加密x方向的结果,网格的加密方式不一样了)。不知道是否可以通过设置参数进行控制?

    845840da-6fb4-4df4-8d1d-59871760b046-image.png

    3a078fc9-11f2-4e2c-bc86-9baa876c65fd-image.png

  • wallShearStress函数量纲问题咨询

    OpenFOAM
    7
    0 赞同
    7 帖子
    8k 浏览

    @李东岳 好的,我明白啦,感谢李老师~::xinxin:

  • 什么样的模拟才叫大涡模拟(LES)?

    Algorithm
    10
    0 赞同
    10 帖子
    26k 浏览
    小狗狗

    流体的动能通过涡耗散,而空间网格最小尺寸决定了你数值计算能捕捉到的最小涡的尺寸,因此小于你网格能够捕捉的尺寸的涡,其含有的动能无法通过数值模拟耗散掉。为了解决这个问题,可以理解为增加了一个和“空间尺度”有关的人工耗散,进而对小尺度的涡进行耗散,因此叫做大涡模拟。而刻画这个小涡空间尺度的标准和你的第一层网格有关,因为其决定了小涡的最大尺寸(也就是在空间上被过滤的小涡的最大尺寸)。

  • 有人了解法国的phd么

    CFD彩虹条
    3
    0 赞同
    3 帖子
    5k 浏览
    Z

    @东岳 。。。多谢解答

  • icoFoam运算出错

    OpenFOAM
    8
    0 赞同
    8 帖子
    6k 浏览
    Z

    @李东岳 好的,谢谢李老师

  • Fluent Maxwell速度滑移和温度跳跃

    Fluent
    1
    0 赞同
    1 帖子
    2k 浏览
    E

    请问有大佬知道如何在Fluent中利用UDF添加Maxwell速度滑移和温度跳跃边界条件吗

  • 关于相邻cell

    OpenFOAM
    8
    0 赞同
    8 帖子
    8k 浏览

    @星星星星晴 本来没想到这么慢,结果发现假如我有1M parcel,1M cell 就要搞1M x 1M次, 实在有点笨。然后现在改为之前那个方法了。。 可能是当时不知道怎么回事有点脑残吧,搞错了,相邻cell一层一层搞出来快很多。。 下面是code, 编程能力有限,想搞成个function,总觉得麻烦。。不过改成function的话应该可以弄n层了吧。。

    还是python好写。。。

    if (neighbor_) { //Info << "cellI = " <<cellI<<nl; //- first layer List<int> first = this->owner().mesh().cellCells()[cellI]; first.append(cellI); sort(first); all_neighbor.append(first); int first_size = first.size(); //Info << "cellI = " << first <<nl; //- second layer List<int> second_all; for (int i1 = 0; i1<first_size; i1++){ List<int> second = this->owner().mesh().cellCells()[first[i1]]; //Info << "cellI second = " << second <<nl; second_all.append(second); } List<int> order,second_unique; uniqueOrder(second_all, order); forAll(order,kk) { second_unique.append(second_all[order[kk]]); } sort(second_unique); all_neighbor.append(second_unique); //- third layer List<int> third_all; for (int i1 = 0; i1<second_unique.size(); i1++){ List<int> third = this->owner().mesh().cellCells()[second_unique[i1]]; //Info << "cellI third = " << third <<nl; third_all.append(third); } List<int> order3,third_unique; uniqueOrder(third_all, order3); forAll(order3,kk) { third_unique.append(third_all[order3[kk]]); } sort(third_unique); all_neighbor.append(third_unique); //- Fourth layer List<int> fourth_all; for (int i1 = 0; i1<third_unique.size(); i1++){ List<int> fourth = this->owner().mesh().cellCells()[third_unique[i1]]; fourth_all.append(fourth); } List<int> order4,fourth_unique; uniqueOrder(fourth_all, order4); forAll(order4,kk) { fourth_unique.append(fourth_all[order4[kk]]); } sort(fourth_unique); all_neighbor.append(fourth_unique); //- collect all List<int> order_all; uniqueOrder(all_neighbor, order_all); forAll(order_all,kk) { all_neighbor_unique.append(all_neighbor[order_all[kk]]); } sort(all_neighbor_unique);
  • 0 赞同
    26 帖子
    36k 浏览
    L

    @霜染丹枫 请问您找到原因了吗,我用了周期边界设置的固定压降,依旧是算到最后和层流一样了

  • 做个公式记录

    CFD彩虹条
    5
    0 赞同
    5 帖子
    10k 浏览
    李东岳

    \begin{equation}
    \frac{{\p \left( {{\alpha_k }{\rho_k}{\bfU_k }} \right)}}{{\p t}} + \nabla \cdot \left( {{\alpha_k}{\rho_k } {{\bfU_k} {\bfU_k}} } \right) - \nabla \cdot \left( {{\alpha_k}{ \rho_k}{\tau_k}} \right)
    = - {\alpha_k} \nabla p_k + {\alpha_k}{\rho_k} \bfg + \sum {\bfM_{ij}},
    \end{equation}

    \begin{equation}
    \frac{{\p \left( {{\alpha_k }{\rho_k}{ }} \right)}}{{\p t}} + \nabla \cdot \left( {{\alpha_k}{\rho_k } { {\bfU_k}} } \right) =0
    \end{equation}

    \begin{equation}
    \nabla \cdot \left( {{\alpha_k}{\rho_k } { {\bfU_k}} } \right) =0
    \end{equation}

    \begin{equation}
    \sum {{\alpha_k}{\rho_k } { {\bfU_k}} }\cdot\bfS_f =0
    \end{equation}

    \begin{equation}
    \tau_k=-\nu_\mathrm{k,eff}\left(\nabla \bfU_k+\nabla^\rT \bfU_k\right)+\frac{2}{3}\nu_\mathrm{k,eff}\nabla \cdot \left(\bfU_k \cdot\bfI\right),
    \label{taud}
    \end{equation}

    \begin{equation}
    \bfM_{\mathrm{drag}}=\frac{3}{4}\alpha_k\rho_\rc C_\rD\frac{1}{d_k} \left|\bfU_\rc-\bfU_k\right| \left(\bfU_\rc-\bfU_k\right),
    \end{equation}

    \begin{equation}
    Re=\frac{d_k|\bfU_k-\bfU_\rc|}{\nu_\rc}
    \end{equation}

    \begin{equation}
    \bfM_\lift=\alpha_\rd C_\rL\rho_\rc\bfU_\rr\times\left(\nabla\times\bfU_\rc\right),
    \end{equation}

    \begin{equation}
    \bfM_\wall=C_\wall\rho_\rc\alpha_k|\bfU_\rc-\bfU_k|^2\cdot\bfn
    \end{equation}

    \begin{equation}
    \bfM_\turb=C_\rT\rho_\rc k_\rc\nabla\alpha_\rd,
    \end{equation}

    \begin{equation}\label{m1}
    \frac{{\p \left( {{\alpha_k }{\rho_k }{\bfU_k}} \right)}}{{\p t}} + \nabla \cdot \left( {{\alpha_k}{\rho_k} {{\bfU_k} {\bfU_k}} } \right) - \nabla \cdot \left( {{\alpha_\rd}{ \rho_\rd}{\tau_\rd}} \right)
    = -\Kd_k\bfU_k+\bfM_{\lift,k}+\bfM_{\turb,k}+\bfM_{\wall,k},
    \end{equation}

    \begin{equation}\label{Kd}
    \Kd=\frac{3}{4}\alpha_k\rho_\rc C_{\rD,k}\frac{1}{d_k} \left|\bfU_\rc-\bfU_k\right|.
    \end{equation}

    \begin{equation}
    {A_{k,\mathrm{P}}}\mathbf{U}_{k,\mathrm{P}}{\rm{ + }}\sum {A_{k,\mathrm{N}}\mathbf{U}_{k,\mathrm{N}}} = S_{k,\mathrm{P}},
    \label{apanmomrd}
    \end{equation}

    \begin{equation}
    \mathbf{HbyA}_{k,\mathrm{P}} = \frac{1}{{{A_{k,\mathrm{P}}}}}\left( { - \sum {{A_{k,\mathrm{N}}}\mathbf{U}_{k,\mathrm{N}}} + S_{k,\mathrm{P}}} \right),
    \label{hbyad}
    \end{equation}

    \begin{equation}
    \bfU_{k,\rP} = \bfHbyA_{k,\rP}+\frac{\alpha_{k,\rP}}{A_{k,\rP}}\left(\nabla p_{\mathrm{rgh},\rP}-\alpha_{\rc,\rP}\left(\rho_\rc-\rho_k\right)\bfg-\bfg\cdot\bfh_\rP\nabla\rho_\rP\right)+\frac{\Kd_k}{A_{k,\rP}}\bfU_{\rc,\rP},
    \label{hbyad2}
    \end{equation}

    \begin{equation}\label{incompressiblep}
    \sum\alpha_{k,f}\phi_{k}+\alpha_{\rc,f}\phi_{\rc}=\nabla\cdot\left(\left(\sum\alpha_{k,\rP}\frac{\alpha_{k,\rP}}{A_{k,\rP}}+\alpha_{\rc,\rP}\frac{\alpha_{\rc,\rP}}{A_{\rc,\rP}}
    \right)\nabla p_{\mathrm{rgh},\rP}\right),
    \end{equation}

    \begin{equation}
    \phi_{k}=\left(\bfHbyA_{k,f}+\frac{\alpha_{k,f}}{A_{k,f}}\left(-\alpha_{\rc,f}\left(\rho_\rc-\rho_\rd\right)\bfg-\bfg\cdot\bfh_f\nabla\rho_f\right)+\frac{\Kd_f}{A_{k,f}}\bfU_{\rc,f}\right)\cdot\bfS_f
    \end{equation}

    \begin{equation}
    \phi_{\rc}=\left(\bfHbyA_{\rc,f}+\frac{\alpha_{\rc,f}}{A_{\rc,f}}\left(-\alpha_{\rd,f}\left(\rho_\rd-\rho_\rc\right)\bfg-\bfg\cdot\bfh_f\nabla\rho_f\right)+\frac{\Kd_f}{A_{\rc,f}}\bfU_{\rd,f}\right)\cdot\bfS_f
    \end{equation}

  • 0 赞同
    1 帖子
    3k 浏览
    Cp_ZhaoC

    这几天在看有限体积法的书,大佬的论文、《数值传热学》和 《The FVM inCFD OpenFOAM..Matlab》都看了,逛论坛发现都在推荐《Computational Methods for Fluid Dynamics》这本;去SpringerLink一搜正好今年出了新版,网上资源好像还不多,在这里分享一下: 点击下载

  • fluent计算微通道收敛不了

    Fluent
    1
    0 赞同
    1 帖子
    1k 浏览
    D

    针对一个高度为3mm,宽度为1mm的矩形微通道,用fluent mesh 画网格后,在入口流速为0.3 0.4 m/s时,计算都可以收敛。但是当入口流速为0.5m/s时,计算收敛不了,这可能是什么原因导致的,尝试过增加网格数量也无效

  • 0 赞同
    3 帖子
    3k 浏览
    李东岳

    @Samuel-Tu 会的

  • 算到一半可以改网格吗

    Meshy
    4
    0 赞同
    4 帖子
    4k 浏览
    李东岳

    @shrine 没关系,无关紧要这些文件

  • 如何理解CFD计算中的数值噪声?

    Algorithm
    2
    0 赞同
    2 帖子
    4k 浏览
    bestucanB

    比如
    当用浮点数乘除得到一个整数的时候,很可能是 0.99999999999 1.0000000001。
    这个完全无法预测。写函数解决?可是又不知道它本该是整数还是很接近这个整数。

  • 0 赞同
    4 帖子
    7k 浏览
    C

    @李东岳 李老师有没有兴趣看下风工程这块的有个商业软件WT,里面是速度-压力耦合求解器,真的非常快非常快。我看了下,软件底层是从PHOENICS来的,然后搞了一套叫MIGAL的算法。

    现在CFD用的SIMPLE这种segregated solver确实太慢了,城市这种尺度下的流动本身大概率又比较简单,不可压,也没有化学反应之类的,可以暂时不考虑温度?可能会有颗粒流的问题,但是不是也可以先只考虑流动对颗粒的影响。这种情况下感觉流场本身的求解其实就看求解器的效率了。

    我搜了下,OpenFOAM这边其实已经有一些coupled solver 的工作,不知道成不成熟。

  • 如何在动网格工况中如何设置移动测点

    Fluent
    1
    0 赞同
    1 帖子
    1k 浏览
    L

    请教各位:
    目前有一个6自由度运动的sloshing两相流模型,通过udf文件给定运动速度。

    需要测出壁面位置某些点的压强时程变化,以及某些区域的水位(波高)时程变化。请问该如何设置这些测点,使其与动网格区域一起运动。

  • Fluent meshing totorials

    Meshy
    6
    0 赞同
    6 帖子
    10k 浏览

    这个主要看cfd之道公众号流沙的教程就可以学会了(哈哈哈哈,你是我拿到注册码之后回复的第一个人)

  • 0 赞同
    3 帖子
    5k 浏览
    Prometheus10P

    @李东岳 好的~谢谢东岳老师:xinxin:

  • 0 赞同
    4 帖子
    5k 浏览
    A

    加一个界面delta函数就可以把

  • 0 赞同
    3 帖子
    4k 浏览
    李东岳

    乍一看,三年过去了

    http://dyfluid.com/buoyantSimpleFoam.html

    在真正开始pimple循环后,EEqn.H末尾有一个thermo.correct()。这一步根据计算后的能量场,更新了温度、粘度、可压缩比(psi)等等物性,所以在pEqn.H的开头,出现了一步rho = thermo.rho(),实际上进行了更新密度的操作(rho = psi * p,注意这个时候psi已经变了),之后再进行压力的求解。

    最近更新了这个,尤其是关于两个密度更新的问题的讨论。不可压缩流速度修正与压力变量直接相关。但是附加浮力之后,速度修正与压力变量以及密度变量(浮力)直接相关。我赞同上面的理解。同时,能量方程之后的密度更新可有可无,只不过是收敛性的问题。