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
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;
IO 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 ;
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. ISBN978-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. ISBN978-981-10-2443-6.