Sunteți pe pagina 1din 9

#!

/usr/bin/python # -*- coding: utf-8 -*-

###Modulo que define los equipos de almacenamiento

from math import log, exp, pi

from lib import unidades from lib.corriente import Corriente from parents import equipment

class Tank(equipment): """Clase que define los tanques de almacenamiento""" title="Deposito de almacenamiento" icon="" help=""

def __call__(self, **kwargs):

self.D=1. self.L=3. self.volumen(3) self.Coste(1.7, 0)

def volumen(self, cabeza):

""" cabeza: tipo de cabeza del recipiente 0 - Ellipsoidal 1 - Hemispherical 2 - Bumped 3 - Flat """ V_carcasa=pi/4*self.D**2*self.L

if cabeza==0: V_cabeza=4./3*pi/8*self.D**3 elif cabeza==1: V_cabeza=4./3*pi/8/2*self.D**3 elif cabeza==2: V_cabeza=0.215483/2*self.D**3 else: V_cabeza=0.

self.Volumen=unidades.Volume(V_carcasa+V_cabeza)

def coste(self, *args, **kwargs): """ material: 0 - Carbon steel 1 - Stainless steel 316 2 - Stainless steel 304

3 - Stainless steel 347 4 - Nickel 5 - Monel 6 - Inconel 7 - Zirconium 8 - Titanium 9 - Brick and rubber or brick and polyester-lined steel 10 - Rubber or lead-lined steel 11 - Polyester, fiberglass-reinforced 12 - Aluminum 13 - Copper 14 - Concrete """ self._indicesCoste(*args)

self.material=kwargs.get("material", 0)

V=self.Volumen.galUS

Fm=[1., 2.7, 2.4, 3.0, 3.5, 3.3, 3.8, 11.0, 11.0, 2.75, 1.9, 0.32, 2.7, 2.3, 0.55][self.material]

if V<=21000: C=Fm*exp(2.631+1.3673*log(V)-0.06309*log(V)**2) else: C=Fm*exp(11.662+0.6104*log(V)-0.04536*log(V)**2)

self.C_adq=unidades.Currency(C*self.Current_index/self.Base_index)

self.C_inst=unidades.Currency(self.C_adq*self.f_install)

class Flash(equipment): """Clase que modela los tambores flash.""" title="Tambor Flash" icon=":/equip/equip/flash.png" help=""

def __call__(self, entrada): self.D=unidades.Length(0) self.L=unidades.Length(0) self.reborde=0 self.espesor=0 self.espesor_cabeza=0

self.entrada=entrada self.SalidaVapor= Corriente(entrada.T, entrada.P.atm, entrada.caudalmasicoGas.kgh, entrada.Gas, flash=False, x=1) self.SalidaLiquido= Corriente(entrada.T, entrada.P.atm, entrada.caudalmasicoLiquido.kgh, entrada.Liquido, flash=False, x=0)

def volumen(self): V_carcasa=pi/4*self.D**2*self.L

if self.cabeza==0: V_cabeza=4./3*pi/8*self.D**3

elif self.cabeza==1: V_cabeza=4./3*pi/8/2*self.D**3 elif self.cabeza==2: V_cabeza=0.215483/2*self.D**3 else: V_cabeza=0.

self.Volumen=Volume(V_carcasa+V_cabeza)

def peso(self): W_carcasa=pi/4*(self.diametro_externo**2-self.D**2)*self.L*self.densidad

if self.cabeza==3: W_cabeza=pi/4*self.D**2*self.espesor_cabeza*self.densidad else: ratio=self.diametro_externo/self.espesor_cabeza if self.cabeza==0: if ratio>20: hb=1.24 else: hb=1.3 elif self.cabeza==2: if ratio>50: hb=1.09 elif ratio>30: hb=1.11

else: hb=1.15 else: if ratio>30: hb=1.6 elif ratio>18: hb=1.65 else: hb=1.70 Do=hb*self.diametro_externo+2*self.reborde W_cabeza=pi/4*Do**2*self.espesor_cabeza*self.densidad

self.Peso=Mass(W_carcasa+2*W_cabeza)

def Coste(self, *args, **kwargs): """ tipo: 0 - Horizontal 1 - Vertical material: 0 - Carbon steel 1 - Stainless steel 304 2 - Stainless steel 316 3 - Carpenter 20CB-3 4 - Nickel 200 5 - Monel 400

6 - Inconel 600 7 - Incoloy 825 8 - Titanium densidad: densidad del material diametro: diametro recipiente longitud espesor: espesor de la cubierta cabeza: tipo de cabeza del recipiente 0 - Ellipsoidal 1 - Hemispherical 2 - Bumped 3 - Flat espesor_cabeza: espesor de la cubierta en la cabeza reborde: longitud reborde """ self._indicesCoste(*args)

self.tipo=kwargs.get("tipo", 0) self.material=kwargs.get("material", 0) densidad=kwargs.get("subtipo", 0) if densidad: self.densidad=unidades.Density(densidad) else: self.densidad=unidades.Density(501, "lbft3") #La densidad del acero inoxidable 304 self.D=unidades.Length(kwargs.get("diametro", 0)) self.L=unidades.Length(kwargs.get("subtipo", 0)) self.espesor=unidades.Length(kwargs.get("espesor", 0))

self.cabeza=kwargs.get("cabeza", 0) espesor_cabeza=kwargs.get("espesor_cabeza", 0) if espesor_cabeza: self.espesor_cabeza=unidades.Length(espesor_cabeza) else: self.espesor_cabeza=unidades.Length(espesor) self.reborde=unidades.Length(kwargs.get("reborde", 0))

self.diametro_externo=Length(diametro+2*espesor)

self.volumen() self.peso()

V=self.Volumen.galUS D=self.D.ft L=self.L.ft W=self.Peso.lb

Fm=[1., 1.7, 2.1, 3.2, 5.4, 3.6, 3.9, 3.7, 7.7][self.material]

if self.tipo==0: Cb=exp(8.571-0.233*log(W)+0.04333*log(W)**2) Ca=1370*D**0.2029 else: Cb=exp(9.1-0.2889*log(W)+0.04576*log(W)**2) Ca=246*D**0.7396*L**0.7068

C=Fm*Cb+Ca

self.C_adq=unidades.Currency(C*self.Current_index/self.Base_index) self.C_inst=unidades.Currency(self.C_adq*self.f_install)

if __name__ == '__main__':

# tanque=Tank() # print tanque.C_inst # print tanque.Volumen

flash=Vessel() flash.Coste(1.7, 0, 0, 3, 1, 2, 0.05, 0.05, 0) print flash.C_adq print flash.Volumen print flash.Peso

S-ar putea să vă placă și