许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  基于Abaqus批处理技术的自动化仿真工具开发

基于Abaqus批处理技术的自动化仿真工具开发

阅读数 9
点赞 0
article_banner


Abaqus是一套功能强大的工程模拟的有限元软件,其解决问题的范围从相对简单的线性分析到许多复杂的非线性问题。为了提高仿真效率小编对Abaqus的二次开发进行了研究,基于Abaqus的批处理技术开发了面向某设备的 自动化  仿真工具,进行了仿真模型的参数化建立自动装配网格自动划分载荷自动添加边界条件的自动添加仿真结果自动提取仿真报告自动生成,最终开发了基于Abaqus的无人值守全自动快速专家仿真工具

2 Abaqus二次开发

2.1 Abaqus简介

ABAQUS 是一套功能强大的工程模拟的有限元软件,其解决问题的范围从相对简单的线性分析到许多复杂的非线性问题。 ABAQUS 包括一个丰富的、可模拟任意几何形状的单元库。并拥有各种类型的材料 模型库 ,可以模拟典型工程材料的性能,其中包括金属、橡胶、高分子材料、复合材料、钢筋混凝土、可压缩超弹性泡沫材料以及土壤和岩石等地质材料。作为通用的模拟工具, ABAQUS 除了能解决大量结构(应力 / 位移)问题,还可以模拟其他工程领域的许多问题,例如热传导、质量扩散、热电耦合分析、声学分析、岩土力学分析(流体渗透 / 应力耦合分析)及压电介质分析。

2.2 开发语言

从CAE软件二次开发的角度而言,区别于ANSYS等其他CAE软件,Abaqus是个很容易开发的软件。Abaqus在运行的时候,会自动生成大部分操作的 python 语言的.rpy操作日志文件,这个文件一般在如下的路径中。

\SIMULIA\Temp

.rpy文件示意

   这个文件是对Abaqus进而二次开发的强大武器,要熟悉指定操作对应的脚本需要每操作一步就查看文件中对应的脚本。

   刚才说到abaqus二次开发用到的编程语言是python,可能好多同学望而却步了,毕竟能想到搞这个软件开发的大多数还是非计算机专业的同学。这里小编要给大家一颗定心丸,不懂编程也不意味着开发不了abaqus。abaqus用到的那些python语句基本都是软件内部定义的,大家完全可以把它当成一种标记型的语言理解就好,只要能将具体的脚本和对应的操作对应起来就可以实现abaqus的二次开发。

   总结一下,abaqus的编程语言是python,只要看懂abaqus记录操作的.rpy文件就可以进行abaqus的二次开发。

3 关键技术

3.1 前处理脚本实现

前处理包括参数化建模、自动划分网格、添加约束载荷等。下面给出了我自己封装的参数化建模、装配模型、划分网格、添加约束载荷及添加分析步的脚本,有一说一都是一步步操作然后查看.rpy文件生成的对应的脚本整理的。过程虽然很辛苦,但是疗效还是不错的。

def parametric_modeling():
    p = mdb.models['Model-1'].parts['Part-1']
    session.viewports['Viewport: 1'].setValues(displayedObject=p)
    p = mdb.models['Model-1'].parts['Part-1']
    s = p.features['Shell planar-1'].sketch
    mdb.models['Model-1'].ConstrainedSketch(name='__edit__', objectToCopy=s)
    s1 = mdb.models['Model-1'].sketches['__edit__']
    g, v, d, c = s1.geometry, s1.vertices, s1.dimensions, s1.constraints
    s1.setPrimaryObject(option=SUPERIMPOSE)
    p.projectReferencesOntoSketch(sketch=s1,upToFeature=p.features['Shell planar-1'], filter=COPLANAR_EDGES)
    #--------------------删除旧约束------------------------------------
    s1.delete(objectList=(d[1],))
    s1.delete(objectList=(d[0],))
    s1.delete(objectList=(d[3],))
    s1.delete(objectList=(d[4],))
    s1.delete(objectList=(d[2],))
    s1.delete(objectList=(d[5],))
    s1.delete(objectList=(d[13],))
    s1.delete(objectList=(d[6],))
    s1.delete(objectList=(d[7],))
    s1.delete(objectList=(d[8],))
    s1.delete(objectList=(d[9],))
    s1.delete(objectList=(d[10],))
    s1.delete(objectList=(d[11],))
    s1.delete(objectList=(d[12],))
    #--------------------添加新的约束------------------------------------
    s1.RadialDimension(curve=g[4], textPoint=(123.286316143786, 0.258663984079395), radius=simuinfo[""]["R4"]["value"] )
    s1.DistanceDimension(entity1=v[2], entity2=g[2], textPoint=(69.2119979858398, -14.4988307952881), value=simuinfo[""]["Distan1"]["value"])
    s1.RadialDimension(curve=g[5], textPoint=(119.733726501465, 1.4805303812027), radius=simuinfo[""]["R3"]["value"])
    s1.HorizontalDimension(vertex1=v[5], vertex2=v[2], textPoint=(122.07674407959, -0.124851405620575), value=simuinfo[""]["h1"]["value"])
    s1.VerticalDimension(vertex1=v[5], vertex2=v[2], textPoint=(120.597770690918, 0.413793683052063), value=simuinfo[""]["h2"]["value"])
    s1.DistanceDimension(entity1=g[7], entity2=g[3], textPoint=(126.956832885742, 0.931050896644592), value=simuinfo[""]["H"]["value"])
    s1.RadialDimension(curve=g[8], textPoint=(123.122192382813, 2.98901391029358), radius=simuinfo[""]["R1"]["value"])

    s1.RadialDimension(curve=g[9], textPoint=(121.781723022461, 2.07928419113159),<
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空