关于Abaqus+python提取s11残余应力(按路径提取)

目录

写在前面

代码

过程与方法

总结


写在前面

接上一篇文章,通过Abaqus+python提取残余应力S11的方法!今天又有新的方法,可能这是很常用的方法,但是我现在才发现。

先来看一张效果图:

 这是可能会用的的Abaqus python接口

nullicon-default.png?t=M85Bhttps://abaqus-docs.mit.edu/2017/English/SIMACAEKERRefMap/simaker-c-fieldoutputcpp.htm#simaker-fieldoutputvectoroutputcpp

代码

    def getS11(self,step="Step-1",frame=-1,out_path=""):
        # Create a txt document to store the obtained stress
        with open(out_path, "w+") as fp:
            elementSet = self.odb.rootAssembly.elementSets['SET-5']
            # elemsets = self.odb.rootAssembly.instances['PART-1-1'].nodeSets["SET-1"]
            Frame = self.odb.steps[step].frames[frame]
            stress_field = Frame.fieldOutputs['S']
            stress_field_nodset = stress_field.getSubset(region=elementSet)
            fields = stress_field_nodset.getScalarField(componentLabel="S11")
            for s11 in fields.values:
                #S11 S22 S33 S12 S13 S23
                fp.write(str("elementLabel:"+str(s11.elementLabel)+"\tS11:"+str(s11.data))+"\n")
                self.s11dict[s11.elementLabel]=s11.data
        self.odb.close()

        return self.s11dict

elementSet = self.odb.rootAssembly.elementSets['SET-5']

过程与方法

首先我们现在Abaqus里面选择对应的单元如下图:

然后电机Element在模型里面按住Shift点击自己需要提取的单元

如图

 之后保存编译->提交工作得到.odb文件以后就可以运用python代码提取S11的值

Frame = self.odb.steps[step].frames[frame]
stress_field = Frame.fieldOutputs['S']
stress_field_nodset = stress_field.getSubset(region=elementSet)

这里使用stress_field.getSubset(region=elementSet) 指定提取单元区域就可以获取应力值,但是我们要的是S11,还需要通过一下获取S11的值。

fields = stress_field_nodset.getScalarField(componentLabel="S11")

他返回值的结构是

({'baseElementType': 'C3D8R', 'conjugateData': None, 'conjugateDataDouble': 'unknown', 'data': 0.00601191446185112, 'dataDouble': 'unknown', 'elementLabel': 337, 'face': None, 'instance': 'OdbInstance object', 'integrationPoint': 1, 'inv3': None, 'localCoordSystem': None, 'localCoordSystemDouble': 'unknown', 'magnitude': None, 'maxInPlanePrincipal': None, 'maxPrincipal': None, 'midPrincipal': None, 'minInPlanePrincipal': None, 'minPrincipal': None, 'mises': None, 'nodeLabel': None, 'outOfPlanePrincipal': None, 'position': INTEGRATION_POINT, 'precision': SINGLE_PRECISION, 'press': None, 'sectionPoint': None, 'tresca': None, 'type': SCALAR})

这里我们可能用到的就是'data'和‘elementLable’。

总结

通过以上方法获取S11值会比较方便但是前提是,单元不变就是网格不发生改变!相比上一篇文章,这个方法就方便多了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼爱码士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值