DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

82

Transcript of DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

Page 1: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …
Page 2: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

2

DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA MODELACIÓN HIDRÁULICA,

IMPLEMENTANDO LA EXTENSIÓN DEL ALGORITMO DEL GRADIENTE GLOBAL EN EL

TIEMPO EXTENDIDO PARA FLUJO NO ESTABLE.

JONATHAN YEPES TAVERA

Proyecto de Grado como requisito

parcial para optar por el título de Ingeniero Civil

Asesor:

Ing. HÉCTOR WILLIAM CLAVIJO SANABRIA

UNIVERSIDAD PONTIFICIA JAVERIANA

FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA CIVIL

BOGOTÁ D.C.

2012

Page 3: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

4

A Lucía Tavera Suárez

Page 4: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

5

AGRADECIMIENTOS

Sin duda alguna, es justo y consecuente expresar mi sentido de gratitud a aquellas

personas que aportaron al desarrollo y culminación de éste proyecto:

A mi diligente director de trabajo de grado, el Ingeniero Héctor William Clavijo

Sanabria, quién apoyó y mantuvo su constante guía en éste trabajo de pregrado. Sus

consejos no me dejaron olvidar, que los sueños deben de ser bastante grandes para no

perderlos de vista en el camino.

A mi querida madre por todo su apoyo incondicional durante el transcurso de éste

proyecto y a quién le debo mi formación humana. Para ti.

Agradezco a Vanessa Mojica Arboleda, quién aportó de su tiempo para entender el

significado de éste arduo trabajo. Su ayuda fue indispensable e ilimitada.

Igualmente, quiero agradecer al ingeniero Jorge Escobar, quién orientó éste proyecto

en su debido momento, a mis hermanos y amigos, quienes creyeron en el objeto de

éste trabajo de grado y nunca contemplaron la posibilidad de fracaso.

A todos ustedes, ¡MUCHÍSIMAS GRACIAS!

Page 5: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

6

TABLA DE CONTENIDO

1. INTRODUCCIÓN .................................................................................................. 16

1.1. OBJETIVOS ....................................................................................................... 21

1.1.1. OBJETIVO GENERAL ....................................................................................... 21

1.1.2. OBJETIVOS ESPECÍFICOS ................................................................................ 21

1.2. METODOLOGÍA ................................................................................................ 21

1.2.1. REVISIÓN BIBLIOGRÁFICA Y DEFINICIÓN DE LA HERRAMIENTA

COMPUTACIONAL ................................................................................................... 21

1.2.2. EXPLORACIÓN NUMÉRICA INICIAL DE LA EXTENSIÓN DEL ALGORITMO DEL

GRADIENTE GLOBAL ................................................................................................ 22

1.2.3. PLANIFICACIÓN DE LA ESTRUCTURA INFORMÁTICA..................................... 22

1.2.4. DESARROLLO DE LA APLICACIÓN .................................................................. 22

1.2.5. PRUEBAS DE CONSISTENCIA Y VALIDEZ DE LA APLICACIÓN ......................... 23

2. MARCO CONCEPTUAL ......................................................................................... 24

2.1. MODELACIÓN DE REDES HIDRÁULICAS ............................................................. 24

2.2. ALGORITMO DEL GRADIENTE GLOBAL (GGA) .................................................... 27

2.2.1. EJEMPLO SIMBÓLICO DE APLICACIÓN DEL GGA ........................................... 29

2.3. EXTENSIÓN DEL ALGORITMO DEL GRADIENTE GLOBAL (EGGA) ......................... 32

2.3.1. EJEMPLO SIMBÓLICO DE APLICACIÓN DEL EGGA ......................................... 34

2.4. LENGUAJE DE PROGRAMACIÓN ....................................................................... 35

3. DISEÑO Y DESARROLLO DEL SOFTWARE (DRÜCKE) .............................................. 38

3.1. DESARROLLO DEL MODELO DE DATOS ............................................................. 38

3.1.1. ENTRADA DE DATOS ...................................................................................... 39

3.1.2. ALMACENAMIENTO DE LA INFORMACIÓN ................................................... 41

3.1.3. MOTOR DE CÁLCULO ..................................................................................... 49

3.1.4. SALIDA DE DATOS .......................................................................................... 53

3.2. METODOLOGÍA PARA LA SOLUCIÓN DE SISTEMAS LINEALES ............................. 54

3.2.1. ALMACENAMIENTO DE LA MATRIZ Aij .......................................................... 55

3.3 IMPLEMENTACIÓN DE LA INTERFAZ GRÁFICA (GUI) ........................................... 60

3.3.1. DESARROLLO DE OBJETOS VISUALES ............................................................ 62

Page 6: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

7

3.3.2. PROGRAMACIÓN DE EVENTOS ..................................................................... 67

4. APLICACIONES, RESULTADOS Y DISCUSIÓN ......................................................... 68

4.1. CASOS DE APLICACIÓN ..................................................................................... 68

4.2. RESULTADOS COMPARATIVOS CON EL ALGORITMO DEL GRADIENTE GLOBAL .. 70

5. CONCLUSIONES Y RECOMENDACIONES ............................................................... 81

5.1. CONCLUSIONES ................................................................................................ 81

5.2. RECOMENDACIONES ........................................................................................ 82

6. BIBLIOGRAFÍA ..................................................................................................... 83

Page 7: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

8

LISTA DE FIGURAS

Figura 1.Representación esquemática de la red hidráulica. .......................................... 18

Figura 2.Tipología de la red hidráulica ........................................................................... 29

Figura 3. Tipología de la red hidráulica - Aplicación ...................................................... 68

Page 8: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

9

LISTA DE GRÁFICAS

Gráfica 1. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 1 minuto, usando el software EPANET.. .................................... 19

Gráfica 2. Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo

de 1 minuto, usando el software EPANET.. .................................................................... 19

Gráfica 3. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 15 minutos, usando el software EPANET. ................................. 19

Gráfica 4. Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo

de 15 minutos, usando el software EPANET. .................................................................. 19

Gráfica 5-6. Resultados obtenidos para el vaciado de los tanques con el GGA y el EGGA

para un intervalo de tiempo de 1 minuto. ...................................................................... 70

Gráfica 7. Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo

de 1 minuto. .................................................................................................................... 70

Gráfica 8. Resultados obtenidos de los caudales de los tanques con el EGGA para un

intervalo de tiempo de 1 minuto. ................................................................................... 70

Gráfica 9-10. Resultados obtenidos para el vaciado de los tanques con el GGA y el

EGGA para un intervalo de tiempo de 5 minutos. .......................................................... 71

Gráfica 11. Resultados obtenidos de los caudales con el GGA para un intervalo de

tiempo de 5 minutos.. ..................................................................................................... 71

Gráfica 12. Resultados obtenidos de los caudales con el EGGA para un intervalo de

tiempo de 5 minutos.. ..................................................................................................... 71

Gráfica 13. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 10 minutos. ................................................................................ 72

Gráfica 14.Resultados obtenidos para el vaciado de los tanques con el EGGA para un

intervalo de tiempo de 10 minutos ................................................................................. 72

Gráfica 15. Resultados obtenidos de los caudales con el GGA para un intervalo de

tiempo de 10 minutos. .................................................................................................... 72

Gráfica 16. Resultados obtenidos de los caudales con el EGGA para un intervalo de

tiempo de 10 minutos. .................................................................................................... 72

Gráfica 17. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 15 minutos. ................................................................................ 73

Gráfica 18.Resultados obtenidos para el vaciado de los tanques con el EGGA para un

intervalo de tiempo de 15 minutos ................................................................................. 73

Page 9: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

10

Gráfica 19. Resultados obtenidos de los caudales con el GGA para un intervalo de

tiempo de 15 minutos. .................................................................................................... 73

Gráfica 20. Resultados obtenidos de los caudales con el EGGA para un intervalo de

tiempo de 15 minutos. .................................................................................................... 73

Gráfica 21. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 30 minutos. ................................................................................ 74

Gráfica 22.Resultados obtenidos para el vaciado de los tanques con el EGGA para un

intervalo de tiempo de 30 minutos ................................................................................. 74

Gráfica 23.Resultados obtenidos de los caudales con el GGA para un intervalo de

tiempo de 30 minutos. .................................................................................................... 74

Gráfica 24. Resultados obtenidos de los caudales con el EGGA para un intervalo de

tiempo de 30 minutos. .................................................................................................... 74

Gráfica 25.Variación del error para diferentes intervalos de tiempo ............................ 75

Gráfica 26. Resultados obtenidos con el EGGA para un intervalo de tiempo de 1 minuto.

........................................................................................................................................ 76

Gráfica 27. Resultados obtenidos con el EGGA para un intervalo de tiempo de 1 minuto.

........................................................................................................................................ 76

Gráfica 28. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 1 minuto. ................................................................................... 77

Gráfica 29. Resultados obtenidos para el vaciado de los tanques con el EGGA para un

intervalo de tiempo de 1 minuto. ................................................................................... 77

Gráfica 30. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 5 minutos. .................................................................................. 77

Gráfica 31. Resultados obtenidos para el vaciado de los tanques con el EGGA para un

intervalo de tiempo de 5 minutos ................................................................................... 77

Gráfica 32. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 10 minutos. ................................................................................ 78

Gráfica 33. Resultados obtenidos para el vaciado de los tanques con el EGGA para un

intervalo de tiempo de 10 minutos.s .............................................................................. 78

Gráfica 34. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 15 minutos. ................................................................................ 78

Page 10: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

11

Gráfica 35. Resultados obtenidos para el vaciado de los tanques con el EGGA para un

intervalo de tiempo de 15 minutos. ................................................................................ 78

Gráfica 36. Resultados obtenidos para el vaciado de los tanques con el GGA para un

intervalo de tiempo de 30 minutos. ................................................................................ 79

Gráfica 37. Resultados obtenidos para el vaciado de los tanques con el EGGA para un

intervalo de tiempo de 30 minutos. ................................................................................ 79

Gráfica 38. Variación del error para diferentes intervalos de tiempo ............................ 79

Gráfica 39. Eficiencia computacional de cálculo a partir del sistema de almacenamiento

........................................................................................................................................ 80

Page 11: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

12

LISTA DE ESQUEMAS

Esquema 1. Ciclo lógico del Modelo de Datos ................................................................ 38

Esquema 2. Modelo de datos – Lectura directa de Información ................................... 39

Esquema 3. Modelo de datos – Lectura no directa de Información (Datos importados)

........................................................................................................................................ 40

Esquema 4. Almacenamiento general de la información .............................................. 41

Esquema 5. Llenado de objetos ...................................................................................... 42

Esquema 6. Modelo matricial de la información condensada. ...................................... 44

Esquema 7. Configuración de la Matriz Variables – Dependencias de las variables ..... 45

Esquema 8. Funcionamiento general del Motor de Cálculo de DRÜCKE ....................... 51

Esquema 9. Recorrido matricial (Matriz Variables) ....................................................... 52

Esquema 10. Almacenamiento convencional de la matriz Aij. ....................................... 55

Esquema 11. Reducción matricial. ................................................................................. 55

Esquema 12. Modelo de almacenamiento reducido ...................................................... 57

Esquema 13. Estructura básica de la Interfaz Gráfica de Usuario. ................................ 61

Page 12: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

13

LISTA DE ANEXOS

ANEXO 1. Manual del Usuario

ANEXO 2. Software Ejecutable ANEXO 3. Hojas de cálculo (Excel)

Page 13: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

14

RESUMEN

El siguiente trabajo consiste en la implementación de la solución del problema de la

inestabilidad numérica para el análisis de flujo de las redes hidráulicas en el período

extendido, inestabilidad a causa de las de oscilaciones marcadas en períodos

consecutivos generadas por grandes pasos de cálculo en el transcurso del tiempo y

cuya solución se realiza mediante la nueva metodología propuesta por Todini (2011).

Dicha solución, es implementada y desarrollada en el software DRÜCKE para la

modelación y simulación hidráulica en el flujo presurizado de sistemas de

almacenamiento.

Mediante la Extensión del Algoritmo del Gradiente Global (EGGA) (Todini, 2011), cuyo

fundamento se aplica para la solución de la inestabilidad numérica en el análisis de

flujo en el período extendido, se desarrolló el software cuyo funcionamiento ha sido

estructurado mediante el método del Gradiente Conjugado para la solución iterativa

de sistemas lineales aplicados al algoritmo EGGA en conjunto con las leyes de la

hidráulica de sistemas de presión. De esta forma, se aplica la solución al problema de

la inestabilidad numérica de las redes de distribución de agua potable y así, se muestra

cuantitativamente la solución obtenida por Todini (2011).

No obstante, el Algoritmo del Gradiente Global (GGA), introducido por Todini (1979) y

Todini & Pilati (1988), ha conformado la estructura para la mayoría de los software

hidráulicos. EPANET, desarrollado por Rossman (1993) para la Agencia de Protección

Ambiental de los Estados Unidos, WATERGEMS (BentleySystems, 2006), WATERCAD,

en conjunto con otros software para el análisis hidráulico, han usado la metodología

del GGA para la modelación y simulación hidráulica de flujo en el período extendido.

Un esquema explícito de Euler proporciona la base del funcionamiento de las redes

hidráulicas en el período extendido, sin embargo, la inestabilidad en los sistemas de

almacenamiento se ha podido presenciar y asociar a determinados casos en particular.

Por tal razón, Todini (2011) introduce básicamente el uso de un esquema Explícito –

Implícito de solución de las ecuaciones diferenciales ordinarias de la simulación

cuasidinámica del flujo en redes de distribución.

Palabras Clave: Inestabilidad numérica, Algoritmo del Gradiente Global, Dispositivos

de almacenamiento, Red de distribución, Simulación en el período extendido.

Page 14: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

15

ABSTRACT

This work implements the solution of the problem of numerical instability for flow

analysis in hydraulic networks extended period, which exists because of marked

consecutive oscillations and whose solution is made using the new methodology

proposed by Todini (2011). This solution is implemented and developed in DRÜCKE

software for modeling and simulation pressurized hydraulic flow storage systems.

By the Extending the Global Gradient Algorithm (EGGA) (Todini, 2011), whose

foundation is applied for solving numerical instability in the flow analysis in the

