Superior: Hispalinux 2000 |
( )
, podemos acceder al
elemento (k,l) del bloque (i,j) mediante la expresión:
begintex2html_preform
A(i,j)(k,l);
endtex2html_preform
par
Para resolver los sistemas
lineales, se utiliza un método clásico de relajación por bloques, en el
que los sistemas asociados a los bloques tridiagonales se resuelven de forma
explícita mediante un algoritmo de tipo em Thomas.
Para la representación de los mallados de elementos finitos,
se han contruido las clases C++ adecuadas.
par
Como editor de texto y entorno de programación, utilizamos em emacs
citeemacs,
junto con una herramienta gráfica, em Code Crusader
citecrusader, que facilita el acceso
a los ficheros fuente de la biblioteca de clases C++, lo cual resulta
muy útil a medida que el numero de clases que contiene ésta comienza a
ser grande.
par
Por otra parte, en un programa de simulación numérica es interesante contar
con una interfaz de usuario adecuada pues, una vez desarrollado, es necesario
realizar numerosas pruebas que lo validen, introduciendo variaciones
en los parámetros del programa o en los datos iniciales y
comparando los resultados con aquellos observables en el ``mundo real''.
En nuestro caso, se utilizó el lenguaje de programación
em Python citepython, desarrollando un módulo que interactúa con
el programa C++. Mediante este módulo, podemos acceder
interactivamente a las funciones
de bajo nivel, escritas en C++, para calcular las soluciones
en etapas de tiempo sucesivas, acceder a las variables más
importantes, modificar sus valores, observar los resultados, etc.
par
Se eligió el lenguaje em Python para la interfaz de usuario de nuestro
programa por tratarse de un lenguaje interpretado con
características avanzadas y fácil de enlazar con C/C++. Además,
em Python cuenta con módulos especializados para el cálculo numérico,
para la representación gráfica de datos, etc.
Por supuesto, existen otras muchas posiblidades, la más extendida de
las cuales puede que sea el uso del programa em Matlab
citematlab, lenguaje orientado al análisis matricial y que puede
ser utilizado además para la representación gráfica de resultados. En
nuestro caso, lo descartamos por no considerar rentable la inversión
en un programa comercial, existiendo otras alternativas libres que
resultaban tanto o más válidas para nuestros propósitos.
Por otro lado, una posibilidad, que no descartamos usar en un futuro
próximo, es usar em octave citeoctave, lenguaje GNU
interpretado, orientado al análisis numérico y matricial, similar a
em Matlab, que puede también enlazarse con código C. Por último, se
utilizó em Phyton en vez de otro lenguaje de interpertado de
características similares como em perl simplemente por una cuestión
de preferencias personales, pues este último podría haber resultado
igualmente válido.
par
sectionPost-Proceso y Representación Gráfica de los Resultados
par
Para la visualización gráfica de los resultados, contamos en GNU/Linux con
bastantes herramientas de licencia libre. Por ejemplo,
en los experimentos que presentamos aquí, hemos empleado
el programa em plotmtv citeplotmtv. Existen también otras
aplicaciones, como em grace citegrace, o em gnuplot
citegnuplot, que
creemos nos serán de utilidad para ser empleadas en próximas etapas.
Todos estos programas tienen características similares, puedendo tomar sus
datos de un fichero que ha sido escrito en un formato adecuado por el
programa C++ o por su interfaz em Python, para representarlos
gráficamente. Las gráficas resultantes pueden ser visualizadas
en pantalla o bien exportadas hacia un fichero postscript, que posteriormente
podremos mandar a la impresora o incluir en un documento LaTeX, por
ejemplo.
Los tipos de gráficas que pueden generar (funciones de una o dos variables,
campos de velocidades, curvas de nivel, etc.) son en todos los casos
muy similares, si bien existen ciertas diferencias que hacen que, a la
hora de utilizarlos en un caso concreto, sea conveniente decantarse por uno
de ellos. Así, los campos de velocidades que aparecen en
las figuras refejemplo1, refejemplo2 y refejemplo3, han sido
generados por em plotmtv, con el que resulta sencillo hacer este
tipo de gráficas de vectores. Sin embargo, este programa no cuenta con
algunas características interesantes, como la posibilidad de generar
animaciones, para lo cual podremos recurrir, por ejemplo, a
em gnuplot.
par
Existen muchas más posibilidades para la representación de datos,
como el empleo de bibliotecas de funciones gráficas,
como em plplot citeplplot, o el uso de paquetes como em octave
(que emplea, a su vez, em gnuplot o, en las últimas versiones, la
biblioteca em plplot). Asimismo, podemos contar con
em R citeR, lenguaje de tratamiento estadístico y
representación de datos, o emplear lenguajes interpretados
como em Python o em perl citeperl, que cuentan con módulos
adaptados a la manipulación numérica de datos y a su
representación gráfica. Por supuesto, siempre es posible usar
aplicaciones comerciales, la más usada de las cuales puede que sea
em Matlab. Algunas de ellas, como em gid citegid
(desarrollada por profesores de la Universidad Politécnica de
Cataluña), integra heramientas de pre-proceso y de post-proceso de
datos a través de una interfaz gráfica (disponible tanto para sitemas
UNIX como para Windows).
Siguiendo con el programa de aproximación numérica de las
Ecuaciones Primitivas del océano que estamos empleando como
referencia, presentaremos aquí algunos de los experimentos numéricos
que hemos realizado para validar el esquema, obteniendo resultados
satisfactorios. En concreto, se muestran los resultados de la
aproximación del problema lineal
estacionario, en el cual realizamos iteraciones en tiempo, analizando
si existe algún estado final hacia el cual converjan las soluciones
(velocidades y presión) a medida que el tiempo avanza.
par
beginfigure
centering
epsfigfile=planoEstacio.eps, width=.75textwidth
captionsmall Solución estacionaria, ejemplo 1
labelejemplo1
endfigure
par
beginfigure
centering
epsfigfile=valleEstacio.eps, width=.75textwidth
captionsmall Solución estacionaria, ejemplo 1
labelejemplo2
endfigure
par
Mostraremos aquí los resultados obtenidos en tres dominios distintos.
Todos ellos tienen 30.000
metros de longitud superficial por 150 de profundidad máxima.
El viento es constante hacia la derecha
con velocidad máxima de 7.5 m/s y se utiliza un paso de tiempo
Delta t=60 segundos.
par
En el primer ejemplo (figura refejemplo1) se alcanza la
solución exacta (con tolerancia
varepsilon=10-6) después de 1579
iteraciones de tiempo (algo más de 26 horas). La velocidad
horizontal máxima del fluido, alcanzada en
el punto medio de la superficie, es de 0.695894 m/s.
En el segundo (figura refejemplo2), se llega a la
solución estacionaria tras 2589 iteraciones de tiempo (algo más de
43 horas) con velocidad horizontal máxima de 0.787584 m/s.
En el tercero (figura refejemplo3), han de transcurrir 3032
iteraciones (50 horas y media) y se obtiene una velocidad
horizontal máxima de 0.352651 m/s.
par
beginfigure
centering
epsfigfile=monteEstacio.eps, width=.75textwidth
captionsmall Solución estacionaria, ejemplo 3
labelejemplo3
endfigure
par
sectionGeneración de Documentos y Presentaciones
Si, después de muchos días de esfuerzos delante
del ordenador, los resultados obtenidos de la simulación numérica son
satisfactorios, será gratificante el presentarlos públicamente,
ya sea con fines educativos, en congresos de investigación, etc.
De nuevo, podemos contar con el sistema operativo GNU/Linux y con numerosas
herramientas que nos ayudarán a realizar la presentación de
resultados. Obviamente, lo que sigue es de interés en un ámbito mucho
más amplio que el de la simulación numérica, resultando válido para la
generación de todo tipo de documentos científicos.
par
La clave será el uso de LaTeX, lenguaje para la generación de
documentos de alta calidad y muy adecuado para trabajos matemáticos y
científicos. Si bien es necesario superar la dificultad inicial
del aprendizaje del lenguaje, sus características (calidad de los
documentos, composición lógica, adaptación a estructuras matemáticas
complejas, independencia de la plataforma, dots) hacen de él un
potente instrumento. En GNU/Linux podemos contar con LaTeX,
concretamente la distribución em teTeX, desarrollada para sistemas
UNIX. Además disponemos de numerosas utilidades asociadas.
Por ejemplo, contaremos con un modo para emacs,
em auctex, que nos facilitará el uso de este editor de textos para
la creación de documentos LaTeX. Una herramienta, em xfig
citexfig, para dibujar objetos gráficos de forma interactiva y
exportar los resultados, usualmente a formato postscript, con el fin
de ser incorporados por LaTeX (por ejemplo, las figuras reffig:dominio y
reffig:malla han sido generadas mediante em xfig).
Un entorno visual, em LyX citelyx, que podremos utilizar
como un procesador de texto ``conveccional'', pero que utiliza
LaTeX para la generación final de documentos.
Conversores a lenguaje HTML, herramientas para convertir
el documento a formatos postscript o pdf y para post-procesar los
resultados, etc
par
En principio, si pretendemos usar LaTeX para realizar un documento
impreso, como una ponencia para un congreso, deberemos escoger para nuestro
documento un estilo estándar, como em article.
Sin embargo, si necesitamos realizar transparencias para presentar
los resultados, podremos elegir entre los estilos ``no estándar''
em foiltex y em seminar, ambos presentes en teTeX (la licencia
del primero no es completamente libre).
Si pretendemos elaborar un póster (en formato A3, A2, A1 o A0),
podemos emplear el estilo em a0poster. Este paquete no se encuentra
en la distribución teTeX, pero es accesible desde internet, por ejemplo
en hturlhttp://www.ucc.ie/cgi-bin/ctan.
par
Por otra parte, si queremos publicar un artículo en internet, podemos
contar con el programa em latex2html citelatex2html,
que convierte documentos LaTeX en formato HTML, traduciendo
fórmulas y ecuaciones
en gráficos de poco tamaño que pueden ser mostrados con facilidad por
los navegadores de internet. Por último, si nuestra intención es generar
una presentación usando el ordenador junto con un cañón proyector de
vídeo, podremos usar el programa em pdflatex para generar, a partir
del fichero LaTeX, un documento em pdf, que podremos mostrar a
pantalla completa (bajo Linux o bajo cualquier otra plataforma)
usando, por ejemplo, em acrobat reader,
em gv, em xpdf (el primero de ellos no con licencia totalmente libre).
Se están desarrollando programas, como em ppower4 citeppower4,
para postprocesar los ficheros em pdf de tal modo que se puedan
incluir efectos (cortinillas, etc) a nuestro antojo en la forma de
órdenes LaTeX especiales.
par
Con alguna frecuencia, puede ser necesario elaborar versiones del
trabajo realizado en varios de los formatos que se han comentado.
Por ejemplo, podemos necesitar enviar un artículo para ser publicado en las
actas de a unas jornadas cientificas, a la vez que realizar una
presentación del mismo, en forma de transparencias o mediante
proyector de vídeo. Posteriormente, quizás nos
resulte atractivo el convertirlo en formato HTML para depositarlo
en en nuestra página web. El realizar por separado cada una de estas
tareas conllevaría bastante esfuerzo; sin embargo, el trabajo se reduce
considerablemente si creamos un artículo principal en LaTeX, quizás listo
para ser publicado, a partir del cual, introduciendo posiblemente algunas
modificaciones para adecuarlo al nuevo formato, crear
una presentación o (usando em latex2html) o generar un documento en
formato HTML.
par
Por último, señalar que el lenguaje de composición de documentos
LaTeX es, de hecho, un estándar para el intercambio de documentos
matemáticos o científicos complejos, no existiendo, prácticamente,
alternativas a su uso. Por ejemplo, el emplear editores de texto
``conveccionales'' como em Microsoft Word o em Sun StarOffice,
para la generación de este tipo de documentos no solamente resulta
tedioso, sino que los resultados obtenidos no alcanzan la calidad de
los documentos escritos con LaTeX.
Algo similar ocurre con las transparencias o, quizás, con
las presentaciones mediante cañón proyector de vídeo: la utilización
programas como em Microsoft PowerPoint, bajo sistemas operativos de
tipo em Windows, es desaconsejable frente a la potencia de LaTeX
para la generación de documentos matemáticos.
par
sectionConclusiones
Tomando como hilo conductor la experiencia del autor en la
implementación de un modelo numérico en oceanografía, se han abordado
diferentes cuestiones relacionadas con el uso del sistema sistema
operativo GNU/Linux como entorno para la simulación numérica:
programación del código,
post-proceso y representación gráfica de resultados y, por último,
generación de documentos y presentaciones. Para cada uno
de estos pasos, se han subrayado tanto las distintas aplicaciones que
hemos empleado en nuestro trabajo, como las diferentes alternativas,
en muchas ocasiones igualmente válidas, con las que podemos contar,
siempre haciendo énfasis en aquellas que cuentan con licencia libre.
par
El sistema GNU/Linux constituye una plataforma estable y potente que
cuenta con herramientas muy adecuadas para la realización de proyectos
relacionados con la simulación numérica de ecuaciones en derivadas
parciales.
par
sectionAgradecimientos
A Virgilio Gómez Rubio que, por convencerme de que podía ser
interesante contar mi experiencia en la utilización de GNU/Linux para
la simulación numérica, es el resposable último de este trabajo. Y a
todos aquellos que, de forma desinteresada, se encuentran implicados
en el desarrollo de Linux y de em software libre.
par
Este trabajo ha sido parcialmente financiado por el proyecto
PB98-0583 del Ministerio de Eduación y Cultura.
par
beginthebibliography99
footnotesize
par
bibitemadaptor
em adaptor,
hturlftp://ftp.gmd.de/gmd/adaptor
par
bibitemblitz
em Blitz++,
hturlhttp://www.nobjects.com
par
bibitemcrusader
em Code Crusader,
hturlhttp://www.cco.caltech.edu/ jafl/jcc
par
bibitememacs
em emacs,
hturlhttp://www.gnu.org/software/emacs
par
bibitemegcs
em egcs (GNU C++),
hturlhttp://gcc.gnu.org
par
bibitemgid
em gid,
hturlhttp://gid.cimne.upc.es
par
bibitemgnuplot
em gnuplot,
hturlhttp://www.cs.dartmouth.edu/gnuplot_info.html
par
bibitemgrace
em grace,
hturlhttp://plasma-gate.weizmann.ac.il/Grace
par
bibitemvicky
sc F. Guillén González, M.V. Redondo Neble
sl Convergencia de algunos esquemas numéricos hacia el
modelo evolutivo de Ecuaciones Primitivas.
Actas XVI CEDYA, VI CMA, University of Las Palmas de
Gran Canaria, 1999, 1165-1172.
par
bibitemkisko-rafa
sc F. Guillén González, R. Rodríguez Galván
sl Aproximación Numérica Mediante un Esquema de Proyección
de las Ecuaciones Primitivas 2D
Actas II Jornadas de Análisis de Variables y Simulación Numérica del
Intercambio de Masas de Agua a través del Estrecho de Gibraltar,
University of Cádiz, 2000.
par
bibitemkai
em KAI C++,
hturlhttp://www.kai.com/C_plus_plus/
par
bibitemlatex2html
em LaTeX2html,
hturlhttp://www-texdev.mpce.mq.edu.au/l2h/docs/manual
par
bibitemltw
sc J.L. Lions, R. Teman, S. Wang.
it New formulations of the primitives equations of the
atmosphere and applications.
Nonlinearity, 5 (1992), 237-288.
par
bibitemlyx
em LyX,
hturlhttp://www.lyx.org
par
bibitemmtl
em MTL,
hturlhttp://www.lsc.nd.edu/research/mtl/
par
bibitemmatlab
em Matlab,
hturlhttp://www.mathworks.com/products/matlab/index.shtml
par
bibitemoctave
em octave,
hturlhttp://www.che.wisc.edu/octave
par
bibitemperl
em perl,
hturlhttp://www.perl.com
par
bibitemplotmtv
em plotmtv,
hturlftp://ftp.x.org/contrib/applications
par
bibitemplplot
em plplot,
hturlhttp://www.plplot.org)
par
bibitemppower4
em ppower4,
hturlftp://ftp.dante.de/tex-archive/help/Catalogue/entries/ppower4.html
par
bibitempython
em Python,
hturlhttp://www.python.org
par
bibitemR
em R,
hturlhttp://www.r-project.org
par
bibitemsparselib
em SparseLib++,
hturlhttp://math.nist.gov/sparselib++/
par
bibitemxfig
em xfig,
hturlhttp://www.xfig.org/
par
endthebibliography
enddocument