1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#-----------------------------------------------------------HCF1------------------------------------------------------------------
# determine the stress value at the second frame of the second step
# in the "SKIN" element set (HCF1)
stressField = odb.steps['Load'].frames[2].fieldOutputs['S']
stressField1 = odb.steps['Load'].frames[3].fieldOutputs['S']
topCenter = odb.rootAssembly.instances['V20110406-1-1'].elementSets['SKIN']
Stress = stressField.getSubset(region=topCenter, position=CENTROID).values
Stress1 = stressField1.getSubset(region=topCenter, position=CENTROID).values
# calculate the static, dynamic and equivalent stresses
if choix=='Goodman':
for value in Stress :
print ('Element: %6d\tMax: %f\n'%(value.elementLabel,value.minPrincipal))
for e in Stress1:
print ('Element: %6d\tMin: %f\n'%(e.elementLabel,e.minPrincipal))
sig_stat= (value.minPrincipal + e.minPrincipal)/2
sig_dyn= (value.minPrincipal - e.minPrincipal)/2
#print ('sig_stat: %f\tsig_dyn: %f\n'%(sig_stat,sig_dyn))
alpha_G = abs(sig_D_mean/((sig_dyn/sig_stat)+(sig_D_mean/Rm)))*((1+(sig_dyn/sig_stat)**2)/(sig_dyn**2+sig_stat**2))**0.5
sig_eq_Goodman = (Rm*sig_dyn)/(Rm-(sig_stat/alpha_G))
if sig_eq_Goodman > y[0]:
N_cycle = 0
elif sig_eq_Goodman <= y[-1]:
N_cycle = 1.0E+10
else:
i=0
len_y=len(y)
while (i < len_y - 1):
if (sig_eq_Goodman < y[i]) and (sig_eq_Goodman > y[i+1]):
N_cycle = x[i+1]-((y[i+1]-sig_eq_Goodman)*(x[i+1]-x[i])/(y[i+1]-y[i]))
break
i=i+1
#print ('N_cycle : %E\n'%(N_cycle))
f1.write('Instance: %s\tElement: %6d\tMax: %f\tMin: %f\tSig_stat: %f\tSig_dyn: %f\talpha_G: %f\tSig_eq_Goodman: %f\tN_cycle: %E\n'%(value.instance.name,value.elementLabel,value.minPrincipal,e.minPrincipal,sig_stat,sig_dyn,alpha_G,sig_eq_Goodman,N_cycle)) |
Partager