找回密码
 注册
Simdroid-非首页
查看: 139|回复: 1

[二次开发] 输出平均应力应变

[复制链接]
发表于 2019-7-17 23:34:54 | 显示全部楼层 |阅读模式 来自 欧洲
悬赏5仿真币未解决
本帖最后由 EDC21 于 2019-7-17 23:39 编辑

我一个模型是15*10*10的长方体,有1500个单元。有没有大神能写一个代码来遍历这个长方体内所有的n*n*n的小正方体(从1*1*1到10*10*10)比如1*1*1的有1500,2*2*2的有1134个,3*3*3的有832个,然后输出每个正方体区域的平均应力应变(Stress average = Sum (Stress (element)*volume (element))/Sum (volume (element)))。
例如一个2*2*2的正方体, 拿由单元编号1,2,11,12,101,102,111,112组成的2*2*2的来说,我要得到这八个单元的应力,分别乘以他们的单元体积,然后除以他们的总体积.
有一份参考代码
import sys, getopt, os, string
import math
from odbAccess import *
from abaqusConstants import *

odbPath = "D:\ho\Desktop\Abaqus Script\M1.odb"  
odb = session.openOdb(name=odbPath,readOnly=FALSE)      
# retrieve steps from the odb
grout_instance = odb.rootAssembly.instances['COULIS_SMOOTH-1']
numElem = len(grout_instance.elements)
keys = odb.steps.keys()
for stp in keys:
        step = odb.steps[stp]
        # retrieve frames from the odb
        frameRepository = step.frames
        numFrames = len(frameRepository)
        for fr in range(0,numFrames):
                frame=step.frames[fr]
                print 'Id = %d, Time = %f\n'%(frame.frameId,frame.frameValue)
                # get fieldOutputs object
                fo = frame.fieldOutputs
                S  = fo['S']
                EVOL = fo['EVOL']
                S_grout = S.getSubset(region=grout_instance,\
                                                position=INTEGRATION_POINT,
                                                elementType='CAX3')
                EVOL_grout = EVOL.getSubset(region=grout_instance)
                myStress_data = {} #Declaration of my New stress Data
                # Loops over elements to get stpress S11 and Volume
                for i in range(0,len(S_grout.values)):
                        evol= EVOL_grout.values.data
                        a = (S_grout.values.data[0])*evol
                        elemId=S_grout.values.elementLabel
                        myStress_data.setdefault(elemId,[]).append(a)
                # Append
                elementLabels = []
                elementData = []
                for key in sorted(myStress_data.iterkeys()):
                        elementLabels.append(key)
                        elementData.append(myStress_data[key])
                myS11 = frame.FieldOutput(name='myS11',
                                                                           description='my Principle stpress S11',
                                                                           type=SCALAR)
                myS11.addData(position=INTEGRATION_POINT,
                                                   instance=grout_instance,
                                                   labels=elementLabels,
                                                   data=elementData)
odb.save()
odb.close()

附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2019-7-18 14:45:16 | 显示全部楼层 来自 德国
Simdroid开发平台
建模设置各自对应的组, 然后输出每单个组的应力结果就好了, 在dat file里面可已找到每一个对应单元的应力结果啊.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-26 05:06 , Processed in 0.028469 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表