next up previous
Superior: Hispalinux 2000

documentclass[a4paper]article usepackage[T1]fontenc usepackage[latin1]inputenc usepackage[spanish]babel usepackageepsfig usepackagehthtml par newedcommanddifusion[1]nu_hpartial_xx^2 #1 -nu_vpartial_zz^2 #1 par titleGNU/Linux y la Simulación Numérica de Ecuaciones en Derivadas Parciales. Un Modelo en Oceanografía authorJ. Rafael Rodríguez Galván thanks copyright J. Rafael Rodríguez Galván. Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU, Versión 1.1 o cualquier otra versión posterior publicada por la Free Software Foundation. Se considerará como Secciones Invariantes todo el documento, no habiendo Textos de Portada ni Textos de Contra Portada. Puede consultar una copia de la licencia en: http://www.gnu.org/copyleft/fdl.html
small Departamento de Matemáticas. Universidad de Cádiz.
texttt small rafael.rodriguez@uca.es dateAgosto de 2000 par begindocument par maketitle par begincenter Esta ponencia forma parte del htlinkIII Congreso Hispalinuxhttp://congreso.hispalinux.es virtual, celebrado en Noviembre de 2000. Puedes participar en él en la htlinksección de eventos de BarraPuntohttp://barrapunto.com/eventos endcenter par beginabstract En este trabajo se presenta una panorámica general del uso del sistema operativo GNU/Linux y de las herramientas de software libre para el desarrollo de proyectos científicos basados en la simulación numérica de ecuaciones en derivadas parciales. par Tomando como referencia la experiencia del autor en la resoución numérica de un modelo matemático en Oceanografía, se comentan todos los aspectos relacionados con lo anterior: programación y validación del código numérico, post-proceso de resultados y generación de informes y comunicaciones. endabstract par sectionIntroducción La aproximación numérica de ecuaciones en derivadas parciales constituye una rama fundamental del Análisis Numérico y un campo de investigación en constante actividad. Es muy grande el número de fenómenos que son modelados mediante ecuaciones de este tipo, provenientes de campos tan diversos como la Física, la Ingeniería, la Oceanografía, la Economía, etc. par En los casos más realistas, no es posible calcular de forma exacta la solución de este tipo de ecuaciones, siendo necesario recurrir a técnicas numéricas que, explotando aquellas propiedades que hayan sido previamente deducidas de forma teórica, nos permitan desarrollar algoritmos mediante los cuales sea posible obtener, de forma aproximada, un conjunto finito de datos que representen los valores que toman las soluciones en un dominio discreto. par El llevar a la práctica lo anterior significa realizar programas de ordenador que, a partir de unos datos conocidos, como la situación inicial de las magnitudes estudiadas y la evolución de las mismas en la frontera del dominio, devuelvan las soluciones, en la forma de conjuntos discretos de datos que representan los valores que toman dichas magnitudes. Además de esto, suelen ser necesarias tanto una etapa previa de pre-proceso de los datos iniciales y de contorno como una etapa final de post-proceso y visualización gráfica de los valores obtenidos como solución de las ecuaciones. par Los programas asociados a la resolución numérica de ecuaciones en derivadas parciales requieren de una gran potencia de cálculo, tanto mayor cuanto más realistas pretenden ser los resultados. Por este motivo, muchos de los grupos de investigación universitarios que trabajaban en este campo optaron por realizar su trabajo en estaciones de trabajo comerciales de tipo UNIX, lo cual significaba importantes desembolsos económicos. A medida que se ha ido produciendo la madurez de los entornos GNU/Linux, éstos se han desvelado como una alternativa natural: bajo este sistema operativo, un simple ordenador personal se convierte en una estación de trabajo flexible y estable, con características de multitarea y multiusuario y con una excelente relación calidad/precio. Además, para requerimientos de cálculo más exigentes, se puede optar por equipos más potentes, como ordenadores personales con varios procesadores, otras arquitecturas em hardware (por ejemplo, sistemas em Alpha) e incluso em clusters de ordenadores. Por supuesto, se siguen utilizando equipos comerciales de tipo UNIX e incluso centros de cálculo dotados de grandes ordenadores para trabajos con requerimientos de cálculo realmente exigentes. par beginfigure begincenter epsfigfile=esquema.eps, width=.8textwidth endcenter captionPasos en simulación numérica, señalando en cada caso las aplicaciones empleadas en nuestro modelo en oceanografía (en rojo) y posibles alternativas labelfig:esquema endfigure par Es necesario, además, tener en cuenta el siguiente hecho: una distribución de GNU/Linux, como puede ser Debian, Red Hat, etc. es mucho más que un sistema operativo muy avanzado: constituye una completa caja de herramientas mediante las cuales es posible afrontar todos los pasos relacionados con la simulación numérica, partiendo del diseño y programación del código, pasando por la realización de experimentos que lo validaen y terminando por la generación de documentos para la exposición de resultados. Además, muchas de las herramientas, em software libre como el compilador de C++ em egcs o el lenguaje para la composición de documentos LaTeX, se encuentran entre las más avanzadas en su género. par En las siguientes secciones, se tratará de ilustrar todo lo anterior, tomando como base un modelo de Oceanografía en el que se encuentra actualmente trabajando el autor, en colaboración con el profesor F. Guillén, del departamento de Ecuaciones Diferenciales y Análisis Numérico de la Universidad de Sevilla. par sectionUn Modelo Matemático en Oceanografía par Las ecuaciones primitivas citeltw modelan el comportamiento de algunos fluidos ge­o­fí­si­cos (atmósfera, océanos, etc.), en donde se tienen dominios cuya profundidad es pequeña en relación con las dimensiones horizontales. par Formalmente, se obtienen de las ecuaciones de Navier-Stokes imponiendo algunas simplificaciones: presión hidrostática (dependiente de forma lineal de la profundidad) y ``techo rígido'' (la superficie del fluido no presenta movimientos verticales). Por simplicidad, suponemos densidad cons­tan­te y que los efectos debidos a la temperatura y salinidad se pueden desacoplar del flujo dinámico. par Aunque el esquema que presentamos es generalizable al caso 3-dimensional, nos centraremos aquí en la simulación numérica de las ecuaciones primitivas 2-dimensionales: par

