Abaquspython入门体会simwe-flin55.pdf

上传人:wj 文档编号:3436154 上传时间:2023-05-05 格式:PDF 页数:15 大小:396KB
下载 相关 举报
Abaquspython入门体会simwe-flin55.pdf_第1页
第1页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第2页
第2页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第3页
第3页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第4页
第4页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第5页
第5页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第6页
第6页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第7页
第7页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第8页
第8页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第9页
第9页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第10页
第10页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第11页
第11页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第12页
第12页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第13页
第13页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第14页
第14页 / 共15页
Abaquspython入门体会simwe-flin55.pdf_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Abaquspython入门体会simwe-flin55.pdf

《Abaquspython入门体会simwe-flin55.pdf》由会员分享,可在线阅读,更多相关《Abaquspython入门体会simwe-flin55.pdf(15页珍藏版)》请在冰点文库上搜索。

Abaquspython入门体会simwe-flin55.pdf

Abaqus/python入门体会入门体会(初稿)长安大学姜峰林2009.2.1#=自己的论文要用到有限元进行数值模拟分析,以前都用ansys计算,可ansys中岩土的本构模型只有DP模型,无法准确的反映土的硬化/软化性质,模拟计算出的结果因此也和实际差别很大。

Abaqus有着丰富的材料模型,超强的非线性分析能力,岩土的模型也很多,因此才转学Abaqus。

Abaqus的cae建模功能还是很好的,但科研课题一般都要进行参数分析,采用cae的建模方法有些不切实际,学了没几天就放弃cae开始学习inp,也是学了一阵子才知道inp不能建立实体模型,只能直接建节点和单元。

复杂的模型inp也无法建立,但采用Python建模就可以解决这个问题。

由于Abaqus的学习资料不多,过了好些日子才知道Abaqus也可以采用Python语言进行建模计算,只是比Ansys的Apdl语言复杂得多,并且除了手册上的Script资料之外,没有较为系统的教程,刚一接触真是让人头痛。

通过查看Simwe论坛上关于Python的帖子,和论坛朋友的帮助,自己在慢慢积累,现在对Python有了一点点了解,算是入了个门。

接触Abaqus也没多久,对python更是一知半解,绝大多数地方根本都不清楚,抽空写一点认识体会主要是给像自己一样刚学习AbqusPython的朋友,能少走一些弯路,节约一些时间。

同时希望大家批评指正、共同讨论、补充。

#-学习Abaqus/Python基础:

Abaqus的cae建模有比较全面的认识;了解一些Python语法知识(大家都不会有太多时间单独学习Python语言本身,只需要有概念了解即可,不懂的地方可以随时查询Pythonscript手册)Abaqus/Python学会使用不太难,可要精通应用还是要付出一定的劳动。

大家所分析的课题专业不同,方向也千差万别,所用到的Abaqus的功能也就有很大的差别,能对自己的工作领域熟练应用就算成功。

Abaqus毕竟只是软件,如何考虑专业知识成功建模才是最困难的。

#-1.Python与Abaqus2.Abaqus/Python结构3.模型参数分析技巧4.几个命令的体会5.一个Abaqus/Python例子#-#=1.Python与与Abaqus1.1Python简介Python是面向对象的语言。

面向对象的语言自己的理解为:

语言本身已经定义了许多固定模块,如数学函数、对显示模式的控制、一些对话框的编写等等程序模块,只需要按照程序的指定格式填空即可完成既定任务,格式相对比较固定,因此语言格式看起来非常繁琐,但方便实用能够大量节约程序员的时间。

面向对象语言的使用方式可以比喻为:

一棵树分为树干、树枝、细枝和树叶等部分,你要是想得到一个确定位置的树叶(且具大小等属性)只有一个路径可以走即树干树枝细枝树叶,换成面向对象的格式为树干.树枝.细枝.树叶(树叶片数或大小等属性)。

以下是abaqus中Python的一般格式,这些格式都是固定的,我们只需要改变其中的参数即可:

