Abaqus二次开发:python参数化建模方法(文末附复材屈曲分析脚本源代码) |
您所在的位置:网站首页 › python参数化建模 › Abaqus二次开发:python参数化建模方法(文末附复材屈曲分析脚本源代码) |
近期公众号推送了一些Python开发的建模工具,另外,过去几年平台发布的Abaqus的建模插件以及快捷建模脚本也都是基于Python语言开发,后台常有一些同学询问Python程序开发的问题。作为一种开源平台,Python积累的各种库已非常丰富,在科学计算、可视化、大数据、人工智能等领域都得到了广泛的应用。 时间一晃,Python陪伴小编都十年之久了,它见证了一个翩翩少年变成油腻大叔的心酸历程,那时候Python还不像现在这么火,写点小程序小工具比较方便,也正是因为其高效、简洁的特点吸引了许多人。对于小编这种非计算机专业科班出身的工科男,编程效率第一位,人生苦短,我用Python。 下面讲一下Abaqus中如何快速创建Python脚本 1.如何快速创建参数化脚本 我们在操作Abaqus/CAE时,所有动作指令都存储在工作目录下的abaqus.rpy文件中,abaqus.rpy是实时更新的,每操作一步就会更新一下,包括对视图的操作都会记录在内,因此可以直接修改abaqus.rpy文件来获得参数化建模脚本。 另外,当保存自己创建的CAE模型时,与模型同名的会出现一个.jnl的文件,该文件记录的也是建模过程中的操作指令,不过不包含一些视图操作。代码更为简练,用户同样可以修改此文件来获取脚本。 例如,下面几句是rpy中获得的指令: p = mdb.models['Model-1'].parts['Ball'] session.viewports['Viewport: 1'].setValues(displayedObject=p) session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=ON, engineeringFeatures=ON) session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues( referenceRepresentation=OFF) p = mdb.models['Model-1'].parts['Bulk'] session.viewports['Viewport: 1'].setValues(displayedObject=p) a = mdb.models['Model-1'].rootAssembly session.viewports['Viewport: 1'].setValues(displayedObject=a) session.viewports['Viewport: 1'].assemblyDisplay.setValues( optimizationTasks=OFF, geometricRestrictions=OFF, stopConditions=OFF)
下面几句则是.jnl文件中的指令格式: from part import * from material import * from section import * from optimization import * from assembly import * from step import * from interaction import * from load import * from mesh import * from job import * from sketch import * from visualization import * from connectorBehavior import * mdb.jobs['Job-1']._Message(STARTED, {'phase': BATCHPRE_PHASE, 'clientHost': 'taishanbuzuo-PC', 'handle': 0, 'jobName': 'Job-1'}) mdb.jobs['Job-1']._Message(ODB_FILE, {'phase': BATCHPRE_PHASE, 'file': 'D:\\temp\\Job-1.odb', 'jobName': 'Job-1'}) mdb.jobs['Job-1']._Message(COMPLETED, {'phase': BATCHPRE_PHASE, 'message': 'Analysis phase complete', 'jobName': 'Job-1'}) mdb.jobs['Job-1']._Message(STATUS, {'totalTime': 0.0, 'attempts': ' 1U', 'timeIncrement': 0.0001, 'increment': 1, 'stepTime': 0.0, 'step': 1, 'jobName': 'Job-1', 'severe': 1, 'iterations': 12, 'phase': STANDARD_PHASE, 'equilibrium': 11}) 2.python脚本的格式控制 在修改由.rpy或者.jnl文件获取的代码时,经常会出现下面这种格式的语句: p = mdb.models['Model-1'].parts['Part-1'] f = p.faces faces = f.getSequenceFromMask(mask=('[#2 ]', ), ) p.Set(faces=faces, name='Set-2') 上述语句中对于一个和特征的索引采用的是一种掩码的方式,即getSequenceFromMask()函数,我们是无法确定自己所需对象的掩码的。因此,就需要采用其他更直观的方式获取用户所需要的对象。下面将介绍如何转换.rpy文件以及.jnl文件的指令输出格式。 第一种,在CAE主视图下方的命令交互行输入以下指令: >>>session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry= COORDINATE) 运行上述指令之后,在CAE中重复上述set的建立过程,将set命名为“set-3”,类型选择Geometry,且仍旧选择同一平面作为该集合对象。操作完成后,重新查阅当前工作目录下的Abaqus.rpy文件,代码会变成如下形式: p = mdb.models['Model-1'].parts['Part-1'] f = p.faces faces = f.findAt(((20.211912, 3.333333, 20.0), )) p.Set(faces=faces, name='Set-3') 此时对象faces的索引方式已经转换为findAt()函数配合点坐标的方式。 第二种:在Abaqus GUI命令行交互窗口输入以下指令: >>>session.journalOptions.setValues(replayGeometry=INDEX,recoverGeometry=INDEX) 上述命令执行完后,再次重复建立一个集合,命名为“set-4”,集合类型和对象同上。再次查看工作目录下的Abaqus.rpy文件,其最新更新内容如下: p = mdb.models['Model-1'].parts['Part-1'] f = p.faces faces = f[1:2] p.Set(faces=faces, name='Set-4') 此时选取对象faces的索引方式已经转换为实际特征索引号的方式。按照同样的道理,读者可以建立相同的单元集合或者节点集合来检验上述区别,一般地,在Abaqus的GUI程序开发中,优先选择这两种对象索引方式,更具有通用性。 3.python脚本的执行 一种是在Abaqus/CAE主界面下方命令行输入,如下图所示。 ![]() 另一种,将自己的脚本存为.py文件,然后在File→Run Script中选择该文件运行。 ![]() 给大家分享一个Abaqus帮助文档中的复合材料特征值屈曲分析案例的建模脚本,包含几何、材料、属性、网格、分析步、网格、装配、边界载荷、任务提交等完整建模过程,感兴趣的可以关注“复合材料力学”微信公众号,后台回复“打击盗版003”即可获取源代码下载链接,关键字太长可以直接复制。 ![]() 代码执行效果: ![]() 代码结尾是自动提交计算的指令,如果不想让它自动提交,可以部分删除,计算结果如下: ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |