其他摘要:El diseño de un modelo numérico atraviesa diversas etapas hasta su puesta en funcionamiento y la obtención de resultados satisfactorios. Para los modelos basados en Elementos Finitos, está claro que es necesaria una correcta formulación del problema para asegurar que, desde un punto de vista matemático, se obtendrá una solución. Nos referimos al planteo de las ecuaciones, su discretización y la elección del elemento, entre otras. Sin embargo, la etapa de diseño no concluye en las formulaciones matemáticas, sino que incluye también el diseño del software. Una buena formulación matemática puede resultar en un programa de pobre rendimiento si no se llevan a cabo las optimizaciones necesarias al momento de la implementación. Es común que muchos investigadores codifiquen desde cero para modelar los problemas a resolver. Entre los efectos inmediatos de esta práctica notamos: pérdida de tiempo en la codificación, falta de generalidad en el planteo, repetición de errores comunes y desarrollo de código no modular, que dudosamente pueda reutilizarse para problemas similares. Asimismo, cualquier corrección a la formulación matemática será casi imposible una vez que el código se haya finalizado. En este trabajo presentamos el diseño y la implementación de software totalmente modular y flexible para la implementación de modelos basados en Elementos Finitos. Su potencialidad está basada en una correcta modularización, donde para codificar la resolución de los problemas no es necesario conocer la formulación elemental subyacente. Tampoco es necesario conocer en el nivel de la formulación la implementación estrictamente computacional de operaciones matemáticas. Este aislamiento en tres (o más) capas permite que se reutilicen grandes porciones de código para la resolución de problemas que pueden ser totalmente distintos, o incluso cambiar los componentes de las distintas capas sin variar el planteo del problema. Damos un análisis detallado del diagrama de clases utilizado, su justificación y detalles de su implementación. Presentamos también un ejemplo real de un cambio de elemento utilizado y cómo es imperceptible al momento de codificar la resolución del problema, mediante el apropiado uso de interfaces definidas adecuadamente.