miércoles, 1 de junio de 2022

Tkinter Viscosidad del Petróleo

Ahora se realiza la interfaz gráfica de la viscosidad del petróleo, cabe recalcar que en el código se calculan diferentes tipos de viscosidad como lo son la viscosidad del petróleo muerto, viscosidad del petróleo saturado y bajosaturado, a continuación se muestra el código completo: 




import math as math
from tkinter import *
import tkinter as tk
from tkinter import ttk
import numpy as np
from tkinter import messagebox

 

Ventana = Tk()
Ventana.geometry("450x200")
Ventana.maxsize(450,200)
Ventana.minsize(450,200)
Ventana.title("Viscosidad del Petróleo")
Ventana.configure(background="gray80",highlightbackground="gray80",highlightcolor="black")
 
Valores_1 = ["Beal, C.","Beggs, H.D. y Robinson, J.R","Glaso, O.","Egbogad, E.O.","Kartoatmodjo, T. y Schimidt, Z.","Chew, J.N. y Connally, C.A., Jr.","Vázquez, M.E. y Beggs, H.D."]
 
Variable_1 = tk.StringVar()
Visor_correlaciones_1 = ttk.Combobox(Ventana)
Visor_correlaciones_1.place(relx=0.01, rely=0.02, relheight=0.11, relwidth=0.480, bordermode='ignore')
Visor_correlaciones_1.configure(takefocus="",state="readonly",textvariable = Variable_1, justify = "center",values = Valores_1)
Visor_correlaciones_1.current(0)
 
