文章目录[隐藏]
在用ANSYS求解诸如“结构的极限荷载是多大”等问题的时候,总是需要进行非线性屈曲分析。非线性屈曲分析是打开大变形开关(nlgeom,on)的一种静力分析,考虑了塑性影响,是进行实际结构计算的常用方法。它的基本思路是对一个非线性分析过程,给定若干个加载增量步,在每个增量步内,根据给定的荷载增量(称为荷载控制或力控制)或给定的位移增量(称为位移控制),经过一系列迭代计算,追踪结构真实的加载路径,最终获得结构的极限荷载。
最常用的,是给定一个足够小的荷载增量——即所谓的,荷载步大小对非线性分析收敛和结果精度均有影响。荷载增量过大,得到的结果可能不精确;荷载增量过小,分析成本增加太多,且一个非收敛的解并不意味着结构达到了极限荷载,也可能在加载过程中发生了数值不稳定。
为了搞清楚得到的最大荷载是否是结构真实的极限荷载,需要用弧长法来帮帮忙:
- 用弧长法进行预分析,得到结构屈曲荷载近似值(预测数值),再用传统的二分法计算,两个结果进行比对看是否一致;
- 使用弧长法计算,计算中手动修改弧长半径,再看结果的变异情况。
- 绘制出结构的荷载-位移曲线,探讨曲线变化点的原因,从而确定数据是否可信。
于是,弧长法是一个值得研究研究的好东东
何为弧长法
弧长法是一种非线性求解的迭代控制方法,由于其可以解决在荷载和位移增量均不确定的情况下,生成变化的增量值,并能很好地追踪结构加载路径而具有很高的“声望”。关于弧长法的原理,推荐参考《非线性分析弧长法的读书报告》、陆新征老师学生时代的作业:《基于预处理技术和弧长法的非线性方程通用求解子程序总结报告 》,以及Yusd的博文《弧长法(Riks Method)的基本原理》。喜欢编程的话,还可以参考他的另一篇文章《弧长法(Riks method)通用求解程序》。英文资料可阅读苏黎世联邦理工学院结构工程研究所Prof. Dr. Eleni Chatzi的讲稿:《The Finite Element Method for the Analysis of Non-Linear and Dynamic Systems》,再有想深入了解弧长法Matlab编程的,可以参考这个帖子中提到的源代码。
在这里只强调一下弧长法的一个独特的优势:
见下图(来源),当微小荷载增量可以引起显著的位移突跃,则成为荷载控制的急速通过(Snap though);当微小位移增量可以产生显著的荷载突跃,则成为位移控制的急速返回(snap back)——这种复杂的加载路径,单纯荷载或位移控制已经难以奏效,而弧长法则可轻松处理此类问题。
ANSYS中弧长法的实现方法
ARCLEN, Key, MAXARC, MINARC
MAXARC:Maximum multiplier of the reference arc-length radius (default = 25).
MINARC:Minimum multiplier of the reference arc-length radius (default = 1/1000).
这个命令用来激活弧长法并设置弧长半径的最小和最大乘数。这个弧长半径参考值可以由第一个子步的第一个迭代中求算的荷载或位移增量计算而来。如下式所示:
Reference Arc-Length Radius = Total Load (or Displacement) / NSBSTP
其中Reference Arc-Length Radius为弧长半径参考值,NSBSTP为命令NSUBST中设置的子步(substep)的个数。
那么乘数MAXARC 和MINARC 可以用来定义弧长半径的界限,如下式所示
lower limit = MINARC * (Reference Arc-Length Radius)
upper limit = MAXARC * (Reference Arc-Length Radius)
在每一个随后的子步计算时,一个新的弧长半径会首先被计算出来,该计算是基于上一子步的弧长半径和求解状况而开展的。随后,这个新计算出的弧长半径将进一步被修正,以保证该半径处于上下限之内。当用最小半径也无法收敛时,弧长法将会自动停止。
弧长法不能与自动时间步长(AUTOTS)、线性搜索(LNSRCH)和自由度求解预测(PRED)命令同时运行。
建模过程:
/prep7
Antype,static
材料/单元/实常数定义...
建立模型/划分网格...
施加约束
finish
/solu
nlgeom,on !打开大变形
outres,,1
施加荷载
nsubst,50 !设置子步数
arclen,on,4 !设置弧长法参数
solve
finish
/post26
绘制荷载-位移曲线
一些注意事项
- 为了得到结构极限荷载,在/solu中对结构加载比预测的屈曲荷载高20%左右为宜;
- 弧长方法仅限于具有渐进加载方式的静态分析;
- 选择子步数时,考虑到较多的子步导致求解时间过长,因此理想情况是选择一个最佳有效解所需的最小子步数。有时需要对子步数进行评诂,按照需要调整再重新求解;
- 要用弧长方法帮助缩短求解时间时,单一子步内最大平衡迭代数应当小于或等于15;
- 一般地,不能应用这种方法在确定载荷或位移处获得解,因为这个载荷或者位移值随获得的平衡态改变(沿球面弧)。当在一个非线性屈曲分析中应用弧长法在某些已知的范围内确定一个极限载荷或位移的值可能是困难的。
- 有时为了提高计算速度,可将分析过程分成两个荷载步,第一步采用一般的非线性屈曲分析过程,第二步在临近屈曲的时候采用弧长法。然而,要从弧长到Newton-Raphson迭代转换,必须终止分析然后重启动,且在重启动的第一个载荷步中去关闭弧长方法(ARCLEN,OFF)。 ;
- 通常应当避免和弧长方法一起使用JCG或者PCG求解器(EQSLV),因为弧长方法可能会产生一个负定刚度矩阵(负的主对角线),导致求解失败;
- 弧长求解发生中止的条件:(1)当由ARCTRM或NCNV 命令定义的极限达到时;(2)当在所施加的载荷范围内求解收敛时;(3)当使用一个放弃文件时(Jobname.ABT);
- 一个不成功的弧长分析可以归因于弧长半径或者太大或者太小,研究载荷偏移曲线来理解这个问题,然后使用NSUBST 和ARCLEN 命令来调整弧长半径的大小和范围为合适的值;
- 总体弧长载荷因子(SOLU命令中的ALLF项)或者会是正的或者会是负的。类似地,TIME,其在弧长分析中与总体弧长载荷因数相关,不是正的就是负的。 ALLF或TIME 的负值表示弧长特性正在以反方向加载,以便保持结构中的稳定性。负的ALLF或者TIME值一般会在各种突然转换分析中遇到。如果TIME 为负的,记住在产生任何POST26图形前定义一个合适的变化范围((IXRANGE)或者(IYRANGE));
- 读入基本数据用于POSTI后处理时(SET),应该以载荷步和子步号(LSTEP和SBSTEP)或者进它的数据设置号为依据。不要引用TIME值的结果,因为TIME 值在一个弧长分析中并不总是单调增加的。单一的一个TIME 值可能涉及多于一个的解。此外,程序不能正确地解释负的TIME 值(可能在一个突然转换分析中遇到);
- 不要试图应用基于位移[ CNVTOL ,U]的收敛判据,要用基于力[ CNVTOL ,F]收敛的判据。
博主 ,注意事项第六点 如何在两个荷载步间从NR更改至弧长法?我明确在荷载步1中选定NR法(INIT)并关闭弧长法,在荷载步2中开启弧长法 。然而在计算中发现第一步也是弧长法。这是怎么回事
求解部分 命令流如下
/SOLU
!!!apply the constrains and solve the problem !施加约束并解决问题 (后期对比需要改动约束)
LSEL,S,LOC,Z,FI1 !从全部线中选择一组线 坐标为 Z 坐标 FI1
DL,ALL,,ALL !在线上施加自由度约束,施加约束线编号,面编号(0),施加所有适宜的DOF约束 (后期改弹性)
ALLSEL,ALL
/SOLU
ANTYPE,0
ALLSEL,ALL
OUTRES,ALL,ALL
NLGEOM,ON
SSTIF,ON
SOLCONTROL,1,1,
NEQIT,15
CUTCONTROL,NOITERPREDICT,1
ARCLEN,OFF
NROPT,INIT
KBC,0
NSUBST,80,,,1
SFA,ALL,1,PRES,-7000
ALLSEL,ALL,ALL
LSWRITE,1
ARCLEN,ON,5,0.001
KBC,0
NSUBST,200,,,1
SFA,ALL,1,PRES,-10000
ALLSEL,ALL,ALL
LSWRITE,2
LSSOLVE,1,2,1
万分感谢
@丙烯醛基 需要重启动设置。
您好!<br/>我在一个非线性屈曲中遇到了一个很奇怪的现象:迭代时居然出现了子步的弧长半径超出弧长半径的上限!<br/>问题描述如下:<br/>“NSUBST,8000 !8000子步<br/>ARCLEN,ON,5,1E-20”<br/>此时,upper limit=5*1/8000=0.000625,之前的计算很正常,但是迭代的最后,LOAD FACTOR依次出现了0.0012/0.0014/0.0019/0.026的增长!<br/>按照弧长法的原理,LOAD FACTOR应该比最大弧长半径还要小,怎么会出现这样的现象呢?<br/>另外,这个不是个例!求指教~!<br/>我的联系方式:QQ=1017957344;TEL=15268166210~谢谢!
@陈希 邮件收到,正在外地,稍后回复你哈
@长河 谢谢~<br/>您的微信回复我已经看到,另外也看到了论坛贴出来的问题,谢谢您的关注!
谢谢,这个帖子对我很有帮助