Creating an FEM solver using Galerkin’s approach to conformal finite elements (WIP/On-Hold)
Marios Andreou (Under the Guidance of Christos Xenophontos)
Marios Andreou (Under the Guidance of Christos Xenophontos)
Summary
During the final semester of my undergrad at the University of Cyprus, under the guidance of Prof. Christos Xenophontos, I conducted independent research to create an executable Windows-native program in Python that, without any further installations, solves:
The most general form of the one-dimensional, 2-point elliptic (Sturm–Liouville form) Dirichlet boundary value problem for any input coefficient functions that the user provides (and SymPy & SciPy can understand), while also checking in real-time for the regularity conditions which ensure the existence and uniqueness of a solution.
Hemker's benchmark problem, which is defined by a two-dimensional linear convection-diffusion equation of singular perturbation, by using a pre-defined conformal mesh that encapsulates the viscous boundary and parabolic inner layers that emerge.
Both problems are solved using the p-version of Galerkin's continuous approach to the finite elements method (FEM) on the discrete weak formulation of each PDE, by utilising a set of hierarchical basis functions defined by the indefinite integrals of the Legendre polynomials and a pointer matrix for correspondence between the mesh and reference elements. h- and hp-FEM solutions are also available for the Sturm–Liouville form Dirichlet boundary value problem. (This project is currently work in progress/put on-hold.)
Paper and Presentation
Through the links above you can access the submitted write-up for the requirements of the course, which includes various numerical results from solutions of the aforementioned two problems that were obtained using the created FEM solver, as well as the details behind its implementation using energy and Sobolev spaces theory. You can also access the presentation slides used during my talk showcasing this work, that happened on May 20, 2022, at the University of Cyprus.
Program
You can download the setup file for the solver by clicking the corresponding button above. Instructions regarding the setup process are provided during the setup wizard, while instructions on how to use the solver are provided in its command-line interface. I consider this solver to still be in its development phase, as some bugs need to be ironed out. This link will be updated with newer versions until the finalised one is uploaded (if ever). If you encounter any bugs or errors, I would really appreciate it if you contact me about them so I can try and fix them.
Last time the FEM Solver was updated: July 31, 2023 (Ver. 0.2 (Alpha)) (This project is currently work in progress/put on-hold.)
What needs to be fixed:
Resolve the bugs during the solution of Hemker's benchmark problem.
Optimise the multiprocessing implementation for shorter computation times.
Better incorporation of OOP.
Disclaimer
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software under the limitations of the Creative Commons Attribution-Non Commercial (CC BY-NC 2.0) license, including any non-commercial use like the rights to use, copy, modify, merge, publish, and distribute the Software, and to permit persons to whom the Software is furnished to do so, contingent on the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software and credit should be attributed to the original author(s) in some way or form. This software, including all associated files and documentation, is licensed under the CC BY-NC 2.0 license, which is compatible with the legal framework of the European Union (EU). You are free to use, distribute, and modify the software for non-commercial purposes, as long as proper attribution is given to the original author(s). For details on the CC BY-NC 2.0 license, please visit here.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.