mdb.modelsModel-1.ConstrainedSketch(name=_profile_,sheetSize=0.3)s=mdb.modelsModel-1.ConstrainedSketch(name=_profile_,sheetSize=0.3)s.sketchOptions.setValues(decimalPlaces=3,viewStyle=AXISYM)s.setPrimaryObject(option=STANDALONE)s.ConstructionLine(point1=(0.0,-100.0),point2=(0.0,100.0)Python有着较强的逻辑控制语句如if、for、while等,可以通过循环或条件等语句把复杂且重复的操作变得简单易于操作,也是用参数化编程较cae的最大优势。

1.2如何学abaqusPython命令Abaqus是采用Python语言编制而成,在cae中所有的操作都可以通过Python脚本命令完成(注:

好像Python并不能完全取代inp文件,一些材料属性的参数好像要用inp才能赋值)。

学会用pythonreader程序学会用pythonreader程序Abaquscae可以自动生成python文件,存放在工作目录的abaqus.rpy文件中,每一步cae操作都会产生相应的python命令。

可以通过simwe网友ck436ck436编写的pythonreader程序实时读取产生的命令,反复揣摩、领会每个命令,很快就会有所提高,对python的命令有所领悟。

与cae建模相同,Python建模也分为:

part、property、assembly、step、ineraction、load、mesh、job等模块,具体每个模块中的建模命令可参考Pythonreader读取的命令学习,我们只需去记忆常用的Python命令。

以下是pythonreader程序下载地址。

http:

/通过修改abaqus.rpy建立自己的脚本文件是一条捷径通过修改abaqus.rpy建立自己的脚本文件是一条捷径1.3Abaqus/Python学习资料关于Python的学习资料非常多,如Swaroop,C.H.著沈洁元译的简明Python教程就是很好的参考资料。

王纯业的Python学习笔记也不错,simwe论坛可以下载到。

另外就是Abaqus手册:

AbaqusScriptingUsersManualAbaqusScriptingReferenceManualGettingStartedwithAbaqus:

InteractiveEditionAbaqus手册真是冗长,只能是根据自己的课题有选择的查阅。

#=2.Abaqus/Python结构结构Abaqus的objectmodel分为session、mdb和odb三个objects,session为视图模块、mdb为模型数据模块、odb为数据输入输出模块。

每个object下面又有很多命令分支,直到执行到所需要的具体命令。

以下各图选自AbaqusScriptingUsersManual,更多书面的的解释可以参考abaqus手册。

每个object都像一棵树,要执行某个命令就需要按照python的面向对象的格式进行。

例如:

cell4=mdb.modelsblock.partscrankcase.cells4,要把part模块中编号为4的体赋值给cell4,就需通过路径mdbmodelspartcells(4号体属性),其中block、crankcase、分别是model和part的名字。

在草图Sketch中画线:

s=mdb.modelsblock.ConstrainedSketch(name=grid,sheetSize=3.0)s.Line(point1=(-1.275,0.0),point2=(-1.125,0.0)s.Line(point1=(1.125,0.0),point2=(1.275,0.0)执行任何一条命令都必须按照结构树的格式进行操作。

我们所看到的python脚本繁杂的语句就是这样形成的。

这样大量的命令不能在短时间内掌握,我们只需要根据自己的需要边建立模型边学习就可以了。

a=mdb.modelsModel-1.rootAssemblys=a.instancesMount-1.edgesside1Edges=s.findAt(0.0475,0.0,0.0),)以上三行与下面的句子是等同的,即把findat找到的edges赋值给side1Edges。

分开来写简单明了,大大缩短了语句的长度。

side1Edges=mdb.modelsModel-1.rootAssembly.instancesMount-1.edges.findAt(0.0475,0.0,0.0),)a.Surface(side1Edges=side1Edges,name=Bottom),这行语句设置side1Edges所对应的edge为名称Bottom的surface的set。

#=3.模型参数分析技巧模型参数分析技巧Python脚本建模的好处就是可以进行参数分析,即改变我们要分析模型的几何尺寸、材料属性等可变参数,对数值模型进行求解计算,从而对所分析的对象有更全面的了解。

1对自己要进行参数分析的参数赋值:

如几何尺寸或材料属性等a120,b130,c140,命名要符合python规则。

2.cae与Python混合建模,不会的命令就利用cae自动生成,用Pythonreader记录命令然后进行修改,可以弥补不熟悉Python的缺点;3.逐句修改Python脚本,可以去掉一些不必要的语句并在cae中逐句进行验证。

#=4.几个命令的体会几个命令的体会4.1Set()Set命令在python建模时要经常用到,对实体、surface、element等分组,方便加载、施加约束和单元生死等控制4.2Findat()对cell、edge、face、vertice进行查找,括号中参数为实体坐标p=mdb.modelsModel-1.partsMountf=p.facesfaces=f.findAt(0.042303,0.006937,0.0),)pickedRegions=(faces,)p.setElementType(regions=pickedRegions,elemTypes=(elemType1,elemType2)4.3Len()利用len命令可以实现对单元选取p=mdb.modelsprecastculvert.partssoile=p.elementslen(e)n1=len(e)elements=e1:

n1#单元数存放在e的一维数组里p.Set(elements=elements,name=Set-3)对单元进行编组set,可以进行生死单元的控制,我摸索了好久才想到这个办法,目前只在二维模型应用过,三维也应该没问题。

Abaqus没有办法对单元编号进行编号控制,也没有像ansys那样有效的选择命令,怎样选择abaqus的单元就是很头疼的问题,我要做路堤的分层回填模拟,手动选取单元根本就没有可能。

Abaqus的编号其实是有规则的,后划分的单元编号最小,先划分的单元编号最大;这样我们就可以每次划分单元后都采用len命令计算一次单元数量,并用参数记录下来,这样我们就能计算出每部分单元的数量以及他的起始和终止编号。

根据elements=e1:

n1、p.Set(elements=elements,name=Set-3)语句就可以把每部分单元设置成set,以后操作就很方便了。

#=5.一个一个Abaqus/Python例子例子下面是一个GettingStartedwithAbaqus:

InteractiveEdition中的一个橡胶避震垫例子:

号后语句表示我的注释,注释上面的句子。

我也不懂的就没有注释,先熟悉一下Python的样子。

在学习的时候可以copy(Crtol+V)到cae下面的命令行中一句句的执行,并在cae视窗中查看命令执行情况,领会命令使用方法。

#Scriptforrubbermountexample“#”开头表示这一行为注释行,同ansys的“!

”号fromabaqusimport*fromabaqusConstantsimport*引入abaqus中的一些模块,这些模块是abaqus已事先存储在文件中,要引入才这些模块能运行相应的命令session.viewportsViewport:

1.makeCurrent()session.viewportsViewport:

1.maximize()session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry=COORDINATE)对cae视窗的操作命令;maximize()的括号好像是默认为当前值fromcaeModulesimport*fromdriverUtilsimportexecuteOnCaeStartupexecuteOnCaeStartup()Mdb()#-#Sketchprofileofthemount进入草图模块s=mdb.modelsModel-1.ConstrainedSketch(name=_profile_,sheetSize=0.3)建立一个sketch草图,草图的尺寸为0.3个单位;这个句子算是一个标准的Python语句,具体后面解释g,v,d,c=s.geometry,s.vertices,s.dimensions,s.constraintss.sketchOptions.setValues(decimalPlaces=3,viewStyle=AXISYM)s.setPrimaryObject(option=STANDALONE)设置草图为轴对称模式s.ConstructionLine(point1=(0.0,-100.0),point2=(0.0,100.0)s.FixedConstraint(entity=g2)建立辅助线及约束mdb.modelsModel-1.sketches_profile_.sketchOptions.setValues(gridFrequency=4)sketch参数修改s.rectangle(point1=(0.01,0.0),point2=(0.025,0.01)画矩形s.DistanceDimension(entity1=g2,entity2=v0,textPoint=(0.00998260825872421,-0.00830297358334064),value=0.01)s.VerticalDimension(vertex1=v0,vertex2=v1,textPoint=(0.0,0.00851448811590672),value=0.03)s.ObliqueDimension(vertex1=v0,vertex2=v3,textPoint=(0.025699570775032,-0.00830297358334064),value=0.05)标注图形尺寸,还可以修改图形尺寸,如拉伸、压缩等s.CircleByCenterPerimeter(center=(0.085,0.025),point1=(0.06,0.00740899052470922)画圆s.CoincidentConstraint(entity1=v5,entity2=g5)s.DistanceDimension(entity1=g2,entity2=v4,textPoint=(0.0811913833022118,-0.023865295574069),value=0.1)s.VerticalDimension(vertex1=v2,vertex2=v4,textPoint=(0.115524396300316,0.0262394621968269),value=0.0)s.ObliqueDimension(vertex1=v5,vertex2=v3,textPoint=(0.0519323498010635,0.0),value=0.005)修改圆尺寸、移动位置没搞清楚修改尺寸命令有什么实际意义,直接定义好尺寸不就结了?