extended period, the software was developed whose operation has been structured by

Method numerical conjugate gradient for solving linear systems applied to EGGA

algorithm in conjunction with the laws of hydraulic pressure systems. Thus, applying

the solution to the problem of instability of digital networks potable water distribution

and thus shows quantitatively the solution obtained by Todini (2011).

However, Global Gradient Algorithm (GGA), introduced by Todini (1979) and Todini &

Pilati (1988), has formed the structure for most hydraulic software. EPANET, developed

by Rossman (1993) for the Environmental Protection Agency of the United States,

WaterGEMS (Bentley Systems 2006), WaterCAD, in conjunction with other software

for hydraulic analysis, have used GGA methodology for modeling and simulation of

hydraulic flow in the extended period. An explicit Euler scheme provides the basis for

the operation of water networks in the extended period, however, instability in

storage systems has been witnessed and involve certain particular cases. For this

reason, Todini (2011) basically introduces a scheme using Explicit - Implicit solution of

ordinary differential equations for quasi-steady simulation of flow in distribution

networks.

Keywords: Numerical Instability, Global Gradient Algorithm, Storage Devices, Water

Distribution Network, The Extended Period Simulation.

Page 15: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

16

1. INTRODUCCIÓN

Las redes hidráulicas son sistemas que trabajan en conjunto para la distribución de

fluidos sin importar su tipo. Éstas se modelan en flujo permanente en el período

extendido, sin embargo existe la opción de realizar la modelación en flujo cuasi-

dinámico. La existencia de software con éste propósito son diversos, cuyo como motor

de cálculo es el Algoritmo del Gradiente Global (Todini, 2011). A pesar de haberse

establecido como la metodología más usada para el cálculo de redes hidráulicas de

distribución, el GGA ha presentado inestabilidades numéricas, especialmente para

grandes intervalos de tiempo. Dicho problema se debe a que el cálculo genera

oscilaciones marcadas en los períodos consecutivos, es decir, en cada cambio del

intervalo de tiempo , generando también posible falta de convergencia. Éste

problema a pesar de ser numérico, se puede ejemplarizar como el cambio basto en

cada intervalo de tiempo, los cuales deberían ser bajos y sutiles para simular el

comportamiento real de los sistemas de almacenamiento.

La Extensión del Algoritmo del Gradiente Global, la cual consiste en una adición de un

término implícito en el esquema del GGA para proporcionar la estabilidad numérica

necesaria en el cálculo de las redes hidráulicas; es el motor de cálculo adoptado y

desarrollado en éste trabajo. El método del Gradiente Conjugado, los modelos de

almacenamiento matricial, la simplificación del cálculo de la extensión, la Interfaz

Gráfica de Usuario (GUI), son algunos de los algoritmos contenidos dentro de DRÜCKE

los cuales trabajan conjuntamente para el desarrollo de las redes de distribución.

Para el desarrollo del software, se inició con un modelo de datos formalizado en dónde

se plantea el esquema general para el funcionamiento de la aplicación, se procede con

la subdivisión de las clases y métodos que conformarán la estructura general para el

procesamiento de la información. Dichos métodos de procesamiento son

dependientes de la forma utilizada para el ingreso de la información y cuya conexión

se hace directamente con el Método del Gradiente Conjugado para la solución

matricial de las ecuaciones hidráulicas. Éste modelo de datos fue estructurado con la

proyección de poder simular en tiempo real las diferentes variables hidráulicas que

conforman el sistema y así poder visualizar el comportamiento en el período extendido

de la red hidráulica. Posteriormente, se podrá discernir de los resultados obtenidos

con la extensión del GGA, resaltando la sutileza de las oscilaciones en cada intervalo de

tiempo.

Page 16: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

17

ORGANIZACIÓN DEL DOCUMENTO

Éste documento se compone de 5 capítulos distribuidos así:

El primer capítulo hace la introducción al problema, se exponen los objetivos y

las diferentes etapas que se llevan a cabo para el desarrollo de éste trabajo.

El segundo capítulo expone las metodologías utilizadas para el desarrollo de la

aplicación, dónde se explica el problema en los sistemas de almacenamiento y

el desarrollo de las ecuaciones de energía y masas. Adicionalmente, se

exponen conceptos básicos de programación relacionados con el desarrollo del

software.

En el tercer capítulo se desarrolla el modelo de datos de la aplicación con todos

sus componentes principales, tales como el esquema de procesamiento y

almacenamiento de la información y los diferentes mecanismos para la entrada

y salida de datos.

El cuarto capítulo expone el análisis de los casos implementados en la

aplicación correspondientes a modelos reales y sintéticos. Se determina la

solución del problema y se hace un paralelo para diferentes escenarios de la

propagación del error en la metodología antigua.

Finalmente, en el capítulo sexto se exponen las recomendaciones y

conclusiones del trabajo desarrollado.

Page 17: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

18

ANTECEDENTES

En el transcurso evolutivo de la modelación y simulación hidráulica, se han planteado

modelos matemáticos para la solución de redes de distribución, ya sea de agua

potable, residual, combustible u otros fluidos, tales como la teoría lineal, métodos

iterativos como Cross y el Algoritmo del Gradiente Global, el cual resuelve las

ecuaciones de balance de masas y energía aplicadas a la estructura hidráulica del

sistema. Actualmente existen diferentes software que implementan dicho algoritmo

para la simulación hidráulica como EPANET, WaterCAD®, WaterGems®, los cuales

incorporan dicha formulación matemática presentando discrepancias entre el

comportamiento real y el simulado en la modelación del tiempo extendido, por efecto

de inestabilidades numéricas (Todini, 2011).

En el tiempo extendido, es decir, en la simulación en estado transitorio o dinámica, se

han podido evidenciar inestabilidades numéricas en la evolución de los niveles de los

dispositivos de almacenamiento, debido a la configuración del algoritmo,

especialmente para tamaños grandes del paso de cálculo (Todini, 2011), generando de

esta forma problemas de confiabilidad en la simulación de las redes de distribución.

Éste problema se debe a que el cálculo genera oscilaciones marcadas en los períodos

consecutivos, es decir, en cada cambio del intervalo de cálculo , generando de

esta forma posible falta de convergencia. El análisis de estado no estable formulado

por el Algoritmo del Gradiente Global, es una aproximación apropiada a las

condiciones de este tipo de flujo en las redes, en donde se realiza un procedimiento

iterativo para la solución del sistema (Giustolisi, 2010).

Representación esquemática de la red hidráulica. Dos tanques conectados descargándose en el transcurso del tiempo. Fuente: Todini, 2011.

Figura 1

Figura 1

Figura 1.

Figura 2

Page 18: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

19

0

5

10

15

20

25

30

0 1 2 3 4

Ene

rgía

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

-160

-140

-120

-100

-80

-60

-40

-20

0

20

40

60

0 1 2 3 4

Cau

dal

[Lp

s]

Tiempo [Horas]

Tubería 1 Tubería 2 Tubería 3

0

5

10

15

20

25

30

0 1 2 3 4

Ene

rgía

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

-160

-140

-120

-100

-80

-60

-40

-20

0

20

40

60

80

0 1 2 3 4

Cau

dal

[Lp

s]

Tiempo [Horas]

Tubería 1 Tubería 2 Tubería 3

A partir de la Figura. 1, se tiene una red hidráulica con dos sistemas de

almacenamiento con cabeza inicial conocida. En el transcurso del tiempo, ésta energía

disminuirá ya que la configuración de la red hidráulica corresponde al modelo de

descarga libre. Desarrollando las ecuaciones del GGA con el esquema explícito de

Euler, se tiene para el cálculo de las variables del sistema las siguientes gráficas:

Gráfica 1. Gráfica 2.

Gráfica 3.

Gráfica 4

Para la misma configuración de red, se ha realizado el cálculo con el software EPANET

para diferentes intervalos de tiempo, en dónde se puede evidenciar a partir de las

gráficas la inestabilidad numérica. Cuando el intervalo de cálculo aumenta, el

algoritmo desconoce la información que se ha generado en el tiempo pasado y el

tiempo actual de cálculo, generando oscilaciones marcadas en los períodos

consecutivos y generando posible falta de convergencia. Cuando éste intervalo de

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 1 minuto, usando el software EPANET.

Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 1 minuto, usando el software EPANET.

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 15 minutos, usando el software EPANET.

Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 15 minutos, usando el software EPANET.

Page 19: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

20

tiempo se hace más grande la información perdida es mayor y por ende la simulación

será menos confiable.

Es por esta razón necesaria la implementación de la extensión del algoritmo del

gradiente global propuesto por Todini (2011), para evitar los problemas numéricos con

el cálculo de redes en el período extendido, los cuales impiden la aplicación de

esquemas de operación confiables en sistemas de distribución y así asemejarse al

comportamiento real de los niveles en los dispositivos de almacenamiento. La

modelación es requerida para estimar y establecer esquemas y reglas de operación

eficientes en los acueductos y de esta forma garantizar el bienestar de los usuarios. La

capacidad de simulación de un período prolongado es una consideración importante

en la planificación y operación de sistemas de distribución de fluidos (Wu, 2009),

puesto que si esta simulación reproduce comportamientos erróneos, el desarrollo

hidráulico de la red de distribución, modificaría el esquema inicial produciendo

cambios significativos en los requerimientos del sistema.

JUSTIFICACIÓN

La solución a éste tipo de problemas ayuda a modelar con mayor eficiencia y precisión

la hidráulica de las redes en estado no estable. Si se soluciona la inestabilidad

numérica, es posible realizar esquemas de operación en tiempo extendido

representando con mayor aproximación para cada instante de tiempo, la variación de

energía de los sistemas de almacenamiento y elementos hidráulicos como los nodos,

válvulas y demás dispositivos.

De allí surge la necesidad de desarrollar un software en donde se implemente la nueva

metodología y así facilitar el cálculo para redes de gran tamaño, generando una

simulación más aproximada al comportamiento de la red hidráulica.

Page 20: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

21

1.1. OBJETIVOS

1.1.1. OBJETIVO GENERAL

Diseñar y desarrollar una aplicación para la modelación y simulación hidráulica en el

flujo presurizado, empleando la Extensión del Algoritmo del Gradiente Global, como

solución a la inestabilidad numérica en el análisis de flujo en período extendido.

1.1.2. OBJETIVOS ESPECÍFICOS

Determinar los requerimientos de la aplicación del Algoritmo del Gradiente

Global para el análisis en el período extendido.

Planificar y desarrollar la herramienta de modelación del Algoritmo del

Gradiente Global utilizando las condiciones de su aplicación.

Verificar los resultados de modelación con modelos sintéticos reportados por la

literatura.

1.2. METODOLOGÍA

1.2.1. REVISIÓN BIBLIOGRÁFICA Y DEFINICIÓN DE LA HERRAMIENTA

COMPUTACIONAL

Se consultará y recopilará en libros, artículos, y otras fuentes de información, la

incorporación de la extensión del algoritmo del gradiente global en el tiempo

extendido para flujo no estable. Posteriormente se definirá el software en el cual se

ejecutará y desarrollará todo el algoritmo para la aplicación, basándose en diferentes

criterios tales como:

Programación versátil

Velocidad óptima de procesamiento de datos

Modelación de interfaz gráfica

Una vez evaluados los anteriores criterios, se determinó que el lenguaje de

programación seleccionado para el desarrollo del software DRÜCKE es JAVA, usando el

Page 21: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

22

Entorno de Desarrollo Integrado (IDE – “Integrated Development Environment”)

NetBeans.

1.2.2. EXPLORACIÓN NUMÉRICA INICIAL DE LA EXTENSIÓN DEL ALGORITMO DEL

GRADIENTE GLOBAL

Se revisarán los requerimientos y necesidades para ejecutar la extensión del algoritmo

del gradiente global, comprendiendo la estructura del mismo. Mediante redes

hidráulicas sintéticas simples, se explorará numéricamente el funcionamiento del

algoritmo para determinar cuáles son los pasos necesarios para llevar a cabo la

programación de la aplicación.

1.2.3. PLANIFICACIÓN DE LA ESTRUCTURA INFORMÁTICA

Se determinará las fases de programación que se llevarán a cabo para ejecutar la

herramienta de modelación del flujo presurizado en el tiempo extendido. La primera

consiste en el Desarrollo del modelo de datos en dónde se determinará cómo será el

almacenamiento y procesamiento de los datos insertados en la aplicación.

Posteriormente se planificará la estructura de cómo el usuario ingresará los datos y de

qué forma serán proyectados los resultados realizados por la aplicación. Para llevar a

cabo estas fases de desarrolló, será necesario entonces definir todos los

procedimientos y funciones dentro de módulos y cómo estos interactúan para el

desarrollo de la aplicación.

Finalmente, se pre diseñará el Manual del Usuario. Tutoriales basados en redes

hidráulicas sintéticas simples, mensajes de error, modelos del sistema, preguntas

frecuentes, son algunos de los aspectos contenidos en el manual del usuario, los cuales

serán definidos en esta fase.

1.2.4. DESARROLLO DE LA APLICACIÓN

Después de haber seleccionado el modelo de datos, se implementará éste en el

respectivo lenguaje de programación previamente definido (JAVA en el IDE –

NetBeans), aplicado a diferentes tipologías de redes, al igual que todas las funciones

necesarias para llevar a cabo la ejecución y desarrollo de la aplicación, incluyendo

todos los códigos referentes a la interfaz gráfica.

Page 22: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

23

El desarrollo del manual del usuario se llevará a cabo simultáneamente se avance con

el código de programación, con el propósito de evitar confusiones y la omisión de

herramientas de la aplicación.

1.2.5. PRUEBAS DE CONSISTENCIA Y VALIDEZ DE LA APLICACIÓN

Mediante modelos hidráulicos sintéticos reportados por la literatura (Larock, Jeppson

& Watters, 2000), se verificará que las ecuaciones hidráulicas y los resultados

obtenidos sean consistentes con el sistema hidráulico.

Se verificará la validez de la aplicación mediante la estabilidad numérica para

diferentes pasos de cálculo en el transcurso del tiempo . Dicho paso de cálculo,

está relacionado directamente con la inestabilidad numérica (Todini, 2011).

Finalmente, con una red hidráulica real se empleará la aplicación para determinar si los

