¿Qué es la UG?

Introducción a la UG

---------------------------------- -----------------------------------------

El desarrollo de la UG comenzó en julio de 1990. Hoy en día, unas diez personas están trabajando en la funcionalidad principal. La versión actual tiene aproximadamente 450.000 líneas de código C.

UG es una herramienta de software flexible para la resolución numérica de ecuaciones diferenciales parciales desarrollada utilizando métodos multigrid adaptativos sobre grillas no estructuradas en dos y tres dimensiones. Su filosofía de diseño es lo suficientemente flexible como para admitir una variedad de soluciones discretas. Por tanto, el software se puede reutilizar para muchas aplicaciones diferentes.

La simulación eficaz de un proceso determinado requiere conocimientos del campo aplicado (ciencias naturales o ingeniería), de las matemáticas (matemáticas analíticas y numéricas) y de la informática. Durante la última década, los matemáticos han estudiado algunas técnicas muy exitosas para resolver ecuaciones diferenciales parciales, en particular el refinamiento de malla adaptativo y los métodos multicuadrícula. El tremendo progreso en la tecnología informática, especialmente el desarrollo de computadoras paralelas a gran escala, ha traído muchas posibilidades nuevas.

Sin embargo, el uso de todas estas tecnologías en aplicaciones complejas no es demasiado fácil. Esto se debe a que combinar todos estos métodos requiere una enorme complejidad y conocimiento interdisciplinario. Con el tiempo, la implementación del software se vuelve cada vez más compleja, hasta el punto de que supera lo que una sola persona puede gestionar.

El objetivo de UG es utilizar las últimas técnicas matemáticas, concretamente el refinamiento adaptativo de la red local, la computación paralela y de redes múltiples, para proporcionar una base de software flexible y reutilizable para resolver problemas de aplicaciones complejas.

Estructura general

Un sistema de software grande como UG generalmente requiere descripciones en diferentes niveles de abstracción. UG tiene tres niveles de diseño, a saber, diseño estructural (diseño arquitectónico), diseño de subsistema (diseño de subsistema) y diseño de componentes (diseño de componentes).

Al menos a nivel estructural y de subsistema, la UG está diseñada utilizando un enfoque modular y los principios de ocultación de información se utilizan ampliamente. Toda la información indicada se distribuye entre los subsistemas. UG está implementado en lenguaje C.

La Figura 1 muestra el diseño estructural detallado. Sus componentes básicos son la biblioteca de datos distribuidos dinámicos (DDD: biblioteca de datos distribuidos dinámicos), el núcleo UG, las clases de problemas y las aplicaciones.

Figura 1: Diseño de estructura UG

Modelo de programación DDD

Proporciona un modelo de programación paralela para procesar estructuras de datos irregulares y objetos distribuidos en máquinas paralelas. Maneja tareas básicas como la identificación (creación) de objetos distribuidos, la comunicación entre objetos distribuidos y la transferencia dinámica de objetos distribuidos. Hay disponible una versión independiente de esta herramienta; la portabilidad está garantizada al proporcionar interfaces para Paragon NX, PARIX, memoria compartida T3D/T3E, MPI y PVM.

Programa kernel UG

El programa kernel UG pretende ser independiente de la ecuación diferencial parcial a resolver. Proporciona estructuras de datos geométricas y algebraicas y muchas opciones de procesamiento de mallas, algoritmos numéricos, técnicas de visualización e interfaces de usuario.

Por supuesto, cada abstracción de programación se basa en algunos supuestos básicos. El subsistema de gestión de redes actualmente está escrito para admitir solo redes estructuradas jerárquicamente. La propia estructura de datos puede soportar una jerarquía de cuadrícula más general débilmente acoplada. La paralelización se basa en la partición de datos con una superposición mínima.

El programa kernel UG tiene las siguientes características:

Interfaz de descripción de área flexible. Dado que UG puede generar/modificar mallas, requiere una descripción geométrica de los límites de la región. Actualmente se admiten dos formatos y se está trabajando en la interfaz CAD.

Un administrador que admite mallas no estructuradas bidimensionales y tridimensionales con múltiples tipos de elementos como triángulos, cuadriláteros, tetraedros, prismas, pirámides y hexaedros. Almacenamiento y carga de estructuras de malla completa y soluciones para reinicios.

Cifrado y engrosamiento local, jerárquico. Proporciona una triangulación consistente y estable en cada nivel de malla.

Una estructura de datos matricial dispersa flexible permite grados de libertad correspondientes a los nodos, aristas, caras y elementos de la malla.

Los procesos de clase BLAS primarios y secundarios y los métodos iterativos se han implementado en la estructura de datos.

Se ha implementado una amplia gama de algoritmos numéricos en marcos independientes del problema y orientados a objetos. Incluyendo BDF(1), esquema de paso de tiempo BDF(2), método de Newton (inexacto), CG, CR, BiCGSTAB, multired local multiplicativa, diferentes tipos de operadores de transferencia de red, ILU, Gauss-Seidel, Jacobi y SOR. Estos algoritmos se pueden utilizar tanto en sistemas de ecuaciones como en ecuaciones escalares. Se pueden anidar arbitrariamente en comandos de script simples. Por ejemplo, BDF (2) utiliza el método de Newton para resolver problemas no lineales. El método de Newton utiliza una red múltiple con aceleración BiCGSTAB. La transferencia de cuadrícula truncada es más suave y especial. coeficientes de salto, el solucionador de nivel aproximado utiliza un BiCGSTAB preacondicionado por ILU.

Los intérpretes de lenguaje de script y las herramientas de gráficos interactivos proporcionan herramientas de visualización simples mientras el programa se está ejecutando. Además, por ejemplo, se pueden presentar gráficamente estructuras de datos matriciales dispersas, lo cual es muy útil para la depuración. El controlador de dispositivo de UG es compatible con X11 y Apple Macintosh. También se proporciona salida gráfica a AVS, TECPLOT y GRAPE.

La implementación paralela de datos de esta característica se basa en DDD.

Jerarquía de clases de problemas

Una clase de problema utiliza el programa del núcleo UG para implementar discretización, estimadores de error y, finalmente, un solucionador no estándar para una clase especial de ecuaciones diferenciales parciales. Solo es necesario proporcionar un solucionador si no se puede implementar con ninguna de las herramientas proporcionadas. La discretización puede ser respaldada por herramientas que permiten que el tipo y la dimensionalidad del elemento sean independientes de los códigos de métodos de elementos finitos y volúmenes finitos.

Las clases de problemas basadas en la última versión del programa kernel de UG incluyen: convección-difusión escalar, difusión no lineal, elasticidad lineal, elastoplasticidad, incompresibilidad, flujo impulsado por densidad en filtración porosa y multifásico. Todas estas clases de problemas se ejecutan en 2D/3D y son paralelas.

UG ganó el premio HLRS Golden Harvest al diseño más destacado en 2001

../css/tongji.js">