隐式与显示的区别

合集下载

显式动力学与隐式动力学

显式动力学与隐式动力学

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

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

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

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

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

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

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

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

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

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

显式与隐式算法区别

显式与隐式算法区别

显式(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)时刻决定,也就是说当前时刻的值由上一时刻的值决定。

隐式求解与显式求解.

隐式求解与显式求解.

大多数非线性动力学问题一般多是采用显式求解方法,特别是在求解大型结构的瞬时高度非线性问题时,显示求解方法有明显的优越性。

下面先简要对比一下隐式求解法和显示求解法。

动态问题涉及到时间域的数值积分方法问题。

在80年代中期以前,人们基本上采用纽曼法进行时间域的积分。

根据纽曼法,位移、速度和加速度有着如下关系:u(i+1)=u(i)+△t*v(i)[(1—2p)a(i)+2p*a(i+1)] (1)v(i+1)=V(i)+△t[(1-2q)a(i)+2qa(i+1)] (2)上面式子中 u(i+1),u(i)分别为当前时刻和前一时刻的位移,v(i+1)和V(i)为当前时刻和前一时刻的速度,a(i+1)和a(i)为当前时刻和前一时刻的加速度,p和q为两个待定参数,△t为当前时刻与前一时刻的时问差,符号 * 为乘号。

由式(1)和式(2)可知,在纽曼法中任一时刻的位移、速度、加速度都相互关联,这就使得运动方程的求解变成一系列相互关联的非线性方程的求解,这个求解过程必须通过迭代和求解联立方程组才能实现。

这就是通常所说的隐式求解法。

隐式求解法可能遇到两个问题。

一是迭代过程不一定收敛,二是联立方程组可能出现病态而无确定的解。

隐式求解法最大的优点是它具有无条件稳定性,即时间步长可以任意大。

如果采用中心差分法来进行动态问题的时域积分,则有如下位移、速度和加速度关系式:u(i+1)=2u(i)-u(i-1)+a(i)(△t)^2 (3)v (i+1)=[u (i+1)-u (i-1)]/2(△t) (4)式中u(i-1),为i -1时刻的位移。

由式(3)可以看出,当前时刻的位移只与前一时刻的加速度和位移有关,这就意味着当前时刻的位移求解无需迭代过程。

另外,只要将运动过程中的质量矩阵和阻尼矩阵对角化,前一时刻的加速度求解无需解联立方程组,从而使问题大大简化,这就是所谓的显式求解法。

显式求解法的优点是它既没有收敛性问题,也不需要求解联立方程组,其缺点是时间步长受到数值积分稳定性的限制,不能超过系统的临界时间步长。

显示积分和隐式积分法

显示积分和隐式积分法

这是ansys里面的两种求解方法。

大多数非线性动力学问题一般多是采用显式求解方法,特别是在求解大型结构的瞬时高度非线性问题时,显示求解方法有明显的优越性。

下面先简要对比一下隐式求解法和显示求解法。

动态问题涉及到时间域的数值积分方法问题。

在80年代中期以前,人们基本上采用纽曼法进行时间域的积分。

根据纽曼法,位移、速度和加速度有着如下关系:u(i+1)=u(i)+ △ t*v(i)[(1 —2p)a(i)+2p*a(i+1)] ⑴v(i+1)=V(i)+ △ t[(1-2q)a(i)+2qa(i+1)] (2)上面式子中u(i+1),u(i)分别为当前时刻和前一时刻的位移,v(i+1)和V(i)为当前时刻和前一时刻的速度,a(i+1)和a(i)为当前时刻和前一时刻的加速度,p 和q 为两个待定参数,△ t为当前时刻与前一时刻的时问差,符号*为乘号。

由式⑴和式⑵可知,在纽曼法中任一时刻的位移、速度、加速度都相互关联,这就使得运动方程的求解变成一系列相互关联的非线性方程的求解,这个求解过程必须通过迭代和求解联立方程组才能实现。

这就是通常所说的隐式求解法。

