0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

自己写一个CFD软件很容易吗?

冬至子 来源:CFD界 作者:从 2023-05-18 10:21 次阅读

简单说来。一个好的CFD软件,或者说一个能往外推的CFD软件,应该经过千锤百炼!

这种千锤百炼,对软件的编写、算法的植入的要求,是非常高的。

给你们举个例子,看看OpenFOAM这面怎么搞的。

最近在看化学反应。因为化学反应里面的雅克比矩阵一般是密集矩阵。因此求解一般都是直接算。就涉及到了LU分解啥的东西。

然后就看到一个有意思的东西。OpenFOAM-4.0曾经对LU直接求解做了代码上的改动。改动很少。带来了15%的性能提升。

**对于服务器来说,这15%的提成,可能是一代CPU的差异。**比如老的CPU可能是100秒。新的CPU跑85秒。

OpenFOAM-4之前的代码中的矩阵是定义了一个指向指针的指针。在4.0版本之后,只定义了一层指针。出发点是:

The row-start pointer array provided performance benefits on old computers but now that computation is often cache-miss limited the benefit of avoiding a integer multiply is more than offset by the addition memory access into a separately allocated array. With the new addressing scheme LUsolve is 15% faster.

在老版本的代码中,矩阵元素的访问不需要计算。OpenFOAM认为这对于比较老的计算机是有效的。

图片

但是都2023年了,现在的服务器cache miss的现象很常见。之前在定义比较复杂的指针的时候,可以避免计算来寻址,但是这种避免计算寻址带来的好处,被内存访问抵消掉了。

因此OpenFOAM-4之后,把这种指向指针的指针给取消了。不这么搞了。要寻址,就相乘。

简直是人才。这OpenFOAM简直就是一个大的知识库。 知识太多了。

再看下面这个。之前OpenFOAM里面有一个操作,就是fvc & 这一行。后来全部改成了flux()函数。

那为啥这么改呢?

图片

OpenFOAM说通过dotInterpolate()函数可以减少内存占用。

图片

在这里我不会做详细的介绍了。不做OpenFOAM的老铁们早就懵掉了。

总之,就是简单举例。类似的编程/算法处理。OpenFOAM这30多年一直在更新。

是的,就是为了提高速度、增加稳定性,OpenFOAM搞了30多年。

我们说要做一个CFD软件。不是做个教育版本。而是要写出来一个:工业界能用的CFD软件

当然了。我看到过很多教育版本的CFD软件。人家直接就说了。我们这个CFD软件主要就是教育意义。

教育版本与工程应用那个区别是非常大的。教育版本的CFD软件应该是硕士生课程的大作业。

你们觉得,写出来一个可以用在工业界的CFD软件,容易么?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CFD
    CFD
    +关注

    关注

    1

    文章

    114

    浏览量

    18395
  • cfd软件
    +关注

    关注

    0

    文章

    3

    浏览量

    5508
收藏 人收藏

    评论

    相关推荐

    基于CFD领域的GPU加速设计解决方案

    CFD始终向处理更高精确度、更复杂的几何结构方向发展。但现阶段,CFD软件应用于复杂流体问题方面还有待拓展,受到的阻碍主要源自以下三方面。
    的头像 发表于 03-27 12:18 8996次阅读

    计算流体力学(CFD)的通用软件

    计算流体力学(CFD)的通用软件摘要:对化学工程领域中的通用CFD(Computational Fluid Dynamics)模拟软件Phoenics,Flu—ent,CFX等的具体特
    发表于 03-18 22:24

    电源行业是容易被他人山寨的行业?

    在市场上买个产品,拆开来,记下所有元件,再抄下PCB,打上自己品牌,就成了自己产品,款好不容易做出来电源,被人这么抄就完了,请问这种情况
    发表于 12-06 17:13

    为什么我的AD软件容易死掉呢?

    我安装了Altium Designer (in AD13) ,为什么容易死了,有时候用右上角的叉关掉,直有运行,关不掉,但在FILE里面关掉,就下关掉了,有时候加元件库,也
    发表于 09-04 10:35

    自己常用的工具小软件,欢迎使用!

    自己常用的工具小软件,欢迎使用!因为做开发,有的时候经常会打开任务管理器,WORD,计算器等使用,这样
    发表于 11-08 09:03

    不懂技术的人不要对懂技术的人说这容易实现

    筹莫展。如果连我自己都做不好,我何必对那些人恼怒呢?   真正让我郁闷的不是他们预估的错误。问题在于他们竟然认为自己可以做出正确的估计。作为开发人员,我们经常会发现,在软件开发的问题上,
    发表于 11-12 17:55

    如果自己flashburn类似的软件,请问有参考资料可以提供吗?

    如果自己flashburn类似的软件,有参考资料可以提供吗?谢谢!
    发表于 08-01 07:24

    STC烧软件

    STC烧软件自己大学整理收集的文档等相关资料,大家有需要的,就下载吧。
    发表于 10-29 10:55 14次下载

    环路补偿容易

    环路补偿容易 有需要的看看,不收积分。
    发表于 11-20 17:05 0次下载

    CFD软件开发的三阶段

    本白皮书结合历史背景分析探讨了产品开发用商业 CFD 软件开发所经历的三阶段,并讨论和展望了未来开发所面临的挑战和机遇。
    发表于 09-11 14:53 11次下载
    <b class='flag-5'>CFD</b><b class='flag-5'>软件</b>开发的三<b class='flag-5'>个</b>阶段

    有51基础容易入门ARM是真的吗

    有51基础容易入门ARM是真的吗?从51到ARM,这路怎么走?
    的头像 发表于 03-01 16:55 6456次阅读

    如何会讲笑话的Python程序

    笑话从哪里来?自己肯定是不现实的。在这个“云”的时代,各种云都有,自然是不缺开放API的。下面用Python
    的头像 发表于 01-11 16:47 3064次阅读
    如何<b class='flag-5'>写</b><b class='flag-5'>一</b><b class='flag-5'>个</b>会讲笑话的Python程序

    如何Solidity智能合约

    想象下,你正在Solidity智能合约,其中属性可以被描述为类型或状态。换句话说,来
    发表于 09-05 11:17 2500次阅读

    非流体力学专业如何快速掌握CFD

    CFD基础入门如果之前学过流体力学、传热学、计算方法等课程,入门CFD是比较容易的。
    的头像 发表于 06-23 16:31 2108次阅读

    基础通用CFD软件开发的五难点

    答案非常简单:基础通用CFD工具研发是属于国家工业基础技术,代表了国家工业实力的重要环。从重要性上来说,类似于全民医保,国家电网等重要基础民生项目建设。同时它是
    的头像 发表于 12-08 20:33 2336次阅读