Skip to content
  • CFD巨著开始印刷!

    CFD彩虹条
    7
    0 赞同
    7 帖子
    11k 浏览
    sr0922mscS

    @李东岳 有没有其他方式参考赠书呀?五行缺书~

  • 0 赞同
    11 帖子
    16k 浏览
    liujunCFDL

    @winsway_zero 前辈,请问gmesh怎么划分block

  • RANS SA和SA-DES的区别对于FSI

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

    SA是Spalart-Allmaras,Reynolds-Averaged Navier-Stokes Spalart-Allmaras turbulence和Spalart-Allmaras Detached Eddy
    Spalart-Allmaras采用的是标准的SA,不是高雷诺数的。DES也是标准的DES模型

  • 0 赞同
    12 帖子
    16k 浏览

    @ibelief 谢谢,我再看一看。

  • 求助,ICEM link edge 不起作用

    Meshy
    2
    0 赞同
    2 帖子
    5k 浏览
    A

    :136: 好吧找到原因了,是这个版本的link edge factor默认是0

  • 多孔介质-UDF讨论

    Fluent
    2
    0 赞同
    2 帖子
    4k 浏览
    L

    注意格式还有先调试一下吧 这个问题其实最难的是最后的各个方向上的分量处理
    而如果是平面各向同性的话 难点在于处理最后源项中针对的方向长度问题
    注意源项的单位 你好像并没有关心

  • 关于OpenFOAM矩阵求解器

    Algorithm
    9
    0 赞同
    9 帖子
    19k 浏览

    @micro 网格数量越多,网格尺度越小,计算肯定更加不稳定,您可以查一下CFL数

  • CFD青年成长支持计划(2022)

    公告
    87
    0 赞同
    87 帖子
    216k 浏览

    我是南京航空航天大学航空学院2022级硕士研究生吴祥清,跟随张老师链接文本从事CFD研究,本人的主要研究方向为高速出入水,初步学习商软入门CFD现在准备编程写算法。查找学习资料了解到CFD中文网以及老师,所以想申请2022CFD青年成长支持计划,我目前正在使用LS-DYNA软件进行垂直破冰仿真,开始着手发相关论文。在本科期间接触流体力学便想深入了解这个专业,也申请了这个方向的研究生,如果论文写作顺利,便会在研究生二年级申请硕博连读,为国家军事建设贡献自己的一份力量。目前在上课之余也开始着手C++入门。但是CFD学习之路道阻且长,希望可以得到老师资助来更好的学习CFD。

  • 0 赞同
    6 帖子
    5k 浏览
    1

    @JC 在 在interfoam两相流中,如何计算相对渗透率 中说:

    @JC 在 在interfoam两相流中,如何计算相对渗透率 中说:

    有一个标准里面写有计算方法,记录每个时刻流出的两相体积,以及压力梯度,应该就可以算出来了。对了还需要这个多孔介质的初始渗透率

    《SY/T 5345-1999》一个很老的标准,可以参考下

    谢谢,后面我也是直接用出口流量来算每一相渗透率再计算相对渗透率,部分文献里也存在根据饱和度计算相对渗透率的模型,不过不好确定误差。

  • 聚并破碎的SQMOM方法

    Algorithm
    1
    0 赞同
    1 帖子
    2k 浏览
    李东岳

    对于给定的NDF,划分为$i$个$N_{pp}$,对每个$i$上定义$k$阶矩$m_k^i$,给定$m_k^i$,可以计算第$i$区间的节点$d^i_0,d^i_1$以及权重$w^i_0,w^i_1$:
    \begin{equation}
    \begin{split}
    w^i_0&=w^i_1=0.5
    \\
    d^i_0&=m_1^i-\frac{1}{\sqrt{3}}\sqrt{\frac{m_3^i}{m_1^i}-{m_1^i}^2}
    \\
    d^i_1&=m_1^i+\frac{1}{\sqrt{3}}\sqrt{\frac{m_3^i}{m_1^i}-{m_1^i}^2}
    \end{split}
    \end{equation}
    对于仅考虑破碎的PBE:
    \begin{equation}\label{pbe}
    \frac{\p n(d)}{\p t}=\int_d^{d_{max}}g(d')\beta(d|d')n(d')\rd d'-g(d)n(d)
    \end{equation}
    对方程\eqref{pbe}在$i$上取$k$阶矩:
    \begin{equation}\label{m}
    \frac{\p m_k^i}{\p t}=\int_{d_{i-1/2}}^{d_{i+1/2}}\int_d^{d_{max}}g(d')d^k\beta(d|d')n(d')\rd d'\rd d-\sum^2_{j=0} g(d_j^i)w_j^i(d_j^i)^k
    \end{equation}
    \begin{equation}
    \begin{split}
    \int_{d_{i-1/2}}^{d_{i+1/2}}\int_d^{d_{max}}g(d')\beta(d|d')n(d')\rd d'\rd d&=
    \int_{d_{i-1/2}}^{d_{max}}g(d')n(d')\left(\int_{d_{i-1/2}}^{d'}\beta(d|d')\rd d\right)\rd d'
    \\&=
    \sum_{m=i}^{N}\sum_{j=0}^2g(d_j^m)w_j^m\left(\int_{d_{i-1/2}}^{d_j^m}d^k\beta(d|d_j^m)\rd d\right)
    \end{split}
    \end{equation}
    Therefore
    \begin{equation}
    \frac{\p m_k^i}{\p t}=\sum_{m=i}^{N}\sum_{j=0}^2g(d_j^m)w_j^m\left(\int_{d_{i-1/2}}^{d_j^m}d^k\beta(d|d_j^m)\rd d\right)-\sum^2_{j=0} g(d_j^i)w_j^i(d_j^i)^k
    \end{equation}

  • dpm 的颗粒出口边界设置问题

    已锁定 Fluent
    4
    0 赞同
    4 帖子
    7k 浏览
    李东岳

    防止争论主题已锁定

  • 当量比的设置

    Algorithm
    2
    0 赞同
    2 帖子
    3k 浏览
    liujunCFDL

    @liujunCFD Snipaste_2021-03-04_11-27-23.png

  • github与Gmail这俩成了冤家咋整?

    CFD彩虹条
    3
    0 赞同
    3 帖子
    5k 浏览
    西湖冷月西

    @bestucan 不太懂这个,就是用google浏览器打开网页,之前都没问题,最近突然出现这种打不开的情况。:136:

  • 0 赞同
    1 帖子
    2k 浏览

    HTML文件,内容如下

    <div component="composer" class="composer<!-- IF resizable --> resizable<!-- ENDIF resizable --><!-- IF !isTopicOrMain --> reply<!-- ENDIF !isTopicOrMain -->"> <div class="composer-container"> <nav class="navbar navbar-fixed-top mobile-navbar hidden-md hidden-lg"> <div class="btn-group"> <button class="btn btn-sm btn-primary composer-discard" data-action="discard" tabindex="-1"><i class="fa fa-times"></i></button> <button class="btn btn-sm btn-primary composer-minimize" data-action="minimize" tabindex="-1"><i class="fa fa-minus"></i></button> </div> <!-- IF isTopic --> <div class="category-name-container"> <span class="category-name"></span> <i class="fa fa-sort"></i> </div> <!-- ENDIF isTopic --> <!-- IF !isTopicOrMain --> <h4 class="title">[[topic:composer.replying_to, "{title}"]]</h4> <!-- ENDIF !isTopicOrMain --> <div class="btn-group"> <button class="btn btn-sm btn-primary composer-submit" data-action="post" tabindex="-1"><i class="fa fa-chevron-right"></i></button> </div> </nav> <div class="row title-container"> <!-- IF showHandleInput --> <div data-component="composer/handle"> <input class="handle form-control" type="text" tabindex="1" placeholder="[[topic:composer.handle_placeholder]]" value="{handle}" /> </div> <!-- ENDIF showHandleInput --> <div data-component="composer/title"> <!-- IF isTopicOrMain --> <input class="title form-control" type="text" tabindex="1" placeholder="[[topic:composer.title_placeholder]]" value="{title}"/> <!-- ELSE --> <span class="title form-control">[[topic:composer.replying_to, "{title}"]]</span> <!-- ENDIF isTopicOrMain --> <ul class="dropdown-menu quick-search-results hidden"> {{{each posts}}} <li> <a href="{config.relative_path}/post/{posts.pid}"> {buildAvatar(posts.user, "sm", true)} <span class="quick-search-title">{posts.topic.title}</span> <br/> <p class="snippet"> {posts.snippet} </p> <small class="post-info pull-right"> <span class="fa-stack" style="{function.generateCategoryBackground, posts.category}"><i style="color:{posts.category.color};" class="fa {posts.category.icon} fa-stack-1x"></i></span> {posts.category.name} &bull; <span class="timeago" title="{posts.timestampISO}"></span> </small> </a> </li> <!-- IF !@last --> <li role="separator" class="divider"></li> <!-- ENDIF --> {{{end}}} <!-- IF multiplePages --> <li class="text-center"> <a href="{url}"> [[search:see-more-results, {matchCount}]] </a> </li> <!-- ENDIF multiplePages --> </ul> </div> <!-- IF isTopic --> <div class="category-list-container hidden-sm hidden-xs"></div> <!-- ENDIF isTopic --> <div class="pull-right draft-icon hidden-xs hidden-sm"></div> <div class="btn-group pull-right action-bar hidden-sm hidden-xs"> <button class="btn btn-default composer-discard" data-action="discard" tabindex="-1"><i class="fa fa-times"></i> [[topic:composer.discard]]</button> <button class="btn btn-primary composer-submit" data-action="post" tabindex="6"><i class="fa fa-check"></i> [[topic:composer.submit]]</button> </div> </div> <div class="category-tag-row"> <div class="btn-toolbar formatting-bar"> <ul class="formatting-group"> <!-- BEGIN formatting --> <!-- IF formatting.spacer --> <li class="spacer"></li> <!-- ELSE --> <!-- IF !formatting.mobile --> <li tabindex="-1" data-format="{formatting.name}" title="{formatting.title}"><i class="{formatting.className}"></i></li> <!-- ENDIF !formatting.mobile --> <!-- ENDIF formatting.spacer --> <!-- END formatting --> <!--[if gte IE 9]><!--> <!-- IF privileges.upload:post:image --> <li class="img-upload-btn hide" data-format="picture" tabindex="-1" title="[[modules:composer.upload-picture]]"> <i class="fa fa-file-image-o"></i> </li> <!-- ENDIF privileges.upload:post:image --> <!-- IF privileges.upload:post:file --> <li class="file-upload-btn hide" data-format="upload" tabindex="-1" title="[[modules:composer.upload-file]]"> <span class="fa-stack"> <i class="fa fa-file-o fa-stack-1x"></i> <i class="fa fa-arrow-up fa-stack-1x"></i> </span> </li> <!-- ENDIF privileges.upload:post:file --> <!--<![endif]--> <!-- IF allowTopicsThumbnail --> <li tabindex="-1"> <i class="fa fa-th-large topic-thumb-btn topic-thumb-toggle-btn hide" title="[[topic:composer.thumb_title]]"></i> </li> <div class="topic-thumb-container center-block hide"> <form id="thumbForm" method="post" class="topic-thumb-form form-inline" enctype="multipart/form-data"> <img class="topic-thumb-preview"></img> <div class="form-group"> <label for="topic-thumb-url">[[topic:composer.thumb_url_label]]</label> <input type="text" id="topic-thumb-url" class="form-control" placeholder="[[topic:composer.thumb_url_placeholder]]" /> </div> <div class="form-group"> <label for="topic-thumb-file">[[topic:composer.thumb_file_label]]</label> <input type="file" id="topic-thumb-file" class="form-control" /> </div> <div class="form-group topic-thumb-ctrl"> <i class="fa fa-spinner fa-spin hide topic-thumb-spinner" title="[[topic:composer.uploading]]"></i> <i class="fa fa-times topic-thumb-btn hide topic-thumb-clear-btn" title="[[topic:composer.thumb_remove]]"></i> </div> </form> </div> <!-- ENDIF allowTopicsThumbnail --> <form id="fileForm" method="post" enctype="multipart/form-data"> <!--[if gte IE 9]><!--> <input type="file" id="files" name="files[]" multiple class="gte-ie9 hide"/> <!--<![endif]--> <!--[if lt IE 9]> <input type="file" id="files" name="files[]" class="lt-ie9 hide" value="Upload"/> <![endif]--> </form> </ul> </div> </div> <div class="row write-preview-container"> <div class="write-container"> <div class="help-text"> <span class="help hidden">[[modules:composer.compose]] <i class="fa fa-question-circle"></i></span> <span class="toggle-preview hide">[[modules:composer.show_preview]]</span> </div> <div class="pull-right draft-icon hidden-md hidden-lg"></div> <textarea class="write" tabindex="4"></textarea> </div> <div class="hidden-sm hidden-xs preview-container"> <div class="help-text"> <span class="toggle-preview">[[modules:composer.hide_preview]]</span> </div> <div class="preview well"></div> </div> </div> <!-- IF isTopicOrMain --> <div class="tag-row"> <div class="tags-container"> <div class="btn-group dropup <!-- IF !tagWhitelist.length -->hidden<!-- ENDIF !tagWhitelist.length -->" component="composer/tag/dropdown"> <button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button"> <span class="visible-sm-inline visible-md-inline visible-lg-inline"><i class="fa fa-tags"></i></span> <span class="caret"></span> </button> <ul class="dropdown-menu"> <!-- BEGIN tagWhitelist --> <li data-tag="@value"><a href="#">@value</a></li> <!-- END tagWhitelist --> </ul> </div> <input class="tags" type="text" class="form-control" placeholder="[[tags:enter_tags_here, {minimumTagLength}, {maximumTagLength}]]" tabindex="5"/> </div> </div> <!-- ENDIF isTopicOrMain --> <!-- IF isTopic --> <ul class="category-selector visible-xs visible-sm"> </ul> <!-- ENDIF isTopic --> <div class="imagedrop"><div>[[topic:composer.drag_and_drop_images]]</div></div> <div class="resizer"><div class="trigger text-center"><i class="fa"></i></div></div> </div> </div>
  • 0 赞同
    5 帖子
    8k 浏览

    @zhangxc0223
    Hi
    因为并没有做deterministic的模拟,所以code也基本没看过。。
    stochastic collision 在计算collision probablity的时候是有限制的,具体你可以看一下O‘roucke的论文。具体是怎么定义的,怎么得到一个non-dimensional collision probablity的,还有如何决定这两个parcel发生了碰撞。

    虽然碰撞在这个instantaneously 随机的,但是在统计学上,比如你有1M次碰撞的话,总的碰撞的结果就是相似的。
    这也就是为什么stochastic碰撞会比deterministic相对来说’便宜'的原因,通过统计学的方法达到相似的碰撞结果,但是不需要追踪所有的parcel。

    lagnrangian maxCo 存在的意义,个人认为,在一定程度上可以理解为再一次离散了每个euler time step,所以maxCo一定程度上决定了每个lagrangian time step的大小,和Euler 的Co 定义是相似的。

    碰撞是不会被错过的,因为deterministic理论上来说是追踪所有的parcel,所以下一步这个parcel会在哪,走的路径应该也是计算的,所以不会存在错过的,stochastic collision 会计算两个parcel的碰撞概率,当概率很高的时候,也是不会错过的,而且就算是这次错过了,在茫茫parcel海中,总会碰到的。。统计学上是不会错过的

    以上仅为个人理解

  • 0 赞同
    9 帖子
    8k 浏览
    A

    @yanoo 考虑一下看是不是编译器和依赖项的问题? OpenFOAM-8竟然也会出问题非常奇怪诶...

  • Arbitrary-Lagrangian-Eulerian (ALE) 是什么?

    Algorithm
    3
    0 赞同
    3 帖子
    6k 浏览
    小狗狗

    参考文献
    Demirdzic, I.; Peric, M., Space conservation law in finite volume calculations of fluid flow.

  • CFD中文网 定位与规范

    已固定 公告
    101
    0 赞同
    101 帖子
    628k 浏览
    H

    我写 固我在,嘿嘿

  • 说说关于dpm系统的半透膜的问题

    Fluent
    3
    0 赞同
    3 帖子
    5k 浏览
    L

    因为时间比较紧,叙述不是很明了,现在按照李老师的建议,加上标点。

    一般dpm的碰撞判断基本是BC宏,这个不多说。

    碰撞算法fluent未透露,但是在ANSYS博客中间有一部分提及了,是采用了颗粒轨迹线与面相交的办法。这个办法是属于碰撞检测算法 line-surface。 这个方法非常的复杂。同时在CFD-ONLINE中间,也有人讨论过这个问题。 从我观点,这点Fluent的保密算法不可能是采用最原始的intersection算法;如果是的话,那么巨量的颗粒沉降计算很明显没有fluent这样的高效。

    好了,这是说了题外话,但是也跟接下来的相关。

    也就是当你不利用BC宏的时候,你需要写这样一个算法(line-surface)来判断 dpm 的截留。而这显然是在半透处理上是较为简单的。因为这样的话,你只要一个在某一个面上,甚至是一个解析几何的构成虚拟面上,就可以构造你的半透面。只要颗粒符合你的条件。 当然这种复杂在于你的颗粒将在第几步碰撞? 他能够在途中的每个网格的步数是多少?(假设颗粒在第一次进入一个cell内被捕获,这一般是现实的,因为你基本上只要处理碰撞表面网格的数据)。 那么又有一个很关键的问题: 你需要重新编制一个颗粒更新步的计算。 假设你是最简单的欧拉蛙跳,也显然你需要了解一个parcel的合外力,所以你必须了解整个dpm.h和其他几个.h的头文件。 那么,你将可以直接解决这个半透的问题。

    而如果你不写trap算法。那么很明显,你需要使用fluent所谓的DPM体系的BC宏。这个宏在颗粒碰撞你挂载的壁面的时候执行,记住这个宏执行将中断颗粒时间步。 而他本身是不出网格的。 因为出网格需要赋值新的P0值。(P0属于particle结构体而p属于tracked particle )。也就是说,当颗粒碰到这个面的时候,碰撞数据被计算,碰撞点被获取,颗粒必须更新他的P_v0值,而particle依然是在当前cell,且颗粒的fate只有active, end, abort, escape 四种。 你的trap可以使用abort,但是他的显示数值决于于p->gvtp, 如果要他在head中显示正常, 你还得做一番处理。

    最要的问题是,颗粒将在当前cell被分割,但是这个这个新的P0值依然是在当前cell内。 那么就是说,这些颗粒继续会被这个BC执行。 最终的结果是所有颗粒都被在封闭在这个cell内来回碰壁, 截留, 最后造成完全的incomplete。
    那么如何半透? 现在已经说明了在fluent实现这个半透可能的方法。

    设想一个现实的条件。颗粒一部分会被反弹(他的vo重新被设置) 一部分被捕获(path_abort) 一部分透过(记住你的时间步已经被分割, 而透过是不分割时间步的)。但就是这样最简单的日常物理现象,因为时间步被分割,碰撞算法被黑盒子,依然是十分困难的。(并且fluent的更新过程并不是属于经典的更新过程,时间步的更新会被更小的切分,根据你的设定,并且每一个切分步,你的UPDATA_SCALAR宏都会被执行。也就是说一个理论上的碰撞算法,很可能并不具备真正的可实现性。)

  • 网格局部加密; SnappyHexMesh; 复杂几何体

    Meshy
    7
    0 赞同
    7 帖子
    12k 浏览
    D

    明白了,感谢各位的回复