Está en la página 1de 83

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

2
Bogotá D.C., Diciembre 03 de 2012

Ingeniera
MARIA PATRICIA LEÓN NEIRA
Directora Departamento de Ingeniería Civil
Universidad Pontificia Javeriana

Respetada Ingeniera:

Por medio de la presente pongo formalmente a su consideración el Trabajo de Grado


titulado “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.”, con el cual completo los requisitos necesarios para optar por el
título de Ingeniero Civil.

De esta forma quiero agradecer la constante guía y paciencia de mi asesor Ing. Héctor
William Clavijo Sanabria.

Cordialmente,

JONATHAN YEPES TAVERA


Móvil: 320 840 58 07
Yepes-j@javeriana.edu.co

3
A Lucía Tavera Suárez

4
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!

5
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
6
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

7
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

8
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

9
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

10
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

11
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

12
LISTA DE ANEXOS

ANEXO 1. Manual del Usuario

ANEXO 2. Software Ejecutable

ANEXO 3. Hojas de cálculo (Excel)

13
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.

14
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.

15
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.

16
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.

17
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


Figura 1
tanques conectados descargándose en el transcurso del
tiempo. Fuente: Todini, 2011.
Figura 1

Figura 1.

Figura 2
18
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:

30 60
40
25 20
0

Caudal [Lps]
20 -20
Energía [m]

-40
15 -60
-80
10
-100
5 -120
-140
0 -160
0 1 2 3 4 0 1 2 3 4

Tiempo [Horas] Tanque 1 Tiempo [Horas]


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

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

30 80
60
25 40
20
0
Energía [m]

20
Caudal [Lps]

-20
15 -40
-60
10 -80
-100
5 -120
-140
0 -160
0 1 2 3 4 0 1 2 3 4
Tanque 1
Tiempo [Horas]
Tiempo [Horas]
Tanque 2 Tubería 1 Tubería 2 Tubería 3

Gráfica 3. Resultados obtenidos para el vaciado de los Gráfica 4 Resultados obtenidos de los caudales con el GGA
tanques con el GGA para un intervalo de tiempo para un intervalo de tiempo de 15 minutos,
de 15 minutos, usando el software EPANET. usando el software EPANET.

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

19
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.

20
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

21
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.

22
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.

23
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

24
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).

25
∑ [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]

26
∑ {[ ] } ∑ {[ ] } [8]

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í:

( ) ( ) [10]
(Todini, 1988)

Donde,

| | | | [11]

27
| | [12]
| | | |

Al expresar el caudal , se tiene:

( ) ( ) [13]

[14]
| | | |

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

∑ ( ) [15]

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:

[ ][ ] [ ][ ] [16]

28
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:

6
H8f H7f

4
5
3

1
2

Figura 2 Tipología de la red hidráulica

29
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 .

( )

( )

30
( )

( )

( )

( )

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

31
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).

[∑ ] [∑ ] [18]

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.

∑[ ( ) ]
[19]

[∑ ]

32
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:

∑ ∑

∑ ∑ ∑ [∑ ] [21]

[ ][ ] [ ][ ] [22]

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)

33
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 .

( )

( )

34
A21+A5 iter+1 C1
-A21 0 0 -A51 0 0 0 H1 0
1

A32+A42 iter+1
-A21 -A32 -A42 0 0 0 0 H2 C2 0
+A21
A43+A32 iter+1
0 -A32 -A43 0 0 -A73 0 H3 C3 0
+A73
A43+A45 iter+1
0 -A42 -A43 -A45 0 0 0 H4 = C4 + 0
+A42

A45+A85 iter+1
-A51 0 0 -A45 0 0 -A85 H5 C5 0
+A51

iter+1
0 0 0 0 0 A76+A68 -A76 -A68 H6 C6 0

( )( )
A73+ iter+1
0 0 -A73 0 0 -A76 0 H7 C7
A76

( )( )
A68+ iter+1
0 0 0 0 -A85 -A68 0 H8 C8
A85

[ ] [ ]

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

35
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:

SIMPLES COMPUESTOS

 Integer  String
 Double  Table
 Float  Nombres
 Boolean de clases o
 Chart interfaces

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).
36
 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.

37
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:

USUARIO

3.1.4. SALIDA DE DATOS 3.1.1. ENTRADA DE DATOS

4 1
1. Reporte DRÜCKE 1. Lectura Directa
2. Datos Exportados 2. Datos importados

3.1.2. ALMACENAMIENTO DE
3.1.3. MOTOR DE CÁLCULO INFORMACIÓN

3 2
1. Implementación del EGGA 1. En Objetos
2. En matrices condensadas

Transferencia de Información

Módulos principales de la aplicación

Esquema 1.Ciclo lógico del Modelo de Datos

38
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.

INTERFAZ GRÁFICA (GUI)