resultados obtenidos son consistentes mediante pruebas de escritorio.

Page 23: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

24

2. MARCO CONCEPTUAL

2.1. MODELACIÓN DE REDES HIDRÁULICAS

La modelación de redes hidráulicas consiste en simular el comportamiento hidráulico

para tiempos determinados ya sea en período simple o período extendido, realizando

toda la interpretación cuantitativa de las variables que rigen el comportamiento del

sistema. De esta forma, la solución se centraliza en conocer la cantidad de energía

disponible para la red hidráulica y así poder establecer la distribución o abastecimiento

poblacional.

[1] (Todini, 2011)

[2] (Todini, 2011)

La hidráulica debe de cumplir las ecuaciones de Balance de Masas y Energías. La

ecuación [1] describe el balance de masas para los nodos con cabeza hidráulica

desconocida, donde es el volumen de agua almacenada en el nodo , es el

caudal que se transporta entre la tubería conectada entre el nodo y el nodo y es

el caudal externo aplicado en el nodo . La ecuación [2], el término representa

las pérdidas a lo largo de la longitud de la tubería y es el coeficiente de resistencia

hidráulica (Ecuación [27] y [28]).

Si bien todo sistema hidráulico genera pérdidas de energía a causa de la fricción,

accesorios y transientes; para su modelación se debe de tener en cuenta dicho factor,

ya que éste aportará a determinar la variación energética del sistema. Adicionalmente,

los sistemas de almacenamiento poseen la propiedad innata de acumular masa y

energía para poder ser retribuida en el momento de escasez hidráulica y así

compensar la demanda de masa y energía. Cuando aumenta el nivel en estos

dispositivos, aumenta la energía potencial para este punto, la cual será transformada

en energía cinética a través del paso por la tubería. Ésta energía cinética se refleja en

la magnitud de la carga de velocidad, y con la carga piezométrica, determinan la

energía disponible para determinado punto.

Para la modelación de redes hidráulicas es necesario conocer las propiedades del

sistema, tales como las propiedades del fluido que se está transportando, los

Page 24: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

25

materiales de las tuberías, los dispositivos de regulación, de almacenamiento y de

adición de energía. Con ésta información básica, se procede al cálculo dependiendo de

la configuración de la red y así determinar las variables para determinados instantes de

tiempo.

Las dos variables que rigen el comportamiento de la red hidráulica corresponden a los

caudales ( ) y las energías ( ) de todo el sistema. La primera variable es la cantidad

de masa que se transporta a través de las tuberías desde un punto hasta un punto

en un determinado lapso de tiempo; ésta variable depende esencialmente del área

transversal por la cual se transporta y la velocidad con la que lo hace. En una red

hidráulica real, adquiere diferentes valores respecto al tiempo debido a la variación de

consumo poblacional.

La segunda variable, corresponde a la suma de los tres términos en la ecuación de

trabajo – energía, también denominada la ecuación de Bernoulli (Larock, Jeppson &

Watters, 2000):

[3]

Donde

se define como la carga de velocidad,

la carga piezométrica y la posición

del punto respecto a un punto de referencia.

A partir de ésta ecuación se puede estimar la disposición del transporte del fluido a lo

largo de la red hidráulica.

Con estas dos variables se definen las ecuaciones [1] y [2]. Para una red hidráulica de

nodos se tiene entonces incógnitas referentes a las energías para todo el sistema y

incógnitas referentes a los caudales de las tuberías, siendo el número total de

tuberías. Para la solución simultánea del sistema, es necesario entonces emplear un

algoritmo para la solución matricial de todas las ecuaciones planteadas a partir de

éstas dos variables.

SISTEMA DE - ECUACIONES

Como ya se había indicado previamente, una de las variables que rige el

comportamiento del sistema es el caudal. En las redes hidráulicas, el análisis de ésta

variable se fundamenta en la continuidad de los principios de trabajo y energía

(Larock, Jeppson & Watters, 2000).

Page 25: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

26

[4]

Donde,

∑ Suma de las descargas de cada una de las tuberías al nodo

Caudal de demanda en el nodo

Para que la continuidad se conserve, se debe satisfacer que el volumen de descarga

debe ser igual a la suma de caudales que llegan al nodo, a diferencia de la ecuación [1]

en donde la diferencia de estos caudales se relaciona con el volumen almacenado.

El número total de – Ecuaciones será igual al número total de elementos en la red

hidráulica.

SISTEMA DE - ECUACIONES

Una ecuación de energía es escrita en cada nodo, o en , siendo el número

total de nodos si existe menos de dos fuentes de suministro. Cuando una red

hidráulica tiene menor número de nodos que de bucles alrededor de los cuales pueden

ser escritas las ecuaciones independientes ( ), donde es el número de

bucles; entonces existirá menor número de ecuaciones de energías que

de –ecuaciones de caudales.

Para calcular el número de bucles, se tiene la ecuación:

[5]

Si la red hidráulica contiene dos o más fuentes de energía,

[6]

Para hacer la configuración de la ecuación de energía para cada nodo, se tiene la

ecuación exponencial para la descarga de la forma:

( )

[ ]

[7]

Page 26: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

27

Donde,

Coeficiente de pérdidas de la tubería conectada entre el nodo y

Caudal de demanda en el nodo

Energía disponible en el nodo

Energía disponible en el nodo

2.2. ALGORITMO DEL GRADIENTE GLOBAL (GGA)

Una vez establecidas todas las propiedades del sistema se procede a realizar el cálculo

de las variables hidráulicas con el propósito de conocer la solución de la red. La

metodología utilizada para ésta solución se conoce como el Algoritmo del Gradiente

Global, el cual consiste en la formulación del Balance de Masas para cada nodo y las

ecuaciones de energía (Todini, 1979):

[9]

La ecuación [9], representa la diferencia de energías entre dos puntos y . El primer

sumando corresponde a las pérdidas locales generadas entre el punto y y el

segundo sumando es referente a las pérdidas locales generadas por los accesorios

contenidos en dicho tramo. Por lo tanto la ecuación [9] representa las pérdidas totales.

Si se deriva parcialmente la anterior ecuación respecto al caudal se tiene una

expresión para la aproximación, por expansión de Taylor, a los valores consecutivos

de convergencia así:

Donde,

∑{[ ]

}

∑{[ ]

}

[8]

(

)

(

)

[10] (Todini, 1988)

| |

| | [11]

Page 27: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

28

Al expresar el caudal , se tiene:

Así, al sumar todos los caudales que llegan a un nodo se tiene:

Ecuación general para cada nodo (GGA).

Donde,

Energía disponible en el nodo Energía disponible en el nodo

Caudal transportado desde el nodo al nodo

Caudal de demanda en el nodo Iteración Constante de proporcionalidad ( con la formulación de Darcy-Weisbach y para la formulación de Haze-Williams). Constante de pérdidas definido en la Ecuación [29].

La ecuación [15], se puede representar matricialmente mediante la ecuación:

|

|

| |

| |

[12]

(

) (

)

[13]

| |

| |

[14]

∑ (

)

[15]

[ ][ ] [ ][ ] [16]

Page 28: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

29

Donde [ ] es la matriz calculada mediante la ecuación[12] para todas las tuberías y

cuya composición representa la conexión entre todos los nodos, el vector [ ]

representa las incógnitas del sistema correspondiente a las energías para cada nodo, la

matriz [ ] corresponde a la matriz de de fijos correspondientes a aquellas

tuberías que interconectan tanques o embalses, el vector [ ] corresponde a las

energías de los embalses o los tanques y el vector a las constantes de todo el

sistema correspondientes a las operaciones entre los caudales de demanda de los

nodos y con los valores de para la tubería que conecta dichos nodos.

Éste es el esquema que ha sido adoptado por los diferentes programas para la

modelación y simulación en el período extendido utilizando un esquema Euler explícito

para las energías de los sistemas de almacenamiento. Éste esquema es usado para

solucionar las ecuaciones diferenciales ordinarias del sistema.

Ecuación Esquema implícito - explícito de Euler.

2.2.1. EJEMPLO SIMBÓLICO DE APLICACIÓN DEL GGA

Para mostrar el esquema Explícito mostrado previamente, se presenta a continuación

un modelo sintético configurado de la siguiente forma:

Figura 2 Tipología de la red hidráulica

[∑ ]

[∑ ]

2

H8f

1

5

4

3

H7f

6

Page 29: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

30

Para el desarrollo de la red hidráulica es necesario suponer una dirección de flujo para

cada tubería y así empezar a definir las matrices para la primera iteración.

A partir de la ecuación [15], se tiene para cada nodo que:

NODO 1

[ (

) ] [

(

) ]

NODO 2

[ (

) ] [

(

) ]

[ (

) ]

NODO 3

[ (

) ] [ (

) ]

[ (

) ]

NODO 4

[ (

) ] [

(

) ]

[ (

) ]

NODO 5

[ (

) ] [ (

) ]

[ (

) ]

NODO 6

[ (

) ] [ (

) ]

Para cada ecuación, se agrupan los términos constantes con el propósito de obtener

los valores del vector .

(

)

(

)

Page 30: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

31

(

)

(

)

(

)

(

)

Nótese que ésta agrupación deja para cada ecuación los valores de y , los

cuales se pueden organizar matricialmente de la siguiente forma:

Ecuación matricial de la red hidráulica. Ecuación [17]

Se procede a resolver la ecuación matricial para obtener los de cada nodo.

Con estas energías, se calculan los caudales respectivos de cada tubería mediante la

ecuación [15].Posteriormente se procede a realizar una nueva iteración siguiendo el

procedimiento descrito previamente; la diferencia radica en que para ésta iteración se

calcularán los con la ecuación [12], en dónde se utilizarán los caudales

previamente calculados.

Se continúa con el proceso iterativo hasta obtener una diferencia mínima entre las

energías de la iteración actual y la anterior. Cuando el sistema converge para éste

primer tiempo, se procede a realizar el cálculo del segundo tiempo tal y como se había

descrito previamente y así sucesivamente obteniendo para cada intervalo de tiempo el

valor de las energías y caudales del sistema.

Se ha podido presenciar para ésta metodología de cálculo que para los intervalos de

tiempo pequeños las oscilaciones marcadas en el tiempo de los sistemas de

almacenamiento simulan el comportamiento real, sin embargo, cuando se utilizan

[ ] [ ] [ ] [ ]

Page 31: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

32

intervalos de tiempo muy grandes el cálculo puede presentar falta de convergencia

aumentando la inestabilidad numérica del sistema y de esta forma genera en los

sistemas de almacenamiento cambios bastos entre los intervalos de cálculo. Éste

comportamiento se debe al esquema Explícito de Euler, cuyo funcionamiento utiliza

información del cálculo realizado en la iteración anterior. Cuando el intervalo es muy

grande, el algoritmo desconoce toda la información que se ha debido generar entre el

tiempo pasado y el tiempo de cálculo actual generando de esta forma la inestabilidad

en los sistemas de almacenamiento. Para la misma tipología de red hidráulica que se

ha venido trabajando, se ha desarrollo con el software EPANET la simulación de los

dispositivos de almacenamiento para diferentes intervalos de tiempo:

2.3. EXTENSIÓN DEL ALGORITMO DEL GRADIENTE GLOBAL (EGGA)

La extensión del Algoritmo del Gradiente Global introducida en el año 2011, consiste

en la adición del esquema Implícito – Explícito de Euler el cual permite solucionar el

cambio brusco en las oscilaciones marcadas en el tiempo. Ésta adición se hace

mediante el factor θ el cual adquiere valores mayores a cero o menores o iguales a

uno, discretizando en el tiempo el cálculo del sistema (Todini, 2011).

Ecuación general del algoritmo EGGA.

Donde,

Área dela sección transversal del sistema de almacenamiento Intervalo de tiempo

Disponibilidad de energía en el nodo de la iteración pasada en el tiempo t

Disponibilidad de energía en el nodo de la iteración actual en el tiempo t

A continuación se simplifica la ecuación [18] con el propósito de expresar la ecuación

matricialmente y así representar las ecuaciones de las redes hidráulicas con mayor

versatilidad.

[∑ ]

[∑ ]

[18]

∑[ (

) ]

[∑ ]

[19]

Page 32: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

33

De acuerdo a las propiedades de la sumatoria, se procede a separar los términos del

primer sumando de la ecuación [19]:

∑ (

) ∑ ∑

[∑ ]

[20]

Se agrupan todas las incógnitas (términos de la iteración + 1) al lado izquierdo de la ecuación:

Tamaños de las matrices y vectores:

[ ] (N° Nodos + N° Tanques) x (N° Nodos + N° Tanques)

[ ] (N° Nodos + N° Tanques)

[ ] (N° Nodos + N° Tanques) x (N° Nodos fijos)

[ ] (N° Nodos fijos)

(N° Nodos + N° Tanques)

(N° Nodos + N° Tanques)

∑ ∑ ∑

[∑ ]

[21]

[ ][ ] [ ][ ]

[22]

Page 33: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

34

Donde [ ] es la matriz calculada mediante la ecuación [12] para todas las tuberías y

cuya composición representa la conexión entre todos los nodos, el vector [ ]

representa las incógnitas del sistema correspondiente a las energías para cada nodo, la

matriz [ ] corresponde a la matriz de de fijos correspondientes a aquellas

tuberías que interconectan embalses, el vector [ ] corresponde a las energías de los

embalses y el vector a las constantes de todo el sistema correspondientes a las

operaciones entre los caudales de demanda de los nodos y con los valores de

para la tubería que conecta dichos nodos. A diferencia de la ecuación [17], se

agrega el vector el cual representa la inclusión del esquema Explícito – Implícito

de Euler con el cual se soluciona el problema de la inestabilidad numérica presentada

en los dispositivos de almacenamiento.

Ésta adición permite que en el cálculo prevalezca las energías obtenidas en el tiempo

anterior dependiendo del valor que adquiera θ. En el caso que éste factor adquiera el

valor de 1, el esquema Explícito – Implícito desaparecerá dejando sólo como objeto de

cálculo el GGA con su respectivo esquema Explícito de Euler.

2.3.1. EJEMPLO SIMBÓLICO DE APLICACIÓN DEL EGGA

Con el ejemplo propuesto en la sección 2.2.1., se realiza la adaptación al esquema

