Está en la página 1de 13

DARCY – WEISBACH

function on.escapeKey()

if Pantalla==6 then Pantalla=5

elseif Pantalla==5 then Pantalla=4

elseif Pantalla==4 then Pantalla=3

elseif Pantalla==3 then Pantalla=2

elseif Pantalla==2 then Pantalla=1

elseif Pantalla==1 then Pantalla=0

elseif Pantalla=="Historial" then Pantalla=Ptemp

elseif Pantalla=="Creditos" then Pantalla=0

end

platform.window:invalidate()

end

function on.charIn(T)

if Pantalla==1 and (tonumber(T)~=nil or T==".")then Dat_In[px]=Dat_In[px]..T

elseif Pantalla==5 and (tonumber(T)~=nil or T==".")then Dat2[px2]=Dat2[px2]..T

end

platform.window:invalidate()

end

function on.backspaceKey()

if Pantalla==1 then

Dat_In[px] = string.usub(Dat_In[px],0,-2)

elseif Pantalla==5 then

Dat2[px2] = string.usub(Dat2[px2],0,-2)

end
platform.window:invalidate()

end

function on.arrowUp()

if Pantalla=="Historial" and ax>1 then ax=ax-1

elseif Pantalla==1 and px>1 then px=px-1

elseif Pantalla==5 and px2>1 then px2=px2-1

end

platform.window:invalidate()

end

function on.arrowDown()

if Pantalla=="Historial" and ax<Iteracion then ax=ax+1

elseif Pantalla==1 and px<6 then px=px+1

elseif Pantalla==5 and px2<2 then px2=px2+1

end

platform.window:invalidate()

end

function on.enterKey()

if Pantalla==0 then Pantalla=1

elseif Pantalla==1 then

Datos_Entrada()

Calcular()

elseif Pantalla==2 then

Diseno_Tuberia()

elseif Pantalla==3 then

Pantalla=4

elseif Pantalla==4 then


Pantalla=5

elseif Pantalla==5 then

Diseno_RDE()

end

platform.window:invalidate()

end

function on.paint(gc)

Mostrar_Pantalla(gc)

end

Pantalla=0

function Mostrar_Pantalla(gc)

if Pantalla==0 then Ventana_0(gc)

elseif Pantalla==1 then Ventana_1(gc)

elseif Pantalla==2 then Ventana_2(gc)

elseif Pantalla==3 then Ventana_3(gc)

elseif Pantalla==4 then Ventana_4(gc)

elseif Pantalla==5 then Ventana_5(gc)

elseif Pantalla==6 then Ventana_6(gc)

elseif Pantalla=="Historial" then Ventana_Iteraciones(gc)

elseif Pantalla=="Creditos" then Ventana_Creditos(gc)

end

end

function Ventana_0(gc)

gc:setFont("sansserif","bi",20)

gc:setColorRGB(0,0,200)

gc:drawString("HIDRAULICA",60,45,"middle")
gc:setFont("sansserif","r",14)

gc:setColorRGB(0,0,0)

gc:drawString("Darcy - Weisbach",75,80,"middle")

gc:setFont("sansserif","r",12)

gc:drawString("Presione Enter para Continuar",51,150,"middle")

end

Dat_In={}

Dat_In[1],Dat_In[2],Dat_In[3],Dat_In[4],Dat_In[5]="","","","",""

Dat_In[6]=""

px=1

function Ventana_1(gc)

local a,b=60,px*20+39

gc:setColorRGB(200,0,0)

gc:fillRect(160,b,15,5)

gc:fillRect(270,b,15,5)

gc:setColorRGB(0,0,0)

gc:drawString("Cota Inicial (m)",30,60,"middle")

gc:drawString("Cota Final (m)",30,80,"middle")

gc:drawString("Longitud (m)",30,100,"middle")

gc:drawString("Caudal (m^3/s)",30,120,"middle")

gc:drawString("Temperatura (ºC)",30,140,"middle")

gc:drawString("Rugosidad",30,160,"middle")

for i=1,6 do

gc:drawString(Dat_In[i],200,a,"middle")

a=a+20

end

gc:setFont("sansserif","r",14)

gc:setColorRGB(220,0,0)
gc:drawString("Ingresar Datos",88,25,"middle")

end

function Ventana_2(gc)

gc:drawString("Diametro asumido (m) = "..D_ai,30,20,"middle")

gc:drawString("Visc. Cinemática(x10^-6) = "..Mvisc,30,40,"middle")

gc:drawString("Iteraciones "..Iteracion,30,60,"middle")

gc:drawString("Re = "..Re,30,90,"middle")

gc:drawString("V = "..V.." m/s",30,110,"middle")

gc:drawString("e/D = "..kd,30,130,"middle")

gc:drawString("f = "..f,30,150,"middle")

gc:drawString("D = "..Db.." m = "..D_Pulg.." in",30,170,"middle")

end

function Ventana_3(gc)

