Resumen
El presente trabajo estudia las diferentes soluciones para la
implementación de un prototipo de control de simulaciones numéricas
multifísica en un entorno distribuido. En el análisis, se estudian
algunas posibilidades de simulación cooperativa, así como las
herramientas de conexión distribuida de aplicaciones. Finalmente, tomando
como referencia una herramienta middleware, una herramienta de simulación
comercial, y un simulador desarrollado para su uso aquí, se desarrolla un
prototipo de control distribuido de simulaciones, integrando distintas
tecnologías.
El título del proyecto es simulación cooperativa en entornos
distribuidos. ¿A qué se refiere?
En ocasiones, para obtener los modelos finales multifísica, se deben
pasar por distintos simuladores hasta obtener el resultado final. Esto
implica que el resultado obtenido de una simulación será a su vez, tras
algunas modificaciones, la entrada de la siguiente simulación. Esto no
siempre se puede controlar en tiempo real, pues en ocasiones las
simulaciones son muy costosas en tiempo. Con ésto estamos introduciendo
ya el concepto de entorno distribuido: un ambiente cooperativo en el que
equipos dispersos geográficamente actúen como uno solo.
¿Cuáles son las motivaciones de esta aplicación?
En primer lugar, las simulaciones mediante simuladores comerciales
requieren el pago de costosas licencias, lo que hace poco aconsejable
tener todos los simuladores en todos los equipos en los que se quiera
realizar una simulación multifísica.
Atendiendo a ésto, tampoco resulta muy eficiente trasladar físicamente
los resultados de una simulación obtenidos en un equipo, al siguiente que
intervenga en la simulación. De este modo, se pretende construir un
"puente" entre estos simuladores comerciales, de modo que los
resultados obtenidos mediante éstos se puedan compartir virtualmente.
Los objetivos que se han marcado para la realización del prototipo se
resumen en cinco:
- Construir una capa distribuída para la aplicación SENsys, de modo
que la simulación cooperativa se pueda hacer realmente en un entorno
distribuído.
- Se pretende que el prototipo sirva para múltiples plataformas y
usuarios.
- No debemos restringir el uso del prototipo al entorno distribuido,
sino que debe ser posible una utilización local del mismo.
- Además de recoger los resultados de las simulaciones, el prototipo
debe ser capaz de lanzarlas y controlar cuando finalizan.
- Finalmente, se deberá mostrar una representación gráfica del
modelo que esté en curso.

