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

    文章

    82

    浏览量

    18022
  • cfd软件
    +关注

    关注

    0

    文章

    1

    浏览量

    5485
收藏 人收藏

    评论

    相关推荐

    基于CFD 的汽车外流场数值模拟的发展概述

    正朝全自动划分网格、高速高精度的计算方面发展, 而国内对CFD 的研究发展还处于初级水平。归纳了可用于汽车外流场数值模拟的方法及特点, 最后指出了汽车外流场数值模拟目前面临的主要问题和发展趋势。关键词: 计算流体力学; 汽车
    发表于 03-18 22:20

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

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

    几个自己的小软件(搞着玩的)

    ` 本帖最后由 xjchw 于 2011-12-13 00:24 编辑 几个自己的小软件自动化设备的订做,变频器、数控机床、PLC等自动化设备的维修,编写Windows程序 http
    发表于 12-13 00:23

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

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

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

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

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

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

    CPLD奇怪的问题

    本帖最后由 爱苹果的猫 于 2013-11-23 09:47 编辑 用CPLD做编码器的解码,用的是状态机的485通讯,遇到奇怪的问题,
    发表于 11-22 16:03

    如何自己无线网络协议

    各位大神,有谁知道这个怎么弄,教教我,自己无线网络协议,怎么做?需要学习什么知识?
    发表于 10-01 13:21

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

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

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

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

    定制toolbars容易转移

    初来论坛,发帖做点小贡献,介绍实用的方法,完全自己摸索的。AD 默认的工具条太占用空间,反而把图纸挤得没地方,里面有些功能也很少用。我从protel 99就自己定制工具条,
    发表于 03-05 00:34

    用CH573的SPI0驱动LCD,屏的时候容易死掉怎么解决?

    问题1,我用CH573的SPI0驱动LCD,发现屏的时候容易死掉,在刷屏时临时关闭了UART和时钟中断,情况有改善,但是还是会偶偶出现,有什么好的办法,刷屏函数前加了__attribute__((section(".high
    发表于 08-12 06:15

    CFD软件开发的三个阶段

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

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

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

    楷登电子推Cadence® Fidelity™ CFD软件平台

    中国上海,2022年4月21日——楷登电子(美国 Cadence 公司,NASDAQ:CDNS)今日宣布推出 Cadence® Fidelity™ CFD 软件平台,为多物理场仿真的性能和准确度开创新时代。
    的头像 发表于 04-21 11:36 2006次阅读