计算机abaqus Python实例操作excel文件.docx

上传人:b****5 文档编号:7426757 上传时间:2023-01-23 格式:DOCX 页数:7 大小:17.18KB
下载 相关 举报
计算机abaqus Python实例操作excel文件.docx_第1页
第1页 / 共7页
计算机abaqus Python实例操作excel文件.docx_第2页
第2页 / 共7页
计算机abaqus Python实例操作excel文件.docx_第3页
第3页 / 共7页
计算机abaqus Python实例操作excel文件.docx_第4页
第4页 / 共7页
计算机abaqus Python实例操作excel文件.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

计算机abaqus Python实例操作excel文件.docx

《计算机abaqus Python实例操作excel文件.docx》由会员分享,可在线阅读,更多相关《计算机abaqus Python实例操作excel文件.docx(7页珍藏版)》请在冰豆网上搜索。

计算机abaqus Python实例操作excel文件.docx

计算机abaqusPython实例操作excel文件

abaqusPython实例——操作excel文件

目前处理数据离不开excel,所以pythoner必须学会用python操作excel表格。

Python与excel交互方法也比较多,我一开始就接触的xlrd/xlwt包。

直到现在也没有发现什么bug或者缺点,而且上次从ujs505那里知道Win32Com的方法在64bit系统下无效了,但是xlrd/xlwt方法依然好用,我欣喜万分。

这里给出我一个从材料单轴拉伸数据TRA文件中处理得到拉伸过程中各种应力应变量并记录到excel中的例子,其实这个例子比较乱,但是实在没有时间给弄个明了的版本了。

大家将就看看

frommathimport*

importsys

importre

importxlrd

fromxlwtimportWorkbook

book=Workbook()

sheet=book.add_sheet('test_NT',cell_overwrite_ok=True)

sheet1=book.add_sheet('engineer',cell_overwrite_ok=True)

sheet2=book.add_sheet('True',cell_overwrite_ok=True)

sheet3=book.add_sheet('Plastic',cell_overwrite_ok=True)

sheet4=book.add_sheet('Plastic_modify',cell_overwrite_ok=True)

total_nubmer=46

nclown=0

nclown_e=0

nclown_t=0

nclown_p=0

nclown_pm=0

foriinrange(total_nubmer):

 myfile='tensile-'+str(i+1)

 f=open(myfile+'.TRA','r')

 engineer_strain=[]

 true_strain=[]

 engineer_stress=[]

 true_stress=[]

 plastic_strain=[]

 test_force=[]

 s1=f.readline()

 s2=f.readline()

 s3=f.readline()

 s4=f.readline()

 s1=re.sub('"|\t|;|\n','',s1)

 s1=re.split('+',s1)

name=s1[2]

 little=name[-2:

]

 s2=re.sub('"|\t|;|\n','',s2)

 s2=re.split('+',s2)

 times=s2[2]

 printname+'run'+str(times)

 bk=xlrd.open_workbook('Staticreport.xls')

 sh=bk.sheet_by_name("Stat")

 diameter=sh.cell_value(i+2,4)

 area=pi*((diameter)**2)/4

 E_modulus=sh.cell_value(i+2,7)

 state=True

 s0=f.readlines()

 s0=s0[-2]

 s0=re.sub(';','',s0)

 s0=re.split('+',s0)

 f.seek(0)

 s1=f.readline()

 s2=f.readline()

 s3=f.readline()

 s4=f.readline()

 whilestate:

  s=f.readline()

  s=re.sub(';','',s)

  s=re.split('+',s)

#  prints

#  prints0

  if(s=="EOF")|(s==s0):

   state=False

  else:

   force=float(s[1])

   eee=float(s[0])/100.0

   sss=force/area

   test_force.append(force)

   engineer_strain.append(eee)

   engineer_stress.append(sss)

   true_strain.append(log(1.0+eee))

   true_stress.append(sss*(1.0+eee))

   plastic_strain.append(log(1.0+eee)-sss*(1.0+eee)/E_modulus)

 f.close()

##########################################################3

 simu_strain=[]

 simu_P_strain=[]

 simu_triax=[]

 simu_force=[]

 simu_E=204323.0

 simu_little=str(int(little)+3)

 simu_name="New_pass"+simu_little+"test.dat"

 print'referto'+simu_name

 simu_f=open(simu_name,'r')

 simu_state=True

 s0=simu_f.readlines()

 s0=s0[-1]

 s0=re.sub(';','',s0)

 s0=re.split('+',s0)

