如何从Abaqus中的odb获取与某些集合相关的有限元区域?

时间:2018-08-27 04:14:16

标签: python element abaqus face finite-element-analysis

我已经在这个问题上研究了一段时间了。我有一个要从中提取信息的Abaqus odb文件。我需要的信息是与称为“乳胶”的集合相关的有限元区域。此信息将用于确定集合“ mastic”中其损坏变量“ SDV81”超过某个限制(0.3)的所有元素的时间累积累积量(时间=模拟中的帧数)。将绘制累积面积与时间的关系图。

我还有与模型关联的孤立网格,也可以用来确定区域(因为它们仍然相同),但是我只是不知道该怎么做。如果有任何编码方法,请告诉我。您的帮助将不胜感激。

以下是我到目前为止所写的内容:

from abaqus import *
from abaqusConstants import *
from odbAccess import *
import cPickle
import time
import sys
import regionToolset
import math
import sketch, part, material, section, assembly, mesh, load, job
import step, interaction, regionToolset, visualization
from abaqus import *
from abaqusConstants import *
from caeModules import *
from driverUtils import executeOnCaeStartup
from Tkinter import Tk
from tkFileDialog import askopenfilename

mdb.openAuxMdb(pathName='G:/My Drive/Aimane/TRB paper/AbaqusOutputs/Circular 
shapes_Lognormal Distribution/10 percent/1427_10th model_1427voids/Cae 
File/10_percent_1427voids.cae')
mdb.copyAuxMdbModel(fromName='10_percent_1427voids', 
toName='10_percent_1427voids')
mdb.closeAuxMdb()

odb = session.openOdb(name='D:/Temp/10_percent_1427.odb')

session.viewports['Viewport: 1'].setValues(displayedObject=odb)
session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=(
CONTOURS_ON_DEF, ))
session.viewports['Viewport: 1'].odbDisplay.commonOptions.setValues(
visibleEdges=FEATURE, deformationScaling=UNIFORM, uniformScaleFactor=0)
session.viewports['Viewport: 1'].odbDisplay.commonOptions.setValues(
visibleEdges=EXTERIOR)
session.viewports['Viewport: 1'].viewportAnnotationOptions.setValues(
legendNumberFormat=FIXED)

a = mdb.models['10_percent_1427voids'].parts['PART-1-1']
element_objects = a.sets['MASTIC'].elements
element_labels = [element.label for element in element_objects]

values_area =[] (# size: number of frames x 1, where the cumulative area 
#corresponding to each frame of analysis is stored in the column cell 
#associated with the row frame number)

for fr in odb.steps['Step-1'].frames:
for el in element_labels:
  value = odb.steps['Load'].frames[fr].fieldOutputs['SDV81'].values[el].data
  if value >= 0.3 
  ## code.. (get area for this element and add it to the cumulative area for 
  ## this frame) 

print (values_area)

0 个答案:

没有答案