def Correlaciones_Viscosidad_petoleo(event):
 
            try:
 
                        # P = 4000
                        # Pb = 2500
                        # T = 180  
                        # API = 31 
                        # Yg = 0.95
                        # Ppr = 1.54; Tpr = 1.30
 
                        P   = float(Entrada_1.get()) # psi
                        Pb  = float(Entrada_2.get()) # psi
                        T   = float(Entrada_3.get()) # °F
                        API = float(Entrada_4.get()) # °API
                        Yg  = float(Entrada_5.get())
                        Tpr = float(Entrada_6.get())
                        Ppr = float(Entrada_7.get()) 
 
                        if P <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Presión es incorrecta")
 
                        elif Pb <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Presión de burbuja es incorrecta")
 
                        elif T <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Temperatura del separador es incorrecta")
 
                        elif API <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Gravedad API es incorrecta")
 
                        elif Yg <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Densidad del gas es incorrecta")
 
                        elif Tpr <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Temperatura pseudoreducida es incorrecta")
 
                        elif Ppr <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Presión pseudoreducida es incorrecta")
 
                        else:
 
                                   # Correlación Standing, M.B. condiciones de burbuja
 
                                   Rs  = Yg*(((Pb/18.2)+1.4)*10**(0.0125*API-0.000917*T))**1.2048
 
                                   if str(Variable_1.get()) == Valores_1[0]:
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,"");Salida_2.insert(tk.END,0.00)
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,"");Salida_3.insert(tk.END,0.00)
 
                                               # Correlación de Beal, C.
 
                                               a = 10**(0.43+(8.33/API))
 
                                               Mod1 = (0.32+((1.8*10**7)/(API**4.53)))*(360/(T+200))**a
 
                                               # Correlación de Beal, C.
 
                                               A = 10**(Rs*((2.2*10**-7)*Rs-7.4*(10**-4)))
                                               b = (0.68/10**(8.62*10**(-5)*Rs))+(0.25/10**(1.1*10**(-3)*Rs))+(0.062/10**(3.74*10**(-3)*Rs))
 
                                               Mob1 = A*Mod1**b
 
                                               Mo1 = (0.024*Mob1**1.6+0.038*Mob1**0.56)*(0.001)*(P-Pb)+Mob1
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Mod1)
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,Mo1)
                                              
                                   elif str(Variable_1.get()) == Valores_1[1]:
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,"");Salida_2.insert(tk.END,0.00)
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,"");Salida_3.insert(tk.END,0.00)
 
                                               # Correlación de Beggs, H.D. y Robinson, J.R
 
                                               z = 3.0324-0.02023*API
 
                                               y = 10**z
 
                                               x = y*T**(-1.163)
 
                                               Mod2 = 10**x-1
 
                                               # Correlación de Beggs, H.D y Robinson, J.R.
 
                                               a = 10.175*(Rs+100)**(-0.515)
 
                                               b = 5.44*(Rs+150)**(-0.338)
 
                                               Mob2 = a*Mod2**b
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Mod2)
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,Mob2)
                                              
                                   elif str(Variable_1.get()) == Valores_1[2]:
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,"");Salida_2.insert(tk.END,0.00)
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,"");Salida_3.insert(tk.END,0.00)
 
                                               # Correlación de Glaso, O.
 
                                               Mod3  = (3.141*10**10)*(T**-3.444)*(np.log10(API))**(10.313*np.log10(T)-36.447)
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Mod3)
 
                                   elif str(Variable_1.get()) == Valores_1[3]:
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,"");Salida_2.insert(tk.END,0.00)
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,"");Salida_3.insert(tk.END,0.00)
 
                                               # Correlación de Egbogad, E.O.
 
                                               Mod = 1.8653-0.025086*API-0.5644*np.log10(T)
 
                                               Mod4 = 10**(10**Mod)-1
                                              
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Mod4)
 
                                   elif str(Variable_1.get()) == Valores_1[4]:
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,"");Salida_2.insert(tk.END,0.00)
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,"");Salida_3.insert(tk.END,0.00)
 
                                               # Correlación de Kartoatmodjo, T. y Schimidt, Z.
 
                                               Mod5 = (16.0*10**8)*(T**-2.8177)*np.log10(API)**(5.7526*np.log10(T)-26.9718)
 
                                               # Correlación de Kartoatmodjo, T. y Schmidt, Z.
 
                                               b = 10**(-0.00081*Rs)
 
                                               A = (0.2001+(0.8428*10**(-0.000845*Rs)))*(Mod5**(0.43+0.5165*b))
 
                                               Mob3 = -0.06821+0.9824*A+40.34*(10**-5)*(A**2)
 
                                               # Correlación de Kartoatmodjo, T. y Schmidt, Z.
 
                                               Mo3  = 1.00081*Mob3+1.127*(10**-3)*(P-Pb)*(-65.17*(10**-4)*(Mob3**1.8148)+0.038*(Mob3**1.59))
                                              
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Mod5)
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,Mob3)
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,Mo3)
 
                                   elif str(Variable_1.get()) == Valores_1[5]:
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,"");Salida_2.insert(tk.END,0.00)
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,"");Salida_3.insert(tk.END,0.00)
 
                                               # Correlación de Beal, C.
 
                                               a = 10**(0.43+(8.33/API))
 
                                               Mod1 = (0.32+((1.8*10**7)/(API**4.53)))*(360/(T+200))**a
 
                                               # Correlación de Chew, J.N. y Connally, C.A., Jr.
 
                                               A = 10**(Rs*((2.2*10**-7)*Rs-7.4*(10**-4)))
                                              
                                               b = (0.68/10**(8.62*10**(-5)*Rs))+(0.25/10**(1.1*10**(-3)*Rs))+(0.062/10**(3.74*10**(-3)*Rs))
 
                                               Mob1 = A*Mod1**b
                                              
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,Mob1)
 
                                   elif str(Variable_1.get()) == Valores_1[6]:
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
                                               Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,"");Salida_2.insert(tk.END,0.00)
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,"");Salida_3.insert(tk.END,0.00)
 
                                               # Correlación de Beal, C.
 
                                               a = 10**(0.43+(8.33/API))
 
                                               Mod1 = (0.32+((1.8*10**7)/(API**4.53)))*(360/(T+200))**a
 
                                               # Correlación de Chew, J.N. y Connally, C.A., Jr.
 
                                               A = 10**(Rs*((2.2*10**-7)*Rs-7.4*(10**-4)))
                                              
                                               b = (0.68/10**(8.62*10**(-5)*Rs))+(0.25/10**(1.1*10**(-3)*Rs))+(0.062/10**(3.74*10**(-3)*Rs))
 
                                               Mob1 = A*Mod1**b
 
                                               # Correlación de Vázquez, M.E. y Beggs, H.D.
 
                                               m = 2.6*P**1.187*np.exp(-11.513-8.98*10**(-5)*P)
 
                                               Mo2 = Mob1*(P/Pb )**m
                                              
                                               Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,Mo2)
                                              
                                   else:
 
                                               messagebox.showwarning("Advertencia!","La opción no existe")
 
            except ZeroDivisionError:
 
                        messagebox.showwarning("Advertencia!","Los datos ingresados son incorrectos, por favor revisalos")
 
            except SyntaxError:
 
                        messagebox.showwarning("Advertencia!","Los datos ingresados son incorrectos, por favor revisalos")
 
            except ValueError:
 
                        messagebox.showwarning("Advertencia!","Los datos ingresados son incorrectos, por favor revisalos")
 
            finally:
 
                        pass
 
            return
 
