-
-
Save anonymous/82cb7f691673e0147edf to your computer and use it in GitHub Desktop.
def f(x): | |
for i in range(x): | |
yield 2*i | |
print(list(f(10))) |
#!/usr/bin/env python
--coding:utf-8 --
from odbAccess import *
import os
def odbReadByClutch(odb):
#寻找需要输出的集合----------------------------------------------------------------------
set_ee=odb.rootAssembly.instances['PART-1-1'].elementSets['SET-YINGBIAN']
set_ss=odb.rootAssembly.instances['PART-1-1'].elementSets['SET-ZENGQIANGCENG']
fieldStrain=odb.steps['Step-1'].frames[-1].fieldOutputs['EE']
fieldStress=odb.steps['Step-1'].frames[-1].fieldOutputs['S']
Field_EE=fieldStrain.getSubset(region=set_ee)
Field_SS=fieldStress.getSubset(region=set_ss)
#----------------------------------------------------------------------------------------
job_ee=[]
job_s11=[]
job_s22=[]
job_s33=[]
job_s12=[]
#循环读取个单元应力应变数值,以列表形式缓存。----------------------------------------------
#EE
for i in range(len(Field_EE.values)):
app_ee=Field_EE.values[i].maxPrincipal
job_ee.append(app_ee)
#S
for j in range(len(Field_SS.values)):
app_s11=Field_SS.values[j].data[0]
job_s11.append(app_s11)
for k in range(len(Field_SS.values)):
app_s22=Field_SS.values[k].data[1]
job_s22.append(app_s22)
for m in range(len(Field_SS.values)):
app_s33=Field_SS.values[m].data[2]
job_s33.append(app_s33)
for n in range(len(Field_SS.values)):
app_s12=Field_SS.values[n].data[3]
job_s12.append(app_s12)
odb.close()
#提取最大应力应变--------------------------------------------------------------------------
Max_EE=max(job_ee)
Min_EE=min(job_ee)
Max_s11=max(job_s11)
Max_s22=max(job_s22)
Max_s33=max(job_s33)
Max_s12=max(job_s12)
Min_s11=min(job_s11)
Min_s22=min(job_s22)
Min_s33=min(job_s33)
Min_s12=min(job_s12)
#以字典的形式返回结果---------------------------------------------------------------------
return {'Max_EE':Max_EE,'Min_EE':Min_EE,'Max_s11':Max_s11,'Min_s11':Min_s11,
'Max_s22':Max_s22,'Min_s22':Min_s22,'Max_s33':Max_s33,'Min_s33':Min_s33,
'Max_s12':Max_s12,'Min_s12':Min_s12}
#-----------------------------------------------------------------------------------------
#主函数
if name == "main":
#获取当前文件夹路径,并读取文件夹下的所有文件。-------------------------------------------
dir_path=os.getcwd()
fileName=os.listdir(dir_path)
xrfile=[]
#遍历所有ODB文件--------------------------------------------------------------------------
for i in range(len(fileName)):
if fileName[i][-3:]=='odb':
try:
odb=openOdb(fileName[i])
except:
newFileName='upGrade'+fileName[i]
upgradeOdb(fileName[i],newFileName)
odb=openOdb(newFileName)
xr=odbReadByClutch(odb)
xrfile.append(fileName[i])
xrfile.append(xr)
#向esfile.txt中写入读取到的数据-------------------------------------------------------------
esfile=open('esfile.txt','w')
for j in xrfile:
esfile.write(str(j))
esfile.write('\n')
esfile.close()
#提示所有过程已经结束-----------------------------------------------------------------------
print '数据提取完毕并写入esfile.txt中。'
'''
Abaqus/CAE Release 2016
Internal Version: 2015_09_25-04.31.09 126547
Run by Clutch on Sun Sep 03 2017
'''
import psycopg2
Suponemos que solamente podemos hacer consultas del tipo SELECT *
Queremos el join entre A(id int, nombre varchar(100)) y
B(id int, nombre varchar(100))
Reemplazar nombres de usuario y de la base de datos.
Ingresar otros parámetros si es necesario
conn = psycopg2.connect("dbname=XX user=XX")
curA = conn.cursor()
curB = conn.cursor()
curA.execute("SELECT * FROM A")
Supondremos que el id en ambas está en la posición 0.
Para hacerlo más elegante podemos obtener esa información del cursor.
Si queremos saber el orden de las columnas usamos el
atributo description del cursor:
print([column.name for column in curA.description])
tuplaA = curA.fetchone()
while tuplaA:
curB.execute("SELECT * FROM B")
tuplaB = curB.fetchone()
while tuplaB:
if tuplaA[0] == tuplaB[0]:
print("{} - {}".format(tuplaA, tuplaB))
tuplaB = curB.fetchone()
tuplaA = curA.fetchone()
conn.close()