# prints0

 simu_f.seek(0)

 simu_s1=simu_f.readline()

 whilesimu_state:

  simu_s2=simu_f.readline()

  simu_s2=re.sub(';','',simu_s2)

  simu_s2=re.split('+',simu_s2)

  if(simu_s2=="EOF")|(simu_s2==s0):

   simu_state=False

  else:

#   printsimu_s2

   s_force=float(simu_s2[5])

   s_eee=float(simu_s2[2])

   s_triax=float(simu_s2[3])

   s_sss=s_force/area

   simu_force.append(s_force)

   simu_triax.append(s_triax)

   simu_strain.append(s_eee)

   simu_P_strain.append(log(1.0+s_eee)-s_sss*(1.0+s_eee)/simu_E)

 simu_f.close()

##########################################################3 

nrows=3

 sheet.write(0,nclown,'sample')

 sheet.write(0,nclown+2,name)

 sheet.write(1,nclown,"area")

 sheet.write(1,nclown+2,area)

 sheet.write(1,nclown+1,diameter)

 sheet.write(1,nclown+3,"E_modulus")

 sheet.write(1,nclown+4,E_modulus)

 sheet.write(2,nclown,"E_strain")

 sheet.write(2,nclown+1,"E_stress")

 sheet.write(2,nclown+2,"T_strain")

 sheet.write(2,nclown+3,"T_stress")

 sheet.write(2,nclown+4,"PL_strain")

 foriinrange(len(engineer_strain)):

  sheet.write(nrows,nclown,engineer_strain[i])

  sheet.write(nrows,nclown+1,engineer_stress[i])

  sheet.write(nrows,nclown+2,true_strain[i])

  sheet.write(nrows,nclown+3,true_stress[i])

  sheet.write(nrows,nclown+4,plastic_strain[i])

  nrows+=1

 nclown+=5

#outputengineerstrainandstress

 nrows=3

 sheet1.write(0,nclown_e,'file')

 sheet1.write(0,nclown_e+1,myfile)

 sheet1.write(0,nclown_e+2,"E_modulus")

 sheet1.write(0,nclown_e+3,E_modulus)

 sheet1.write(1,nclown_e,'sample')

 sheet1.write(1,nclown_e+1,name)

 sheet1.write(1,nclown_e+2,'run')

 sheet1.write(1,nclown_e+3,times)

 sheet1.write(2,nclown_e,"E_strain")

 sheet1.write(2,nclown_e+1,"E_stress")

 foriinrange(len(engineer_strain)):

  sheet1.write(nrows,nclown_e,engineer_strain[i])

  sheet1.write(nrows,nclown_e+1,engineer_stress[i])

  nrows+=1

 nclown_e+=4

#outputtruestrainandstress

 nrows=3

 sheet2.write(0,nclown_t,'file')

 sheet2.write(0,nclown_t+1,myfile)

 sheet2.write(0,nclown_t+2,"E_modulus")

 sheet2.write(0,nclown_t+3,E_modulus)

 sheet2.write(1,nclown_t,'sample')

 sheet2.write(1,nclown_t+1,name)

 sheet2.write(1,nclown_t+2,'run')

 sheet2.write(1,nclown_t+3,times)

 sheet2.write(2,nclown_t,"T_strain")

 sheet2.write(2,nclown_t+1,"T_stress")

 foriinrange(len(engineer_strain)):

  sheet2.write(nrows,nclown_t,true_strain[i])

  sheet2.write(nrows,nclown_t+1,true_stress[i])

  nrows+=1

 nclown_t+=4

#outputplasticstrainandstress

nrows=3

 sheet3.write(0,nclown_p,'file')

 sheet3.write(0,nclown_p+1,myfile)

 sheet3.write(0,nclown_p+2,"E_modulus")

 sheet3.write(0,nclown_p+3,E_modulus)

 sheet3.write(1,nclown_p,'sample')

 sheet3.write(1,nclown_p+1,name)

 sheet3.write(1,nclown_p+2,'run')

 sheet3.write(1,nclown_p+3,times)

 sheet3.write(2,nclown_p,"PL_strain")

 sheet3.write(2,nclown_p+1,"T_stress")

 foriinrange(len(engineer_strain)):

  sheet3.write(nrows,nclown_p,plastic_strain[i])

  sheet3.write(nrows,nclown_p+1,true_stress[i])

  nrows+=1

 nclown_p+=4

