开始之前先来点技术科普:
Abaqus:成熟、老牌、多学科(结构、热、流体、电磁等)高精度的统一有限元分析软件。能够处理非常复杂的非线性问题。Abaqus有两大求解器Standard以及Explicit。
Isight: 著名参数优化软件,江湖人称软件机器人。为啥这么叫,因为用Isight基本可以把你应用的所有工程软件串联成工作流程,在完成优化的同时能够帮助用户把成熟的仿真流程在Isight内搭建成流程模板,完成浅层次企业技术知识固化(深层次知识固化需要企业工程师开发专门的解决方案软件)
Tosca:无参优化(结构优化、流道优化)结构优化涉及到:拓扑优化,形状优化、尺寸优化、钣金起劲优化。流道优化结果能够实现流道最小压力损失。
fe-safe:耐久性分析,结构的低周、高周疲劳,还具有国际首款认证的橡胶疲劳分析功能以及焊缝疲劳分析功能。最新增加了针对汽轮机的高温蠕变疲劳分析模块。
此处划重点:目前以上四款软件可以通过采购一个license全部激活使用,实现一站式结构设计、优化、计算总体解决方案。
下面开始讲吹瓶之后的一个技术要点:提取瓶体厚度分布数据
在计算完一个瓶体的吹塑之后,我们一般能够得到一个包含瓶体厚度分布的计算结果(ODB)文件。Abaqus与Python无缝集成,这就极大的方便了客户实现自动化前后处理的需求。Python这门语言比较容易学习,我们在今后的文章中可以逐步介绍。
直接上代码:
(以下代码需要简单修改才能应用到您的模型)
from abaqus import *
from abaqusConstants import *
import __main__from odbAccess import *
from viewerModules import *
from string import *
from abaqus import getWarningReply, YES, NO
import visualization
import xyPlot
#
odbName=session.viewports[session.currentViewportName].odbDisplay.name
nodes=session.odbs[odbName].rootAssembly.instances['BOTTLE-1'].nodes
nodesNumber=len(nodes)
session.viewports[session.currentViewportName].odbDisplay.display.setValues(plotState=(CONTOURS_ON_DEF, ))
fileName=open(odbName+".txt", "w")
fileName.write("# X Y Z Thickness"+"\n")
for order in range(nodesNumber):
session.Path(name='Path-1', type=NODE_LIST, expression=(('BOTTLE-1', (str(nodes[order].label)+':'+str(nodes[order].label), )), ))
pth = session.paths['Path-1']
session.viewports[session.currentViewportName].odbDisplay.setPrimaryVariable(variableLabel='U', outputPosition=NODAL, refinement=(COMPONENT, 'U1'))
session.XYDataFromPath(name='XYData-1', path=pth, includeIntersections=False, pathStyle=PATH_POINTS, numIntervals=10, shape=DEFORMED, labelType=SEQ_ID)
Coord1=session.xyDataObjects['XYData-1'].data[0][1]
del session.xyDataObjects['XYData-1']
session.viewports[session.currentViewportName].odbDisplay.setPrimaryVariable(variableLabel='U', outputPosition=NODAL, refinement=(COMPONENT, 'U2'))
session.XYDataFromPath(name='XYData-1', path=pth, includeIntersections=False, pathStyle=PATH_POINTS, numIntervals=10, shape=DEFORMED, labelType=SEQ_ID)
Coord2=session.xyDataObjects['XYData-1'].data[0][1]
del session.xyDataObjects['XYData-1']
session.viewports[session.currentViewportName].odbDisplay.setPrimaryVariable(variableLabel='U', outputPosition=NODAL, refinement=(COMPONENT, 'U3'))
session.XYDataFromPath(name='XYData-1', path=pth, includeIntersections=False, pathStyle=PATH_POINTS, numIntervals=10, shape=DEFORMED, labelType=SEQ_ID)
Coord3=session.xyDataObjects['XYData-1'].data[0][1]
del session.xyDataObjects['XYData-1']
session.viewports[session.currentViewportName].odbDisplay.setPrimaryVariable(variableLabel='STH', outputPosition=INTEGRATION_POINT)
session.XYDataFromPath(name='XYData-1', path=pth, includeIntersections=False, pathStyle=PATH_POINTS, numIntervals=10, shape=DEFORMED, labelType=SEQ_ID)
STH=session.xyDataObjects['XYData-1'].data[0][1]
del session.xyDataObjects['XYData-1']
del session.paths['Path-1']
if Coord3>=0:
fileName.write(" "+str(Coord1)+" "+str(Coord2)+" "+str(Coord3)+" "+str(STH)+"\n")
fileName.flush()fileName.close()
通过阅读代码,我们可以看到本次数据提取,我们使用了:
运行完这个脚本,一个瓶子的厚度分布数据就提取出来了。在此感谢娃哈哈机电研究所 模具与包装研究所提供的瓶体CAD模型。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删