Visor_correlaciones_1.bind('<<ComboboxSelected>>', Correlaciones_Viscosidad_petoleo)
 
Recuadro_Entradas = tk.LabelFrame(Ventana)
Recuadro_Entradas.place(relx=0.01, rely=0.13, relheight=0.850, relwidth=0.980)
Recuadro_Entradas.configure(relief='groove',foreground="black",text='''Entradas''',background="gray80",highlightbackground="gray80",highlightcolor="black",width=330)
 
Mensaje_1 = tk.Message(Recuadro_Entradas)
Mensaje_1.place(relx=0.02, rely=0.01, height=25, width=80)
Mensaje_1.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''P''')
Mensaje_2 = tk.Message(Recuadro_Entradas)
Mensaje_2.place(relx=0.21, rely=0.01, height=25, width=80)
Mensaje_2.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Pb''')
Mensaje_3 = tk.Message(Recuadro_Entradas)
Mensaje_3.place(relx=0.40, rely=0.00, height=25, width=80)
Mensaje_3.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''T''')
Mensaje_4 = tk.Message(Recuadro_Entradas)
Mensaje_4.place(relx=0.60, rely=0.00, height=25, width=80)
Mensaje_4.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''°API''')
Mensaje_5 = tk.Message(Recuadro_Entradas)
Mensaje_5.place(relx=0.80, rely=0.00, height=25, width=80)
Mensaje_5.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Yg''')
 
Mensaje_6 = tk.Message(Recuadro_Entradas)
Mensaje_6.place(relx=0.02, rely=0.30, height=25, width=80)
Mensaje_6.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Tpr''')
Mensaje_7 = tk.Message(Recuadro_Entradas)
Mensaje_7.place(relx=0.21, rely=0.30, height=25, width=80)
Mensaje_7.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Ppr''')
 
Mensaje_9 = tk.Label(Recuadro_Entradas)
Mensaje_9.place(relx=0.00, rely=0.62, height=25, width=60)
Mensaje_9.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Resultado:''')
Mensaje_10 = tk.Label(Recuadro_Entradas)
Mensaje_10.place(relx=0.13, rely=0.62, height=25, width=40)
Mensaje_10.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Mod :''')
Mensaje_11 = tk.Label(Recuadro_Entradas)
Mensaje_11.place(relx=0.40, rely=0.62, height=25, width=40)
Mensaje_11.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Mob :''')
Mensaje_12 = tk.Label(Recuadro_Entradas)
Mensaje_12.place(relx=0.66, rely=0.62, height=25, width=40)
Mensaje_12.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Mo :''')
Mensaje_13 = tk.Label(Recuadro_Entradas)
Mensaje_13.place(relx = 0.93, rely = 0.62, height=25, width=30)
Mensaje_13.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''cp''')
 