Atendiendo a los objetivos marcados, y tras realizar un estudio de las
alternativas que se plantean, se decide utilizar para el desarrollo del
prototipo las siguentes tecnologías:
El lenguaje de programación Java, de libre distribución, que permite: multiplataforma
y multiusuario. Sin instalación. Interactuar con el código que se
desarrolle en C o C++, gracias a la tecnología JNI que incorpora
java.sun.com
La herramienta de IONA ORBacus, adquirible tras un periodo de evaluación,
pero disponible de forma gratuita para Java gracias a una serie de
librerías jar www.orbacus.com
La librería gráfica JGL, de libre distribución, que permite trabajar
con gráficos de una forma muy similar a OpenGL, a partir de código en
Java. www.cmlab.csie.ntu.edu.tw/~robin/JavaGL
Puesto que las simulaciones numéricas multifísica no facilitan el
control en tiempo real, y dado que este proyecto se pretende aprovechar
para el proyecto europeo IMAGE, de control de simulaciones aeronáuticas.
Se ha diseñado también un simulador de la variación de la velocidad del
viento, controlable en tiempo real, y que se controlará con la propia
aplicación, además de proporcionar otra interfaz de conexión ajena al
prototipo.
El prototipo se ha desarrollado siguiendo una estructura cliente-servidor,
en base a una arquitectura en tres niveles. En el nivel de presentación
podemos distinguir dos tipos de interfaces: La interfaz principal, donde
además de presentar al usuario todas las operaciones disponibles, se
visualizará la representación gráfica de los modelos. Las interfaces de
diálogo, fruto de peticiones por parte del cliente a través de la
interfaz principal, y que servirán para mantener un feedback con el
usuario, recoger y mantener datos e informar al usuario del estado de las
operaciones pedidas.
En el nivel de lógica del negocio destacan:
- El servidor de nombres, servicio proporcionado por la tecnología
ORBacus, que permite mantener un puerto seleccionado abierto en el
servidor, a través del cual el cliente enviará peticiones a éste.
- El servidor, alojado en el host en el que se activa el servidor de
nombres y encargado de recibir peticiones de clientes y reenviarlas en
su caso a los clientes correspondientes.
- Los clientes, que envían peticiones al servidor como respuesta a
peticiones por parte del usuario y reciben a su vez peticiones
redireccionadas desde el servidor.
Destaca además la conexión de la arquitectura expuesta con el
prototipo SENsys, desarrollado en C++ y compilado como librería de enlace
dinámico, gracias a una interface creada en C++ que permite a través de
la tecnología Java Native Interface acceder a los métodos de SENsys,
tanto en los clientes como en el servidor, dependiendo del modo en el que
se trabaje, local o distribuido.
En cuanto al nivel de datos, el prototipo trabaja con tres tipos de
ficheros:
- Ficheros intermedios de SENsys, en los que se almacenan las
características del modelo, y que se compartirán entre los clientes
y el servidor, además de obtenerse a partir de ellos los datos
útiles para la visualización del modelo.
- Ficheros de configuración, almacenados en el servidor, y que
contienen información sobre qué simuladores están disponibles en
cada cliente.
- Por último, el prototipo trabaja con ficheros almacenados en el
servidor, que contienen la contraseña de acceso que se contrastará
con la proporcionada por cada cliente en su caso, con el fin de
autorizar o no las operaciones correspondientes.
El diseño del prototipo conlleva una serie de beneficios a la hora de
trabajar con el prototipo.
Todas las utilidades necesarias, a excepción del intérprete de java,
están incluidas en el fichero del prototipo, tanto el cliente como el
servidor. Esto implica que no se necesita instalación alguna para
trabajar con el prototipo en las plataformas que soportan el intérprete
de java, ni para trabajar en modo local ni en modo distribuido.
El modo de lanzar tanto servidor de nombres como servidor y clientes es a
través de ficheros de configuración, en los que basta modificar
correspondientemente la dirección ip y el puerto donde se alojará el
servidor. Posteriormente, la ejecución por un lado de cada cliente, y por
otro del servidor de nombres y del servidor en este orden, por otro,
pondrá el prototipo en funcionamiento.
Por último, el prototipo funciona de modo concurrente, lo cual significa
que las peticiones de los clientes al servidor se atienden sin bloquearlo.
Además, los clientes no se bloquean mientras controlan una simulación.
Finalmente, podemos concluir:
En cuanto al análisis realizado, por un lado la importancia del manejo y
adecuación de resultados parciales dentro de una simulación multifísica
resulta trascendente, así como la necesidad de realizar estas
adaptaciones de un modo automático aunque interactivo, y distribuido.
Los servicios a los que una aplicación de este tipo debe dar respuesta,
se centran en la seguridad y administración de la misma, sin olvidar los
servicios no funcionales o de control del conjunto de la aplicación.
Por último, el abanico de soluciones middleware que posibilitan una
solución distribuida es enorme, pero clasificable en cuatro grandes
grupos, CORBA, HLA, JAVA y Otros. Por tanto, las bases de la arquitectura
desarrollada para dar respuesta a esta necesidad descrita se centran en:
- Proporcionar una capa distribuida a la aplicación encargada de
adaptar las colaboraciones entre simuladores.
- Controlar efectivamente las simulaciones, atendiendo a su inicio y
finalización en tiempo real, aun cuando los eventos sean asíncronos.
- Visualizar las principales características de los modelos en curso.
- Desarrollar el proyecto de un modo extensible y reutilizable, de
forma que sirva para su adecuación a la ingeniería aeronáutica.
- Contribuir a esta adecuación mediante el desarrollo de un simulador
de la variación de la velocidad del viento, controlable tanto por el
prototipo como de forma externa a él.
|