b)拿GSTIFF SI2积分器和GSTIFF I3积分器来对比,当提及中断 *** 作时,我们注意到I3积分器会容易求解一些。与I3积分器相比,SI2积分器能够给你更好的结果,但是它会用到更多的CPU时间,除非放松它的错误设置。所以一般来说SI2积分器的错误设置点最好是I3的10倍。
c)如果你知道在仿真最初会有一个较高的瞬态响应,HINIT设置会非常方便。不要担心将它的值设置得很小;如果没有高的瞬态响应,积分器将会很快的增加求解时间步数。然而,在有高瞬态响应时,一个较小的HINIT值(如1e-7)会帮助积分器避免仿真失败。
d)如果你希望让积分器以固定时间步运行,你可以适当设置HMAX为较小值而将ERROR值设置得较大。如果不希望积分器跳过一些较短的时间历程(如两个薄板直接的接触),也可以适当这样设置。
e)ERROR可以帮助确定你需要的结果的精确度。需要要注意的是,ERROR在不同的积分器中的意义也是不同的。要选取适当的ERROR值以获得最优的精确度和求解效率只能通过运用一种积分器运行一段时间你的模型才能实现。太宽松的ERROR值会导致结果的不精确甚至是模型的仿真失败。太紧凑的ERROR值又会导致模型仿真CPU时间过长或者仿真失败(如果积分器自动减小时间步以达到精确要求)。
f)将INTERPOLATE属性设置为ON可以阻止一些曲线尖峰以改善仿真结果。典型的,在用GSTIFF积分器中将INTERPOPLATE设置为ON可以减缓仿真速度。在用C++求解器中的HHT积分器时,INTERPOLATE属性的减缓效果会非常小。
g除非必要,最好不要去改变MAXIT的属性值。比较有效的是,设置MAXIT=7,PATTERN=F:F。这样设置后,仅在校正程序迭代7次失败时,求解器才会去重新计算雅克比矩阵。这将会加速接近线性模型的仿真,也不会经常改变其设置。
h在用Newton-raphson迭代方法时,如果设置PATTERN=T,求解器会在每个迭代步计算雅克比矩阵(这会非常费时!!!),但是收敛速度仅是平常的二次方。另一方面,设置PATTERN=F:F,那么仅在收敛失败时重新计算雅克比矩阵。还需要注意的是,FORTRAN和C++求解器在这方面有一个不同的地方。用C++求解器时,设置PATTERN=F表示用积分器来控制计算雅克比矩阵的频率。要记住,用的次数太多会费时,但太少又会导致收敛失败。当设置PATTERN=F:F,C++求解器会试着去自动寻找适合的计算雅克比矩阵的频率。总的来说,在C++求解器中设置PATTERN=F:F能包含FORTRAN求解器中设置PATTERN=F的功能。
i如非必须,也不要经常改变KMAX的值。在模型中有较大的机械刚度时如柔性体,设置KMAX=2可能会节省仿真时间。
j在模型用Newton-Raphson程序且难收敛时,CORRECTOR属性会比较有用。选择MODIFIED corrector,积分器可更好的令求解收敛。这种效果在有接触和不连续的模型中更为明显。用这种方法需要很细心,因为它也可能会导致计算结果与真实值不一致。
你好!
可以按照你的仿真图编程,那你都要实现什么效果?
数码管六位,按键的功能是什么?
需要你发一下仿真图,才能编程!
很简单,你只要在积分器设置里面做两项工作,第一,把“External reset”选成rising,积分器会打开一个端口,这个端口就是用来接收外部清零的条件的;第二把“show state port”打开,这个端口其实输出的就是积分值,但是它只能用于积分的清零,不能作为输出;
积分器会出现两个新的端口,一个输出 state port,一个输入 external reset。
举例说,如果自变量我们取t,初条件是积分值为0.清零条件是积分值达到50,这样我们就从state port里引出来一条线和50做减法,然后输出线连到积分器的输入端,这个过程意思就是设定积分到50的时候就清零,表达式为 1/2 * t^2 - 50 之所以最初把外部重设条件设为 rising 是因为一开始t=0时,表达式为-50,随着t的增长,当t=10的时候,整个表达式由负变正,相当于上升过零。
这样运行仿真 你就看到积分结果不停地到0就重置。
如果仿真时间设的很长,则可能后来就发散了,这样你可以变换一下求解器,选个不同的 比如ode15s,收敛的比较好~ 具体为啥我现在也不知道~~
希望对你有帮助
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)