全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 物联网 >

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

时间:2023-05-18 10:21

人气:

作者:admin

标签: 软件  自己    很容  一个  CFD 

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

简单说来。一个好的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软件,容易么?

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信