El proyecto FEniCS es una colección de componentes de software libre y de código abierto cuyo objetivo común es permitir la solución automatizada de ecuaciones diferenciales . Los componentes proporcionan herramientas de computación científica para trabajar con mallas computacionales, formulaciones variacionales de elementos finitos de ecuaciones diferenciales ordinarias y parciales y álgebra lineal numérica . [2] [3]
Diseño y componentes
El proyecto FEniCS está diseñado como un proyecto paraguas para una colección de componentes interoperables. Los componentes principales son [4]

- UFL (lenguaje de forma unificada), un lenguaje específico de dominio integrado en Python para especificar discretizaciones de elementos finitos de ecuaciones diferenciales en términos de formas variacionales de elementos finitos;
- FIAT (tabulador automático de elementos finitos), el backend de elementos finitos de FEniCS, un módulo Python para la generación de funciones base de elementos finitos de orden arbitrario en simplices ;
- FFC (compilador de formas fenics), un compilador para formas variacionales de elementos finitos que toma código UFL como entrada y genera una salida UFC;
- UFC (código de ensamblaje de forma unificada), una interfaz C++ que consta de funciones de bajo nivel para evaluar y ensamblar formas variacionales de elementos finitos;
- Instant, un módulo de Python para incorporar código C y C++ en Python;
- DOLFIN, una biblioteca C++/Python que proporciona estructuras de datos y algoritmos para mallas de elementos finitos, ensamblaje automatizado de elementos finitos y álgebra lineal numérica.
DOLFIN, el backend computacional de alto rendimiento en C++ de FEniCS, funciona como el entorno principal de resolución de problemas (tanto en C++ como en Python) y como interfaz de usuario. Su funcionalidad integra los demás componentes de FEniCS y gestiona la comunicación con bibliotecas externas como PETSc , Trilinos y Eigen para álgebra lineal numérica, ParMETIS y SCOTCH para particionamiento en malla, y MPI y OpenMP para computación distribuida.
A partir de mayo de 2022, DOLFINx es la interfaz de usuario recomendada del proyecto FEniCS. [5]
Historia
El proyecto FEniCS se inició en 2003 como una colaboración de investigación entre la Universidad de Chicago y la Universidad Tecnológica de Chalmers . Las siguientes instituciones participan actualmente o han participado activamente en el desarrollo del proyecto
- Laboratorio Nacional Argonne
- Universidad Tecnológica de Chalmers
- Universidad Carolina [6]
- Universidad Tecnológica de Delft
- Instituto Real de Tecnología
- Laboratorio de investigación Simula
- Universidad de Cambridge
- Universidad de Chicago
- Universidad de Luxemburgo [6]
DELFINx
Desde 2019, los componentes principales del proyecto FEniCS han recibido una importante refactorización [7] , lo que dio como resultado DOLFINx. [8] DOLFINx admite muchas características nuevas que no estaban disponibles en la antigua interfaz DOLFIN, entre ellas:
- Elementos finitos de grado arbitrario en celdas de intervalo, triangulares, cuadriláteras, tetraédricas y hexaédricas, incluidas mallas no estructuradas sin ordenamiento especial;
- Mallas con celdas planas o curvas;
- Partición personalizada de celdas en múltiples procesos;
- E/S paralela a través de Gmsh , VTK , PyVista y ADIOS2;
- Ensamblaje y solucionadores que utilizan diferentes tipos escalares de punto flotante, incluidos tipos complejos;
- Ensamblaje de núcleos de elementos personalizados escritos con Numba ;
- Interpolación de funciones en espacios funcionales arbitrarios;
- Interpolación entre espacios funcionales creados sobre mallas diferentes (no coincidentes), incluidas mallas que utilizan geometría no afín;
- Capacidad para soportar de forma no intrusiva diferentes backends de álgebra lineal, por ejemplo, NumPy , PETSc , Trilinos y Eigen ;
- Elementos finitos definidos por el usuario.
Véase también
- Lista de paquetes de software de elementos finitos
- Lista de software de análisis numérico
- Uso de la interfaz gráfica de usuario de FEATool Multiphysics para configurar y resolver modelos multifísicos de FEniCS [9] [10]
- DefElement: una enciclopedia de definiciones de elementos finitos
Referencias
- ^ https://fenicsproject.org/download/
- ^ "La página del Proyecto FEniCS". El Proyecto FEniCS . Consultado el 28 de julio de 2016 .
- ^ Anders Logg; Kent-Andre Mardal; Garth N. Wells, eds. (2011). Solución automatizada de ecuaciones diferenciales mediante el método de elementos finitos . Springer. ISBN 978-3-642-23098-1.
- ^ "Componentes básicos del Proyecto FEniCS". El Proyecto FEniCS . Archivado desde el original el 4 de noviembre de 2011. Consultado el 8 de diciembre de 2011 .
- ^ "El nuevo solucionador DOLFINx ahora se recomienda en lugar de DOLFIN". fenicsproject.discourse.group .
- ^ Documentos de gobernanza de FEniCS. Recuperado el 28 de julio de 2016.
- ^ "Hoja de ruta 2019-2020 – Proyecto FEniCS". fenicsproject.org . Archivado desde el original el 7 de junio de 2019.
- ^ "DOLFINx: El entorno de resolución de problemas FEniCS de próxima generación" . Consultado el 4 de abril de 2024 .
- ^ "Simulaciones multifísicas y FEM en Python con FEniCS y FEATool". featool.com . Consultado el 28 de junio de 2017 .
- ^ Abali, Bilen Emek (2017). Realidad computacional | SpringerLink . Materiales estructurados avanzados. Vol. 55. doi :10.1007/978-981-10-2444-3. ISBN 978-981-10-2443-6.