隐式求解法可能遇到两个问题。

一是迭代过程不一定收敛,二是联立方程组可能出现病态而无确定的解。

隐式求解法最大的优点是它具有无条件稳定性,即时间步长可以任意大。

如果采用中心差分法来进行动态问题的时域积分,则有如下位移、速度和加速度关系式:u(i+1)=2u(i)-u(i-1)+a(i)( △ t)A2 (3)v(i+1)=[u(i+1)-u(i-1)] /2(△ t) (4)式中u(i-1),为i-1时刻的位移。

由式⑶可以看出,当前时刻的位移只与前一时刻的加速度和位移有关,这就意味着当前时刻的位移求解无需迭代过程。

另外,只要将运动过程中的质量矩阵和阻尼矩阵对角化,前一时刻的加速度求解无需解联立方程组,从而使问题大大简化,这就是所谓的显式求解法。

显式求解法的优点是它既没有收敛性问题,也不需要求解联立方程组,其缺点是时间步长受到数值积分稳定性的限制,不能超过系统的临界时间步长。

显示意图和隐式意图的用处和区别

显示意图和隐式意图的用处和区别
显示意图:
Intent.setClassName(packageName,className)不指定动作和数据,直接指定需要操作的组件。
等于该语句:new Intent(this,CalcActiviy.class)
packageName:当前包名,可以使用getPackageName()获得
(好处是应用程序之间没有耦合,激活别人写的应用,隐式意图不需要关心对方的包名和类名)
intent.setDate和intent.setType是相互排斥的
如果同时需要设定type和data应该使用setDataAndType();
总结:
显示意图:必须制时候采用显示意图)
隐式意图:只需要指定需要完成的动作和数据就行
action节点下 一般前面跟包名,后面指定要完成的动作
使用隐式意图开启界面的时候需要指定<action/> <data/> <category/>节点
其中data节点对应setType
Intent.setAction(action)
Intent.setDate(date)
className:需要激活的组件必须要与清单文件中的类名一致
例如:com.itheima.rpcalc.CalcActiviy
开启界面的方法startActivity(intent)
隐式意图:
每次创建一个新的activity界面都要记得在manifest文件中声明一下
在intent-filter节点中
相对于显示意图更加灵活一点,
intent.setAction():指定动作 参数是包名加动作描述字符
intent.setType("application/person")设置类型(直接写就是,并不懂是什么)

显示积分和隐式积分法

显示积分和隐式积分法

这是ansys里面的两种求解方法。

大多数非线性动力学问题一般多是采用显式求解方法,特别是在求解大型结构的瞬时高度非线性问题时,显示求解方法有明显的优越性。

下面先简要对比一下隐式求解法和显示求解法。

动态问题涉及到时间域的数值积分方法问题。

在80年代中期以前,人们基本上采用纽曼法进行时间域的积分。

根据纽曼法,位移、速度和加速度有着如下关系:u(i+1)=u(i)+△t*v(i)[(1—2p)a(i)+2p*a(i+1)] (1)v(i+1)=V(i)+△t[(1-2q)a(i)+2qa(i+1)] (2)上面式子中u(i+1),u(i)分别为当前时刻和前一时刻的位移,v(i+1)和V(i)为当前时刻和前一时刻的速度,a(i+1)和a(i)为当前时刻和前一时刻的加速度,p 和q为两个待定参数,△t为当前时刻与前一时刻的时问差,符号* 为乘号。

由式(1)和式(2)可知,在纽曼法中任一时刻的位移、速度、加速度都相互关联,这就使得运动方程的求解变成一系列相互关联的非线性方程的求解,这个求解过程必须通过迭代和求解联立方程组才能实现。

这就是通常所说的隐式求解法。

隐式求解法可能遇到两个问题。

一是迭代过程不一定收敛,二是联立方程组可能出现病态而无确定的解。

隐式求解法最大的优点是它具有无条件稳定性,即时间步长可以任意大。

