Daniel1985的个人博客分享 http://blog.sciencenet.cn/u/Daniel1985

博文

python 语言在abaqus中的应用总结

已有 14766 次阅读 2012-10-14 13:27 |个人分类:ABAQUS/PYTHON/FORTRAN|系统分类:科研笔记| Python, abaqus

说明:以下总结,属于曹金凤老师在《Python语言在Abaqus中的应用》书中尚未总结的命令,或者本人认为好用的命令,因此加以积累而已。

#~~~~~~~~建模部分~~~~~~~~~

1 查询一个面的面积


启动CAE,载入你的model, 在下边命令行里输入:p=mdb.models['name'].parts['name']
s=p.faces.findAt([输入那个面上的一点坐标]);
s.getSize()
面积就显示出来了
p=mdb.models['Model-1'].parts['Part-1']
s=p.faces.findAt([3.535534,3.535534,0]);
s.getSize()

2 续行符

3 插入关键词的命令
mdb.models['MouseHole'].keywordBlock.insert(10,
"""
*initial conditions,type=pore pressure
mouseHole-1.all,1.0""")
这里的10是指插入的位置是第几个关键词,即第几个带*的行,包括 *End Assembly 的行(但黑色阴影的关键词除外)。
注意插入的关键词要顶格,不能有空格。


4 Set ( )
Set命令在python建模时要经常用到,对实体、surface、element等分组,方便加载、施加约束和单元生死等控制

5 findAt ( )
对cell、edge、face、vertice进行查找,括号中参数为实体坐标
p = mdb.models['Model-1'].parts['Mount']
f = p.faces
faces = f.findAt(((0.042303, 0.006937, 0.0), ))
pickedRegions =(faces, )
p.setElementType(regions=pickedRegions,
elemTypes=(elemType1, elemType2))

6 len ( )
利用len命令可以实现对单元选取
p = mdb.models['precast culvert'].parts['soil']
e = p.elements
len(e)
n1=len(e)
elements = e[1:n1] #单元数存放在e [ ]的一维数组里
p.Set(elements=elements, name='Set-3')
Abaqus的编号其实是有规则的,后划分的单元编号最小,先划分的单元编号最大;这样我们就可以每次划分单元后都采用len命令计算一次单元数量,并用参数记录下来,这样我们就能计算出每部分单元的数量以及他的起始和终止编号。
根据elements = e[1:n1]、p.Set(elements=elements, name='Set-3')语句就可以把每部分单元设置成set,以后操作就很方便了。

6 全选可以用数组的形式完成
例如:
#用数组的形式可以选择整体
face2=myInstance.faces[:]
setFace=myAssembly.Set(
   faces=face2,
   name='all')

7 建立坐标系和激活坐标系
myAssembly.DatumCsysByThreePoints(
   name='Datum csys-2',
   coordSysType=CYLINDRICAL,
   origin=(0.0, 0.0, 0.0),
   point1=(1.0, 0.0, 0.0),
   point2=(0.0, 1.0, 0.0))

a = mdb.models['MouseHole'].rootAssembly
a.features['Datum csys-2'].suppress()
a = mdb.models['MouseHole'].rootAssembly
a.features['Datum csys-2'].resume()

8 切割命令MakeSketchTransform
GUI操作默认是以所选择面的几何中心作为sketch的原点,为了与原来作图的远点对应,更好操作
可以设置 orign=(0.0,0.0,0.0)

9 找面号的“笨”办法
先打开录制宏命令>tools>partition,type=face,method=sketch,选择你想知道面号的面,done>随便画一条线,done!
>停止宏录制>打开宏文件。
会看到类似一条命令
t = p.MakeSketchTransform(sketchPlane=f1[1], sketchPlaneSide=SIDE1, origin=(
       2.883562, 0.317808, 0.0))
f1[1]中,中括号里面的,就是所需要的面号

10 显示节点号和单元号
view>assembly disply option option>mesh,show node labels,show element labels
python 命令
session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues(
       nodeLabels=ON)


#~~~~~~~~后处理部分~~~~~~~~~

1 显示节点号
session.viewports['Viewport: 1'].odbDisplay.commonOptions.setValues(
   nodeLabels=ON)



https://blog.sciencenet.cn/blog-626917-622449.html

上一篇:intel visual fortran 备忘
下一篇:"IntroductionToLiveLinkForMATLAB"帮助文档的翻译和个人看法
收藏 IP: 113.140.84.*| 热度|

1 高绪仁

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-7-23 01:03

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部