所谓显式和隐式

合集下载

显式动力学与隐式动力学

显式动力学与隐式动力学

显式动力学与隐式动力学
显式动力学和隐式动力学是在数值求解微分方程时使用的两种方法。

显式动力学方法是指在求解微分方程时,直接根据已知的初始条件和微分方程的表达式进行迭代计算。

在每个时间步长内,通过使用已知的参数和当前时刻的状态来计算下一个时刻的状态。

这种方法通常比较简单直观,计算也相对比较快速。

隐式动力学方法则是通过将微分方程转化为一个隐式方程组进行求解。

在每个时间步长内,需要通过求解一个非线性方程组来确定下一个时刻的状态。

这种方法的优势在于可以处理一些比较复杂的微分方程,如刚性方程。

然而,由于需要求解方程组,计算复杂度较高,通常比显式方法慢。

选择使用显式动力学还是隐式动力学方法,在很大程度上取决于所求解的微分方程的特性和计算资源的限制。

一般来说,如果微分方程是非刚性的且计算资源充足,则显式动力学方法可能是更好的选择;而如果微分方程是刚性的或者对计算资源较为敏感,则隐式动力学方法可能更适合。

显式与隐式算法区别

显式与隐式算法区别

显式(explicit)和隐式(implicit)这两个词在有限元分析中大家可能经常看到,特别是涉及到动力学分析时。

但其实广义的说他们分别对应着两种不同的算法:显式算法(explicit method)和隐式算法(implicit method)。

所以不论在动力学或者静力学中都有涉及到。

显式算法:不直接求解切线刚度,不进行平衡迭代,计算速度快,时间步长只需要足够小,一般不存在收敛问题,需要的内存也小。

隐式算法:每一增量步都需要对静态方程进行平衡迭代,且每次迭代需要求解大量的线性方程组,这一特点使之占用大量的资源。

但该算法增量步可以很大,至少比显式算法大的多,实际计算中会受到迭代次数及非线性程度的影响我们都知道有限元分析FEA在计算微分方程(differential equations)时,由于计算本身的局限,比如计算机储存的位数有限,以及方程本身的复杂性,计算机运用的是数值算法(numerical algorithm)来逼近真实解的。

有限元分析中数值算法的基础是欧拉法(Euler method),欧拉法又分为forward Euler method 和backward Euler method,这两种方法被简称为显式法(explicit method)和隐式法(implicit method)。

中心差分法:(动力学分析)用有限差分代替位移对时间的求导,将运动方程中的速度与加速度用位移的某种组合来标示,这样就将常微分方程组的求解问题转化为代数方程组的求解问题,并假设在每个小的时间间隔内满足运动方程。

首先我们来看看这两种算法的区别。

显式算法(explicit method )(forward Euler method )考虑常微分方程:初始条件:设为每一步的时间步长, 在Tn 时刻,. (n=0,1,2,3...),在T(n+1)时刻有:所以在显式算法中,T(n+1)时刻的值由T(n)时刻决定,也就是说当前时刻的值由上一时刻的值决定。

显式&隐式求解

显式&隐式求解