如果采用中心差分法来进行动态问题的时域积分,则有如下位移、速度和加速度关系式:u(i+1)=2u(i)-u(i-1)+a(i)(△t)^2 (3)v(i+1)=[u(i+1)-u(i-1)]/2(△t) (4)式中u(i-1),为i-1时刻的位移。

由式(3)可以看出,当前时刻的位移只与前一时刻的加速度和位移有关,这就意味着当前时刻的位移求解无需迭代过程。

另外,只要将运动过程中的质量矩阵和阻尼矩阵对角化,前一时刻的加速度求解无需解联立方程组,从而使问题大大简化,这就是所谓的显式求解法。

显式求解法的优点是它既没有收敛性问题,也不需要求解联立方程组,其缺点是时间步长受到数值积分稳定性的限制,不能超过系统的临界时间步长。

显式与隐式(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、不⾔明的、绝对的、隐匿的)。

自动化:显示等待和隐式等待的区别和使用常见

自动化:显示等待和隐式等待的区别和使用常见

⾃动化:显⽰等待和隐式等待的区别和使⽤常见Selenium⾃动化测试中会遇到这样的问题:⼀通执⾏下来提⽰空指针或者提⽰元素找不到,此时可以考虑加个等待时间。

Selenium常⽤的等待包括显⽰等待、隐式等待、强制等待。

1.显式等待element = WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located(By.ID,‘kw’))element.sendkeys("xxx")说明:显⽰等待是单独针对某个元素,设置⼀个等待时间如5秒,每隔0.5秒检查⼀次是否出现,如果在5秒之前任何时候出现,则继续向下,超过5秒尚未出现则抛异常。

显⽰等待与隐式等待相对,显⽰等待必须在每个需要等待的元素前⾯进⾏声明。

使⽤场景:当打开⼀个新页⾯,执⾏第⼀个元素操作的时候;当某⼀步操作会引发页⾯的加载,并且加载的内容包含了下⼀步需要操作的元素。

⼀句话,就是当某个元素有加载过程的时候,就需要加上显⽰等待。

2.隐式等待driver.implicitly_wait(10)说明:隐式等待是全局的是针对所有元素,设置等待时间如10秒,如果10秒内出现,则继续向下,否则抛异常。

可以理解为在10秒以内,不停刷新看元素是否加载出来。

使⽤场景:隐式等待只需要声明⼀次,⼀般在打开浏览器后进⾏声明。

声明之后对整个drvier的⽣命周期都有效,后⾯不⽤重复声明。

隐式等待存在⼀个问题,那就是程序会⼀直等待整个页⾯加载完成,也就是⼀般情况下你看到浏览器标签栏那个⼩圈不再转,才会执⾏下⼀步,但有时候页⾯想要的元素早就在加载完成了,但是因为个别js之类的东西特别慢,仍得等到页⾯全部完成才能执⾏下⼀步。

3.强制等待:time.sleep(3)⽤以设置固定的线程休眠时间(s),使得整个脚本暂停。

但是这种⽅式会导致这个脚本运⾏时间过长,不到万不得已尽可能少⽤,特殊情况下,时间设置最好不超过1秒,⼀般0.5秒。

Ansys显示算法和隐式算法知识完全解读

Ansys显示算法和隐式算法知识完全解读

Ansys显示算法和隐式算法知识完全解读这是ansys里面的两种求解方法。

大多数非线性动力学问题一般多是采用显式求解方法,特别是在求解大型结构的瞬时高度非线性问题时,显示求解方法有明显的优越性。

下面先简要对比一下隐式求解法和显示求解法。

动态问题涉及到时间域的数值积分方法问题。

在80年代中期以前,人们基本上采用纽曼法进行时间域的积分。

根据纽曼法,位移、速度和加速度有着如下关系:u(i+1)=u(i)+△t*v(i)[(1—2p)a(i)+2p*a(i+1)] (1)v(i+1)=V(i)+△t[(1-2q)a(i)+2qa(i+1)] (2)上面式子中u(i+1),u(i)分别为当前时刻和前一时刻的位移,v(i+1)和V(i)为当前时刻和前一时刻的速度,a(i+1)和a(i)为当前时刻和前一时刻的加速度,p和q为两个待定参数,△t 为当前时刻与前一时刻的时问差,符号* 为乘号。

