摘要: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.