Mostrando entradas con la etiqueta Quimica Computacional. Mostrar todas las entradas
Mostrando entradas con la etiqueta Quimica Computacional. Mostrar todas las entradas

lunes, 29 de julio de 2013

valtitu.py 2.0 (Programa de valoración y titulacion de Soluciones )

Hace unos días atrás publicamos la  primera versión de programa de valoración de soluciones continuación les dejo la segunda versión, en esta hacemos uso de la librería tkinter.
 el código fuente es el siguiente:

##Programa de valoracion de Soluciones vercion 2
#### usando la ecuancion C1V1 = C2V2 
##### es necesario tener python 3.3 y la libreria tkinter
###### hecho por israel Nuñez 
####### Universidad Autonoma Metropolitana 
### isrant.blogspot.com
##### mexico D.F   


from tkinter import*
from tkinter import messagebox
import math

def variables(e):
    global cas
    var = lb.curselection()
    var1 = tuple(('0',))
    var2 = tuple(('1',))
    var3 = tuple (('2'))
    var4 = tuple (('3'))
    if var == var1:
        ##calculando C1
        cas = 1
        texto=Label(ventana,text='V2')
        texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
        texto = Label(ventana, text = "V1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto = Label(ventana, text = "C2")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "C1")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    elif var == var2:
        ##calculando C2
        cas = 2
        texto=Label(ventana,text='V2')
        texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
        texto = Label(ventana, text = "V1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto = Label(ventana, text = "C1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "C2")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    elif var == var3:
        cas = 3
        ##calculando V1
        texto=Label(ventana,text='V2')
        texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
        texto = Label(ventana, text = "C1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto = Label(ventana, text = "C2")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "V1")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    elif var ==var4:
        cas = 4
        ##calculando V2
        texto=Label(ventana,text='V1')
        texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
        texto = Label(ventana, text = "C1")
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
        texto=Label(ventana,text='C2')
        texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
        textores2 = Label(ventana, text = "v2")
        textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
    else:
        messagebox.showerror('Error','Fuera de Rango')

##operacion del boton calcular
def calcular():
    global cas
    variable1 = vari1.get()
    variable2 = vari2.get()
    variable3 = vari3.get()
    if cas == 1:
        v2=float(variable1)
        v1= float(variable2)
        c2= float(variable3)
        ##operacion
        resultado  = (c2*v2)/v1
        rest.set(resultado)
    elif cas == 2:
        v2=float(variable1)
        v1 = float(variable2)
        c1 = float(variable3)
        resultado  = (c1*v1)/v2
        rest.set(resultado)
    elif cas == 3:
        v2=float(variable1)
        c1 = float(variable2)
        c2 = float(variable3)
        resultado  =(c2*v2)/c1
        rest.set(resultado)

    elif cas == 4:
        v1 = float(variable1)
        c1 = float(variable2)
        c2 = float(variable3)
        resultado = (c1 *v1)/c2
        rest.set(resultado)
        
        
    else:
        messagebox.showerror('Error','Selecciona una Variable')

def acerca():
    messagebox.showinfo('acerca de','Desarrollado por Israel Nuñez')
    
        
ventana = Frame (height = 300, width = 600)
ventana.pack(padx =10, pady = 10)

variable1 = DoubleVar()
variable2 = DoubleVar()
variable3 = DoubleVar()

cas = 0
rest = StringVar()
#probando listbox
textolb = Label(ventana, text = "Seleccione Variable")
textolb.place(bordermode = OUTSIDE, height = 20, width = 150, x= 100, y= 20)
lb = Listbox(ventana)
lb.insert(1,"C1")
lb.insert(2,"C2")
lb.insert(3,"V1")
lb.insert(3,"V2")
lb.bind('<>',variables)
lb.place(bordermode = OUTSIDE, height = 100, width = 150, x = 100, y= 40)
#boton calcular
boton = Button(ventana, text = "calcular",command= calcular )
boton.place(bordermode = OUTSIDE, height = 30, width =80, x=350, y = 200)
#boton acercade
boton2 = Button(ventana, text ="acerca de...", command = acerca)
boton2.place (bordermode = OUTSIDE , height = 30, width = 80, x= 450, y= 200)
#texto de presentacion
texto=Label(ventana,text='Variable 1')
texto.place(bordermode = OUTSIDE, height=20, width =100, x = 300, y = 60)
texto = Label(ventana, text = "Variable 2")
texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 100)
texto = Label(ventana, text = "Variable 3")
texto.place(bordermode = OUTSIDE, height = 20, width = 100, x= 300, y= 140)
#Entrada de Datos
vari1 = Entry(ventana, textvariable =variable1)
vari1.place(bordermode= OUTSIDE, height= 30, width = 100, x= 400, y= 100)
vari2 = Entry(ventana,textvariable=variable2)
vari2.place(bordermode= OUTSIDE, height= 30, width = 100, x= 400, y= 140)
vari3 = Entry(ventana, textvariable = variable3)
vari3.place(bordermode = OUTSIDE, height = 30, width = 100, x= 400, y= 60)
#para mostrar resultados
textores = Label(ventana, text = "Resultado")
textores.place(bordermode = OUTSIDE, height = 20, width = 150, x= 100, y= 200)
textores2 = Label(ventana, text = "Variable")
textores2.place(bordermode = OUTSIDE, height = 20, width = 150, x = 50, y = 250)
res = Label(ventana,textvariable = rest, fg = "blue",bg = "yellow")
res.place(bordermode = OUTSIDE, height = 20, width = 200, x = 200, y = 250)

martes, 29 de enero de 2013

Cálculo de flash isotérmico mediante la ecuación de estado de Soave

Multicomponentes en flash cálculos utilizando una ecuación de estado y reglas de mezcla clásica.


Sólo tiene que ejecutar main01.m, es fácil cambiar la composición y las condiciones de funcionamiento. Si desea agregar nuevos componentes sólo hay que añadir los críticos y definir propiedades del factor acéntrico. También es posible utilizar parámetros de interacción binarios differentes con ZE

D.E.S.C.A.R.G.A.R

Una clase de Antoine orientados a objetos cálculos de equilibrio vapor-líquido


Antoine para facilitar el cálculo de temperaturas de los componentes puros de saturación y presiones. Un objeto que corresponde a un componente puro se crea una instancia mediante la especificación de los parámetros de Antoine. Los métodos incluyen el cálculo de la presión de saturación, la temperatura de saturación, y el trazado.

Los datos de ejemplo se incluye para un pequeño número de compuestos. Un método de búsqueda se incluye para facilitar la búsqueda Webbook NIST Química para los parámetros de Antoine de otros compuestos.

Un extenso tutorial demuestra el uso de la ecuación de Antoine para los cálculos de equilibrio líquido-vapor. Los ejemplos incluyen el punto de burbuja y cálculos de punto de rocío, la construcción de Txy binario y diagramas XY, y la solución de los problemas de flash isotérmicas.

Este fue desarrollado para su uso en cursos de introducción en Ingeniería Química




miércoles, 16 de mayo de 2012

Diagrama de Moody en Matlab

Diagrama de Moody Realizado en Matlab, como parte de un proyecto final, en el cual, se hace notar la capacidad que tiene Matlab empleado en Ingeniería Química. Casi no publico nada de este tema, pero su servidor el cual escribe este blog, tambien cursa además de ing. en software, estudio también Ingeniería Química Espero y sea de su agrado.

Descargar la Aplicacion

sábado, 23 de julio de 2011

LIMITACIONES COMPUTACIONALES

Las variables que se almacenan en una computadora pueden asumir un amplio rango de valores. En la mayoría de las computadoras, el rango se extiende desde aproximadamente 10^-308 hasta 10^308, que debe ser suficiente para acomodar la mayoría de los cálculos. MATLAB incluye funciones para identificar los números reales más grandes y los enteros más grandes que el programa puede procesar.

Funciones Matematicas Basicas en Matlab