Finite Elements
The main scientific computing environment I use for finite element simulations is FEniCS. It is open-source and can be installed for free. FEniCS provides a high-level Python/C++ interface for solving partial differential equations (PDEs) with the finite element method (FEM), and it is particularly well suited for stabilized formulations.
There are two actively used versions:
– Legacy FEniCS (FEniCS 2019.1.0): The classical version, still widely used in teaching and in existing research codebases. Much of my own work has been developed on this version.
– FEniCSx: The current generation, consisting of DOLFINx, UFL, and FFCx. FEniCSx is actively developed, better optimized for parallel computing, and the recommended choice for new projects.
An alternative ecosystem with very similar syntax is Firedrake, which shares the same Unified Form Language (UFL) with FEniCS.
Machine Learning
For physics-informed neural network (PINN) implementations, I use PyTorch, which provides the flexibility and automatic differentiation capabilities needed for reproducible and efficient PINN development.
Other
Other tools I rely on include PETSc for large-scale linear and nonlinear solvers, Gmsh for mesh generation, and ParaView for post-processing and visualization. For general Python development and scientific scripting, I use Spyder, an open-source integrated development environment that feels familiar to users coming from MATLAB and is well suited for interactive numerical work.
All of the above are open-source and widely used in the scientific computing community. Students joining SCaDA Lab are encouraged to become familiar with FEniCS, PETSc, and Spyder early in their research.