\begin{displaymath}
mbox{em (EP-2D)}left\{
begin{array}{rcl}
partial_t u + upa...
...t _{t=0}
=
u_{1,0}
&mbox{ en }& Omega ,
end{array}
right.
\end{displaymath}

par donde $Omega=\{(x,z) \ / \ xinomega,\ -D(x)<z<0\}$ es el dominio 2D ocupado por el fluido (figura reffig:dominio), siendo omegasubsetR un intervalo abierto y D: overlineomegalongrightarrowR la función profundidad. Los siguientes parámetros se suponen conocidos, y en función de sus valores obtendremos diferentes comportamientos de las soluciones: nuh y nuv son los coeficientes de viscosidad horizontal y vertical, f son fuerzas externas (dependientes por ejemplo, de la salinidad y temperatura) y en gs se encierran los efectos de fricción del viento sobre la superficie. Las incógnitas del problema son las funciones u, v: Omega×(0,T) longrightarrow R (velocidad horizontal y vertical del flujo, respectivamente) y ps :omega×(0,T) longrightarrow R (presión superficial). par beginfigure begincenter epsfigfile=dominio.eps, width=.7textwidth endcenter captionEl dominio, Omega labelfig:dominio endfigure par Las ecuaciones anteriores presentan serias dificultades desde el punto de vista numérico: no linealidad, evolución con el tiempo, acoplamiento de las incógnitas,... El método que estamos empleando para su resolución se basa en un esquema fraccionario de proyección en tiempo citevicky junto con una discretización espacial usando productos de elementos finitos. A continuación, comentaremos este método de forma muy breve; para más detalles, ver citekisko-rafa par Para la discretización en la variable temporal, t, de las ecuaciones, fijamos un paso de tiempo, Delta t, y construimos la sucesión de instantes t0=0, t1=Delta t, t2=2Delta t,dots, tk=kDelta t,dots Tratamos de calcular, para cada etapa de tiempo k>0, funciones uk, vk y psk que aproximen, en el instante tk, a las velocidades u, v y a la presión superficial, ps, respectivamente. Para ello, y con el fin de separar las dificultades, se ha empleado un esquema fraccionario en tiempo, de proyección lineal (o semi-implícito) en tres pasos. par El primer paso y el más complejo, consiste en hallar una primera predicción de la velocidad horizontal, como solución de un sistema lineal más sencillo que em(EP-2D). En un segundo paso, corregimos la predicción realizada para hallar la aproximación definitiva de la velocidad horizontal y calculamos una estimación de la presión superficial. En el tercer y último paso, obtenemos la velocidad vertical. par beginfigure begincenter epsfigfile=mallado.eps, width=.7textwidth endcenter captionDiscretización del dominio labelfig:malla endfigure Para la discretización en espacio, aproximamos el dominio, Omega, que ocupa el fluido de la siguiente forma (figura reffig:malla): fijamos una partición cal Px={a=x0<x1<dots <xN=b} de la superficie omega=[a,b]. Por otra parte, consideramos M capas de profundidad, definidas a través de una partición cal Pz={0=z0>z1>dots >zM=-Dmax}, siendo Dmax=displaystylemax xinomegaD(x). De esta forma, cada zn representa la profundidad del nivel horizontal n (n=0,dots , M). El producto cartesiano de ambos mallados define, como se aprecia en la figura reffig:malla, una discretización del dominio. Se ha utilizado el Método de los Elementos Finitos definido mediante el producto de funciones base polinómicas en la variable x (definidas en el mallado de la superficie del dominio) por funciones base sobre polinómicas en z (definidas en el mallado en profundidad). Utilizando este método calculamos, en cada etapa de tiempo, las soluciones aproximadas. par El esquema empleado es generalizable al caso 3-dimensional, sin más que sustituir las funciones polinomicas en x, definidas sobre la superficie unidimensional del fluido, por funciones en x,y, definidas sobre la superficie bidimensional. par sectionProgramación en GNU/Linux del código de simulación numérica par Una vez discretizadas las ecuaciones en derivadas parciales, debemos pasar a su resolución efectiva. Para ello, elaboramos un programa de ordenador que, a partir de los datos iniciales (en el instante t=0) y conociendo los datos de contorno (en nuestro caso, los valores que toman las incógnitas en las paredes y en el fondo del recinto), genere, en cada instante de tiempo tk=kcdotDelta t, los vectores mbf uk, mbf vk y mbf psk que representen respectivamente, el campo de velocidades horizontal y vertical y la presión superficial en el instante tk. par En el caso 2-dimensional, hemos hallado algunas propiedades que simplificarán algo el trabajo. Por un lado, podemos evitar el cálculo de la presión superficial, variable que, en principio, no es de interés físico. Por otra parte, es posible calcular de forma explícita las velocidades verticales. De esta forma, en cada iteración de tiempo se trata, básicamente, de resolver un sistema lineal de ecuaciones Ambf uk=mbf b, proveniente del método de elementos finitos. El formato que se escogió para los elementos finitos hace que la matriz A sea tridiagonal por bloques, los cuales son, a su vez, matrices tridiagonales. En el segundo miembro, mbf b, se encierran datos conocidos, como el efecto de fricción del viento sobre la superficie del fluido. par Para elaborar el programa, se ha elegido el em lenguaje de programación C++, utilizando em egcs citeegcs, compilador libre (bajo licencia GNU-GPL) con soporte de ANSI C++, cuyas características lo hacen estar al nivel de los más potentes compiladores comerciales. Por supuesto, si lo hubiésemos considerado adecuado, también podríamos haber utilizado compiladores comerciales bajo GNU/Linux, como em KAI C++. par A pesar de seguir siendo Fortran el lenguaje más extendido en el campo de la simulación numérica, nosotros decidimos optar por el uso del lenguaje de programación C++ aprovechando sus características de orientación a objetos para representar matrices, mallados de elementos finitos, etc. El uso de este lenguaje, que poco a poco parece empezar a abrirse un hueco en la programación de métodos numéricos, nos confiere mayor flexibilidad tanto en el momento de la elaboración del programa como en la reutilización del código para proyectos posteriores. par Entre las ventajas de GNU/Linux se encuentra el poder contar con compiladores de prácticamente cualquier lenguaje. Por ejemplo, la programación en Fortran es perfectamente factible, sin más que emplear el compilador GNU de Fortran 77. Desgraciadamente, este compilador no cuenta aún con soporte para Fortran 90, especificación que posee características más avanzadas que la anterior: tipos de datos compuestos, asignación dinámica de memoria, sobrecarga de operadores, etc. Existe un proyecto para crear un compilador de Fortran 95 con licencia libre (http://g95.sourceforge.net/) que todavía está en estado embrionario. par En est ámbito, una posibilidad interesante puede ser el utilizar em adaptor citeadaptor. Adaptor (Automatic DAta Parallelism TranslaTOR) es un sistema de compilación para HPF (High Performance Fortran) con licencia no comercial. HPF es una extensión de Fortran con la que se pueden escribir de forma sencilla programas paralelos, con paralelización orientada a datos. Estos programas podrán ejecutarse en ordenadores con varios procesadores (por ejemplo, un ordenador dual ejecutando Linux en modo SMP) o bien en em clusters de varios ordenadores conectados en red (utilizando una librería de paso de mensajes, como PVM o MPI). Por ejemplo, en el curso de doctorado ``Análisis Numérico de EDP no Lineales'' que organizó en el año 1999/2000 el Departamento de Ecuaciones Diferenciales y Análisis Numérico de la Universidad de Sevilla junto con el Departamento de Informática y Análisis Numérico de la Universidad de Córdoba, se utilizó em adaptor para realizar ejercicios de programación numérica en un cluster formado por los ordenadores de un aula de informática, los cuales se encontraban ejecutando PVM bajo Linux. par Volviendo a la resolución práctica del problema en oceanografía que estamos estudiando, el utilizar el método de los elementos finitos significa que nos encontraremos finalmente con la necesidad de resolver sistemas de ecuaciones. Estos sistemas suelen ser de grandes dimensiones (miles de ecuaciones), especialente si tratamos de estudiar casos algo realistas, en los cuales la discretización del dominio ha de ser muy fina. Para implementarlos resolverlos en la práctica, podríamos haber usado alguna de las excelentes bibliotecas matriciales que existen para C++, como em Blitz++ citeblitz, em MTL citemtl o em SparseLib++ citesparselib, las dos últimas acompañadas de bibliotecas de métodos iterativos para la resolución de sistemas de ecuaciones lineales. Todas estas bibliotecas tienen licencias no comerciales, y han sido verificadas con em egcs (entre otros compiladores de C++). No obstante, con el fin de aprovechar la estructura tridiagonal de las matrices asociadas, siempre pensando en el ahorro de memoria, pues la matriz del sistema tendrá una gran dimensión, optamos por desarrollar nuestra propia bibliotecafootnote Probablemente, la biblioteca em MTL también podría haber sido utilizada con este fin. de clases C++. En ella, definimos las matrices tridiagonales mediante un clase patrón: begintex2html_preform template <class T> MatrizTridiag<T>; endtex2html_preform en la que, para ahorar memoria, se almacenan exclusivamente los elementos diagonales, super-diagonales y sub-diagonales de la matriz. Así, podemos implementar la matriz por bloques del sistema, A, como un objeto del tipo begintex2html_preform MatrizTridiag< MatrizTridiag<double> > A; endtex2html_preform y, sin más que sobrecargar el operador ( ), 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
next up previous
Superior: Hispalinux 2000

Download this document: [src.tar.gz][ps.gz][html.tar.gz][dvi.gz]

Congreso HispaLinux 2000