可以使用两个不同的建模程序来确认彼此的结果吗?


8

电脑模型

计算机建模用于各种工程领域。我专门考虑结构分析或有限元分析(FEA)。有时使用模型来加快可以手工完成的重复计算。有时使用模型来执行不容易甚至无法手动进行的计算。

检查

有几种标准方法可以检查计算机模型的结果。

  • 运行验证模型并确认结果与先前计算的答案匹配。
  • 运行可以通过手工计算检查的简单模型。
  • 测试物理模型。

上面的前两种检查方法的问题在于它们要么只检查特定情况,要么仅检查程序的简单部分。

对于完整尺寸的模型,物理模型方法可能会很昂贵,并且比例模型可能不会总是提供与完整尺寸相同的结果。

这在可以检查的结果上留下了空白。对于任何复杂的模型,没有简单的方法来检查程序的结果是否正确。工程师必须相信软件可以从模型中产生正确的结果。

比较检查

该模型可以输入到两个不同的程序(由不同的公司制作)中。假设如果两个模型的结果足够相似,则结果对于所使用的模型应该是正确的。这不会在创建原始模型时捕获任何错误,但是会捕获软件实现中的错误。

  • 可以使用两个单独的程序来检查模型结果的“正确性”吗?
  • 使用这种在两个单独程序中比较模型的方法是否可以在结果上提供与其他任何检查方法相同的保证水平?
  • 使用此过程可能有什么缺点?

“航天飞机”使用5架飞行计算机进入了轨道。其中有4个运行相同的程序,彼此检查了结果,彼此同意并保持理智,并投票否决了任何疯狂的成员。第五台计算机运行了完全不同的程序,该程序由不同的团队独立编写。'以防万一'。我不知道是否需要。
罗素·麦克马洪

两种计算机程序都可能以相同的方式出错,所以我拒绝。这不是一个好习惯。最好将数值解与通过解析,经验或公开研究得出的解进行比较。
保罗

@Paul是的,通常是这样检查事情的,但这仅表明该程序可以解决问题。您可以假设使用相同代码路径的其他配置是否也正确,但是总是会出现边缘情况。使用两个独立程序所包含的假设是,程序员在不同的情况下会出错。
hazzey

Answers:


7

是的,征求第二意见可能会很有用。这是在天气预报中按常规方式进行的,确切的解决方案尚不清楚,并且对如何应用各种因素有一些判断。

诸如有限元网格应力分析之类的摆动空间将减少,因为无论由谁编写软件,用于求解该问题的迭代方程都基本相同。真正的问题不是解决网格问题,而是首先解决创建足够好的网格问题。

因此,获得多种意见的一种方法是更改​​网格参数。希望您仍然能得到几乎相同的答案。如果您将网格划分为2x并得到明显不同的答案,那么就可以很好地了解原始网格不够细致。然后,您也无法确定下一个网格是否足够详细,而不必进行更详细的划分并获得相同的答案。

当然,如今,网格生成本身已具有一定程度的自动化和适应性。这不再只是求解网格的物理原理,而是包括有关何时以及如何细分的启发式方法。在这方面不同的软件可能会有所不同,因此以相同的初始数据运行两个不同的程序会很有用。


6

我是从开发仿真软件的工程师的角度编写的。

我认为所描述的做法是不好的,并且我建议您不要使用两种不同的软件来“确认”结果。

通常,除了它们的相似性之外,不能使用两种不同的建模软件来确认很多其他内容。两种软件都可以轻易地得到两个相似但错误的答案,尤其是当它们使用相似的模型时。我可以想到至少有一个确实是这样的情况,而Trevor Archibald提到了另一个。两个使用不同建模技术得到相似结果的软件会给我留下深刻的印象。