--gc:drawString("Diseño económico de tuberias",(318-198)/2,20,"middle")

gc:drawString("D1 = "..DS_Pulg.." in = "..DS.." m",30,50,"middle")

gc:drawString("D2 = "..DI_Pulg.." in = "..DI.." m",30,70,"middle")

gc:drawString("f1 = "..fa,30,90,"middle")

gc:drawString("f2 = "..fb,30,110,"middle")

gc:drawString("V1 = "..V1.." m/s",30,130,"middle")

gc:drawString("V2 = "..V2.." m/s",30,150,"middle")

gc:drawString("L1 = "..L1.." m",30,170,"middle")

gc:drawString("L2 = "..L2.." m",30,190,"middle")

gc:setFont("sansserif","r",14)

gc:setColorRGB(220,0,0)

gc:drawString("Diseño económico de tuberias",10,20,"middle")

end
function Ventana_4(gc)

gc:drawString("L1 = "..L1R.." m",30,70,"middle")

gc:drawString("N tubos 6m-"..DS_Pulg.."in = "..Na,30,90,"middle")

gc:drawString("L2 = "..L2R.." m",30,130,"middle")

gc:drawString("N tubos 6m-"..DI_Pulg.."in = "..Nb.." + "..suma.."m",30,150,"middle")

gc:setFont("sansserif","r",14)

gc:setColorRGB(220,0,0)

gc:drawString("Correciones de Longitud",40,20,"middle")

end

Dat2={}

Dat2[1],Dat2[2]="",""

px2=1

function Ventana_5(gc)

local b=px2*30+50

gc:setColorRGB(200,0,0)

gc:fillRect(150,b,15,5)

gc:fillRect(240,b,15,5)

gc:setColorRGB(0,0,0)

gc:drawString("Abs a analizar",30,80,"middle")

gc:drawString("Cota Clave",30,110,"middle")

gc:drawString(Dat2[1],180,80,"middle")

gc:drawString(Dat2[2],180,110,"middle")

gc:setFont("sansserif","r",14)

gc:setColorRGB(220,0,0)

gc:drawString("Absisas",120,20,"middle")
end

function Ventana_6(gc)

if Abs<=L1R then

gc:drawString("Hf1 = "..hf1abs,30,70,"middle")

else

gc:drawString("Hf1 = "..hf1abs,30,70,"middle")

gc:drawString("Hf2 = "..hf2abs,30,90,"middle")

end

gc:drawString("HF = "..habs,30,120,"middle")

gc:drawString("RDE = "..Rdes,30,150,"middle")

gc:setFont("sansserif","r",14)

gc:setColorRGB(220,0,0)

gc:drawString("Relación Diámetro Espesor",30,20,"middle")

end

function Ventana_Iteraciones(gc)

gc:drawString("Iteracion "..ax,30,30,"middle")

gc:drawString("Di = "..H_Da[ax].." m",30,70,"middle")

gc:drawString("Re = "..H_Re[ax],30,90,"middle")

gc:drawString("V = "..H_V[ax].." m/s",30,110,"middle")

gc:drawString("f = e/D = "..H_kd[ax],30,130,"middle")

gc:drawString("f = "..H_f[ax],30,150,"middle")

gc:drawString("Df = "..H_Db[ax].." m",30,170,"middle")

end

function Ventana_Creditos(gc)

gc:drawString("Desarrollado por:",30,30,"middle")
gc:drawString("Kelly Dayanna Moreno Maldonado",30,60,"middle")

gc:drawString("-",30,80,"middle")

gc:drawString("-",30,100,"middle")

gc:drawString("-",30,120,"middle")

end

function Datos_Entrada()

Hi,Hf,L=tonumber(Dat_In[1]),tonumber(Dat_In[2]),tonumber(Dat_In[3])

Q,T,E=tonumber(Dat_In[4]),tonumber(Dat_In[5]),tonumber(Dat_In[6])

if Hi==nil or Hf==nil or L==nil or Q==nil or T==nil then Continuar=false end

Calcular_Viscosidad()

end

function Calcular_Viscosidad()

viscosidad=var.recall("viscosidad")

local T_aux=string.format("%.0f",T)

if T_aux-T==0 then Mvisc=viscosidad[T-4]

else

local T_sup,T_inf=math.ceil(T),math.floor(T)

local Visc_s,Visc_i=viscosidad[T_sup-4],viscosidad[T_inf-4]

Mvisc=((T-T_inf)/(T_sup-T_inf))*(Visc_s-Visc_i)+Visc_i

end

M=Mvisc/1000000

end

H_Da,H_Db,H_kd,H_V,H_Re,H_f={},{},{},{},{},{}

function Calcular()

D_ai=0.05

Hft=Hi-Hf
Da=D_ai

for i=1,50 do

H_Da[i]=Da

kd=E/(Da*1000)

kd=string.format("%.6f",kd)

H_kd[i]=kd

V=Q/((3.1416/4)*Da^2)

V=string.format("%.3f",V)

H_V[i]=V