Explícito – Implícito de Euler. Para la inclusión de la nueva metodología es necesario

para cada sistema de almacenamiento adicionar el término

derivado de la

ecuación [21] y adicionalmente, en el vector , implementar el término

[∑ ]

también derivado de la ecuación [21]. Las ecuaciones para cada

nodo siguen siendo las mismas que las propuestas en la sección 2.2.1., sin embargo el

tamaño de la matriz aumenta en dos unidades ya que los tanques

ya no pertenecen más a la matriz de fijos ni el vector , debido a que su energía

se asume como no fija durante el cálculo iterativo de la nueva metodología. Por lo

tanto es necesario calcular las dos constantes y .

(

)

(

)

Page 34: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

35

A21+A5

1 -A21 0 0 -A51 0 0 0 H1

iter+1

C1 0

-A21 A32+A42

+A21 -A32 -A42 0 0 0 0 H2

iter+1 C2 0

0 -A32 A43+A32

+A73 -A43 0 0 -A73 0 H3

iter+1 C3 0

0 -A42 -A43 A43+A45

+A42 -A45 0 0 0 H4

iter+1 = C4 + 0

-A51 0 0 -A45 A45+A85

+A51 0 0 -A85 H5

iter+1 C5 0

0 0 0 0 0 A76+A68 -A76 -A68 H6iter+1

C6 0

0 0 -A73 0 0 -A76 A73+A76

0 H7iter+1

C7

(

) (

)

0 0 0 0 -A85 -A68 0 A68+A85

H8iter+1

C8

(

) (

)

Ecuación matricial de la red hidráulica. Ecuación [23]

Donde y

son las energías de los tanques.

Se procede a realizar la ecuación matricial obteniendo los valores de las energías y los

caudales con la ecuación [15] y se sigue con el mismo procedimiento descrito en la

sección 2.2.1.

Sólo para cada cambio de tiempo es necesario calcular de nuevo el vector con

los caudales obtenidos en el tiempo anterior, a diferencia de la matriz [ ], la cual sí

se debe de calcular en cada nueva iteración con las respectivas adiciones del EGGA.

2.4. LENGUAJE DE PROGRAMACIÓN

Para el desarrollo de éste proyecto, fue necesario establecer el lenguaje de

programación en el cual se iba a ejecutar todos los algoritmos correspondientes al

software DRÜCKE, incluyendo toda la parte gráfica de la aplicación. Ésta selección se

[ ] [ ]

Page 35: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

36

hizo con los siguientes criterios: programación versátil, velocidad óptima de

procesamiento de datos y modelación de la interfaz gráfica. Actualmente, el lenguaje

que más se ajusta a éstas condiciones es JAVA.

JAVA es un lenguaje de programación de alto nivel el cual permite el uso de comandos

a cambio de códigos numéricos encriptados. Cada instrucción corresponde a una serie

de algoritmos dentro del procesador del computador cuyo lenguaje consiste

enteramente en números que son analizados para concluir con la orden ejecutada por

el usuario (Gary et al, 2005).

JAVA fue diseñado y desarrollado en la década de los 90 por James Gosling para Sun

Microsystems (Oracle Corporation) y cuya sintaxis emplea como base, lenguajes como

C, C++ y Smalltalk. Contiene un modelo de objetos simples eliminando herramientas de

bajo nivel las cuales suelen introducir a errores y cuyo funcionamiento lo convierte en

uno de los lenguajes más utilizados y confiables de la industria (Gary et al, 2005).

Para el desarrollo del software DRÜCKE, se empleó la IDE NetBeans el cual implementa

dicho lenguaje de programación. A partir de éste software de desarrollo se elaboró la

interfaz gráfica de usuario y toda la implementación de la Extensión del Algoritmo del

Gradiente Global.

Para el desarrollo del presente proyecto, es necesario entender los siguientes

conceptos, los cuales son utilizados a lo largo del desarrollo de éste documento:

TIPOS DE DATOS

Los tipos de datos son conceptos fundamentales en todos los lenguajes de

programación, los cuales hacen referencia a los métodos disponibles de

almacenamiento de la información. Éstos permiten dimensionar un dato en memoria.

Básicamente existen dos tipos de datos en JAVA:

Los tipos simples son manejados directamente por el compilador y no necesitan el uso

de bibliotecas JAVA específicas. En los tipos compuestos, su uso puede necesitar clases

específicas de la biblioteca JAVA (Aumaille, 2000).

SIMPLES

Integer

Double

Float

Boolean

Chart

COMPUESTOS

String

Table

Nombres

de clases o

interfaces

Page 36: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

37

OBJETOS

Las instancias de las clases se denominan objetos. El diseño orientado a objetos radica

en averiguar cuáles son los objetos de un sistema, las clases en que se pueden agrupar

y las relaciones entre objetos que se puedan obtener (Durán, Gutiérrez, Pimentel,

2007). Éstos tienen propiedades que los hace únicos en todo el lenguaje de

programación lo que permite la fácil manipulación y procesamiento de la información.

Para el desarrollo del esquema de almacenamiento del software DRÜCKE, fue

necesario implementar los objetos en la programación realizada en tiempo real.

EVENTOS

Los eventos son aquellos sucesos o acciones generados por el usuario que proporciona

un flujo de programación definido por la ruta que el usuario desee. Estos son

generados desde el hardware (teclado y ratón) y su determinación genera el

funcionamiento de DRÜCKE.

Page 37: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

38

3. DISEÑO Y DESARROLLO DEL SOFTWARE (DRÜCKE)

3.1. DESARROLLO DEL MODELO DE DATOS

El modelo de datos se estructuró con base en los requerimientos del motor de cálculo.

La comunicación de datos entre los objetos, clases y métodos, fue establecida de tal

forma para que la información ingresada por el usuario permaneciera lista y disponible

una vez ejecutada la orden de realizar el cálculo. Se implementó un modelo de datos

por componentes: Cuando es ingresada en el Graphical User Interface (GUI) los datos

básicos de la red de distribución hidráulica, tales como las propiedades de los nodos,

dispositivos de almacenamiento, tipo de fluido, entre otras características de la red; se

ejecuta mediante programación en tiempo real el almacenamiento de la información,

proporcionando a la aplicación la versatilidad de generar un procesamiento rápido y

adecuado de la información.

Para el desarrollo inicial de DRÜCKE se establecieron los principales componentes del

software para el análisis y procesamiento de información, los cuales se describen a

continuación:

Transferencia de Información

Módulos principales de la aplicación

Esquema 1.Ciclo lógico del Modelo de Datos

USUARIO

3.1.1. ENTRADA DE DATOS

1. Lectura Directa

2. Datos importados

3.1.2. ALMACENAMIENTO DE INFORMACIÓN

1. En Objetos

2. En matrices condensadas

3.1.3. MOTOR DE CÁLCULO

1. Implementación del EGGA

3.1.4. SALIDA DE DATOS

1. Reporte DRÜCKE

2. Datos Exportados

1

2 3

4

Page 38: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

39

3.1.1. ENTRADA DE DATOS

La entrada de datos en el software, se puede realizar de diferentes formas con el

propósito de proporcionar la accesibilidad a los diferentes tamaños de las redes

hidráulicas. Es posible realizar el ingreso de datos de forma directa, es decir,

directamente sobre objetos del GUI para la inserción de objetos. Adicionalmente, si se

trabajara redes más complejas o con un tamaño mayor, DRÜCKE proporciona la

posibilidad de importar bases de datos y así evitar la labor dispendiosa de la inserción

de la información. La primera ruta de ingreso de datos, funciona mediante eventos

determinados por el usuario en donde se hace específico cada valor de la red.

Proceso cíclico. Se ejecuta en tiempo real la interacción entre el usuario y los

objetos del GUI tantas veces hasta lograr la configuración de la red. Finaliza el

ciclo cuando el usuario da la orden de continuar con el evento de transición.

Transición. Evento dónde se da la orden de iniciar la verificación y validación de

la base de datos.

Jerarquía de la GUI para la entrada de datos. Se realiza sin haberse ejecutada

la orden de cálculo

Flujo de Información. Se realiza una vez ejecutada la orden de cálculo

Módulo después de haberse ejecutado la aplicación

Módulo antes de haberse ejecutado la aplicación

Esquema 2. Modelo de datos – Lectura directa de Información

INTERFAZ GRÁFICA (GUI)

MENÚ

Selección de Objetos Java

(Interacción con los

JFrame, JToggleButton,

JButton y demás objetos)

MOTOR DE CÁLCULO

Base de Datos

Salida de Datos

Page 39: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

40

La parte derecha del esquema superior (GUI), corresponde al conjunto de clases y

métodos secundarios los cuales se realizan antes de oprimir el botón de ejecutar el

cálculo de la aplicación, mientras que la parte izquierda corresponde a las clases

principales de DRÜCKE y cuyo funcionamiento se origina una vez oprimido el botón de

ejecutar la aplicación. A diferencia de ésta ruta para el ingreso de información, la

segunda ruta consiste en la importación de datos, se hace mediante un módulo

especial GUI de importar, es decir: se suprime el proceso cíclico descrito previamente,

ejecutándose sólo una vez la orden para importar el archivo de texto.

Transición. Evento dónde se da la orden de iniciar la verificación y validación de

la base de datos.

Jerarquía de la GUI para la entrada de datos. Se realiza sin haberse ejecutada

la orden de cálculo

Flujo de Información. Se realiza una vez ejecutada la orden de cálculo

Módulo después de haberse ejecutado la aplicación

Módulo antes de haberse ejecutado la aplicación

Esquema 3. Modelo de datos – Lectura no directa de Información (Datos importados)

Aunque éstos dos esquemas están integrados en un sólo modelo de datos, se

diferencian en la transferencia de información. En el primer esquema, el usuario

interactúa con los objetos del GUI en un proceso cíclico, almacenando información

preliminar en tiempo real en espacios denominados “objetos”. Una vez generada la

orden de continuar con la transferencia de información, el proceso cíclico de

interacción entre el usuario y los objetos del GUI finaliza y toda la información

preliminar almacenada, es transferida a la clase Base de Datos; mientras que el

INTERFAZ GRÁFICA

MENÚ (Opción importar)

MOTOR DE CÁLCULO

Base de Datos

Salida de Datos Selección del Archivo de

texto

Page 40: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

41

segundo esquema, dónde se importan datos mediante un archivo de texto, funciona a

partir de un evento establecido por el usuario con el objetivo de transferir toda la

información leída a la clase Base_de_Datos, sin necesidad de realizar un

almacenamiento preliminar.

Con éste esquema de trabajo se procede a realizar la simulación hidráulica en el

período de tiempo extendido, generando un bucle en el motor de cálculo para obtener

la variación de energías y caudales del sistema. A partir de este Módulo generalizado,

se procede a continuación con la explicación detallada del almacenamiento de la

información.

3.1.2. ALMACENAMIENTO DE LA INFORMACIÓN

Cómo se había indicado previamente, el aplicativo guarda la información en tiempo

real antes de ser ejecutada la orden de cálculo. Dicho lugar de almacenamiento hace

referencia a las instancias de las clases denominados objetos.

Posterior a éste tipo de almacenamiento de información, DRÜCKE enviará todos los

datos a las matrices globales del programa. Éste esquema de almacenamiento

matricial es la estructura principal de la clase Base de Datos, ya que se genera a partir

de la composición de éstas las iteraciones y variaciones en el período extendido.

Esquema 4. Almacenamiento general de la información

Antes de seguir con la siguiente etapa se realiza una validación de la información

suministrada con el propósito de evitar errores en el procesamiento de la información

y de esta forma evitar el colapso de la aplicación. En esta etapa de almacenamiento, es

indispensable el proceso de validación ya que así se evita desperdiciar memoria en el

tiempo de ejecución con los posibles errores ocasionados, tales como la omisión de

3.1.2.2

3.1.2.1

INTERFAZ GRÁFICA

(GUI)

ALMACENAMIENTO

DE INFORMACIÓN

EN OBJETOS

ALMACENAMIENTO DE INFORMACIÓN EN

MATRICES CONDENSADAS

Matrices de Líneas Matrices de Nodos

Después de ejecutada la orden de cálculo

Antes de ejecutada la orden de cálculo

Page 41: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

42

información básica para la simulación en el período extendido, elementos hidráulicos

desconectados, tuberías mal insertadas, entre otros.

3.1.2.1ALMACENAMIENTO DE LA INFORMACIÓN EN OBJETOS

ALMACENAMIENTO DE INFO INTERFAZ GRÁFICA (GUI)

Objetos de Almacenamiento

Esquema 5. Llenado de objetos

Cuando se inserta el primer elemento en el área de dibujo del GUI, se genera en el

objeto una posición para almacenar la información de éste primer elemento. Si se

llegase a añadir mayor cantidad de elementos, éste objeto tiene la facultad de

aumentar su longitud hasta igualar la cantidad de elementos insertados.

Internamente, la aplicación clasificará cada elemento hidráulico insertado con un

identificador global y un identificador parcial, es decir; para los Tanques se utilizará el

entero “0” para denotar la existencia de un tanque, el entero “1” para los nodos y el

entero “2” para los embalses. Ésta clasificación se realizó con el propósito de discernir

cada elemento cuando es condensado en la matriz general y así poder operar lo más

rápido posible toda la red hidráulica (nótese que las tuberías no tienen identificador

global ya que son condensadas en una matriz diferente); i.e. si se llegase a insertar 5

nodos en la interfaz gráfica del usuario, la aplicación manejará la instrucción como 5

elementos de tipo 1 (identificador global) con identificador parcial 1, 2, 3, 4, 5. Nótese

que el orden de inserción de los elementos hidráulicos es el determinado por la

aplicación para nombrar cada elemento independiente del nombre asignado por el

usuario a cada elemento, esto con el propósito de manejar un orden interno y evitar la

confusión en el procesamiento de la información. Por otro lado, las tuberías serán

almacenadas de igual forma en un objeto cuya longitud será igual al número total de

tuberías insertadas.

1T

1N

2N

Se han insertado tres Nodos, dos

Tuberías y un Tanque en el tiempo

de Ejecución.

1

2

3

1

Vec

tor

No

do

s

Vec

tor

Tan