该主题称为计算机模型的验证和确认,并且有大量文献。我将提供基本的草图。验证是将模型与“精确”解决方案(可能是手工计算或更复杂)进行比较,即检查软件的数学运算。确切解决方案背后的假设可能是错误的,但至少您要确保软件正确地处理数学部分。验证是将模型与实验进行比较。这使您可以检查所使用的模型是否正确,这是验证无法为您完成的工作。

上面的前两种检查方法的问题在于它们要么只检查特定情况,要么仅检查程序的简单部分。

这是软件开发人员和用户面临的实际问题。有比其他两种软件更好的处理方法。

问题是您永远无法测试所有可能的情况。您的软件可能会通过案例A,但是案例A不涉及物理X,Y或Z,这使您完全不符合案例B。因此,您想要的是大量检查,至少涵盖所有方面您要检查的基本功能。许多软件都有“ V&V套件”,基本上就是这样。

在验证方面,有很多选择。您可以针对不同情况生成新的精确解决方案。有时仅此一项就足够了。但是,您已经注意到,通常只能在非常简单的情况下进行手工操作。对于更一般的情况,您可以使用一种称为制造解决方案的方法(Google it)。这需要编程,并且可能会变得凌乱,但可以让您基本上测试您能想到的任何东西。(顺便说一下,可以通过MASA之类的库来处理混乱部分。)

另外,我想指出的是,与Olin Lathrop所建议的相反,通过制造解决方案的方法,您可以生成用于测试目的的精确解决方案。从严格意义上讲,它们不是“精确的”,因为它们不完全满足软件未经修改即可求解的方程式。但是它们满足非常接近的方程式,并且为了使测试严格而考虑了差异。目前,这种技术还不是很流行,但是已经被用来测试以前认为很难测试的东西。

在验证方面,您可以查找更多实验数据或运行自己的实验。


4

我认为总体上这是一个好的做法。

通过使用两种不同的软件,您可能能够避免两种错误​​:1)来自不正确软件的错误(不应忽略),2)来自用户缺乏软件习惯的错误(隐藏选项,默认设置...)。

如果软件足够不同,则两次获得相同错误结果的几率很低。

但是,通过这种方式无法避免由于错误的建模选择而导致的错误。因此,我要说的主要缺点是过于信任结果,因为它们已经被两个软件确认。

我确实认为,掌握一种软件,运行所有类型的测试用例(例如,与学术成果进行比较)比使用多种软件并且仅具有一般知识要好。此外,我认为最好了解FEM分析的基础知识,并且仅使用两个“一键运行”软件是一个坏习惯,因为用户可能会重现建模错误。

PS:我正在写电磁/热有限元分析用户(没有其他领域)。


2

从设计工程师的角度回答

将一个程序的结果与另一个程序的结果进行比较,可以使您确定结果是否正确。不可能给您100%的确定性,但是那样的确定性水平很难实现。

我看到的一个大问题是能够将模型从一种软件转移到另一种软件。尽管大多数软件公司(由于BIM)正在改进模型的导入/导出,但我不希望模型的所有功能都可以导出。几何图形相对易于导入/导出,因为交换文件仅需要包含坐标。但是,例如,成员最终版本可能由不同的软件以非常不同的方式存储,因此,除非/直到同意通用文件交换格式,否则我认为需要大量的精力才能完全重建第二个软件程序中的模型。

根据我自己的经验,结果错误很可能是由于数据输入错误或假设不正确所致,而不是由于编写不良的软件所致。因此,使用独立软件验证答案的时间和精力可能不是您的时间的好用。

从软件工程师的角度回答

不能将软件与其他软件进行对比来证明您的软件正确。最好找到可以用来验证软件给出正确答案的已发布数据/结果。想象一下一个销售会议,其中一家软件公司试图将其软件出售给一家工程公司:

工程师:我们怎么知道您的软件是正确的?

软件销售员:嗯,我们根据竞争对手的软件进行了检查,并得到了相同的答案。

工程师:您是说竞争对手比您强得多,他的软件是衡量软件的标准?听起来我们应该改为购买他的软件!