Re=V*Da/M

Re=tonumber(string.format("%.4f",Re))

H_Re[i]=Re

if Re<=2000 then

f=64/Re

f=string.format("%.5f",f)

--elseif Re>=4000 then

else

f=math.evalStr("solve(f=1/(-2*log(("..kd.."/3.7)+(2.51/("..Re.."*(f^(1/2))))))^2,f)")--Ecuacion
de Colebrook

local NResp=#f

f=tonumber(f:sub(3,NResp))

f=string.format("%.5f",f)

end

--f=0.25/(math.log((kd/3.7)+(5.74/(Re^0.9))))^2 --Ecuacion de Barr

H_f[i]=f

Db=(8*f*L*(Q^2)/((3.1416^2)*9.81*Hft))^(1/5)

Db=string.format("%.4f",Db)

H_Db[i]=Db

if Da==Db then break


else Da=Db end

Iteracion=i

print("i",i,"kd",kd,"V",V,"Re",Re,"f",f,"Diam",Da,Db)

end

D_Pulg=Db/0.0254

D_Pulg=string.format("%.2f",D_Pulg)

Pantalla=2

ax=Iteracion

end

function Diseno_Tuberia()

DS_Pulg=math.ceil(D_Pulg)

DI_Pulg=math.floor(D_Pulg)

if DI_Pulg>=4 and DI_Pulg<=30 then

if DI_Pulg%2==0 then DI_Pulg=DI_Pulg

else DI_Pulg=DI_Pulg-1

end

end

if DS_Pulg>=4 and DS_Pulg<=30 then

if DS_Pulg%2==0 then DS_Pulg=DS_Pulg

else DS_Pulg=DS_Pulg+1

end

end

DI,DS=DI_Pulg*0.0254,DS_Pulg*0.0254

kda,kdb=E/(DS*1000)*1000000,E/(DI*1000)*1000000

print("kda",kda)

V1,V2=Q/((3.1415/4)*(DS^2)),Q/((3.1415/4)*(DI^2))
V1=string.format("%.3f",V1)

V2=string.format("%.3f",V2)

Re1=V1*DS/M

Re2=V2*DI/M

print("kda",kda,"kdb",Re1)

fa=math.evalStr("solve(f=1/(-2*log(("..kda.."/1000000/3.7)+(2.51/("..Re1.."*(f^(1/2))))))^2,f)")--
Ecuacion de Colebrook

NResp=#fa

fa=tonumber(fa:sub(3,NResp))

fa=string.format("%.5f",fa)

fb=math.evalStr("solve(f=1/(-2*log(("..kdb.."/1000000/3.7)+(2.51/("..Re2.."*(f^(1/2))))))^2,f)")--
Ecuacion de Colebrook

NResp=#fb

fb=tonumber(fb:sub(3,NResp))

fb=string.format("%.5f",fb)

L2=math.evalStr("Solve("..Hft.."=((("..fa*V1^(2)..")/("..DS*2*9.81 ..")))*("..L.."-
L2)+((("..fb*V2^(2)..")/("..DI*2*9.81 ..")))*L2,L2)")

NResp=#L2

L2=tonumber(L2:sub(4,NResp))

L2=string.format("%.4f",L2)

L1=L-L2

Na=math.ceil(L1/6)

L1R=Na*6

L2R=L-L1R

Nb=math.floor(L2R/6)
suma=L2R-Nb*6

Pantalla=3

end

function Diseno_RDE()

Abs,Cota=tonumber(Dat2[1]),tonumber(Dat2[2])

if Abs==nil or Cota==nil then Pantalla,Dat2[1],Dat2[2]=5,"",""

else

if Abs<=L1R then

hf1abs=((8*Q^(2)*fa*Abs)/(3.1416^(2)*9.81*DS^(5)))

hf1abs=string.format("%.3f",hf1abs)

habs=Hi-Cota-hf1abs

else

hf1abs=((8*Q^(2)*fa*L1R)/(3.1416^(2)*9.81*DS^(5)))

hf2abs=((8*Q^(2)*fa*(Abs-L1R))/(3.1416^(2)*9.81*DI^(5)))

hf1abs=string.format("%.3f",hf1abs)

hf2abs=string.format("%.3f",hf2abs)

habs=Hi-Cota-hf1abs-hf2abs

end

habs=tonumber(string.format("%.3f",habs))

end

P_trabajo=var.recall("Presion_trabajo")

RDE=var.recall("rde")

Rdes=">9"

for i=1,8 do

if habs<=P_trabajo[i] then

Rdes=RDE[i]

end

end
Pantalla=6

end

menu={

{"Historial",

{"Iteraciones",

function() Ptemp,Pantalla=Pantalla,"Historial"

platform.window:invalidate()

end

},

},

{"Información",

{"Creditos",

function() Ptemp,Pantalla=Pantalla,"Creditos"

platform.window:invalidate()

end

},

},

}toolpalette.register(menu)

También podría gustarte