由式(1)和式(2)可知,在纽曼法中任一时刻的位移、速度、加速度都相互关联,这就使得运动方程的求解变成一系列相互关联的非线性方程的求解,这个求解过程必须通过迭代和求解联立方程组才能实现。

这就是通常所说的隐式求解法。

隐式求解法可能遇到两个问题。

一是迭代过程不一定收敛,二是联立方程组可能出现病态而无确定的解。

隐式求解法最大的优点是它具有无条件稳定性,即时间步长可以任意大。

如果采用中心差分法来进行动态问题的时域积分,则有如下位移、速度和加速度关系式:u(i+1)=2u(i)-u(i-1)+a(i)(△t)^2 (3)v(i+1)=[u(i+1)-u(i-1)]/2(△t) (4)式中u(i-1),为i-1时刻的位移。

由式(3)可以看出,当前时刻的位移只与前一时刻的加速度和位移有关,这就意味着当前时刻的位移求解无需迭代过程。

另外,只要将运动过程中的质量矩阵和阻尼矩阵对角化,前一时刻的加速度求解无需解联立方程组,从而使问题大大简化,这就是所谓的显式求解法。

Abaqus隐式和显式求解的区别和应用

Abaqus隐式和显式求解的区别和应用

Abaqus隐式和显式求解的区别和应⽤Abaqus有限元计算要使⽤的求解器类型:隐式还是显式?求解器类型会影响求解的⽅程组、某些单元的可⽤性、运⾏时间,甚⾄是否获得收敛。

本⽂将解释Abaqus中可⽤的两个求解器之间的区别,它们的优缺点以及何时选择哪种求解器。

有什么区别?当谈论FEA中的隐式或显式时,谈论的是⽤于时间增量的算法,在两种情况下,模型的状态都是在多个时间点计算,新状态是根据旧状态计算的。

使⽤显式算法,可以直接从当前状态下的可⽤数据计算新状态,基本上是⼀种推断。

⽽使⽤隐式算法,不能直接从旧状态计算新状态,必须求解⼀个耦合的⽅程组,这需要⾮线性解算法,通常是Newton-Raphson⽅法。

计算成本和时间增量⼤⼩单个显式增量的计算成本很⼩,所需的所有信息都可⽤,计算简单快捷。

但是,时间增量不能太⼤,因为这样会变得不稳定,解上的误差会呈指数级增长。

如果我们将其视为外推,远远超出已知范围的推断往往会给出错误的结果,特别是如果错误有机会相加。

可以使⽤的最⼤时间增量由 Abaqus ⾃动计算,称为稳定时间增量,稳定的时间增量随着单元尺⼨的减⼩、密度的降低和刚度的提⾼⽽减⼩。

具有最⼩稳定时间增量的单元决定了整个分析的时间增量,因此,单个形状不良的单元会极⼤地影响仿真时间。

在整个分析过程中,稳定时间增量通常近似恒定,因此,⼀旦第⼀个增量完成,可以估计运⾏分析所需的时间。

隐式增量的计算成本要⼤得多,因为需要求解⼀个⽅程组,对于⾮线性分析,这甚⾄需要多次完成。

因此,解决单个隐式增量将需要更多的时间和内存。

另⼀⽅⾯,时间增量⼤⼩不受隐式算法稳定性问题的限制,通常允许⽐显式算法更⼤的时间增量。

Abaqus/Standard(隐式求解器)中的增量⼤⼩通常由 Abaqus 根据Newton-Raphson⽅案收敛的难易程度⾃动确定。

越是⾮线性,找到收敛解决⽅案的计算成本就越⾼。

图 1:显式和隐式求解器的时间增量。

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

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

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

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

⾸先来说在程序语⾔中默认的类型,⼀般整数是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,变为整数型。

abaqus显示和隐式算法的差别