qu

es 3N

1

2

Vec

tor

Tub

ería

s

Page 42: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

43

3.1.2.2ALMACENAMIENTO DE LA INFORMACIÓN EN MATRICES CONDENSADAS

Todo este proceso de almacenamiento se lleva a cabo en el tiempo real de ejecución,

el cual concluirá cuando el usuario dé la instrucción de proseguir con el cálculo de la

tipología armada. Una vez confirmada ésta instrucción, los objetos serán almacenados

conjuntamente en matrices globales las cuales interactúan con los cálculos iterativos

de la metodología de la Extensión del GGA. No obstante, antes de realizar el llenado de

las matrices globales, se valida la información ingresada para evitar errores u

omisiones de cálculo en el software. Nodos, tanques y embalses desconectados,

tuberías mal insertadas, omisiones en los requisitos de configuración de cálculo, son

algunas de las causales de rechazo de la aplicación para continuar con la orden de

cálculo. Ésta validación de la información se hace mediante dos formas:

Validación instantánea en los campos de texto para el ingreso de

información. Consiste en restringir al usuario ingresar caracteres de cierto tipo

de dato en las diferentes cajas de texto; i.e. si se solicita el valor numérico del

valor de θ y el usuario ingresa un carácter de tipo String, entonces no se

permitirá continuar con la aplicación hasta ser modificado por un carácter de

tipo Integer o Double.

Validación de la información preliminar almacenada en los objetos. Ya

oprimido el botón para iniciar el cálculo, el aplicativo llama al método de

Validación_de_Objetos, el cual consiste en un bucle que recorre cada posición

de los objetos con el objetivo de encontrar una inconsistencia en el sistema;

i.e.si un nodo cualquiera no se encuentra relacionado en la matriz de tuberías

con otro nodo, éste estará aislado de la red hidráulica denominándose como un

nodo desconectado. Tal y cómo se pudo apreciar en la sección 2.2.1., la matriz

representa la relación entre todos los elementos de la red hidráulica. Si se

permitiera el ingreso de un nodo desconectado en la matriz, quedaría una fila

con un solo elemento en su diagonal. Al solucionar la ecuación matricial [10] se

generarían inconsistencias en los resultados ya que las características y

propiedades de éste nodo son independientes de la configuración de la red

hidráulica. Cuando sucede éste tipo de eventos, el método de Validación de

Objetos arroja una ventana emergente de error, deteniendo la ejecución del

programa.

El propósito de condensar la información en matrices consiste en organizar todos los

datos contenidos en los objetos de tal manera que sean fáciles de operar y así evitar el

llamado continuo de estos objetos disminuyendo de esta forma la complejidad de

cálculo, ya que al operar objetos por separado es necesario crear subrutinas para el

llamado de cada elemento de la composición vectorial.

Page 43: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

44

La información condensada se reunirá en cuatro matrices globales las cuales serán

operadas directamente por la nueva metodología del EGGA y cuya composición será

definida por el tipo de dato que almacenará. A continuación se muestra la estructura

de las matrices globales:

Para las tuberías:

MATRIZ LINEAS MATRIZ VARIABLES

ID Línea Nodo Nodo

L D Km A Rij Aij Bij Qij

Tipo de dato: Integer Tipo de dato: Double

Tamaño n x 3 Tamaño n x 10

Para los nodos:

MATRIZ FIJOS MATRIZ DEM

ID ID_EH ID_NODO A Qdij H Elevac. DB PD Max Min

Tipo de dato: Integer Tipo de dato: Double

Tamaño n x 3 Tamaño n x 8

Esquema 6. Modelo matricial de la información condensada.

Page 44: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

45

Para las matrices de las tuberías se tiene que,

ID Línea = Identificador determinado por la aplicación para la tubería ,

Nodo = Nodo de partida o inicial de la tubería ,

Nodo = Nodo de llegada o final de la tubería ,

L = Longitud de la tubería ,

D = Diámetro de la tubería ,

= Pérdidas locales de la tubería ,

Km = Pérdidas por accesorios de la tubería ,

A = Área de la tubería ,

Rij = Resistencia hidráulica de la tubería ,

Aij = Constante de cálculo

Bij = Constante de cálculo

Qij = Caudal de la tubería ,

A partir de la línea punteada se encuentran las variables del sistema, las cuales

tomarán un valor diferente para cada iteración. Éstas corresponden a las variables R,

, Aij, Bijy Qij cuya dependencia se origina a partir del cálculo del caudal.

L D Km A Rij Aij Bij Qij

La cabeza de la flecha [ ] indica cuales son las variables necesarias para calcular la variable de la cola de

la flecha.

Esquema 7. Configuración de la Matriz Variables – Dependencias de las variables

De acuerdo a las dependencias de cada variable, se debe definir el orden de cálculo de

cada columna de la matriz Variables teniendo en cuenta que los cuatro primeros

parámetros permanecen constantes en cada iteración (excluyendo el

valor del factor de fricción de Darcy)

2 3 4 5

ORDEN DE CÁLCULO

1

Page 45: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

46

El llenado de la matriz Variables se hace de la siguiente forma:

Cálculo del factor de fricción de Darcy Weisbach Para realizar el cálculo del factor de fricción de Darcy Weisbach, es necesario realizar un número finito de iteraciones de la siguiente manera:

1 2 3 4 5 6

*

** [ [

]]

| |

| |

* Suposición de velocidad. ** Suposición de factor de fricción.

Donde,

Número de iteración

Velocidad correspondiente a cada iteración

[24]

Numero de Reynolds

Diámetro de la tubería

Viscosidad cinemática del fluido

[ [

√ ]]

[25]

Factor de fricción

Coeficiente de pérdidas

[26]

Velocidad correspondiente a cada iteración

1

Page 46: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

47

Energía disponible para en nodo

Energía disponible para en nodo

Coeficiente de pérdidas por accesorios

PROCEDIMIENTO DE CÁLCULO DEL

Para poder determinar el valor del factor de fricción, es necesario suponer para la

primera iteración, un valor de velocidad (columna 1) con la que se procede a

calcular el número de Reynolds (columna 2). Al igual que la velocidad, se debe de

suponer un valor inicial para el de Darcy para poder calcular la columna 4 y 5. Se

procede a realizar el cálculo de la resistencia hidráulica y las dos constantes de

cálculo y para cada tubería. Ya terminada ésta iteración, se procede a la

siguiente haciendo el valor de y el calculado anteriormente

( respectivamente). Al finalizar cada iteración, se realiza la resta entre

y obtenidos en dicha iteración. Si la diferencia es menor a la tolerancia

establecida inicialmente, se da por terminado el proceso iterativo obteniendo el valor

final del factor de fricción de Darcy a partir de la columna 4 de la última iteración

(Larock, Jeppson & Watters, 2000).

Para esta versión de prueba, el f es dado.

Cálculo de la Resistencia hidráulica

[27]

Donde las dependencias son:

Constante de Darcy Weisbach

Longitud de la tubería

Diámetro de la tubería

Gravedad

Área de la tubería

Con la ecuación de Hazen-Williams

[28]

Donde las dependencias son:

22

Page 47: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

48

Longitud de la tubería

Constante de Hazen-Williams

Diámetro de la tubería

Cálculo de la constante

[29]

Donde las dependencias son:

Coeficiente de pérdidas por accesorios hidráulicos

Gravedad

Área de la tubería

Cálculo de la constante

| |

| |

[30]

Donde las dependencias son:

Caudal transportado desde el nodo al nodo

Constante de proporcionalidad ( con la formulación de Darcy-

Weisbach y para la formulación de Haze-Williams).

Cálculo de la constante

| |

| |

[31]

En estos dos últimos pasos, el caudal que se emplea, corresponde a los caudales

supuestos para la primera iteración y los caudales calculados en las siguientes

iteraciones tal y como se muestra en el Esquema general del funcionamiento del Motor

de Cálculo de DRÜCKE.

3

44

5

Page 48: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

49

