Python Code For Simple Tank
Python Code For Simple Tank
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=""
""" 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]
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=""
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)
if self.cabeza==0: V_cabeza=4./3*pi/8*self.D**3
self.Volumen=Volume(V_carcasa+V_cabeza)
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.diametro_externo=Length(diametro+2*espesor)
self.volumen() self.peso()
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__':
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