Entrada_1 = tk.Entry(Recuadro_Entradas)
Entrada_1.place(relx=0.02, rely=0.18, height=20, width=80)
Entrada_1.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_2 = tk.Entry(Recuadro_Entradas)
Entrada_2.place(relx=0.21, rely=0.18, height=20, width=80)
Entrada_2.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_3 = tk.Entry(Recuadro_Entradas)
Entrada_3.place(relx=0.40, rely=0.18, height=20, width=80)
Entrada_3.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_4 = tk.Entry(Recuadro_Entradas)
Entrada_4.place(relx=0.60, rely=0.18, height=20, width=80)
Entrada_4.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_5 = tk.Entry(Recuadro_Entradas)
Entrada_5.place(relx=0.80, rely=0.18, height=20, width=80)
Entrada_5.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
 
Entrada_6 = tk.Entry(Recuadro_Entradas)
Entrada_6.place(relx=0.02, rely=0.46, height=20, width=80)
Entrada_6.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_7 = tk.Entry(Recuadro_Entradas)
Entrada_7.place(relx=0.21, rely=0.46, height=20, width=80)
Entrada_7.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
 
Salida_1 = tk.Entry(Recuadro_Entradas)
Salida_1.place(relx=0.22, rely=0.64, height=20, width=80)
Salida_1.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Salida_2 = tk.Entry(Recuadro_Entradas)
Salida_2.place(relx=0.49, rely=0.64, height=20, width=80)
Salida_2.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Salida_3 = tk.Entry(Recuadro_Entradas)
Salida_3.place(relx=0.74, rely=0.64, height=20, width=80)
Salida_3.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
 
Entrada_1.delete(0,tk.END);Entrada_1.insert(tk.END,"");Entrada_1.insert(tk.END,0.00)
Entrada_2.delete(0,tk.END);Entrada_2.insert(tk.END,"");Entrada_2.insert(tk.END,0.00)
Entrada_3.delete(0,tk.END);Entrada_3.insert(tk.END,"");Entrada_3.insert(tk.END,0.00)
Entrada_4.delete(0,tk.END);Entrada_4.insert(tk.END,"");Entrada_4.insert(tk.END,0.00)
Entrada_5.delete(0,tk.END);Entrada_5.insert(tk.END,"");Entrada_5.insert(tk.END,0.00)
Entrada_6.delete(0,tk.END);Entrada_6.insert(tk.END,"");Entrada_6.insert(tk.END,0.00)
Entrada_7.delete(0,tk.END);Entrada_7.insert(tk.END,"");Entrada_7.insert(tk.END,0.00)
Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,"");Salida_2.insert(tk.END,0.00)
Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,"");Salida_3.insert(tk.END,0.00)
 
def Limpiando():
 
            Entrada_1.delete(0,tk.END);Entrada_1.insert(tk.END,"");Entrada_1.insert(tk.END,0.00)
            Entrada_2.delete(0,tk.END);Entrada_2.insert(tk.END,"");Entrada_2.insert(tk.END,0.00)
            Entrada_3.delete(0,tk.END);Entrada_3.insert(tk.END,"");Entrada_3.insert(tk.END,0.00)
            Entrada_4.delete(0,tk.END);Entrada_4.insert(tk.END,"");Entrada_4.insert(tk.END,0.00)
            Entrada_5.delete(0,tk.END);Entrada_5.insert(tk.END,"");Entrada_5.insert(tk.END,0.00)
            Entrada_6.delete(0,tk.END);Entrada_6.insert(tk.END,"");Entrada_6.insert(tk.END,0.00)
            Entrada_7.delete(0,tk.END);Entrada_7.insert(tk.END,"");Entrada_7.insert(tk.END,0.00)
            Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
            Salida_2.delete(0,tk.END);Salida_2.insert(tk.END,"");Salida_2.insert(tk.END,0.00)
            Salida_3.delete(0,tk.END);Salida_3.insert(tk.END,"");Salida_3.insert(tk.END,0.00)
 
            return
 
Limpieza = Button(Recuadro_Entradas,activebackground="OliveDrab4",activeforeground="black",background="gray80",disabledforeground="#a3a3a3",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",pady="0",text='''Limpieza''', command = Limpiando).place(relx = 0.23, rely = 0.80, height=25, width=217)
 
Ventana.mainloop()


El código devuelve lo siguiente:

No hay comentarios.:

Publicar un comentario