A pesar de que los primeros cinco datos son fijos (excepto el factor de fricción de Darcy

durante la ejecución del programa, no pueden ser almacenados en la matriz de Fijos ya

que éstos tienen un tipo de dato Double diferente al de la matriz Fijos (Integer).

Adicionalmente, ésta información hace referencia a una tubería o la información

existente entre dos nodos.

Para las matrices de los nodos se tiene que,

ID = Identificador determinado por la aplicación para el nodo .

ID_EH = Identificador del tipo de elemento hidráulico (0 ó 1 ó 2)

A = Área para el caso de tanques.

Qdij = Caudal de demanda para el nodo .

H = Energía disponible para el caso de tanques y embalses.

Elevac. = Elevación para el nodo .

DB = Demanda Base

PD = Patrón de demanda

Max = Nivel máximo que puede alcanzar un tanque

Min = Nivel mínimo que puede alcanzar un tanque

Estas dos matrices de los nodos, a diferencia de la Matriz Variables, se caracterizan por

permanecer constante en todo el tiempo de ejecución de la aplicación. Si el usuario

desea modificar la configuración o tipología de la red, es necesario entonces realizar la

instrucción de edición en el software. En ésta instrucción, la aplicación retorna al

primer modelo de llenado vectorial de objetos donde se modifican directamente los

componentes de los mismos para proceder con la modificación de la matriz Fijos.

3.1.3. MOTOR DE CÁLCULO

Una vez terminado el proceso de almacenamiento de las matrices globales, DRÜCKE

comienza el procesamiento de la información secuencialmente dentro de un bucle

general el cual marca el cambio de cada intervalo de tiempo y busca la

convergencia del sistema. En el inicio del bucle, el software calculará los parámetros

iniciales de la matriz Variables partiendo de unos caudales supuestos para la primera

iteración. Nótese que estos caudales deben de ser ajustados en el primer tiempo con

el Método del Gradiente Global, una vez obtenidos todos los caudales con ésta

metodología, se procede a realizar el cálculo iterativo con el EGGA. Posterior al llenado

de la matriz Variables, se inicializa la matriz Aij con el esquema propuesto en la sección

2.2.1 calculando simultáneamente el vector de constantes, el vector de energías fijas y

la matriz Aif.

Page 49: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

50

Cada valor de caudal adoptado por las tuberías es aproximado al valor de convergencia

conforme se realizan las iteraciones; cuando el error de tolerancia es menor al

establecido por el usuario entre la iteración actual y la anterior, se procede a calcular

el siguiente tiempo para el cual la variación de energías y caudales será diferente.

Después de haber inicializado todas las columnas de la matriz Variables, se procede a

realizar el cálculo de las nuevas energías y caudales con el Método del Gradiente

Conjugado, donde se podrá obtener la solución a la ecuación matricial arrojando como

resultado el vector de energías para cada elemento hidráulico. Ya obtenido éste vector

se procede con el cálculo de los caudales respectivos.

Para llevar a cabo todo el proceso descrito previamente, es necesario que el usuario

genere el evento lógico para el cual el software cambia su disposición de

funcionamiento; éste evento se refleja con oprimir el botón de cálculo. Una vez

realizada ésta orden, el software empieza a realizar los cálculos iterativos con

parámetros iniciales ingresados por el usuario o bien las establecidas dentro de la

aplicación por defecto y cuya finalización se hace mediante un condicional de tiempo,

es decir: si la sumatoria del número de intervalos de tiempo calculados supera el total

del tiempo establecido por el usuario, el bucle finalizará y el programa reportará los

resultados obtenidos.

Page 50: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

51

Solución de la ecuación matricial

[ ] [ ]

INICIO DEL BUCLE GLOBAL {

Inicio del Bucle 2 {

} Fin del Bucle 2

Inicio del Bucle 3 {

} Fin del Bucle 3

} FIN DEL BUCLE GLOBAL

Esquema 8. Funcionamiento general del Motor de Cálculo de DRÜCKE

Método del Gradiente Conjugado

MÓDULO 2

En ésta etapa, el software extrae la

información calculada previamente

de los Aij, Bij con sus respectivos ID

con el propósito de hacer el llenado

de la ecuación matricial. Una vez

finalizado el proceso de llenado de la

ecuación matricial, se operan las

constantes para obtener el vector

[b]. En el primer tiempo de cálculo se

omite el término “[ext]” quedando

por defecto el Método del Gradiente

Global. Para los siguientes tiempos,

la constante “[ext]”hará presencia y

por ende la nueva metodología de

cálculo se aplicará.

MÓDULO 1

Inicialmente, con los caudales

determinados en el tiempo anterior

se calculan todas columnas de la

Matriz Variables. Cuando inicia el

motor de cálculo, se supone un valor

de caudales.

[ ][ ] [ ][ ] Ec. [22]

La anterior ecuación se puede expresar como:

MÓDULO 3

Finalmente, mediante el Método del

Gradiente Conjugado se calcula con

un número finito de iteraciones el

valor del vector [X] el cual

corresponde a las Energías del

sistema. Con éste vector de Energías

se procede a realizar el cálculo de los

caudales con la ecuación [15] los

cuales serán ingresados en la matriz

Variables al inicio del Bucle,

iniciando de esta forma una nueva

iteración.

Donde,

[ ]

[ ]

[ ][ ]

A partir de la solución matricial, se

obtienen los caudales con la ecuación [15]

ECUACIÓN MATRICIAL

Page 51: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

52

Para llevar a cabo el primer módulo del motor de cálculo, es necesario establecer el

orden con el que se llena la matriz Variables. Como se había definido en la sección

3.1.3.2. el orden de cálculo se rige por las dependencias de las variables.

Mediante éste esquema se realiza el cálculo de las variables que comprenden la red

hidráulica. Conforme se encuentra una solución para cada tiempo, se almacena en la

matriz de resultados todos los valores pertinentes. Ya finalizado el tiempo de cálculo,

se reportará mediante tablas y gráficas los resultados almacenados en dicha matriz.

3.1.3.1 IMPLEMENTACIÓN DEL ALGORITMO EGG

Para comprender la implementación del algoritmo EGG, es necesario disgregar el

segundo módulo dónde se fundamenta la estructura del algoritmo.

Se adiciona entonces en el algoritmo la metodología del esquema Implícito – Explícito

de Euler después de haber calculado para el primer tiempo las variables con el GGA. La

estructuración e implementación del algoritmo EGG se hace tal y cómo se explicó en la

sección 2.2 y su programación se realizó mediante el siguiente esquema:

MATRIZ LINEAS MATRIZ FIJOS

ID Línea Nodo Nodo ID ID_EH ID_NODO

Tipo de dato: Integer Tipo de dato: Integer

Tamaño n x 3 Tamaño n x 3

Esquema 9. Recorrido matricial (Matriz Variables)

La Matriz Líneas es recorrida

secuencialmente consultando

para cada Nodo y Nodo que

identificador global tiene, es

decir, si éste corresponde a un

Tanque (ID=0), un nodo (ID=1)

o un embalse (ID=2). Para

realizar ésta comprobación es

necesario ir a la Matriz Fijos y

con el ID del nodo encontrar

qué tipo de elemento está

uniendo la tubería.

Page 52: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

53

Cuando se ha determinado que tipo de elemento corresponde el Nodo y el Nodo , se

procede a realizar el llenado de la ecuación matricial con base en los siguientes

criterios:

Si el Nodo es un Tanque, se deberá calcular para éste elemento el operador

derivado de la ecuación [21] y adicionarlo en la matriz Aij en la posición

, donde A es el área del tanque, es el parámetro del esquema Implícito -

Explícito del algoritmo EGG y es el intervalo de tiempo. Adicionalmente,

para la posición del vector [ext] es necesario plantear la ecuación:

[∑ ] derivado de la ecuación [21] para dicho Nodo . De igual

forma, aplica para el nodo .Para esta metodología, a diferencia del GGA, la

matriz Aij adopta un mayor tamaño igual al número de nodos más el número de

tanques.

Si el Nodo es un embalse, el Aij para ésta tubería deberá ir en la matriz Aif y Aij

Nótese que los mismos identificadores del Nodo y el Nodo indican en que posición

de la matriz Aij deben ir (Ver sección 2.2.1.).Cuando el bucle para recorrer y comparar

toda la Matriz Líneas finaliza, la matriz Aij queda planteada con el método Implícito –

Explícito del GGA. Se opera posteriormente con el Método del Gradiente Conjugado y

se obtiene la solución tal y cómo se describe en secciones anteriores.

La adición del parámetro en el esquema antiguo del Método del Gradiente Global, se

implementa en DRÜCKE cuando se calcula la ecuación matricial en la operación de la

constante . Éste es el equivalente al operador antes mencionado [ext] y cuyo

contenido se pudo apreciar en la sección 2.2.1. De esta forma es implementado el

algoritmo EGG.

3.1.4. SALIDA DE DATOS

Cuando ya se ha terminado todo el proceso de cálculo, el usuario puede visualizar los

resultados de las energías y caudales para los diferentes nodos, tuberías y sistemas de

almacenamiento mediante tablas o gráficas, o bien exportarlos a otra fuente para su

manipulación con tan sólo accionar un botón para ejecutar dicho evento. Estos

resultados han sido recopilados en matrices; cuando en el proceso de cálculo se

encuentra la convergencia para cada tiempo del sistema, se llena una posición

determinada de la matriz de forma secuencial con el respectivo resultado. Cada nodo

tiene una columna de la matriz designada para el almacenamiento de la información;

las filas de dicha matriz corresponden a los diferentes tiempos, es decir, si se ha

ingresado para el cálculo un intervalo de una hora y se quiere simular el

comportamiento durante un día, entonces la matriz tendrá una longitud de 24 filas.

Page 53: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

54

Existe dos matrices generales de resultados: la primera que contiene los resultados de

las energías para cada nodo y la segunda que contiene los valores de los caudales de

cada línea. De ésta última es posible derivar los resultados de las velocidades para cada

tubería mediante la ecuación:

[33]

Donde es la velocidad de la tubería que une los nodos y , es el caudal de la

tubería y el área de la sección transversal de la tubería.

Para que el usuario pueda visualizar los resultados, es necesaria la interacción con los

objetos del GUI. En el software DRÜCKE es posible visualizar varias gráficas de energías

en una sola gráfica con el fin de poder discernir las magnitudes para los diferentes

elementos hidráulicos en varios tiempos.

3.2. METODOLOGÍA PARA LA SOLUCIÓN DE SISTEMAS LINEALES

Como se afirmó en la sección anterior, para llevar a cabo el cálculo del EGG es

necesario realizar en cada iteración la solución al sistema lineal establecido por la

configuración de la red hidráulica. En la parte preliminar de la investigación para el

desarrollo de DRÜCKE, fue necesario conocer el funcionamiento de los modelos de

análisis numéricos existentes para la solución matricial de sistemas lineales, evaluando

para cada método la velocidad de procesamiento y complejidad de cálculo para poder

ser implementada en el software DRÜCKE. El Método de Gauss Jordan, el Método de la

Factorización de Cholesky y por último el Método del Gradiente Conjugado, el cual se

puede usar ya que la matriz es simétrica y definida positiva. Estos fueron los

esquemas analizados para evaluar cuál de ellos se adaptaba a las necesidades de las

redes hidráulicas que serán introducidas en el software.

Para la solución de las redes de distribución, es necesario plantear el sistema de

ecuaciones que rigen el comportamiento hidráulico del sistema, las cuales están

fundamentadas en las leyes de la conservación de la energía. Una vez planteado el

sistema de ecuaciones, se puede representar matricialmente todo el conjunto de

ecuaciones mediante la ecuación:

[32]

Donde es la matriz de tamaño cuyos valores representan las propiedades de

las tuberías y las relaciones de cada nodo dentro del conjunto total de la red de

distribución, es decir, la relación existente entre el nodo y el nodo ; es el vector

con longitud de energías desconocidas de cada nodo de la red (vector solución) y

Page 54: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

55

es el vector constante determinado a partir de las demandas y cabezas hidráulicas

constantes conocidas, también con longitud .

3.2.1. ALMACENAMIENTO DE LA MATRIZ Aij

Uno de los problemas principales para la solución de sistemas lineales, es la forma de

almacenamiento de la información, ya que en sistemas densos la matriz adquiere

un tamaño suficiente para que el cálculo del método de análisis numérico se torne

lento y dispendioso (George, Liu & Ng, 1994). Por tal razón, adicional al método

elegido, el esquema determinado para el almacenamiento de la información aportará

a determinar cuán rápido es la solución de la ecuación lineal. Inicialmente, se empleó

la metodología de Gauss Jordan con un sistema de almacenamiento basado en la

reducción de ceros. Éste sistema de reducción de ceros, consiste en establecer una

nueva matriz sólo con aquellas posiciones diferentes a cero, ya que éstas son las únicas

relevantes para el cálculo numérico. A partir de la figura 1, podemos obtener la matriz

[ ].

A11 -A12 0 0 -A15 0

-A21 A22 -A23 -A42 0 0

= 0 -A32 A33 -A34 0 0

0 -A42 -A43 A44 -A45 0

-A51 0 0 -A45 A55 -A56

0 0 0 0 -A65 A66

Esquema 10. Almacenamiento convencional de la matriz Aij.

Como la matriz es simétrica, si se almacena sólo la mitad de ésta se podrá conocer

toda la información del sistema; se procede entonces a suprimir las posiciones nulas y

la mitad de la matriz obteniendo:

A11 -A12 -A15

A22 -A23 -A42

= A33 -A34 0

A44 -A45 0

A55 -A56 0

A66 0 0

Esquema 11.Reducción matricial.

Aij = Aji

Page 55: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

56

Como se puede apreciar, la diagonal de la matriz adopta la posición de la primera

columna y las posiciones no nulas quedan adyacentes a ésta columna. La dimensión de

ésta matriz es de , donde es el número total de nodos en la metodología del

GGA, y en el EGGA es la suma del número total de nodos y tanques. Para ambas

metodologías, es la suma de tuberías que convergen al nodo con mayor

conectividad. Paralelamente, se debe de crear una matriz de identificadores para

determinar la ubicación de cada valor de dentro de la matriz global. Éste método

de almacenamiento fue probado con los tres métodos mencionados anteriormente

para la solución de la ecuación lineal con una red real de tamaño 16.798 nodos, es

decir, una matriz de 16.798 x 16.798 correspondiente al sector 11 de la red hidráulica

de Bogotá D.C. con el propósito de poder discernir la velocidad de cálculo para cada

método.

Existen otras formas de almacenamiento para las matrices dispersas en dónde ya no se

almacena la información en matrices sino en vectores. El Software EPANET usa como

referencia estos esquemas de almacenamiento, en dónde se realiza como en el

método anterior la supresión de las posiciones iguales a cero y se almacena toda la

información relevante en arreglos. Los dos métodos más conocidos expuestos por la

literatura corresponden al Esquema Comprimido y al Esquema No

Comprimido(George, Liu & Ng, 1994). Éste primero consiste en almacenar la diagonal

en un vector DIAG, los elementos diferentes a cero en otro vector D_CERO y

adicionalmente, existe otro vector identificando la posición en donde se genera el

cambio de fila en el vector ID_C, es decir:

A11 -A12 0 0 -A15 0

A22 -A23 -A42 0 0

=

A33 -A34 0 0

A44 -A45 0

Simétrica A55 -A56

A66

Page 56: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

57

DIAG

D_CERO

ID_C

Esquema 12.Modelo de almacenamiento reducido

Con éste esquema de almacenamiento, se genera un aumento en la velocidad de

procesamiento en el desarrollo de la solución del sistema lineal, ya que el algoritmo

del método empleado recorrerá sólo un vector y de esta forma evitará tener que

perder memoria recorriendo filas y columnas en las matrices.

La metodología usada por el software DRÜCKE para la solución de sistemas lineales,

corresponde al Método del Gradiente Conjugado, ya que proporciona la respuesta más

rápida en la solución de la ecuación matricial compuesta por una matriz [A] simétrica y

definida positiva (O´Connor, 1997).

El Método del Gradiente Conjugado por una parte evita el cálculo y el almacenamiento

de la información requerida en un método de Newton de Gradiente y por otra intenta

mejorar la convergencia de los métodos de descenso por Gradiente (Hernández, 2006),

lo que permite que el procesamiento de la información sea lo suficientemente rápido

para que alcance en sistemas densos una respuesta rápida y segura.

El método del gradiente conjugado se fundamenta en el método del máximo ascenso –

descenso, el cual busca determinar los máximos o mínimos de una función cualquiera.

Para un punto determinado se calcula el gradiente de la función para dicho punto, el

cual definirá la dirección de cálculo por donde se empezará a buscar la solución de la

ecuación.

A11 A22 A33 A44 A55 A66

-A12 -A15 -A23 -A42 -A34 -A45 -A56

1 3 5 6 7

Page 57: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

58

Ecuación [34]. Composición de la ecuación del Método del Gradiente Conjugado.

Después de haber sido definida la dirección de cálculo, se determina una porción del

gradiente para éste punto mediante la constante , también denominado el paso de

cálculo.

Para el Método del Gradiente conjugado, se asume que la función es cuadrática a

diferencia del método de Newton donde la función se analiza linealmente.

El gradiente de una función cuadrática es una función lineal.

Ecuación [35]. Formulación del Paso de cálculo

El Método del Gradiente Conjugado acerca a un máximo de una función cuadrática a

través de pasos de gradiente.

[36]

Función cuadrática de un vector.

[37]

Punto Nuevo

Punto Anterior

Paso

Dirección

Page 58: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

59

[38]

Sistema lineal [39]

Donde,

Es el gradiente de la funcióncon tamaño Vector con los componentes de la función cuadrática con tamaño Vector de variables del sistema con tamaño

Sustituyendo la ecuación anterior para encontrar el máximo de la función, se obtiene

que:

[40]

[41]

[42]

[43]

Se deriva la anterior ecuación para obtener la expresión correspondiente al paso de

cálculo:

[44]

[45]

Page 59: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

60

IMPLEMENTACIÓN DEL ALGORTIMO DEL GRADIENTE CONJUGADO

En el motor de cálculo del software DRÜCKE se implementó el siguiente algoritmo:

Se calcula las condiciones iniciales mediante las ecuaciones [46] y [47], teniendo en cuenta que éste cálculo sólo se hace una vez en la ejecución del programa.

[46]

[47]

Inicio del Bucle {

A partir de la condición inicial, se procede a calcular el valor del paso para multiplicar por el respectivo gradiente.

[48]

[50]

[51]

[52]

[53]

Fin del Bucle }

Éste bucle finaliza cuando es muy pequeño. Para éste caso, en el tiempo de

ejecución de la aplicación se genera la instrucción de continuar con la siguiente

iteración del método del EGGA. En el software DRÜCKE, la multiplicación se hace

una sola vez para cada iteración con el propósito de optimizar la velocidad de

procesamiento.

3.3 IMPLEMENTACIÓN DE LA INTERFAZ GRÁFICA (GUI)

El desarrollo de la interfaz gráfica se hizo exclusivamente en una clase aparte con el

propósito de poder discernir los diferentes algoritmos contenidos dentro de DRÜKE.

Ésta clase se caracteriza por contener un gran número de métodos que trabajan en

conjunto para poder determinar el aspecto visual del software y adicional a esto la

funcionalidad interna para cada objeto.

Page 60: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

61

Para el desarrollo de la GUI es necesario planificar la estructura de manera tal que

todas las herramientas sean accesibles y fáciles de encontrar, adicionalmente los

iconos y pictogramas deben de dar una idea de la funcionalidad de éste, guiando al

usuario a resolver sus necesidades. En el Anexo [1] se podrá apreciar en detalle el

Manual del Usuario de DRÜCKE explicando cada herramienta de la aplicación.

Conforme a la prioridad para poder modelar y simular una red hidráulica se ha

diseñado la estructura informática de la GUI de la siguiente forma:

Esquema 13. Estructura básica de la Interfaz Gráfica de Usuario.

A partir de ésta estructura básica se comienzan a desglosar herramientas que

funcionan de manera conjunta para la transferencia de información entre las clases y

GUI

MENÚ PRINCIPAL

BARRA PRINCIPAL

INICIO CONFIGURACIÓN SIMULACIÓN RESULTADOS

VENTANA AUXILIAR

DE EDICIÓN

Archivo

Editar

Insertar

Herramientas

Ayuda

Edición Tanques

Edición Nodos

Edición Embalses

Archivo

Dibujo

Navegación Gráficas

Tablas

Elementos Hidráulicos

Parámetros del Fluido

Unidades

Período Extendido

Page 61: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

62

objetos y así mantener almacenada todos los datos pertinentes y listos para el

momento de la ejecución del cálculo.

3.3.1. DESARROLLO DE OBJETOS VISUALES

Todos los métodos utilizados para llevar a cabo la interfaz se encuentran contenidos

dentro de la clase “GUI” la cual contiene los diferentes eventos que pueden llegar a

presentarse dentro del tiempo de ejecución total de la aplicación. Entiéndase como

evento todo suceso o acción generado por el usuario que proporciona un flujo de

programación definido por la ruta que el usuario desee. Son eventos típicos el click

sobre un botón, el hacer doble click sobre algún objeto, pulsar una tecla, arrastrar un

ícono, mover el ratón, soltar el click entre otros, los cuales deben de ser programados

por aparte para lograr una interfaz funcional.

Cada uno de los eventos realizados por el usuario determinará la ruta de

programación; internamente el evento más importante para el cual todos los métodos

convergerán será la acción del botón de ejecución de cálculo. Independiente a la ruta

que el usuario haya elegido para llevar a cabo la inserción de la información, una vez

oprimido éste botón deberá de haberse registrado en todos los objetos la información

acumulada para continuar con el siguiente paso en el modelo de datos,

correspondiente a la validación de la información guardada y el funcionamiento del

motor de cálculo de DRÜCKE.

Para el desarrollo de la parte visual se usaron los siguientes objetos JAVA los cuales son

orientados a los posibles eventos registrados por el usuario:

JFrame:

Es el espacio de diseño destinado a la inserción de objetos, también en la jerga popular

se conoce como el lienzo de la interfaz gráfica. Sobre éste JFrame se insertan los

botones, menús, tablas desplegables, barras de desplazamiento y todo lo concerniente

al GUI para la modelación y simulación de redes hidráulicas.

Inserción de Objetos

ÁREA DE TRABAJO

Page 62: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

63

JMenuBar:

Consiste en la Barra de Menú, la cual contiene las funcionalidades básicas de una

aplicación convencional. Una vez oprimido uno de estos ítems se podrá desplegar un

número de opciones definidos por el programador.

JPanel:

Como su nombre lo indica, es un panel donde se pueden almacenar objetos. Su

funcionalidad es similar a la del JFrame, sin embargo, éste es utilizado para contener

objetos de manera estructurada y agrupada, es decir, si se contuviera una serie de

botones dentro de un JPanel, se pueden desactivar todos con sólo desactivar el JPanel

o si quisiera mover todos los botones al mismo tiempo, sólo basta con mover el JPanel.

En este panel se incluirán objetos y módulos específicos para la entrada de datos,

simulación y resultados.

JMenu Bar

JPanel

Page 63: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

64

JTabbedPane:

Un JTabbedPane, es un espacio destinado para acumular JPanel. Cuando se acumula

más de uno, éste tiene la propiedad de almacenarlos uno sobrepuesto del otro,

dejando a la vista pestañas para seleccionar el JPanel que el usuario desee. Estos

JPanel almacenados corresponden a la barra principal de DRÜCKE y conforman las

pestañas de Inicio – Configuración – Simulación y Resultados, de donde se administran

todas las características de la modelación hidráulica.

En el software desarrollado, se pueden apreciar dos JTabbedPane principales. El

primero corresponde a la barra global de herramientas donde se puede elegir todas las

opciones para la configuración de la tipología de red elegida por el usuario, y la

segunda corresponde a la ventana de edición rápida.

JButton:

Éste tipo de objeto es el más común en todas las interfaces gráficas, consiste en un

botón el cual al ser presionado se reintegra a su estado natural cuando se suelta el

click.

JButton

JTabbedPane

Page 64: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

65

JToggleButton:

A diferencia de un JButton, los JToggleButton tienen la cualidad de no retornar a su

estado natural cuando son oprimidos, por lo tanto cada vez que se realice el evento

click sobre uno de ellos, perdurará el estado oprimido del JToggleButton.

Como se puede apreciar en la imagen superior, el JToggleButton queda accionado

después de haber oprimido click sobre éste.

JButtonGroup:

A pesar de no ser visible en el tiempo de ejecución de la aplicación, los JButtonGroup

tienen la particularidad de agrupar objetos cuyas cualidades permiten que el objeto no

regrese a su estado natural como el JToggleButton o el JRadioButton. Cuando se le es

asignado éste tipo de botones al JButtonGroup, los objetos dejarán su estado de

oprimido una vez se oprima otra de su misma índole.

JLabel:

Es el objeto más sencillo de todos. No han sido programados los JLabel en DRÜCKE

frente a cualquier evento ya que son etiquetas que tienen la función de informar.

JToggleButton

JLabel

Page 65: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

66

JText Field:

También denominado campo de texto, son aquellos espacios destinados para que el

usuario ingrese textos pequeños mediante pulsaciones del teclado. Para grandes

textos se utiliza la herramienta JTextArea.

Para el desarrollo de la interfaz gráfica de DRÜCKE, se ha pensado en que ésta debe de

tener la versatilidad suficiente para que el usuario pueda llegar a una tarea específica

por diferentes rutas; i.e. si el usuario quiere editar algún elemento insertado, lo podrá

hacer mediante la ventana auxiliar ubicada en el costado derecho del JFrame o bien

podrá desplegar del JMenu Bar en la opción Editar el cuadro de diálogo para proceder

con la edición del elemento.

Después de haber realizado el bosquejo de la ubicación de los botones y la distribución

del espacio, se procede como parte final de la edición de la GUI, la inserción de las

imágenes en formato ”png” para cada botón, panel y demás objetos dibujados. Antes

de realizar ésta modificación se debe de borrar el contenido visual que trae por

defecto la IDE NetBeans, con el propósito de poder sobreponer la imagen con el diseño

de DRÜCKE.

JText Field

Área de Dibujo

Page 66: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

67

3.3.2. PROGRAMACIÓN DE EVENTOS

Form Mouse Pressed (Mouse)

Éste evento fue programado para el JFrame y cuyo objetivo fue realizar el

dibujo dinámico de objetos tales como los tanques, nodos y embalses. Se

genera cuando es oprimido el click dentro del área del JFrame (excepto las

áreas donde existen los JPanel o JTabbedPane); si alguno de los JToggleButton

correspondientes a la paleta de dibujo está activado, entonces al generarse

sobre el área libre del JFrame el click se insertará automáticamente el dibujo

correspondiente al JToggleButton activado.

JToggle Button – Jbutton Action Performed (Mouse)

Éste evento es el más básico. Se genera cuando es activado un objeto como el

JButton o el JToggleButton. La instrucción interna se genera cuando se oprime

el click sobre el objeto.

ComponentAdded (Container)

Éste evento fue programado en el Panel de configuración de los patrones de

consumo. Existe en ese panel una tabla (Container) con 24 celdas disponibles

para adicionar. Cuando se modifica alguna casilla se refleja inmediatamente en

la gráfica al costado derecho. Este dibujo repentino de la gráfica se ha realizado

mediante la programación de este evento. Adicionalmente, el evento

Component Removed fue programado de igual forma cuando se modifica

alguna casilla de las 24 existentes para generar el cambio instantáneo en la

gráfica de la diestra.

Page 67: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

68

4. APLICACIONES, RESULTADOS Y DISCUSIÓN

4.1. CASOS DE APLICACIÓN

El software descrito previamente, está facultado para resolver determinadas tipologías

de redes con la inclusión de sistemas de almacenamiento tales como tanques y

embalses. Los resultados obtenidos, fueron validos en una hoja de Excel (ANEXO No.3),

dónde se verifica que las ecuaciones de energía y masa se cumplan para cada nodo;

para llevar a cabo ésta validación hidráulica se debe cumplir la igualdad en la ecuación

número [32] , tal y cómo se evidencia en dicho anexo.

Los sistemas de regulación y adición de energía (como las válvulas y las bombas

hidráulicas respectivamente), no hacen parte de éste proyecto, ya que no es necesario

la inclusión de los mismos en las redes hidráulicas para poder mostrar el problema

descrito en la sección 1.

Para el análisis de cálculo del software DRÜCKE, se implementaron dos casos de redes

hidráulicas, cada una de ellas con las siguientes características:

CASO 1:

Corresponde a un modelo sintético simple con dos sistemas de almacenamiento, 5

nodos con demandas variables en el tiempo y una duración total de simulación de 10

horas. En cada cambio de hora se genera una disminución del 10% en el patrón de

consumo de los nodos hasta llegar a cero. Existe un sexto nodo el cual une las tuberías

que conectan los dos tanques y cuyo patrón de demanda es igual a cero. Éste es

necesario implementarlo en la modelación, ya que relaciona en la matriz , la

conexión entre los tanques uno y dos; de ésta forma el GGA y el EGGA adoptan en el

cálculo tres nuevas variables correspondientes a la energía en el nodo 6 y los caudales

de las dos tuberías adyacentes a éste.

Figura 3. Tipología de la red hidráulica – Aplicación

Page 68: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

69

El análisis conceptual de ésta red fue descrito en el capítulo 2 de explicación simbólica del GGA y EGGA.

Definición de los patrones de consumo CASO 1

CASO 2:

En éste caso, se implementó una red real correspondiente

a una región del Sector 11 de la ciudad de Bogotá D.C..

Éste es un sector industrial primordialmente, sin embargo

parte de su área es residencial, la cual fue seleccionada

para proceder con la modelación. Se ha acondicionado la

red, adicionando dos tanques auxiliares de

almacenamiento con el propósito de poder discernir la

inestabilidad numérica en el cálculo de período

extendido. Por lo tanto, ésta red hidráulica se compone

de tres tanques y 50 nodos con demanda variable en el

tiempo.

Page 69: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

70

4.2. RESULTADOS COMPARATIVOS CON EL ALGORITMO DEL GRADIENTE GLOBAL

Para cada caso descrito previamente, se realiza el paralelo del GGA y el EGGA,

utilizando como herramientas de comparación EPANET y DRÜCKE respectivamente.

CASO 1:

Con el software EPANET se hizo la modelación de la red hidráulica. Los resultados se

reflejan en el lado izquierdo mientras que los resultados de DRÜCKE se reflejan en el

lado derecho. Se hizo el cálculo para una duración total de 10 horas.

Gráfica 5-6.

Gráfica 7.

Gráfica 8.

-5

0

5

10

15

20

25

30

00 01 02 03 04 05 06 07 08 09 10

Ene

rgia

[m

]

Tiempo [Horas]

Tanque 1 GGA

Tanque 2 GGA

Tanque 1 EGGA

Tanque 2 EGGA

-100

-50

00

50

100

150

200

0 1 2 3 4 5 6 7 8 9 10

Cau

dal

[lp

s]

Tiempo [Horas]

Linea 1 Linea 2 Linea 3 Linea 4

Linea 5 Linea 6 Linea 7 Linea 8

Linea 9 Linea 10

-60

-40

-20

0

20

40

60

80

0 1 2 3 4 5 6 7 8 9 10

Cau

dal

[lp

s]

Tiempo [Horas]

Resultados obtenidos para el vaciado de los tanques con el GGA y el EGGA para un intervalo de tiempo de 1 minuto.

Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 1 minuto.

Resultados obtenidos de los caudales de los tanques con el EGGA para un intervalo de tiempo de 1 minuto.

Page 70: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

71

-100

-50

00

50

100

150

0

3,6

00

7,2

00

10

,80

0

14

,40

0

18

,00

0

21

,60

0

25

,20

0

28

,80

0

32

,40

0

36

,00

0

Cau

dal

[lp

s]

Tiempo [Segundos]

Línea 3 Línea 6 Línea 7

Línea 8 Línea 9 Línea 10

En la Gráfica 5, todavía no se evidencia ninguna inestabilidad numérica en los sistemas

de almacenamiento. Se puede apreciar que en la primera hora, los niveles de los

tanques se igualan y a partir de este momento, comienza una descarga en conjunto de

ambos tanques.

Gráfica 9-10.

Gráfica 11.

Gráfica 12.

-5

0

5

10

15

20

25

30

00 01 02 03 04 05 06 07 08 09 10

Ene

rgia

[m

]

Tiempo [Horas]

Tanque 1 GGA

Tanque 2 GGA

Tanque 1 EGGA

Tanque 2 EGGA

-40

-20

0

20

40

60

80

0 1 2 3 4 5 6 7 8 9 10

Cau

dal

[lp

s]

Tiempo [Horas]

Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 5 minutos.

Resultados obtenidos de los caudales con el EGGA para un intervalo de tiempo de 5 minutos.

Resultados obtenidos para el vaciado de los tanques con el GGA y el EGGA para un intervalo de tiempo de 5 minutos.

Page 71: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

72

Con un aumento de 5 minutos en el intervalo de tiempo, los niveles de los tanques

empiezan a sufrir cambios abruptos. Ya no se descargan conjuntamente y los caudales

no se estabilizan tal y como se veía en el intervalo de un minuto.

Gráfica 13.

Gráfica 14

Gráfica 15.

Gráfica 16

0

5

10

15

20

25

30

0 1 2 3 4 5 6 7 8 9 10

Ene

rgia

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

-5

0

5

10

15

20

25

30

0 1 2 3 4 5 6 7 8 9 10En

erg

ía [

m]

Tiempo [Horas] Tanque 1

Tanque 2

-200

-100

00

100

200

300

400

0 1 2 3 4 5 6 7 8 9 10

Cau

dal

[lp

s]

Tiempo [Horas]

Linea 1 Linea 2 Linea 3 Linea 4

Linea 5 Linea 6 Linea 7 Linea 8

Linea 9 Linea 10

-40

-20

0

20

40

60

80

0 2 4 6 8 10

Cau

dal

[lp

s]

Tiempo [Horas]

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 10 minutos.

Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 10 minutos.

Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 10 minutos.

Resultados obtenidos de los caudales con el EGGA para un intervalo de tiempo de 10 minutos.

Page 72: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

73

Gráfica 17.

Gráfica 18.

Gráfica 19.

Gráfica 20.

0

5

10

15

20

25

30

35

40

0 1 2 3 4 5 6 7 8 9 10

Ene

rgia

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

0

5

10

15

20

25

30

0 2 4 6 8 10

Ene

rgía

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

-200

-100

00

100

200

300

400

500

0 1 2 3 4 5 6 7 8 9 10

Cau

dal

[lp

s]

Tiempo [Horas]

Linea 1 Linea 2 Linea 3

Linea 4 Linea 5 Linea 6

Linea 7 Linea 8 Linea 9

Linea 10

-60

-40

-20

0

20

40

60

80

0 2 4 6 8 10

Cau

dal

[lp

s]

Tiempo [Horas]

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 15 minutos.

Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 15 minutos.

Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 15 minutos.

Resultados obtenidos de los caudales con el EGGA para un intervalo de tiempo de 15 minutos.

Page 73: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

74

Gráfica 21.

Gráfica 22.

Gráfica 23.

Gráfica 24.

Conforme aumentan los intervalos de tiempo, el GGA empieza a distorsionarse como

se puede apreciar en las gráficas anteriores. Ésta distorsión es dependiente de la

configuración de la red hidráulica y de la forma con la que se conectan los nodos y los

tanques.

0

5

10

15

20

25

30

0 1 2 3 4 5 6 7 8 9 10

Ene

rgia

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

-5

0

5

10

15

20

25

30

0 1 2 3 4 5 6 7 8 9 10

Ene

rgía

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

-400

-300

-200

-100

00

100

200

300

400

0 2 4 6 8 10

Cau

dal

[lp

s]

Tiempo [Horas]

Linea 1 Linea 2 Linea 3 Linea 4

Linea 5 Linea 6 Linea 7 Linea 8

Linea 9 Linea 10

-60

-40

-20

0

20

40

60

80

0 2 4 6 8 10

Cau

dal

[lp

s]

Tiempo [Horas]

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 30 minutos.

Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 30 minutos.

Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 30 minutos.

Resultados obtenidos de los caudales con el EGGA para un intervalo de tiempo de 30 minutos.

Page 74: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

75

Para un intervalo de tiempo de 1 minuto, se puede apreciar la variación cuadrática de

los niveles en los tanques; cómo estos dos tanques están conectados mediante una

tubería, los niveles de ambos se igualan en un determinado tiempo y a partir de éste

instante se realiza una descarga conjunta variando de igual forma la energía en los dos

sistemas de almacenamiento. Con éste esquema, ambos sistemas se pueden

simplificar teóricamente en un solo tanque, por lo tanto el caudal de la tubería que los

conecta (Línea 10) tenderá a ser cero para permitir la descarga en conjunto de ambos

tanques. Si éste caudal fuese diferente a cero, como en el intervalo entre 0 segundos y

3.600 segundos, existirá una transferencia de energía del tanque con mayor carga

hidráulica al tanque con menor carga, oscilando los niveles de ambos hasta llegar a la

misma cabeza piezométrica.

Para este modelo se ha realizado un análisis de la propagación del error conforme se

aumenta el intervalo de tiempo:

Gráfica 25.

Los errores analizados para determinar la Gráfica 25., se calcularon de la siguiente

forma:

Se calculan las energías para un intervalo de tiempo menor a un minuto. Éstas

serán la referencia para poder apreciar la propagación del error.

Se aumenta el intervalo de tiempo.

Para cada nuevo resultado se obtiene la magnitud de la diferencia con los

valores referencia.

0.00%

10.00%

20.00%

30.00%

40.00%

50.00%

60.00%

0 10 20 30 40 50 60

Ine

stab

ilid

ad

Intervalo de tiempo ∆t [Minutos] Tanque 1Tanque 2

Variación del error para diferentes intervalos de tiempo

Page 75: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

76

Se calcula el porcentaje de la diferencia respecto a los valores de referencia.

Se promedian los porcentajes para cada intervalo de tiempo y se procede a

graficar.

A diferencia del GGA, en el EGGA los cambios de los niveles de los tanques se hacen de

manera sutil, simulando con mayor precisión el comportamiento del vaciado y llenado

de los sistemas de almacenamiento. Para éste mismo ejemplo, se desarrolló en el

software DRÜCKE la simulación del comportamiento de la red hidráulica, obteniendo

los siguientes resultados:

Gráfica 26.Resultados obtenidos con el EGGA para un intervalo de tiempo de 1 minuto.

Gráfica 27. Resultados obtenidos con el EGGA para un intervalo de tiempo de 1 minuto.

Page 76: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

77

Como se puede apreciar, la inestabilidad numérica se ha solucionado mediante el

esquema Explícito – Implícito de Euler. Para los diferentes intervalos de tiempo, la

gráfica muestra el mismo comportamiento a diferencia de las gráficas iniciales

calculadas en EPANET. Nótese que en la primera hora, cuando los dos tanques

empiezan a nivelar sus energías, el tanque con menor cabeza piezométrica se empieza

a llenar hasta alcanzar el nivel del segundo. Éste comportamiento no se evidenció en

las gráficas calculadas con el GGA.

CAS0 2:

Gráfica 28

Gráfica 29.

Gráfica 30.

Gráfica 31.

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Ene

rgía

[m

]

Tiempo [Horas]

Tanque 1

Tanque 2

2,592

2,592

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Ene

rgía

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

2,591

2,592

2,592

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Ene

rgía

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

2,592

2,592

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Ene

rgía

[m

]

Tiempo [Horas] Tanque1

Tanque 2

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 1 minuto.

Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 1 minuto.

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 5 minutos.

Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 5 minutos.

Page 77: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

78

Gráfica 32.

Gráfica 33

Gráfica 34.

Gráfica 35

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 1011 1213 1415 1617 18 1920 2122 2324

Ene

rgía

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

2,592

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324

Ene

rgía

[m

]

Tiempo [Horas] Tanque 1

Tanque 2

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Ene

rgía

[m

]

Tiempo [Horas]

Tanque 1

Tanque 2

2,592

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324

Ene

rgía

[m

]

Tiempo [Horas]

Tanque 1

Tanque 2

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 10 minutos.

Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 10 minutos.

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 15 minutos.

Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 15 minutos.

Page 78: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

79

Gráfica 36.

Gráfica 37.

Gráfica 38.

Para éste segundo caso, la variación de los niveles de los tanques se evidencia acorde

con el patrón de demanda establecido en el ANEXO 3. La inestabilidad numérica se

evidencia a partir de la hora 16 en adelante, dónde los niveles de ambos tanques

interactúan directamente, haciendo que el nivel del tanque 2 realice cambios abruptos

en el resto del tiempo. Como se aprecia en la Gráfica 38., el comportamiento de la

evolución del error es similar al mostrado en la Gráfica 25., sin embargo la magnitud

de éste es bastante inferior, debido a la regulación presentada en el sistema.

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324

Ene

rgía

[m

]

Tiempo [Horas]

Tanque 1

Tanque 2

2,592

2,593

2,593

2,594

2,594

2,595

2,595

2,596

2,596

2,597

0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324

Ene

rgía

[m

]

Tiempo [Horas]

Tanque 1

Tanque 2

0.000%

0.002%

0.004%

0.006%

0.008%

0.010%

0.012%

0.014%

0.016%

0.018%

0.020%

0 5 10 15 20 25 30 35

Ine

stab

ilid

ad

Intervalo de tiempo Δt [Minutos]

Variación del error para diferentes intervalos de tiempo

Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 30 minutos.

Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 30 minutos.

Page 79: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

80

Gráfica 39.

Como se pudo evidenciar en la sección 3, el sistema de almacenamiento de la matriz

define la velocidad de cálculo de la aplicación. En la etapa inicial de este proyecto,

se hizo pruebas para evaluar la velocidad de procesamiento para diferentes sistemas

de almacenamiento, obteniendo los resultados de la Gráfica 39. Como se puede

apreciar, el sistema de Almacenamiento óptimo, cuya base consiste en el sistema

reducido (sección 3.2.1.), es 99,44% superior al sistema sin reducción, ya que

implementa en su cálculo la información relevante, evitando perder memoria en

cálculos nulos y repetitivos. A partir de ésta información, se produjo el motor de

cálculo del software DRÜCKE.

0.00

20.00

40.00

60.00

80.00

100.00

120.00

140.00

160.00

180.00

200.00

0 200 400 600 800 1000

Tie

mp

o d

e C

álcu

lo [

min

]

Tamaño de la Matriz de Cálculo [ m x m ]

Almacenamiento sin reducción

Almacenamiento sin ceros

Almacenamiento óptimo

Eficiencia computacional de cálculo a partir del sistema de almacenamiento.

Page 80: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

81

5. CONCLUSIONES Y RECOMENDACIONES

5.1. CONCLUSIONES

A partir de los resultados obtenidos en el Capítulo 4, se infiere que la Extensión

del Algoritmo del Gradiente Global, soluciona el problema de la inestabilidad

numérica en las redes hidráulicas en el período extendido. Cuando se calcula la

hidráulica para intervalos de tiempo muy grandes, el Esquema Explícito –

Implícito de Euler simula el comportamiento de los sistemas de

almacenamiento de forma sutil, generando confiabilidad y mayor eficiencia en

los esquemas de operación.

A partir de los casos analizados en éste trabajo, se puede apreciar que la

inestabilidad numérica no sólo depende del aumento en el intervalo de tiempo,

sino también de la tipología de la red hidráulica. Para el primer caso analizado,

se aumentan las inestabilidades numéricas para un mismo intervalo de tiempo,

cuando se conectan los dos tanques. Si la tubería que conecta ambos sistemas

de almacenamiento no funcionara dentro del sistema, la inestabilidad numérica

se reduciría considerablemente. Esto se debe a la interacción de energías

directa entre los dos volúmenes de agua; cuando se deja un tanque

independiente del otro, tiene la posibilidad de regularse a partir de la

configuración de los nodos hidráulicos, mientras que al conectarse con el

segundo tanque la interacción de las dos cargas piezométricas es directa; el

aumento de energía en un tanque se refleja de inmediato en el otro sistema,

por ende se genera un cambio brusco en las oscilaciones marcadas en el

tiempo con la metodología del GGA.

El software DRÜCKE, sirve para representar el funcionamiento de la Extensión

del Algoritmo del Gradiente Global e implementar la solución a las

inestabilidades numéricas. En éste aplicativo se permite la inserción y edición

de elementos hidráulicos y excluye elementos de control y adición de energías,

tales como válvulas y bombas hidráulicas. Tiene un alcance limitado en la

modelación con sistemas de éste tipo, sin embargo se puede utilizar para el

cálculo de grandes configuraciones hidráulicas, de acuerdo a la metodología de

implementada para la solución de sistemas lineales (Método del Gradiente

Conjugado).

Todos los sistemas hidráulicos tienen la característica de conformar una matriz

definida positiva y simétrica, de acuerdo a la conexión recíproca entre los

Page 81: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

82

nodos. El esquema utilizado para simplificar y reducir esta matriz, aumenta la

velocidad de procesamiento de la información aproximadamente en un 93%

generando mayor eficiencia en la aplicación.

A partir de la representación gráfica de la propagación del error para los dos

casos analizados, se puede inferir que el aumento en el intervalo de tiempo es

proporcional al error para ambos casos en el período inicial. A partir de los 10

minutos, se presenta un comportamiento asintótico, dónde el error tiende a

estabilizarse conforme se aumenta el intervalo de tiempo. En el segundo caso,

el error tiene una magnitud mucho menor al primer caso, debido a la

configuración de la red. La propagación del error en el GGA, es dependiente de

la tipología de la red: si los sistemas de almacenamiento se configuran

independiente uno de los otros, la propagación del error disminuye ya que la

interacción directa de energías de los tanques se hace mediante nodos que

regulan el vaciado a partir de los caudales de consumo.

5.2. RECOMENDACIONES

Se recomienda continuar con la programación de elementos de modelación

como son las válvulas y las bombas hidráulicas implementando la adición de

curvas de operación para los diferentes elementos de la red.

Complementar la programación orientada a objetos para la interacción del

usuario con las herramientas del GUI e implementar metodologías para la fácil

navegación dentro de la ventana de dibujo.

Incluir la modelación en estado de flujo no permanente (transitorios) tanto en

columna rígida y columna elástica, para simular condiciones extremas de

operación de golpe de ariete.

Page 82: DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA …

83

6. BIBLIOGRAFÍA

Aumaille, B. (1994). Java 2. Ediciones ENI 01, pp. 70-169

B.Shelly, G., Cashman, T. J., L.Starks, J., & L.Mick, M. (2006). Java Programming:

Comprehensive Concepts And Techniques. Ed. 3 pp. 11-29 Shelly Cashman Series.

Francisco, D., Francisco, G., & Ernesto, P. (2007). Programación orientada a objetos con

Java. Ed. 1 pp. 1-20 Thomson Ediciones.

George, A., Liu, J. & Ng, E. (1994). Computer Solution of Sparse Linear Systems.

Giustolisi, O. (2010). Water Distribution Network pressure-driven analysis usingEGGAO, en Journal of Water Resources Planning and Management, Vol 10.1061, pp. 2-40

Larock, B.E.,Jeppson, R.W.& Watters, G.Z. (2000). Hydraulics of Pipeline Systems.

López, L. H. (2006). Predicción y optimización de emisiones y consumo mediante redes

neuronales. Ed. 1, Universidad Politécnica de Valencia. Editorial Reverté.

O'Connor, J. L. (1997). Técnicas de cálculo para sistemas de ecuaciones, programación

lineal y programación entera. Ed. 2 Editorial Reverté.

Todini, E. (2011). Extending the global gradient algorithm to unsteady flow extended

period simulations of water distribution. Journal of Hydroinformatics Vol 13 No 2 pp

167–180 Dipartimento di Scienze della Terra e Geologico Ambientali, Universitá di

Bologna.

Todini, E. & Pilati, S. (1988) A gradient method for the solution of looped pipe networks.

In Computer Applications in Water Supply (ed. B. Coulbeck & C. H. Orr), Vol. 1, (System

analysis and simulation) pp. 1–20. John Wiley & Sons, London.

Wu, Z. Y. (2009). Extended Global-Gradient Algorithm for Pressure-Dependent Water

Distribution Analysis, en Journal of Water Resources Planning and Management ,

Vol 135, No 1, pp. 13-22.