problème avec la boucle for
bonjour,
j'ai créé un script qui extraire des paramètres appelés Min et Max et à partir des ces paramètres , il calcule des autres output (par exemple sig_stat)
le script est le suivant:
Code:
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)) |
ma problème est que pour les 2 boucles for je veux que elles affichent en parallèle les valeurs de min et max mais si je met le 2 ème boucle dans la première elle me donne pour chaque valeur de Max tous les valeurs de Min
et si j'ai mis chacun indépendant de l'autre je ne peux pas afficher tous les valeurs de Min et Max dans le fichiers texte crée car il m'affiche seulement les deux derniers valeurs . de même pour le syg_stat et sig_dyn il faut que le même rang d'élément de deux boucles for pour les calculer c'est à dire pour le 1 er Min et le 1er Max on a le 1er sig_dyn ou sig_stat.
je ne sais pas si ma question est claire mais j'ai besoin d'aide car je suis bloquée.
merci d'avance