基于ABAQUS的橡胶垫隔震支座单元二次开发Rubber(精)
用ABAQUS软件分析轴箱橡胶垫的性能
Back
∑ ∑ U
N
= Cij (i1
i+ j=1
− 3)i (i2
− 3) j
+
N i =1
1 Di
( jel
− 1) 2i
式中:
ABAQUS 软件 2003 年度用户论文集
U—应变势能
Jel—弹性体积比 I1、I2—应变不变量 Di—定义材料的压缩性 Cij—Rinvlin 系数 将橡胶材料的单轴拉伸、单轴压缩和平面剪切实验数据输入 ABAQUS 软件中,然后设置应变
示,相应的应力云图如图 8~13 所示。
表2
最大 Von—Mise 应力(MPa)
垂向 上面板
37.77
性能 下面板
11.47
横向 上面板
63.6
性能 下面板
26.77
纵向 上面板
63.12
性能 下面板
39.28
-4-
Back
ABAQUS 软件 2003 年度用户论文集
图 8 垂向变形时上盖板应力云图
图 1 二维模型图
图 2 三维模型图
-1-
Back
二、 分析过程
ABAQUS 软件 2003 年度用户论文集
1、建立有限元分析模型
在进行三向受力分析时根据其结构以及载荷的对称性可以采用一半模型进行分析,在进行网格离
散时金属部分采用三维八结点六面体单元 C3D8,橡胶部分采用三维八结点杂交单元 C3D8H。分析
-7-
Back
四、 参考文献
ABAQUS 软件 2003 年度用户论文集
1 TB/T1335-1996《铁道车辆强度设计及试验鉴定规范》
2 郭仲衡,非线性弹性理论,科学出版社,1980 年。
用ABAQUS软件分析橡胶堆的性能
(株洲时代新材料科技股份有限公司,湖南株洲,412007)
摘 要 :随 着 橡 胶 堆 支 座 在 桥 梁 结 构 中 的 广 泛 应 用 ,人 们 对 橡 胶 支 座 的 性
能 研 究 也 愈 来 愈 深 入 , 本 文 以 美 国 HKS 公 司 开 发 的 大 型 有 限 元 软 件 — —
2、 分析过程 问题描述:橡胶堆产品在工作状 态下主要承受垂向压力和水平的剪
图一:产品结构简图
在对产品进行有限元分析时,一 般分以下几个步骤进行。 步骤一:建立有限元模型:根据产品 的尺寸形状,建立有限元模型如图二 所示。划分网格时,对于橡胶部分, 考虑到橡胶材料的不可压缩性,采用 三维八结点杂交单元 C3D8H 来模拟; 对于钢板部分,采用三维八结点实体 单元 C3D8 来模拟。
根据设计要求与图五所显示的 结果我们将倒角半径改为 7mm,此时 的 Mises 应力的最大值 1.2MPa 左右, 这个应力值小于橡胶在短时间冲击 载荷下的许用应力值。通过调整结构 尺寸,垂向变形时,产品的应力水平 可以满足使用要求。
3、 结论 通过以上的例子可以看出,与常 规计算相比较,利用有限元软件对产 品进行分析计算,对调节产品的刚 度、强度性能,以及提高产品使用寿 命都更加有利。而且,随着人们对产 品设计的合理性、科学性的要求的不 断提高,有限元分析作为一种重要的 分析手段,在产品设计中的所起的作 用亦会愈来愈大。
Di—定义材料的压缩性
来决定是否需要重新分析。如果分析
Cij—Rinvlin 系数
质量可以满足要求,那么下一步就要
本例中取 N=1,本产品所用胶料
根据产品的实际工作要求,在分析结
基于Python语言和Abaqus软件的轮胎有限元分析结果自动后处理插件的研发
第 1 期曹金凤等.基于Python语言和Abaqus软件的轮胎有限元分析结果自动后处理插件的研发9基于Python语言和Abaqus软件的轮胎有限元分析结果自动后处理插件的研发曹金凤1,王志文1,高 明2,贾舒安1,孙志伟1,薛茂林1,张泽明1(1.青岛理工大学机械与汽车工程学院,山东青岛266520;2.赛轮集团股份有限公司,山东青岛264200)摘要:基于Abaqus软件的Python语言二次开发功能,采用录制并修改宏文件的方法,开发了一款轮胎有限元仿真分析结果自动后处理插件,用户只需选择要处理的Odb文件,按照需求指定输出数据,单击OK按钮,数据即自动保存到指定的文件夹中。
所开发插件与Abaqus软件无缝连接,用户使用Abaqus软件对轮胎模型仿真分析得到Odb文件后,可直接在Plug-ins菜单下选用插件对数据结果进行整理,实现有限元分析结果的自动后处理,减少了数据提取和整理工作量,缩短了后处理时间,极大地提高了仿真分析效率。
本研究成果可推广应用于其他有限元模型仿真结果的自动后处理。
关键词:轮胎;有限元分析;自动后处理;插件;Python语言;Abaqus软件中图分类号:TQ336.1;O241.82 文章编号:1006-8171(2024)01-0009-06文献标志码:A DOI:10.12135/j.issn.1006-8171.2024.01.0009进入新世纪,国内各大轮胎企业为提高产品质量,降低生产成本,在轮胎设计与研发过程中投入了大量的人力和财力。
随着计算机技术的发展,CAE仿真作为一项成熟的计算机工程辅助技术被越来越多地应用到轮胎设计研发过程中[1]。
轮胎性能的研究也由单纯的试验逐渐转变为试验与仿真技术相结合。
Abaqus软件作为目前国际上最为先进的通用非线性有限元仿真分析软件之一,广泛应用于机械制造、石油化工、航空航天、汽车交通、土木工程以及电子工程等科学研究领域[2-3]。
基于ABAQUS的圆柱形橡胶堆参数化建模的二次开发
2.1 面开发方式的确定
Rubber: C10:
Poissons Ratio:
C01:
D1:
Load1
对橡胶堆进行二次开发的界面开发的方式主要有以
博看网 . All Rights
Reserved.
下两种 [6] ꎮ
Load1:
1) 创建 Plug-ins 插件程序ꎻ
2) 创建用户应用程序ꎮ
对于第 2 种 方 法ꎬ 利 用 创 建 其 他 的 应 用 程 序 ( 如
h
H2
H3:
Layers:
O
图 2 圆柱形橡胶堆的
H1
D2
D1
x
Cancel
OK
图 3 Model setting 界面
受载示意图
2 橡胶堆仿真模块的设计
Rubber pile
Model setting
Material and load setting
Steel: Youngs Modulus:
(3)
赋予材料、边界条件、施加载荷及网格划分等操作ꎬ并自动
界面的设置和输入相关参数ꎬ程序将快速完成几何建模、
将作业提交分析ꎬ从而得出所需要的分析结果ꎮ
Rubber pile
Model setting Material and load setting
z
D1:
D2:
R
H1:
D3
H2
2r
H3
D3:
R:
y
SONG Ying1ꎬ2 ꎬ RONG Jigang2 ꎬ MA Qiucheng1 ꎬ HUANG Youjian2 ꎬ WANG Jinhui 2
(1. Xiangtan Universityꎬ Xiangtan 411105ꎬ Chinaꎻ
基于ABAQUS的橡胶垫隔震支座单元二次开发
fv
k1 = 10k2
k2
dv
Figure 2. Vertical mechanical properties of rubber isolation bearing 图 2. 隔震垫的竖向力学性能
112
k1 k= k2
(当dv ≥ 0时) (当dv < 0时)
基于 ABAQUS 的橡胶垫隔震支座单元二次开发
(4)
式中 k1 为压缩刚度, k2 为拉伸刚度。 d v 为压缩变形。 采用 Bouc-Wen 模型模拟水平恢复力特性,如图 3 所示。单元水平力–位移关系式为:
f = k y d + ( ke − k y ) e
(5)
其中: ke 为初始线性刚度; k y 为屈服后刚度; d 为水平总变形; d y 为屈服变形。 e 为水平弹性变形,并处于 ± d y 的范围内,它通过对下面微分方程在每个时间步长进行数值积分计算 出来:
3. 隔震支座单元
3.1. 隔震支座单元力学模型
采用线弹性模型模拟竖向的拉压刚度异性,如图 2 所示。单元的竖向力–位移关系式为:
f v = kd v
(3)
f
u
M
Figure 1. The hysteretic curve and sketch maps of Bouc-Wen model 图 1. Bouc-Wen 模型滞回曲线和示意图
Hans Journal of Civil Engineering 土木工程, 2014, 3, 110-121 Published Online July 2014 in Hans. /journal/hjce /10.12677/hjce.2014.34014
关键词
基于Python的ABAQUS二次开发方法与应用
基于Python的ABAQUS二次开发方法与应用
张强;马永;李四超
【期刊名称】《舰船电子工程》
【年(卷),期】2011(031)002
【摘要】ABAQUS为二次开发用户提供了Python脚本接口.在ABAQUS环境下执行Python脚本,可方便地实现自动化创建、重复、修改模型及分析任务,实现参数化研究,访问结果数据库等功能.以某支架为例,介绍了基于Python的ABAQUS
二次开发原理与方法.
【总页数】4页(P131-134)
【作者】张强;马永;李四超
【作者单位】海军驻郑州地区军事代表室,郑州450015;中国船舶重工集团公司第
七一三研究所,郑州450015;海军驻郑州地区军事代表室,郑州450015
【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于Python的ABAQUS二次开发在骨钻削仿真中的应用 [J], 陈春城;胡亚辉;郑清春;张善青
2.基于Python的ABAQUS二次开发应用 [J], 谢瑞敏;王雪军
3.基于Python/ABAQUS二次开发在创建变速器内部传动系有限元模型的应用 [J], 王金明;邓小梅
4.基于Python的ABAQUS二次开发在飞机蒙皮锤铆中的应用 [J], 陈彦海;秦运
海;姜春英;康玉祥;叶长龙
5.基于Python的ABAQUS二次开发在复合材料层合板冲击建模中的应用 [J], 陈芳育;李进;邱玮桢;吕泉江
因版权原因,仅展示原文概要,查看原文内容请购买。
基于ABAQUS的速度相关型阻尼器单元二次开发
基于ABAQUS的速度相关型阻尼器单元二次开发
葛少平;李爱群
【期刊名称】《工程抗震与加固改造》
【年(卷),期】2014(36)3
【摘要】大型通用有限元软件ABAQUS既具有强大的非线性分析功能,又有开放的子程序接口供用户根据自己的实际情况进行开发.本文基于用户单元子程序UEL 接口,根据ABAQUS隐式动态分析原理推导了速度相关型阻尼器的单元刚度矩阵和单元阻尼矩阵,并利用Fortran语言开发了粘弹性阻尼器和粘滞流体阻尼器这两种速度相关型阻尼器的单元子程序Udamper.for,且实现了阻尼器力-位移滞回曲线与耗能曲线的输出.对一个设置速度相关型阻尼器的钢框架模型,进行了动力时程分析,并与SAP2000的计算结果进行了对比,验证了本程序的准确性及附加阻尼器对建筑结构所具有的减震作用.
【总页数】7页(P1-6,20)
【作者】葛少平;李爱群
【作者单位】东南大学土木工程学院,江苏南京210096;东南大学混凝土及预应力混凝土结构教育部重点实验室,江苏南京210096;东南大学土木工程学院,江苏南京210096;东南大学混凝土及预应力混凝土结构教育部重点实验室,江苏南京210096【正文语种】中文
【中图分类】TU352.1
【相关文献】
1.位移相关型和速度相关型阻尼器耗能特征对比研究 [J], 马乐阳
2.基于ABAQUS的梁柱单元混凝土本构的二次开发 [J], 冯剑秋;胡博修;张金岭
3.基于ABAQUS二次开发的索单元 [J], 李昊;简方梁;曹一山
4.基于 Abaqus 的剪切型阻尼器单元开发与应用 [J], 陈聪;吕西林
5.基于ABAQUS的橡胶垫隔震支座单元二次开发 [J], 王晖;方明胜;孙作玉;;;因版权原因,仅展示原文概要,查看原文内容请购买。
Abaqus二次开发
Abaqus二次开发——Abaqus/python入门体会入门实例#===========================================================自己的论文要用到有限元进行数值模拟分析,以前都用ansys计算,可ansys中岩土的本构模型只有D-P模型,无法准确的反映土的硬化/软化性质,模拟计算出的结果因此也和实际差别很大。
Abaqus有着丰富的材料模型,超强的非线性分析能力,岩土的模型也很多,因此才转学Abaqus。
Abaqus的cae建模功能还是很好的,但科研课题一般都要进行参数分析,采用cae的建模方法有些不切实际,学了没几天就放弃cae开始学习inp,也是学了一阵子才知道inp不能建立实体模型,只能直接建节点和单元。
复杂的模型inp也无法建立,但采用Python建模就可以解决这个问题。
由于Abaqus的学习资料不多,过了好些日子才知道Abaqus也可以采用Python语言进行建模计算,只是比Ansys的Apdl语言复杂得多,并且除了手册上的Script资料之外,没有较为系统的教程,刚一接触真是让人头痛。
通过查看Simwe论坛上关于Python的帖子,和论坛朋友的帮助,自己在慢慢积累,现在对Python有了一点点了解,算是入了个门。
接触Abaqus也没多久,对python更是一知半解,绝大多数地方根本都不清楚,抽空写一点认识体会主要是给像自己一样刚学习Abqus Python的朋友,能少走一些弯路,节约一些时间。
同时希望大家批评指正、共同讨论、补充。
#--------------------------------------------------------------------------------------------------学习Abaqus/Python基础:Abaqus的cae建模有比较全面的认识;了解一些Python语法知识(大家都不会有太多时间单独学习Python语言本身,只需要有概念了解即可,不懂的地方可以随时查询Python script手册)Abaqus/Python学会使用不太难,可要精通应用还是要付出一定的劳动。
基于ABAQUS的橡胶减振器参数化优化设计
关键词 : 橡胶减振器 ; 参数化 ; 尺寸优化 ; 二次开发
中 图 分类 号 : T D 4 2 1 . 5+4 ; T P 3 9 1 . 9 文献 标 识 码 : B
Ru b b e r S h o c k Ab s o r b e r B a s 。针对上 述现状 , 分析 了橡胶减振器 的静 、 动 态特性和参 数选择 与设计 , 并以P y t h o n 为工
具, 基于 A B A Q U S 二次开发技术完成 了橡胶减振器参数化优化设计系统 及橡胶减 振器动态 刚度计算 系统。前者实 现了在
满足指定三 向静态刚度要求下 , 对形状复杂橡 胶减振 器的尺寸优化设计 ; 后者实现 了在指定预载及激励下 , 橡胶减振器动态 刚度的计算 。既满足了形状复杂橡胶减 振器的设计要求 , 且整个设计计算过程 自动快速 , 有效地提高了设计效率 , 缩短了产
第3 0 卷 第1 O 期
文章编号 : 1 0 0 6— 9 3 4 8 ( 2 0 1 3 ) 1 0— 0 1 9 9— 0 4
计
算
机
仿
真
2 0 1 3 年1 0 月
基于 A B AQU S的橡 胶 减 振 器 参 数 化 优化 设计
余 天超 , 刘 夫云 , 孙 永 厚
( 桂林 电子科技大学机电工程学院 , 广西 桂林 5 4 1 0 0 4 ) 摘要 : 关于发动机减振器优化设计问题 , 在橡胶减振器 的设计 中, 大多采用 经验 设计和试验修 正的方法 , 效率低 下且无法应
G u i l i n 5 4 1 0 0 4 ,C h i n a )
ABS T RACT : Re c e n t l y,t h e e x p e i r e n c e d e s i g n a n d t e s t c o r r e c t i o n me t h o d a r e u s e d mo s t l y i n t h e d e s i n g p r o c e s s o f r u b b e r s h o c k a b s o r b e r ,b u t t h i s me t h o d h a s l o w e ic f i e n c y a n d c a n n o t b e u s e d i n c o mp l e x s h a p e o f r u b b e r s h o c k a b - s o r b e r d e s i n .I g n t h i s p a p e r w e a n a l y z e d t h e r u b b e r s h o c k a b s o r b e r o f s t a t i c,d y n a mi c p e r f o r ma n c e a n d p a r a me t e r s e —
基于Abaqus的橡胶密封垫对比分析
基于Abaqus的橡胶密封垫对比分析作者:陈思徐熹杨怀刚曾庆强来源:《计算机辅助工程》2013年第05期摘要:针对某型发动机开发中的橡胶密封垫密封问题,利用有限元分析软件Abaqus建立橡胶垫及其边界的有限元模型,讨论不同条件下密封垫的力学性能.为橡胶密封结构的设计计算提供一条新途径.关键词:橡胶;密封;有限元; Abaqus中图分类号: U464.132; TB115.1文献标志码: B引言橡胶密封件的失效主要表现为密封处的泄漏和密封件的损坏,最终导致失去密封性,产生泄漏.橡胶密封件泄漏的原因主要包括初始压缩量过小、密封表面质量差以及衬料选择和安装不当等.橡胶密封的原理是依据安装时密封件产生一定的压缩变形,使密封件与密封面紧密贴合,达到堵塞泄漏的目的.如果初始密封量过小,在低压时就会产生泄漏.一般,密封结构的装配关系和几何形状比较复杂,其中,橡胶密封元件具有非线性本构关系,会导致结构受力变得复杂,承载后出现大位移和大应变.因此,传统的设计方法在试验前不能预先对密封结构的性能进行评价,只能依赖于设计者的经验,不能满足现代精确设计的要求.本文针对某型发动机开发中的橡胶密封垫密封问题,利用有限元分析软件Abaqus建立橡胶垫及其边界的有限元模型,讨论不同条件下密封垫的力学性能,为橡胶密封结构的设计计算提供一条新途径.1Abaqus非线性超弹性模型随着社会的发展和科技的进步,CAE已经历50多年的发展,其理论和算法都已日趋成熟,现已成为工程和产品结构分析中不可或缺的重要工具.Abaqus具有强大的非线性分析能力,可以解决从相对简单的线性分析到复杂的非线性问题.1.1超弹性材料的本构方程确定弹性体材料的非线性特性非常困难,超弹性材料的模拟运用的是基于应变能密度的本构理论.这些本构方程主要有2类:第一类认为应变能密度是主应变不变量的一个多项式函数,当材料不可压缩时,该材料模型通常被称为Rivlin 材料,如果仅仅一次项被采用,那么模型被称为MooneyRivlin材料.第二类认为应变能密度是3个主伸长率的独立函数,如Ogden,Peng和PengLandel材料模型.[1]1.2两参数的MooneyRivlin模型常数的确定1.2.1利用橡胶的硬度对于橡胶材料,在小应变时弹性模量E0,剪切模量G,材料常数C1和C2的关系为G=E03=2(C1+C2)(6)根据橡胶硬度HA与弹性模量E0的试验数据,拟合得到二者之间的关系式为E0=15.75+2.15HA100-HA (7)记录硬度计读数HA,就可将其转化为弹性模量,再根据公式,只要确定C2/C1的比值,就可以得到C1和C2.1.2.2利用经验公式如果分析人员仅有一个C01值,并想在模型中包含一个非零的C10,则可假定C01=0.25C10,由式(5)可得E=6(C10+0.25C01)(8)C10=E6×1.25 (9)2有限元模型和分析方法某型发动机开发中,凸轮轴座去掉一部分材料后,橡胶密封垫变为单根筋密封,需评估凸轮轴位置传感器位置密封圈是否存在密封失效风险,同时对比2根筋都起密封作用时的情况.发动机模型见图1.图 1发动机模型由于密封垫和缸盖罩的沟槽在结构上是轴对称的,在理想状况下,密封垫沿轴线方向上的载荷也是轴对称的.[2]因此,可以将此处的密封垫密封研究由三维简化为二维问题.缸盖罩、密封垫和凸轮轴座的几何截面模型见图2.图 2截面几何模型选用的橡胶密封垫材料为丙烯酸酯橡胶,硬度(邵尔A型)为65.通过式(7)得到弹性模量E0,再根据经验公式,得C01=0.110 691,C10=0.427 63.缸盖罩与凸轮轴座为解析刚体模型,无需划分网格;密封垫为可变形体,网格划分情况见图3.边界条件为对凸轮轴设置固定约束,限制其各个方向的平动和转动自由度.[3]对缸盖罩施加向下1.8 mm的位移.密封垫与缸盖罩及凸轮轴座定义有限滑移(finite sliding)接触关系,摩擦类型为库伦摩擦,摩擦因数为0.11.(a)单根筋密封(b)2根筋密封图 3有限元模型3计算结果和分析压应力结果见图4,可知,单根筋与2根筋密封时,上、下接触面的接触应力均大于1 MPa,密封垫能很好地保证密封效果.接触压力的大小反应密封垫的密封能力,保证密封的必要条件是最大接触压力大于或等于油压.(a)单根筋密封(b)2根筋密封图 4压应力结果, MPavon Mises应力结果见图5,可知,单根筋密封的最大von Mises应力为2.16 MPa,而2根筋密封的von Mises应力为0.92 MPa.这是由于单根筋时,密封垫与凸轮轴接触会有一定的倾斜所致.最大von Mises应力反应截面上各主应力差值的大小,一般,von Mises应力越大,将越加速橡胶材料的松弛,造成刚度下降,材料越容易出现裂纹.压缩率过大会出现应力松弛.在静密封时,油封介质为油/空气,压缩率在15%~25%为佳.因此,如图6所示,单根筋密封的最大应变为49.37%,有出现应力松弛的危险.(a)单根筋密封(b)2根筋密封图 5von Mises应力结果, MPa(a)单根筋密封(b)2根筋密封图 6应变结果4结束语凸轮轴座去掉一部分材料后,虽然密封垫只有一根筋产生密封作用,但是能很好地保证密封效果.由于其接触时有一定的倾斜,会产生较大的von Mises应力和过大的压缩率,加速橡胶的松弛,造成刚度下降,在后续设计中应修改橡胶垫的结构.相较于传统的设计方法,运用Abaqus能有效预测橡胶密封垫的载荷分布,能更直观、定量地了解橡胶密封垫在工作时的应力应变状态,减少试验费用,缩短产品的设计周期,是橡胶密封设计和优化的理想工具.参考文献:[1]王伟,邓涛,赵树高. 橡胶MooneyRivlin模型中材料常数的确定[J]. 特种橡胶制品,2004(8): 810.[2]尚付成,饶建华,沈钦凤,等. 超高液压下O形橡胶密封圈的有限元分析[J]. 液压与气动, 2010(1): 6769.[3]石亦平,周玉蓉. Abaqus有限元分析实力讲解[M]. 北京:机械工业出版社, 2006.(编辑陈锋杰)。
基于ABAQUS的橡胶隔振器静态特性分析
、材料:至产与工密)信息记录材料2019年5月第20卷第5期基于ABAQUS的橡胶隔振器静态特性分析郭阳阳(武汉职业技术学院湖北武汉430074)【摘要】本文对橡胶材料的非线性本构关系进行了分析,应用有限元软件ABAQUS建立橡胶隔振器模型,选用Mooney-Rivlin超弹性模型模拟橡胶的材料属性,仿真分析了橡胶隔振器的垂向静刚度随预载荷变化的关系。
同时与经验公式对比分析,有限元仿真结果与计算结果在误差范围之内,表明有限元计算方法能较理想的获得橡胶隔振器静态特性,可为优化悬置系统的整体性能提供依据.【关槌词】橡胶隔振器;ABAQUS;静态特性【中图分类号】TQ33【文献标识码】A【文章编号】1009-5624(2019)05-0050-021引言汽车悬置系统为发动机与车身的弹性连接,其主要作用不仅是支撑动力总成,而且是双向隔离动力总成跟车架之间传递的振动和噪声的重要组成。
橡胶隔振器静态特性可以反映出不同预载荷下,隔振器静刚度的变化,可以为后续研究橡胶隔振器的动态特性提供基础,可为优化悬置系统的整体性能提供依据。
2橡胶隔振器的静刚度静刚度是表示在静载荷下的材料或构件抵抗变形的能力。
通常结构的静刚度与几何形状、载荷作用形式、材料的弹性模量等因素密切相关。
金属的静刚度在各个载荷下基本上是一样的,我们称之为线性材料。
然而橡胶件的静刚度在不同载荷下不一样,我们称之为非线性材料。
对于发动机悬置系统来说,它的静刚度考量的原则是(1)支撑作用,那么其设计的时候就要考虑到许用弹性载荷、动力总成角度、最大位移量等要素。
(2)限位效果,也就是说可以固定动力总成。
(3)设计动刚度预订值,如果悬置系统完全是弹性体,由于弹性材料的动静刚度比是固定的,就可以通过调控静刚度来预设其动刚度。
3橡胶材料的非线性分析3.1橡胶材料的本构关系橡胶是一种高弹性的聚合物材料,具有可逆形变的能力和非线性特性。
当受到较小的应力作用时,它会呈现出较大的变形量,它的伸长率极限可以达到5~10倍[3]o 它不再遵循虎克定律,它的变化是非线性的。
基于Python的Abaqus二次开发实例讲解
基于Python的Abaqus二次开发实例讲解(asian58 2013.6.26)基于Python的Abaqus的二次开发便捷之处在于:1、所有的代码均可以先在Abaqus\CAE中操作一遍后再通过rp文件读取,然后再在此基础上进行相应的修改;2、Python是一种解释性语言,读起来非常清晰,因此在修改程序的过程中,不存在程序难以理解的问题;3、Python是一种通用性的、功能非常强大的面向对象编程语言,有许多成熟的类似于Matlab函数的程序在网络上流传,为后期进一步的数据处理提供了方便。
为了更加方便地完成Abaqus的二次开发,需进行一些相关约定:1、所有参数化直接通过点的坐标值进行,直接对几何尺寸的参数化反而更加繁琐;2、程序参数化已不允许在模型中添加太多的Tie,因此不同零部件的绑定直接通过共节点来进行,这就要求建模方法与常规的建模方法有所区别。
思路如下:将一个整机拆成几个大的Part来建立,一个Part中包含许多零件,这样在划分网格式时就可以自动实现共节点的绑定。
不同的零件可通过建立不同的Set来进行区分,不同Part 的绑定可以通过Tie来实现。
将一个复杂的结构拆成几个恰当的Part来建立,一方面可以将复杂的模型简单化,使建立复杂模型成为可能;另一方面,不同的Part可单独调用,从而又可实现程序的模块化,增加程序的适应范围,延长程序的使用寿命,也方便后期程序的维护和修改。
3、通过py文件建立起的模型要进行参数优化,已不适合采用Isight中Abaqus模块,需要用到Isight的Simcode模块。
下面详细解释一个臂架的py文件。
#此程序用来绘制臂架前段#导入相关模块# -*- coding: mbcs -*-from abaqus import *from abaqusConstants import *#定义整个臂架的长、宽、高L0=14300W0=1650H0=800#创建零件P01_12 L1=H0+200 W1=200 T1=12s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=2000.0)g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints s.setPrimaryObject(option=STANDALONE)s.rectangle(point1=(W0/2, L1/2), point2=(W0/2+W1, -L1/2))s.rectangle(point1=(-W0/2, L1/2), point2=(-W0/2-W1, -L1/2))p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D, type=DEFORMABLE_BODY)p = mdb.models['Model-1'].parts['Part-1'] p.BaseShell(sketch=s)session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__']#定义零件的厚度p = mdb.models['Model-1'].parts['Part-1'] f = p.faces pickedFaces01 = f.findAt (((W0/2, L1/2, 0),),((-W0/2, L1/2, 0),), ) p.assignThickness(faces=pickedFaces01, thickness=T1) p.Set(faces=pickedFaces01, name='P01_12')#创建辅助平面和辅助坐标系p = mdb.models['Model-1'].parts['Part-1']p.DatumCsysByThreePoints(name='Datum csys-1', coordSysType=CARTESIAN, origin=( 0.0, 0.0, 0.0), line1=(1.0, 0.0, 0.0), line2=(0.0, 1.0, 0.0))p = mdb.models['Model-1'].parts['Part-1']p.DatumPlaneByPrincipalPlane(principalPlane=XYPLANE, offset=L0)#创建零件P02_12 L2=L1 W2=W1 T2=12p = mdb.models['Model-1'].parts['Part-1'] d = p.datums#将草图原点参数化t = p.MakeSketchTransform(sketchPlane=d[5], sketchUpEdge=d[4].axis2, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0, L0)) s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=29006.85, gridSpacing=725.17, transform=t) g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraints s.setPrimaryObject(option=SUPERIMPOSE)p = mdb.models['Model-1'].parts['Part-1']s.rectangle(point1=(W0/2, L2/2), point2=(W0/2+W2, -L2/2))s.rectangle(point1=(-W0/2, L2/2), point2=(-W0/2-W2, -L2/2))p = mdb.models['Model-1'].parts['Part-1']d2 = p.datumsp.Shell(sketchPlane=d2[5], sketchUpEdge=d2[4].axis2, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s)s.unsetPrimaryObject()del mdb.models['Model-1'].sketches['__profile__']#定义零件的厚度p = mdb.models['Model-1'].parts['Part-1'] Array f = p.facespickedFaces02 = f.findAt(((W0/2, L1/2, L0),),((-W0/2, L1/2, L0),), )p.assignThickness(faces=pickedFaces02, thickness=T2)p.Set(faces=pickedFaces02, name='P02_12')#创建零件P03_12和零件P04_08T3=12T4=8p = mdb.models['Model-1'].parts['Part-1']d = p.datumst = p.MakeSketchTransform(sketchPlane=d[5], sketchUpEdge=d[4].axis2, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0, L0)) s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=29006.85, gridSpacing=725.17, transform=t)g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraintss.setPrimaryObject(option=SUPERIMPOSE)#创建草图p = mdb.models['Model-1'].parts['Part-1']s.Line(point1=(-W0/2-W1, H0/2), point2=(-W0/2, H0/2))s.Line(point1=(W0/2, H0/2), point2=(W0/2+W1, H0/2))s.Line(point1=(-W0/2-W1, -H0/2), point2=(-W0/2, -H0/2))s.Line(point1=(W0/2, -H0/2), point2=(W0/2+W1, -H0/2))p = mdb.models['Model-1'].parts['Part-1']d2 = p.datumsp.ShellExtrude(sketchPlane=d2[5], sketchUpEdge=d2[4].axis2,sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, depth=L0, flipExtrudeDirection=ON)s.unsetPrimaryObject()del mdb.models['Model-1'].sketches['__profile__']#定义零件P03_12的厚度p = mdb.models['Model-1'].parts['Part-1']f = p.facespickedFaces03 = f.findAt(((-W0/2, H0/2, L0/2),),((W0/2, H0/2, L0/2),),)p.assignThickness(faces=pickedFaces03, thickness=T3)p.Set(faces=pickedFaces03, name='P03_12')#定义零件P04_12的厚度p = mdb.models['Model-1'].parts['Part-1']f = p.facespickedFaces04 = f.findAt(((-W0/2, -H0/2, L0/2),),((W0/2, -H0/2, L0/2),),)p.assignThickness(faces=pickedFaces04, thickness=T4)p.Set(faces=pickedFaces04, name='P04_12')#创建零件P05_08T5=8p = mdb.models['Model-1'].parts['Part-1']d = p.datumst = p.MakeSketchTransform(sketchPlane=d[5], sketchUpEdge=d[4].axis2, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0, L0))s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',sheetSize=29006.85, gridSpacing=725.17, transform=t)g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraintss.setPrimaryObject(option=SUPERIMPOSE)p = mdb.models['Model-1'].parts['Part-1']s.Line(point1=(-W0/2-W1/2, H0/2), point2=(-W0/2-W1/2, -H0/2))s.Line(point1=(W0/2+W1/2, H0/2), point2=(W0/2+W1/2, -H0/2))p = mdb.models['Model-1'].parts['Part-1']d2 = p.datumsp.ShellExtrude(sketchPlane=d2[5], sketchUpEdge=d2[4].axis2,sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, depth=L0,flipExtrudeDirection=ON)s.unsetPrimaryObject()del mdb.models['Model-1'].sketches['__profile__']#定义零件P05_8的厚度p = mdb.models['Model-1'].parts['Part-1']f = p.facespickedFaces05 = f.findAt(((-W0/2-W1/2, 0, L0/2),),((W0/2+W1/2, 0, L0/2),),)p.assignThickness(faces=pickedFaces05, thickness=T5)p.Set(faces=pickedFaces05, name='P05_08')#创建零件P06_08L6=W0+W1n=L0//2520+1T6=8p = mdb.models['Model-1'].parts['Part-1']f, d = p.faces, p.datumst = p.MakeSketchTransform(sketchPlane=f[0], sketchUpEdge=d[4].axis2, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(W0/2+W1/2, -H0/2,0))s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',sheetSize=28684, gridSpacing=717, transform=t)g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraintss.setPrimaryObject(option=SUPERIMPOSE)p = mdb.models['Model-1'].parts['Part-1']#循环命令绘制平行隔板for i in range(0,n): Array s.Line(point1=(-500-(i*2520), H0), point2=(-500-(i*2520), 0.0))p = mdb.models['Model-1'].parts['Part-1']f1, d2 = p.faces, p.datumsp.ShellExtrude(sketchPlane=f1[0], sketchUpEdge=d2[4].axis2,sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, depth=L6,flipExtrudeDirection=ON)s.unsetPrimaryObject()del mdb.models['Model-1'].sketches['__profile__']#定义零件P06_08的厚度p = mdb.models['Model-1'].parts['Part-1']f = p.facesfor i in range(0,n): Array pickedFaces = f.findAt(((0, H0/4, 500+i*2520),))p.assignThickness(faces=pickedFaces, thickness=T6)p.Set(faces=pickedFaces, name='P06_08_'+str(1+i))#创建零件P07_12,P08_12W7=200L7=W0+W1T7=12T8=12p = mdb.models['Model-1'].parts['Part-1']f, e = p.faces, p.edgest = p.MakeSketchTransform(sketchPlane=f.findAt(coordinates=(W0/2+W1/2, 0.0, 100.0)),sketchUpEdge=e.findAt(coordinates=(W0/2+W1/2, 0.0, 0.0)),sketchOrientation=RIGHT,sketchPlaneSide=SIDE1,origin=(W0/2+W1/2, -H0/2, 0.0))s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',sheetSize=53678, gridSpacing=1341, transform=t)g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraintss.setPrimaryObject(option=SUPERIMPOSE)p = mdb.models['Model-1'].parts['Part-1']#循环命令绘制平行隔板for i in range(0,n):s.Line(point1=(400+i*2520, -H0), point2=(600+i*2520, -H0))s.Line(point1=(400+i*2520, 0), point2=(600+i*2520, 0))p = mdb.models['Model-1'].parts['Part-1']f1, e1 = p.faces, p.edgesp.ShellExtrude(sketchPlane=f.findAt(coordinates=(W0/2+W1/2, 0.0, 100.0)),sketchUpEdge=e.findAt(coordinates=(W0/2+W1/2, 0.0, 0.0)),sketchPlaneSide=SIDE1,sketchOrientation=RIGHT, sketch=s, depth=W0+W1, flipExtrudeDirection=ON, keepInternalBoundaries=ON)s.unsetPrimaryObject()del mdb.models['Model-1'].sketches['__profile__']#定义零件P07_12的厚度p = mdb.models['Model-1'].parts['Part-1']f = p.facesfor i in range(0,n):pickedFaces07 = f.findAt(((0, H0/2, 400+i*2520),),((0, H0/2, 600+i*2520),),) p.assignThickness(faces=pickedFaces07, thickness=T7)p.Set(faces=pickedFaces07, name='P07_12_'+str(1+i))fp=[]for i in range(0,2):fp.append(f.findAt(((0, H0/2, 400+i*2520),),((0, H0/2, 600+i*2520),),))p.Set(faces=fp, name='P07_fp')#定义零件P08_12的厚度p = mdb.models['Model-1'].parts['Part-1']f = p.facesfor i in range(0,n):pickedFaces08 = f.findAt(((0, -H0/2, 400+i*2520),),((0, -H0/2, 600+i*2520),),) p.assignThickness(faces=pickedFaces08, thickness=T7)p.Set(faces=pickedFaces08, name='P08_12_'+str(1+i))#为中间隔板创建空腔#定义相关参数边界距离、圆角d0=100r0=100p = mdb.models['Model-1'].parts['Part-1']f1, e1 = p.faces, p.edgest = p.MakeSketchTransform(f.findAt(coordinates=(0, 0.0, 500.0)),sketchUpEdge=e.findAt(coordinates=(W0/2+W1/2, 0.0, 500.0)),sketchPlaneSide=SIDE1, sketchOrientation=RIGHT,origin=(0.0, 0.0, 500.0))s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',sheetSize=5910.0, gridSpacing=147.0, transform=t)g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraintss.setPrimaryObject(option=SUPERIMPOSE)p = mdb.models['Model-1'].parts['Part-1']p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES)#创建矩形s.rectangle(point1=(-W0/2-W1/2+d0, H0/2-d0), point2=(W0/2+W1/2-d0, -H0/2+d0)) #创建圆角s.FilletByRadius(radius=r0,curve1=g[29], nearPoint1=(-W0/2-W1/2+d0, H0/2-d0), curve2=g[26], nearPoint2=(-W0/2-W1/2+d0, H0/2-d0))s.FilletByRadius(radius=r0, curve1=g[26], nearPoint1=(-W0/2-W1/2+d0, -H0/2+d0), curve2=g[27], nearPoint2=(-W0/2-W1/2+d0, -H0/2+d0)) s.FilletByRadius(radius=r0, curve1=g[27], nearPoint1=(W0/2+W1/2-d0, -H0/2+d0), curve2=g[28], nearPoint2=(W0/2+W1/2-d0, -H0/2+d0)) s.FilletByRadius(radius=r0, curve1=g[28], nearPoint1=(W0/2+W1/2-d0, H0/2-d0), curve2=g[29], nearPoint2=(W0/2+W1/2-d0, H0/2-d0))p = mdb.models['Model-1'].parts['Part-1']f1, d2 = p.faces, p.datumsp.CutExtrude(f.findAt(coordinates=(0, 0.0, 500.0)),sketchUpEdge=e.findAt(coordinates=(W0/2+W1/2, 0.0, 500.0)),sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, depth=L0, flipExtrudeDirection=OFF)s.unsetPrimaryObject()del mdb.models['Model-1'].sketches['__profile__']#开始建立梁Beam_1p = mdb.models['Model-1'].parts['Part-1']f, d = p.faces, p.datums#绘制参考面p.DatumPlaneByOffset(plane=f.findAt(coordinates=(W0/2, -H0/2, 100.0)),flip=SIDE2, offset=8.0)dp1 = d.keys()[-1]p = mdb.models['Model-1'].parts['Part-1']d = p.datumst = p.MakeSketchTransform(sketchPlane=d[dp1], sketchUpEdge=d[4].axis1,sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0,0.0))s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=31857.0, gridSpacing=796.0, transform=t)g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraintss.setPrimaryObject(option=SUPERIMPOSE)p = mdb.models['Model-1'].parts['Part-1']#计算中间加强梁的数量if n%2==1:n1=n//2 n2=n//2 else:n1=n//2 n2=n//2-1 for i in range(0,n1):s.Line(point1=(-500-i*2520*2, W0/2+W1/2), point2=(-500-2520-i*2520*2,-W0/2-W1/2 )) for i in range(0,n2):s.Line(point1=(-500-2520-i*2520*2,-W0/2-W1/2), point2=(-500-2*2520-i*2520*2,W0/2+W1/2 ))#在基准平面dp1上面绘制梁p = mdb.models['Model-1'].parts['Part-1'] d2 = p.datums e = p.edgesp.Wire(sketchPlane=d2[dp1], sketchUpEdge=d2[4].axis1, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s) s.unsetPrimaryObject()del mdb.models['Model-1'].sketches['__profile__'] edges1=[] for i in range(0,n-1): edges1.append (e.findAt(((0, -H0/2-8, 500+2520/2+i*2520),),)) p.Set(edges=edges1, name='Beam_1') ############################开始定义有限元分析的相关参数 #定义材料mdb.models['Model-1'].Material(name='steel')mdb.models['Model-1'].materials['steel'].Elastic(table=((210000.0, 0.3), )) mdb.models['Model-1'].materials['steel'].Density(table=((7.8e-06, ), ))#定义壳单元属性mdb.models['Model-1'].HomogeneousShellSection(name='shell', preIntegrate=OFF, material='steel', thicknessType=UNIFORM, thickness=10.0, thicknessField='', idealization=NO_IDEALIZATION, poissonDefinition=DEFAULT,thicknessModulus=None, temperature=GRADIENT, useDensity=OFF, integrationRule=SIMPSON, numIntPts=5) #赋所有壳单元属性p = mdb.models['Model-1'].parts['Part-1']for i in range(1,5):region1 = p.sets['P0'+str(i)+'_12']p.SectionAssignment(region=region1, sectionName='shell', offset=0.0,offsetType=FROM_GEOMETRY , offsetField='',thicknessAssignment=FROM_GEOMETRY )region2 = p.sets['P05_08']p.SectionAssignment(region=region2, sectionName='shell', offset=0.0, offsetType=FROM_GEOMETRY, offsetField='',thicknessAssignment=FROM_GEOMETRY)for i in range(1,n+1): Array region3 = p.sets['P06_08_'+str(i)]p.SectionAssignment(region=region3, sectionName='shell', offset=0.0,offsetType=FROM_GEOMETRY, offsetField='',thicknessAssignment=FROM_GEOMETRY)for i in range(1,n+1):region4 = p.sets['P07_12_'+str(i)]p.SectionAssignment(region=region4, sectionName='shell', offset=0.0,offsetType=FROM_GEOMETRY, offsetField='',thicknessAssignment=FROM_GEOMETRY)for i in range(1,n+1):region5 = p.sets['P08_12_'+str(i)]p.SectionAssignment(region=region5, sectionName='shell', offset=0.0,offsetType=FROM_GEOMETRY, offsetField='',thicknessAssignment=FROM_GEOMETRY)#定义梁单元属性mdb.models['Model-1'].LProfile(name='L_65', a=65.0, b=65.0, t1=7.0, t2=7.0)mdb.models['Model-1'].BeamSection(name='B_65', integration=DURING_ANALYSIS,poissonRatio=0.0, profile='L_65', material='steel', temperatureVar=LINEAR,consistentMassMatrix=False)#赋所有梁单元属性p = mdb.models['Model-1'].parts['Part-1']region = p.sets['Beam_1']p.SectionAssignment(region=region, sectionName='B_65', offset=0.0,offsetType=MIDDLE_SURFACE, offsetField='',thicknessAssignment=FROM_SECTION)p.assignBeamSectionOrientation(region=region, method=N1_COSINES, n1=(0.0, 0.0,-1.0))#定义装配体import assemblya = mdb.models['Model-1'].rootAssemblya.DatumCsysByDefault(CARTESIAN)p = mdb.models['Model-1'].parts['Part-1']a.Instance(name='Part-1-1', part=p, dependent=ON)#定义分析步import stepmdb.models['Model-1'].StaticStep(name='Step-1', previous='Initial')#定义底面与梁的tiedimport interactiona = mdb.models['Model-1'].rootAssemblyregion1=a.instances['Part-1-1'].sets['P04_12']region2=a.instances['Part-1-1'].sets['Beam_1']mdb.models['Model-1'].Tie(name='Constraint-1', master=region1, slave=region2, positionToleranceMethod=COMPUTED, adjust=OFF, tieRotations=ON, thickness=ON)#开始定义耦合#导入相关模块import regionToolseta = mdb.models['Model-1'].rootAssemblyd, r = a.datums, a.referencePoints#定义参考点a.ReferencePoint(point=(0.0, H0/2, 500+2520/2))rp1 = r.keys()[-1]refPoints1=(r1[rp1], )region1=regionToolset.Region(referencePoints=refPoints1)s1 = a.instances['Part-1-1'].facesregion2 = a.instances['Part-1-1'].sets['P07_fp']mdb.models['Model-1'].Coupling(name='Constraint-2', controlPoint=region1, surface=region2, influenceRadius=WHOLE_SURFACE, couplingType=DISTRIBUTING, localCsys=None, u1=ON, u2=ON, u3=ON, ur1=ON, ur2=ON, ur3=ON)#########################定义边界条件import loada = mdb.models['Model-1'].rootAssemblyd, r = a.datums, a.referencePointsregion = a.instances['Part-1-1'].sets['P02_12']mdb.models['Model-1'].DisplacementBC(name='SPC', createStepName='Initial', region=region, u1=SET, u2=SET, u3=SET, ur1=SET, ur2=SET, ur3=SET,amplitude=UNSET, distributionType=UNIFORM, fieldName='', localCsys=None)a = mdb.models['Model-1'].rootAssemblyregion = a.instances['Part-1-1'].sets['P08_12_'+str(n-1)]mdb.models['Model-1'].DisplacementBC(name='SPC2', createStepName='Initial', region=region, u1=SET, u2=SET, u3=SET, ur1=SET, ur2=SET, ur3=SET,amplitude=UNSET, distributionType=UNIFORM, fieldName='', localCsys=None)r1 = a.referencePointsrefPoints1=(r1[rp1], )region = regionToolset.Region(referencePoints=refPoints1)mdb.models['Model-1'].ConcentratedForce(name='force', createStepName='Step-1',region=region, cf2=-10000.0, distributionType=UNIFORM, field='',localCsys=None)mdb.models['Model-1'].Gravity(name='G', createStepName='Step-1', comp2=-9.8, distributionType=UNIFORM, field='')#################划分网格import meshp = mdb.models['Model-1'].parts['Part-1']p.seedPart(size=20.0, deviationFactor=0.1, minSizeFactor=0.1)p.generateMesh()a = mdb.models['Model-1'].rootAssembly###############创建作业并提交分析import jobmdb.Job(name='006', model='Model-1', description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90,memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True,explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF,modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='',scratch='', multiprocessingMode=DEFAULT, numCpus=4, numDomains=4) mdb.jobs['006'].submit(consistencyChecking=ON)mdb.jobs['006'].waitForCompletion()###############进入后处理模块import visualizationo3 = session.openOdb(name='F:/ABAQUS/006.odb')session.viewports['Viewport: 1'].setValues(displayedObject=o3)session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=( CONTOURS_ON_DEF, ))session.viewports['Viewport: 1'].view.setValues(session.views['Iso'])mdb.saveAs(pathName='F:/ABAQUS/006.cae')第11 页共11 页。
abaqus 二次开发详解
#开头的为注释行.第一步, 建立建模环境, 这一步中py将从abaqus中导入建模所需的所有程序模块.from part import *接下来定义草图环境mdb.models['Model A'].Sketch(name='__profile__', sheetSize=200.0)mdb.models['ModelA'].sketches['__profile__'].sketchOptions.setValues(constructionGeometry=ON, decimalPlaces=2, dimensionTextHeight=5.0, grid=ON,gridFrequency=2, gridSpacing=5.0, sheetSize=200.0, viewStyle=AXISYM)上面的设定为大小200*200, 格栅间距为5, 文字标注高度为5.mdb.models['Model A'].sketches['__profile__'].ObliqueConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0))本句语句设定轴对称模型的对称轴线位置mdb.models['Model A'].sketches['__profile__'].rectangle(point1=(0.0, 0.0),point2=(40.0, -40.0))该语句绘制矩形, 从点0,0 至点40,-40mdb.models['Model A'].Part(dimensionality=AXISYMMETRIC, name='Boden',type=DEFORMABLE_BODY)定义模型为轴对称, 名字为boden,为可变形体mdb.models['Model A'].parts['Boden'].BaseShell(sketch=mdb.models['ModelA'].sketches['__profile__'])del mdb.models['Model A'].sketches['__profile__']绘图完成不要忘记收回建模环境所占的内存第二节: 材料定义 -------------------- 2楼第三节: 装配 -------------------- 3楼第四节: 分析步定义 -------------------- 4楼第五节: 接触定义 -------------------- 5楼第六节: 荷载边界定义 ----------------- 6楼第七节: 网格划分控制 ------------------ 7楼第八节, 任务提交及杂项功能 -------- 8楼关于如何在python中提交多个任务的问题 9楼第二节, 材料定义from material import *from section import *从ABAQUS提供的接口中导入材料库和组件库mdb.models['Model-A'].Material(name='Boden')定义材料名mdb.models['Model A'].materials['Boden'].Density(table=((2000.0, ), ))定义材料密度mdb.models['Model A'].materials['Boden'].Elastic(table=((210546.3, 0.3333), ))定义材料线弹性模量和泊松比, 其它的材料, 如弹塑性, 粘弹性材料均对应不同的对象函数. mdb.models['Model A'].HomogeneousSolidSection(material='Boden',name='boden',thickness=1.0)mdb.models['ModelA'].parts['Boden'].assignSection(region=Region(faces=mdb.models['ModelA'].parts['Boden'].faces[0:1]), sectionName='boden')设定组件为坐标无关性材料,厚度为单位厚度, 并将属性附给所用的组件第三节, 装配from assembly import *首先, 导入装配所用到的对象mdb.models['ModelA'].rootAssembly.DatumCsysByThreePoints(coordSysType=CYLINDRICAL, origin=(0.0, 0.0, 0.0), point1=(1.0, 0.0, 0.0), point2=(0.0,0.0, -1.0))定义坐标类型为柱坐标, 原点0,0,0,另外两个为单位向量, 确定该坐标轴的方向.mdb.models['Model A'].rootAssembly.Instance(name='Boden-1',part=mdb.models['Model A'].parts['Boden'])生成草图对像boden的实体, 名字叫Boden-1. 无偏移插入第四节, 定义分析步from step import *象其它步一样, 先导入分析步要用到的模块mdb.models['Model A'].ImplicitDynamicsStep(initialInc=0.005,maxNumInc=1024,name='Step-1', noStop=OFF, nohaf=OFF,previous='Initial',timeIncrementationMethod=FIXED, timePeriod=5.12)定义对动力隐式分析, 时长为0.005*1024=5.12个时间单位, 前一步为Initialmdb.models['Model A'].fieldOutputRequests['F-Output-1'].setValues(variables=('U',))定义输出到ODB文件的数据, 这里只定义了位移输出mdb.models['Model A'].fieldOutputRequests['F-Output-1'].setValues(frequency=1)定义位移输出的频率为每步都输出mdb.models['Model A'].steps['Step-1'].Restart(frequency=1, overlay=ON)定义重启动析, 每一步记录, 只记录最后一次的正确状态第五节, 定义接触from interaction import *依然是先导入所用的模块mdb.models['Model A'].rootAssembly.PartitionEdgeByParam(edges=(mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[3], ), parameter=0.975)在上部即第3面的97.5%的地方设定一个点, 用于定义接触mdb.models['Model A'].ContactProperty('IntProp-1')定义接触属性名mdb.models['Model A'].interactionProperties['IntProp-1'].TangentialBehavior(formulation=FRICTIONLESS)mdb.models['Model A'].interactionProperties['IntProp-1'].NormalBehavior(allowSeparation=OFF, augmentedLagrange=OFF, pressureOverclosure=HARD)定义接触特性,为无摩擦硬接触不允许分开mdb.models['Model A'].SurfaceToSurfaceContactStd(adjustMethod=NONE,createStepName='Initial', interactionProperty='IntProp-1', master=Region(side1Edges=mdb.models['Model A'].rootAssembly.instances['fun-1'].edges[0:1]), name='Int-1', slave=Region(side1Edges=mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[4:5]), sliding=FINITE)这一句是建立接触对, 分别为两个面上的一条边, 这里边的定义由ABAQUS内定, 具体可以查阅参考手册第六节, 荷载边界定义from load import *mdb.models['Model A'].PeriodicAmplitude(a_0=1.0, data=((3.0, 1.1), (3.2, 1.7)), frequency=2.454, name='Fourier',start=0.0, timeSpan=STEP)定义fourier级数表示的荷载mdb.models['Model A'].Pressure(amplitude='Fourier', createStepName='Step-1', distribution=UNIFORM, magnitude=50.0, name='Load-1', region=Region(side1Edges=mdb.models['Model A'].rootAssembly.instances['fun-1'].edges[2:3]))定义压强, 设定加载的分析步,区域及放大系数mdb.models['Model A'].DisplacementBC(amplitude=UNSET,createStepName='Initial',distribution=UNIFORM, localCsys=None, name='BC-1', region=Region(edges=mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[0:1]+\mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[2:3]+\mdb.models['Model A'].rootAssembly.instances['fun-1'].edges[3:4]),u1=SET,u2=UNSET, ur3=UNSET)mdb.models['Model A'].DisplacementBC(amplitude=UNSET, createStepName='Initial', distribution=UNIFORM, localCsys=None, name='BC-2', region=Region(edges=mdb.models['Model A'].rootAssembly.instances['Boden-1'].edges[1:2]),u1=UNSET, u2=SET, ur3=UNSET)设定边界位移为0的边界条件, 注意语法中对象相加的方法.第七节, 网格划分控制from mesh import *import mesh导入网格划分模块elemType1 = mesh.ElemType(elemCode=CAX8,elemLibrary=STANDARD,secondOrderAccuracy=OFF, hourglassControl=STIFFNESS, distortionControl=OFF)elemType2 = mesh.ElemType(elemCode=CAX6M, elemLibrary=STANDARD)a1 = mdb.models['Model A'].rootAssemblyf1 = a1.instances['Boden-1'].facesfaces1 = f1[0:1]regions =(faces1, )a1.setElementType(regions=regions, elemTypes=(elemType1, elemType2))定义其中一个物体的网格为二次8结点单元, 如果其中有无法划分成四边形单元的情况, 则用三角形二次6结点单元.elemType1 = mesh.ElemType(elemCode=CAX4, elemLibrary=STANDARD)elemType2 = mesh.ElemType(elemCode=CAX3, elemLibrary=STANDARD)a1 = mdb.models['Model A'].rootAssemblyf1 = a1.instances['fun-1'].facesfaces1 = f1[0:1]regions =(faces1, )a1.setElementType(regions=regions, elemTypes=(elemType1, elemType2))定义其中一个物体的网格为一次4结点单元,如果其中有无法划分成四边形单元的情况, 则用三角形一次3结点单元.mdb.models['Model A'].rootAssembly.seedPartInstance(regions=(mdb.models['Model A'].rootAssembly.instances['fun-1'], ), size=0.5)mdb.models['Model A'].rootAssembly.seedPartInstance(regions=(mdb.models['Model A'].rootAssembly.instances['Boden-1'], ), size=1)定义网格划分全局单元大小.mdb.models['Model A'].rootAssembly.generateMesh(regions=(mdb.models['ModelA'].rootAssembly.instances['Boden-1'],mdb.models['ModelA'].rootAssembly.instances['fun-1']))按照定义划分单元第八节, 任务提交及杂项功能mdb.models.changeKey(fromName='Model A', toName='Fall-Muster')修改模型名称mdb.Model(name='Fall-015', objectToCopy=mdb.models['Fall-Muster'])拷贝模型mdb.models['Fall-015'].materials['Boden'].elastic.setValues(table=((210546.3, 0.15),))修改模型中的材料属性mdb.Job(contactPrint=OFF, description='', echoPrint=OFF, explicitPrecision=SINGLE, historyPrint=OFF, model='Fall-015', modelPrint=OFF,multiprocessingMode=THREADS, name='Job-015', nodalOutputPrecision=SINGLE, numCpus=1, numDomains=1, parallelizationMethodExplicit=LOOP,parallelizationMethodStandard=TREE, preMemory=1024.0, scratch='',standardMemory=2048.0, standardMemoryPolicy=MODERATE, type=ANALYSIS,userSubroutine='')生成任务mdb.saveAs(pathName='D:/temp/FundamentSchwingungStudie')保存模型mdb.jobs['Job-015'].submit()提交任务关于如何在python中提交多个任务的问题:如果您使用下面这样的命令做的提交mdb.jobs['Job-01'].submit()mdb.jobs['Job-02'].submit()mdb.jobs['Job-03'].submit()你就会看到, 所有的任务是一次性提交的, 多个任务在一起运行, 这肯定不是你想看到的结果, 如何完成一个接着一个的提交呢, 其实很简单, 在每个任务后面加上一句mdb.jobs['Job-01'].waitForCompletion()就可以了.那么上面的语句就改为mdb.jobs['Job-01'].submit()mdb.jobs['Job-01'].waitForCompletion()mdb.jobs['Job-02'].submit()mdb.jobs['Job-02'].waitForCompletion()mdb.jobs['Job-03'].submit()mdb.jobs['Job-03'].waitForCompletion()......就一切OK了。
基于Abaqus的橡胶密封垫对比分析
关 键词 : 橡 胶 ;密封 ;有 限元 ; A b a q u s
中图分 类 号 : U 4 6 4 . 1 3 2 ; T B 1 1 5 . 1 文献标 志码 : B
Co uo mp pa r i s i o n a n d a n a l y s 。 i s o 0 n r u b be e r t  ̄  ̄ a s ke K e t ba o a s e d o t 0 n A ‘ ’ D a q us C HE N S i ,X U X i ,Y A N G Hu a i g a n g , Z E N G Q i n g q i a n g
( P o w e r t r a i n R e s e a r c h a n d D e s i g n I n s t i t u t e ,C h a n g ’ a n A u t o m o b i l e C o . , L t d . , C h o u g q i n g 4 0 1 1 2 0 ,C h i n a )
基于 A b a q u s 的橡 胶 密封 垫 对 比分 析
陈思 , 徐熹 , 杨怀刚 , 曾庆 强
( 长安 汽车股份 有限公 司 动 力研 究院, 重庆 4 0 1 1 2 0 )
摘要 : 针 对 某型发 动机 开发 中的橡胶 密封垫 密封 问题 , 利 用有 限元 分 析软 件 A b a q u s 建 立橡胶 垫 及 其 边界 的有 限元模 型 , 讨 论 不 同条件 下密封 垫的 力学性 能. 为橡 胶 密封 结构 的设计 计算提 供一 条新
e l e me n t a n a l y s i s s o f t wa r e Ab a q u s i s u s e d t o b u i l t a i f n i t e e l e me n t mo d e l f o r r u b b e r g a s k e t ,a n d i t s b o u n d a r y ,t h e me c h a n i c a l p r o p e t r i e s a r e d i s c u s s e d u n d e r d i f f e r e n t v a r i o u s wo r k i n g c o n d i t i o n s ,wh i c h
使用python进行ABAQUS的二次开发的简要说明(byYoung2017.06.27)
使用python进行ABAQUS的二次开发的简要说明(byYoung2017.06.27)(所有用词以英文为准,翻译仅供参考)一、abaqus二次开发总述:首先最重要的知识点需要明确,abaqus在求解核心(Solver/ Kernel)和图形用户界面(GUI)之间使用的交互语言天然就是python,因此使用python进行abaqus二次开发是十分自然的选择(当然你也可以用C++,但是鉴于python所拥有的各类开源库函数的优势,python应当是二次开发的首选)。
abaqus已经使用python 写好了很多用于计算、建模、GUI等操作的模块,因此二次开发的重点在于灵活调用这些模块,完成自己的设计计算需求。
所以原则上,所有能通过abaqus/CAE交互完成的操作,使用脚本都可以实现。
并且由于Python提供的丰富的函数资源库,会使得很多复杂的建模的过程更加参数化,更加可控,有时候甚至更加简单。
其次二次开发的学习要点在于勤查手册,其中Abaqus Scripting User's Manual和Abaqus Scripting User's Reference Manual是查阅的重点,其中后者是abaqus中各个object内置方法,路径,输入参数等的详细说明。
最后关于调用脚本的几种用法说明:(1)直接在命令行调用调用脚本并打开cae界面: abaqus cae script=myscript.py调用用于可视化操作脚本,打开显示界面(注意:此时只有visualization模块被激活): abaqus cae viewer=myscript.py 调用脚本在命令行执行,同时不打开GUI界面,但会进入python 交互界面:abaqus cae noGUI=myscript.py(2)在abaqus的GUI界面调用按照Main Menu: File->Run Script,选择需要调用的脚本文件,abaqus会进行执行(3)在abaqus的命令行交互界面调用(command line interface,在abaqus的GUI界面打开之后,窗口的最下方会有命令输入的位置,在这里也可以调用python脚本,执行方法是键入命令:execfile('myscript.py')abaqus的python脚本其实和其他应用场景下的python脚本没有太多区别,只不过有很多abaqus已经开发好的对象库可供使用,其学习过程和学习任何其他python库都是一致的。
基于abaqus的二次开发在直升机旋翼系统弹性轴承性能设计中的应用
2020年4期创新前沿科技创新与应用Technology Innovation and Application基于Abaqus 的二次开发在直升机旋翼系统弹性轴承性能设计中的应用孙文芳(中国直升机设计研究所,江西景德镇333000)1概述直升机旋翼球面推力弹性轴承由金属大接头、金属小接头、橡胶和金属隔片经过硫化粘接在一起,是旋翼桨毂的关键部件,其取代了传统铰接式桨毂的挥舞铰、摆振铰和变距铰,从而简化了桨毂结构,提高了使用寿命、维护性和可靠性。
传统球面推力弹性轴承性能指标包括轴向压缩刚度(axial spring stiffness )、径向刚度(radial spring stiff -ness )、弯曲刚度(cocking spring stiffness )和扭转刚度(tor -sional spring stiffness )[1],产品的刚度与弹性轴承的金属隔片/橡胶叠层结构尺寸及橡胶胶料的性能直接相关。
弹性轴承传统设计方法是基于传统经验公式进行尺寸打样,然后生产出产品,在试验室进行产品的刚度试验,看设计出的产品是否满足刚度指标要求。
如不满足要求,则需返回到最初阶段,调整产品的结构尺寸和橡胶胶料配方,重复上述过程重新验证。
可见,传统方法时间周期长、研发成本高。
随着计算机技术和有限元软件的不断成熟发展,在产品试制之前,采用有限元分析预期评估产品的刚度性能是很有必要的。
橡胶材料力学行为及其复杂,材料的本构关系是非线性的。
而Abaqus 是功能强大的有限元软件,可以处理高度非线性问题,在各行业中得到广泛应用,ABAQUS 具有丰富的单元库,其丰富的材料模型库可以模拟包括橡胶等材料的性能。
Abaqus 软件提供了两种二次开发接口,即用户子程序接口(User Surbroutine )和Abaqus 脚本接口(AbaqusScripting Interface )。
前者不在本文中过多描述,本文采用了后者,后者是在Python 语言的基础上进行的定制开发,主要是方便用户根据自身的需求开发前后处理工具(GUI 程序)或者辅助用户实现参数化的建模以及数据处理等工作,其影响的是CAE 分析过程的前后处理环节[2]。
基于abaqus的减隔振仿真模型的二次开发
基础科技8 船舶物资与市场0 引言减隔振元件在精密仪器、航空航天设备、大型汽轮发电机组及高速旋转机械中广泛应用,减隔振元件包括金属橡胶隔振器、钢丝绳隔振器、橡胶隔振器及螺旋弹簧隔振器等[1]。
要实现优良的隔振性能和可靠的使用寿命,前提是要合理地设计减隔振结构。
目前主要是通过结构仿真技术实现减隔振元件的优化设计,需要多次建立减隔振元件的有限元模型,这将是一项烦冗且耗时的工作。
本文为减隔振非线性仿真分析开发了通用的减隔振仿真模块,使用该模块能够完成常用减隔振元件有限元模型参数的自动建立,能够快速评价不同减隔振元件的减振效果,实现减隔振元器件高效、准确的设计功能[2,3]。
1 减隔振本构参数确定减隔振一般包含弹性储能元件和阻尼耗能元件,在不考虑减隔振元件本身的结构应力和变形的情况下,可以将减隔振元件等效为弹簧单元和阻尼单元的联接装置。
线性的弹簧和阻尼器的刚度和阻尼因子是具体的数值,非线性弹簧定义力与相对位移的关系,非线性阻尼器定义力与相对速度的关系[4]。
本文开发的减隔振仿真模块可以为常用的,诸如螺旋弹簧隔振器、钢丝绳隔振器、金属橡胶隔振器及橡胶隔振器等类型的减隔振元器件提供有限元建模的相应参数数据[5]。
根据减隔振在整体模型中的安装位置,提供建立弹簧和阻尼的节点,生成弹簧单元和阻尼单元,并根据输入的相关参数计算弹簧刚度,或读取过程文件中的力-相对位移数据列表,力-基于ABAQUS 的减隔振仿真模型的二次开发李 涌,孙亚东(海装驻郑州地区军事代表室,河南 郑州 450015)摘 要 :减隔振一般包含弹性储能元件和阻尼耗能元件,在不考虑减隔振元件本身的结构应力和变形的情况下,通常可以将减隔振元件等效为弹簧单元和阻尼单元的联接装置。
本文采用通用的Python 脚本语言开发了适用于各种类型常用的基于ABAQUS 软件的减隔振器仿真模块,通过快速生成弹簧单元和阻尼单元,计算减隔振模型的刚度和阻尼等参数,并赋予相应的有限元等效模型,将模型数据输出到过程文件中,以便后续在有限元建模中调用相关参数数据。
基于Abaqus二次开发的某小型塔机下支座优化
Optimization of lower support of a small tower crane based on secondary development of Abaqus
参数学习是在参数化模型的基础上,通过改 变这些特征参数,以脚本的形式反复提交计算并输 出结果,可以分析目标变量随着某些参数的变化 历程。
用Python语言编写内核程序,将有限元建模 过程用程序的形式表现,需要修改的参数为keywords。在自定义图形用户界面中建立相关控件与 它关联起来,点击这些控件就可以调用内核程序, 实现自动建模并方便修改。
在研究各关键参数对零件最大应力的影响时, 需要进行大量的有限元计算。传统的方式是在有限 元软件中多次建模,既耗时又不利于修改参数模 型。为了避免重复劳动,许多领域的学者对Abaqus 二次开发进行了研究,并取得了良好的效果[2-4]。
本文基于Python语言和Abaqus GUI工具包对 Abaqus进行二次开发,利用开发的程序对某小型 塔机下支座关键参数进行了参数化建模和参数学 习,得出了关键参数变化对最大应力的影响,最后 通过分析这些数据,实现了对该下支座的优化。
为了节省材料、减轻其重量,对其中的上盖 板、圆筒、上筋板、内筋板和下筋板厚度进行参数 化设计、参数学习。
1
2
5
3
6
4
7
8
9
1. 回转支承 2. 上盖板 3. 上筋板 4. 下盖板 5. 内筋板 6. 法兰 7. 主弦杆 8. 圆筒 9. 下筋板
图2 下支座和回转支承模型
基于SolidWorks和ABAQUS的橡胶减振器设计研究
基于SolidWorks和ABAQUS的橡胶减振器设计研究*高北雄',韩斌慧",王仕杰彳,原彩霞"(1西安航空职业技术学院航空维修工程学院,陕西西安710089;2太原科技大学机械工程学院,山西太原030024;3中国重型机械研究院股份公司,陕西西安710032;4中国航发山西航空发动机维修有限责任公司,山西晋城048000)摘要:针对某型矿用防爆车辆原始橡胶减振器频繁损坏及人员、车辆“双重损伤”问题,利用SolidWorks软件的三维设计优势、ABAQUS软件非线性求解的专业性,完成了改进型“抬轿”式橡胶阻尼减振装置的设计。
通过计算橡胶材料的特性系数C01、C10等,并且通过仿真分析后,其最大静变形量为0.84mm。
所设计装置经实车及工业性试验,使用效果良好,并已批量应用于该型车辆减振系统中,也为同类非标减振设计提供了借鉴。
关键词:橡胶减振器,SolidWorks,ABAQUS,非线性V仿真中图分类号:TH122Design and Research of Rubber Shock Absorber Based on SolidWorks and ABAQUSGAOBei-xiong1,HANBin-hui1'2,WANGShi-jie3,YUANCai-xia4(1School of Aeronautical Maintenance Engineering,Xi'an Aeronautical Polytechnic Insititute,Xi'an710089,Shaanxi,China;2School of Mechanical Enginering,Taiyuan University of Science and Technology,Taiyuan030024,Shanxi,China;3China National Heavy Machinery Research Institute Co.Ltd.,Xi'an710032,Shaanxi,China;4Shanxi Aero Engine Maintenance Co.,Ltd,Aero Engine Corporation of Jincheng,048000,Shanxi,China)Abstract:In view of the frequent damage of the original rubber shock absorber of a mine explosion-proof vehicle and the“double damage”of personnel and vehicles,the design of the improved“lift car”type rubber shock absorber was completed by using the three-dimensional design advantages of SolidWorks software and the specialty of ABAQUS software nonlinear solution.By calculating the characteristic coefficients C01and C10of rubber material,the maximum static deformation was0.84mm.The designed device has been tested in real vehicle and industry,and has been applied in this type of vehicle damping system in batches.It also provides a reference for similar non-standard damping design.Key words:rubber damper,SolidWorks,ABAQUS,nonlinear,simulation橡胶减振器的核心元件由高分子聚合物材料构成,该类超弹性材料具有优于常规减振器的隔振、降噪功能。
基于Abaqus的橡胶扭振减振器胶圈失效分析
基于Abaqus的橡胶扭振减振器胶圈失效分析
胡鸿飞;郭一鸣;肖祖玉;甘新刚
【期刊名称】《湖北汽车工业学院学报》
【年(卷),期】2017(031)004
【摘要】运用Abaqus对不同厚度的橡胶圈在不同鼓形结构的减振器下的压入力、压脱力和滑移扭矩进行了仿真试算,并做实验得到实测值,确定了摩擦系数.基于正交试验设计,探讨了鼓形长度、鼓形高度及橡胶圈压缩比对压入力、压脱力、滑移扭
矩大小的影响程度,对解决生产实践中的橡胶圈失效问题具有一定的指导意义.
【总页数】5页(P12-16)
【作者】胡鸿飞;郭一鸣;肖祖玉;甘新刚
【作者单位】湖北汽车工业学院汽车工程学院,湖北十堰 442002;湖北汽车工业学院汽车工程学院,湖北十堰 442002;湖北广奥减振器制造有限公司,湖北十堰442000;湖北广奥减振器制造有限公司,湖北十堰 442000
【正文语种】中文
【中图分类】TQ336.4+1;U463.33+5
【相关文献】
1.基于ABAQUS对疲劳试验夹具螺纹的失效分析 [J], 陈荣华;崔敬巍;甯佐清;施红健
2.基于ABAQUS?R的复合材料跨尺度失效分析软件开发 [J], 薛斌;李星
3.橡胶胶圈失效分析 [J], 张凤玲;王越;侯丽华;
4.橡胶胶圈失效分析 [J], 张凤玲;王越;侯丽华
5.基于Creo的某轮式挖机轮胎橡胶圈橡胶模具设计 [J], 张金亚
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Abstract
Rubber isolation technology is an effective means to mitigate the dynamic responses of a building under seismic excitations, now it has been applied widely in engineering, from those lower stiff buildings to some complicated structures, such as large scale irregular stadium, bridges, and even high rise buildings recently. Such trends lead to higher requirements for dynamics response analysis, especially for those larger scale structure, the arisen key problem is how to simulate the nonlinear hysteresis property of the rubber bearing, and incorporate the programs in the finite element analysis. Based on the secondary development platform of ABAQUS, we program for the rubber bearing element, in which, the Bouc-Wen model is employed to describe the hysteresis behavior in lateral, while the strength-differences of vertical stiffness are treated as well. An iregular building is simulated to investigate the effects of base isolation by using the developed program.
110
基于 ABAQUS 的橡胶垫隔震支座单元二筑结构在地面地震动激励下动力响应的有效措施, 得到了日益广泛的工程应用。 隔震的结构也由普通的低矮建筑拓展到一些复杂结构,如一些不规则的建筑场馆、桥梁,目前在高层建 筑中也得到了应用。这对结构的动力响应分析提出了越来越高的要求,特别是对大型复杂结构,如何模 拟橡胶垫的非线性特性,并结合到结构的有限元分析中,已成为影响橡胶垫隔震技术推广应用的一个关 键问题。本文基于ABAQUS的二次开发平台,采用Bouc-Wen模型描述其水平恢复力的滞回特性,同时考 虑竖向刚度的拉压异性,对橡胶垫隔震支座单元进行了二次开发,其中Bouc-Wen的参数可以根据需要 进行合理的调节和设置,基于所开发的软件,对一个不规则结构进行了仿真分析,探索了隔震的影响效 果。
关键词
橡胶垫隔震,非线性滞回特性,ABAQUS,二次开发,仿真分析
1. 引言
随着隔震技术的广泛应用,针对隔震结构的非线性分析和设计显示出了日益重要的科学意义和工程 应用价值。采用隔震技术,可以使得结构在地震激励时其上部处于弹性状态,主要的变形和能耗都集中 在隔震层处,因此对这类结构的非线性分析,其关键在于能否正确模拟隔震支座的力学特性并将其结合 进大型有限元的动力分析软件中。对此,国内外学者进行了广泛的研究,发现隔震支座的水平恢复力表 现为的典型的非线性滞回特性[1]-[5], 并且不同种类的隔震支座的滞回特性还有所差异, 同时其竖向力学 性能具有表现为拉压异性的特点[2]。对于水平恢复力特性的描述,可以采用简单的分段线性模型,其不 足是模型存在拐点,使得在数值分析和有限元分析时处理相当复杂,且容易造成结果失真,另外一种方 案则是采用复杂的微分方程模型,如Bouc-Wen模型采用光滑的曲线处理了滞回曲线的拐点,可以较好的 模拟隔震支座的滞回特性,因而得到了广泛的应用。目前常用的大型结构分析有限元软件,如ETABS、 SAP2000和MIDAS均采用Bouc-Wen模型来描述隔震支座的力学特性。Bouc-Wen模型包含较多的参数, 其中有些参数对恢复力的滞回特性的影响很大,因此根据实际的隔震支座的力学性能,选择并设定合理 的参数是很有必要的。但是使用在ETABS和SAP2000时,只能调节橡胶隔震垫参数,无法调节Bouc-Wen 模型的滞回参数;在MIDAS软件中,可以调节参数 α 、 K 、 Fy 、 β 和 γ ,却无法调节参数A和n。而且 其竖向力学性能均为线弹性,无法模拟隔震支座的拉压异性问题。在现有的有限元软件中,ABAQUS的 非线性求解功能性能卓越,但它目前还没有直接可用的隔震支座单元,其自带的JOINTC连接单元由3个 平动弹簧构成,可以模拟两个节点之间的相互作用,但JOINTC连接单元只能模拟叠层橡胶支座,因为其 方向只能定义成线弹性或弹塑性,无法模拟非线性滞回耗能的力学行为。BUSHING单元能够同时定义6 个方向塑性行为和阻尼特性,但6个分量之间相关性太高,给应用带来诸多不便。因此要想利用ABAQUS 的强大的非线性求解功能进行隔震结构的分析,必须开发一种基于Bouc-Wen模型的隔震支座单元,并且 能进行滞回参数调节。 本文基于ABAQUS软件的用户单元子程序接口,采用Bouc-Wen模型作为水平恢复力模型,并考虑竖 向刚度的拉压异性,开发了基于Bouc-Wen模型的隔震支座单元UEL子程序,相关的模型参数可以根据实 际需要进行设置和调节的。应用所开发的程序,通过对一栋不规则结构进行了地震响应动力分析,研究 了相关参数对隔震效果的影响。
Rubber Isolation Bearing Element Secondary Development Based on ABAQUS
Hui Wang, Mingsheng Fang, Zuoyu Sun
College of Civil Engineering of Guangzhou University, Guangzhou Email: 601063037@, fangms89@, sunzuoyu@ Received: May 26th, 2014; revised: Jun. 20th, 2014; accepted: Jun. 28th, 2014 Copyright © 2014 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). /licenses/by/4.0/
Keywords
Rubber Isolation, Non-Linear Hysteresis, ABAQUS, Secondary Development, Simulation
基于ABAQUS的橡胶垫隔震支座单元二次开发
王 晖,方明胜,孙作玉
广州大学土木工程学院,广州 Email: 601063037@, fangms89@, sunzuoyu@ 收稿日期:2014年5月26日;修回日期:2014年6月20日;录用日期:2014年6月28日
Hans Journal of Civil Engineering 土木工程, 2014, 3, 110-121 Published Online July 2014 in Hans. /journal/hjce /10.12677/hjce.2014.34014