MOTOR DE CÁLCULO

MENÚ
Base de Datos

Selección de Objetos Java


Salida de Datos (Interacción con los
JFrame, JToggleButton,
JButton y demás objetos)

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

39
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.

MOTOR DE CÁLCULO INTERFAZ GRÁFICA

Base de Datos MENÚ (Opción importar)

Selección del Archivo de


Salida de Datos 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

40
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.

Antes de ejecutada la orden de cálculo 3.1.2.2


ALMACENAMIENTO DE INFORMACIÓN EN
INTERFAZ GRÁFICA ALMACENAMIENTO MATRICES CONDENSADAS
(GUI) DE INFORMACIÓN
EN OBJETOS Matrices de Líneas Matrices de Nodos

3.1.2.1 Después de ejecutada la orden de cálculo

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

41
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
1T
2N
1 1 1
2 2
3
3N
Vector Tuberías

Vector Tanques

1N
Vector Nodos

Se han insertado tres Nodos, dos


Tuberías y un Tanque en el tiempo
de Ejecución.

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.

42
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.
43
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

Nodo
ID Línea 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.

44
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.

ORDEN DE CÁLCULO

1 2 3 4 5

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)

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

1 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

46
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.

2 Cálculo de la Resistencia hidráulica


2

[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:

47
Longitud de la tubería
Constante de Hazen-Williams
Diámetro de la tubería

3 Cálculo de la constante

[29]

Donde las dependencias son:

Coeficiente de pérdidas por accesorios hidráulicos


Gravedad
Área de la tubería

4 Cálculo de la constante
4
[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).

5 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.

48
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.

49
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.

50
INICIO DEL BUCLE GLOBAL {

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.

MÓDULO 2
Inicio del Bucle 2 {
En ésta etapa, el software extrae la
información calculada previamente
de los Aij, Bij con sus respectivos ID
ECUACIÓN MATRICIAL con el propósito de hacer el llenado
de la ecuación matricial. Una vez
[ ][ ] [ ][ ] Ec. [22] finalizado el proceso de llenado de la
ecuación matricial, se operan las
La anterior ecuación se puede expresar como: 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
Donde,
Global. Para los siguientes tiempos,
la constante “[ext]”hará presencia y
[ ][ ] por ende la nueva metodología de
[ ] [ ] cálculo se aplicará.

} Fin del Bucle 2


MÓDULO 3
Inicio del Bucle 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
Método del Gradiente Conjugado corresponde a las Energías del
Solución de la ecuación matricial
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
A partir de la solución matricial, se
Variables al inicio del Bucle,
obtienen los caudales con la ecuación [15]
iniciando de esta forma una nueva
iteración.

} Fin del Bucle 3

} FIN DEL BUCLE GLOBAL

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

51
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:

La Matriz Líneas es recorrida


MATRIZ LINEAS MATRIZ FIJOS
secuencialmente consultando
ID Línea Nodo Nodo para cada Nodo y Nodo que ID ID_EH ID_NODO
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á
Tipo de dato: Integer uniendo la tubería. Tipo de dato: Integer
Tamaño n x 3 Tamaño n x 3

Esquema 9. Recorrido matricial (Matriz Variables)

52
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.

53
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

54
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 Aij = Aji

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.


55
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

56
DIAG A11 A22 A33 A44 A55 A66

D_CERO -A12 -A15 -A23 -A42 -A34 -A45 -A56

ID_C 1 3 5 6 7

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.

57
Dirección

Paso

Punto Anterior
Punto Nuevo

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]

58
[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]

59
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.
60
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:

GUI

 Archivo  Herramientas
 Editar  Ayuda
MENÚ PRINCIPAL
 Insertar
 Archivo
 Dibujo
 Navegación BARRA PRINCIPAL
 Gráficas
 Tablas

INICIO CONFIGURACIÓN SIMULACIÓN RESULTADOS

VENTANA AUXILIAR Período Extendido


 Elementos Hidráulicos
DE EDICIÓN
 Parámetros del Fluido
 Unidades
 Edición Tanques
 Edición Nodos
 Edición Embalses

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

61
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.

ÁREA DE TRABAJO
Inserción de
Objetos

62
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.

JMenu Bar

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.

JPanel

63
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.

JTabbedPane

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

64
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.

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.

JLabel

65
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.

JText Field

Área de Dibujo

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.

66
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.

67
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


68
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.

69
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.

30
25 Tanque 1 GGA

Tanque 2 GGA
20
Tanque 1 EGGA
15
Energia [m]

Tanque 2 EGGA
10
5
0
-5
00 01 02 03 04 05 06 07 08 09 10

Tiempo [Horas]

Resultados obtenidos para el vaciado de los


Gráfica 5-6. tanques con el GGA y el EGGA para un intervalo de
tiempo de 1 minuto.

