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 2-point elliptic, one-dimensional, Dirichlet boundary value problem with any and all possible input coefficient functions that the user can provide (and SymPy & SciPy are able to understand).
Hemker's benchmark problem defined by a two-dimensional linear convection-diffusion equation of singular perturbation, using a pre-defined mesh that encapsulates the viscous boundary and parabolic inner layers that emerge.
Both problems are solved using the p-method of Galerkin's continuous approach to finite elements, 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 to solve the discrete weak formulation of each PDE.
Paper and presentation
Through the links above you can access the submitted paper for the purposes of the course, that includes various numerical results from solutions of the aforementioned two problems using the solver, as well as the theory behind its implementation using energy and Sobolev spaces theory. You can also access the presentation slides used during my talk concerning 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 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 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))
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.