abaqus显示和隐式算法的差别

1.1. 弹性动力学有限元基本解法 结构系统的通用运动学方程为: MU CU KU 二 R t( 1)求解该动力学振动响应主要有三类方法:(1)时域法(2)频域法(3)响应谱法 时域法又可分为:(1)直接积分法,(2)模态叠加法。

直接积分法又可分为中 心差分法(显式), Wils on ■'(隐式)法以及Newmark (隐式)法等。

本文介绍中心差分法(显式)与 Newmark (隐式)法。

1中心差分法(显式) 假定0, t 1, t 2,…,t n 时刻的节点位移,速度与加速度均为已知,现求解 t n (t *:t )时刻的结构响应。

中心差分法对加速度,速度的导数采用中心差分代替,即 为:1 2(U t_t -2U t U t T L t1*(U t 「U t J(2) 式代入(1)式后整理得到 t R(3) (3) 中 1 12 M C ■ :t 2 2・:t2 1 1二 R t _(K -〒 M )U t -(〒M -石 C )U —分别称为有效质量矩阵,有效载荷矢量。

R ,M ,C ,K 为结构载荷,质量,阻 尼,刚度矩阵。

求解线性方程组(3),即可获得r . :t 时刻的节点位移向量U t.、.t,将U,*代回几 何方程与物理方程,可得t 时刻的单元应力和应变。

中心差分法在求解t •.迸瞬时的位移U t t时,只需t •氏时刻以前的状态变量U t和 U tj :,然后计算出有效质量矩阵M?,有效载荷矢量R ,即可求出U,t ,故称此解法 为显式算法。

中心差分法,在开始计算时,需要仔细处理。

t=0时,要计算U t ,需要知道u J 的值。

因此应该有一个起始技术,因而该算法不是自动起步的。

由于 U o , U o , U o 是 已知的,由t=0时的(2)式可知:■ ■: t 2 "Uj 二 U 。

- :tU ° U 。

2中心差分法中时间步长:t 的选择涉及两个方面的约束:数值算法的稳定性和计算 时间。

显式求解方法和隐式求解方法对比

显式求解方法和隐式求解方法对比

采用有限元方法开展结构的动力学分析最终归结为求解离散后的常微分方程组tR KU U C U M =++ 。

在时域内求解该方程最常用的方法是直接积分法,而又根据求解过程中是否需要迭代求解线性方程组,将直接积分法分为隐式积分方法和显式积分方法两类。

隐式积分法认为t+Δt时刻系统的状态不仅与t时刻状态有关,且与t+Δt时刻某些量有关。

因此隐式算法是根据t n 及t n-1...时刻体系的物理量值建立关于以t n+1时刻物理量为未知量的线性方程组,通过求解方程组确定t n+1时刻的物理量(常用的方法有线性加速度法、常平均加速度法、Newmark 方法、Wilson-θ法、Houbolt 方法等)。

而显式积分法认为t+Δt时刻系统的状态仅与t时刻状态有关可,因此可由t n 及t n-1...时刻体系的物理量值直接外推t n+1时刻物理量值(如中心差分法),不需要求解线性方程组,实现了时间离散的解耦。

两种算法的比较 :(1)隐式算法隐式算法基于虚功原理,要迭代计算。

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

理论上在这个算法中的增量步可以很大,但是实际运算中上要受到接触以及摩擦等条件的限制。

随着单元数目的增加,计算时间几乎呈平方次增加。

由于需要矩阵求逆以及精确积分,对内存要求很高。

隐式算法的不利方面就是收敛问题不容易解决,且在开始起皱失稳时,在分叉点处刚度矩阵出现奇异。

(2)显式算法显示算法基于动力学方程,无需迭代,包括动态显式和静态显式算法。

动态显式算法采用动力学方程的中心差分格式,不用直接求解切线刚度,不需要进行平衡迭代,计算速度快,也不存在收敛控制问题。

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

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

它也有一些不利方面。

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

abaqus显示和隐式算法的差别

abaqus显示和隐式算法的差别

1.1. 弹性动力学有限元基本解法 结构系统的通用运动学方程为: MU CU KU 二 R t( 1)求解该动力学振动响应主要有三类方法:(1)时域法(2)频域法(3)响应谱法 时域法又可分为:(1)直接积分法,(2)模态叠加法。

直接积分法又可分为中 心差分法(显式), Wils on ■'(隐式)法以及Newmark (隐式)法等。

本文介绍中心差分法(显式)与 Newmark (隐式)法。

1中心差分法(显式) 假定0, t 1, t 2,…,t n 时刻的节点位移,速度与加速度均为已知,现求解 t n (t *:t )时刻的结构响应。

中心差分法对加速度,速度的导数采用中心差分代替,即 为:1 2(U t_t -2U t U t T L t1*(U t 「U t J(2) 式代入(1)式后整理得到 t R(3) (3) 中 1 12 M C ■ :t 2 2・:t2 1 1二 R t _(K -〒 M )U t -(〒M -石 C )U —分别称为有效质量矩阵,有效载荷矢量。

R ,M ,C ,K 为结构载荷,质量,阻 尼,刚度矩阵。

求解线性方程组(3),即可获得r . :t 时刻的节点位移向量U t.、.t,将U,*代回几 何方程与物理方程,可得t 时刻的单元应力和应变。

中心差分法在求解t •.迸瞬时的位移U t t时,只需t •氏时刻以前的状态变量U t和 U tj :,然后计算出有效质量矩阵M?,有效载荷矢量R ,即可求出U,t ,故称此解法 为显式算法。

中心差分法,在开始计算时,需要仔细处理。

t=0时,要计算U t ,需要知道u J 的值。

因此应该有一个起始技术,因而该算法不是自动起步的。

由于 U o , U o , U o 是 已知的,由t=0时的(2)式可知:■ ■: t 2 "Uj 二 U 。

- :tU ° U 。

2中心差分法中时间步长:t 的选择涉及两个方面的约束:数值算法的稳定性和计算 时间。

selenium中隐式等待和显示等待的区别

selenium中隐式等待和显示等待的区别

selenium中隐式等待和显⽰等待的区别Selenium显⽰等待和隐式等待的区别1、selenium的显⽰等待原理:显⽰等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就⼀直等,除⾮在规定的时间之内都没找到,那么久跳出Exception(简⽽⾔之,就是直到元素出现才去操作,如果超时则报异常)from selenium import webdriverfrom mon.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECdriver = webdriver.Chrome()driver.get('http://www.baidu')element = WebDriverWait(driver,5,0.5).util(EC.presence_of_element_located((By.ID,'kw')))element.send_keys('hello')driver.quit()WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)driver:浏览器驱动timeout:最长超过时间,默认以秒为单位poll_frequency:监测的时间间隔,默认为0.5秒ignored_exceptions:超时后的异常信息,默认情况下抛NoSuchElementException异常WebDriverWait⼀般有until和until_not⽅法配合使⽤until(method,message)until_not(method ,message)2、selenium的隐式等待原理:隐式等待,就是在创建driver时,为浏览器对象创建⼀个等待时间,这个⽅法是得不到某个元素就等待⼀段时间,直到拿到某个元素位置。

C#的隐式和显示类型转换.

C#的隐式和显示类型转换.

关于隐式转换和显示转换,每种语言都有的,C#中当然也不例外。

一般常用到的场合,一种是写运算表达式的时候,要保持整体的数据类型一致和计算准确,比如有一个变量a是int型,但是它是通过加减乘除得到的,那么在运算中就要考虑用显示转换,除的运算需要转换成float或double,再把结果强制转换为int;再一个就是传参数的时候,需要注意哪些需要显示转换,或者对集合赋值的时候也要注意类型的问题。

1. 隐式类型转换所谓隐式转换,就是系统默认的转换,其本质是小存储容量数据类型自动转换为大存储容量数据类型。

有如下几种:从sbyte类型到short,int,long,float,double,或decimal类型。

从byte类型到short,ushort,int,uint,long,ulong,float,double,或decimal类型。

从short类型到int,long,float,double,或decimal类型。

从ushort类型到int,uint,long,ulong,float,double,或decimal类型。

从int类型到long,float,double,或decimal类型。

从uint类型到long,ulong,float,double,或decimal类型。

从long类型到float,double,或decimal类型。

从ulong类型到float,double,或decimal类型。

从char类型到ushort,int,uint,long,ulong,float,double,或decimal类型。

从float类型到double类型。

2.显式类型转换显式类型转换,即强制类型转换。

与隐式转换相反,而且强制转换会造成数据丢失。

从sbyte到byte,ushort,uint,ulong,或char。

从byte到sbyte或char。

从short到sbyte,byte,ushort,uint,ulong,或char。

C#接口的隐式和显示调用,区别和实例

C#接口的隐式和显示调用,区别和实例

C#接口的隐式和显示调用,区别和实例namespace MyInface{//显示接口就是只能用接口调用。

//隐式接口和类都能调用。

public interface IBookList{void Add(string BookName);void Append(string BookName);void Remove(int position);int Count { get;}string this[int index] { get;set;}}//隐式调用public class BookList : IBookList{private List booklist = new List();#region IBookList 成员public void Add(string BookName){booklist.Add(BookName);}public void Append(string BookName){booklist.Insert(booklist.Count, BookName);}public void Remove(int position){booklist.RemoveAt(position);}public int Count{get{return booklist.Count;}}public string this[int index]{get{return booklist[index];}set{booklist[index] = value;}}#endregion}//显示调用该类只能用接口调用。

public class BookList2 : IBookList {private List booklist = new List();#region IBookList 成员void IBookList.Add(string BookName) {booklist.Add(BookName);}void IBookList.Append(string BookName) {booklist.Insert(booklist.Count, BookName); }void IBookList.Remove(int position){booklist.Remove(position.ToString());}int IBookList.Count{get{return booklist.Count;}}string IBookList.this[int index]{get{return booklist[index];}set{booklist[index] = value;}}#endregion}class text{static void Main(){//隐式调用。

隐式与显示的区别

隐式与显示的区别

显示动力学与隐式动力学求解的区别。

(2011-10-15 15:34:02)分类:札记标签:杂谈显式求解是对时间进行差分,不存在迭代和收敛问题,最小时间步取决于最小单元的尺寸。

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

解题费用非常昂贵。

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

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

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

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

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

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

但也不是绝对的。

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

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

1、显式算法基于动力学方程,因此无需迭代;而静态隐式算法基于虚功原理,一般需要迭代计算2、显式算法最大优点是有较好的稳定性。

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

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

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

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

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

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

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

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

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

显示动力学与隐式动力学求解的区别。

(2011-10-15 15:34:02)
分类:札记
标签:
杂谈
显式求解是对时间进行差分,不存在迭代和收敛问题,最小时间步取决于最小单元的尺寸。

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

解题费用非常昂贵。

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

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

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

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

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

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

但也不是绝对的。

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

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

1、显式算法基于动力学方程,因此无需迭代;而静态隐式算法基于虚功原理,一般需要迭代计算
2、显式算法最大优点是有较好的稳定性。

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

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

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

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

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

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

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

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

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

4、求解时间
使用显式方法,计算成本消耗与单元数量成正比,并且大致与最小单元的尺寸成反比;
应用隐式方法,经验表明对于许多问题的计算成本大致与自由度数目的平方成正比;因此如果网格是相对均匀的,随着模型尺寸的增长,显式方法表明比隐式方法更加节省计算成本
隐式求解法
将冲压成型过程的计算作为动态问题来处理后,就涉及到时间域的数值积分方法问题。

在80年代中期以前,人们基本上使用牛曼法进行时间域的积分。

根据牛曼法,位移、速度和加速度有着如下的关系:上面式子中,分别为当前时刻和前一时刻的位移,和为当前时刻和前一时刻的速度,和为当前时刻和前一时刻的加速度,β和γ为两个待定参数。

由上式可知,在牛曼法中任一时刻的位移、速度和加速度都相互关联,这就使得运动方程的求解变成一系列相互关联的非线性方程的求解。

这个求解过程必须通过迭代和求解联立方程组才能实现。

这就是通常所说的隐式求解法。

隐式求解法可能遇到两个问题。

一是迭代过程不一定收敛;二是联立方程组可能出现病态而无确定的解。

隐式求解法的最大优点是它具有无条件稳定性,即时间步长可以任意大。

显式求解法
如果采用中心差分法来进行动态问题的时域积分,则有如下位移、速度和加速度关系:由上式可以看出,当前时刻的位移只与前一时刻的加速度和位移有关,这就意味着当前时刻的位移求解无需迭代过程。

另外,只要将运动方程中的质量矩阵和阻尼矩阵对角化,前一时刻的加速度求解无需解联立方程组,从而使问题大大简化,这就是所谓的显式求解法。

显式求解法的优点是它即没有收敛性问题,也不需求解联立方程组,其缺点是时间步长受到数值积分稳定性的限制,不能超过系统的临界时间步长。

由于冲压成型过程具有很强的非线性,从解的精度考虑,时间步长也不能太大,这就在很大程度上弥补了显式求解法的缺陷。

在80年代中期以前显式算法主要用于高速碰撞的仿真计算,效果很好。

自80年代后期被越来越广泛地用于冲压成型过程的仿真,目前在这方面的应用效果已超过隐式算法。

显式算法在冲压成型过程的仿真中获得成功应用的关键,在于它不像隐式算法那样有解的收敛性问题。

附加说明:
1)求解线性静力学问题,虽然求解线性方程组,但是没有时步的关系,所以不应将其看作隐式算法。

2)求解非线性静力学问题,虽然求解过程需要迭代,或者是增量法,但是没有明显的时步问题,所以不应将其看作隐式算法。

3)静态松弛法,可以认为是将动力学问题看作静力学问题来解决,每一步达到静力平衡,需要数值阻尼。

4)动态松弛法,可以认为是将静力学问题或者动力学问题,分为时步动力学问题,采用向后时步迭代的思想计算。

