2
DISEÑO Y DESARROLLO DE UNA APLICACIÓN PARA LA MODELACIÓN HIDRÁULICA,
IMPLEMENTANDO LA EXTENSIÓN DEL ALGORITMO DEL GRADIENTE GLOBAL EN EL
TIEMPO EXTENDIDO PARA FLUJO NO ESTABLE.
JONATHAN YEPES TAVERA
Proyecto de Grado como requisito
parcial para optar por el título de Ingeniero Civil
Asesor:
Ing. HÉCTOR WILLIAM CLAVIJO SANABRIA
UNIVERSIDAD PONTIFICIA JAVERIANA
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA CIVIL
BOGOTÁ D.C.
2012
4
A Lucía Tavera Suárez
5
AGRADECIMIENTOS
Sin duda alguna, es justo y consecuente expresar mi sentido de gratitud a aquellas
personas que aportaron al desarrollo y culminación de éste proyecto:
A mi diligente director de trabajo de grado, el Ingeniero Héctor William Clavijo
Sanabria, quién apoyó y mantuvo su constante guía en éste trabajo de pregrado. Sus
consejos no me dejaron olvidar, que los sueños deben de ser bastante grandes para no
perderlos de vista en el camino.
A mi querida madre por todo su apoyo incondicional durante el transcurso de éste
proyecto y a quién le debo mi formación humana. Para ti.
Agradezco a Vanessa Mojica Arboleda, quién aportó de su tiempo para entender el
significado de éste arduo trabajo. Su ayuda fue indispensable e ilimitada.
Igualmente, quiero agradecer al ingeniero Jorge Escobar, quién orientó éste proyecto
en su debido momento, a mis hermanos y amigos, quienes creyeron en el objeto de
éste trabajo de grado y nunca contemplaron la posibilidad de fracaso.
A todos ustedes, ¡MUCHÍSIMAS GRACIAS!
6
TABLA DE CONTENIDO
1. INTRODUCCIÓN .................................................................................................. 16
1.1. OBJETIVOS ....................................................................................................... 21
1.1.1. OBJETIVO GENERAL ....................................................................................... 21
1.1.2. OBJETIVOS ESPECÍFICOS ................................................................................ 21
1.2. METODOLOGÍA ................................................................................................ 21
1.2.1. REVISIÓN BIBLIOGRÁFICA Y DEFINICIÓN DE LA HERRAMIENTA
COMPUTACIONAL ................................................................................................... 21
1.2.2. EXPLORACIÓN NUMÉRICA INICIAL DE LA EXTENSIÓN DEL ALGORITMO DEL
GRADIENTE GLOBAL ................................................................................................ 22
1.2.3. PLANIFICACIÓN DE LA ESTRUCTURA INFORMÁTICA..................................... 22
1.2.4. DESARROLLO DE LA APLICACIÓN .................................................................. 22
1.2.5. PRUEBAS DE CONSISTENCIA Y VALIDEZ DE LA APLICACIÓN ......................... 23
2. MARCO CONCEPTUAL ......................................................................................... 24
2.1. MODELACIÓN DE REDES HIDRÁULICAS ............................................................. 24
2.2. ALGORITMO DEL GRADIENTE GLOBAL (GGA) .................................................... 27
2.2.1. EJEMPLO SIMBÓLICO DE APLICACIÓN DEL GGA ........................................... 29
2.3. EXTENSIÓN DEL ALGORITMO DEL GRADIENTE GLOBAL (EGGA) ......................... 32
2.3.1. EJEMPLO SIMBÓLICO DE APLICACIÓN DEL EGGA ......................................... 34
2.4. LENGUAJE DE PROGRAMACIÓN ....................................................................... 35
3. DISEÑO Y DESARROLLO DEL SOFTWARE (DRÜCKE) .............................................. 38
3.1. DESARROLLO DEL MODELO DE DATOS ............................................................. 38
3.1.1. ENTRADA DE DATOS ...................................................................................... 39
3.1.2. ALMACENAMIENTO DE LA INFORMACIÓN ................................................... 41
3.1.3. MOTOR DE CÁLCULO ..................................................................................... 49
3.1.4. SALIDA DE DATOS .......................................................................................... 53
3.2. METODOLOGÍA PARA LA SOLUCIÓN DE SISTEMAS LINEALES ............................. 54
3.2.1. ALMACENAMIENTO DE LA MATRIZ Aij .......................................................... 55
3.3 IMPLEMENTACIÓN DE LA INTERFAZ GRÁFICA (GUI) ........................................... 60
3.3.1. DESARROLLO DE OBJETOS VISUALES ............................................................ 62
7
3.3.2. PROGRAMACIÓN DE EVENTOS ..................................................................... 67
4. APLICACIONES, RESULTADOS Y DISCUSIÓN ......................................................... 68
4.1. CASOS DE APLICACIÓN ..................................................................................... 68
4.2. RESULTADOS COMPARATIVOS CON EL ALGORITMO DEL GRADIENTE GLOBAL .. 70
5. CONCLUSIONES Y RECOMENDACIONES ............................................................... 81
5.1. CONCLUSIONES ................................................................................................ 81
5.2. RECOMENDACIONES ........................................................................................ 82
6. BIBLIOGRAFÍA ..................................................................................................... 83
8
LISTA DE FIGURAS
Figura 1.Representación esquemática de la red hidráulica. .......................................... 18
Figura 2.Tipología de la red hidráulica ........................................................................... 29
Figura 3. Tipología de la red hidráulica - Aplicación ...................................................... 68
9
LISTA DE GRÁFICAS
Gráfica 1. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 1 minuto, usando el software EPANET.. .................................... 19
Gráfica 2. Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo
de 1 minuto, usando el software EPANET.. .................................................................... 19
Gráfica 3. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 15 minutos, usando el software EPANET. ................................. 19
Gráfica 4. Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo
de 15 minutos, usando el software EPANET. .................................................................. 19
Gráfica 5-6. Resultados obtenidos para el vaciado de los tanques con el GGA y el EGGA
para un intervalo de tiempo de 1 minuto. ...................................................................... 70
Gráfica 7. Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo
de 1 minuto. .................................................................................................................... 70
Gráfica 8. Resultados obtenidos de los caudales de los tanques con el EGGA para un
intervalo de tiempo de 1 minuto. ................................................................................... 70
Gráfica 9-10. Resultados obtenidos para el vaciado de los tanques con el GGA y el
EGGA para un intervalo de tiempo de 5 minutos. .......................................................... 71
Gráfica 11. Resultados obtenidos de los caudales con el GGA para un intervalo de
tiempo de 5 minutos.. ..................................................................................................... 71
Gráfica 12. Resultados obtenidos de los caudales con el EGGA para un intervalo de
tiempo de 5 minutos.. ..................................................................................................... 71
Gráfica 13. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 10 minutos. ................................................................................ 72
Gráfica 14.Resultados obtenidos para el vaciado de los tanques con el EGGA para un
intervalo de tiempo de 10 minutos ................................................................................. 72
Gráfica 15. Resultados obtenidos de los caudales con el GGA para un intervalo de
tiempo de 10 minutos. .................................................................................................... 72
Gráfica 16. Resultados obtenidos de los caudales con el EGGA para un intervalo de
tiempo de 10 minutos. .................................................................................................... 72
Gráfica 17. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 15 minutos. ................................................................................ 73
Gráfica 18.Resultados obtenidos para el vaciado de los tanques con el EGGA para un
intervalo de tiempo de 15 minutos ................................................................................. 73
10
Gráfica 19. Resultados obtenidos de los caudales con el GGA para un intervalo de
tiempo de 15 minutos. .................................................................................................... 73
Gráfica 20. Resultados obtenidos de los caudales con el EGGA para un intervalo de
tiempo de 15 minutos. .................................................................................................... 73
Gráfica 21. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 30 minutos. ................................................................................ 74
Gráfica 22.Resultados obtenidos para el vaciado de los tanques con el EGGA para un
intervalo de tiempo de 30 minutos ................................................................................. 74
Gráfica 23.Resultados obtenidos de los caudales con el GGA para un intervalo de
tiempo de 30 minutos. .................................................................................................... 74
Gráfica 24. Resultados obtenidos de los caudales con el EGGA para un intervalo de
tiempo de 30 minutos. .................................................................................................... 74
Gráfica 25.Variación del error para diferentes intervalos de tiempo ............................ 75
Gráfica 26. Resultados obtenidos con el EGGA para un intervalo de tiempo de 1 minuto.
........................................................................................................................................ 76
Gráfica 27. Resultados obtenidos con el EGGA para un intervalo de tiempo de 1 minuto.
........................................................................................................................................ 76
Gráfica 28. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 1 minuto. ................................................................................... 77
Gráfica 29. Resultados obtenidos para el vaciado de los tanques con el EGGA para un
intervalo de tiempo de 1 minuto. ................................................................................... 77
Gráfica 30. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 5 minutos. .................................................................................. 77
Gráfica 31. Resultados obtenidos para el vaciado de los tanques con el EGGA para un
intervalo de tiempo de 5 minutos ................................................................................... 77
Gráfica 32. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 10 minutos. ................................................................................ 78
Gráfica 33. Resultados obtenidos para el vaciado de los tanques con el EGGA para un
intervalo de tiempo de 10 minutos.s .............................................................................. 78
Gráfica 34. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 15 minutos. ................................................................................ 78
11
Gráfica 35. Resultados obtenidos para el vaciado de los tanques con el EGGA para un
intervalo de tiempo de 15 minutos. ................................................................................ 78
Gráfica 36. Resultados obtenidos para el vaciado de los tanques con el GGA para un
intervalo de tiempo de 30 minutos. ................................................................................ 79
Gráfica 37. Resultados obtenidos para el vaciado de los tanques con el EGGA para un
intervalo de tiempo de 30 minutos. ................................................................................ 79
Gráfica 38. Variación del error para diferentes intervalos de tiempo ............................ 79
Gráfica 39. Eficiencia computacional de cálculo a partir del sistema de almacenamiento
........................................................................................................................................ 80
12
LISTA DE ESQUEMAS
Esquema 1. Ciclo lógico del Modelo de Datos ................................................................ 38
Esquema 2. Modelo de datos – Lectura directa de Información ................................... 39
Esquema 3. Modelo de datos – Lectura no directa de Información (Datos importados)
........................................................................................................................................ 40
Esquema 4. Almacenamiento general de la información .............................................. 41
Esquema 5. Llenado de objetos ...................................................................................... 42
Esquema 6. Modelo matricial de la información condensada. ...................................... 44
Esquema 7. Configuración de la Matriz Variables – Dependencias de las variables ..... 45
Esquema 8. Funcionamiento general del Motor de Cálculo de DRÜCKE ....................... 51
Esquema 9. Recorrido matricial (Matriz Variables) ....................................................... 52
Esquema 10. Almacenamiento convencional de la matriz Aij. ....................................... 55
Esquema 11. Reducción matricial. ................................................................................. 55
Esquema 12. Modelo de almacenamiento reducido ...................................................... 57
Esquema 13. Estructura básica de la Interfaz Gráfica de Usuario. ................................ 61
13
LISTA DE ANEXOS
ANEXO 1. Manual del Usuario
ANEXO 2. Software Ejecutable ANEXO 3. Hojas de cálculo (Excel)
14
RESUMEN
El siguiente trabajo consiste en la implementación de la solución del problema de la
inestabilidad numérica para el análisis de flujo de las redes hidráulicas en el período
extendido, inestabilidad a causa de las de oscilaciones marcadas en períodos
consecutivos generadas por grandes pasos de cálculo en el transcurso del tiempo y
cuya solución se realiza mediante la nueva metodología propuesta por Todini (2011).
Dicha solución, es implementada y desarrollada en el software DRÜCKE para la
modelación y simulación hidráulica en el flujo presurizado de sistemas de
almacenamiento.
Mediante la Extensión del Algoritmo del Gradiente Global (EGGA) (Todini, 2011), cuyo
fundamento se aplica para la solución de la inestabilidad numérica en el análisis de
flujo en el período extendido, se desarrolló el software cuyo funcionamiento ha sido
estructurado mediante el método del Gradiente Conjugado para la solución iterativa
de sistemas lineales aplicados al algoritmo EGGA en conjunto con las leyes de la
hidráulica de sistemas de presión. De esta forma, se aplica la solución al problema de
la inestabilidad numérica de las redes de distribución de agua potable y así, se muestra
cuantitativamente la solución obtenida por Todini (2011).
No obstante, el Algoritmo del Gradiente Global (GGA), introducido por Todini (1979) y
Todini & Pilati (1988), ha conformado la estructura para la mayoría de los software
hidráulicos. EPANET, desarrollado por Rossman (1993) para la Agencia de Protección
Ambiental de los Estados Unidos, WATERGEMS (BentleySystems, 2006), WATERCAD,
en conjunto con otros software para el análisis hidráulico, han usado la metodología
del GGA para la modelación y simulación hidráulica de flujo en el período extendido.
Un esquema explícito de Euler proporciona la base del funcionamiento de las redes
hidráulicas en el período extendido, sin embargo, la inestabilidad en los sistemas de
almacenamiento se ha podido presenciar y asociar a determinados casos en particular.
Por tal razón, Todini (2011) introduce básicamente el uso de un esquema Explícito –
Implícito de solución de las ecuaciones diferenciales ordinarias de la simulación
cuasidinámica del flujo en redes de distribución.
Palabras Clave: Inestabilidad numérica, Algoritmo del Gradiente Global, Dispositivos
de almacenamiento, Red de distribución, Simulación en el período extendido.
15
ABSTRACT
This work implements the solution of the problem of numerical instability for flow
analysis in hydraulic networks extended period, which exists because of marked
consecutive oscillations and whose solution is made using the new methodology
proposed by Todini (2011). This solution is implemented and developed in DRÜCKE
software for modeling and simulation pressurized hydraulic flow storage systems.
By the Extending the Global Gradient Algorithm (EGGA) (Todini, 2011), whose
foundation is applied for solving numerical instability in the flow analysis in the
extended period, the software was developed whose operation has been structured by
Method numerical conjugate gradient for solving linear systems applied to EGGA
algorithm in conjunction with the laws of hydraulic pressure systems. Thus, applying
the solution to the problem of instability of digital networks potable water distribution
and thus shows quantitatively the solution obtained by Todini (2011).
However, Global Gradient Algorithm (GGA), introduced by Todini (1979) and Todini &
Pilati (1988), has formed the structure for most hydraulic software. EPANET, developed
by Rossman (1993) for the Environmental Protection Agency of the United States,
WaterGEMS (Bentley Systems 2006), WaterCAD, in conjunction with other software
for hydraulic analysis, have used GGA methodology for modeling and simulation of
hydraulic flow in the extended period. An explicit Euler scheme provides the basis for
the operation of water networks in the extended period, however, instability in
storage systems has been witnessed and involve certain particular cases. For this
reason, Todini (2011) basically introduces a scheme using Explicit - Implicit solution of
ordinary differential equations for quasi-steady simulation of flow in distribution
networks.
Keywords: Numerical Instability, Global Gradient Algorithm, Storage Devices, Water
Distribution Network, The Extended Period Simulation.
16
1. INTRODUCCIÓN
Las redes hidráulicas son sistemas que trabajan en conjunto para la distribución de
fluidos sin importar su tipo. Éstas se modelan en flujo permanente en el período
extendido, sin embargo existe la opción de realizar la modelación en flujo cuasi-
dinámico. La existencia de software con éste propósito son diversos, cuyo como motor
de cálculo es el Algoritmo del Gradiente Global (Todini, 2011). A pesar de haberse
establecido como la metodología más usada para el cálculo de redes hidráulicas de
distribución, el GGA ha presentado inestabilidades numéricas, especialmente para
grandes intervalos de tiempo. Dicho problema se debe a que el cálculo genera
oscilaciones marcadas en los períodos consecutivos, es decir, en cada cambio del
intervalo de tiempo , generando también posible falta de convergencia. Éste
problema a pesar de ser numérico, se puede ejemplarizar como el cambio basto en
cada intervalo de tiempo, los cuales deberían ser bajos y sutiles para simular el
comportamiento real de los sistemas de almacenamiento.
La Extensión del Algoritmo del Gradiente Global, la cual consiste en una adición de un
término implícito en el esquema del GGA para proporcionar la estabilidad numérica
necesaria en el cálculo de las redes hidráulicas; es el motor de cálculo adoptado y
desarrollado en éste trabajo. El método del Gradiente Conjugado, los modelos de
almacenamiento matricial, la simplificación del cálculo de la extensión, la Interfaz
Gráfica de Usuario (GUI), son algunos de los algoritmos contenidos dentro de DRÜCKE
los cuales trabajan conjuntamente para el desarrollo de las redes de distribución.
Para el desarrollo del software, se inició con un modelo de datos formalizado en dónde
se plantea el esquema general para el funcionamiento de la aplicación, se procede con
la subdivisión de las clases y métodos que conformarán la estructura general para el
procesamiento de la información. Dichos métodos de procesamiento son
dependientes de la forma utilizada para el ingreso de la información y cuya conexión
se hace directamente con el Método del Gradiente Conjugado para la solución
matricial de las ecuaciones hidráulicas. Éste modelo de datos fue estructurado con la
proyección de poder simular en tiempo real las diferentes variables hidráulicas que
conforman el sistema y así poder visualizar el comportamiento en el período extendido
de la red hidráulica. Posteriormente, se podrá discernir de los resultados obtenidos
con la extensión del GGA, resaltando la sutileza de las oscilaciones en cada intervalo de
tiempo.
17
ORGANIZACIÓN DEL DOCUMENTO
Éste documento se compone de 5 capítulos distribuidos así:
El primer capítulo hace la introducción al problema, se exponen los objetivos y
las diferentes etapas que se llevan a cabo para el desarrollo de éste trabajo.
El segundo capítulo expone las metodologías utilizadas para el desarrollo de la
aplicación, dónde se explica el problema en los sistemas de almacenamiento y
el desarrollo de las ecuaciones de energía y masas. Adicionalmente, se
exponen conceptos básicos de programación relacionados con el desarrollo del
software.
En el tercer capítulo se desarrolla el modelo de datos de la aplicación con todos
sus componentes principales, tales como el esquema de procesamiento y
almacenamiento de la información y los diferentes mecanismos para la entrada
y salida de datos.
El cuarto capítulo expone el análisis de los casos implementados en la
aplicación correspondientes a modelos reales y sintéticos. Se determina la
solución del problema y se hace un paralelo para diferentes escenarios de la
propagación del error en la metodología antigua.
Finalmente, en el capítulo sexto se exponen las recomendaciones y
conclusiones del trabajo desarrollado.
18
ANTECEDENTES
En el transcurso evolutivo de la modelación y simulación hidráulica, se han planteado
modelos matemáticos para la solución de redes de distribución, ya sea de agua
potable, residual, combustible u otros fluidos, tales como la teoría lineal, métodos
iterativos como Cross y el Algoritmo del Gradiente Global, el cual resuelve las
ecuaciones de balance de masas y energía aplicadas a la estructura hidráulica del
sistema. Actualmente existen diferentes software que implementan dicho algoritmo
para la simulación hidráulica como EPANET, WaterCAD®, WaterGems®, los cuales
incorporan dicha formulación matemática presentando discrepancias entre el
comportamiento real y el simulado en la modelación del tiempo extendido, por efecto
de inestabilidades numéricas (Todini, 2011).
En el tiempo extendido, es decir, en la simulación en estado transitorio o dinámica, se
han podido evidenciar inestabilidades numéricas en la evolución de los niveles de los
dispositivos de almacenamiento, debido a la configuración del algoritmo,
especialmente para tamaños grandes del paso de cálculo (Todini, 2011), generando de
esta forma problemas de confiabilidad en la simulación de las redes de distribución.
Éste problema se debe a que el cálculo genera oscilaciones marcadas en los períodos
consecutivos, es decir, en cada cambio del intervalo de cálculo , generando de
esta forma posible falta de convergencia. El análisis de estado no estable formulado
por el Algoritmo del Gradiente Global, es una aproximación apropiada a las
condiciones de este tipo de flujo en las redes, en donde se realiza un procedimiento
iterativo para la solución del sistema (Giustolisi, 2010).
Representación esquemática de la red hidráulica. Dos tanques conectados descargándose en el transcurso del tiempo. Fuente: Todini, 2011.
Figura 1
Figura 1
Figura 1.
Figura 2
19
0
5
10
15
20
25
30
0 1 2 3 4
Ene
rgía
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
-160
-140
-120
-100
-80
-60
-40
-20
0
20
40
60
0 1 2 3 4
Cau
dal
[Lp
s]
Tiempo [Horas]
Tubería 1 Tubería 2 Tubería 3
0
5
10
15
20
25
30
0 1 2 3 4
Ene
rgía
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
-160
-140
-120
-100
-80
-60
-40
-20
0
20
40
60
80
0 1 2 3 4
Cau
dal
[Lp
s]
Tiempo [Horas]
Tubería 1 Tubería 2 Tubería 3
A partir de la Figura. 1, se tiene una red hidráulica con dos sistemas de
almacenamiento con cabeza inicial conocida. En el transcurso del tiempo, ésta energía
disminuirá ya que la configuración de la red hidráulica corresponde al modelo de
descarga libre. Desarrollando las ecuaciones del GGA con el esquema explícito de
Euler, se tiene para el cálculo de las variables del sistema las siguientes gráficas:
Gráfica 1. Gráfica 2.
Gráfica 3.
Gráfica 4
Para la misma configuración de red, se ha realizado el cálculo con el software EPANET
para diferentes intervalos de tiempo, en dónde se puede evidenciar a partir de las
gráficas la inestabilidad numérica. Cuando el intervalo de cálculo aumenta, el
algoritmo desconoce la información que se ha generado en el tiempo pasado y el
tiempo actual de cálculo, generando oscilaciones marcadas en los períodos
consecutivos y generando posible falta de convergencia. Cuando éste intervalo de
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 1 minuto, usando el software EPANET.
Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 1 minuto, usando el software EPANET.
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 15 minutos, usando el software EPANET.
Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 15 minutos, usando el software EPANET.
20
tiempo se hace más grande la información perdida es mayor y por ende la simulación
será menos confiable.
Es por esta razón necesaria la implementación de la extensión del algoritmo del
gradiente global propuesto por Todini (2011), para evitar los problemas numéricos con
el cálculo de redes en el período extendido, los cuales impiden la aplicación de
esquemas de operación confiables en sistemas de distribución y así asemejarse al
comportamiento real de los niveles en los dispositivos de almacenamiento. La
modelación es requerida para estimar y establecer esquemas y reglas de operación
eficientes en los acueductos y de esta forma garantizar el bienestar de los usuarios. La
capacidad de simulación de un período prolongado es una consideración importante
en la planificación y operación de sistemas de distribución de fluidos (Wu, 2009),
puesto que si esta simulación reproduce comportamientos erróneos, el desarrollo
hidráulico de la red de distribución, modificaría el esquema inicial produciendo
cambios significativos en los requerimientos del sistema.
JUSTIFICACIÓN
La solución a éste tipo de problemas ayuda a modelar con mayor eficiencia y precisión
la hidráulica de las redes en estado no estable. Si se soluciona la inestabilidad
numérica, es posible realizar esquemas de operación en tiempo extendido
representando con mayor aproximación para cada instante de tiempo, la variación de
energía de los sistemas de almacenamiento y elementos hidráulicos como los nodos,
válvulas y demás dispositivos.
De allí surge la necesidad de desarrollar un software en donde se implemente la nueva
metodología y así facilitar el cálculo para redes de gran tamaño, generando una
simulación más aproximada al comportamiento de la red hidráulica.
21
1.1. OBJETIVOS
1.1.1. OBJETIVO GENERAL
Diseñar y desarrollar una aplicación para la modelación y simulación hidráulica en el
flujo presurizado, empleando la Extensión del Algoritmo del Gradiente Global, como
solución a la inestabilidad numérica en el análisis de flujo en período extendido.
1.1.2. OBJETIVOS ESPECÍFICOS
Determinar los requerimientos de la aplicación del Algoritmo del Gradiente
Global para el análisis en el período extendido.
Planificar y desarrollar la herramienta de modelación del Algoritmo del
Gradiente Global utilizando las condiciones de su aplicación.
Verificar los resultados de modelación con modelos sintéticos reportados por la
literatura.
1.2. METODOLOGÍA
1.2.1. REVISIÓN BIBLIOGRÁFICA Y DEFINICIÓN DE LA HERRAMIENTA
COMPUTACIONAL
Se consultará y recopilará en libros, artículos, y otras fuentes de información, la
incorporación de la extensión del algoritmo del gradiente global en el tiempo
extendido para flujo no estable. Posteriormente se definirá el software en el cual se
ejecutará y desarrollará todo el algoritmo para la aplicación, basándose en diferentes
criterios tales como:
Programación versátil
Velocidad óptima de procesamiento de datos
Modelación de interfaz gráfica
Una vez evaluados los anteriores criterios, se determinó que el lenguaje de
programación seleccionado para el desarrollo del software DRÜCKE es JAVA, usando el
22
Entorno de Desarrollo Integrado (IDE – “Integrated Development Environment”)
NetBeans.
1.2.2. EXPLORACIÓN NUMÉRICA INICIAL DE LA EXTENSIÓN DEL ALGORITMO DEL
GRADIENTE GLOBAL
Se revisarán los requerimientos y necesidades para ejecutar la extensión del algoritmo
del gradiente global, comprendiendo la estructura del mismo. Mediante redes
hidráulicas sintéticas simples, se explorará numéricamente el funcionamiento del
algoritmo para determinar cuáles son los pasos necesarios para llevar a cabo la
programación de la aplicación.
1.2.3. PLANIFICACIÓN DE LA ESTRUCTURA INFORMÁTICA
Se determinará las fases de programación que se llevarán a cabo para ejecutar la
herramienta de modelación del flujo presurizado en el tiempo extendido. La primera
consiste en el Desarrollo del modelo de datos en dónde se determinará cómo será el
almacenamiento y procesamiento de los datos insertados en la aplicación.
Posteriormente se planificará la estructura de cómo el usuario ingresará los datos y de
qué forma serán proyectados los resultados realizados por la aplicación. Para llevar a
cabo estas fases de desarrolló, será necesario entonces definir todos los
procedimientos y funciones dentro de módulos y cómo estos interactúan para el
desarrollo de la aplicación.
Finalmente, se pre diseñará el Manual del Usuario. Tutoriales basados en redes
hidráulicas sintéticas simples, mensajes de error, modelos del sistema, preguntas
frecuentes, son algunos de los aspectos contenidos en el manual del usuario, los cuales
serán definidos en esta fase.
1.2.4. DESARROLLO DE LA APLICACIÓN
Después de haber seleccionado el modelo de datos, se implementará éste en el
respectivo lenguaje de programación previamente definido (JAVA en el IDE –
NetBeans), aplicado a diferentes tipologías de redes, al igual que todas las funciones
necesarias para llevar a cabo la ejecución y desarrollo de la aplicación, incluyendo
todos los códigos referentes a la interfaz gráfica.
23
El desarrollo del manual del usuario se llevará a cabo simultáneamente se avance con
el código de programación, con el propósito de evitar confusiones y la omisión de
herramientas de la aplicación.
1.2.5. PRUEBAS DE CONSISTENCIA Y VALIDEZ DE LA APLICACIÓN
Mediante modelos hidráulicos sintéticos reportados por la literatura (Larock, Jeppson
& Watters, 2000), se verificará que las ecuaciones hidráulicas y los resultados
obtenidos sean consistentes con el sistema hidráulico.
Se verificará la validez de la aplicación mediante la estabilidad numérica para
diferentes pasos de cálculo en el transcurso del tiempo . Dicho paso de cálculo,
está relacionado directamente con la inestabilidad numérica (Todini, 2011).
Finalmente, con una red hidráulica real se empleará la aplicación para determinar si los
resultados obtenidos son consistentes mediante pruebas de escritorio.
24
2. MARCO CONCEPTUAL
2.1. MODELACIÓN DE REDES HIDRÁULICAS
La modelación de redes hidráulicas consiste en simular el comportamiento hidráulico
para tiempos determinados ya sea en período simple o período extendido, realizando
toda la interpretación cuantitativa de las variables que rigen el comportamiento del
sistema. De esta forma, la solución se centraliza en conocer la cantidad de energía
disponible para la red hidráulica y así poder establecer la distribución o abastecimiento
poblacional.
∑
[1] (Todini, 2011)
[2] (Todini, 2011)
La hidráulica debe de cumplir las ecuaciones de Balance de Masas y Energías. La
ecuación [1] describe el balance de masas para los nodos con cabeza hidráulica
desconocida, donde es el volumen de agua almacenada en el nodo , es el
caudal que se transporta entre la tubería conectada entre el nodo y el nodo y es
el caudal externo aplicado en el nodo . La ecuación [2], el término representa
las pérdidas a lo largo de la longitud de la tubería y es el coeficiente de resistencia
hidráulica (Ecuación [27] y [28]).
Si bien todo sistema hidráulico genera pérdidas de energía a causa de la fricción,
accesorios y transientes; para su modelación se debe de tener en cuenta dicho factor,
ya que éste aportará a determinar la variación energética del sistema. Adicionalmente,
los sistemas de almacenamiento poseen la propiedad innata de acumular masa y
energía para poder ser retribuida en el momento de escasez hidráulica y así
compensar la demanda de masa y energía. Cuando aumenta el nivel en estos
dispositivos, aumenta la energía potencial para este punto, la cual será transformada
en energía cinética a través del paso por la tubería. Ésta energía cinética se refleja en
la magnitud de la carga de velocidad, y con la carga piezométrica, determinan la
energía disponible para determinado punto.
Para la modelación de redes hidráulicas es necesario conocer las propiedades del
sistema, tales como las propiedades del fluido que se está transportando, los
25
materiales de las tuberías, los dispositivos de regulación, de almacenamiento y de
adición de energía. Con ésta información básica, se procede al cálculo dependiendo de
la configuración de la red y así determinar las variables para determinados instantes de
tiempo.
Las dos variables que rigen el comportamiento de la red hidráulica corresponden a los
caudales ( ) y las energías ( ) de todo el sistema. La primera variable es la cantidad
de masa que se transporta a través de las tuberías desde un punto hasta un punto
en un determinado lapso de tiempo; ésta variable depende esencialmente del área
transversal por la cual se transporta y la velocidad con la que lo hace. En una red
hidráulica real, adquiere diferentes valores respecto al tiempo debido a la variación de
consumo poblacional.
La segunda variable, corresponde a la suma de los tres términos en la ecuación de
trabajo – energía, también denominada la ecuación de Bernoulli (Larock, Jeppson &
Watters, 2000):
[3]
Donde
se define como la carga de velocidad,
la carga piezométrica y la posición
del punto respecto a un punto de referencia.
A partir de ésta ecuación se puede estimar la disposición del transporte del fluido a lo
largo de la red hidráulica.
Con estas dos variables se definen las ecuaciones [1] y [2]. Para una red hidráulica de
nodos se tiene entonces incógnitas referentes a las energías para todo el sistema y
incógnitas referentes a los caudales de las tuberías, siendo el número total de
tuberías. Para la solución simultánea del sistema, es necesario entonces emplear un
algoritmo para la solución matricial de todas las ecuaciones planteadas a partir de
éstas dos variables.
SISTEMA DE - ECUACIONES
Como ya se había indicado previamente, una de las variables que rige el
comportamiento del sistema es el caudal. En las redes hidráulicas, el análisis de ésta
variable se fundamenta en la continuidad de los principios de trabajo y energía
(Larock, Jeppson & Watters, 2000).
26
∑
[4]
Donde,
∑ Suma de las descargas de cada una de las tuberías al nodo
Caudal de demanda en el nodo
Para que la continuidad se conserve, se debe satisfacer que el volumen de descarga
debe ser igual a la suma de caudales que llegan al nodo, a diferencia de la ecuación [1]
en donde la diferencia de estos caudales se relaciona con el volumen almacenado.
El número total de – Ecuaciones será igual al número total de elementos en la red
hidráulica.
SISTEMA DE - ECUACIONES
Una ecuación de energía es escrita en cada nodo, o en , siendo el número
total de nodos si existe menos de dos fuentes de suministro. Cuando una red
hidráulica tiene menor número de nodos que de bucles alrededor de los cuales pueden
ser escritas las ecuaciones independientes ( ), donde es el número de
bucles; entonces existirá menor número de ecuaciones de energías que
de –ecuaciones de caudales.
Para calcular el número de bucles, se tiene la ecuación:
[5]
Si la red hidráulica contiene dos o más fuentes de energía,
[6]
Para hacer la configuración de la ecuación de energía para cada nodo, se tiene la
ecuación exponencial para la descarga de la forma:
( )
[ ]
[7]
27
Donde,
Coeficiente de pérdidas de la tubería conectada entre el nodo y
Caudal de demanda en el nodo
Energía disponible en el nodo
Energía disponible en el nodo
2.2. ALGORITMO DEL GRADIENTE GLOBAL (GGA)
Una vez establecidas todas las propiedades del sistema se procede a realizar el cálculo
de las variables hidráulicas con el propósito de conocer la solución de la red. La
metodología utilizada para ésta solución se conoce como el Algoritmo del Gradiente
Global, el cual consiste en la formulación del Balance de Masas para cada nodo y las
ecuaciones de energía (Todini, 1979):
[9]
La ecuación [9], representa la diferencia de energías entre dos puntos y . El primer
sumando corresponde a las pérdidas locales generadas entre el punto y y el
segundo sumando es referente a las pérdidas locales generadas por los accesorios
contenidos en dicho tramo. Por lo tanto la ecuación [9] representa las pérdidas totales.
Si se deriva parcialmente la anterior ecuación respecto al caudal se tiene una
expresión para la aproximación, por expansión de Taylor, a los valores consecutivos
de convergencia así:
Donde,
∑{[ ]
}
∑{[ ]
}
[8]
(
)
(
)
[10] (Todini, 1988)
| |
| | [11]
28
Al expresar el caudal , se tiene:
Así, al sumar todos los caudales que llegan a un nodo se tiene:
Ecuación general para cada nodo (GGA).
Donde,
Energía disponible en el nodo Energía disponible en el nodo
Caudal transportado desde el nodo al nodo
Caudal de demanda en el nodo Iteración Constante de proporcionalidad ( con la formulación de Darcy-Weisbach y para la formulación de Haze-Williams). Constante de pérdidas definido en la Ecuación [29].
La ecuación [15], se puede representar matricialmente mediante la ecuación:
|
|
| |
| |
[12]
(
) (
)
[13]
| |
| |
[14]
∑ (
)
[15]
[ ][ ] [ ][ ] [16]
29
Donde [ ] es la matriz calculada mediante la ecuación[12] para todas las tuberías y
cuya composición representa la conexión entre todos los nodos, el vector [ ]
representa las incógnitas del sistema correspondiente a las energías para cada nodo, la
matriz [ ] corresponde a la matriz de de fijos correspondientes a aquellas
tuberías que interconectan tanques o embalses, el vector [ ] corresponde a las
energías de los embalses o los tanques y el vector a las constantes de todo el
sistema correspondientes a las operaciones entre los caudales de demanda de los
nodos y con los valores de para la tubería que conecta dichos nodos.
Éste es el esquema que ha sido adoptado por los diferentes programas para la
modelación y simulación en el período extendido utilizando un esquema Euler explícito
para las energías de los sistemas de almacenamiento. Éste esquema es usado para
solucionar las ecuaciones diferenciales ordinarias del sistema.
Ecuación Esquema implícito - explícito de Euler.
2.2.1. EJEMPLO SIMBÓLICO DE APLICACIÓN DEL GGA
Para mostrar el esquema Explícito mostrado previamente, se presenta a continuación
un modelo sintético configurado de la siguiente forma:
Figura 2 Tipología de la red hidráulica
[∑ ]
[∑ ]
2
H8f
1
5
4
3
H7f
6
30
Para el desarrollo de la red hidráulica es necesario suponer una dirección de flujo para
cada tubería y así empezar a definir las matrices para la primera iteración.
A partir de la ecuación [15], se tiene para cada nodo que:
NODO 1
[ (
) ] [
(
) ]
NODO 2
[ (
) ] [
(
) ]
[ (
) ]
NODO 3
[ (
) ] [ (
) ]
[ (
) ]
NODO 4
[ (
) ] [
(
) ]
[ (
) ]
NODO 5
[ (
) ] [ (
) ]
[ (
) ]
NODO 6
[ (
) ] [ (
) ]
Para cada ecuación, se agrupan los términos constantes con el propósito de obtener
los valores del vector .
(
)
(
)
31
(
)
(
)
(
)
(
)
Nótese que ésta agrupación deja para cada ecuación los valores de y , los
cuales se pueden organizar matricialmente de la siguiente forma:
Ecuación matricial de la red hidráulica. Ecuación [17]
Se procede a resolver la ecuación matricial para obtener los de cada nodo.
Con estas energías, se calculan los caudales respectivos de cada tubería mediante la
ecuación [15].Posteriormente se procede a realizar una nueva iteración siguiendo el
procedimiento descrito previamente; la diferencia radica en que para ésta iteración se
calcularán los con la ecuación [12], en dónde se utilizarán los caudales
previamente calculados.
Se continúa con el proceso iterativo hasta obtener una diferencia mínima entre las
energías de la iteración actual y la anterior. Cuando el sistema converge para éste
primer tiempo, se procede a realizar el cálculo del segundo tiempo tal y como se había
descrito previamente y así sucesivamente obteniendo para cada intervalo de tiempo el
valor de las energías y caudales del sistema.
Se ha podido presenciar para ésta metodología de cálculo que para los intervalos de
tiempo pequeños las oscilaciones marcadas en el tiempo de los sistemas de
almacenamiento simulan el comportamiento real, sin embargo, cuando se utilizan
[ ] [ ] [ ] [ ]
32
intervalos de tiempo muy grandes el cálculo puede presentar falta de convergencia
aumentando la inestabilidad numérica del sistema y de esta forma genera en los
sistemas de almacenamiento cambios bastos entre los intervalos de cálculo. Éste
comportamiento se debe al esquema Explícito de Euler, cuyo funcionamiento utiliza
información del cálculo realizado en la iteración anterior. Cuando el intervalo es muy
grande, el algoritmo desconoce toda la información que se ha debido generar entre el
tiempo pasado y el tiempo de cálculo actual generando de esta forma la inestabilidad
en los sistemas de almacenamiento. Para la misma tipología de red hidráulica que se
ha venido trabajando, se ha desarrollo con el software EPANET la simulación de los
dispositivos de almacenamiento para diferentes intervalos de tiempo:
2.3. EXTENSIÓN DEL ALGORITMO DEL GRADIENTE GLOBAL (EGGA)
La extensión del Algoritmo del Gradiente Global introducida en el año 2011, consiste
en la adición del esquema Implícito – Explícito de Euler el cual permite solucionar el
cambio brusco en las oscilaciones marcadas en el tiempo. Ésta adición se hace
mediante el factor θ el cual adquiere valores mayores a cero o menores o iguales a
uno, discretizando en el tiempo el cálculo del sistema (Todini, 2011).
Ecuación general del algoritmo EGGA.
Donde,
Área dela sección transversal del sistema de almacenamiento Intervalo de tiempo
Disponibilidad de energía en el nodo de la iteración pasada en el tiempo t
Disponibilidad de energía en el nodo de la iteración actual en el tiempo t
A continuación se simplifica la ecuación [18] con el propósito de expresar la ecuación
matricialmente y así representar las ecuaciones de las redes hidráulicas con mayor
versatilidad.
[∑ ]
[∑ ]
[18]
∑[ (
) ]
[∑ ]
[19]
33
De acuerdo a las propiedades de la sumatoria, se procede a separar los términos del
primer sumando de la ecuación [19]:
∑ (
) ∑ ∑
[∑ ]
[20]
Se agrupan todas las incógnitas (términos de la iteración + 1) al lado izquierdo de la ecuación:
Tamaños de las matrices y vectores:
[ ] (N° Nodos + N° Tanques) x (N° Nodos + N° Tanques)
[ ] (N° Nodos + N° Tanques)
[ ] (N° Nodos + N° Tanques) x (N° Nodos fijos)
[ ] (N° Nodos fijos)
(N° Nodos + N° Tanques)
(N° Nodos + N° Tanques)
∑
∑
∑ ∑ ∑
[∑ ]
[21]
[ ][ ] [ ][ ]
[22]
34
Donde [ ] es la matriz calculada mediante la ecuación [12] para todas las tuberías y
cuya composición representa la conexión entre todos los nodos, el vector [ ]
representa las incógnitas del sistema correspondiente a las energías para cada nodo, la
matriz [ ] corresponde a la matriz de de fijos correspondientes a aquellas
tuberías que interconectan embalses, el vector [ ] corresponde a las energías de los
embalses y el vector a las constantes de todo el sistema correspondientes a las
operaciones entre los caudales de demanda de los nodos y con los valores de
para la tubería que conecta dichos nodos. A diferencia de la ecuación [17], se
agrega el vector el cual representa la inclusión del esquema Explícito – Implícito
de Euler con el cual se soluciona el problema de la inestabilidad numérica presentada
en los dispositivos de almacenamiento.
Ésta adición permite que en el cálculo prevalezca las energías obtenidas en el tiempo
anterior dependiendo del valor que adquiera θ. En el caso que éste factor adquiera el
valor de 1, el esquema Explícito – Implícito desaparecerá dejando sólo como objeto de
cálculo el GGA con su respectivo esquema Explícito de Euler.
2.3.1. EJEMPLO SIMBÓLICO DE APLICACIÓN DEL EGGA
Con el ejemplo propuesto en la sección 2.2.1., se realiza la adaptación al esquema
Explícito – Implícito de Euler. Para la inclusión de la nueva metodología es necesario
para cada sistema de almacenamiento adicionar el término
derivado de la
ecuación [21] y adicionalmente, en el vector , implementar el término
[∑ ]
también derivado de la ecuación [21]. Las ecuaciones para cada
nodo siguen siendo las mismas que las propuestas en la sección 2.2.1., sin embargo el
tamaño de la matriz aumenta en dos unidades ya que los tanques
ya no pertenecen más a la matriz de fijos ni el vector , debido a que su energía
se asume como no fija durante el cálculo iterativo de la nueva metodología. Por lo
tanto es necesario calcular las dos constantes y .
(
)
(
)
35
A21+A5
1 -A21 0 0 -A51 0 0 0 H1
iter+1
C1 0
-A21 A32+A42
+A21 -A32 -A42 0 0 0 0 H2
iter+1 C2 0
0 -A32 A43+A32
+A73 -A43 0 0 -A73 0 H3
iter+1 C3 0
0 -A42 -A43 A43+A45
+A42 -A45 0 0 0 H4
iter+1 = C4 + 0
-A51 0 0 -A45 A45+A85
+A51 0 0 -A85 H5
iter+1 C5 0
0 0 0 0 0 A76+A68 -A76 -A68 H6iter+1
C6 0
0 0 -A73 0 0 -A76 A73+A76
0 H7iter+1
C7
(
) (
)
0 0 0 0 -A85 -A68 0 A68+A85
H8iter+1
C8
(
) (
)
Ecuación matricial de la red hidráulica. Ecuación [23]
Donde y
son las energías de los tanques.
Se procede a realizar la ecuación matricial obteniendo los valores de las energías y los
caudales con la ecuación [15] y se sigue con el mismo procedimiento descrito en la
sección 2.2.1.
Sólo para cada cambio de tiempo es necesario calcular de nuevo el vector con
los caudales obtenidos en el tiempo anterior, a diferencia de la matriz [ ], la cual sí
se debe de calcular en cada nueva iteración con las respectivas adiciones del EGGA.
2.4. LENGUAJE DE PROGRAMACIÓN
Para el desarrollo de éste proyecto, fue necesario establecer el lenguaje de
programación en el cual se iba a ejecutar todos los algoritmos correspondientes al
software DRÜCKE, incluyendo toda la parte gráfica de la aplicación. Ésta selección se
[ ] [ ]
36
hizo con los siguientes criterios: programación versátil, velocidad óptima de
procesamiento de datos y modelación de la interfaz gráfica. Actualmente, el lenguaje
que más se ajusta a éstas condiciones es JAVA.
JAVA es un lenguaje de programación de alto nivel el cual permite el uso de comandos
a cambio de códigos numéricos encriptados. Cada instrucción corresponde a una serie
de algoritmos dentro del procesador del computador cuyo lenguaje consiste
enteramente en números que son analizados para concluir con la orden ejecutada por
el usuario (Gary et al, 2005).
JAVA fue diseñado y desarrollado en la década de los 90 por James Gosling para Sun
Microsystems (Oracle Corporation) y cuya sintaxis emplea como base, lenguajes como
C, C++ y Smalltalk. Contiene un modelo de objetos simples eliminando herramientas de
bajo nivel las cuales suelen introducir a errores y cuyo funcionamiento lo convierte en
uno de los lenguajes más utilizados y confiables de la industria (Gary et al, 2005).
Para el desarrollo del software DRÜCKE, se empleó la IDE NetBeans el cual implementa
dicho lenguaje de programación. A partir de éste software de desarrollo se elaboró la
interfaz gráfica de usuario y toda la implementación de la Extensión del Algoritmo del
Gradiente Global.
Para el desarrollo del presente proyecto, es necesario entender los siguientes
conceptos, los cuales son utilizados a lo largo del desarrollo de éste documento:
TIPOS DE DATOS
Los tipos de datos son conceptos fundamentales en todos los lenguajes de
programación, los cuales hacen referencia a los métodos disponibles de
almacenamiento de la información. Éstos permiten dimensionar un dato en memoria.
Básicamente existen dos tipos de datos en JAVA:
Los tipos simples son manejados directamente por el compilador y no necesitan el uso
de bibliotecas JAVA específicas. En los tipos compuestos, su uso puede necesitar clases
específicas de la biblioteca JAVA (Aumaille, 2000).
SIMPLES
Integer
Double
Float
Boolean
Chart
COMPUESTOS
String
Table
Nombres
de clases o
interfaces
37
OBJETOS
Las instancias de las clases se denominan objetos. El diseño orientado a objetos radica
en averiguar cuáles son los objetos de un sistema, las clases en que se pueden agrupar
y las relaciones entre objetos que se puedan obtener (Durán, Gutiérrez, Pimentel,
2007). Éstos tienen propiedades que los hace únicos en todo el lenguaje de
programación lo que permite la fácil manipulación y procesamiento de la información.
Para el desarrollo del esquema de almacenamiento del software DRÜCKE, fue
necesario implementar los objetos en la programación realizada en tiempo real.
EVENTOS
Los eventos son aquellos sucesos o acciones generados por el usuario que proporciona
un flujo de programación definido por la ruta que el usuario desee. Estos son
generados desde el hardware (teclado y ratón) y su determinación genera el
funcionamiento de DRÜCKE.
38
3. DISEÑO Y DESARROLLO DEL SOFTWARE (DRÜCKE)
3.1. DESARROLLO DEL MODELO DE DATOS
El modelo de datos se estructuró con base en los requerimientos del motor de cálculo.
La comunicación de datos entre los objetos, clases y métodos, fue establecida de tal
forma para que la información ingresada por el usuario permaneciera lista y disponible
una vez ejecutada la orden de realizar el cálculo. Se implementó un modelo de datos
por componentes: Cuando es ingresada en el Graphical User Interface (GUI) los datos
básicos de la red de distribución hidráulica, tales como las propiedades de los nodos,
dispositivos de almacenamiento, tipo de fluido, entre otras características de la red; se
ejecuta mediante programación en tiempo real el almacenamiento de la información,
proporcionando a la aplicación la versatilidad de generar un procesamiento rápido y
adecuado de la información.
Para el desarrollo inicial de DRÜCKE se establecieron los principales componentes del
software para el análisis y procesamiento de información, los cuales se describen a
continuación:
Transferencia de Información
Módulos principales de la aplicación
Esquema 1.Ciclo lógico del Modelo de Datos
USUARIO
3.1.1. ENTRADA DE DATOS
1. Lectura Directa
2. Datos importados
3.1.2. ALMACENAMIENTO DE INFORMACIÓN
1. En Objetos
2. En matrices condensadas
3.1.3. MOTOR DE CÁLCULO
1. Implementación del EGGA
3.1.4. SALIDA DE DATOS
1. Reporte DRÜCKE
2. Datos Exportados
1
2 3
4
39
3.1.1. ENTRADA DE DATOS
La entrada de datos en el software, se puede realizar de diferentes formas con el
propósito de proporcionar la accesibilidad a los diferentes tamaños de las redes
hidráulicas. Es posible realizar el ingreso de datos de forma directa, es decir,
directamente sobre objetos del GUI para la inserción de objetos. Adicionalmente, si se
trabajara redes más complejas o con un tamaño mayor, DRÜCKE proporciona la
posibilidad de importar bases de datos y así evitar la labor dispendiosa de la inserción
de la información. La primera ruta de ingreso de datos, funciona mediante eventos
determinados por el usuario en donde se hace específico cada valor de la red.
Proceso cíclico. Se ejecuta en tiempo real la interacción entre el usuario y los
objetos del GUI tantas veces hasta lograr la configuración de la red. Finaliza el
ciclo cuando el usuario da la orden de continuar con el evento de transición.
Transición. Evento dónde se da la orden de iniciar la verificación y validación de
la base de datos.
Jerarquía de la GUI para la entrada de datos. Se realiza sin haberse ejecutada
la orden de cálculo
Flujo de Información. Se realiza una vez ejecutada la orden de cálculo
Módulo después de haberse ejecutado la aplicación
Módulo antes de haberse ejecutado la aplicación
Esquema 2. Modelo de datos – Lectura directa de Información
INTERFAZ GRÁFICA (GUI)
MENÚ
Selección de Objetos Java
(Interacción con los
JFrame, JToggleButton,
JButton y demás objetos)
MOTOR DE CÁLCULO
Base de Datos
Salida de Datos
40
La parte derecha del esquema superior (GUI), corresponde al conjunto de clases y
métodos secundarios los cuales se realizan antes de oprimir el botón de ejecutar el
cálculo de la aplicación, mientras que la parte izquierda corresponde a las clases
principales de DRÜCKE y cuyo funcionamiento se origina una vez oprimido el botón de
ejecutar la aplicación. A diferencia de ésta ruta para el ingreso de información, la
segunda ruta consiste en la importación de datos, se hace mediante un módulo
especial GUI de importar, es decir: se suprime el proceso cíclico descrito previamente,
ejecutándose sólo una vez la orden para importar el archivo de texto.
Transición. Evento dónde se da la orden de iniciar la verificación y validación de
la base de datos.
Jerarquía de la GUI para la entrada de datos. Se realiza sin haberse ejecutada
la orden de cálculo
Flujo de Información. Se realiza una vez ejecutada la orden de cálculo
Módulo después de haberse ejecutado la aplicación
Módulo antes de haberse ejecutado la aplicación
Esquema 3. Modelo de datos – Lectura no directa de Información (Datos importados)
Aunque éstos dos esquemas están integrados en un sólo modelo de datos, se
diferencian en la transferencia de información. En el primer esquema, el usuario
interactúa con los objetos del GUI en un proceso cíclico, almacenando información
preliminar en tiempo real en espacios denominados “objetos”. Una vez generada la
orden de continuar con la transferencia de información, el proceso cíclico de
interacción entre el usuario y los objetos del GUI finaliza y toda la información
preliminar almacenada, es transferida a la clase Base de Datos; mientras que el
INTERFAZ GRÁFICA
MENÚ (Opción importar)
MOTOR DE CÁLCULO
Base de Datos
Salida de Datos Selección del Archivo de
texto
41
segundo esquema, dónde se importan datos mediante un archivo de texto, funciona a
partir de un evento establecido por el usuario con el objetivo de transferir toda la
información leída a la clase Base_de_Datos, sin necesidad de realizar un
almacenamiento preliminar.
Con éste esquema de trabajo se procede a realizar la simulación hidráulica en el
período de tiempo extendido, generando un bucle en el motor de cálculo para obtener
la variación de energías y caudales del sistema. A partir de este Módulo generalizado,
se procede a continuación con la explicación detallada del almacenamiento de la
información.
3.1.2. ALMACENAMIENTO DE LA INFORMACIÓN
Cómo se había indicado previamente, el aplicativo guarda la información en tiempo
real antes de ser ejecutada la orden de cálculo. Dicho lugar de almacenamiento hace
referencia a las instancias de las clases denominados objetos.
Posterior a éste tipo de almacenamiento de información, DRÜCKE enviará todos los
datos a las matrices globales del programa. Éste esquema de almacenamiento
matricial es la estructura principal de la clase Base de Datos, ya que se genera a partir
de la composición de éstas las iteraciones y variaciones en el período extendido.
Esquema 4. Almacenamiento general de la información
Antes de seguir con la siguiente etapa se realiza una validación de la información
suministrada con el propósito de evitar errores en el procesamiento de la información
y de esta forma evitar el colapso de la aplicación. En esta etapa de almacenamiento, es
indispensable el proceso de validación ya que así se evita desperdiciar memoria en el
tiempo de ejecución con los posibles errores ocasionados, tales como la omisión de
3.1.2.2
3.1.2.1
INTERFAZ GRÁFICA
(GUI)
ALMACENAMIENTO
DE INFORMACIÓN
EN OBJETOS
ALMACENAMIENTO DE INFORMACIÓN EN
MATRICES CONDENSADAS
Matrices de Líneas Matrices de Nodos
Después de ejecutada la orden de cálculo
Antes de ejecutada la orden de cálculo
42
información básica para la simulación en el período extendido, elementos hidráulicos
desconectados, tuberías mal insertadas, entre otros.
3.1.2.1ALMACENAMIENTO DE LA INFORMACIÓN EN OBJETOS
ALMACENAMIENTO DE INFO INTERFAZ GRÁFICA (GUI)
Objetos de Almacenamiento
Esquema 5. Llenado de objetos
Cuando se inserta el primer elemento en el área de dibujo del GUI, se genera en el
objeto una posición para almacenar la información de éste primer elemento. Si se
llegase a añadir mayor cantidad de elementos, éste objeto tiene la facultad de
aumentar su longitud hasta igualar la cantidad de elementos insertados.
Internamente, la aplicación clasificará cada elemento hidráulico insertado con un
identificador global y un identificador parcial, es decir; para los Tanques se utilizará el
entero “0” para denotar la existencia de un tanque, el entero “1” para los nodos y el
entero “2” para los embalses. Ésta clasificación se realizó con el propósito de discernir
cada elemento cuando es condensado en la matriz general y así poder operar lo más
rápido posible toda la red hidráulica (nótese que las tuberías no tienen identificador
global ya que son condensadas en una matriz diferente); i.e. si se llegase a insertar 5
nodos en la interfaz gráfica del usuario, la aplicación manejará la instrucción como 5
elementos de tipo 1 (identificador global) con identificador parcial 1, 2, 3, 4, 5. Nótese
que el orden de inserción de los elementos hidráulicos es el determinado por la
aplicación para nombrar cada elemento independiente del nombre asignado por el
usuario a cada elemento, esto con el propósito de manejar un orden interno y evitar la
confusión en el procesamiento de la información. Por otro lado, las tuberías serán
almacenadas de igual forma en un objeto cuya longitud será igual al número total de
tuberías insertadas.
1T
1N
2N
Se han insertado tres Nodos, dos
Tuberías y un Tanque en el tiempo
de Ejecución.
1
2
3
1
Vec
tor
No
do
s
Vec
tor
Tan
qu
es 3N
1
2
Vec
tor
Tub
ería
s
43
3.1.2.2ALMACENAMIENTO DE LA INFORMACIÓN EN MATRICES CONDENSADAS
Todo este proceso de almacenamiento se lleva a cabo en el tiempo real de ejecución,
el cual concluirá cuando el usuario dé la instrucción de proseguir con el cálculo de la
tipología armada. Una vez confirmada ésta instrucción, los objetos serán almacenados
conjuntamente en matrices globales las cuales interactúan con los cálculos iterativos
de la metodología de la Extensión del GGA. No obstante, antes de realizar el llenado de
las matrices globales, se valida la información ingresada para evitar errores u
omisiones de cálculo en el software. Nodos, tanques y embalses desconectados,
tuberías mal insertadas, omisiones en los requisitos de configuración de cálculo, son
algunas de las causales de rechazo de la aplicación para continuar con la orden de
cálculo. Ésta validación de la información se hace mediante dos formas:
Validación instantánea en los campos de texto para el ingreso de
información. Consiste en restringir al usuario ingresar caracteres de cierto tipo
de dato en las diferentes cajas de texto; i.e. si se solicita el valor numérico del
valor de θ y el usuario ingresa un carácter de tipo String, entonces no se
permitirá continuar con la aplicación hasta ser modificado por un carácter de
tipo Integer o Double.
Validación de la información preliminar almacenada en los objetos. Ya
oprimido el botón para iniciar el cálculo, el aplicativo llama al método de
Validación_de_Objetos, el cual consiste en un bucle que recorre cada posición
de los objetos con el objetivo de encontrar una inconsistencia en el sistema;
i.e.si un nodo cualquiera no se encuentra relacionado en la matriz de tuberías
con otro nodo, éste estará aislado de la red hidráulica denominándose como un
nodo desconectado. Tal y cómo se pudo apreciar en la sección 2.2.1., la matriz
representa la relación entre todos los elementos de la red hidráulica. Si se
permitiera el ingreso de un nodo desconectado en la matriz, quedaría una fila
con un solo elemento en su diagonal. Al solucionar la ecuación matricial [10] se
generarían inconsistencias en los resultados ya que las características y
propiedades de éste nodo son independientes de la configuración de la red
hidráulica. Cuando sucede éste tipo de eventos, el método de Validación de
Objetos arroja una ventana emergente de error, deteniendo la ejecución del
programa.
El propósito de condensar la información en matrices consiste en organizar todos los
datos contenidos en los objetos de tal manera que sean fáciles de operar y así evitar el
llamado continuo de estos objetos disminuyendo de esta forma la complejidad de
cálculo, ya que al operar objetos por separado es necesario crear subrutinas para el
llamado de cada elemento de la composición vectorial.
44
La información condensada se reunirá en cuatro matrices globales las cuales serán
operadas directamente por la nueva metodología del EGGA y cuya composición será
definida por el tipo de dato que almacenará. A continuación se muestra la estructura
de las matrices globales:
Para las tuberías:
MATRIZ LINEAS MATRIZ VARIABLES
ID Línea Nodo Nodo
L D Km A Rij Aij Bij Qij
Tipo de dato: Integer Tipo de dato: Double
Tamaño n x 3 Tamaño n x 10
Para los nodos:
MATRIZ FIJOS MATRIZ DEM
ID ID_EH ID_NODO A Qdij H Elevac. DB PD Max Min
Tipo de dato: Integer Tipo de dato: Double
Tamaño n x 3 Tamaño n x 8
Esquema 6. Modelo matricial de la información condensada.
45
Para las matrices de las tuberías se tiene que,
ID Línea = Identificador determinado por la aplicación para la tubería ,
Nodo = Nodo de partida o inicial de la tubería ,
Nodo = Nodo de llegada o final de la tubería ,
L = Longitud de la tubería ,
D = Diámetro de la tubería ,
= Pérdidas locales de la tubería ,
Km = Pérdidas por accesorios de la tubería ,
A = Área de la tubería ,
Rij = Resistencia hidráulica de la tubería ,
Aij = Constante de cálculo
Bij = Constante de cálculo
Qij = Caudal de la tubería ,
A partir de la línea punteada se encuentran las variables del sistema, las cuales
tomarán un valor diferente para cada iteración. Éstas corresponden a las variables R,
, Aij, Bijy Qij cuya dependencia se origina a partir del cálculo del caudal.
L D Km A Rij Aij Bij Qij
La cabeza de la flecha [ ] indica cuales son las variables necesarias para calcular la variable de la cola de
la flecha.
Esquema 7. Configuración de la Matriz Variables – Dependencias de las variables
De acuerdo a las dependencias de cada variable, se debe definir el orden de cálculo de
cada columna de la matriz Variables teniendo en cuenta que los cuatro primeros
parámetros permanecen constantes en cada iteración (excluyendo el
valor del factor de fricción de Darcy)
2 3 4 5
ORDEN DE CÁLCULO
1
46
El llenado de la matriz Variables se hace de la siguiente forma:
Cálculo del factor de fricción de Darcy Weisbach Para realizar el cálculo del factor de fricción de Darcy Weisbach, es necesario realizar un número finito de iteraciones de la siguiente manera:
1 2 3 4 5 6
*
** [ [
√
]]
| |
| |
* Suposición de velocidad. ** Suposición de factor de fricción.
Donde,
Número de iteración
Velocidad correspondiente a cada iteración
[24]
Numero de Reynolds
Diámetro de la tubería
Viscosidad cinemática del fluido
[ [
√ ]]
[25]
Factor de fricción
Coeficiente de pérdidas
√
[26]
Velocidad correspondiente a cada iteración
1
47
Energía disponible para en nodo
Energía disponible para en nodo
Coeficiente de pérdidas por accesorios
PROCEDIMIENTO DE CÁLCULO DEL
Para poder determinar el valor del factor de fricción, es necesario suponer para la
primera iteración, un valor de velocidad (columna 1) con la que se procede a
calcular el número de Reynolds (columna 2). Al igual que la velocidad, se debe de
suponer un valor inicial para el de Darcy para poder calcular la columna 4 y 5. Se
procede a realizar el cálculo de la resistencia hidráulica y las dos constantes de
cálculo y para cada tubería. Ya terminada ésta iteración, se procede a la
siguiente haciendo el valor de y el calculado anteriormente
( respectivamente). Al finalizar cada iteración, se realiza la resta entre
y obtenidos en dicha iteración. Si la diferencia es menor a la tolerancia
establecida inicialmente, se da por terminado el proceso iterativo obteniendo el valor
final del factor de fricción de Darcy a partir de la columna 4 de la última iteración
(Larock, Jeppson & Watters, 2000).
Para esta versión de prueba, el f es dado.
Cálculo de la Resistencia hidráulica
[27]
Donde las dependencias son:
Constante de Darcy Weisbach
Longitud de la tubería
Diámetro de la tubería
Gravedad
Área de la tubería
Con la ecuación de Hazen-Williams
[28]
Donde las dependencias son:
22
48
Longitud de la tubería
Constante de Hazen-Williams
Diámetro de la tubería
Cálculo de la constante
[29]
Donde las dependencias son:
Coeficiente de pérdidas por accesorios hidráulicos
Gravedad
Área de la tubería
Cálculo de la constante
| |
| |
[30]
Donde las dependencias son:
Caudal transportado desde el nodo al nodo
Constante de proporcionalidad ( con la formulación de Darcy-
Weisbach y para la formulación de Haze-Williams).
Cálculo de la constante
| |
| |
[31]
En estos dos últimos pasos, el caudal que se emplea, corresponde a los caudales
supuestos para la primera iteración y los caudales calculados en las siguientes
iteraciones tal y como se muestra en el Esquema general del funcionamiento del Motor
de Cálculo de DRÜCKE.
3
44
5
49
A pesar de que los primeros cinco datos son fijos (excepto el factor de fricción de Darcy
durante la ejecución del programa, no pueden ser almacenados en la matriz de Fijos ya
que éstos tienen un tipo de dato Double diferente al de la matriz Fijos (Integer).
Adicionalmente, ésta información hace referencia a una tubería o la información
existente entre dos nodos.
Para las matrices de los nodos se tiene que,
ID = Identificador determinado por la aplicación para el nodo .
ID_EH = Identificador del tipo de elemento hidráulico (0 ó 1 ó 2)
A = Área para el caso de tanques.
Qdij = Caudal de demanda para el nodo .
H = Energía disponible para el caso de tanques y embalses.
Elevac. = Elevación para el nodo .
DB = Demanda Base
PD = Patrón de demanda
Max = Nivel máximo que puede alcanzar un tanque
Min = Nivel mínimo que puede alcanzar un tanque
Estas dos matrices de los nodos, a diferencia de la Matriz Variables, se caracterizan por
permanecer constante en todo el tiempo de ejecución de la aplicación. Si el usuario
desea modificar la configuración o tipología de la red, es necesario entonces realizar la
instrucción de edición en el software. En ésta instrucción, la aplicación retorna al
primer modelo de llenado vectorial de objetos donde se modifican directamente los
componentes de los mismos para proceder con la modificación de la matriz Fijos.
3.1.3. MOTOR DE CÁLCULO
Una vez terminado el proceso de almacenamiento de las matrices globales, DRÜCKE
comienza el procesamiento de la información secuencialmente dentro de un bucle
general el cual marca el cambio de cada intervalo de tiempo y busca la
convergencia del sistema. En el inicio del bucle, el software calculará los parámetros
iniciales de la matriz Variables partiendo de unos caudales supuestos para la primera
iteración. Nótese que estos caudales deben de ser ajustados en el primer tiempo con
el Método del Gradiente Global, una vez obtenidos todos los caudales con ésta
metodología, se procede a realizar el cálculo iterativo con el EGGA. Posterior al llenado
de la matriz Variables, se inicializa la matriz Aij con el esquema propuesto en la sección
2.2.1 calculando simultáneamente el vector de constantes, el vector de energías fijas y
la matriz Aif.
50
Cada valor de caudal adoptado por las tuberías es aproximado al valor de convergencia
conforme se realizan las iteraciones; cuando el error de tolerancia es menor al
establecido por el usuario entre la iteración actual y la anterior, se procede a calcular
el siguiente tiempo para el cual la variación de energías y caudales será diferente.
Después de haber inicializado todas las columnas de la matriz Variables, se procede a
realizar el cálculo de las nuevas energías y caudales con el Método del Gradiente
Conjugado, donde se podrá obtener la solución a la ecuación matricial arrojando como
resultado el vector de energías para cada elemento hidráulico. Ya obtenido éste vector
se procede con el cálculo de los caudales respectivos.
Para llevar a cabo todo el proceso descrito previamente, es necesario que el usuario
genere el evento lógico para el cual el software cambia su disposición de
funcionamiento; éste evento se refleja con oprimir el botón de cálculo. Una vez
realizada ésta orden, el software empieza a realizar los cálculos iterativos con
parámetros iniciales ingresados por el usuario o bien las establecidas dentro de la
aplicación por defecto y cuya finalización se hace mediante un condicional de tiempo,
es decir: si la sumatoria del número de intervalos de tiempo calculados supera el total
del tiempo establecido por el usuario, el bucle finalizará y el programa reportará los
resultados obtenidos.
51
Solución de la ecuación matricial
[ ] [ ]
INICIO DEL BUCLE GLOBAL {
Inicio del Bucle 2 {
} Fin del Bucle 2
Inicio del Bucle 3 {
} Fin del Bucle 3
} FIN DEL BUCLE GLOBAL
Esquema 8. Funcionamiento general del Motor de Cálculo de DRÜCKE
Método del Gradiente Conjugado
MÓDULO 2
En ésta etapa, el software extrae la
información calculada previamente
de los Aij, Bij con sus respectivos ID
con el propósito de hacer el llenado
de la ecuación matricial. Una vez
finalizado el proceso de llenado de la
ecuación matricial, se operan las
constantes para obtener el vector
[b]. En el primer tiempo de cálculo se
omite el término “[ext]” quedando
por defecto el Método del Gradiente
Global. Para los siguientes tiempos,
la constante “[ext]”hará presencia y
por ende la nueva metodología de
cálculo se aplicará.
MÓDULO 1
Inicialmente, con los caudales
determinados en el tiempo anterior
se calculan todas columnas de la
Matriz Variables. Cuando inicia el
motor de cálculo, se supone un valor
de caudales.
[ ][ ] [ ][ ] Ec. [22]
La anterior ecuación se puede expresar como:
MÓDULO 3
Finalmente, mediante el Método del
Gradiente Conjugado se calcula con
un número finito de iteraciones el
valor del vector [X] el cual
corresponde a las Energías del
sistema. Con éste vector de Energías
se procede a realizar el cálculo de los
caudales con la ecuación [15] los
cuales serán ingresados en la matriz
Variables al inicio del Bucle,
iniciando de esta forma una nueva
iteración.
Donde,
[ ]
[ ]
[ ][ ]
A partir de la solución matricial, se
obtienen los caudales con la ecuación [15]
ECUACIÓN MATRICIAL
52
Para llevar a cabo el primer módulo del motor de cálculo, es necesario establecer el
orden con el que se llena la matriz Variables. Como se había definido en la sección
3.1.3.2. el orden de cálculo se rige por las dependencias de las variables.
Mediante éste esquema se realiza el cálculo de las variables que comprenden la red
hidráulica. Conforme se encuentra una solución para cada tiempo, se almacena en la
matriz de resultados todos los valores pertinentes. Ya finalizado el tiempo de cálculo,
se reportará mediante tablas y gráficas los resultados almacenados en dicha matriz.
3.1.3.1 IMPLEMENTACIÓN DEL ALGORITMO EGG
Para comprender la implementación del algoritmo EGG, es necesario disgregar el
segundo módulo dónde se fundamenta la estructura del algoritmo.
Se adiciona entonces en el algoritmo la metodología del esquema Implícito – Explícito
de Euler después de haber calculado para el primer tiempo las variables con el GGA. La
estructuración e implementación del algoritmo EGG se hace tal y cómo se explicó en la
sección 2.2 y su programación se realizó mediante el siguiente esquema:
MATRIZ LINEAS MATRIZ FIJOS
ID Línea Nodo Nodo ID ID_EH ID_NODO
Tipo de dato: Integer Tipo de dato: Integer
Tamaño n x 3 Tamaño n x 3
Esquema 9. Recorrido matricial (Matriz Variables)
La Matriz Líneas es recorrida
secuencialmente consultando
para cada Nodo y Nodo que
identificador global tiene, es
decir, si éste corresponde a un
Tanque (ID=0), un nodo (ID=1)
o un embalse (ID=2). Para
realizar ésta comprobación es
necesario ir a la Matriz Fijos y
con el ID del nodo encontrar
qué tipo de elemento está
uniendo la tubería.
53
Cuando se ha determinado que tipo de elemento corresponde el Nodo y el Nodo , se
procede a realizar el llenado de la ecuación matricial con base en los siguientes
criterios:
Si el Nodo es un Tanque, se deberá calcular para éste elemento el operador
derivado de la ecuación [21] y adicionarlo en la matriz Aij en la posición
, donde A es el área del tanque, es el parámetro del esquema Implícito -
Explícito del algoritmo EGG y es el intervalo de tiempo. Adicionalmente,
para la posición del vector [ext] es necesario plantear la ecuación:
[∑ ] derivado de la ecuación [21] para dicho Nodo . De igual
forma, aplica para el nodo .Para esta metodología, a diferencia del GGA, la
matriz Aij adopta un mayor tamaño igual al número de nodos más el número de
tanques.
Si el Nodo es un embalse, el Aij para ésta tubería deberá ir en la matriz Aif y Aij
Nótese que los mismos identificadores del Nodo y el Nodo indican en que posición
de la matriz Aij deben ir (Ver sección 2.2.1.).Cuando el bucle para recorrer y comparar
toda la Matriz Líneas finaliza, la matriz Aij queda planteada con el método Implícito –
Explícito del GGA. Se opera posteriormente con el Método del Gradiente Conjugado y
se obtiene la solución tal y cómo se describe en secciones anteriores.
La adición del parámetro en el esquema antiguo del Método del Gradiente Global, se
implementa en DRÜCKE cuando se calcula la ecuación matricial en la operación de la
constante . Éste es el equivalente al operador antes mencionado [ext] y cuyo
contenido se pudo apreciar en la sección 2.2.1. De esta forma es implementado el
algoritmo EGG.
3.1.4. SALIDA DE DATOS
Cuando ya se ha terminado todo el proceso de cálculo, el usuario puede visualizar los
resultados de las energías y caudales para los diferentes nodos, tuberías y sistemas de
almacenamiento mediante tablas o gráficas, o bien exportarlos a otra fuente para su
manipulación con tan sólo accionar un botón para ejecutar dicho evento. Estos
resultados han sido recopilados en matrices; cuando en el proceso de cálculo se
encuentra la convergencia para cada tiempo del sistema, se llena una posición
determinada de la matriz de forma secuencial con el respectivo resultado. Cada nodo
tiene una columna de la matriz designada para el almacenamiento de la información;
las filas de dicha matriz corresponden a los diferentes tiempos, es decir, si se ha
ingresado para el cálculo un intervalo de una hora y se quiere simular el
comportamiento durante un día, entonces la matriz tendrá una longitud de 24 filas.
54
Existe dos matrices generales de resultados: la primera que contiene los resultados de
las energías para cada nodo y la segunda que contiene los valores de los caudales de
cada línea. De ésta última es posible derivar los resultados de las velocidades para cada
tubería mediante la ecuación:
[33]
Donde es la velocidad de la tubería que une los nodos y , es el caudal de la
tubería y el área de la sección transversal de la tubería.
Para que el usuario pueda visualizar los resultados, es necesaria la interacción con los
objetos del GUI. En el software DRÜCKE es posible visualizar varias gráficas de energías
en una sola gráfica con el fin de poder discernir las magnitudes para los diferentes
elementos hidráulicos en varios tiempos.
3.2. METODOLOGÍA PARA LA SOLUCIÓN DE SISTEMAS LINEALES
Como se afirmó en la sección anterior, para llevar a cabo el cálculo del EGG es
necesario realizar en cada iteración la solución al sistema lineal establecido por la
configuración de la red hidráulica. En la parte preliminar de la investigación para el
desarrollo de DRÜCKE, fue necesario conocer el funcionamiento de los modelos de
análisis numéricos existentes para la solución matricial de sistemas lineales, evaluando
para cada método la velocidad de procesamiento y complejidad de cálculo para poder
ser implementada en el software DRÜCKE. El Método de Gauss Jordan, el Método de la
Factorización de Cholesky y por último el Método del Gradiente Conjugado, el cual se
puede usar ya que la matriz es simétrica y definida positiva. Estos fueron los
esquemas analizados para evaluar cuál de ellos se adaptaba a las necesidades de las
redes hidráulicas que serán introducidas en el software.
Para la solución de las redes de distribución, es necesario plantear el sistema de
ecuaciones que rigen el comportamiento hidráulico del sistema, las cuales están
fundamentadas en las leyes de la conservación de la energía. Una vez planteado el
sistema de ecuaciones, se puede representar matricialmente todo el conjunto de
ecuaciones mediante la ecuación:
[32]
Donde es la matriz de tamaño cuyos valores representan las propiedades de
las tuberías y las relaciones de cada nodo dentro del conjunto total de la red de
distribución, es decir, la relación existente entre el nodo y el nodo ; es el vector
con longitud de energías desconocidas de cada nodo de la red (vector solución) y
55
es el vector constante determinado a partir de las demandas y cabezas hidráulicas
constantes conocidas, también con longitud .
3.2.1. ALMACENAMIENTO DE LA MATRIZ Aij
Uno de los problemas principales para la solución de sistemas lineales, es la forma de
almacenamiento de la información, ya que en sistemas densos la matriz adquiere
un tamaño suficiente para que el cálculo del método de análisis numérico se torne
lento y dispendioso (George, Liu & Ng, 1994). Por tal razón, adicional al método
elegido, el esquema determinado para el almacenamiento de la información aportará
a determinar cuán rápido es la solución de la ecuación lineal. Inicialmente, se empleó
la metodología de Gauss Jordan con un sistema de almacenamiento basado en la
reducción de ceros. Éste sistema de reducción de ceros, consiste en establecer una
nueva matriz sólo con aquellas posiciones diferentes a cero, ya que éstas son las únicas
relevantes para el cálculo numérico. A partir de la figura 1, podemos obtener la matriz
[ ].
A11 -A12 0 0 -A15 0
-A21 A22 -A23 -A42 0 0
= 0 -A32 A33 -A34 0 0
0 -A42 -A43 A44 -A45 0
-A51 0 0 -A45 A55 -A56
0 0 0 0 -A65 A66
Esquema 10. Almacenamiento convencional de la matriz Aij.
Como la matriz es simétrica, si se almacena sólo la mitad de ésta se podrá conocer
toda la información del sistema; se procede entonces a suprimir las posiciones nulas y
la mitad de la matriz obteniendo:
A11 -A12 -A15
A22 -A23 -A42
= A33 -A34 0
A44 -A45 0
A55 -A56 0
A66 0 0
Esquema 11.Reducción matricial.
Aij = Aji
56
Como se puede apreciar, la diagonal de la matriz adopta la posición de la primera
columna y las posiciones no nulas quedan adyacentes a ésta columna. La dimensión de
ésta matriz es de , donde es el número total de nodos en la metodología del
GGA, y en el EGGA es la suma del número total de nodos y tanques. Para ambas
metodologías, es la suma de tuberías que convergen al nodo con mayor
conectividad. Paralelamente, se debe de crear una matriz de identificadores para
determinar la ubicación de cada valor de dentro de la matriz global. Éste método
de almacenamiento fue probado con los tres métodos mencionados anteriormente
para la solución de la ecuación lineal con una red real de tamaño 16.798 nodos, es
decir, una matriz de 16.798 x 16.798 correspondiente al sector 11 de la red hidráulica
de Bogotá D.C. con el propósito de poder discernir la velocidad de cálculo para cada
método.
Existen otras formas de almacenamiento para las matrices dispersas en dónde ya no se
almacena la información en matrices sino en vectores. El Software EPANET usa como
referencia estos esquemas de almacenamiento, en dónde se realiza como en el
método anterior la supresión de las posiciones iguales a cero y se almacena toda la
información relevante en arreglos. Los dos métodos más conocidos expuestos por la
literatura corresponden al Esquema Comprimido y al Esquema No
Comprimido(George, Liu & Ng, 1994). Éste primero consiste en almacenar la diagonal
en un vector DIAG, los elementos diferentes a cero en otro vector D_CERO y
adicionalmente, existe otro vector identificando la posición en donde se genera el
cambio de fila en el vector ID_C, es decir:
A11 -A12 0 0 -A15 0
A22 -A23 -A42 0 0
=
A33 -A34 0 0
A44 -A45 0
Simétrica A55 -A56
A66
57
DIAG
D_CERO
ID_C
Esquema 12.Modelo de almacenamiento reducido
Con éste esquema de almacenamiento, se genera un aumento en la velocidad de
procesamiento en el desarrollo de la solución del sistema lineal, ya que el algoritmo
del método empleado recorrerá sólo un vector y de esta forma evitará tener que
perder memoria recorriendo filas y columnas en las matrices.
La metodología usada por el software DRÜCKE para la solución de sistemas lineales,
corresponde al Método del Gradiente Conjugado, ya que proporciona la respuesta más
rápida en la solución de la ecuación matricial compuesta por una matriz [A] simétrica y
definida positiva (O´Connor, 1997).
El Método del Gradiente Conjugado por una parte evita el cálculo y el almacenamiento
de la información requerida en un método de Newton de Gradiente y por otra intenta
mejorar la convergencia de los métodos de descenso por Gradiente (Hernández, 2006),
lo que permite que el procesamiento de la información sea lo suficientemente rápido
para que alcance en sistemas densos una respuesta rápida y segura.
El método del gradiente conjugado se fundamenta en el método del máximo ascenso –
descenso, el cual busca determinar los máximos o mínimos de una función cualquiera.
Para un punto determinado se calcula el gradiente de la función para dicho punto, el
cual definirá la dirección de cálculo por donde se empezará a buscar la solución de la
ecuación.
A11 A22 A33 A44 A55 A66
-A12 -A15 -A23 -A42 -A34 -A45 -A56
1 3 5 6 7
58
Ecuación [34]. Composición de la ecuación del Método del Gradiente Conjugado.
Después de haber sido definida la dirección de cálculo, se determina una porción del
gradiente para éste punto mediante la constante , también denominado el paso de
cálculo.
Para el Método del Gradiente conjugado, se asume que la función es cuadrática a
diferencia del método de Newton donde la función se analiza linealmente.
El gradiente de una función cuadrática es una función lineal.
Ecuación [35]. Formulación del Paso de cálculo
El Método del Gradiente Conjugado acerca a un máximo de una función cuadrática a
través de pasos de gradiente.
[36]
Función cuadrática de un vector.
[37]
Punto Nuevo
Punto Anterior
Paso
Dirección
59
[38]
Sistema lineal [39]
Donde,
Es el gradiente de la funcióncon tamaño Vector con los componentes de la función cuadrática con tamaño Vector de variables del sistema con tamaño
Sustituyendo la ecuación anterior para encontrar el máximo de la función, se obtiene
que:
[40]
[41]
[42]
[43]
Se deriva la anterior ecuación para obtener la expresión correspondiente al paso de
cálculo:
[44]
[45]
60
IMPLEMENTACIÓN DEL ALGORTIMO DEL GRADIENTE CONJUGADO
En el motor de cálculo del software DRÜCKE se implementó el siguiente algoritmo:
Se calcula las condiciones iniciales mediante las ecuaciones [46] y [47], teniendo en cuenta que éste cálculo sólo se hace una vez en la ejecución del programa.
[46]
[47]
Inicio del Bucle {
A partir de la condición inicial, se procede a calcular el valor del paso para multiplicar por el respectivo gradiente.
[48]
[50]
[51]
[52]
[53]
Fin del Bucle }
Éste bucle finaliza cuando es muy pequeño. Para éste caso, en el tiempo de
ejecución de la aplicación se genera la instrucción de continuar con la siguiente
iteración del método del EGGA. En el software DRÜCKE, la multiplicación se hace
una sola vez para cada iteración con el propósito de optimizar la velocidad de
procesamiento.
3.3 IMPLEMENTACIÓN DE LA INTERFAZ GRÁFICA (GUI)
El desarrollo de la interfaz gráfica se hizo exclusivamente en una clase aparte con el
propósito de poder discernir los diferentes algoritmos contenidos dentro de DRÜKE.
Ésta clase se caracteriza por contener un gran número de métodos que trabajan en
conjunto para poder determinar el aspecto visual del software y adicional a esto la
funcionalidad interna para cada objeto.
61
Para el desarrollo de la GUI es necesario planificar la estructura de manera tal que
todas las herramientas sean accesibles y fáciles de encontrar, adicionalmente los
iconos y pictogramas deben de dar una idea de la funcionalidad de éste, guiando al
usuario a resolver sus necesidades. En el Anexo [1] se podrá apreciar en detalle el
Manual del Usuario de DRÜCKE explicando cada herramienta de la aplicación.
Conforme a la prioridad para poder modelar y simular una red hidráulica se ha
diseñado la estructura informática de la GUI de la siguiente forma:
Esquema 13. Estructura básica de la Interfaz Gráfica de Usuario.
A partir de ésta estructura básica se comienzan a desglosar herramientas que
funcionan de manera conjunta para la transferencia de información entre las clases y
GUI
MENÚ PRINCIPAL
BARRA PRINCIPAL
INICIO CONFIGURACIÓN SIMULACIÓN RESULTADOS
VENTANA AUXILIAR
DE EDICIÓN
Archivo
Editar
Insertar
Herramientas
Ayuda
Edición Tanques
Edición Nodos
Edición Embalses
Archivo
Dibujo
Navegación Gráficas
Tablas
Elementos Hidráulicos
Parámetros del Fluido
Unidades
Período Extendido
62
objetos y así mantener almacenada todos los datos pertinentes y listos para el
momento de la ejecución del cálculo.
3.3.1. DESARROLLO DE OBJETOS VISUALES
Todos los métodos utilizados para llevar a cabo la interfaz se encuentran contenidos
dentro de la clase “GUI” la cual contiene los diferentes eventos que pueden llegar a
presentarse dentro del tiempo de ejecución total de la aplicación. Entiéndase como
evento todo suceso o acción generado por el usuario que proporciona un flujo de
programación definido por la ruta que el usuario desee. Son eventos típicos el click
sobre un botón, el hacer doble click sobre algún objeto, pulsar una tecla, arrastrar un
ícono, mover el ratón, soltar el click entre otros, los cuales deben de ser programados
por aparte para lograr una interfaz funcional.
Cada uno de los eventos realizados por el usuario determinará la ruta de
programación; internamente el evento más importante para el cual todos los métodos
convergerán será la acción del botón de ejecución de cálculo. Independiente a la ruta
que el usuario haya elegido para llevar a cabo la inserción de la información, una vez
oprimido éste botón deberá de haberse registrado en todos los objetos la información
acumulada para continuar con el siguiente paso en el modelo de datos,
correspondiente a la validación de la información guardada y el funcionamiento del
motor de cálculo de DRÜCKE.
Para el desarrollo de la parte visual se usaron los siguientes objetos JAVA los cuales son
orientados a los posibles eventos registrados por el usuario:
JFrame:
Es el espacio de diseño destinado a la inserción de objetos, también en la jerga popular
se conoce como el lienzo de la interfaz gráfica. Sobre éste JFrame se insertan los
botones, menús, tablas desplegables, barras de desplazamiento y todo lo concerniente
al GUI para la modelación y simulación de redes hidráulicas.
Inserción de Objetos
ÁREA DE TRABAJO
63
JMenuBar:
Consiste en la Barra de Menú, la cual contiene las funcionalidades básicas de una
aplicación convencional. Una vez oprimido uno de estos ítems se podrá desplegar un
número de opciones definidos por el programador.
JPanel:
Como su nombre lo indica, es un panel donde se pueden almacenar objetos. Su
funcionalidad es similar a la del JFrame, sin embargo, éste es utilizado para contener
objetos de manera estructurada y agrupada, es decir, si se contuviera una serie de
botones dentro de un JPanel, se pueden desactivar todos con sólo desactivar el JPanel
o si quisiera mover todos los botones al mismo tiempo, sólo basta con mover el JPanel.
En este panel se incluirán objetos y módulos específicos para la entrada de datos,
simulación y resultados.
JMenu Bar
JPanel
64
JTabbedPane:
Un JTabbedPane, es un espacio destinado para acumular JPanel. Cuando se acumula
más de uno, éste tiene la propiedad de almacenarlos uno sobrepuesto del otro,
dejando a la vista pestañas para seleccionar el JPanel que el usuario desee. Estos
JPanel almacenados corresponden a la barra principal de DRÜCKE y conforman las
pestañas de Inicio – Configuración – Simulación y Resultados, de donde se administran
todas las características de la modelación hidráulica.
En el software desarrollado, se pueden apreciar dos JTabbedPane principales. El
primero corresponde a la barra global de herramientas donde se puede elegir todas las
opciones para la configuración de la tipología de red elegida por el usuario, y la
segunda corresponde a la ventana de edición rápida.
JButton:
Éste tipo de objeto es el más común en todas las interfaces gráficas, consiste en un
botón el cual al ser presionado se reintegra a su estado natural cuando se suelta el
click.
JButton
JTabbedPane
65
JToggleButton:
A diferencia de un JButton, los JToggleButton tienen la cualidad de no retornar a su
estado natural cuando son oprimidos, por lo tanto cada vez que se realice el evento
click sobre uno de ellos, perdurará el estado oprimido del JToggleButton.
Como se puede apreciar en la imagen superior, el JToggleButton queda accionado
después de haber oprimido click sobre éste.
JButtonGroup:
A pesar de no ser visible en el tiempo de ejecución de la aplicación, los JButtonGroup
tienen la particularidad de agrupar objetos cuyas cualidades permiten que el objeto no
regrese a su estado natural como el JToggleButton o el JRadioButton. Cuando se le es
asignado éste tipo de botones al JButtonGroup, los objetos dejarán su estado de
oprimido una vez se oprima otra de su misma índole.
JLabel:
Es el objeto más sencillo de todos. No han sido programados los JLabel en DRÜCKE
frente a cualquier evento ya que son etiquetas que tienen la función de informar.
JToggleButton
JLabel
66
JText Field:
También denominado campo de texto, son aquellos espacios destinados para que el
usuario ingrese textos pequeños mediante pulsaciones del teclado. Para grandes
textos se utiliza la herramienta JTextArea.
Para el desarrollo de la interfaz gráfica de DRÜCKE, se ha pensado en que ésta debe de
tener la versatilidad suficiente para que el usuario pueda llegar a una tarea específica
por diferentes rutas; i.e. si el usuario quiere editar algún elemento insertado, lo podrá
hacer mediante la ventana auxiliar ubicada en el costado derecho del JFrame o bien
podrá desplegar del JMenu Bar en la opción Editar el cuadro de diálogo para proceder
con la edición del elemento.
Después de haber realizado el bosquejo de la ubicación de los botones y la distribución
del espacio, se procede como parte final de la edición de la GUI, la inserción de las
imágenes en formato ”png” para cada botón, panel y demás objetos dibujados. Antes
de realizar ésta modificación se debe de borrar el contenido visual que trae por
defecto la IDE NetBeans, con el propósito de poder sobreponer la imagen con el diseño
de DRÜCKE.
JText Field
Área de Dibujo
67
3.3.2. PROGRAMACIÓN DE EVENTOS
Form Mouse Pressed (Mouse)
Éste evento fue programado para el JFrame y cuyo objetivo fue realizar el
dibujo dinámico de objetos tales como los tanques, nodos y embalses. Se
genera cuando es oprimido el click dentro del área del JFrame (excepto las
áreas donde existen los JPanel o JTabbedPane); si alguno de los JToggleButton
correspondientes a la paleta de dibujo está activado, entonces al generarse
sobre el área libre del JFrame el click se insertará automáticamente el dibujo
correspondiente al JToggleButton activado.
JToggle Button – Jbutton Action Performed (Mouse)
Éste evento es el más básico. Se genera cuando es activado un objeto como el
JButton o el JToggleButton. La instrucción interna se genera cuando se oprime
el click sobre el objeto.
ComponentAdded (Container)
Éste evento fue programado en el Panel de configuración de los patrones de
consumo. Existe en ese panel una tabla (Container) con 24 celdas disponibles
para adicionar. Cuando se modifica alguna casilla se refleja inmediatamente en
la gráfica al costado derecho. Este dibujo repentino de la gráfica se ha realizado
mediante la programación de este evento. Adicionalmente, el evento
Component Removed fue programado de igual forma cuando se modifica
alguna casilla de las 24 existentes para generar el cambio instantáneo en la
gráfica de la diestra.
68
4. APLICACIONES, RESULTADOS Y DISCUSIÓN
4.1. CASOS DE APLICACIÓN
El software descrito previamente, está facultado para resolver determinadas tipologías
de redes con la inclusión de sistemas de almacenamiento tales como tanques y
embalses. Los resultados obtenidos, fueron validos en una hoja de Excel (ANEXO No.3),
dónde se verifica que las ecuaciones de energía y masa se cumplan para cada nodo;
para llevar a cabo ésta validación hidráulica se debe cumplir la igualdad en la ecuación
número [32] , tal y cómo se evidencia en dicho anexo.
Los sistemas de regulación y adición de energía (como las válvulas y las bombas
hidráulicas respectivamente), no hacen parte de éste proyecto, ya que no es necesario
la inclusión de los mismos en las redes hidráulicas para poder mostrar el problema
descrito en la sección 1.
Para el análisis de cálculo del software DRÜCKE, se implementaron dos casos de redes
hidráulicas, cada una de ellas con las siguientes características:
CASO 1:
Corresponde a un modelo sintético simple con dos sistemas de almacenamiento, 5
nodos con demandas variables en el tiempo y una duración total de simulación de 10
horas. En cada cambio de hora se genera una disminución del 10% en el patrón de
consumo de los nodos hasta llegar a cero. Existe un sexto nodo el cual une las tuberías
que conectan los dos tanques y cuyo patrón de demanda es igual a cero. Éste es
necesario implementarlo en la modelación, ya que relaciona en la matriz , la
conexión entre los tanques uno y dos; de ésta forma el GGA y el EGGA adoptan en el
cálculo tres nuevas variables correspondientes a la energía en el nodo 6 y los caudales
de las dos tuberías adyacentes a éste.
Figura 3. Tipología de la red hidráulica – Aplicación
69
El análisis conceptual de ésta red fue descrito en el capítulo 2 de explicación simbólica del GGA y EGGA.
Definición de los patrones de consumo CASO 1
CASO 2:
En éste caso, se implementó una red real correspondiente
a una región del Sector 11 de la ciudad de Bogotá D.C..
Éste es un sector industrial primordialmente, sin embargo
parte de su área es residencial, la cual fue seleccionada
para proceder con la modelación. Se ha acondicionado la
red, adicionando dos tanques auxiliares de
almacenamiento con el propósito de poder discernir la
inestabilidad numérica en el cálculo de período
extendido. Por lo tanto, ésta red hidráulica se compone
de tres tanques y 50 nodos con demanda variable en el
tiempo.
70
4.2. RESULTADOS COMPARATIVOS CON EL ALGORITMO DEL GRADIENTE GLOBAL
Para cada caso descrito previamente, se realiza el paralelo del GGA y el EGGA,
utilizando como herramientas de comparación EPANET y DRÜCKE respectivamente.
CASO 1:
Con el software EPANET se hizo la modelación de la red hidráulica. Los resultados se
reflejan en el lado izquierdo mientras que los resultados de DRÜCKE se reflejan en el
lado derecho. Se hizo el cálculo para una duración total de 10 horas.
Gráfica 5-6.
Gráfica 7.
Gráfica 8.
-5
0
5
10
15
20
25
30
00 01 02 03 04 05 06 07 08 09 10
Ene
rgia
[m
]
Tiempo [Horas]
Tanque 1 GGA
Tanque 2 GGA
Tanque 1 EGGA
Tanque 2 EGGA
-100
-50
00
50
100
150
200
0 1 2 3 4 5 6 7 8 9 10
Cau
dal
[lp
s]
Tiempo [Horas]
Linea 1 Linea 2 Linea 3 Linea 4
Linea 5 Linea 6 Linea 7 Linea 8
Linea 9 Linea 10
-60
-40
-20
0
20
40
60
80
0 1 2 3 4 5 6 7 8 9 10
Cau
dal
[lp
s]
Tiempo [Horas]
Resultados obtenidos para el vaciado de los tanques con el GGA y el EGGA para un intervalo de tiempo de 1 minuto.
Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 1 minuto.
Resultados obtenidos de los caudales de los tanques con el EGGA para un intervalo de tiempo de 1 minuto.
71
-100
-50
00
50
100
150
0
3,6
00
7,2
00
10
,80
0
14
,40
0
18
,00
0
21
,60
0
25
,20
0
28
,80
0
32
,40
0
36
,00
0
Cau
dal
[lp
s]
Tiempo [Segundos]
Línea 3 Línea 6 Línea 7
Línea 8 Línea 9 Línea 10
En la Gráfica 5, todavía no se evidencia ninguna inestabilidad numérica en los sistemas
de almacenamiento. Se puede apreciar que en la primera hora, los niveles de los
tanques se igualan y a partir de este momento, comienza una descarga en conjunto de
ambos tanques.
Gráfica 9-10.
Gráfica 11.
Gráfica 12.
-5
0
5
10
15
20
25
30
00 01 02 03 04 05 06 07 08 09 10
Ene
rgia
[m
]
Tiempo [Horas]
Tanque 1 GGA
Tanque 2 GGA
Tanque 1 EGGA
Tanque 2 EGGA
-40
-20
0
20
40
60
80
0 1 2 3 4 5 6 7 8 9 10
Cau
dal
[lp
s]
Tiempo [Horas]
Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 5 minutos.
Resultados obtenidos de los caudales con el EGGA para un intervalo de tiempo de 5 minutos.
Resultados obtenidos para el vaciado de los tanques con el GGA y el EGGA para un intervalo de tiempo de 5 minutos.
72
Con un aumento de 5 minutos en el intervalo de tiempo, los niveles de los tanques
empiezan a sufrir cambios abruptos. Ya no se descargan conjuntamente y los caudales
no se estabilizan tal y como se veía en el intervalo de un minuto.
Gráfica 13.
Gráfica 14
Gráfica 15.
Gráfica 16
0
5
10
15
20
25
30
0 1 2 3 4 5 6 7 8 9 10
Ene
rgia
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
-5
0
5
10
15
20
25
30
0 1 2 3 4 5 6 7 8 9 10En
erg
ía [
m]
Tiempo [Horas] Tanque 1
Tanque 2
-200
-100
00
100
200
300
400
0 1 2 3 4 5 6 7 8 9 10
Cau
dal
[lp
s]
Tiempo [Horas]
Linea 1 Linea 2 Linea 3 Linea 4
Linea 5 Linea 6 Linea 7 Linea 8
Linea 9 Linea 10
-40
-20
0
20
40
60
80
0 2 4 6 8 10
Cau
dal
[lp
s]
Tiempo [Horas]
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 10 minutos.
Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 10 minutos.
Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 10 minutos.
Resultados obtenidos de los caudales con el EGGA para un intervalo de tiempo de 10 minutos.
73
Gráfica 17.
Gráfica 18.
Gráfica 19.
Gráfica 20.
0
5
10
15
20
25
30
35
40
0 1 2 3 4 5 6 7 8 9 10
Ene
rgia
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
0
5
10
15
20
25
30
0 2 4 6 8 10
Ene
rgía
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
-200
-100
00
100
200
300
400
500
0 1 2 3 4 5 6 7 8 9 10
Cau
dal
[lp
s]
Tiempo [Horas]
Linea 1 Linea 2 Linea 3
Linea 4 Linea 5 Linea 6
Linea 7 Linea 8 Linea 9
Linea 10
-60
-40
-20
0
20
40
60
80
0 2 4 6 8 10
Cau
dal
[lp
s]
Tiempo [Horas]
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 15 minutos.
Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 15 minutos.
Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 15 minutos.
Resultados obtenidos de los caudales con el EGGA para un intervalo de tiempo de 15 minutos.
74
Gráfica 21.
Gráfica 22.
Gráfica 23.
Gráfica 24.
Conforme aumentan los intervalos de tiempo, el GGA empieza a distorsionarse como
se puede apreciar en las gráficas anteriores. Ésta distorsión es dependiente de la
configuración de la red hidráulica y de la forma con la que se conectan los nodos y los
tanques.
0
5
10
15
20
25
30
0 1 2 3 4 5 6 7 8 9 10
Ene
rgia
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
-5
0
5
10
15
20
25
30
0 1 2 3 4 5 6 7 8 9 10
Ene
rgía
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
-400
-300
-200
-100
00
100
200
300
400
0 2 4 6 8 10
Cau
dal
[lp
s]
Tiempo [Horas]
Linea 1 Linea 2 Linea 3 Linea 4
Linea 5 Linea 6 Linea 7 Linea 8
Linea 9 Linea 10
-60
-40
-20
0
20
40
60
80
0 2 4 6 8 10
Cau
dal
[lp
s]
Tiempo [Horas]
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 30 minutos.
Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 30 minutos.
Resultados obtenidos de los caudales con el GGA para un intervalo de tiempo de 30 minutos.
Resultados obtenidos de los caudales con el EGGA para un intervalo de tiempo de 30 minutos.
75
Para un intervalo de tiempo de 1 minuto, se puede apreciar la variación cuadrática de
los niveles en los tanques; cómo estos dos tanques están conectados mediante una
tubería, los niveles de ambos se igualan en un determinado tiempo y a partir de éste
instante se realiza una descarga conjunta variando de igual forma la energía en los dos
sistemas de almacenamiento. Con éste esquema, ambos sistemas se pueden
simplificar teóricamente en un solo tanque, por lo tanto el caudal de la tubería que los
conecta (Línea 10) tenderá a ser cero para permitir la descarga en conjunto de ambos
tanques. Si éste caudal fuese diferente a cero, como en el intervalo entre 0 segundos y
3.600 segundos, existirá una transferencia de energía del tanque con mayor carga
hidráulica al tanque con menor carga, oscilando los niveles de ambos hasta llegar a la
misma cabeza piezométrica.
Para este modelo se ha realizado un análisis de la propagación del error conforme se
aumenta el intervalo de tiempo:
Gráfica 25.
Los errores analizados para determinar la Gráfica 25., se calcularon de la siguiente
forma:
Se calculan las energías para un intervalo de tiempo menor a un minuto. Éstas
serán la referencia para poder apreciar la propagación del error.
Se aumenta el intervalo de tiempo.
Para cada nuevo resultado se obtiene la magnitud de la diferencia con los
valores referencia.
0.00%
10.00%
20.00%
30.00%
40.00%
50.00%
60.00%
0 10 20 30 40 50 60
Ine
stab
ilid
ad
Intervalo de tiempo ∆t [Minutos] Tanque 1Tanque 2
Variación del error para diferentes intervalos de tiempo
76
Se calcula el porcentaje de la diferencia respecto a los valores de referencia.
Se promedian los porcentajes para cada intervalo de tiempo y se procede a
graficar.
A diferencia del GGA, en el EGGA los cambios de los niveles de los tanques se hacen de
manera sutil, simulando con mayor precisión el comportamiento del vaciado y llenado
de los sistemas de almacenamiento. Para éste mismo ejemplo, se desarrolló en el
software DRÜCKE la simulación del comportamiento de la red hidráulica, obteniendo
los siguientes resultados:
Gráfica 26.Resultados obtenidos con el EGGA para un intervalo de tiempo de 1 minuto.
Gráfica 27. Resultados obtenidos con el EGGA para un intervalo de tiempo de 1 minuto.
77
Como se puede apreciar, la inestabilidad numérica se ha solucionado mediante el
esquema Explícito – Implícito de Euler. Para los diferentes intervalos de tiempo, la
gráfica muestra el mismo comportamiento a diferencia de las gráficas iniciales
calculadas en EPANET. Nótese que en la primera hora, cuando los dos tanques
empiezan a nivelar sus energías, el tanque con menor cabeza piezométrica se empieza
a llenar hasta alcanzar el nivel del segundo. Éste comportamiento no se evidenció en
las gráficas calculadas con el GGA.
CAS0 2:
Gráfica 28
Gráfica 29.
Gráfica 30.
Gráfica 31.
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Ene
rgía
[m
]
Tiempo [Horas]
Tanque 1
Tanque 2
2,592
2,592
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Ene
rgía
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
2,591
2,592
2,592
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Ene
rgía
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
2,592
2,592
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Ene
rgía
[m
]
Tiempo [Horas] Tanque1
Tanque 2
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 1 minuto.
Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 1 minuto.
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 5 minutos.
Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 5 minutos.
78
Gráfica 32.
Gráfica 33
Gráfica 34.
Gráfica 35
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 1011 1213 1415 1617 18 1920 2122 2324
Ene
rgía
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
2,592
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324
Ene
rgía
[m
]
Tiempo [Horas] Tanque 1
Tanque 2
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Ene
rgía
[m
]
Tiempo [Horas]
Tanque 1
Tanque 2
2,592
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324
Ene
rgía
[m
]
Tiempo [Horas]
Tanque 1
Tanque 2
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 10 minutos.
Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 10 minutos.
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 15 minutos.
Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 15 minutos.
79
Gráfica 36.
Gráfica 37.
Gráfica 38.
Para éste segundo caso, la variación de los niveles de los tanques se evidencia acorde
con el patrón de demanda establecido en el ANEXO 3. La inestabilidad numérica se
evidencia a partir de la hora 16 en adelante, dónde los niveles de ambos tanques
interactúan directamente, haciendo que el nivel del tanque 2 realice cambios abruptos
en el resto del tiempo. Como se aprecia en la Gráfica 38., el comportamiento de la
evolución del error es similar al mostrado en la Gráfica 25., sin embargo la magnitud
de éste es bastante inferior, debido a la regulación presentada en el sistema.
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324
Ene
rgía
[m
]
Tiempo [Horas]
Tanque 1
Tanque 2
2,592
2,593
2,593
2,594
2,594
2,595
2,595
2,596
2,596
2,597
0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324
Ene
rgía
[m
]
Tiempo [Horas]
Tanque 1
Tanque 2
0.000%
0.002%
0.004%
0.006%
0.008%
0.010%
0.012%
0.014%
0.016%
0.018%
0.020%
0 5 10 15 20 25 30 35
Ine
stab
ilid
ad
Intervalo de tiempo Δt [Minutos]
Variación del error para diferentes intervalos de tiempo
Resultados obtenidos para el vaciado de los tanques con el GGA para un intervalo de tiempo de 30 minutos.
Resultados obtenidos para el vaciado de los tanques con el EGGA para un intervalo de tiempo de 30 minutos.
80
Gráfica 39.
Como se pudo evidenciar en la sección 3, el sistema de almacenamiento de la matriz
define la velocidad de cálculo de la aplicación. En la etapa inicial de este proyecto,
se hizo pruebas para evaluar la velocidad de procesamiento para diferentes sistemas
de almacenamiento, obteniendo los resultados de la Gráfica 39. Como se puede
apreciar, el sistema de Almacenamiento óptimo, cuya base consiste en el sistema
reducido (sección 3.2.1.), es 99,44% superior al sistema sin reducción, ya que
implementa en su cálculo la información relevante, evitando perder memoria en
cálculos nulos y repetitivos. A partir de ésta información, se produjo el motor de
cálculo del software DRÜCKE.
0.00
20.00
40.00
60.00
80.00
100.00
120.00
140.00
160.00
180.00
200.00
0 200 400 600 800 1000
Tie
mp
o d
e C
álcu
lo [
min
]
Tamaño de la Matriz de Cálculo [ m x m ]
Almacenamiento sin reducción
Almacenamiento sin ceros
Almacenamiento óptimo
Eficiencia computacional de cálculo a partir del sistema de almacenamiento.
81
5. CONCLUSIONES Y RECOMENDACIONES
5.1. CONCLUSIONES
A partir de los resultados obtenidos en el Capítulo 4, se infiere que la Extensión
del Algoritmo del Gradiente Global, soluciona el problema de la inestabilidad
numérica en las redes hidráulicas en el período extendido. Cuando se calcula la
hidráulica para intervalos de tiempo muy grandes, el Esquema Explícito –
Implícito de Euler simula el comportamiento de los sistemas de
almacenamiento de forma sutil, generando confiabilidad y mayor eficiencia en
los esquemas de operación.
A partir de los casos analizados en éste trabajo, se puede apreciar que la
inestabilidad numérica no sólo depende del aumento en el intervalo de tiempo,
sino también de la tipología de la red hidráulica. Para el primer caso analizado,
se aumentan las inestabilidades numéricas para un mismo intervalo de tiempo,
cuando se conectan los dos tanques. Si la tubería que conecta ambos sistemas
de almacenamiento no funcionara dentro del sistema, la inestabilidad numérica
se reduciría considerablemente. Esto se debe a la interacción de energías
directa entre los dos volúmenes de agua; cuando se deja un tanque
independiente del otro, tiene la posibilidad de regularse a partir de la
configuración de los nodos hidráulicos, mientras que al conectarse con el
segundo tanque la interacción de las dos cargas piezométricas es directa; el
aumento de energía en un tanque se refleja de inmediato en el otro sistema,
por ende se genera un cambio brusco en las oscilaciones marcadas en el
tiempo con la metodología del GGA.
El software DRÜCKE, sirve para representar el funcionamiento de la Extensión
del Algoritmo del Gradiente Global e implementar la solución a las
inestabilidades numéricas. En éste aplicativo se permite la inserción y edición
de elementos hidráulicos y excluye elementos de control y adición de energías,
tales como válvulas y bombas hidráulicas. Tiene un alcance limitado en la
modelación con sistemas de éste tipo, sin embargo se puede utilizar para el
cálculo de grandes configuraciones hidráulicas, de acuerdo a la metodología de
implementada para la solución de sistemas lineales (Método del Gradiente
Conjugado).
Todos los sistemas hidráulicos tienen la característica de conformar una matriz
definida positiva y simétrica, de acuerdo a la conexión recíproca entre los
82
nodos. El esquema utilizado para simplificar y reducir esta matriz, aumenta la
velocidad de procesamiento de la información aproximadamente en un 93%
generando mayor eficiencia en la aplicación.
A partir de la representación gráfica de la propagación del error para los dos
casos analizados, se puede inferir que el aumento en el intervalo de tiempo es
proporcional al error para ambos casos en el período inicial. A partir de los 10
minutos, se presenta un comportamiento asintótico, dónde el error tiende a
estabilizarse conforme se aumenta el intervalo de tiempo. En el segundo caso,
el error tiene una magnitud mucho menor al primer caso, debido a la
configuración de la red. La propagación del error en el GGA, es dependiente de
la tipología de la red: si los sistemas de almacenamiento se configuran
independiente uno de los otros, la propagación del error disminuye ya que la
interacción directa de energías de los tanques se hace mediante nodos que
regulan el vaciado a partir de los caudales de consumo.
5.2. RECOMENDACIONES
Se recomienda continuar con la programación de elementos de modelación
como son las válvulas y las bombas hidráulicas implementando la adición de
curvas de operación para los diferentes elementos de la red.
Complementar la programación orientada a objetos para la interacción del
usuario con las herramientas del GUI e implementar metodologías para la fácil
navegación dentro de la ventana de dibujo.
Incluir la modelación en estado de flujo no permanente (transitorios) tanto en
columna rígida y columna elástica, para simular condiciones extremas de
operación de golpe de ariete.
83
6. BIBLIOGRAFÍA
Aumaille, B. (1994). Java 2. Ediciones ENI 01, pp. 70-169
B.Shelly, G., Cashman, T. J., L.Starks, J., & L.Mick, M. (2006). Java Programming:
Comprehensive Concepts And Techniques. Ed. 3 pp. 11-29 Shelly Cashman Series.
Francisco, D., Francisco, G., & Ernesto, P. (2007). Programación orientada a objetos con
Java. Ed. 1 pp. 1-20 Thomson Ediciones.
George, A., Liu, J. & Ng, E. (1994). Computer Solution of Sparse Linear Systems.
Giustolisi, O. (2010). Water Distribution Network pressure-driven analysis usingEGGAO, en Journal of Water Resources Planning and Management, Vol 10.1061, pp. 2-40
Larock, B.E.,Jeppson, R.W.& Watters, G.Z. (2000). Hydraulics of Pipeline Systems.
López, L. H. (2006). Predicción y optimización de emisiones y consumo mediante redes
neuronales. Ed. 1, Universidad Politécnica de Valencia. Editorial Reverté.
O'Connor, J. L. (1997). Técnicas de cálculo para sistemas de ecuaciones, programación
lineal y programación entera. Ed. 2 Editorial Reverté.
Todini, E. (2011). Extending the global gradient algorithm to unsteady flow extended
period simulations of water distribution. Journal of Hydroinformatics Vol 13 No 2 pp
167–180 Dipartimento di Scienze della Terra e Geologico Ambientali, Universitá di
Bologna.
Todini, E. & Pilati, S. (1988) A gradient method for the solution of looped pipe networks.
In Computer Applications in Water Supply (ed. B. Coulbeck & C. H. Orr), Vol. 1, (System
analysis and simulation) pp. 1–20. John Wiley & Sons, London.
Wu, Z. Y. (2009). Extended Global-Gradient Algorithm for Pressure-Dependent Water
Distribution Analysis, en Journal of Water Resources Planning and Management ,
Vol 135, No 1, pp. 13-22.
Top Related