简单说来。一个好的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软件,容易么?
德国若排除华为将会面临数十亿欧元损失
英伟达RTX 4090显卡全网断货,库存被扫光
oppor11什么时候上市最新消息:oppor11即将发布,内存依然使用Emmc5.1,骁龙660所致?
TMS320LF2407的自动避障小车设计
微控制器电路中的晶振电路
自己写一个CFD软件很容易吗?
基于VHDL语言和FPGA芯片实现乒乓球比赛游戏机的设计与仿真
王思聪被怼了!全球第一台SONY Z9D电视机居然不是他的
为什么低代码平台都不采用原生代码的方式
内存超频有什么用 实测超频对游戏的影响
简述TransCAD的交通可达性分析功能简介
adc0804工作原理
基于RFID智能手机的3G/4G功率放大器
快恢复二极管,快恢复二极管是什么意思
橙子自动化完成由GGV领投的近亿元B轮融资
RX140工程师手册 | 一册在手,“天下”我有!
大唐移动开发出边缘计算解决方案为5G垂直业务创新提供了机遇
基于虚拟仪器的多点随机振动试验控制系统的设计
6P9P并联推挽放大的胆功放电路的工作原理
闪存阵列如何处理“写断崖”和“垃圾回收”