本帖最后由 snowwave02 于 2021-4-27 06:57 编辑
===概述===
对任何一个采用计算机来进行仿真分析的任务来说,结果的正确性是首先要解决的问题。(1) 一方面确保分析设置和实际相符,模型简化合理,才可能结果和实际相符,和以往的经验不违背。 (2) 另一方面软件需要确保用户在参数设置正常的情况下,得到的分析结果是正确的,譬如固支边界得到固支的结果,简支边界得到简支的结果。 第一个问题由用户确定,第二个得由软件开发者决定。本文讨论的是第二个问题,软件开发者如何确保自身软件的正确性。如果是一个商用软件公司,只需要测试不同算例,测试结果和标准结果相比正确就行了,软件发布后自然有用户会用,这是一个品牌的积累效应。但如果是自研程序,除了就要做大量的算例正确性验证工作外,还必须和流行的商业软件结果对比才能应用到实际工程中,因为现在所有人都在用商业软件,商业软件已经成为一种标准,我们只能和标准去对比。
前段时间开发了一个自研求解器,软件的功能性的问题是很容易发现和解决的,但正确性却很难定位问题出在什么地方,也做了大量的正确性验证工作,现在分享一下当时的验证工作,希望对你有所帮助。
===1.分片试验验证===
单元一致性要求当网格尺寸h变小时,结果接近正确解。此时,每个单元就是常应力状态。分片试验(Patch Test)是指对某些简单的例子,构造常应力的工况,模拟网格足够小的情况,在该工况下得到的模拟值和理论值比较。如果一致,就表示当单元尺寸变小时,有限元也是能够收敛到精确解的。对比自研程序和Abaqus的结果,其实分片试验正确是完全没问题的。
===2.基本算例验证=== 按理论来说通过了分片试验就可以保证结果的正确性了,但工程应用上来说,分片试验仅仅作为一个普通考核算例比较合适,没法作为唯一的考核算例,原因有三个。 (1) 还有许多其它的实际问题需要考核,譬如,收敛速度、三维空间的话坐标系选取是否有问题、坐标变换是否有问题、非线性、运算速度等等。 (2) 分片试验有误导,明明是通不过的,但可能选择的分片试验凑巧通过了。 (3) 有些情况不通过分片试验,那么用的时候如果能避免这些情况的发生,依然能确保结果的正确性,譬如沙漏时如果约束够的话依然可以用。 第2、第3点就是“欲练神功,必先自宫;如不自宫,亦能成功;即使自宫,未必成功”。所以,分片试验只能作为一个普通考核算例,需要结合其它算例一起考核才能真正在工厂上应用。可发现自研程序结果和Abaqus部分算例结果只有计算机精度差异,而部分由于Abaqus和iSolver所采用的单元算法存在差异,在网格细化后结果可以更加接近。
|