200 80

60
150
40
Caudal [lps]

100
Caudal [lps]

20
50
0
00 -20

-50 -40

-100 -60
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
Tiempo [Horas]
Tiempo [Horas]
Linea 1 Linea 2 Linea 3 Linea 4

Linea 5 Linea 6 Linea 7 Linea 8

Linea 9 Linea 10

Resultados obtenidos de los caudales de los


Gráfica 7. Resultados obtenidos de los caudales con el GGA Gráfica 8. tanques con el EGGA para un intervalo de
para un intervalo de tiempo de 1 minuto. tiempo de 1 minuto.

70
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.

30
Tanque 1 GGA
25
Tanque 2 GGA
20
Tanque 1 EGGA
Energia [m]

15
Tanque 2 EGGA
10

-5
00 01 02 03 04 05 06 07 08 09 10
Tiempo [Horas]

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.

150 80

100 60

40
Caudal [lps]

50
Caudal [lps]

20
00
0
-50
-20
-100
-40
0

10,800

14,400

18,000

21,600

25,200

28,800

32,400

36,000
3,600

7,200

0 1 2 3 4 5 6 7 8 9 10

Tiempo [Segundos] Tiempo [Horas]


Línea 3 Línea 6 Línea 7
Línea 8 Línea 9 Línea 10

Resultados obtenidos de los caudales con el GGA Resultados obtenidos de los caudales con el
Gráfica 11. Gráfica 12. EGGA para un intervalo de tiempo de 5
para un intervalo de tiempo de 5 minutos.
minutos.

71
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.

30 30

25
25

20
20

Energía [m]
15
Energia [m]

15
10

10
5

5 0

0 -5
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
Tanque 1 Tanque 1
Tiempo [Horas] Tiempo [Horas]
Tanque 2 Tanque 2

Gráfica 13. Resultados obtenidos para el vaciado de los Gráfica 14 Resultados obtenidos para el vaciado de los
tanques con el GGA para un intervalo de tiempo tanques con el EGGA para un intervalo de
de 10 minutos. tiempo de 10 minutos.

400 80

300 60

200 40
Caudal [lps]

100 20
Caudal [lps]

00 0

-100 -20

-200 -40
0 1 2 3 4 5 6 7 8 9 10 0 2 4 6 8 10
Tiempo [Horas] Tiempo [Horas]

Linea 1 Linea 2 Linea 3 Linea 4

Linea 5 Linea 6 Linea 7 Linea 8

Linea 9 Linea 10

Gráfica 15. Resultados obtenidos de los caudales con el GGA Gráfica 16 Resultados obtenidos de los caudales con el
para un intervalo de tiempo de 10 minutos. EGGA para un intervalo de tiempo de 10
minutos.

72
40 30

35
25
30
20

Energía [m]
25
Energia [m]

20 15

15 10
10
5
5
0
0
0 2 4 6 8 10
0 1 2 3 4 5 6 7 8 9 10
Tiempo [Horas]
Tiempo [Horas] Tanque 1
Tanque 1

Tanque 2 Tanque 2

Resultados obtenidos para el vaciado de los


Gráfica 17. Resultados obtenidos para el vaciado de los Gráfica 18.
tanques con el EGGA para un intervalo de
tanques con el GGA para un intervalo de tiempo
tiempo de 15 minutos.
de 15 minutos.

500 80

400 60

300 40
Caudal [lps]

200 20
Caudal [lps]

100
0
00
-20
-100
-40
-200
0 1 2 3 4 5 6 7 8 9 10 -60
0 2 4 6 8 10
Tiempo [Horas]
Tiempo [Horas]
Linea 1 Linea 2 Linea 3
Linea 4 Linea 5 Linea 6
Linea 7 Linea 8 Linea 9
Linea 10

Resultados obtenidos de los caudales con el GGA Gráfica 20. Resultados obtenidos de los caudales con el
Gráfica 19.
para un intervalo de tiempo de 15 minutos. EGGA para un intervalo de tiempo de 15
minutos.

73
30 30

25 25

20
20

Energía [m]
15
Energia [m]

15
10
10
5
5
0

0 -5
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10

Tiempo [Horas] Tanque 1 Tiempo [Horas]


Tanque 1
Tanque 2 Tanque 2

Gráfica 21. Resultados obtenidos para el vaciado de los Gráfica 22. Resultados obtenidos para el vaciado de los
tanques con el GGA para un intervalo de tiempo tanques con el EGGA para un intervalo de
de 30 minutos. tiempo de 30 minutos.

400 80

300 60
200
40
Caudal [lps]

Caudal [lps]

100
20
00
0
-100
-20
-200
-300 -40

-400 -60
0 2 4 6 8 10 0 2 4 6 8 10
Tiempo [Horas] Tiempo [Horas]

