You are on page 1of 7

隐式与显式分析的区别

想象一下:你正在展示你的博士学位。在一次研讨会上发表关于稳定性的论文。一切顺利,终于到了提问时间!
突然有人问:“隐式和显式方法有什么区别?既然你在做静态稳定…你从来没听过这些术语!是啊…去过那里!现
在,我变得更聪明了,所以让我们仔细看看隐式和显式分析之间的区别

隐式和显式分析在时间增量的方法上有所不同。在隐式分析中,每个时间增量都必须收敛,但是您可以设置相当
长的时间增量。另一方面,显式不一定要收敛每个增量,但是要使解决方案精确,时间增量必须非常小。

这听起来很简单,对吧?除非你开始思考“我应该用哪个”或者“显式时间增量应该有多小”之类的问题。别担心,
我会掩护你的!

让我们开始吧!

动态处于最佳状态–隐含/明确!

您将使用隐式和显式求解器来解决动态问题。这意味着如果你在做静态分析,你就不需要知道这些东西。如果你
不确定静态分析和动态分析的区别,请首先阅读这篇文章——它会使事情更容易理解!

简而言之,动态分析:

动态分析解决涉及惯性效应的问题。当模型中的事物快速变化时(快速施加的载荷、冲击等),这些就会出
现。工程师通常称之为“非线性动力学”。

应该注意的是,工程师通常也称其他分析为“动态的”。处理振动的模态分析或强迫响应分析。有时这些
被称为“线性动态”,但当他们使用这样一个短语时,确定某人的意思通常是一个好主意。虽然“线性动
态”问题真的很有趣,但我不会在这里讨论这些问题。你可以通过这篇文章了解更多关于他们的信息!

第一件事,我真的觉得我必须强调的是,隐式和显式解决方案解决同样的问题!不要把它当成“不同的解决者”,
而是把它当成解决同一个问题的两种不同方式。

在许多情况下,您可以使用隐式和显式求解器,它们将产生相同的结果。我认为这是我们需要开始的地方!

动态分析是如何工作的?

这两种分析都在解决一个速度很重要的问题。这主要意味着负载施加得非常快。在这种情况下,您将总是及时“迭
代”您的负载。基本上,您将利用这段时间告诉求解器“发生了什么”以及负载如何变化。

首先,你必须定义负载是如何随时间变化的。通常使用图表来完成,如下图所示:
在非线性动力学分析中,时间有两个作用。首先,它允许你告
诉解算器,什么时候应该施加多少载荷。您只需用一个依赖于时间的图表来实现每个负载。其次…时间就是时间!
它告诉求解器事情进展得有多快!

假设您想要这样一个加载序列:

在静态分析中,这将是一个 3 个“步骤”的分析(在 NX Nastran


中,这些被称为子案例,但我认为 Abaqus 实际上使用了“步骤”作为一个名称,虽然不能肯定地回忆起这一点!
想法很简单,您必须在步骤 1 中施加 100kN 的负载,然后在步骤 2 中移除 50kN 的负载,并在步骤 3 中移除
50kN 的负载.没有办法将步骤 2 之后的负荷“平稳期”纳入分析,就省略了。逻辑很简单:负载不变=静态不变!

静态加载增量

如果问题是高度非线性的,负载将会“增加”。很少能一次性将“满负荷”应用到非线性分析中!通常,
求解器会应用。1kN 每个“增量”。这意味着在 100 次增量后,将应用步骤 1 的满负荷。这使得求解器更
容易收敛到正确的答案。

作为用户,您可以定义求解器应该使用多大的增量。还有一些算法可以在分析过程中修改负载增量。不同
的解算器想让你用不同的方式设置它。通常情况下,有限元分析软件包会为此使用载荷乘数。这意味着,
你可以说这样的话:“在每个增量应用额外的 0.01 的所有负载”。

厉害…但是让我们来看看动力系统,好吗?在动态分析中,您可以通过这样的载荷定义获得如上的载荷分布:
瞬间,你可以注意到一些事情:

没有台阶!这是因为在动态分析中你不会增加负载。你会增加时间!而且由于时间从零“不断”到规定值,
你可以“一步”递增。

时间至关重要!说到负载的值,上面的图表是一样的。但这不是同一个动态案例!右边的图表加载速度快
了 1000 倍!这不是你在动态分析中可以忽略的!

一般来说,当你想解决一个动态问题时,你要求你的求解器做一件事。你让它计算一系列的时间增量,看看模型
中发生了什么。在每一个增量中,时间都会略微增加。这当然也会改变模型中的负载。这就是为什么你需要一个
依赖时间的图表来加载。所以解算器“知道”在哪个时间增量应该施加什么载荷。在这种程度上,它的工作原理与
静态分析中的负载增量相同。好处是,由于你在增加时间,当事情发生得足够快时,惯性效应可以被考虑进去。

在这种程度上,隐式和显式分析都或多或少地做了同样的事情。他们将“分析时间”分成小的增量,然后在一个又
一个的时间增量中分析你的模型中发生了什么。但相似之处到此为止!你看,你可能有不同的方法来增加时间!

含蓄与明确——当时间真正重要的时候!

You just learned, that in order to calculate the nonlinear


dynamic problem, you will have to incrementally increase
“analysis time”. As I already mentioned, this can be done in two
ways.

I will start with the implicit approach. I think it’s easier to


understand since it works more or less the same as load
incrementation in nonlinear static analysis!

隐式分析的工作原理:

首先,隐式似乎是更“基本”的解决方案。本质上,它的工作原理和你想象的一样!

首先,在每个时间增量中,建立模型中的“全局均衡”。这意味着每个增量必须收敛(这发生在迭代中)。

全局平衡确定后,规划求解计算所有局部有限元变量(应力等)。对于这个增量。

好处:由于每次增量都验证了全局均衡,所以这些增量可以很大!
缺点:每次增量计算都很慢,因为需要迭代才能达到全局平衡。

如果你熟悉非线性静态分析,你会对隐式求解器感到“自在”。作为一个用户,你通常可以说你想要多大的时间增
量。这是一个巨大的优势…那很容易错过。因为显式求解器不提供这种可能性!
接下来让我们看看显式增量!

显式分析的工作原理:

这个很时髦。它的工作方式是,你不必每一步都收敛!没有要检查的收敛标准…没有迭代!求解器没有
验证“全局均衡”,而是假设均衡“简单存在”。这意味着求解器直接进入局部有限元变量的计算!因为
这个过程只有一个步骤:

计算给定增量的所有局部有限元变量,并移动到下一个!

好处:每次增量计算极快!
缺点:要做到这一点,时间步长必须非常小。否则,就不可能维持这种假设为“简单存在”的均衡。
为了实现这一点,用户不能直接控制显式求解器将采用多大的时间增量。规划求解自己计算小时间
步长仍然可以。这些可接受的时间增量非常小!这就是为什么显式问题应该持续几分之一秒!如果
它们能持续几秒钟…你需要数百万的增量!

简单总结一下:隐式和显式求解器都求解相同的东西。唯一的区别是,这些方法如何增加时间。

从技术上来说,两者应该对所有情况产生相同的结果。毕竟两种方法都可以分析同一个问题。显然,答案不能取
决于用来解决问题的方法!但是当然,你只会为你的下一个问题选择其中一种方法,那么是哪一种呢?来看看吧!

什么对你更好:含蓄还是明确?

我们已经同意您可以使用隐式和显式求解器来解决相同类型的问题。唯一不同的是时间增量的方法。但这不是一
件小事!如果差别很小,没有人愿意两者都实现!让我们来看看这个时间增量是如何影响事物的!

隐式和显式求解器都有它们发光的地方。它们的使用有重叠之处:

隐式分析允许您选择时间增量应该有多大!这个增量将需要一些时间来计算,因为它必须首先迭代以获得
全局平衡。但是你可以把它做得“相当大”来进行分析。

显式时间增量计算速度非常快!仅仅因为他们不迭代求全局均衡…但是时间增量不是你的选择!解算器简单
地假设,“可接受的”时间
增量为“X”,并随之增加。请注意,这个“X”可以很容易地像 5e-7s…这个超级小!要解决超过 1 秒的问题,
您需要 2 000 000 次增量!

就是这样!计算速度正是隐式和显式的区别。当然,显式步骤的大小取决于您的模型,计算时间取决于您
的硬件。然而,我们可以很容易地进行简单的观察:

使用隐式进行“慢分析”!

如果你计算的事情发生在几秒钟内…使用显式求解器没有意义。这将永远需要挖掘数以百万计的时间增量
来计算!相反,为隐式分析设置一个“合理的”时间步长(假设您的分析有 100 个相等的时间增量)。当然,
这些隐式时间增量中的每一个都会比单个显式增量计算更长的时间。但不会比他们几十万更长!
使用显式进行“快速分析”!

这是显而易见的吧?如果你计算的事情发生在一秒钟的一小部分,那么你的朋友就是你的朋友。在一个隐
含的分析中,你的时间增量会非常小…甚至可能和显式分析中的增量一样小。在这种情况下,显式分析将
运行得更快,因为它不需要“全局平衡”迭代。隐式分析确实需要那些迭代(不考虑时间步长!

中间的东西!

当然,中间会出现问题(比如速度为 5m/s 的撞击)。


通常你可以用两个解决者来解决这样的问题,但这很烦人。

我希望这能帮助你选择一个合适的方法来解决你的动态问题。当然最后体验才是最好的指南!如果你有疑问,运
行一些你的典型问题,包括隐含的和明确的。这样,您将能够比较结果(它们应该是相同的)。但更重要的是,你
将能够比较计算时间!这将给你一个机会来检查,什么是对你更好的方法!

如何明确猜测时间步长?
到目前为止,一切都很好,但我认为解决一个大问题会很好。那
就是…如果您没有在显式分析中选择时间步长…那谁知道呢。
数学解释需要讨论最大固有频率。这是因为最大“仍可接受”的
时间增量与最大固有频率成反比。当然,这样的计算是可以做到
的。结果取决于模型的网格(有多少元素,等等。但是我们不会去
那里,原因有 2 个:第一,我不喜欢数学(!其次,这并不是解决者
最终的做法,尽管这是“正确的方式”。

当然,求解器可以计算最大固有频率,但这需要相当长的时间。因为它必须在每个显式的时间增量中完成(可能有
很多这样的增量!哎呀!幸运的是,有一种方法可以很好地估计这个值,通过分别分析系统中的每个有限元!该
估算的物理解释(通常用于求解器)是:

显式分析中的最大时间增量:

显式分析中的时间增量非常短。这是弹性波(即。冲击波)可以穿过模型的单个有限元。当然,你的模型中
所有有限元都验证了这一点,选择的时间最小。

如您所见,显式时间组件有两个组件:

弹性波速度(也就是你的材料中的声速)!这只取决于你的模型中的材料(当然,不同的材料会有所不同!你
将需要杨氏模量、材料密度和泊松比(在 2D 和 3D 问题中)。很容易找到列出各种材料中弹性波速度的表格。
仅供参考在钢铁中,这个是 5200m/s 左右(很多金属是 4500-5500m/s 左右)。

元素大小(和质量)!你有波速,但是不够!要知道它穿过元素所需的时间,您需要知道元素“长度”。虽然这
在 1D 元素中非常简单(它们只是有长度),但在 2D 和 3D 中就变得棘手了。这个长度不是“简单地”最短的元
素边,因为元素的几何形状可能很差。solver 会做一些事情来计算这个。在 2D,它可以是元素面积除以最
大边长。在 3D 中,可以表示元素的体积除以最大边面积。这就是为什么在显式分析中不仅元素大小而且元
素质量如此重要!毕竟…你所需要的只是一个可怜的元素,它真的会浪费你的计算时间!

我在哪里读到过,虽然以上是“精确”的解决方案,但求解者经常在这方面使用“安全系数”。如果你得到一个比弹
性波“速度极限”更高的时间增量,就会出现数学误差。由于使用了估计,求解器通常会减少时间步长“以防万一”。
通常,折减系数约为
0.9,但这当然会因求解器而异。

大规模缩放!
In the end, I want to mention something quickly.

You most likely noticed, that the time step in explicit only
depends on the mesh, Young Modulus, and density. Reducing
Young Modulus may not be ideal of course, and you often need
a small mesh to analyze details. But in “low dynamic” problems
you can try to increase the explicit time step by increasing
material density.

This is called “mass scaling”. FEA packages even offer solutions


where density is increased only in the elements that “decide”
about time increment. This means that sometimes only small
你的模型部分变得更重!在一些分析中,你可以通过增加模型的质量来“逃脱”。如果是这样的话,这可能是你的
解决方案。请注意,这确实会改变您的模型的行为方式!当涉及高加速度时,最好小心!

总结

Nice! You got here, thanks for reading! Let’s wrap this up, so it
is easier to remember!

Dynamic analysis involves time! When you apply


loads, those have to be defined in a time function. Often
this is a linear relation. But this doesn’t change, that the
time in which load is applied plays a significant role
(especially if this time is short !).

2 flavors of dynamic analysis ! You can solve the


“real” dynamic problems with implicit and explicit
algorithms. Both are fine, and not a single one of them is
“更好”。但我应该说,显式求解器是更少有限元分析包的一部分。由于并非每个有限元分析包都有一个,
显式求解器被视为“更高级”的东西。

如果你分析中的事情发生得相对较慢,隐式求解器真的很好。假设分析时间长于 1 秒,在此期间没有任何
突发事件发生。好处是你可以挑你想要的时间增量有多大。即使单个增量需要更长的时间来计算,它们也
要少得多!

显式求解器非常适合快速发生的事情(比如说快于 0.1 秒)。您不能在这里选择时间增量-规划求解将自动设


置它。虽然它们通常非常小,但至少它们的计算速度比“隐式”快得多。显式求解器计算时间增量应该有多
大。这取决于您的材料中的声速、最小有限元尺寸(以及元素质量!在某些情况下,你可以改变密度(甚至只
在“决定元素”中自动改变)!来调整这个时间增量。这个管用,因为你的素材中的声速取决于它的密度!这
叫“质量缩放”。

嗯,我真的希望你会发现这很有用。一如既往,如果你能在下面的评论中分享你的想法,我将不胜感激!

You might also like