通过(03)(09)可以得到两种方法的计算特点,显式算法是每一步求解为矩阵乘法,时间步 选择为条件稳定;隐式算法是每一步求解为线性方程组求解,时间步选择为无条件稳定。 下面主要分析两种方法的应用范围。 在求解动力学问题时,将方程在空间上采用有限元法(或其他方法)进行离散后,变为 常微分方程组
C u K u f M u
只不过,在显示动力分析中最消耗 CPU 的一项就是单元的处理。由于积分点的个数与 CPU 时间成正比,采用简化积分的单元便可以极大的节省数据存储量和运算次数,进而提高 运算效率。除节省 CPU 外,单点积分单元在大变形分析中同样有效,Ansys/ls-dyna 单元能承 受比标准 Ansys 隐式单元更大的变形。因此,每种显示动力单元确省为单点积分。但单点积 分有两个缺点:1.出现零能模型(沙漏模态);2.应力结果精确度与积分点相关。为了控制沙 漏,可以采用全积分单元。 总结一下,显示算法、隐式算法与单点积分、全积分不是一个层次上的概念。 我们在求解问题的时候应先根据我们的问题类型来决定是采用显示算法还是隐式算法。 如果是采用显示算法,默认是单点积分,如果产生了沙漏,改用全积分。
u (i 1) 2u (i ) u (i 1) a (i )(t )2 v(i 1) u (i 1) u (i 1) 2t
由上式可以看出,当前时刻的位移只与前一时刻的加速度和位移有关,这就意味着当前时刻 的位移求解无需迭代过程。另外,只要将运动方程中的质量矩阵和阻尼矩阵对角化,前一时 刻的加速度求解无需解联立方程组,从而使问题大大简化,这就是所谓的显式算法。显式算 法的优点是它即没有收敛性问题,也不需求解联立方程组,其缺点是时间步长受到数值积分 稳定性的限制,不能超过系统的临界时间步长。 显式算法是 ansys/ls-dyna 中主要的求解方法,用于分析大变形、瞬态问题、非线性动力 学问题等。 对于非线性分析, 显示算法有一些基本的特点, 如: 块质量矩阵需要简单的转置; 方程非耦合,可以直接求解;无须转置刚度矩阵,所有的非线性问题(包括接触)都包含在 内力矢量中;内力计算是主要的计算部分;无效收敛检查;保存稳定状态需要小的时间步。 显式算法和隐式算法, 有时也称为显式解法和隐式解法, 是计算力学中常见的两个概念, 但是它们并没有普遍认可的定义,下面收集的一些理解。先看看一般对两种方法的理解和比 较 ============================================================= 显式算法 隐式算法 ----------------------------------------------------------------------------------(01)适用问题 动力学(动态) 静力学(静态) (02)阻尼 人工阻尼 数值阻尼 ----------------------------------------------------------------------------------(03)每步求解方法 矩贮量 小 大 (06)每步计算速度 快 慢 (07)迭代收敛性 无 有 (08)确定解 有确定解 可能是病态无确定解 ----------------------------------------------------------------------------------(09)时步稳定性 有条件 无条件 (10)时间步 小 大 (11)计算精度 低 高 ============================================================= (01)是明显不对的, 只是对两种方法的初级理解, (02)也是同样。 下面要详细讨论这两点。 (03)是每一步求解的方法,(04)(05)(06)(07)(08)是由(03)所决定的,它们不是两种方法的基本 特点。同样,(09)是时间步选择的方法,(10)(11)是由(09)所决定的。

显式有限元和隐式有限元

显式有限元和隐式有限元

按照计算每一时刻动力反应是否需要求解线性方程组,可将直接积分法分为隐式积分方法和显式积分方法两类。

隐式积分法是根据当前时刻及前几时刻体系的动力反应值建立以下一时刻动力反应值为未知量的线性方程组,通过求解方程组确定下一时刻动力反应。

隐式方法的研究和应用由来已久,常用的方法有线性加速度法、常平均加速度法、New mark方法、Wilson-θ法、Houbolt 方法等。

显式积分法可由当前时刻及前几时刻的体系动力反应值直接外推下一时刻的动力反应值,不需要求解线性方程组,实现了时间离散的解耦。

解方程组一般占整个有限元求解程序耗时的70%左右,因此,这一解耦技术对计算量的节省是可观的。

隐式方法大部分是无条件稳定的,显式方法为条件稳定。

显式方法的稳定性可以按满足精度要求的空间步距确定满足数值积分稳定性要求的时问步距来实现。

显式方法受条件稳定的限制,时间积分步长将取得较小,但计算经验表明,对于一些自由度数巨大且介质呈非线性的问题,显式法比隐式法所需的计算量要小得多。

因此,随着所考虑问题复杂性的增加,显式积分法得到重视。

对于显式与隐式有限元的理解关键字: 有限元显式隐式显式算法和隐式算法,有时也称为显式解法和隐式解法,是计算力学中常见的两个概念,但是它们并没有普遍认可的定义,下面只是我的一些个人理解。

一、两种算法的比较1、显式算法基于动力学方程,因此无需迭代;而静态隐式算法基于虚功原理,一般需要迭代计算。

显式算法,最大优点是有较好的稳定性。

动态显式算法采用动力学方程的一些差分格式(如广泛使用的中心差分法、线性加速度法、Newmark法和wilson法等),不用直接求解切线刚度,不需要进行平衡迭代,计算速度快,时间步长只要取的足够小,一般不存在收敛性问题。

因此需要的内存也比隐式算法要少。

并且数值计算过程可以很容易地进行并行计算,程序编制也相对简单。

但显式算法要求质量矩阵为对角矩阵,而且只有在单元积分点计算尽可能少时速度优势才能发挥, 因而往往采用减缩积分方法,容易激发沙漏模式,影响应力和应变的计算精度。

显式与隐式(ExplicitAndImplicit)

显式与隐式(ExplicitAndImplicit)

显式与隐式(ExplicitAndImplicit)显式与隐式(Explicit And Implicit)1.概念1.1 显式实现的单词Explicit意思是清楚的、明确的、详述的。

所以,显式的“显”是指明显且清楚的实现,相对于接⼝来说,就是明显⽽清楚的指定了接⼝的实现。

