top-down-design: Funktionen allgemein definieren
@BlackJack: Nein, so meinte ich das nicht. Die Funktionen haben ja wohl auch nicht zu einem `NameError` geführt.
Code: Alles auswählen
def compute_energy(number, A, phi, k, cavlist, Vebit, Vebitmax, cavmaxCSS, factor, betaS):
#
condition_energy = (
Vebit0 < Vebitmax and all(t < u for t, u in zip(cavlist, cavmaxCSS))
)
E0 = 600
for s in range(1,number + 1):
# 10**(-16), because keV
beta = sqrt(2 * E0 * 1.602177 * 10**(-16) / 1.6726 * 10**27) /c0
tmp = pi * geff / (beta * Lambda)
T = sin(tmp) / tmp * sin(pi * betaS / (2 * beta))
E0 = E0 + (k*35*cavlist[s-1]/factor[s-1])/A*T*cos(phi)
if condition_energy:
Qout.append(k)
set_cells(table, len(Qout) - 1, k, Vebit, number, E0)
else:
refresh()
def compute_field(s, A, phi, k, Vebit, Vebitmax, cavmaxreal, factor, betaS, minimumf, maximumf, diffE, E):
E_average = (600 + E)/2
v_averge = sqrt(2*E_average*1.602177*10**(-16)/1.6726*10**27)
beta_average = v_averge/c0
tmp = pi * geff / (beta_average * Lambda)
T_average = sin(tmp)/tmp*sin(pi*betaS/(2*beta_average))
fieldreal = diffE*A/(27.98*k*float(s)*T_average*cos(phi))
# cannot be defined earlier because otherwise listfields not already defined
condition_field = (
fieldreal > minimumf and fieldreal < maximumf and all(fieldreal < u for u in cavmaxreal) and Vebit < Vebitmax
)
if condition_field:
Qout.append(k)
fieldout.append(fieldreal)
numberout.append(s)
Energyout.append(E)
set_cells(table, len(Qout) - 1, k, Vebit, s, E)
# no provide information for click
# info_for_click = zip(Qout, fieldout, numberout, Energyout)
# else:
# refresh()
#return info_for_click
def main():
Qcont, A1, Around, nameiso, abu, qdivbya, abu2, information = readcontaminationfile()
cavmaxCSS, cavmaxreal, factor = readcavmaxfile()
phi, Qin, A, E, diffE, minimumf, maximumf, Vebitmax, check2, check1, check3, check4, checks,\
number, numbers, diffqa0, cavlist, combo = getInputs(A1, Around, nameiso, Qcont, factor)
alarm(cavlist, cavmaxCSS, number)
info_for_click = decision(phi, Qin, A, E, diffE, minimumf, maximumf, Vebitmax, checks, \
number, numbers, cavlist, factor, cavmaxCSS, cavmaxreal)
clickrow(info_for_click, Qcont, A1, nameiso, qdivbya, abu2, information, A, diffqa0, check3, check4, factor, \
phi, minimumf, maximumf, cavmaxreal, combo)
def decision(phi, Qin, A, E, diffE, minimumf, maximumf, Vebitmax, checks, \
number, numbers, cavlist, factor, cavmaxCSS, cavmaxreal):
Q = range(1 , Qin + 1, 1)
for i in Q:
Vebit = 12*A/i
# Ist possibility: fixed number, compute Energy
if checks == [1, 0, 0, 1]:
compute_energy(number, A, phi, i, cavlist, Vebit, Vebitmax, cavmaxCSS, factor, betaS)
# does not provide any information - not needed
elif checks == [1, 0, 1, 0]:
compute_field(number, A, phi, i, Vebit, Vebitmax, cavmaxreal, factor, betaS, minimumf, maximumf, diffE, E)
info_for_click = zip(Qout, fieldout, numberout, Energyout)
elif checks == [0, 1, 1, 0]:
# for some reason: after checks no for..
normann = 3
for j in numbers:
compute_field(j, A, phi, i, Vebit, Vebitmax, cavmaxreal, factor, betaS, minimumf, maximumf, diffE, E)
info_for_click = zip(Qout, fieldout, numberout, Energyout)
else:
refresh()
return info_for_click