s.autoTrimCurve(curve1=g7,point1=(0.124150268733501,-0.00965208746492863)裁剪命令,其中g7是圆的线编号,g=s.geometrys.autoTrimCurve(curve1=g5,point1=(0.0601795427501202,0.020298857241869)s.autoTrimCurve(curve1=g4,point1=(0.0557677671313286,0.030869778245687)裁剪命令s.RadialDimension(curve=g8,textPoint=(0.0725325122475624,0.0207393132150173),radius=0.047169905660283)d6.setValues(reference=ON)标注命令,标注界面很漂亮session.viewportsViewport:

1.view.fitView()cae图形缩放的合适大小p=mdb.modelsModel-1.Part(name=Mount,dimensionality=AXISYMMETRIC,type=DEFORMABLE_BODY)p=mdb.modelsModel-1.partsMount命名modelp.BaseShell(sketch=s)s.unsetPrimaryObject()session.viewportsViewport:

1.setValues(displayedObject=p)delmdb.modelsModel-1.sketches_profile_显示model#-#CreatematerialRubber创建材料模型mdb.modelsModel-1.Material(Rubber)mdb.modelsModel-1.materialsRubber.Hyperelastic(type=POLYNOMIAL,table=()mdb.modelsModel-1.materialsRubber.hyperelastic.UniaxialTestData(table=(0.054E6,0.0380),(0.152E6,0.1338),(0.254E6,0.2210),(0.362E6,0.3450),(0.459E6,0.4600),(0.583E6,0.6242),(0.656E6,0.8510),(0.730E6,1.4268)mdb.modelsModel-1.materialsRubber.hyperelastic.BiaxialTestData(table=(0.089E6,0.0200),(0.255E6,0.1400),(0.503E6,0.4200),(0.958E6,1.4900),(1.703E6,2.7500),(2.413E6,3.4500)mdb.modelsModel-1.materialsRubber.hyperelastic.PlanarTestData(table=(0.055E6,0.0690),(0.324E6,0.2828),(0.758E6,1.3862),(1.269E6,3.0345),(1.779E6,4.0621)#CreatematerialSteel#mdb.modelsModel-1.Material(Steel)mdb.modelsModel-1.materialsSteel.Elastic(table=(200.E9,0.3),)#Createsolidsectionsfortherubberandsteel#mdb.modelsModel-1.HomogeneousSolidSection(name=RubberSection,material=Rubber,thickness=1.0)mdb.modelsModel-1.HomogeneousSolidSection(name=SteelSection,material=Steel,thickness=1.0)#-#Partitionthepartintotworegions(rubberandsteelregions)切割体形成两个部分,从而可以赋予不同材料属性f,e,d=p.faces,p.edges,p.datumst=p.MakeSketchTransform(sketchPlane=f.findAt(coordinates=(0.043333,0.001667,0.0),normal=(0.0,0.0,1.0),sketchPlaneSide=SIDE1,origin=(0.033052,0.014514,0.0)s=mdb.modelsModel-1.ConstrainedSketch(name=_profile_,sheetSize=0.134,gridSpacing=0.003,transform=t)g,v,d1,c=s.geometry,s.vertices,s.dimensions,s.constraintss.sketchOptions.setValues(decimalPlaces=3)s.setPrimaryObject(option=SUPERIMPOSE)p.projectReferencesOntoSketch(sketch=s,filter=COPLANAR_EDGES)进入草图,并设置草图属性(图纸大小、网格间距等)s.Line(point1=(0.026948,-0.009514),point2=(-0.03,-0.009514)s.HorizontalConstraint(entity=g.findAt(-0.001526,-0.009514)s.PerpendicularConstraint(entity1=g.findAt(0.026948,-0.012014),entity2=g.findAt(-0.001526,-0.009514)作辅助线,findat(查找)命令很有用,可以用来选择实体pickedFaces=f.findAt(0.043333,0.001667,0.0),)p.PartitionFaceBySketch(faces=pickedFaces,sketch=s)用辅助线分割体s.unsetPrimaryObject()显示分割后体delmdb.modelsModel-1.sketches_profile_#-#Assignrubbersection实体指定不同的材料属性p=mdb.modelsModel-1.partsMountf=p.facesfaces=f.findAt(0.042303,0.006937,0.0),)region=regionToolset.Region(faces=faces)p.SectionAssignment(region=region,sectionName=RubberSection,offset=0.0)#Assignsteelsection#faces=f.findAt(0.043333,0.003333,0.0),)region=regionToolset.Region(faces=faces)p.SectionAssignment(region=region,sectionName=SteelSection,offset=0.0)a=mdb.modelsModel-1.rootAssemblysession.viewportsViewport:

1.setValues(displayedObject=a)#Setcoordinatesystem(donebydefault)#a.DatumCsysByDefault(CARTESIAN)#Instancethemount#p=mdb.mod

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2