对于其他的逻辑来说,显式就是清楚且明确的指定了实现内容。

1.2 隐式实现的单词Implicit意思是隐匿的、不⾔明的、绝对的。

所以,隐式的实现是指想当然的实现,相对于接⼝来说,只要实现类的⽅法签名和返回值与接⼝定义的⼀致即视为接⼝的实现,并⽆显式的(清晰的、明确的)指定。

2.例⼦2.1 代码1using System;2namespace ExplicitAndImplicit{3//⼑⼦4public interface IKnife{5void KillPeople();6 }7//枪8public interface IGun{9void KillPeople();10 }11//隐式实现12public class WrongKillMachine:IKnife,IGun{13public void KillPeople(){14 Console.WriteLine("切切切脑袋");15 }16 }17//显式实现:18//1.实现接⼝⽅法不需要加访问定义符19//2.实现接⼝⽅法前⾯要加接⼝名.⽅法名,⽤来指定其实现的接⼝20//2.实现接⼝⽅法只能被显式的调⽤,不能被隐式的调⽤:21// 显式调⽤:22public class KillMachine:IKnife,IGun{23void IKnife.KillPeople(){24 Console.WriteLine("切切切");25 }26void IGun.KillPeople(){27 Console.WriteLine("啪啪啪");28 }29 }30public static class Case31 {32public static void Begin(){33 Console.WriteLine("Design Pattern —— Explicit And Implicit:");34//隐式实现35 WrongKillMachine w = new WrongKillMachine();36 w.KillPeople();3738//显式实现39 IKnife k = new KillMachine();40 k.KillPeople();41 IGun g = new KillMachine();42 g.KillPeople();43 }44 }45 }2.2 结果2.3 例⼦解释2.3.1 隐式实现即为WrongKillMachine类,并没有指定每个接⼝的实现⽅法,⽽是通过⼀个签名与返回值⼀致的⽅法来隐式实现(Implicit、不⾔明的、绝对的、隐匿的)。

显式与隐式的区别显式与隐式的区别

显式与隐式的区别显式与隐式的区别

L后EDSI3面G-EPOI有RGUE专VPT:O:门S与的ATS示显CDI例示3IP文来。O件说LT,明文是这件所种一有分输样析出的并模怎二态样进的进制文行输档后出总处文结理件。。,包含每一模态下的振型,可以用
17.3 LS-DYNA 隐式单元公式:
LS-D一使YN用般A*情S开E况发C下T有IO,专N不门_O建的PT议各IO种使N隐用来式定L单S义-元D。Y应N用A于缺隐省式的分显析式中,单下点面积具分体单介元绍来各求种解隐隐式式单问元题:,
采用 Newmark 隐式时间积分
对于线性问题,无条件稳定 M∆an+1
+
K∆un+1
=
f ext n+1

f int n

Ma n
可以采用大的时间步
对需于要非求线解性刚问度题矩阵,需要一系列线性逼近(Newton-Raphson)叠代求解
适合静力问题、低频动力问题及特征值分析。
17.2 在LSL-SD-DYYNNAA中中隐,式缺省分的析求的解激是活显及式求相解关,关可键以字通过下面的关键字来激活隐式求解:
6积个分自点由,度厚(d度x,方dy向, d建z,议rx,5ry个, r积z)分点
不能退化为三角形
利用沙漏控制 8 增加翘曲刚度,改善收敛性
非常适合用于回弹计算
298
3. 线每性个壳节:点186号个单自元由公度式(dx, dy, dz, rx, ry, rz)
*CONTROL_IMPLICIT_GENERAL
其中参数
imflag=1 imflag=0
激活全隐式求解 为缺省的显式求解
295
i该m关fla键g=字2 对为于显所式有求隐解式后求无解缝分进析行来隐说式都回是弹必求需解的。。

显式算法与隐式算法的区别

显式算法与隐式算法的区别

显式算法与隐式算法得区别1、显式算法最大优点就是有较好得稳定性。

动态显式算法采用动力学方程得一些差分格式(如广泛使用得中心差分法、线性加速度法、Newmark法与wilson法等),不用直接求解切线刚度,不需要进行平衡迭代,计算速度快,时间步长只要取得足够小,一般不存在收敛性问题。

因此需要得内存也比隐式算法要少。

并且数值计算过程可以很容易地进行并行计算,程序编制也相对简单。

但显式算法要求质量矩阵为对角矩阵,而且只有在单元级计算尽可能少时速度优势才能发挥。

因而往往采用减缩积分方法,容易激发沙漏模式,影响应力与应变得计算精度。

静态显式法基于率形式得平衡方程组与Euler向前差分法,不需要迭代求解。

由于平衡方程式仅在率形式上得到满足,所以得出得结果会慢慢偏离正确值。

为了减少相关误差,必须每步使用很小得增量。

2、隐式算法隐式算法中,在每一增量步内都需要对静态平衡方程进行迭代求解,并且每次迭代都需要求解大型得线性方程组,这以过程需要占用相当数量得计算资源、磁盘空间与内存。

该算法中得增量步可以比较大,至少可以比显式算法大得多,但就是实际运算中上要受到迭代次数及非线性程度得限制,需要取一个合理值。

3、求解时间t使用显式方法,计算成本消耗与单元数量成正比,并且大致与最小单元得尺寸成反比;应用隐式方法,经验表明对于许多问题得计算成本大致与自由度数目得平方成正比;因此如果网格就是相对均匀得,随着模型尺寸得增长,显式方法表明比隐式方法更加节省计算成本。

所谓显式与隐式,就是指求解方法得不同,即数学上得出发点不一样。

并不就是说显式只能求动力学问题,隐式只能求静力学问题,只就是求解策略不通。

显式求解就是对时间进行差分,不存在迭代与收敛问题,最小时间步取决于最小单元得尺寸。

过多与过小得时间步往往导致求解时间非常漫长,但总能给出一个计算结果。

解题费用非常昂贵。

因此在建模划分网格时要非常注意。

隐式求解与时间无关,采用得就是牛顿迭代法(线性问题就直接求解线性代数方程组),因此存在一个迭代收敛问题,不收敛就得不到结果。

数据类型-转换-隐式转换和显式转换

数据类型-转换-隐式转换和显式转换

数据类型-转换-隐式转换和显式转换数据类型转换分为隐式转换和显式转换,根据不同的转换对象,来确定是那种类型的转换。

隐式转换:就是系统默认的、不需要加以声明就可以进⾏转换。

⾸先来说在程序语⾔中默认的类型,⼀般整数是int类型,浮点数(3.14),默认就是double类型。

但是还有其他类型的,例如整数类型的long,浮点数的float。

当相同类型之间相遇的时候,就会出现隐式转换的问题。

那么隐式转换的规则就是根据数据类型从⼩到⼤的转换:byte→short→int→long(整数类型)例如:long num1 = 100;这个num1根据类型命名为long整数型,但是右侧的100在程序语⾔中默认为是int整数类型。

然⽽根据隐式转换规则,int类型可以⾃动的转换为long整数类型。

故⽽在程序运⾏的时候不会出现错误。

float→double(浮点数)例如:double num1 = 2.5F(F在这⾥代表是float类型的意思);这个同上复述。

num1是double类型,但是2.5F是float类型,因为符合隐式转换的规则,所以2.5F会⾃动的转换为双精度类型,2.50.显⽰转换:当系统默认转换不能转换的时候,⽽我们⼜需要把某⼀类型改为另⼀个类型,这个过程我们称之为显⽰转换也叫做强制转换。

例如:double类型转换成int类型,如int num1 = 3.14(3.14默认为double类型)int是整数型,是不带⼩数点的,然⽽在double类型中是带⼩数点之后两位的,如果要想让这⾏代码成⽴,则需要强制转换,在不同的程序语⾔中有不同的⽅法,这⾥是⽤java语⾔来说明的,int num1 =(int)3.14;只要如此写,在程序中这⾏代码就可以运⾏。

精度丢失:然⽽在这样情况下,会出现⼀个⽐较常见的问题,也是经常会遇见的错误,精度丢失,就是3.14double类型的转换到int类型之后,就只剩下了⼀个3,变为整数型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

所谓显式和隐式,是指求解方法的不同,即数学上的出发点不一样。

并不是说显式只能求动力学问题,隐式只能求静力学问题,只是求解策略不通。

显式求解是对时间进行差分,不存在迭代和收敛问题,最小时间步取决于最小单元的尺寸。

过多和过小的时间步往往导致求解时间非常漫长,但总能给出一个计算结果。

解题费用非常昂贵。

因此在建模划分网格时要非常注意。

隐式求解和时间无关,采用的是牛顿迭代法(线性问题就直接求解线性代数方程组),因此存在一个迭代收敛问题,不收敛就的不到结果。

两者求解问题所耗时间的长短理论上无法比较。

实际应用中一般感觉来说显式耗时多些。

由于两者解题的出发点,所以一般来说显式用于求解和时间相关的动力学问题。

隐式用来求解和时间无关的静力学问题。

但也不是绝对的。

比如,用隐式求解时,为了克服迭代不收敛,改用显式算,但是要多给点时间,这样虽然克服了不收敛的问题,但是求解的时间费用也是相当客观的。

另外,隐式也可以求解动力学问题。

相关文档
最新文档