关于软件比较
【资料图】
CFD软件计算效率的比较涉及的问题颇多,因为影响计算效率的因素实在是太多了,比如说计算机硬件(CPU、内存、硬盘等)、软件自身的求解算法、使用者对于软件的应用水平等,都会对计算效率产生影响。
软件对比必须满足的必要条件。
首先计算环境必须保持一致。
OpenFOAM是运行于Linux环境下的,那么如果要比较的话,Fluent也应当在相同操作平台下运行才算数。据了解,小规模(200万网格以下)计算,Linux计算效率要略高于Windows环境,但基本没太大区别。然而当网格数量过千万后,Linux下Fluent计算速度会明显高于Windows环境下,有时候甚至能够达到好几倍,比如在有频繁的文件读写操作时就感觉特别明显。另外,就算在Windows环境下,Fluent利用TUI界面计算与GUI界面计算,计算速度差距也极其明显。
计算网格必须中立。
之前尝试着比较STAR CCM+和Fluent,结果发现如果用ICEM CFD生成网格,计算结果(计算速度、收敛性等方面)明显地偏向Fluent,而使用STAR CCM+产生网格,则计算结果明显有利于STAR CCM+。在使用OpenFOAM的时候一样存在这种状况,用blockMesh和snappyHexMesh生成的网格最适配OpenFOAM,而使用导入Fluent的msh和cas方式,对OpenFOAM都没什么优势。
并行计算的问题。
受并行算法的影响,并行计算对于小规模问题并无任何好处。现在OpenFOAM多使用OpenMPI作为并行库(也有用其他商业并行库的),而Fluent中除了OpenMPI(默认使用)外,还有Microsoft和intel的并行库,这里不好去评价不同并行库运行效率的差异,但既然是比较软件的计算效率,那至少应该采用相同的并行库进行比较。或者干脆全都用串行计算。然而Fluent已经不支持串行计算了。OpenFOAM在CPU数量非常多的时候(>2000)并行加速比会变得非常差,需要在算法级别上改造,Fluent官方数据还是很有竞争力的。
软件使用熟练程度的问题。
软件参数设置会极大的影响到计算效率,这个不用多解释。
计算效率评价指标的问题。
是以单步迭代时间作为评价指标还是以达到收敛需要的总时间作为评价指标?OpenFOAM中只有SIMPLE系算法,而Fluent中有耦合算法。用过的人都知道耦合算法的收敛能力秒杀SIMPLE系算法十条街,但是耦合算法单步计算时间可能是SIMPLE算法的好几倍,内存消耗大概在1.5倍左右,这怎么评价呢?单步计算速度评价Coupled算法毫无竞争力,但是收敛速度快,达到收敛所需要的时间反而更少。OpenFOAM的SIMPLE系算法算到收敛比较难调(可能是我使用不太熟练的原因),而Fluent的耦合算法几乎不需要调整什么计算参数。
拿开源软件的默认求解器去与商业软件火拼求解效率,本身就是一件不太公平的事情。并不是说开源软件的效率就比商业软件差,但是商业软件的最大卖点无非就是计算效率和鲁棒性。这两点如果都火拼不过未经专门针对这两点经过强化的开源软件,那商业软件还不如给开源软件开发外壳呢。
标签: