An´alisis alisis y Dise˜no no de Redes de Agua Potable M´etodo eto do del Gradiente Gradie nte Hidra´ Hidra ulico u´ lico en el Lenguaje de programacion IPython (2.7) Notebook LATEX 15 de julio de 2015 Resumen
El programa est´ a escrito en el leguaje de PYTHON. Los resultados obtenidos por este programa fueron comprovados con el programa coputacional EPANET 2.0 vE, las diferencias se encuentran dentro de los m´ argenes argenes permisibles
Este programa es una formulaci´ on completaente matricial para el an´ on alialisis y dise˜ no de redes de abastecimiento de agua potable,se trabaja en por no elementos finitos identificando los puntos externos como nodos y a partir de este se trabaja con iteraciones de los caudales en cada tuberia y presiones en cada nodo.
Medienate este metodo es posible analizar indistintamente las redes abiertas y cerradas o ambas juntas, encontrando resultados acercados razonablemente LATEX.
1.
Desa Desarr rrol ollo lo del del Pro Progr gram ama a
Este programa utiliza el Metodo de Gradiente Hidraulico para el analisis y dise˜ no de sistemas de abastecimiento de agua. La cual nos permite el no analisis analisi s de redes de tuberias tub erias para diferentes di ferentes tipos tipo s de tuber´ıas ıas con diferentes di ferentes tipos de rugosidades absolutas, lo cual es muy util. Se puede ingresar El numero numero de reserborios reserborios,, perdidas perdidas locales por accesorios accesorios,, tambien tambien se puede puede ingresar bombas en cualquier tramo lo que hace al programa muy util. u ´til. Se toma un ejercicio pr´actico actico mostrando mostrandose se los resultado resultadoss obtenidos obtenidos en el preogram desarrollado.
1
1.1.
Ejemplo de Aplicaci´ on
Obtener las presiones en cada nudo y los caudales en cada tuber´ıa de la red que se muestra, mediante el m´ etodo del gradiente hidr´aulico.
El sistema se encuentra en el plano y la cota piezom´etrica del ?nudo 1? es de 80m
1.1.1.
Soluci´ on
Identificar los Nudos y enumerarlos, as´ı como las tuberias y asignando el sentido de los caudales que transitara como en el siguiente grafico.
Donde se muestra la numeracion de tuberias y de nudos, asi como tambien la direccion del caudal, todo esto es asumido segun criterio.
2
1.1.2.
DEFINICION DE DATOS DE LA RED
Definiendo la RED El ingreso de Datos se dara con la matriz RED [ ] La cual estara conformada por la siguiente Matriz ◦
N Tub.
Ni
Nf
Long.
Diam.
Per.
Ks
1 2 3 4 5 6 7
1 1 2 4 3 5 4
2 3 4 6 5 6 3
300 400 400 500 500 300 300
254 203.2 203.2 132.4 152.4 152.4 152.4
0 0 0 0 4 0 0
0.00006 0.00006 0.00006 0.00006 0.00006 0.00006 0.00006
Ni : Nudo Inicial Nf : Nudo Final Long.: Longitud de Tuberia (m) Diam.: Diametro de la Tuberia (mm) Per. : Zumatoria de Perdidas Locales Ks : Rugosidad absouta (m)
Datos de Nudo (MSNM) Matriz de Nudos ”matriznudo” ◦
N Nudo
CT
Qd
1 2 3 4 5 6
0 0 0 0 0 0
0 50 30 40 20 40
Rugosidad Absoluta de la Tuber´ıa[M] La rugosidad Absuluta de la Tuber´ıa es de acuerdo al material en este caso sera: 3
−
ks = 0,006x10
Viscocidad Cinematica [m2/s] 6
−
v = 1,14x10
Reserborios que abastecen la red (RSV) Se almacennara con la Variable [RSV] que es la(s) Cota(s) Piezom´etricas conocidas ◦
N
Nudo
1
1
3
Cota
80
Definiendo Bombas en la red: Se define el numero de tuberia y la altura de presion del agua en la cual estar´ a la bomba en la red. Se representa este simulando si hay una bomba. ◦
N Nudo
1
2
3
1 2 3 4 5 6 7
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Donde: La columna 1: Coeficienta .a” La columna 2: Coeficienta ”b” La columna 3: Coeficienta c¸” Se colocan con ”0”PORQUE NO EXISTE BOMBA.
1.1.3. LO
PROCESO DE PROGRAMACION Y DE CALCU-
El codigo de Fuente es de PYTHON NOTEBOOK:
IMPORTACION DE LIBRERIAS f ro m n um py i m po rt * i m po r t n u mp y a s n p f r om m at h i m po r t *
INGRESO DE DATOS GENERALES
g = 9.801 # Aceleracion de la gravedad Tol = 1E -5; # Precision Imax = 20; # Maximo de itera ciones temp =15 # TE MPERATURA V s = ( 1 . 14 - 0 . 0 3 1* ( t e mp - 1 5 ) + 0 . 0 0 0 68 * ( t e mp - 1 5 ) * *2 ) * 1 e - 6 m =2 ; # ecua cion de DA RC Y - WEB ASH Qi =0.2 # Q semilla rsv =1 # Numero de Reser vorios
DATOS DE LA RED matrizred = np . genfromtxt ( ’ dRE D . tx t ’) a t = a r r ay ( m a t r i z r e d [ : , 1 :5 ] ) ni=matrizred[:,0] LT=matrizred[:,3] DT=matrizred[:,4]*.001 4
km=matrizred[:,5] ks=matrizred[:,6] N T =( n i ). s iz e # T AM A~ N O d e e l em e nt o s Q T =a rr ay ( [ Q i f or i i n r an ge ( 0, N T )] ) NN1=NT N N = NN 1 - r sv # N N1 n u me r o d e n ud o s d el s i st e ma p r in t ’ E S U NA R ED D E : ’ , N T , ’ T UB E RI A S ’
ES UNA RED DE: 7 TUBERIAS
Q. Demanda (matriznudo) matriznudo = np . genfromtxt ( ’ datosNUDOM . tx t ’) nnudo=matriznudo[:,0] C T = m a t r i z nu d o [ : , 1 :2 ] ma trizdema nda = ma tr ix ( matriznudo [: ,2 ]). T qi=(matrizdemanda)[rsv:NN1]*0.001 NN1=nnudo.size N N = NN 1 - r sv # N N1 n u me r o d e n ud o s d el s i st e ma NS=rsv A t1 = n p . ze r os ( [ NT , N N 1 ] )# C r ea m a tr i z d e z e ro s d e N T * N1 p r in t ’ N u me r o d e N u do s [ N N ]= ’ , N N , qi
Out N um er o d e N ud os [ NN ] = 5 [ [ 0 .0 5] , [ 0 .0 3] , [ 0 .0 4] , [ 0 .0 2] , [ 0 . 04 ] ]
Q. Demanda (matriznudo) p r in t ’ D T = ’ DT
Out DT = a rr ay ([ 0. 25 4 , 0 .1 5 24 ,
0 .2 03 2 , 0 .2 03 2 , 0 . 15 2 4] )
Q. Demanda (matriznudo) At 1
5
0 .1 32 4 ,
0 .1 52 4 ,
Out
array ([[ [ [ [ [ [ [
0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.] , 0.] , 0.] , 0.] , 0.] , 0.] , 0.]])
Datos de la Bomba matrizBMB = np . genfromtxt ( ’ datosB MBM . tx t ’) p r i nt m a t r iz B M B
Out
[[ [ [ [ [ [ [
0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.
0.] 0.] 0.] 0.] 0.] 0.] 0.]]
MATRIZ DE CONECTIVIDAD f or i i n r a ng e ( 0 , NT ) : j = at [i ] [0 ]; # To ma va lo re s de la 1 ra co lu mn a d e m at ri zr ed A t1 [ i ][ j -1 ]= - 1; # lo R em pl az a x -1 j = at [i ] [1 ]; # To ma va lo re s de la 2 da co lu mn a d e m at ri zr ed A t1 [ i][ j -1 ]= 1; # lo R e mp la za x - 1 At=At1 At
Out
array ([[ -1. , 1. , 0. , 0. , 0. , [ -1. , 0. , 1. , 0. , 0. , [ 0. , -1. , 0. , 1. , 0. , [ 0. , 0. , 0. , -1. , 0. , [ 0. , 0. , -1. , 0. , 1. , [ 0. , 0. , 0. , 0. , -1. , [ 0. , 0. , 1. , -1. , 0. ,
6
0.] , 0.] , 0.] , 1.] , 0.] , 1.] , 0.]])
MATRIZ DE CONECTIVIDAD TOTAL A12=matrix(At[0:NT,1:NN+NS]) A1 2
Out
ma tri x ([ [ 1. , 0. , 0. , 0. , [ 0. , 1. , 0. , 0. , [ -1. , 0. , 1. , 0. , [ 0. , 0. , -1. , 0. , [ 0. , -1. , 0. , 1. , [ 0. , 0. , 0. , -1. , [ 0. , 1. , -1. , 0. ,
0. ] , 0.] , 0.] , 1.] , 0.] , 1.] , 0.]])
In
A21=A12.T A2 1
Out
ma tri x ([ [ [ [ [ [
1. , 0. , 0. , 0. , 0. ,
0. , -1 . , 0. , 0. , 0. , 0. ] , 1. , 0. , 0. , -1. , 0. , 1.] , 0. , 1. , -1. , 0. , 0. , -1.] , 0. , 0. , 0. , 1. , -1. , 0.] , 0. , 0. , 1. , 0. , 1. , 0.]])
In
A10=matrix(At[0:NT,0:rsv]) A1 0
Out
ma tri x ([ [ -1 .] , [-1.], [ 0 .] , [ 0 .] , [ 0 .] , [ 0 .] , [ 0 . ]] )
In
7
H o = i n t ( r a w _ in p u t ( " C O T A d e R e s e r vo r i o s : " ) ) Ho
Out
[80]
In
I=matrix(identity(NT).astype(int)) N dw = I * m # c a mb i ar 2 s e gu n f o rm u la Qac=QT Ho
PROCESO ITERATIVO f or u i n r an ge ( 1, I ma x ): # O PT IM IZ AR E ST O ff=zeros([NT]) Re=4*Qac/(pi*DT*Vs) f or i i n r a n ge ( 0, N T ): KM=km[i] Dt=DT[i] RE=Re[i] tol=1e-14 f, F = 1 , 2 con=0 w h i le ( a b s ( f - F ) > = t o l ) : F=f f = ( - 2 * l o g ( K M / ( 3. 7 * D t ) + 2 . 5 1 /( R E * s q r t ( f ) ) , 1 0 ) )* * - 2 con=con+1 ff[i]=f alfa=(0.08262686*ff*LT)/(DT**5) b e t a = ( 8* Q a c * k m ) / ( 9 . 8 07 * p i * * 2 * D T * * 4 ) l a m da = m b o m b a [ : , 0 ] * Q ac * * 2 + m b o m b a [ : , 1 ]* Q a c + m b o m b a [ : , 2 ] A 1 = a l f a * Q ac * * ( m - 1 ) + b e t a # + ( l a m da / Q a c ) A11=matrix(diag(A1)) H n e xt = - ( ( A 2 1 * N d w . I * A 11 . I * A 1 2 ) . I ) * ( A 21 * N d w . I * ( m a t r ix ( Q a c ) . T + A 1 1 . I * A 1 0 * Ho ) Q n e xt = ( I - N d w . I ) * m a t ri x ( Q a c ) . T - ( N d w . I * A 11 . I ) * ( A 1 2 * H n e xt + A 1 0 * H o ) error=sqrt(sum(array(abs((Qnext -(matrix(Qac).T)))) **2))
p r i nt ( Q a c ) Qac=zeros([NT]) f or i i n r a n ge ( 0, N T ):
8
Qac[i]=abs(Qnext[i,0])
Out
[ 0.2 0.2 0.2 0.2 0.2 [ 0 .1 72 33 28 7 0 .0 07 66 71 3 0 . 03 3 45 2 78 0 . 01 3 45 2 78 [ 0 .1 25 27 59 4 0 .0 54 72 40 6 0 . 03 8 77 8 87 0 . 01 8 77 8 87 [ 0 .1 10 21 13 8 0 .0 69 78 86 2 0 . 03 6 08 7 75 0 . 01 6 08 7 75 [ 0 .1 06 13 72 6 0 .0 73 86 27 4 0 . 03 5 11 8 39 0 . 01 5 11 8 39 [ 0 .1 07 30 10 6 0 .0 72 69 89 4 0 . 03 5 46 2 69 0 . 01 5 46 2 69 [ 0 .1 06 94 16 0 .0 73 05 84 0 . 03 5 36 4 98 0 . 01 5 36 4 98 [ 0 .1 07 04 91 5 0 .0 72 95 08 5 0 . 03 5 39 5 19 0 . 01 5 39 5 19 [ 0 .1 07 01 66 0 .0 72 98 34 0 . 03 5 38 6 16 0 . 01 5 38 6 16
In
Qnext
Out
ma tri x ([ [ 0.1 070 264 1] , [ 0 . 0 7 29 7 3 5 9] , [ 0 . 0 5 70 2 6 4 1] , [ 0 . 0 2 46 1 1 1 1] , [ 0 . 0 3 53 8 8 8 9] , [ 0 . 0 1 53 8 8 8 9] , [ - 0 . 0 0 7 58 4 7 ] ] )
In
error
Out
0.015181957586552062
9
0.2 0.2] 0 .1 22 33 28 7 0 . 05 5 78 5 65 ] 0 .0 75 27 59 4 0 . 01 4 05 4 81 ] 0 .0 60 21 13 8 0 . 00 3 70 0 87 ] 0 .0 56 13 72 6 0 . 00 8 74 4 36 ] 0 .0 57 30 10 6 0 . 00 7 23 6 26 ] 0 .0 56 94 16 0 . 00 7 69 3 42 ] 0 .0 57 04 91 5 0 . 00 7 55 5 66 ] 0 .0 57 01 66 0 . 00 7 59 7 25 ]
0 .0 26 54 72 2 0 .0 21 22 11 3 0 .0 23 91 22 5 0 .0 24 88 16 1 0 .0 24 53 73 1 0 .0 24 63 50 2 0 .0 24 60 48 1 0 .0 24 61 38 4
Presiones en los puntos (metros) CTT=array(CT)[rsv:NN1] H f i na l = H n ex t - C T T Hfinal
Out
ma tri x ([ [ [ [ [ [
76.4 270 216 4] , 7 3 . 0 40 5 1 50 4 ] , 7 1 . 9 76 6 7 29 3 ] , 6 3 .6 8 20 9 54 ] , 6 2 . 4 2 9 14 0 3 2 ] ] )
Caudales Resultantes (lt/s) QT
Out
array ([ 0.2 ,
2.
0.2 ,
0.2 ,
0.2 ,
0.2 ,
0.2 ,
0.2])
Conclusiones
Con el programa desarrollado se puede simular los diametros de tuberias para poder obtener presiones velocidades y caudales que esten de acuerdo a la norma, la cual es de mucha ayuda para el dise˜ no de Redes de tuberia de Agua potable eficiente y optimizado. Vemos que el programa simula correctamente y en las iteraciones respectivas.
3.
Referencias
1. Dise˜ no de una Red de Abastecimiento de agua ? M´etodo del Gradi´ ente Hidr´aulico? Autor- CANCHARI GUTI ERREZ, Edmundo 2. Hidraulica de tuber´ıas - Juan Saldarreaga
4.
Anexos Se muestra las imagenes capturadas del Programa
10
11
12
13
14
15