FÓRMULA ITERATIVA PARA CALCULAR EL DIÁMETRO DE UNA TUBERÍA CON LA ECUACIÓN DE DARCY-WEISBACH (COLEBROOK)
¿Necesitas calcular el diámetro de una tubería a partir del caudal?, Bueno este es una aplicación para el calculo del diámetro de una tubería, cuando se está diseñando la línea de conducción de un sistema de agua potable.
Consiste en la solución de la siguiente ecuación mediante el método
numérico NEWTON RAPSON.
\[D = {\left( {\frac{{4Q}}{{\pi \sqrt {2g{h_f}/L} }}}
\right)^{2/5}}{\left[ { - 2\log \left( {\frac{e}{{3.7D}} + \frac{{2.51\nu
}}{{{D^{3/2}}\sqrt {2g{h_f}/L} }}} \right)} \right]^{ - 2/5}}\]
INGRESAR DATOS |
Caudal en (m3/s) | |
longitud de la tubería en (m) | |
Temperatura en (ºC) | |
Rugusidad del tubo (m2/s) | |
Pérdida (m) | |
Tolerancia | |
# de iteraciones máximas | |
Viscosidad | |
Valor de "k" | |
Iteración número | |
Valor del Diámetro (m) |
CÓDIGO FUENTE EN JAVASCRIPT POR NEWTON RAPSON |
script>
//Datos a Ingresar
var Q= 0.20/1000; // Caudal en (m3/s)
var L=50000; // Longitud de la tubería en (m)
var T=10; // Temperatura en (oC)
var ks=0.00026; // Rugusidad del tubo (m2/s)
var hf=4196-4061; // Pérdida (m)
var Tol=1E-8; // Tolerancia
var Imax=18; // Numero de iteraciones máximas
//Cálculo de la Viscosidad en función de la Temperatura
var nu=( 1.14-0.031*(T-15)+0.00068*(T-15)**2)*1E-6;
//Cálculo de k
var k=9.806*Math.PI**2/(8*L*Q**2);
//Datos iniciales para la iteración
var d=0.1; //valor semilla del diámetro
var Error=1; //error inicial
var cont=0; //contador inicial
//Proceso Iterativo
while (Error>=Tol) {
D=d;
//cálculo del número de Reynold
Re=4*Q/(Math.PI*D*nu);
//cálculo del diámetro
d=D-((-2*Math.log10( ks/(3.7*D)+ 2.51/(Re*Math.sqrt(k*hf*D**5))))**(-2) - k*hf*D**5)/((Math.log(10)**2*((10*ks)/(37*D**2) + (251*D**4*hf*k)/(40*Re*(D**5*hf*k)**(3/2))))/(2*Math.log(251/(100*Re*(D**5*hf*k)**(1/2)) + (10*ks)/(37*D))**3*(251/(100*Re*(D**5*hf*k)**(1/2)) + (10*ks)/(37*D))) - 5*D**4*hf*k);
Error=Math.abs(D-d);
cont++;
console.log("Iteración número \n",cont);
console.log("Valor del Diámetro (m) \n",d);
if (cont>=Imax) {
break;
}
}
/script>