Salve a tutti!
Sto uscendo pazzo, perché non riesco a capire dove sbaglio in questo programma..
Quando entro nel caso 'Non ideale' e seleziono il modello di Van Laar ad esempio, mi da errore dicendo "ZeroDivisionError: float division by zero", solo che non capisco dove sbaglio. Le formule credo siano scritte bene perché le ho controllate molte volte.. spero qualcuno di voi possa aiutarmi.
Vi allego il codice sotto:
import math
import time
def inizializzazione():
global P,y1,A1,B1,C1,A2,B2,C2,A12,A21,y2,T1s,T2s,T,y_1,y_2,x1,x2,p,h,P1s,P2s
P = float(input("Inserisci la Pressione: "))
while True:
y1 = float(input("Inserisci composizione y1: "))
if y1>=0 and y1<=1:
break
else:
print("La composizione deve variare tra 0 e 1!")
A1 = float(input("Inserisci coefficiente di Antoine A per il primo componente: "))
B1 = float(input("Inserisci coefficiente di Antoine B per il primo componente: "))
C1 = float(input("Inserisci coefficiente di Antoine C per il primo componente: "))
A2 = float(input("Inserisci coefficiente di Antoine A per il secondo componente: "))
B2 = float(input("Inserisci coefficiente di Antoine B per il secondo componente: "))
C2 = float(input("Inserisci coefficiente di Antoine C per il secondo componente: "))
A12 = float(input("Inserisci coefficiente A12: "))
A21 = float(input("Inserisci coefficiente A21: "))
y2 = 1 - y1
T1s = (B1/(A1-math.log(P,2.718))-C1)
T2s = (B2/(A2-math.log(P,2.718))-C2)
T = y1 * T1s + y2 * T2s
y_1 = 1
y_2 = 1
x1 = 0
x2 = 0
p = 0
h = 0
P1s = 0
P2s = 0
def ideale():
i = 0
global P1s,P2s,x1,x2,T,y1,y_1,y2,y_2,A1,B1,C1,A2,B2,C2
while i<30:
P1s = math.exp(A1-(B1/(C1+T)))
P2s = math.exp(A2-(B2/(C2+T)))
x1 = (P*y1)/(P1s)
x2 = 1-x1
P1s = P*((y1/y_1)+(y2/y_2)*(P1s/P2s))
T = (B1/(A1-math.log(P1s,2.718))-C1)
i = i+1
print("La dew T è: ", T)
print("La composizione di rugiada x1 è :", x1)
def nonideale(selettore):
global P1s, P2s, x1, x2, T, y1, y_1, y2, y_2, A1, B1, C1, A2, B2, C2, A12, A21, P
i = 0
while i<30:
if (selettore == "1"):
y_1 = math.exp(pow((A12 / (1 + ((A12 * x1) / (A21 * x2)))), 2))
y_2 = math.exp(pow(A21 / (1 + ((A21 * x2) / (A12 * x1))), 2))
if (selettore == "2"):
y_1 = math.exp(pow((x2), 2)) * (A12 + 2 * (A12 - A21) * x1)
y_2 = math.exp(pow((x1), 2)) * (A21 + 2 * (A12 - A21) * x2)
P1s = math.exp(A1 - (B1 / (C1 + T)))
P2s = math.exp(A2 - (B2 / (C2 + T)))
T = (B1/(A1 - math.log(P1s,2.718))-C1)
x1 = (P*y1)/(P1s*y_1)
x2 = 1 - x1
P1s = P * ((y1/y_1)+(y2/y_2)*(P1s/P2s))
i = i + 1
print("La dew T è: ", T)
print("La composizione di rugiada x1 è: ", x1)
inizializzazione()
z=input("Ideale: 0\nNon ideale: 1\n")
if(z=="0"):
ideale()
else:
x=(input("Quale modello vuoi utilizzare? \n Van Laar: 1 \n Margules: 2 \n"))
nonideale(x)
time.sleep(2000)