Abstract:
|
El presente documento estudia las ventajas de la programación orientada a objetos aplicada a la
resolución de las ecuaciones de transporte de solutos en aguas subterráneas, sin considerar reacciones
químicas. El estudio se ha realizado mediante el desarrollo del programa PROW (PRocess Oriented
Groundwater) en FORTRAN90. El programa PROW fue diseñado en la sección de Hidrología
Subterránea del Departamento de Ingeniería del Terreno y Cartográfica de la UPC, a partir del programa
TRACONF (programado en FORTRAN77), que resolvía flujo y transporte en medios porosos utilizando
el método de Galerkin, de elementos finitos. El trabajo desarrollado para este documento ha consistido en
incorporar tres nuevos métodos de resolución: el método de diferencias finitas, el método de las
características (MOC), y el método modificado de las características (MMOC), que son brevemente
descritos. El método de diferencias finitas hace uso de una malla diferente a la de elementos finitos,
descrita por parámetros fundamentalmente diferentes, aunque con una cierta relación. Los métodos MOC
y MMOC hacen uso de sistemas de partículas móviles según el flujo para simular el proceso de advección.
Esto hace que deban incorporarse nuevos conceptos a una estructura ya ordenada para resolver elementos
finitos. Debido al carácter diferente de estos métodos entre sí, y frente al de elementos finitos, se ha
tratado de implementar el nuevo código de una manera flexible y abierta a cambios. Para ello se ha hecho
uso de los principios fundamentales de la programación orientada a objetos. Este tipo de programación no
utiliza ya una sola línea de flujo para el programa, sino que consiste en la interacción de una serie de
objetos, cada uno perteneciente a una clase. Los objetos son susceptibles de ser creados, modificados o
destruidos mediante una serie de métodos. Estos métodos, junto con un conjunto de atributos asignados a
cada objeto, describen la llamada clase, y dictan las reglas según las cuales los objetos de esa clase podrán
ser utilizados. Existen unos principios que rigen este tipo de programación, que son básicamente: el
encapsulamiento de la información, la herencia y el polimorfismo. Éstos deben ser respetados en la
medida de lo posible para lograr un programa flexible frente a las modificaciones e incorporaciones de
nuevo código, así como un flujo de información constantemente controlada y sólo abierta a aquellos
objetos que la necesitan.
Dado que FORTRAN90 no es un lenguaje diseñado específicamente para la programación orientada a
objeto, se describen algunas técnicas necesarias para la simulación de este tipo de programación en el
mismo, y las herramientas que éste ofrece para su desarrollo: el dimensionamiento dinámico, la estructura
modular, los tipos derivados y las sentencias INTERFACE. Se dan también algunos parámetros de diseño
utilizados en la construcción de PROW. Se hace notar que, en ciertos casos, violar puntualmente los
principios de la programación orientada a objetos puede suponer un ahorro importante de burocracia en el
código, que es uno de los grandes defectos de este tipo de programación.
Una vez descritos los principios fundamentales de la programación orientada a objeto, se pasa a explicar
el funcionamiento del programa PROW. Éste consta de un código principal (MAIN), cuya función es
crear el primer objeto: ENGINE, responsable del control del flujo del programa. Éste creará y utilizará
objetos de diferentes clases, como mallas, matrices, discretizaciones temporales, ecuaciones de flujo,
ecuaciones de transporte y otros destinados a la resolución y escritura de resultados. Se explican también
algunos de los problemas que surgieron en la incorporación de los códigos destinados a resolver los
nuevos métodos.
Por último se resuelve un pequeño modelo de transporte en aguas subterráneas, mediante el uso de
PROW, y se comparan los resultados con la solución analítica existente. |