Linea 1 Linea 2 Linea 3 Linea 4

Linea 5 Linea 6 Linea 7 Linea 8

Linea 9 Linea 10

Gráfica 23. Resultados obtenidos de los caudales con el GGA Gráfica 24. Resultados obtenidos de los caudales con el
para un intervalo de tiempo de 30 minutos. EGGA para un intervalo de tiempo de 30
minutos.

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.

74
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:

60.00%

50.00%

40.00%
Inestabilidad

30.00%

20.00%

10.00%

0.00%
0 10 20 30 40 50 60
Tanque 1
Intervalo de tiempo ∆t [Minutos] Tanque 2

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


tiempo

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.

75
 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.

76
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:
2,597 2,597

2,596
2,596
2,596
Energía [m]

2,596
2,595
2,595
2,595

Energía [m]
2,595 2,594

2,594 2,594

2,593
2,594
2,593
2,593
2,592
2,593
2,592
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
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
Tiempo [Horas] Tiempo [Horas]
Tanque 1 Tanque 1
Tanque 2 Tanque 2

Gráfica 28 Resultados obtenidos para el vaciado de los Gráfica 29. Resultados obtenidos para el vaciado de los
tanques con el GGA para un intervalo de tiempo tanques con el EGGA para un intervalo de
de 1 minuto. tiempo de 1 minuto.

2,597 2,597
2,596 2,596
2,596
2,596
2,595
Energía [m]

2,595
2,595
Energía [m]

2,595
2,594

2,594 2,594

2,593 2,594

2,593 2,593
2,592
2,593
2,592
2,592
2,591
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 2,592
Tiempo [Horas] 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
Tanque 1
Tiempo [Horas] Tanque1
Tanque 2
Tanque 2

Gráfica 30. Resultados obtenidos para el vaciado de los Gráfica 31. Resultados obtenidos para el vaciado de los
tanques con el GGA para un intervalo de tiempo tanques con el EGGA para un intervalo de
de 5 minutos. tiempo de 5 minutos.

77
2,597 2,597

2,596 2,596

2,596
2,596
Energía [m]

2,595
2,595

Energía [m]
2,595
2,595
2,594
2,594
2,594
2,594
2,593
2,593
2,593

2,593 2,592
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 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

Tiempo [Horas] Tanque 1 Tiempo [Horas] Tanque 1


Tanque 2 Tanque 2

Gráfica 32. Resultados obtenidos para el vaciado de los Gráfica 33 Resultados obtenidos para el vaciado de los
tanques con el GGA para un intervalo de tiempo tanques con el EGGA para un intervalo de
de 10 minutos. tiempo de 10 minutos.

2,597 2,597

2,596 2,596

2,596
2,596
Energía [m]

2,595
2,595
Energía [m]

2,595
2,595
2,594
2,594
2,594
2,594
2,593
2,593 2,593

2,593 2,592
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 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

Tiempo [Horas] Tiempo [Horas]


Tanque 1 Tanque 1
Tanque 2 Tanque 2

Gráfica 34. Resultados obtenidos para el vaciado de los Gráfica 35 Resultados obtenidos para el vaciado de los
tanques con el GGA para un intervalo de tiempo tanques con el EGGA para un intervalo de
de 15 minutos. tiempo de 15 minutos.

78
2,597 2,597

2,596 2,596

2,596
2,596
Energía [m]

2,595
2,595

Energía [m]
2,595
2,595
2,594
2,594
2,594
2,594
2,593
2,593 2,593

2,593 2,592
0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324 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

Tiempo [Horas] Tiempo [Horas]


Tanque 1 Tanque 1

Tanque 2 Tanque 2

Gráfica 36. Resultados obtenidos para el vaciado de los Gráfica 37. Resultados obtenidos para el vaciado de los
tanques con el GGA para un intervalo de tiempo tanques con el EGGA para un intervalo de
de 30 minutos. tiempo de 30 minutos.

0.020%
0.018%
0.016%
0.014%
Inestabilidad

0.012%
0.010%
0.008%
0.006%
0.004%
0.002%
0.000%
0 5 10 15 20 25 30 35
Intervalo de tiempo Δt [Minutos]

Gráfica 38. Variación del error para diferentes


intervalos de tiempo

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.

79
200.00
180.00 Almacenamiento sin reducción
160.00 Almacenamiento sin ceros
Tiempo de Cálculo [min]

140.00 Almacenamiento óptimo


120.00
100.00
80.00
60.00
40.00
20.00
0.00
0 200 400 600 800 1000
Tamaño de la Matriz de Cálculo [ m x m ]

Eficiencia computacional de cálculo a partir


Gráfica 39. del sistema de almacenamiento.

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.

80
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

81
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.

82
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.

83

También podría gustarte