1
我希望即使在实验室中,软件工程师也不会宣传该软件已与另一个程序进行了比较。我还认为,软件工程师将不胜感激,可能存在一些尚未完全包含在单元测试中的极端情况。
hazzey

2

我同意这里的其他答案,这通常是一个好主意,将有助于确保仿真结果的准确性。就与其他验证方法相比有多好,我想说,如果可行的话,先前已知的结果和物理测试都是更好的选择,但是如果模型足够复杂,手工计算可能需要过分简化。

我真正要指出的是,最后一点还没有解决:这种做法的潜在缺点。使用两个不同的FEA程序包可能会引起一个程序包的特殊性,从而导致错误,前提是您可以确定哪个分析是正确的,哪个是不正确的。但是,无论采用何种方法或实施方式,FEA总体上都存在一些一般性限制。导致模型奇异的尖角和其他应力集中器不会随封装的不同而发生很大变化,而这些始终都是薄弱环节。这是需要工程知识和直觉的地方。

我已经对我知道可以轻松承受某些应力的零件进行了仿真,该模型显示出内部应力是屈服强度的10倍。这显然是不正确的,因为它采用渐开线样条线模式,而FEA软件则不喜欢这种方式。

最后,显而易见的是,更改软件并不能消除用户错误。如果您在模型或参数中犯了错误,则无论您使用什么分析方法,该错误都会使您不知所措。


我不知道什么是“渐开线样条线模式”,因此此注释可能不相关,但是如果您以10倍的屈服获得内应力,也许可以使用非线性材料进行建模?那将消除极端的局部应力集中。
AndyT 2015年

在这一点上,我不记得是否使用线弹性材料响应或更基本的东西,但是我不希望仿真永远运行,这对我们来说是FEA的早期使用。它本质上是对现有零件的重新设计,我们知道该零件的失效模式,并且我们建立模型的方式对花键施加了一些严格的约束(渐开线花键是大多数齿轮齿的形状)。如果我要进行更全面的分析,则可以尝试进行修复,但是与现有零件相比,这更能证明概念。
Trevor Archibald 2015年

1

边界条件和建模技术将极大地影响结果。我建议运行简化/理想化版本(如平面或轴对称)和完整实体版本,然后将两者进行比较。

两种不同的FEA软件的问题在于,求解器在很大程度上将是相同的。观察到的差异可能来自于不同的收敛准则,或者来自于如何应用边界条件的不同假设。您不是在检查模型,而是每个求解器知道它的能力都可以解决。

我认为,FEA结果应该首先通过常识和人工计算进行验证,然后通过相似但不同的模型(例如,用实体代替梁)进行验证,最后通过物理测试来验证零件是否在FEA预测的位置方式上失败。的,因为它是由制造过程中,材料的变化和应力resudial怕得罪人的一部分将失败是比较困难的。


并非所有的工程学科都能够进行物理破坏测试。在土木和结构工程中,绝大多数项目都在建造一次性的独特物品-仅建造一个完整的单独物品以对其进行破坏测试将是非常昂贵的!
AndyT

点了。即使通过样品或量具,也要通过测试验证FEA结果仍然是一个好主意。
ja72 2015年

我能理解您的观点……但是在桥梁设计的六年中,我从未听说过要对桥梁的比例模型进行物理测试。
AndyT 2015年

那么,那我应该避免哪些桥梁?开玩笑的 因此,必须有足够的安全裕度来说明未使用FEA建模的内容。没有100%准确的FEA模型这样的东西。
ja72 2015年

确实,我们到处都有安全因素!英国标准BS5400(现已失效)包括1.1系数,称为gammaf3,“该系数考虑到了荷载影响的不准确评估,结构中不可预料的应力分布以及建筑中实现的尺寸精度变化。” 也就是说,无论您的有限元分析告诉您的压力是多少,都应乘以1.1以防万一这是一个非保守值。
AndyT
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.