Está en la página 1de 49

JULIA: PROGRAMACIÓN DE

CALCULOS Y DISEÑO DE TU-


BERIAS
Informe

Descripción breve
Se presentan los algoritmos necesarios para la programación y simulación de tube-
rías simples y en serie así como también las bases teóricas para estos cálculos.

Ana María Prasca


Universidad del Norte
RESUMEN
Siguiendo los diagramas de flujo mostrado en el libro “Hidráulica de tuberías” de Saldarriaga y em-
pleando el lenguaje de programación Julia, se programan códigos que nos permiten hacer cálculos
como el factor de fricción de las tuberías y el diseño de estas. Además, se muestran los resultados de
algunos de estos códigos, la teoría detrás de estos cálculos y la importancia que tiene el ejercicio de
la programación en la ingeniería Civil y en la Hidráulica.
1 INTRODUCCIÓN
La programación en hidráulica permite facilitar y automatizar procesos desde los simples a los com-
plejos como el cálculo de factor de fricción de una tubería, hasta diseño de tuberías en serie. Esta
automatización nos permite como ingenieros civiles, acortar tiempos y optimizar nuestras obras ci-
viles reduciendo tiempos de entrega y puesta en servicio de estas. La programación en la ingeniería
civil está muy extendida hacia todos los campos y siendo esta de relativo fácil acceso para todos.
Además, hoy es base de uso para muchas aplicaciones y necesaria para el uso de software de simula-
ciones y diseño de sistemas hidráulicos. El siguiente informe se presentan los métodos utilizados
para calcular y diseñar parámetros dentro de sistema de tuberías en serie y simples con ayuda del
lenguaje de programación Julia y el entorno de programación Atom. Así como también las bases teó-
ricas que sustentan estos procedimientos.

2 OBJETIVOS

2.1 OBJETIVOS GENERALES


• Hacer uso de las herramientas disponibles para optimizar procesos de ingeniería.
• Emplear el lenguaje de programación Julia para programar cálculos de manera eficiente.
• Reconocer la importancia de la programación en la Ingeniería Civil.

3 ANTECEDENTES

3.1 Perdidas de cabeza hidráulica debida a la fricción.


En los conductos cerrados, el único tipo de energía que puede perderse debido al movimiento
del fluido es la energía de presión ya que la energía cinética se mantiene constante si el área
transversal de la tubería es constante. Existen dos tipos de perdidas: las que son debidas a
accesorios (km) que podrían considerarse perdidas locales y las que se deben a la fricción (hf)
las cuales son consideradas perdidas longitudinales. Estas pérdidas se dan por unidad de
peso del fluido, es decir, unidades de longitud (m, si se trabaja en sistema internacional). La
ecuación para calcular las perdidas longitudinales es:
𝐿 𝑣2
ℎ𝑓 = 𝑓 × (1)
𝐷 2𝑔

hf,, perdidas por fricción

f, factor de fricción

L, longitud de la tubería
D, diámetro

V, velocidad

G, gravedad

En la ecuación 1 aparece un elemento f el cual hace referencia al factor de fricción para efectos
de precisión calcularemos este factor con la ecuación de Colebrook White y el método de ite-
ración de Newton.

La ecuación para calcularlo es:

1 𝑘𝑠 2.51
= −2 𝑙𝑜𝑔10 ( + ) (2)
√𝑓 3.7𝑑 𝑅𝑒√𝑓

𝑣𝑑
𝑅𝑒 = (3)
𝑣

3.2. Comprobación de tubería simple.