#outputmodifiedplasticstrainandtruestress 

 nrows=3

 i_temp=1

 sheet4.write(0,nclown_pm,'file')

 sheet4.write(0,nclown_pm+1,myfile)

 sheet4.write(0,nclown_pm+2,"E_modulus")

 sheet4.write(0,nclown_pm+3,E_modulus)

 sheet4.write(1,nclown_pm,'sample')

 sheet4.write(1,nclown_pm+1,name)

 sheet4.write(1,nclown_pm+2,'run')

 sheet4.write(1,nclown_pm+3,times)

 sheet4.write(2,nclown_pm,"PL_strain")

 sheet4.write(2,nclown_pm+1,"Force")

 running=True

 foriinrange(len(engineer_strain)):

  ifrunning:

   mincr=150

   temp_e=(test_force[i]-test_force[i+mincr])/(plastic_strain[i]-plastic_strain[i+mincr])

   iftemp_e>400000.0:

    i_temp=i

    running=False

  else:

   modifed_strain=engineer_strain[i]-engineer_strain[i_temp]

   modifed_plastic_strain=log(1.0+modifed_strain)-engineer_stress[i]*(1.0+modifed_strain)/E_modulus

   sheet4.write(nrows,nclown_pm,modifed_plastic_strain)

   sheet4.write(nrows,nclown_pm+1,test_force[i])

   nrows+=1

##outputsimulationresult

 nrows=3

 sheet4.write(2,nclown_pm+2,"PL_strain")

 sheet4.write(2,nclown_pm+3,"Force")

 sheet4.write(2,nclown_pm+4,"TRIAX")

 forjinrange(len(simu_P_strain)):

  sheet4.write(nrows,nclown_pm+2,simu_P_strain[j])

  sheet4.write(nrows,nclown_pm+3,simu_force[j])

  sheet4.write(nrows,nclown_pm+4,simu_triax[j])

  nrows+=1

#######################nextfile(Testresult)

 nclown_pm+=5

book.save('material_treat.xls')

另一例子

importcsv

fromodbAccessimport*

fromabaqusConstantsimport*

filename=getInput('PleaseinputtheODBfilename')

#下面这样都是我定义的字典或list,用来存保存提取数据的

elementArea={} 

elementConn={}

nodeArea  ={}

timeTP    =[]

#下面可以看做一般的从odb文件中提取结果的步骤

#打开指定的odb文件

odb=openOdb(path=filename)

#得到assembly中所有的instance

inst=odb.rootAssembly.instances

#或取第一个instance中的所有单元,因为我这个odb里面只有一个instance

#.keys()方法可以获得一个list有所有的instance名字

elments=inst[inst.keys()[0]].elements

#下面一段对单元循环,得到每个单元的几个结点,然后记录下来

forelinelments:

   label=el.label

   nodes=el.connectivity

   elementConn[label]=nodes

#节点

nodes=inst[inst.keys()[0]].nodes

forndinnodes:

   label=nd.label

   nodeArea[label]=0

#打开指定的step

st=odb.steps[odb.steps.keys()[0]]

#对指定step的某个特定场变量做循环

forvinst.frames[-1].fieldOutputs['EVOL'].values:

   label=v.elementLabel

   data=v.data

   elementArea[label]=data

fork,vinelementArea.iteritems():

   nds=elementConn[k]

   forndinnds:

       nodeArea[nd]+=0.25*v

   #下面是提取每个frame中每个节点的NT11值

frames=st.frames   

forfrinframes:

   nt11=fr.fieldOutputs['NT11'].values

   time=fr.frameValue

   sumTp=0

   sumAr=0

   forvainnt11:

       label=va.nodeLabel

       data=va.data

       ifdata<0:

           area=nodeArea[label]

           sumTp+=data*area

           sumAr+=area

   try:

       mean=float(sumTp)/float(sumAr)

       timeTP.append((time,mean))

   except:

       printfr.frameId

filename=getInput('pleaeinputthecsvfile\nnametosave')

wr=csv.writer(file(filename,'wb'))

#这个把结果写进csv文件,只要一句,很简单,也可以在这一句之前写个表头

wr.writerows(timeTP)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1