对于解决静力学问题时,需要人工阻尼。

根据我的理解,是这样的:
(1)显式算法包括动态显式和静态显式算法。

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

动态显式算法采用动力学方程的中心差分格式,不用直接求解切线刚度,不需要进行平衡迭代,计算速度快,也不存在收敛控制问题。

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

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

它也有一些不利方面。

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

动态隐式法还有一个重要特点是:对成形过程的仿真需要使用者正确划分有限元网格和选择质量比例参数、速度和阻尼系数。

静态显式法基于率形式的平衡方程组与Euler前插公式,不需要迭代求解。

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

为了减少相关误差,必须每步使用很小的增量,通常一个仿真过程需要多达几千步。

由于不需要迭代,所以这种方法稳定性好,但效率低。

(2)隐式算法
静态算法也是解决金属成形问题的一种方法。

在静态隐式算法中,在每一增量步内都需要对静态平衡方程而迭代求解。

理论上在这个算法中的增量步可以很大,但是实际运算中上要受到接触以及摩擦等条件的限制。

随着单元数目的增加,计算时间几乎呈平方次增加。

由于需要矩阵求逆以及精确积分,对内存要求很高。

隐式算法的不利方面还有收敛问题不容易得到解决以及当开始起皱失稳时,在分叉点处刚度矩阵出现奇异。

另有一种静态隐式大增量步软件,也属于静态隐式算法,做出了某些改进,如在一些特殊接触条件处理上采用大增量时步,弯曲与拉伸变形的非耦合求解算法,高精度的自适应网格划分等等。

这些专用于金属薄板成形的特征有时显得非常有效,但在某些方面不会那么准确。

例如,它不能精确模拟接触和脱离接触的过程,无法有效预测起皱失稳。

相关文档
最新文档