Para la comprobación de las tuberías simples, se tiene una tubería real con longitud, diáme-
tro, y material conocido (lo que implica que conocemos su rugosidad absoluta. También tene-
mos datos como su energía, ya sea su cabeza gravitacional o la bomba utilizada y adicional a
esto tenemos las características del fluido: Densidad y viscosidad. En este tipo de problemas
se debe hallar el Caudal que pasa a través de la tubería, con base en todas las características
antes mencionadas. Este es un problema típico para redes de distribución de agua potable y
distritos de riego. Las ecuaciones necesarias son:

𝑣22
ℎ1 + 𝑧1 = + 𝑧2 + ℎ𝑓 + ∑ ℎ𝑚 (4)
2𝑔

𝑣22
ℎ𝑓 = 𝐻 − 𝑍2 − ∑ 𝑘𝑚 (5)
2𝑔

−2√2𝑔𝑑ℎ𝑓 𝑘𝑠 2.52√𝑙‫ט‬
𝑉= 𝑙𝑜𝑔10 ( + ) (6)
√𝑙 3.7𝑑 𝑑 √2𝑔𝑑ℎ𝑓
Imagen 1. Diagrama de flujo para la comprobación de tuberías simple.

3.3. Diseño de tubería simple.


Para el cálculo y diseño de las tuberías simples debemos definir una cabeza hidráulica total
disponible y una longitud de tubería las cuales son requerimientos del problema asignado o
del problema que queremos solucionar. Luego de esto se define el material de la tubería. se
debe fijar un caudal de diseño el cual tiene que ser capaz cumplir con las necesidades y re-
querimientos del destinario final del sistema hidráulico. Del código de diseño tubería simple
es el diámetro que garantiza la entrega del caudal de diseño.
Imagen 2. Diagrama de flujo para el diseño de tuberías simples.

Nota 2. con el objetivo de definir un marco de error para el código se define un caudal de
diseño un poco mayor al necesitado.

3.4. Diseño con altas pérdidas en tubería simple.


El diseño con altas pérdidas aparece cuando las pérdidas menores en la tubería superan la
cabeza total disponible. ese caso se debe determinar una velocidad de pérdida la cual marca
el límite en el que las pérdidas menores superarán la cabeza hidráulica total. Esta metodolo-
gía fue desarrollada por Saldarriaga y Ferrer (1989) y modificado por Camacho (1990), Hacías
de pérdidas es en esencia la velocidad que igualaría la sumatoria de las pérdidas menores y
la cabeza disponible.
∑ ℎ𝑚 = 𝐻 (7)

2𝑔𝐻
𝑉𝑝 = √∑ (8)
𝑘𝑚

2𝑔(𝐻−ℎ𝑓)
𝑉𝑝 = √ ∑ 𝑘𝑚
(9)

Imagen 3. Algoritmo para el diseño de tuberías simple, con verificación de pérdidas menores.
Imagen 4. Verificación de perdidas menores.

3.5. Potencia en tubería simple.


Problema de potencia en teoría simple se conocen tanto la longitud como el diámetro, la ru-
gosidad absoluta, los coeficientes de pérdidas menores de los accesorios y el caudal deman-
dado y a esto el caudal demandado es fijo. Debe terminar la potencia necesaria ya sea de la
bomba hoy diferencia de nivel para mover el fluido a través de la tubería y llevarlo a su
destino. Con respecto a la bomba se conoce su eficiencia.
1
𝑃𝑜𝑡 = 𝜌𝑄𝑔𝐻 (10)
𝑛

Imagen 5. Potencia en tubería simple.

3.6. Bombas.
Este código se define una curva para los sistemas. Esta curva está en función del caudal y de
la cabeza total disponible del sistema, es decir, lo que se requiere. Por otro lado, se definen
curvas de diferentes bombas basadas en las ecuaciones entregadas por los fabricantes y la
lista de caudales establecida .El punto de operación de la bomba será el punto en el que se
intercepten la curva del sistema y la curva de alguna de las bombas. Es importante tener en
cuenta que a este punto debe corresponderle un caudal mayor al caudal de diseño. Para así
garantizar el correcto funcionamiento del sistema.
Imagen 6. Elección de bombas.

3.7. Comprobación de tuberías en serie.


La forma final que se comprueba una red de tuberías en serie es similar a la forma que se
comprueba una tubería simple. Para este caso debemos conocer las n tuberías en serie, los n
diámetros, n longitud, rugosidad es absolutas y demás características del fluido. También se
debe conocer la potencia disponible ya sea por bombas, cabeza topográfica o una combinación
de éstas, Los caudales demandados. Al final del cálculo debemos tener el valor de los caudales
que pasan a través de cada una de las tuberías en serie. Para las n tuberías se plantea una
ecuación de velocidad igual la ecuación 6 . Se tendrán dos incógnitas: n velocidades y n pér-
didas por fricción, las cuales se hallan Armando un sistema de ecuaciones en el cual se igua-
lan los caudales a los caudales laterales y luego se define una H total qué es igual a la suma-
toria de las pérdidas longitudinales y la sumatoria de las pérdidas locales.
Imagen 7. Diagrama de flujo para la comprobación de tuberías en serie.
Imagen 8. Apartado para calcular las perdidas por fricción en los diámetros establecidos.

3.8. Diseño de tuberías en serie.


El diseño tuberías en serie, contempla que las de variables como las características del fluido,
la potencia disponible y los caudales de llegada son conocidas. Una de las primeras incógnitas
que se encuentra son los diámetros necesarios para garantizar estos caudales te llegada. El
diseño debe hacerse a cada una de las tuberías y la escogencia final se hace según criterio
económico. Se emplea el criterio de Wu, el cual menciona que se utiliza como línea de gra-
diente hidráulico objetivo la línea recta que une las cabezas totales inicial y final, El efecto
sobre los costos será inferior al 2% con respecto al óptimo económico. Si se incluye la
pendiente promedio de cada una de las tuberías de la serie el criterio de Wu establece que la
cabeza que puede ser perdida por la tubería i de la serie es:

𝑙𝑖 𝑐𝑜𝑠 𝜃
ℎ0 = 𝐻𝑇 (11)
𝑙𝑖 𝑐𝑜𝑠𝜃

Donde θ es el ángulo de la pendiente promedio k con respecto a la horizontal.

Se puede llevar un diseño eficiente desde el punto de vista hidráulico coma ya que al colocar
los diámetros comerciales disponibles es probable que se necesita una válvula al final de la
serie con el objetivo de regular el caudal. Tal hecho significaría que una parte importante de
la energía disponible se gastaría como pérdidas menores en dicha válvula. La energía por
pérdida de peso cabeza que se pierde en la válvula de cada 1 de los diseños preliminares del
proceso se calcula mediante la siguiente ecuación:

ℎ𝑚𝑣 = 𝐻𝑇 − ∑ ℎ𝑓𝑖 − ∑ ℎ𝑚𝑖 (12)

hfi, Es la cabeza real pérdida por fricción en el tubo con el diámetro diseñado Y el caudal
demandado.

hmi, Es la cabeza real perdida a causa de los accesorios de la tubería con el diámetro dise-
ñado y el caudal real demandado.
Imagen 9. Diagrama de flujo para diseño de tubería en serie.
Imagen 10. Diagrama de flujo para calcular perdidas longitudinales.
Imagen 11. Verificar perdidas por válvula.

3.9. Potencia de tuberías en serie.


El cálculo de la potencia para las tuberías en serie es análogo al que se hace para las tuberías
simples. Con la diferencia que se deben conocer las características de las n tuberías . Es decir,
se deben conocer los n diámetros, n longitudes , n rugosidades absolutas y los caudales totales
de llegada y laterales para cada una de las uniones. El esquema para resolver este tipo de
problemas se muestra a continuación.
Imagen 12. Potencia en tubería en serie.
4 ESTADO DEL ARTE
En la actualidad, existen muchos programas que permiten hacer cálculos y modelaciones de sistemas
de distribución de agua. Uno de ellos es WaterCAD. Bentley WaterCAD es un software comercial de
análisis, modelación y gestión de redes a presión (sistemas de distribución o de riesgo), propiedad
de la Empresa de Software Bentley Systems, Incorporated que produce soluciones para el diseño,
construcción y operación de infraestructuras en diversos campos. WaterCAD permite la simulación
hidráulica de un modelo computacional representado en este caso por elementos tipo: Línea (tramos
de tuberías), Punto (Nodos de Consumo, Tanques, Reservorios, Hidrantes) e Híbridos (Bombas, Vál-
vulas de Control, Regulación, etc.). El software cuyo algoritmo de cálculo se basa en el método del
Gradiente Hidráulico, permite el análisis hidráulico de redes de agua (aunque puede usarse para cual-
quier fluido newtoniano) determinando las presiones en diversos puntos del sistema, así como los
caudales, velocidades, pérdidas en las líneas que conforman la red hidráulica; así como otros muchos
parámetros operativos derivados de los elementos presentes en el sistema como: Bombas, Válvulas
de Control, Tanques, etc. a partir de las características físicas del sistema y unas condiciones de de-
manda previamente establecidas. WaterCAD además permite extender sus capacidades a temas de
gestión a largo plazo de sistemas de abastecimiento incluyendo: análisis de vulnerabilidad, análisis
de protección contra incendio, estimación de costos energéticos, calibración hidráulica, optimización,
etc. Este programa adicional a las herramientas convencionales para el análisis y modelación de re-
des a presión cuenta con herramientas de productividad en los procesos de gestión de datos, cons-
trucción de modelos a partir de archivos externos, extracción de elevaciones, asignación de deman-
das a partir de técnicas de análisis espacial, preparación y gestión de escenarios, cálculos hidráulicos
complementarios, gestión operativa y preparación de reportes y planos. Asimismo, el software ofrece
diversas opciones para visualización de resultados como reportes tabulares, perfiles, gráficos de va-
riación temporal, anotaciones y codificación por color, etc. El software además de contar con una
interfaz gráfica autónoma (Windows Stand Alone), puede trabajarse de manera integrada entornos
CAD como los son AutoCAD y Bentley MicroStation. Este sofware promete:

Modelos de construcción simplificados: Se puede importar cualquier formato de datos externos


para mejorar el diseño, asignar fácilmente las demandas de agua y automatizar la extracción sobre el
terreno y la asignación de nodos.
Valoración organizada de las alternativas: evalúa y compra un número” ilimitado” de escenarios
físicos, de diseño, demanda de agua y topología de la red y operativos.

WaterCAD es un subconjunto de WaterGEMS. También puede utilizar WaterGEMS para ejecutar su


modelo en ArcGIS y para los módulos de optimización (calibración, diseño, programación de bombas,
evaluación de tuberías, integración en SCADA y simplificación de redes).
5 METODOLOGÍA
Código No. 1- Factor de fricción con la ecuación de Colebrook White.
Empleando el metodo de iteración de Newton.

Para el código No. 1


#Estimación del factor de fricción
clearconsole()
D=1.5
Ks=0.0000015
Q=9
v=0.00000117 #PVC
A=pi*(D/2)^2
V=Q/A

Re=(V*D)/v
#Ecuación de Colebrook-white
#Método de Newton
function factordefriccion(ks,D,Re)
S=0.005
error=0.00000001
fi=S

f2=(-2*log10((Ks/(3.7*D))+(2.51/(Re*(fi^(1/2))))))^-2
if (abs(f2-fi)>error)
fi=f2
f2=(-2*log10((Ks/(3.7*D))+(2.51/(Re*(fi^(1/2))))))^-2
end
return("El valor del factor de fricción es ",f2, "con la ecuación de Colebrook-white")
end

ff=factordefriccion(Ks,D,Re)
println(ff)
Nota 1: Para efectos prácticos el proceso de iteración para obtener el factor de fricción se encuentra
dentro de una función para llamarla en el desarollo de los demás algoritmos y hacer un proceso
eficiente y lo más preciso posible.

Lo primero que hacemos es definir las variables a utilizar D, ks, Q, V, A, y Re. Luego definimos una
condición semilla y un error admisible que en este caso es 1X10-8 luego despejamos de la ecuación el
f y calculamos con el favor semilla. Hacemos la verificación de que se cumple el error, si esto no es
cierto entonces calcula otro valor de f con el valor calculado anteriormente, esto se repite hasta que
la diferencia entre los dos ultimos f sea menor al error adminitido.

Código No. 2- Comprobación de tuberia simple.


clearconsole()
#Ingresamos todos los datos de nuestro problemas en unidades del sistema
internacional
D=0.293
km=11.8
H=43.5
ks=1.5e-6
densidad=998.2
Z=0
L=730
visc=1.007e-6
#Calculos preliminares

A=pi*D^2/4
rugrel=ks/D

function Comprobaciontuberiasimple(H,Z,D,L,ks,visc)
e=1e-8
g=9.81
hfi=H+Z
hfj=2*hfi
while abs(hfj-hfi)>e
global V=((-
2*((2*g*D*hfi)^0.5))/(L^0.5))*log10((ks/(3.7*D))+((2.52*visc*(L^0.5))/(D*(2*g*D*
hfi)^0.5)))
hfj=H-Z-km*((V^2)/(2*g))
if abs(hfj-hfi)>e
hfi=hfj
end
end
Q=V*A
println("El caudal que pasa a travez de la tubería es: ",Q, "m3/s")
end
Q=Comprobaciontuberiasimple(H,Z,D,L,ks,visc)

Se debe definir las variables de entrada las cual es son diámetro, pérdidas en los accesorios, cabeza
total disponible, rugosidad absoluta y las propiedades del fluido como la densidad y la viscosidad.
también deben definirse la altura y la longitud de la tubería. Luego, se calcula el área transversal de
la tubería y su rugosidad relativa. dentro de la función comprobación de tubería simple se define un
error admisible y el valor de la gravedad que será utilizado en el problema. Tamien debe definirse
un valor hf inicial el cuál es la suma de la cabeza total disponible y la altura del sistema que en este
caso es cero. Ingresamos un segundo valor hf J al cual se le asigna un valor de forma que siempre
entre en el siglo al menos una vez. Luego, se calcula la velocidad con la ecuación 6 . En el while se
uriliza el parámetro a hfi como hf y se calcula un segundo valor hf J con la ecuación 5 luego se verifica
que la diferencia entre el valor de hfi y hfJ no sea mayor que el error ansmisible . el siglo While se
repite hasta que la diferencia de sus dos valores sea menor al error y en cada iteración se calcula una
Velocidad. Posteriormente hallar caudal con la velocidad calculada en la ultima iteración y la
ecuación de continuidad.
Código No. 3- Diseño de tuberia simple.
clearconsole()

L=150
ks=0.00015

km=3.3
global H=2.2
global Skm=3.3
densidad=999.3
Qd=0.12
global Hfi=H
u=1.17E-3

v=1.17E-6
z2=0

global g=9.81
global DD=0.05
global D=0

global Q=0.00000000001
Tolerancia=0.00000001
while (Qd>=Q)
global D= D + DD

globalV=((2*(2*g*D*Hfi)^0.5)/(L)^0.5)*log10((ks/(3.7*D))+((2.51*v*(L)^0.5)/(D*(
2*g*D*Hfi)^0.5)))
global A=pi*D^2/4
global Q=A*V
end
println("El diametro que garantiza el caudal de diseño es ", D, "m")
dif=1
global hm= km*((V^2)/(2*g))
global hf=H-hm
Hfi=100
while abs(hf-Hfi)>=Tolerancia
global Hfi=hf
global V=((-
2*(2*g*D*Hfi)^0.5)/(L)^0.5)*log10((ks/(3.7*D))+((2.51*v*(L)^0.5)/(D*(2*g*D*Hfi)
^0.5)))
global hm= km*((V^2)/(2*g))
global hf=H-hm
global Q=A*V
end

println("El caudal que circula por la tubería es: ", Q, "m3/s")


Lo primero que se hace es pedir los datos del problema tale cómo la longitud de la tubería, el material
de la tubería, el caudal de diseño necesario o requerido, los coeficientes de pérdidas por accesorios,
la densidad del fluido su viscosidad y la altura. Luego se fija un D pequeño y un Delta D, en el primer
ciclo se verifica que el caudal de diseño sea menor al caudal con el diametro establecido, en caso de
que sea mayor se aumenta el D y se calcula el caudal. Una vez se haya calculado un D que garantice
el caudal de diseño, se evalúan las pérdidas longitudinales, el caudal final que se tendrá en la tubería
y se imprime tanto el valor del diámetro como el del caudal.

Código No. 4- Diseño con altas perdidas en tuberia simple.

clearconsole()
#Diseño de tubería simple
#Ingrese los valores en sistema internacional de unidades

function altasperdidas(H,Skm,V,L,D,hf,A)
DD=0.05
ep=1e-4
g=9.81
Vp=(2*g*H/Skm)
deltah=0.01
Vi=V
if Vi>Vp
hf=0.01
while Vi>Vp

V=((-
2*(2*g*D*hf)^0.5)/(L)^0.5)*log10((ks/(3.7*D))+((2.51*v*(L)^0.5)/(D*(2*g*D*hf)^
0.5)))
Q=V*A
while Q<Qd
D=D+DD
Vi=((-
2*(2*g*D*hf)^0.5)/(L)^0.5)*log10((ks/(3.7*D))+((2.51*v*(L)^0.5)/(D*(2*g*D*hf)^
0.5)))
Q=Vi*A
end
if abs(Vi-Vp)>ep
println("El díametro que garantiza la entrega del caudal es, ",D, " dado un diseño
con altas perdidas")
end
if (Vi<Vp)

hf=hf+deltahf
else
hf=hf-deltahf
end

D=5e-4
Vp=(2*g*(H-hf)/km)
end

end
Este código comparamos la velocidad que fue calculada durante el desarrollo del calculo te diseño de
tuberías simple. Se calcula una velocidad de pérdidas y si la velocidad que calculada es mayor a la de
pérdidas entonces se supone un hf muy pequeño y se calcula una nueva velocidad. Sí la velocidad
calculada es menor a la velocidad de pérdidas entonces se aumenta hf sino se define un Delta de un
hf más pequeño . Dado que la velocidad cambia se debe calcular el caudal con la ecuación de
continuidad el resultado de la velocidad y el diámetro que garantiza la entrega del fluido se retornan
cuando la velocidad que tenemos es menor a la de pérdida.

Código No. 5- Potencia en tuberia simple.


clearconsole()
#Ingrese los datos requeridos en unidades del sistema internacional
#Donde v es viscocidad cinemática, n es la eficiencia de la bomba y e es la presición
que requiere para el resultado
D=0.15
ks=0.0000015
Q=0.042
v=0.00000117
L=970
hf=27.04
Z=16
km=9.4

Densidad=1000
n=0.9

function Potencia(D,v,Q,Ks,n)
e=0.00000001
g=9.81
A=pi*(D^2)*(1/4)
V=Q/A
Re=(V*D)/v

hm=km*((V^2)/(2*g))
visc=Ks/D
#Calculamos f
#Ecuación de Colebrook-white
S=0.005
X1=S
Dif=1

#Empleamos el método de Newton Rapsom


while (Dif>=e)
gx=-2*log10((Ks/(3.7*D))+((2.51*X1)/Re))

gp=(((2.51*X1)/Re)/((Ks/(3.7*D))+((2.51*X1)/Re)))*(-2/log(10))
X2=X1-((gx-X1)/(gp-1))
Dif=abs(X2-X1)
X1=X2
end
f=1/(X1)^2
hf=f*(L/D)*((V^2)/(2*g))

H=hf+Z+hm
P=(1/n)*Densidad*Q*g*H
println("La potencia de la Bomba es " ,P," W")
end

P=Potencia(D,v,Q,ks,n)

Lo primero que se hace es calcular la velocidad con base en el caudal requerido y el área disponible.
Luego, se calcula la sumatoria de las de las pérdidas menores, se procede a calcular el Reynolds y la
rugosidad relativa. Para calcular el factor de fricción empleamos la ecuación de Colebrook White y
el método de interacción Newton raphson, una vez que tiene este factor se procede hallar las pérdidas
por fricción. Se suman la altura, las pérdidas menores y las pérdidas longitudinales para así obtener
la cabeza total. Este valor es reemplazado en la formula de potencia y se obtiene la potencia
requerida.

Código No. 6- Bombas.


clearconsole()
using Plots
#Funciones disponibles
function factordefriccion(ks,D,Re)
S=0.005
error=0.00000001

fi=S
f2=(-2*log10((Ks/(3.7*D))+(2.51/(Re*(fi^(1/2))))))^-2
if (abs(f2-fi)>error)

fi=f2
f2=(-2*log10((Ks/(3.7*D))+(2.51/(Re*(fi^(1/2))))))^-2
end
return(f2)
end
#Bombas- Tubería simple
#Unidades en el sistema internacional

L=286
ks=0.0000015
Qd=0.12
H=37
km=5.2
densidad=999.3
miu=0.00117

v=1.17e-6
g=9.81
Z=37
e=1e-8

D1=0.1
D2=0.15
D3=0.2
#Hallamos la Curva del sistema, para los 3 diametros establecidos
Q1=[]
V1=[]
Re1=[]

f1=[]
hm1=[]
hf1=[]

H1=[]

#Variales que ccuentan y controlan mis ciclos


n=50
i=1
j=0
#Definimos diferentes diametros

#Número de opciones de díametro

A1=pi*D1^2/4
A2=pi*D2^2/4
A3=pi*D3^2/4
H3=[]
#Definimos el número de caudales que haran parte de la curva

#Para D1
deltaq=0.005
Caudal1=0
while i<=n

global Caudal1=Caudal1+deltaq
push!(Q1,Caudal1)
push!(V1,Q1[i]/A1)
push!(Re1, ((V1[i]*D1)/v))
global ff1=factordefriccion(ks,D1,Re1[i])
push!(f1,ff1)
push!(hm1, km*((V1[i])^2)/(2*g))
push!(hf1,((f1[i]*L*(V1[i]^2)/(D1*2*g))))

push!(H1,hm1[i]+hf1[i]+Z)
global i=i+1
end

#Para Diametro 2
Q2=[]
V2=[]
Re2=[]
f2=[]
hm2=[]

hf2=[]
H2=[]

Caudal2=0
i=1
while i<=n
global Caudal2=Caudal2+deltaq

push!(Q2,Caudal2)
push!(V2,Q2[i]/A2)
push!(Re2, ((V2[i]*D2)/v))
global ff2=factordefriccion(ks,D2,Re2[i])

push!(f2,ff2)
push!(hm2, km*((V2[i])^2)/(2*g))
push!(hf2,((f2[i]*L*(V2[i]^2)/(D2*2*g))))
push!(H2,hm2[i]+hf2[i]+Z)
global i=i+1
end
#Para Diametro 3
Q3=[]

V3=[]
Re3=[]
f3=[]

hm3=[]
hf3=[]

Caudal3=0
i=1
while i<=n
global Caudal3=Caudal3+deltaq

push!(Q3,Caudal3)
push!(V3,Q3[i]/A3)
push!(Re3, ((V3[i]*D3)/v))
global ff3=factordefriccion(ks,D3,Re3[i])
push!(f3,ff3)
push!(hm3, km*((V3[i])^2)/(2*g))
push!(hf3,((f3[i]*L*(V3[i]^2)/(D3*2*g))))

push!(H3,hm3[i]+hf3[i]+Z)
global i=i+1
end
#Calcular la curva del Sistema

#Para Bomba 1
A1=-2345
B1=0.27
C1=87
#Para Bomba 2
A2=-4750
B2=-89.4
C2=180

#Para Bomba 3
A3=-15467
B3=-1457

C3=850
HB1=[]
HB2=[]
HB3=[]
i=1
while i<=n
push!(HB1,A1*Q1[i]^2 +B1*Q1[i]+C1)

push!(HB2,A2*Q2[i]^2 +B2*Q2[i]+C2)
push!(HB3,A3*Q3[i]^2 +B3*Q3[i]+C3)
global i=i+1
end

#Comprobamos si las bombas nos garantizan el caudal o no


for i=1:n

if abs(H2[i]-HB2[i])<3
PF=Q2[i]
HF=H2[i]
println("El punto de funcionamiento de la bomba es: Caudal: ",PF,"y cabeza o
carga hidráulica: ",HF)

end
end
JOSE=length(Q2)
println(JOSE)

grafica=plot(Q2,H2,seriestype = :scatter,label=string("Curva del sistema para D2"))


plot!(grafica,Q2,HB2,seriestype = :scatter,label=string("Curva de la bomba 2"))

grafica

Primero, Se rellena el arreglo Q con los valores de los caudales, los cual es se ubicarán en el eje x de
la gráfica, para cada uno de los sistemas con diametros definidos se calcula una cabeza hidráulica
requerida. luego se construyen 3 arreglos los cual es contienen las cabezas hidráulicas que
proporcionan cada una de las bombas de acuerdo con las ecuaciones de los fabricantes y se verifica
el punto de funcionamiento de la bomba y también que a este le corresponde un caudal mayor al
caudal de diseño. Luego con la función plot generamos la gráfica .

Código No. 7- Comprobación de tuberías en serie.


clearconsole()
#Funciones disponibles

#Datos generales del problema


HT=28.5
g=9.81
densidad=999.1
m=0.00114
v=0.00000114

e=1e-8
#datos de tuberias
detahf=0.0001

#Tuberia 1
D1=0.61
L1=423
km1=4.2
Ql1=60/1000
ks1=0.0003
A1=pi*D1^2/4
#Tuberia 2
D2=0.51

L2=174
km2=3.4
Ql2=74/1000

ks2=0.0000015
A2=pi*D2^2/4
#Tuberia 3
D3=0.3
L3=373
km3=5.3
Ql3=60/1000

ks3=0.0000015
A3=pi*D3^2/4
D4=0.25
L4=121
km4=7.5
A4=pi*D4^2/4
#No tengo Caudal 4

ks4=0.0000015
Hcal=2*HT

T1=L1/D1^5

T2=L2/D2^5
T3=L3/D3^5
T4=L4/D4^5
global i=1
while abs(Hcal-HT)>e
#Para D1
hf1=HT*(T1/(T1+T2+T3+T4))
V1=((-
2*(2*g*D1*hf1)^0.5)/(L1)^0.5)*log10((ks1/(3.7*D1))+((2.51*v*(L1)^0.5)/(D1*(2*
g*D1*hf1)^0.5)))
Q1=V1*A1
hm1=km1*((V1^2)/(2*g))
deltahf1=(HT-Hcal)*(T1/(T1+T2+T3+T4))
#Para D2
hf2=HT*(T2/(T1+T2+T3+T4))
Q2=Q1-Ql1
V2=Q2/A2
hm2=km2*((V2^2)/(2*g))
Re2=(D2*V2)/v
function factordefriccion(ks,D,Re)
S=0.005

error=0.00000001
fi=S
f2=(-2*log10((ks/(3.7*D))+(2.51/(Re*(fi^(1/2))))))^-2
if (abs(f2-fi)>error)
fi=f2
f2=(-2*log10((ks/(3.7*D))+(2.51/(Re*(fi^(1/2))))))^-2
end

return(f2)

f22=factordefriccion(ks2,D2,Re2)

if i==1
hf2=f22*(L2/D2)*((V2^2)/(2*g))
end
deltahf2=(HT-Hcal)*T2

hf3=HT*(T3/(T1+T2+T3+T4))

Q3=Q2-Ql2
V3=Q3/A3
hm3=km3*((V3^2)/(2*g))

Re3=(D3*V3)/v
f3=factordefriccion(ks3,D3,Re3)
if i==1
global hf3=f3*(L3/D3)*((V3^2)/(2*g))
end
deltahf3=(HT-Hcal)*T3

hf4=HT*(T4/(T1+T2+T3+T4))
Q4=Q3-Ql3
V4=Q4/A4
hm4=km4*((V4^2)/(2*g))
Re4=(D4*V3)/v
f4=factordefriccion(ks4,D4,Re4)
if i==1

hf4=f4*(L4/D4)*((V4^2)/(2*g))
end
deltahf4=(HT-Hcal)*T4

Hcal=hf1+hf2+hf3+hf4+hm1+hm2+hm3+hm4
end
if abs(Hcal-HT)>1e-8
global i=i+1
hf1=hf1+deltahf1
hf2=hf2+deltahf2
hf3=hf3+deltahf3

hf4=hf4+deltahf4
end
end

println("El caudal que sale de la tubería es: ", Q4)

Código No. 8- Diseño de tuberías en serie.


clearconsole()
#Datos en sistema internacional de medidas
#Caudales requeridos
QA=45.1/1000
QB=38/1000
QC=73.2/1000
PBomba=65e3

efi=0.85
ang=0
nt=3
ks=

v=
#nt=Número de tuberias
#Datos de las tuberias

L=[350,123,174]
km=[7.9,3.3,3.5]
hf=[]
A=[]
V=[]
f=[]
Densi=1000
g=9.81

#Calculamos cabeza hidraulica en la fuente


QT=QA+QB+QC
#Cabeza de la bomba

HT=(efi*PBomba)/(Densi*g*QT)
Q1=QT
Q2=QB+QC
Q3=QC
Q=[Q1,Q2,Q3]
#Calculamos las pérdidas por fricción
i=1

Slcos=0
while i<=nt
lcos=(L[i])*cos(ang)
global Slcos=lcos+Slcos
global i=i+1
end
i=1

while i<=nt
hf[i]=HT*L[i]*(cos(ang)/(Slcos))
global i=i+1
end

#Para calcular los diametros utilizaremos una función con el código 4


function Diseñodetuberiasimple(Qd,hfi,L,ks,v,km)
global g=9.81
global DD=0.05
global D=0
global Q=0.00000000001
Tolerancia=0.00000001

while (Qd>=Q)
global D= D + DD
global V=((-
2*(2*g*D*Hfi)^0.5)/(L)^0.5)*log10((ks/(3.7*D))+((2.51*v*(L)^0.5)/(D*(2*g*D*Hfi)
^0.5)))
global A=pi*D^2/4
global Q=A*V

end
println("El diametro que garantiza el caudal es ", D, "m")
dif=1
global hf=H-hm
global hm= km*((V^2)/(2*g))

while abs(hf-Hfi)>=Tolerancia
global Hfi=hf
global V=((-
2*(2*g*D*Hfi)^0.5)/(L)^0.5)*log10((ks/(3.7*D))+((2.51*v*(L)^0.5)/(D*(2*g*D*Hfi)
^0.5)))
global hm= km*((V^2)/(2*g))
global hf=H-hm
end
retourn("D= ", D)

push!(A,A)
end
i=1
hefe=0
while i<=nt
hefe=hf[i]
L=L[i]
Km=km[i]
d=Diseñodetuberiasimple(Qd,hf,L,ks,v,Km)

push!(D,d)
global i=i+1
end

#Una vez tenga los diametros calculo las perdidas


i=1
Re=[]
while i<=nt
j=Q[i]/A[i]
push!(V,j)
global i=i+1

Rey=(V[i]*D[i])/v
push!(Re,Rey)
end
#Definimos la funcion del valor de fricción

#Ecuación de Colebrook-white

#Método de Newton
i=1
while i<=nt
ks=ks[i]

Rey=Re[i]
D=D[i]
function factordefriccion(ks,D,Re)
S=0.005
error=0.00000001
fi=S
f2=(-2*log10((Ks/(3.7*D))+(2.51/(Re*(fi^(1/2))))))^-2
if (abs(f2-fi)>error)

fi=f2
f2=(-2*log10((Ks/(3.7*D))+(2.51/(Re*(fi^(1/2))))))^-2
end

return(f2)
end
ff=factordefriccion(ks,D,Rey)
push!(f,ff)
i=i+1
end
i=0

while i<=nt
L=L[i]
D=D[i]
V=V[i]
hfj=f*(L/D)*((V^2)/(2*g))
hmj=km*((V^2)/(2*g))
push!(hf,hfj)

push!(hk,hkj)

i=i+1

end
Shm=0
Shf=0
while i<=nt
Spm=hm[i]
global Shm=Shm+Spm
Spf=hf[i]
global Shf=Shf+Spf

global i=i+1
end
#Sumatoria de las perdidas menores en valvula

Pv=Shf+Shm

Código No. 9- Potencia de tuberías en serie.


#Variables del problema en Sistema internacional de medidas

g=9.81
p=1000
u=1.14E-6
Skm=13.5
f=0.001
n=0.75
H=31.7

#DATOS DE LAS TUBERÍAS EN SERIE


nt=2 #numero de tuberias
n=nt+1
D=[0.2032,0.1524]

L=[184,393]
ks=[0.000046,0.0000015]
hm=[7.1,11.2]

Q=[0.181,0.087]
hf=[]
A=[]
V=[]
hfi=[]
hfm=[]
Qsumados=0
w=0
#Estipulamos uan variable contador

i=0
#Hacemos una función para calcular de forma practia el factor de fricción-Método de
Newton

function factordefriccion(Re,controlf,f1,perdidas)
if (Re<=2200)
f1=64/Re
else

while (abs(controlf-f1))>0.000000001
controlf=f1
w=((perdidas/(3.7))+(2.51/(Re*controlf^0.5)))
f1=(-2*log10(w))^-2
end
end
return f1

end

global i=1
#Calculamos las perdidas por frcción y las áreas de las tuberias
while (i<n)
push!(hf,ks[i]/D[i])
push!(A,((pi*(D[i])^2)/4))

global i=i+1
end
global j=1
while (j<n)
push!(V,Q[j]/A[j])
Re=((D[j]*V[j])/u)
f = factordefriccion(Re,0,0.001,hf[j])

push!(hfi, ((f*L[j]*(V[j]^2)/(D[j]*2*g))))
push!(hfm, (hm[j])*(V[j])^2/(2*g))
global j=j+1

end
#Perdidas totales
ht=sum(hfi)+sum(hfm)
#Cabeza de Bomba
HT=(ht+H)
#Potencia requerida
potencia=((p*Q[1]*g*HT)/(n))

println("la potencia requerida por el sistema es ",potencia, "W")

6 RESULTADOS
No. 1 – Factor de fricción
El resultado al correr el código debería ser el valor del factor de fricción para la tubería con las
especificaciones dadas

Tabla 1. Datos de entrada.

Datos de entrada
D (m) 1,5 A(m2) 1,767145868
Ks (m) 0,0000015 PVC V(m/s) 5,092958179
Q (m³/s) 9 Re 6529433,563
v (m²/s) 0,00000117 Valor semilla 0,005
Imagen 13. Resultado arrojado por el código.

No. 2- Comprobación de tubería simple.


Al correr el código el resultado debe ser el caudal que pasa por la tubería .

Tabla 2. Datos de entrada.

Datos de entrada
H(m) 43,5 Densidad (kg/m3) 998,2
L(m) 730 miu (Pa*s) 0,001005
Dn(mm) 300 viscosidad cinemática 1,007E-06
Dr(mm) 0,293 precisión 0,00000001
Material PVC gravedad 9,81
Ks 0,0000015
Pedi. Meno 11,8

Imagen 14. Resultado del código de comprobación de tubería simple.

No. 3- Diseño de tubería simple.


Como se mencionó anteriormente el resultado del código de diseño de tubería simple debe ser el
diámetro que garantiza la entrega del caudal de diseño y el caudal final que pasa por la tubería el cuál
debe ser mayor al caudal de diseño.
Tabla 3. Datos de entrada.

Datos de entrada
L(m) 150
ks(m) 0,00015
Q0(m3/s) 0,12
H(m) 2,2
Densidad 999,3
miu 1,17E-03
viscidad diná-
mica 1,17E-06
Skm(m) 3,3
Z 0

Tabla 4. Accesorios a lo largo de la tubería y su respectivo coeficiente de perdidas menores.

Km
Entrada 0,5
Codo 0,8
Uniones 1
Salida 1
Total 3,3

Imagen 15. Resultados del código.

No. 5- Potencia en tubería simple.


El resultado del código “potencia en tubería simple” debe ser la potencia requerida por el sistema
para conducir el fluido a su destino.
Tabla 5. Datos de entrada.

Datos de entrada
D (m) 0,15
Ks (m) 1,50E-06
Q (m³/s) 0,042
v (m²/s) 1,17E-06
L(m) 970
Km 9,4
g 9,81
Densidad 1000
n 0,9
Precisión 1,00E-08

Imagen 16. Resultados de potencia requerida del sistema.

No. 6- Bombas.
Tabla 6. Datos de la tubería.

DATOS
L(m) 286 Z 37
ks(m) 0,0000015 n 0,9
Qd(m3/s) 0,12 Error 1,00E-08
HT(m) 37 ∆Q 0,005
km 5,2
(kg/m3) 999,3
(kg/m3) 0,00117
(m2/s) 1,17E-06
g(m2/s) 9,81
Tabla 7. Posibles diámetros para la tubería.

CASOS
D(m) A(m2)
Caso 1 0,1 0,007853982
Caso 2 0,15 0,017671459
Caso 3 0,2 0,031415927

Tabla 8. Ecuación de la bomba.

Datos del Fabricante


Hm=AQ²+BQ+C
A B C
Bomba 1 -2345 0,27 87
Bomba 2 -4750 -89,4 180
Bomba 3 -15467 -1457 850

Imagen 17. Resultado para La curva del sistema con diámetro 2 de 0.15 y la bomba 2.
Imagen 18. Gráfica

No. 9- Potencia en tuberías en serie.


El resultado del código debe ser l potencia requerida por el sistema para su correcto funcionamiento.

Imagen 19. Resultado de código para los datos ingresados.

7 CONCLUSIONES
En conclusión, programar los cálculos aplicados a las tuberías y a los sistemas de tuberías nos per-
mite agilizar el análisis y diseño de estas . También nos brinda la posibilidad de determinar la preci-
sión que queremos tener con respecto a los resultados y nos permite hacer muchas simulaciones
obteniendo el resultado en pocos minutos. Aunque existen software que hacen este trabajo, escribir
nuestros propios códigos nos permite adaptarlos mucho más al problema al que nos enfrentamos.
Sin embargo, se deben conocer muy bien la teoría detrás de estos cálculos y procesos para poder ser
eficientes y precisos.

8 REFERENCIAS
• DE TUBERIAS, L. D. H. PRACTICA# 3 PERDIDAS DE ENERGIA POR FRICCION EN TUBERIAS.
• Saldarriaga, J. G. (1998). Hidráulica de tuberías, Santa fe de Bogotá.

También podría gustarte