能量比ALLKE/ALLIE过了15%,曲线来回振荡,这结果没法用。Explicit跑完第一件事就是看能量,ALLIE、ALLKE、ALLPD、ALLSE、ALLAE这几条曲线拉出来,哪条不对一眼就能看出来。
能量输出先要在Step里加*OUTPUT, HISTORY, VARIABLE=PRESELECT,或者在Field Output Request里把能量相关的变量勾上。ABAQUS默认的能量输出变量有ALLIE(总内能)、ALLKE(动能)、ALLPD(塑性耗散能)、ALLSE(弹性应变能)、ALLVD(粘性耗散能)、ALLFD(摩擦耗散能)、ALLAE(人工应变能,也就是沙漏能)、ALLWK(外力功)、ETOTAL(总能量)。这些量都是对整个模型的积分结果,在History Output里以标量形式随时间输出。
准静态问题用Explicit做的时候,ALLKE/ALLIE这个比值是判断惯性效应能不能忽略的核心指标。经验值5%以下可以当准静态处理,10%以上基本不能看了。加载速率太快、质量缩放设得太大,都会让这个比值飙升。质量缩放尤其要小心,目标时间增量设1e-6和1e-5算出来的结果能差两倍,能量比越高偏差越大。
ALLIE、ALLKE、ALLPD、ALLSE、ALLVD、ALLFD、ALLAE、ALLWK、ETOTAL、*OUTPUT, HISTORY, VARIABLE=PRESELECT、*DYNAMIC, EXPLICIT、*FIXED MASS SCALING、D:\temp\explicit_energy\Job-1.odb。

有一次做一个钢管混凝土短柱的落锤冲击模拟,锤头质量200kg,初始速度8m/s。跑完之后ALLKE/ALLIE峰值到了22%,曲线在冲击瞬间抖得厉害,承载力峰值比试验高了30%。当时是周五下午,办公室窗外的树被风吹得哗哗响,楼下有人在收废品,喇叭声一阵一阵的。第一反应是加载速率太快,把锤头质量加到2000kg、速度降到2.4m/s让冲击能量保持不变,ALLKE/ALLIE降到8%,承载力峰值跟试验差15%,还是偏高。又怀疑网格太粗,把钢管壁厚方向从两层加密到四层,沙漏能ALLAE/ALLIE从12%降到4%,承载力峰值降到试验值的108%,这回能看了。后来把ALLIE、ALLKE、ALLAE三条曲线放在一张图里对比,发现冲击瞬间ALLAE有个尖峰,说明减缩积分单元在那个时刻沙漏模式被激发了,增强沙漏控制从Relax Stiffness换成Enhance之后曲线光滑了很多。
ALLKE/ALLIE不是越小越好,太小说明加载时间拉得太长或者质量缩放太狠,塑性耗散能ALLPD占比过低,可能人为把动力效应抹平了。一般ALLPD/ALLIE在准静态问题里要占到80%以上,ALLSE占比小,ALLKE占比小,ALLAE占比小,这个能量分配才算合理。做金属成形、准静态压缩这类问题,盯着ALLPD看,它应该是主项。
ALLAE/ALLIE超过5%就是沙漏能过大,C3D8R和S4R这些减缩积分单元默认用增强沙漏控制,沙漏能还降不下来就得换完全积分单元或者加密网格。完全积分单元计算量翻三倍但沙漏能直接归零。C3D8R和C3D8的取舍看具体问题,冲击问题用C3D8R省时间,准静态问题用C3D8更稳。
能量曲线在Explicit里必须是单调递增的,如果ALLIE出现下降段,多半是单元被删除或者接触状态突变引起的。ETOTAL的波动范围跟ALLIE比应该很小,波动太大说明能量守恒被破坏,时间增量太大或者单元质量太差。冲击问题的时间增量由最小单元尺寸和材料波速决定,*FIXED MASS SCALING, DT=1e-7, TYPE=BELOW MIN把时间步强行压到1e-7以下,能量比一般都能降下来,代价是计算时间线性增长。
后处理用XY Data从ODB里读能量曲线,Create XY Data → ODB History Output → 选ALLIE、ALLKE、ALLAE,画在同一张图里。Python脚本批处理更方便,session.xyDataObjects里直接读。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删